305 lines
11 KiB
Bash
305 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
|
||
|
|
||
|
|