khanat-opennel-code/code/nel/tools/3d/build_gamedata/processes/ig/sh/build.sh
acemtp@users.sourceforge.net d5c601ffa5 initial version
2010-05-06 02:08:41 +02:00

304 lines
11 KiB
Bash

#!/bin/bash
rm log.log 2> /dev/null
# ig_land_max: landscape IG eported from 3dsmax not elevated by the heightmap
# ig_land_max_elev: landscape IG eported from 3dsmax elevated by the heightmap
# ig_land_ligo: landscape IG found in ligo bricks not elevated by the heightmap
# ig_land_ligo_elev: landscape IG found in ligo bricks from 3dsmax elevated by the heightmap
# ig_land_ld: landscape IG generated by the land exporter (already elevated by the land exporter)
# ig_land: final IG directory for landscape IGs
# ig_land_compare: Tmp final IG directory for landscape IGs before comparison
# ig_other: final IG directory for village or construction IGs
# Log error
echo ------- >> log.log
echo --- Build ig >> log.log
echo ------- >> log.log
echo -------
echo --- Build ig
echo -------
date >> log.log
date
# ************************************************
# Build the IG_LAND made with the LevelDesign Tool
# ************************************************
# Get the primitive directory
continentdir=`cat ../../cfg/config.cfg | grep "leveldesign_igexport_continent_dir" | sed -e 's/leveldesign_igexport_continent_dir//' | sed -e 's/ //g' | sed -e 's/=//g' | sed -e 's/;//g'`
# Get the database directory
database_directory=`cat ../../cfg/site.cfg | grep "database_directory" | sed -e 's/database_directory//g' | sed -e 's/ //g' | sed -e 's/=//g'`
# Get the primitive directories
ligo_ig_primitive_directory=`cat ../../cfg/directories.cfg | grep "ligo_ig_primitive_directory" | sed -e 's/ligo_ig_primitive_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
# Get the form directory
form_dir=`cat ../../cfg/site.cfg | grep "level_design_directory" | sed -e 's/level_design_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
if ( test "$continentdir" || test "$ligo_ig_primitive_directory" )
then
land_name=`cat ../../cfg/config.cfg | grep "ligo_export_land" | sed -e 's/ligo_export_land//' | sed -e 's/ //g' | sed -e 's/=//g'`
if ( test "$land_name" )
then
echo [Prim IG] ON
echo [Prim IG] ON >> log.log
# create cfg file
# +++++++++++++++
rm prim_export.cfg
echo "// prim_export.cfg" > prim_export.cfg
echo "OutIGDir = \"ig_land_ld\";" >> prim_export.cfg
echo "ZoneWDir = \"..\\zone\\zone_welded\";" >> prim_export.cfg
name_bank=`cat ../../cfg/properties.cfg | grep "bank_name" | sed -e 's/bank_name//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "SmallBank = $name_bank" >> prim_export.cfg
name_farbank=`cat ../../cfg/properties.cfg | grep "bankfar_name" | sed -e 's/bankfar_name//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "FarBank = $name_farbank" >> prim_export.cfg
displacedir=`cat ../../cfg/directories.cfg | grep "displace_source_directory" | sed -e 's/displace_source_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
dir_database=`cat ../../cfg/site.cfg | grep "database_directory" | sed -e 's/database_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "DisplaceDir = \"$dir_database/$displacedir\";" >> prim_export.cfg
echo "CellSize = 160.0;" >> prim_export.cfg
# Set the continent directory to export
echo "PrimDirs = {" >> prim_export.cfg
echo " $continentdir," >> prim_export.cfg
for dir in $ligo_ig_primitive_directory ; do
echo " \"$database_directory/$dir\"," >> prim_export.cfg
done
echo "};" >> prim_export.cfg
# Set the dfn directory to export
echo "FormDir = \"$form_dir\";" >> prim_export.cfg
# *******************
# Launch the exporter
# *******************
prim_export.exe prim_export.cfg
# *******************
# Merge it with the IG_LAND exported from Max + elvated with heightmap
# *******************
# elevation of the heightmap for land_max
# ++++++++++++++++++++++++++++++++++++++++++++
rm ig_elevation.cfg
echo "// ig_elevation.cfg" > ig_elevation.cfg
echo "OutputIGDir = \"ig_land_max_elev\";" >> ig_elevation.cfg
echo "InputIGDir = \"ig_land_max\";" >> ig_elevation.cfg
echo "CellSize = 160.0;" >> ig_elevation.cfg
# HeightMapFile1 is the grayscale .tga file (127 is 0, 0 is -127*ZFactor and 255 is +128*ZFactor)
dir_database=`cat ../../cfg/site.cfg | grep "database_directory" | sed -e 's/database_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
dir_ligosrc=`cat ../../cfg/directories.cfg | grep "ligo_source_directory" | sed -e 's/ligo_source_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
hmf1=`cat ../../cfg/config.cfg | grep "ligo_export_heightmap1" | sed -e 's/ligo_export_heightmap1//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "HeightMapFile1 = \"$dir_database/$dir_ligosrc/$hmf1\";" >> ig_elevation.cfg
# ZFactor1 is the heightmap factor
zf1=`cat ../../cfg/config.cfg | grep "ligo_export_zfactor1" | sed -e 's/ligo_export_zfactor1//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "ZFactor1 = $zf1;" >> ig_elevation.cfg
# HeightMapFile2 is the grayscale .tga file (127 is 0, 0 is -127*ZFactor and 255 is +128*ZFactor)
hmf2=`cat ../../cfg/config.cfg | grep "ligo_export_heightmap2" | sed -e 's/ligo_export_heightmap2//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "HeightMapFile2 = \"$dir_database/$dir_ligosrc/$hmf2\";" >> ig_elevation.cfg
# ZFactor2 is the heightmap factor
zf2=`cat ../../cfg/config.cfg | grep "ligo_export_zfactor2" | sed -e 's/ligo_export_zfactor2//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "ZFactor2 = $zf2;" >> ig_elevation.cfg
echo "LandFile = \"$dir_database/$dir_ligosrc/$land_name\";" >> ig_elevation.cfg
ig_elevation ig_elevation.cfg
# elevation of the heightmap for land_ligo
# ++++++++++++++++++++++++++++++++++++++++++++
rm ig_elevation.cfg
echo "// ig_elevation.cfg" > ig_elevation.cfg
echo "OutputIGDir = \"ig_land_ligo_elev\";" >> ig_elevation.cfg
echo "InputIGDir = \"ig_land_ligo\";" >> ig_elevation.cfg
echo "CellSize = 160.0;" >> ig_elevation.cfg
# HeightMapFile1 is the grayscale .tga file (127 is 0, 0 is -127*ZFactor and 255 is +128*ZFactor)
dir_database=`cat ../../cfg/site.cfg | grep "database_directory" | sed -e 's/database_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
dir_ligosrc=`cat ../../cfg/directories.cfg | grep "ligo_source_directory" | sed -e 's/ligo_source_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
hmf1=`cat ../../cfg/config.cfg | grep "ligo_export_heightmap1" | sed -e 's/ligo_export_heightmap1//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "HeightMapFile1 = \"$dir_database/$dir_ligosrc/$hmf1\";" >> ig_elevation.cfg
# ZFactor1 is the heightmap factor
zf1=`cat ../../cfg/config.cfg | grep "ligo_export_zfactor1" | sed -e 's/ligo_export_zfactor1//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "ZFactor1 = $zf1;" >> ig_elevation.cfg
# HeightMapFile2 is the grayscale .tga file (127 is 0, 0 is -127*ZFactor and 255 is +128*ZFactor)
hmf2=`cat ../../cfg/config.cfg | grep "ligo_export_heightmap2" | sed -e 's/ligo_export_heightmap2//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "HeightMapFile2 = \"$dir_database/$dir_ligosrc/$hmf2\";" >> ig_elevation.cfg
# ZFactor2 is the heightmap factor
zf2=`cat ../../cfg/config.cfg | grep "ligo_export_zfactor2" | sed -e 's/ligo_export_zfactor2//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "ZFactor2 = $zf2;" >> ig_elevation.cfg
land_name=`cat ../../cfg/config.cfg | grep "ligo_export_land" | sed -e 's/ligo_export_land//' | sed -e 's/ //g' | sed -e 's/=//g'`
echo "LandFile = \"$dir_database/$dir_ligosrc/$land_name\";" >> ig_elevation.cfg
ig_elevation ig_elevation.cfg
else
echo [Prim IG] OFF
echo [Prim IG] OFF >> log.log
fi
else
echo [Prim IG] OFF
echo [Prim IG] OFF >> log.log
fi
# Erase ig in ig_merge_tmp and ig_land_compare
rm ig_merge_tmp/*
rm ig_land_compare/*
# Merge ig in ig_land_ld with ig_land_max_elev in ig_merge_tmp
dir_current=`pwd`
cd ig_land_ld
list_ig=`ls -1 *.[iI][gG] 2> /dev/null`
cd $dir_current
for filename in $list_ig ; do
# Does this file exist in ig_land_max_elev ?
if test -e ig_land_max_elev/$filename ; then
# Yes, lets merge it
ig_add ig_merge_tmp/$filename ig_land_max_elev/$filename ig_land_ld/$filename ;
else
# No, only copy it
cp ig_land_ld/$filename ig_merge_tmp/$filename ;
fi
# Idle
../../idle.bat
done
# Merge ig in ig_land_max_elev with ig_land_ld in ig_merge_tmp
cd ig_land_max_elev
list_ig=`ls -1 *.[iI][gG] 2> /dev/null`
cd $dir_current
for filename in $list_ig ; do
# Does this file exist in ig_land_ld ?
if !(test -e ig_land_ld/$filename) then
# No, only copy it
cp ig_land_max_elev/$filename ig_merge_tmp/$filename ;
fi
# Idle
../../idle.bat
done
# Merge ig in ig_merge_tmp with ig_land_ligo_elev in ig_land_compare
cd ig_merge_tmp
list_ig=`ls -1 *.[iI][gG] 2> /dev/null`
cd $dir_current
for filename in $list_ig ; do
# Does this file exist in ig_land_ligo_elev ?
if (test -e ig_land_ligo_elev/$filename) then
# Yes, lets merge it
ig_add ig_land_compare/$filename ig_merge_tmp/$filename ig_land_ligo_elev/$filename ;
else
# No, only copy it
cp ig_merge_tmp/$filename ig_land_compare/$filename ;
fi
# Idle
../../idle.bat
done
# Merge ig in ig_land_ligo_elev with ig_merge_tmp in ig_land_compare
cd ig_land_ligo_elev
list_ig=`ls -1 *.[iI][gG] 2> /dev/null`
cd $dir_current
for filename in $list_ig ; do
# Does this file exist in ig_merge_tmp ?
if !(test -e ig_merge_tmp/$filename) then
# No, only copy it
cp ig_land_ligo_elev/$filename ig_land_compare/$filename ;
fi
# Idle
../../idle.bat
done
# Compare and update
cd ig_land_compare
list_ig=`ls -1 *.[iI][gG]`
for filename in $list_ig ; do
echo "Checking $filename for update"
if test -e ../ig_land/$filename ; then
must_update=`diff --binary -q $filename ../ig_land/$filename` ;
else
must_update=YES ;
fi
if test -n "$must_update" ; then
echo " Updating"
cp -u -p $filename ../ig_land/$filename ;
fi
# Idle
../../../idle.bat
done
cd ../ig_land
list_ig=`ls -1 *.[iI][gG]`
for filename in $list_ig ; do
if !(test -e ../ig_land_compare/$filename) then
echo "Remove $filename"
rm $filename ;
fi
# Idle
../../../idle.bat
done
cd $dir_current
# ******************
# List all the zones
# ******************
# Get the landscape name
landscape_name=`cat ../../cfg/config.cfg | grep "landscape_name" | sed -e 's/landscape_name//' | sed -e 's/ //g' | sed -e 's/=//g'`
# Landscape name exist ?
if ( test "$landscape_name" )
then
# If the list file exists, erase it
if ( test -f "$landscape_name"_ig.txt )
then
rm "$landscape_name"_ig.txt
fi
cd ig_land
for i in *.[iI][gG] ; do
# Build an ig list
if ( test -f $i )
then
echo $i >> ../"$landscape_name"_ig.txt
else
echo >> ../"$landscape_name"_ig.txt
fi
done
cd ..
# Idle
../../idle.bat
fi