diff --git a/code/nel/tools/build_gamedata/configuration/tools.py b/code/nel/tools/build_gamedata/configuration/tools.py
index 3b9d916a7..d02f0347b 100644
--- a/code/nel/tools/build_gamedata/configuration/tools.py
+++ b/code/nel/tools/build_gamedata/configuration/tools.py
@@ -79,3 +79,6 @@ BuildShadowSkinTool = "build_shadow_skin"
PanoplyMakerTool = "panoply_maker"
HlsBankMakerTool = "hls_bank_maker"
LandExportTool = "land_export"
+PrimExportTool = "prim_export"
+IgElevationTool = "ig_elevation"
+IgAddTool = "ig_add"
diff --git a/code/nel/tools/build_gamedata/processes/_dummy/0_setup.py b/code/nel/tools/build_gamedata/processes/_dummy/0_setup.py
new file mode 100644
index 000000000..80bf39ac6
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/_dummy/0_setup.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+#
+# \file 0_setup.py
+# \brief setup dummy
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Setup dummy
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Setup dummy")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+# Setup source directories
+printLog(log, ">>> Setup source directories <<<")
+#for dir in MapSourceDirectories:
+# mkPath(log, DatabaseDirectory + "/" + dir)
+
+# Setup export directories
+printLog(log, ">>> Setup export directories <<<")
+#mkPath(log, ExportBuildDirectory + "/" + DummyTagExportDirectory)
+
+# Setup build directories
+printLog(log, ">>> Setup build directories <<<")
+#mkPath(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory)
+
+# Setup client directories
+printLog(log, ">>> Setup client directories <<<")
+#mkPath(log, ClientDataDirectory + "/" + DummyClientDirectory)
+
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/_dummy/1_export.py b/code/nel/tools/build_gamedata/processes/_dummy/1_export.py
new file mode 100644
index 000000000..f8f0b81c6
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/_dummy/1_export.py
@@ -0,0 +1,117 @@
+#!/usr/bin/python
+#
+# \file 1_export.py
+# \brief Export dummy
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Export dummy
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Export dummy")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+if MaxAvailable:
+ # Find tools
+ Max = findMax(log, MaxDirectory, MaxExecutable)
+ # ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
+ printLog(log, "")
+
+ # Export dummy 3dsmax
+ printLog(log, ">>> Export dummy 3dsmax <<<")
+
+ # Build paths
+ #scriptSrc = "maxscript/dummy_export.ms"
+ # scriptDst = MaxDirectory + "/scripts/dummy_export.ms"
+ #scriptDst = MaxUserDirectory + "/scripts/dummy_export.ms"
+ #logFile = ScriptDirectory + "/processes/dummy/log.log"
+ #outDirTag = ExportBuildDirectory + "/" + DummyTagExportDirectory
+ #mkPath(log, outDirTag)
+ #outDirWithoutCoarse = ExportBuildDirectory + "/" + DummyExportDirectory
+ #mkPath(log, outDirWithoutCoarse)
+ #outDirWithCoarse = ExportBuildDirectory + "/" + DummyWithCoarseMeshExportDirectory
+ #mkPath(log, outDirWithCoarse)
+ #outDirLightmap = ExportBuildDirectory + "/" + DummyLightmapNotOptimizedExportDirectory
+ #mkPath(log, outDirLightmap)
+ #outDirAnim = ExportBuildDirectory + "/" + DummyAnimExportDirectory
+ #mkPath(log, outDirAnim)
+
+ #tagList = findFiles(log, outDirTag, "", ".tag")
+ #tagLen = len(tagList)
+
+ # For each directoy
+ #if os.path.isfile(scriptDst):
+ # os.remove(scriptDst)
+ #for dir in DummySourceDirectories:
+ # tagDiff = 1
+ # dummySourceDir = DatabaseDirectory + "/" + dir
+ # mkPath(log, dummySourceDir)
+ # sSrc = open(scriptSrc, "r")
+ # sDst = open(scriptDst, "w")
+ # for line in sSrc:
+ # newline = line.replace("output_logfile", logFile)
+ # newline = newline.replace("dummy_source_directory", dummySourceDir)
+ # newline = newline.replace("output_directory_tag", outDirTag)
+ # newline = newline.replace("output_directory_without_coarse_mesh", outDirWithoutCoarse)
+ # newline = newline.replace("output_directory_with_coarse_mesh", outDirWithCoarse)
+ # newline = newline.replace("dummy_export_opt_export_lighting", DummyExportOptExportLighting)
+ # newline = newline.replace("dummy_export_opt_shadow", DummyExportOptShadow)
+ # newline = newline.replace("dummy_export_opt_lighting_limit", str(DummyExportOptLightingLimit))
+ # newline = newline.replace("dummy_export_opt_lumel_size", DummyExportOptLumelSize)
+ # newline = newline.replace("dummy_export_opt_oversampling", str(DummyExportOptOversampling))
+ # newline = newline.replace("dummy_export_opt_lightmap_log", DummyExportOptLightmapLog)
+ # newline = newline.replace("dummy_lightmap_path", outDirLightmap)
+ # newline = newline.replace("output_directory_anim", outDirAnim)
+ # sDst.write(newline)
+ # sSrc.close()
+ # sDst.close()
+ # while tagDiff > 0:
+ # printLog(log, "MAXSCRIPT " + scriptDst)
+ # subprocess.call([ Max, "-U", "MAXScript", "dummy_export.ms", "-q", "-mi", "-vn" ])
+ # tagList = findFiles(log, outDirTag, "", ".tag")
+ # newTagLen = len(tagList)
+ # tagDiff = newTagLen - tagLen
+ # tagLen = newTagLen
+ # printLog(log, "Exported " + str(tagDiff) + " .max files!")
+ # tagDiff += hackBdummyTree() # force rerun also when bdummy tree deleted
+ # os.remove(scriptDst)
+
+
+printLog(log, "")
+
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/_dummy/2_build.py b/code/nel/tools/build_gamedata/processes/_dummy/2_build.py
new file mode 100644
index 000000000..841fd772c
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/_dummy/2_build.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python
+#
+# \file 2_build.py
+# \brief Build dummy
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Build dummy
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Build dummy")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+# Find tools
+ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
+BuildShadowSkin = findTool(log, ToolDirectories, BuildShadowSkinTool, ToolSuffix)
+BuildClodtex = findTool(log, ToolDirectories, BuildClodtexTool, ToolSuffix)
+LightmapOptimizer = findTool(log, ToolDirectories, LightmapOptimizerTool, ToolSuffix)
+TgaToDds = findTool(log, ToolDirectories, TgaToDdsTool, ToolSuffix)
+BuildCoarseMesh = findTool(log, ToolDirectories, BuildCoarseMeshTool, ToolSuffix)
+
+#if 1: # todo: CoarseMeshTextureNames length > 0 ...
+# printLog(log, ">>> Build coarse meshes <<<")
+# dummyWithCoarseMesh = ExportBuildDirectory + "/" + DummyWithCoarseMeshExportDirectory
+# mkPath(log, dummyWithCoarseMesh)
+# dummyWithCoarseMeshBuilded = ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory
+# mkPath(log, dummyWithCoarseMeshBuilded)
+# cf = open("confdummy_generated.cfg", "w")
+# cf.write("texture_mul_size = " + TextureMulSizeValue + ";\n")
+# cf.write("\n")
+# cf.write("search_path = \n")
+# cf.write("{\n")
+# cf.write("\t\"" + dummyWithCoarseMesh + "\", \n")
+# for dir in MapSourceDirectories:
+# cf.write("\t\"" + DatabaseDirectory + "/" + dir + "\", \n")
+# cf.write("};\n")
+# cf.write("\n")
+# cf.write("list_mesh = \n")
+# cf.write("{\n")
+# # For each dummy with coarse mesh
+# files = findFiles(log, dummyWithCoarseMesh, "", ".dummy")
+# for file in files:
+# sourceFile = dummyWithCoarseMesh + "/" + file
+# if os.path.isfile(sourceFile):
+# destFile = dummyWithCoarseMeshBuilded + "/" + file
+# cf.write("\t\"" + file + "\", \"" + destFile + "\", \n")
+# cf.write("};\n")
+# cf.write("\n")
+# cf.write("output_textures = \n")
+# cf.write("{\n")
+# # For each dummy with coarse mesh
+# for tn in CoarseMeshTextureNames:
+# cf.write("\t\"" + dummyWithCoarseMesh + "/" + tn + ".tga\", \n")
+# cf.write("};\n")
+# cf.close()
+# subprocess.call([ BuildCoarseMesh, "confdummy_generated.cfg" ])
+# os.remove("confdummy_generated.cfg")
+# for tn in CoarseMeshTextureNames:
+# subprocess.call([ TgaToDds, dummyWithCoarseMesh + "/" + tn + ".tga", "-o", dummyWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ])
+
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/_dummy/3_install.py b/code/nel/tools/build_gamedata/processes/_dummy/3_install.py
new file mode 100644
index 000000000..ba92a6bba
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/_dummy/3_install.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python
+#
+# \file 3_install.py
+# \brief Install dummy
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Install dummy
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Install dummy")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+#clientPath = ClientDataDirectory + "/" + DummyClientDirectory
+#mkPath(log, clientPath)
+
+printLog(log, ">>> Install dummy <<<")
+#mkPath(log, ExportBuildDirectory + "/" + DummyExportDirectory)
+#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyExportDirectory, clientPath, ".dummy")
+#mkPath(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory)
+#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory, clientPath, ".dummy")
+#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory, clientPath, ".dds")
+
+#mkPath(log, ExportBuildDirectory + "/" + DummyAnimExportDirectory)
+#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyAnimExportDirectory, clientPath, ".anim")
+
+printLog(log, "")
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/ig/0_setup.py b/code/nel/tools/build_gamedata/processes/ig/0_setup.py
new file mode 100644
index 000000000..7ff7d4281
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/ig/0_setup.py
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+#
+# \file 0_setup.py
+# \brief setup ig
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Setup ig
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Setup ig")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+# Setup source directories
+printLog(log, ">>> Setup source directories <<<")
+for dir in IgLandSourceDirectories:
+ mkPath(log, DatabaseDirectory + "/" + dir)
+for dir in IgOtherSourceDirectories:
+ mkPath(log, DatabaseDirectory + "/" + dir)
+mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory)
+
+# Setup export directories
+printLog(log, ">>> Setup export directories <<<")
+mkPath(log, ExportBuildDirectory + "/" + IgStaticLandExportDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgStaticTagExportDirectory)
+
+# Setup build directories
+printLog(log, ">>> Setup build directories <<<")
+mkPath(log, ExportBuildDirectory + "/" + LigoIgLandBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + LigoIgOtherBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgLandBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
+
+# Setup client directories
+printLog(log, ">>> Setup client directories <<<")
+#mkPath(log, ClientDataDirectory + "/" + IgClientDirectory)
+
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/ig/1_export.py b/code/nel/tools/build_gamedata/processes/ig/1_export.py
new file mode 100644
index 000000000..8921b2d1a
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/ig/1_export.py
@@ -0,0 +1,111 @@
+#!/usr/bin/python
+#
+# \file 1_export.py
+# \brief Export ig
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Export ig
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Export ig")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+Max = "" #find later
+
+
+def igExport(sourceDir, targetDir):
+ scriptSrc = "maxscript/ig_export.ms"
+ scriptDst = MaxUserDirectory + "/scripts/ig_export.ms"
+ logFile = ScriptDirectory + "/processes/ig/log.log"
+ outDirTag = ExportBuildDirectory + "/" + IgStaticTagExportDirectory
+ outDirIg = ExportBuildDirectory + "/" + targetDir
+ igSourceDir = DatabaseDirectory + "/" + sourceDir
+ tagList = findFiles(log, outDirTag, "", ".tag")
+ tagLen = len(tagList)
+ if os.path.isfile(scriptDst):
+ os.remove(scriptDst)
+ tagDiff = 1
+ sSrc = open(scriptSrc, "r")
+ sDst = open(scriptDst, "w")
+ for line in sSrc:
+ newline = line.replace("output_logfile", logFile)
+ newline = newline.replace("ig_source_directory", igSourceDir)
+ newline = newline.replace("output_directory_tag", outDirTag)
+ newline = newline.replace("output_directory_ig", outDirIg)
+ sDst.write(newline)
+ sSrc.close()
+ sDst.close()
+ while tagDiff > 0:
+ printLog(log, "MAXSCRIPT " + scriptDst)
+ subprocess.call([ Max, "-U", "MAXScript", "ig_export.ms", "-q", "-mi", "-vn" ])
+ tagList = findFiles(log, outDirTag, "", ".tag")
+ newTagLen = len(tagList)
+ tagDiff = newTagLen - tagLen
+ tagLen = newTagLen
+ printLog(log, "Exported " + str(tagDiff) + " .max files!")
+ os.remove(scriptDst)
+ return
+
+
+if MaxAvailable:
+ # Find tools
+ Max = findMax(log, MaxDirectory, MaxExecutable)
+ # ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
+ printLog(log, "")
+
+ mkPath(log, ExportBuildDirectory + "/" + IgStaticTagExportDirectory)
+
+ # Export ig land 3dsmax
+ printLog(log, ">>> Export ig land 3dsmax <<<")
+ mkPath(log, ExportBuildDirectory + "/" + IgStaticLandExportDirectory)
+ for dir in IgLandSourceDirectories:
+ mkPath(log, DatabaseDirectory + "/" + dir)
+ igExport(dir, IgStaticLandExportDirectory)
+
+ # Export ig other 3dsmax
+ printLog(log, ">>> Export ig other 3dsmax <<<")
+ mkPath(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory)
+ for dir in IgOtherSourceDirectories:
+ mkPath(log, DatabaseDirectory + "/" + dir)
+ igExport(dir, IgStaticOtherExportDirectory)
+
+
+printLog(log, "")
+
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/ig/2_build.py b/code/nel/tools/build_gamedata/processes/ig/2_build.py
new file mode 100644
index 000000000..6eac1be71
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/ig/2_build.py
@@ -0,0 +1,244 @@
+#!/usr/bin/python
+#
+# \file 2_build.py
+# \brief Build ig
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Build ig
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Build ig")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+# Find tools
+ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
+PrimExport = findTool(log, ToolDirectories, PrimExportTool , ToolSuffix)
+IgElevation = findTool(log, ToolDirectories, IgElevationTool, ToolSuffix)
+IgAdd = findTool(log, ToolDirectories, IgAddTool, ToolSuffix)
+
+configDir = ActiveProjectDirectory + "/generated"
+mkPath(log, configDir)
+
+def igElevation(inputIgDir, outputIgDir):
+ printLog(log, ">>> IG Elevation <<<")
+
+ mkPath(log, inputIgDir)
+ mkPath(log, outputIgDir)
+ mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory)
+
+ configFile = configDir + "/ig_elevation.cfg"
+ if os.path.isfile(configFile):
+ os.remove(configFile)
+
+ printLog(log, "CONFIG " + configFile)
+ cf = open(configFile, "w")
+ cf.write("// ig_elevation.cfg\n")
+ cf.write("\n")
+ cf.write("InputIGDir = \"" + inputIgDir + "\";\n")
+ cf.write("OutputIGDir = \"" + outputIgDir + "\";\n")
+ cf.write("\n")
+ cf.write("CellSize = 160.0;")
+ cf.write("\n")
+ cf.write("HeightMapFile1 = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap1 + "\";\n")
+ cf.write("ZFactor1 = " + LigoExportZFactor1 + ";\n")
+ cf.write("HeightMapFile2 = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap2 + "\";\n")
+ cf.write("ZFactor2 = " + LigoExportZFactor2 + ";\n")
+ cf.write("\n")
+ cf.write("LandFile = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportLand + "\";\n")
+ cf.write("\n")
+ cf.close()
+ subprocess.call([ IgElevation, configFile ])
+ os.remove(configFile)
+
+# Build process
+if (ContinentLeveldesignWorldDirectory != "") or (len(IgOtherSourceDirectories) > 0):
+ printLog(log, ">>> Prim IG: ON <<<")
+ configFile = configDir + "/prim_export.cfg"
+ if os.path.isfile(configFile):
+ os.remove(configFile)
+
+ outIgDir = ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory
+ mkPath(log, outIgDir)
+ zoneWDir = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory
+ mkPath(log, zoneWDir)
+ smallBank = DatabaseDirectory + "/" + TileRootSourceDirectory + "/" + BankTileBankName + ".bank"
+ farBank = ExportBuildDirectory + "/" + FarbankBuildDirectory + "/" + BankTileBankName + MultipleTilesPostfix[0] + ".farbank"
+ displaceDir = DatabaseDirectory + "/" + DisplaceSourceDirectory
+ continentDir = LeveldesignWorldDirectory + "/" + ContinentLeveldesignWorldDirectory
+ mkPath(log, continentDir)
+ formDir = LeveldesignDirectory
+ mkPath(log, LeveldesignDirectory)
+
+ printLog(log, "CONFIG " + configFile)
+ cf = open(configFile, "w")
+ cf.write("// prim_export.cfg\n")
+ cf.write("\n")
+ cf.write("OutIGDir = \"" + outIgDir + "\";\n")
+ cf.write("ZoneWDir = \"" + zoneWDir + "\";\n")
+ cf.write("\n")
+ cf.write("SmallBank = \"" + smallBank + "\";\n")
+ cf.write("FarBank = \"" + farBank + "\";\n")
+ cf.write("DisplaceDir = \"" + displaceDir + "\";\n")
+ cf.write("\n")
+ cf.write("CellSize = 160.0;")
+ cf.write("\n")
+ cf.write("PrimDirs = {\n")
+ cf.write("\t\"" + continentDir + "\", \n")
+ for dir in IgPrimitiveSourceDirectories:
+ mkPath(log, DatabaseDirectory + "/" + dir)
+ cf.write("\t\"" + DatabaseDirectory + "/" + dir + "\", \n")
+ cf.write("};\n")
+ cf.write("\n")
+ cf.write("FormDir = \"" + formDir + "\";\n")
+ cf.write("\n")
+ cf.close()
+ subprocess.call([ PrimExport, configFile ])
+ os.remove(configFile)
+
+ igElevation(ExportBuildDirectory + "/" + LigoIgLandBuildDirectory, ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory)
+
+ igElevation(ExportBuildDirectory + "/" + IgStaticLandExportDirectory, ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory)
+
+
+printLog(log, ">>> Merge land IGs <<<")
+mkPath(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
+removeFilesRecursive(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
+
+mkPath(log, ExportBuildDirectory + "/" + IgLandBuildDirectory)
+
+mkPath(log, ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory)
+igFilesPrim = findFiles(log, ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory, "", ".ig")
+igFilesLigo = findFiles(log, ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory, "", ".ig")
+igFilesStatic = findFiles(log, ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory, "", ".ig")
+igFilesAll = [ ]
+for igFile in igFilesPrim:
+ if not igFile in igFilesAll:
+ igFilesAll += [ igFile ]
+for igFile in igFilesLigo:
+ if not igFile in igFilesAll:
+ igFilesAll += [ igFile ]
+for igFile in igFilesStatic:
+ if not igFile in igFilesAll:
+ igFilesAll += [ igFile ]
+igFilesAll.sort()
+for igFile in igFilesAll:
+ primIgFile = ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory + "/" + igFile
+ ligoIgFile = ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory + "/" + igFile
+ staticIgFile = ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory + "/" + igFile
+ tempIgFile = ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory + "/" + igFile
+ outIgFile = ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + igFile
+ activeFile = ""
+ needsUpdate = 0
+ sourceTools = ""
+ if igFile in igFilesPrim:
+ if needUpdate(log, primIgFile, outIgFile):
+ needsUpdate = 1
+ if not needsUpdate == 1 and igFile in igFilesLigo:
+ if needUpdate(log, ligoIgFile, outIgFile):
+ needsUpdate = 1
+ if not needsUpdate == 1 and igFile in igFilesStatic:
+ if needUpdate(log, staticIgFile, outIgFile):
+ needsUpdate = 1
+ if needsUpdate == 1:
+ if os.path.isfile(outIgFile):
+ os.remove(outIgFile)
+ if igFile in igFilesPrim:
+ sourceTools += " [Prim]"
+ activeFile = primIgFile
+ if igFile in igFilesLigo:
+ if activeFile == "":
+ activeFile = ligoIgFile
+ else:
+ sourceTools += " [Ligo]"
+ subprocess.call([ IgAdd, tempIgFile, ligoIgFile, activeFile ])
+ activeFile = tempIgFile
+ if igFile in igFilesStatic:
+ if activeFile == "":
+ activeFile = staticIgFile
+ else:
+ sourceTools += " [Static]"
+ subprocess.call([ IgAdd, outIgFile, staticIgFile, activeFile ])
+ activeFile = outIgFile
+ else:
+ shutil.copy(activeFile, outIgFile)
+ printLog(log, "MERGE " + igFile + sourceTools)
+ else:
+ printLog(log, "SKIP " + igFile)
+
+# Remove temporary land IGs
+printLog(log, ">>> Remove temporary land IGs <<<")
+mkPath(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
+removeFilesRecursive(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
+
+# Remove outdated land IGs
+printLog(log, ">>> Remove outdated land IGs <<<")
+igFilesOut = findFiles(log, ExportBuildDirectory + "/" + IgLandBuildDirectory, "", ".ig")
+for igFile in igFilesOut:
+ if not igFile in igFilesAll:
+ printLog(log, "RM " + ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + igFile)
+ os.remove(ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + igFile)
+
+# Verify land IGs
+printLog(log, ">>> Verify land IGs <<<")
+for igFile in igFilesAll:
+ if not igFile in igFilesOut:
+ printLog(log, "MISSING " + igFile)
+
+# Write land IGs TXT
+printLog(log, ">>> Write land IGs TXT <<<")
+igTxtFile = ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + LandscapeName + "_ig.txt"
+printLog(log, "WRITE " + ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + LandscapeName + "_ig.txt")
+if os.path.isfile(igTxtFile):
+ os.remove(igTxtFile)
+igTxt = open(igTxtFile, "w")
+for igFile in igFilesAll:
+ igTxt.write(igFile + "\n")
+igTxt.close()
+
+# Merge other IGs
+printLog(log, ">>> Merge other IGs <<<") # (not true merge, since not necesserary)
+mkPath(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory)
+mkPath(log, ExportBuildDirectory + "/" + LigoIgOtherBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
+copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory, ExportBuildDirectory + "/" + IgOtherBuildDirectory, ".ig")
+copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + LigoIgOtherBuildDirectory, ExportBuildDirectory + "/" + IgOtherBuildDirectory, ".ig")
+
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/ig/3_install.py b/code/nel/tools/build_gamedata/processes/ig/3_install.py
new file mode 100644
index 000000000..219344789
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/ig/3_install.py
@@ -0,0 +1,60 @@
+#!/usr/bin/python
+#
+# \file 3_install.py
+# \brief Install ig
+# \date 2010-05-24 13:42GMT
+# \author Jan Boon (Kaetemi)
+# Python port of game data build pipeline.
+# Install ig
+#
+# NeL - MMORPG Framework
+# Copyright (C) 2010 Winch Gate Property Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+
+import time, sys, os, shutil, subprocess, distutils.dir_util
+sys.path.append("../../configuration")
+
+if os.path.isfile("log.log"):
+ os.remove("log.log")
+log = open("log.log", "w")
+from scripts import *
+from buildsite import *
+from process import *
+from tools import *
+from directories import *
+
+printLog(log, "")
+printLog(log, "-------")
+printLog(log, "--- Install ig")
+printLog(log, "-------")
+printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
+printLog(log, "")
+
+clientPathIg = ClientDataDirectory + "/" + IgClientDirectory
+mkPath(log, clientPathIg)
+
+printLog(log, ">>> Install ig <<<")
+landBuildDir = ExportBuildDirectory + "/" + IgLandBuildDirectory
+mkPath(log, landBuildDir)
+copyFilesExtNoTreeIfNeeded(log, landBuildDir, clientPathIg, "_ig.txt") # Copy the *_ig.txt file
+# Do not copy *.ig in ig_land, because zone process will copy zone ig lighted versions into client directory.
+# Do not copy *.ig ig_other, because ig_light process will copy ig lighted versions into client directory.
+
+printLog(log, "")
+log.close()
+
+
+# end of file
diff --git a/code/nel/tools/build_gamedata/processes/ig/maxscript/ig_export.ms b/code/nel/tools/build_gamedata/processes/ig/maxscript/ig_export.ms
new file mode 100644
index 000000000..de1853994
--- /dev/null
+++ b/code/nel/tools/build_gamedata/processes/ig/maxscript/ig_export.ms
@@ -0,0 +1,304 @@
+-- Some globals
+
+NEL3D_APPDATA_ACCEL = 1423062561 -- type of accelerator : "32" = is not an accelerator and IS clusterized
+ -- "0" = is not an accelerator and IS NOT clusterized (always visible)
+ -- "1" = is an accelerator type PORTAL
+ -- "2" = is an accelerator type CLUSTER
+ -- "6" = is an accelerator type CLUSTER FATHER-VISIBLE
+ -- "10" = is an accelerator type CLUSTER VISIBLE-FROM-FATHER
+ -- "14" = is an accelerator type CLUSTER FATHER-VISIBLE and VISIBLE-FROM-FATHER
+ -- "17" = is an accelerator type PORTAL DYNAMIC
+
+NEL3D_APPDATA_DONOTEXPORT = 1423062565 -- do not export me : "undefined" = export me
+ -- "0" = export me
+ -- "1" = DONT export me
+
+NEL3D_APPDATA_IGNAME = 1423062564 -- string : name of the Instance Group
+
+NEL3D_APPDATA_LOD_NAME_COUNT_MAX = 10
+NEL3D_APPDATA_LOD = 1423062537
+NEL3D_APPDATA_LOD_NAME_COUNT = NEL3D_APPDATA_LOD
+NEL3D_APPDATA_LOD_NAME = NEL3D_APPDATA_LOD_NAME_COUNT+1
+NEL3D_APPDATA_LOD_BLEND_IN = NEL3D_APPDATA_LOD_NAME+NEL3D_APPDATA_LOD_NAME_COUNT_MAX
+NEL3D_APPDATA_LOD_BLEND_OUT = NEL3D_APPDATA_LOD_BLEND_IN+1
+NEL3D_APPDATA_LOD_COARSE_MESH = NEL3D_APPDATA_LOD_BLEND_OUT+1
+
+NEL_OBJECT_NAME_DATA = 1970
+
+-- Allocate 20 Me for the script
+heapSize += 15000000
+
+nlErrorFilename = "output_logfile"
+nlErrorStream = openFile nlErrorFilename mode:"a"
+if nlErrorStream == undefined then
+ nlErrorStream = createFile nlErrorFilename
+
+-- Unhide category
+fn unhidecategory =
+(
+ if (geometry.count > 0) then
+ (
+ unhide geometry[1]
+ if (geometry[1].ishidden == true) then
+ max hide object toggle
+ )
+ if (shapes.count > 0) then
+ (
+ unhide shapes[1]
+ if (shapes[1].ishidden == true) then
+ max hide shape toggle
+ )
+ if (lights.count > 0) then
+ (
+ unhide lights[1]
+ if (lights[1].ishidden == true) then
+ max hide light toggle
+ )
+ if (cameras.count > 0) then
+ (
+ unhide cameras[1]
+ if (cameras[1].ishidden == true) then
+ max hide camera toggle
+ )
+ if (helpers.count > 0) then
+ (
+ unhide helpers[1]
+ if (helpers[1].ishidden == true) then
+ max hide helper toggle
+ )
+)
+
+-- Log a message
+fn nlerror message =
+(
+ if nlErrorStream != undefined then
+ (
+ format "%\n" message to:nlErrorStream
+ flush nlErrorStream
+ )
+
+ -- To the console
+ print message
+)
+
+-- This node is n accelerator ?
+fn isAccelerator node =
+(
+ accel = getappdata node NEL3D_APPDATA_ACCEL
+ if (accel != undefined) then
+ (
+ if (accel == "0") or (accel == "32") then
+ return false
+ else
+ return true
+ )
+ return false
+)
+
+-- Get the ig name of this object
+fn getIg node =
+(
+ return (getappdata node NEL3D_APPDATA_IGNAME)
+)
+
+try
+(
+ -- Get files in the ig_source_directory
+ files = getFiles "ig_source_directory/*.max"
+
+ -- Sort files
+ sort files
+
+ -- No file ?
+ if files.count != 0 then
+ (
+ -- For each files
+ for i = 1 to files.count do
+ (
+ try
+ (
+ -- Free memory and file handles
+ gc ()
+
+ -- Reset 3dsmax
+ resetMAXFile #noprompt
+
+ -- Get the tag file name
+ tag = ("output_directory_tag/"+(getFilenameFile files[i])+(getFilenameType files[i])+".tag")
+
+ -- Compare date with the tag file
+ if (NeLTestFileDate tag files[i]) == true then
+ (
+ -- Open the max project
+ nlerror ("Scanning file "+files[i]+" ...")
+ if (mergeMaxFile files[i] quiet:true) == true then
+ (
+ -- Unhide category
+ unhidecategory()
+
+ tagThisFile = true
+
+ -- Unhide
+ max unhide all
+
+ -- unselect
+ max select none
+
+ -- Exported object count
+ exported = 0
+
+ -- Ig array
+ ig_array = #()
+
+ -- Scan all the ig in this project
+ for node in objects do
+ (
+ ig = getIg node
+ if ( (ig != undefined) and (ig != "") ) then
+ (
+ -- Found ?
+ found = false
+
+ -- Already found ?
+ for j = 1 to ig_array.count do
+ (
+ if (ig_array[j]==ig) then
+ (
+ found = true
+ exit
+ )
+ )
+
+ -- Found ?
+ if (found == false) then
+ (
+ append ig_array ig
+ )
+ )
+ )
+
+ -- Have some ig ?
+ if (ig_array.count != 0) then
+ (
+ -- For each ig
+ for ig = 1 to ig_array.count do
+ (
+ -- Output filename
+ output = ("output_directory_ig/"+ig_array[ig]+".ig")
+
+ -- Check date
+ if (NeLTestFileDate output files[i]) == true then
+ (
+ -- Select none
+ max select none
+
+ -- Select all node in this ig
+ for node in geometry do
+ (
+ -- Select it if in the ig
+ if ( (getIg node) == ig_array[ig]) then
+ selectmore node
+ )
+ -- Select all lights in this ig
+ for node in lights do
+ (
+ -- Select it if in the ig
+ if ( (getIg node) == ig_array[ig]) then
+ selectmore node
+ )
+ -- Select all lights in this ig
+ for node in helpers do
+ (
+ -- Select it if in the ig
+ if ( (getIg node) == ig_array[ig]) then
+ selectmore node
+ )
+
+ -- Check export
+ try
+ (
+ -- Export the ig
+ instancegroup2export = $selection as array
+ if (NelExportInstanceGroup instancegroup2export output) == true then
+ (
+ nlerror ("OK "+output)
+ )
+ else
+ (
+ -- Error
+ nlerror ("ERROR exporting ig "+ig_array[ig]+" in file "+files[i])
+ tagThisFile = false
+ )
+ )
+ catch
+ (
+ -- Error
+ nlerror ("ERROR fatal error exporting ig "+ig_array[ig]+" in file "+files[i])
+ tagThisFile = false
+ )
+ )
+ else
+ (
+ nlerror ("SKIPPED "+output)
+ )
+ )
+ )
+ else
+ (
+ -- Error
+ nlerror ("WARNING nothing exported from ig max file "+files[i])
+ )
+
+ -- Write a tag file
+ if tagThisFile == true then
+ (
+ tagFile = createFile tag
+ if tagFile == undefined then
+ (
+ nlerror ("WARNING can't create tag file "+tag)
+ )
+ else
+ (
+ print "toto" to: tagFile
+ close tagFile
+ )
+ )
+
+ resetMAXFile #noprompt
+ )
+ else
+ (
+ -- Error
+ nlerror ("ERROR exporting ig: can't open the file "+files[i])
+ )
+ )
+ else
+ (
+ -- Error
+ nlerror ("SKIPPED BY TAG "+files[i])
+ )
+ )
+ catch
+ (
+ -- Error
+ nlerror ("ERROR error exporting ig in files " + files[i])
+ )
+ )
+ )
+ else
+ (
+ nlerror ("WARNING no max file in folder ig_source_directory")
+ )
+)
+catch
+(
+ -- Error
+ nlerror ("ERROR fatal error exporting ig in folder ig_source_directory")
+)
+
+-- Bye
+
+resetMAXFile #noprompt
+quitMAX #noPrompt
+quitMAX () #noPrompt
+
diff --git a/code/nel/tools/build_gamedata/processes/ig_light/0_setup.py b/code/nel/tools/build_gamedata/processes/ig_light/0_setup.py
index 5269231a8..78c5df79f 100644
--- a/code/nel/tools/build_gamedata/processes/ig_light/0_setup.py
+++ b/code/nel/tools/build_gamedata/processes/ig_light/0_setup.py
@@ -45,17 +45,14 @@ printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
-#for dir in ig_lightSourceDirectories:
-# mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories
printLog(log, ">>> Setup export directories <<<")
-#mkPath(log, ExportBuildDirectory + "/" + ig_lightExportDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
-mkPath(log, ExportBuildDirectory + "/" + IgVillageBuildDirectory)
-mkPath(log, ExportBuildDirectory + "/" + IgLightVillageBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgOtherLightedBuildDirectory)
# Setup client directories
printLog(log, ">>> Setup client directories <<<")
diff --git a/code/nel/tools/build_gamedata/processes/ig_light/2_build.py b/code/nel/tools/build_gamedata/processes/ig_light/2_build.py
index 107461eae..90b962012 100644
--- a/code/nel/tools/build_gamedata/processes/ig_light/2_build.py
+++ b/code/nel/tools/build_gamedata/processes/ig_light/2_build.py
@@ -52,11 +52,11 @@ printLog(log, ">>> Build ig_light <<<")
if IgLighter == "":
toolLogFail(log, IgLighterTool, ToolSuffix)
else:
- srcDir = ExportBuildDirectory + "/" + IgVillageBuildDirectory
+ srcDir = ExportBuildDirectory + "/" + IgOtherBuildDirectory
mkPath(log, srcDir)
- destDir = ExportBuildDirectory + "/" + IgLightVillageBuildDirectory
+ destDir = ExportBuildDirectory + "/" + IgOtherLightedBuildDirectory
mkPath(log, destDir)
- subprocess.call([ IgLighter, srcDir, destDir, ScriptDirectory + "/configuration/zone_lighter_properties.cfg" ])
+ subprocess.call([ IgLighter, srcDir, destDir, ActiveProjectDirectory + "/generated/zone_lighter.cfg" ])
printLog(log, "")
log.close()
diff --git a/code/nel/tools/build_gamedata/processes/ig_light/3_install.py b/code/nel/tools/build_gamedata/processes/ig_light/3_install.py
index 4ddf832f5..37aba90a7 100644
--- a/code/nel/tools/build_gamedata/processes/ig_light/3_install.py
+++ b/code/nel/tools/build_gamedata/processes/ig_light/3_install.py
@@ -44,7 +44,7 @@ printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
printLog(log, ">>> Install ig_light <<<")
-srcDir = ExportBuildDirectory + "/" + IgLightVillageBuildDirectory
+srcDir = ExportBuildDirectory + "/" + IgOtherLightedBuildDirectory
mkPath(log, srcDir)
destDir = ClientDataDirectory + "/" + IgClientDirectory
mkPath(log, destDir)
diff --git a/code/nel/tools/build_gamedata/processes/ligo/0_setup.py b/code/nel/tools/build_gamedata/processes/ligo/0_setup.py
index 10951702b..344f88422 100644
--- a/code/nel/tools/build_gamedata/processes/ligo/0_setup.py
+++ b/code/nel/tools/build_gamedata/processes/ligo/0_setup.py
@@ -45,6 +45,7 @@ printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
+mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory)
mkPath(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory)
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory)
diff --git a/code/nel/tools/build_gamedata/processes/rbank/0_setup.py b/code/nel/tools/build_gamedata/processes/rbank/0_setup.py
index a5860cbad..e2accccf3 100644
--- a/code/nel/tools/build_gamedata/processes/rbank/0_setup.py
+++ b/code/nel/tools/build_gamedata/processes/rbank/0_setup.py
@@ -60,7 +60,7 @@ for dir in RbankShapePaths:
mkPath(log, ExportBuildDirectory + "/" + dir)
mkPath(log, ExportBuildDirectory + "/" + RbankBboxBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + IgLandBuildDirectory)
-mkPath(log, ExportBuildDirectory + "/" + IgVillageBuildDirectory)
+mkPath(log, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + RbankTessellationBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + RbankSmoothBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + RbankRawBuildDirectory)
diff --git a/code/nel/tools/build_gamedata/processes/rbank/2_build.py b/code/nel/tools/build_gamedata/processes/rbank/2_build.py
index 02afbf142..5e4a69df4 100644
--- a/code/nel/tools/build_gamedata/processes/rbank/2_build.py
+++ b/code/nel/tools/build_gamedata/processes/rbank/2_build.py
@@ -102,8 +102,8 @@ mkPath(log, LeveldesignWorldDirectory)
cf.write("LevelDesignWorldPath = \"" + LeveldesignWorldDirectory + "\";\n")
mkPath(log, ExportBuildDirectory + "/" + IgLandBuildDirectory)
cf.write("IgLandPath = \"" + ExportBuildDirectory + "/" + IgLandBuildDirectory + "\";\n")
-mkPath(log, ExportBuildDirectory + "/" + IgVillageBuildDirectory)
-cf.write("IgVillagePath = \"" + ExportBuildDirectory + "/" + IgVillageBuildDirectory + "\";\n")
+mkPath(log, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
+cf.write("IgVillagePath = \"" + ExportBuildDirectory + "/" + IgOtherBuildDirectory + "\";\n")
cf.write("\n")
mkPath(log, ExportBuildDirectory + "/" + RbankTessellationBuildDirectory)
cf.write("TessellationPath = \"" + ExportBuildDirectory + "/" + RbankTessellationBuildDirectory + "/\";\n")
diff --git a/code/nel/tools/build_gamedata/processes/zone/0_setup.py b/code/nel/tools/build_gamedata/processes/zone/0_setup.py
index 6a51da333..8f1acdab9 100644
--- a/code/nel/tools/build_gamedata/processes/zone/0_setup.py
+++ b/code/nel/tools/build_gamedata/processes/zone/0_setup.py
@@ -53,6 +53,7 @@ mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
+mkPath(log, ExportBuildDirectory + "/" + ZoneDependBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
# Setup client directories
diff --git a/code/nel/tools/build_gamedata/processes/zone/2_build.py b/code/nel/tools/build_gamedata/processes/zone/2_build.py
index 6ce75fc58..cdbecfe12 100644
--- a/code/nel/tools/build_gamedata/processes/zone/2_build.py
+++ b/code/nel/tools/build_gamedata/processes/zone/2_build.py
@@ -50,17 +50,33 @@ ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
printLog(log, "")
# We are in BEST mode
-# TODO if (high quality) blahblahblah
-printLog(log, ">>> Build zone dependencies <<<")
-if ZoneDependencies == "":
- toolLogFail(log, ZoneDependenciesTool, ToolSuffix)
-elif ExecTimeout == "":
- toolLogFail(log, ExecTimeoutTool, ToolSuffix)
-else:
- printLog(log, "********************************")
- printLog(log, "******** TODO ********")
- printLog(log, "********************************")
-printLog(log, "")
+if BuildQuality == 1:
+ printLog(log, ">>> Build zone dependencies <<<")
+ if ZoneDependencies == "":
+ toolLogFail(log, ZoneDependenciesTool, ToolSuffix)
+ elif ExecTimeout == "":
+ toolLogFail(log, ExecTimeoutTool, ToolSuffix)
+ else:
+ mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
+ mkPath(log, ExportBuildDirectory + "/" + ZoneDependBuildDirectory)
+ mkPath(log, ActiveProjectDirectory + "/generated")
+ configFile = ActiveProjectDirectory + "/generated/zone_dependencies.cfg"
+ templateCf = open(ActiveProjectDirectory + "/generated/zone_lighter.cfg", "r")
+ cf = open(configFile, "w")
+ for line in templateCf:
+ cf.write(line)
+ cf.write("\n");
+ cf.write("level_design_directory = \"" + LeveldesignDirectory + "\";\n");
+ cf.write("level_design_world_directory = \"" + LeveldesignWorldDirectory + "\";\n");
+ cf.write("level_design_dfn_directory = \"" + LeveldesignDfnDirectory + "\";\n");
+ cf.write("continent_name = \"" + ContinentName + "\";\n");
+ cf.write("\n");
+ cf.close()
+
+ for zoneRegion in ZoneRegions:
+ subprocess.call([ ExecTimeout, str(ZoneBuildDependTimeout), ZoneDependencies, configFile, ExportBuildDirectory + "/" + ZoneExportDirectory + "/" + zoneRegion[0] + ".zone", ExportBuildDirectory + "/" + ZoneExportDirectory + "/" + zoneRegion[1] + ".zone", ExportBuildDirectory + "/" + ZoneDependBuildDirectory + "/doomy.depend" ])
+
+ printLog(log, "")
# For each zone directory
printLog(log, ">>> Build zone weld <<<")
diff --git a/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py b/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py
index 9e61a541d..e4792e9e6 100644
--- a/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py
+++ b/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py
@@ -54,7 +54,7 @@ for line in ps:
newline = newline.replace("%EcosystemPath%", EcosystemPath)
newline = newline.replace("%BankTileBankName%", BankTileBankName)
newline = newline.replace("%IgLandBuildDirectory%", IgLandBuildDirectory)
- newline = newline.replace("%IgVillageBuildDirectory%", IgVillageBuildDirectory)
+ newline = newline.replace("%IgOtherBuildDirectory%", IgOtherBuildDirectory)
newline = newline.replace("%RbankOutputBuildDirectory%", RbankOutputBuildDirectory)
newline = newline.replace("%RbankRbankName%", RbankRbankName)
newline = newline.replace("%BuildQuality%", str(BuildQuality))
diff --git a/code/nel/tools/build_gamedata/processes/zone_light/1_export.py b/code/nel/tools/build_gamedata/processes/zone_light/1_export.py
index 5b186e46f..4d0b568e3 100644
--- a/code/nel/tools/build_gamedata/processes/zone_light/1_export.py
+++ b/code/nel/tools/build_gamedata/processes/zone_light/1_export.py
@@ -47,7 +47,7 @@ printLog(log, "")
#TgaToDds = findTool(log, ToolDirectories, TgaToDdsTool, ToolSuffix)
printLog(log, "")
-# For each zone_light directory
+# Export zone_light water maps
printLog(log, ">>> Export zone_light water maps <<<")
srcDir = ExportBuildDirectory + "/" + ZoneLightWaterShapesLightedExportDirectory
mkPath(log, srcDir)
@@ -55,47 +55,8 @@ for dir in WaterMapSourceDirectories:
destDir = DatabaseDirectory + "/" + dir
mkPath(log, destDir)
copyFilesExtNoTreeIfNeeded(log, srcDir, destDir, ".tga")
-#mkPath(log, ExportBuildDirectory + "/" + zone_lightExportDirectory)
-#for dir in zone_lightSourceDirectories:
-# mkPath(log, DatabaseDirectory + "/" + dir)
-# niouname = dir.replace("/", "_")
-# newpath = ExportBuildDirectory + "/" + zone_lightExportDirectory + "/" + niouname
-# mkPath(log, newpath)
-# copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, newpath, ".tga")
printLog(log, "")
-# For each zone_light directory to compress in one DXTC
-#printLog(log, ">>> Export zone_light dxtc <<<")
-#mkPath(log, ExportBuildDirectory + "/" + zone_lightDxtcExportDirectory)
-#for dir in zone_lightDxtcSourceDirectories:
-# mkPath(log, DatabaseDirectory + "/" + dir)
-# copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + zone_lightDxtcExportDirectory, ".tga")
-#printLog(log, "")
-
-# For each zone_light fullscreen directory compress independently all in dds
-#printLog(log, ">>> Export zone_light fullscreen <<<")
-#if TgaToDds == "":
-# toolLogFail(log, TgaToDdsTool, ToolSuffix)
-#else:
-# mkPath(log, ExportBuildDirectory + "/" + zone_lightFullscreenExportDirectory)
-# for dir in zone_lightFullscreenSourceDirectories:
-# mkPath(log, DatabaseDirectory + "/" + dir)
-# files = findFiles(log, DatabaseDirectory + "/" + dir, "", ".tga")
-# for file in files:
-# sourceFile = DatabaseDirectory + "/" + dir + "/" + file
-# destFile = ExportBuildDirectory + "/" + zone_lightFullscreenExportDirectory + "/" + os.path.basename(file)[0:-len(".tga")] + ".dds"
-# if needUpdateLogRemoveDest(log, sourceFile, destFile):
-# subprocess.call([ TgaToDds, sourceFile, "-o", destFile, "-a", "5" ])
-#printLog(log, "")
-
-# For each zone_light 3d directory
-#printLog(log, ">>> Export zone_light 3d <<<")
-#mkPath(log, ExportBuildDirectory + "/" + zone_light3DExportDirectory)
-#for dir in zone_light3DSourceDirectories:
-# mkPath(log, DatabaseDirectory + "/" + dir)
-# copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + zone_light3DExportDirectory, ".tga")
-#printLog(log, "")
-
log.close()
diff --git a/code/nel/tools/build_gamedata/processes/zone_light/2_build.py b/code/nel/tools/build_gamedata/processes/zone_light/2_build.py
index 1aeecceda..dc6cccdfa 100644
--- a/code/nel/tools/build_gamedata/processes/zone_light/2_build.py
+++ b/code/nel/tools/build_gamedata/processes/zone_light/2_build.py
@@ -88,11 +88,11 @@ else:
mkPath(log, dependDir)
files = findFiles(log, srcDir, "", ".zonel")
for file in files:
- igsrcFile = igsrcDir + os.path.basename(file)[0:-len(".zonel")] + ".ig"
+ igsrcFile = igsrcDir + "/" + os.path.basename(file)[0:-len(".zonel")] + ".ig"
destFile = destDir + "/" + os.path.basename(file)[0:-len(".zonel")] + ".ig"
if (os.path.isfile(igsrcFile)):
if (needUpdateLogRemoveDest(log, igsrcFile, destFile)):
- srcFile = srcDir + "/" + file # ************************* TODO CHECK IF THIS REALLY WORKS *************************************
+ srcFile = srcDir + "/" + file
dependFile = destDir + "/" + file[0:-len(".zonel")] + ".depend"
subprocess.call([ ExecTimeout, str(ZoneIgLightBuildTimeout), ZoneIgLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/zone_lighter.cfg", dependFile ])
printLog(log, "")
diff --git a/code/nel/tools/build_gamedata/processes/zone_light/3_install.py b/code/nel/tools/build_gamedata/processes/zone_light/3_install.py
index 158c35e47..0edfe83dc 100644
--- a/code/nel/tools/build_gamedata/processes/zone_light/3_install.py
+++ b/code/nel/tools/build_gamedata/processes/zone_light/3_install.py
@@ -58,7 +58,7 @@ mkPath(log, destDir)
copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, ">>> Install zone_light igs <<<")
-srcDir = ExportBuildDirectory + "/" + IgLandBuildDirectory
+srcDir = ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory
mkPath(log, srcDir)
destDir = ClientDataDirectory + "/" + IgClientDirectory
mkPath(log, destDir)
diff --git a/code/ryzom/tools/all.sln b/code/ryzom/tools/all.sln
index 325bfb0b6..18527d199 100644
--- a/code/ryzom/tools/all.sln
+++ b/code/ryzom/tools/all.sln
@@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C++ Express 2008
+# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d", "..\..\nel\src\3d.vcproj", "{2B48BE83-108B-4E8E-8A55-6627CF09AC5A}"
ProjectSection(ProjectDependencies) = postProject
{44B21233-EFCC-4825-B5E5-3A3BD6CC5516} = {44B21233-EFCC-4825-B5E5-3A3BD6CC5516}
@@ -211,12 +211,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_items_2_csv", "leveld
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "master", "leveldesign\master\master.vcproj", "{D53B297E-01B6-4E9A-9753-BBF18A6EB332}"
+ ProjectSection(ProjectDependencies) = postProject
+ {44B21233-EFCC-4825-B5E5-3A3BD6CC5516} = {44B21233-EFCC-4825-B5E5-3A3BD6CC5516}
+ {577230FF-399C-4C9D-9495-CEC106326441} = {577230FF-399C-4C9D-9495-CEC106326441}
+ EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "georges_plugin_test", "leveldesign\georges_plugin_test\georges_plugin_test.vcproj", "{36DE80C1-0519-4177-847C-17A8D846D365}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "georges_convert", "leveldesign\georges_convert\georges_convert.vcproj", "{3539CE53-2596-4BC4-A177-045BBAFF4A82}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "export", "leveldesign\export\export.vcproj", "{577230FF-399C-4C9D-9495-CEC106326441}"
+ ProjectSection(ProjectDependencies) = postProject
+ {44B21233-EFCC-4825-B5E5-3A3BD6CC5516} = {44B21233-EFCC-4825-B5E5-3A3BD6CC5516}
+ {9D284C6B-BE12-4549-87E5-2337D64F31BE} = {9D284C6B-BE12-4549-87E5-2337D64F31BE}
+ {2B48BE83-108B-4E8E-8A55-6627CF09AC5A} = {2B48BE83-108B-4E8E-8A55-6627CF09AC5A}
+ {1DDC11C7-AF79-40F3-A6D4-F84BA8644B5C} = {1DDC11C7-AF79-40F3-A6D4-F84BA8644B5C}
+ EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "patch_gen", "patch_gen\patch_gen.vcproj", "{E6D3EADB-D6E4-42FC-87A3-4A98A6AAA67A}"
ProjectSection(ProjectDependencies) = postProject
diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py
index d38db7e46..11633a34a 100644
--- a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py
+++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py
@@ -26,15 +26,19 @@
# along with this program. If not, see .
#
-# *** SOURCE DIRECTORIES IN THE DATABASE ***
-
# *** ECOSYSTEM AND CONTINENT NAMES ***
+
EcosystemName = "jungle"
EcosystemPath = "ecosystems/" + EcosystemName
ContinentName = "newbieland"
ContinentPath = "continents/" + ContinentName
+# *** SOURCE DIRECTORIES LEVELDESIGN/WORLD ***
+ContinentLeveldesignWorldDirectory = ContinentName
+
+
+# *** SOURCE DIRECTORIES IN THE DATABASE ***
# Ligo directories
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
@@ -43,6 +47,20 @@ LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
# Zone directories
ZoneSourceDirectory = "landscape/zones/" + EcosystemName
+# Ig directories
+IgLandSourceDirectories = [ ]
+# IgLandSourceDirectories += [ "landscape/zones/" + ContinentName ] # For old snowballs style landscape when not using ligo
+IgOtherSourceDirectories = [ ]
+IgOtherSourceDirectories += [ "stuff/" + ContinentName + "/sky" ] # The canopee in the sky
+IgPrimitiveSourceDirectories = [ ]
+IgPrimitiveSourceDirectories += [ "primitive/" + ContinentName ] # Contains plants (trees, etc) primitive made with world editor
+
+# Tiles root directory
+TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
+
+# Displace directory
+DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
+
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
@@ -64,16 +82,22 @@ SmallbankExportDirectory = EcosystemPath + "/smallbank"
# Tiles directories
DisplaceExportDirectory = EcosystemPath + "/diplace"
+# Ig directories
+IgStaticLandExportDirectory = ContinentPath + "/ig_static_land" # Landscape IG eported from 3dsmax not elevated by the heightmap
+IgStaticOtherExportDirectory = ContinentPath + "/ig_static_other" # Village or construction IGs exported from 3dsmax
+IgStaticTagExportDirectory = ContinentPath + "/ig_static_tag" # Tag for exported 3dsmax files
+
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Ligo directories
LigoZoneBuildDirectory = ContinentPath + "/ligo_zones"
-LigoIgLandBuildDirectory = ContinentPath + "/ligo_ig_land"
-LigoIgOtherBuildDirectory = ContinentPath + "/ligo_ig_other"
+LigoIgLandBuildDirectory = ContinentPath + "/ligo_ig_land" # Landscape IG found in ligo bricks not elevated by the heightmap
+LigoIgOtherBuildDirectory = ContinentPath + "/ligo_ig_other" # Village or construction IGs exported from ligo landscape
# Zone directories
ZoneWeldBuildDirectory = ContinentPath + "/zone_weld"
+ZoneDependBuildDirectory = ContinentPath + "/zone_depend"
ZoneLightWaterShapesLightedExportDirectory = ContinentPath + "/zone_lwsl_temp" #fixme
ZoneLightBuildDirectory = ContinentPath + "/zone_lighted" #fixme
ZoneLightDependBuildDirectory = ContinentPath + "/zone_lighted_depend" #fixme
@@ -82,9 +106,15 @@ ZoneLightIgLandBuildDirectory = ContinentPath + "/zone_lighted_ig_land" #fixme
# Farbank directories
FarbankBuildDirectory = EcosystemPath + "/farbank"
-# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
-IgLandBuildDirectory = "_invalid"
-IgVillageBuildDirectory = "_invalid"
+# Ig directories
+IgElevLandPrimBuildDirectory = ContinentPath + "/ig_elev_land_prim" # landscape IG generated by the prim exporter (already elevated by the land exporter)
+IgElevLandLigoBuildDirectory = ContinentPath + "/ig_elev_land_ligo" # Landscape IG found in ligo bricks from 3dsmax elevated by the heightmap
+IgElevLandStaticBuildDirectory = ContinentPath + "/ig_elev_land_static" # Landscape IG eported from 3dsmax elevated by the heightmap
+IgTempLandMergeBuildDirectory = ContinentPath + "/ig_temp_land_merge"
+IgTempLandCompareBuildDirectory = ContinentPath + "/ig_temp_land_compare" # Tmp final IG directory for landscape IGs before comparison
+IgLandBuildDirectory = ContinentPath + "/ig_land" # Final IG directory for landscape IGs
+IgOtherBuildDirectory = ContinentPath + "/ig_other" # Final IG directory for village or construction IGs
+IgOtherLightedBuildDirectory = ContinentPath + "/ig_other_lighted"
# Rbank directories
RbankBboxBuildDirectory = ContinentPath + "/rbank_bbox"
diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py
index d8237176e..b543cba32 100644
--- a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py
+++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py
@@ -30,12 +30,12 @@
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "ligo" ] # not fully implemented, works for this process (not yet), but does not export max files
-ProcessToComplete += [ "zone" ]
-#ProcessToComplete += [ "ig" ] # not implemented
-ProcessToComplete += [ "zone_light" ]
-ProcessToComplete += [ "rbank" ]
-#ProcessToComplete += [ "ig_light" ]
-#ProcessToComplete += [ "ps" ]
+ProcessToComplete += [ "zone" ] # works, need to check completeness
+ProcessToComplete += [ "ig" ] # fully implemented
+ProcessToComplete += [ "zone_light" ] # works, need to check completeness
+ProcessToComplete += [ "rbank" ] # works, need to check completeness
+ProcessToComplete += [ "ig_light" ] # fully implemented
+#ProcessToComplete += [ "ps" ] # not implemented
# *** ECOSYSTEM AND CONTINENT NAMES ***
@@ -52,6 +52,13 @@ ContinentFile = ContinentName + "/" + ContinentName + ".continent"
# *** BANK EXPORT OPTIONS ***
+# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
+MultipleTilesPostfix = [ ]
+MultipleTilesPostfix += [ "_sp" ]
+MultipleTilesPostfix += [ "_su" ]
+MultipleTilesPostfix += [ "_au" ]
+MultipleTilesPostfix += [ "_wi" ]
+
# Name of the tilebank to use
BankTileBankName = EcosystemName
@@ -67,7 +74,8 @@ LigoExportZFactor2 = "0.5"
LigoTileBankFile = "landscape/_texture_tiles/" + EcosystemName + "/" + EcosystemName + ".bank"
# *** ZONE REGIONS ( up-left, down-right ) ***
-ZoneRegion = [ "65_bz", "77_cs" ]
+ZoneRegions = [ ]
+ZoneRegions += [ [ "65_bz" ] + [ "77_cs" ] ]
# *** RBANK OPTIONS ***
diff --git a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py
index 93dd9390d..f18db50b5 100644
--- a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py
+++ b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py
@@ -108,9 +108,12 @@ TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/T
# Tiles root directory
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
-# Displace directoriy
+# Displace directory
+DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
+
+# Do not use, needs to be removed and fixed in processes
DisplaceSourceDirectories = [ ]
-DisplaceSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "/displace" ]
+DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
# Bank directory
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
@@ -192,7 +195,7 @@ FarbankBuildDirectory = "ecosystems/" + EcosystemName + "/farbank"
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
IgLandBuildDirectory = "_invalid"
-IgVillageBuildDirectory = "_invalid"
+IgOtherBuildDirectory = "_invalid"
# Rbank directories
RbankOutputBuildDirectory = "_invalid"
diff --git a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py
index b5e288d15..ddd54fadf 100644
--- a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py
+++ b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py
@@ -37,7 +37,7 @@ ProcessToComplete += [ "displace" ] # OK
ProcessToComplete += [ "veget" ] # OK
ProcessToComplete += [ "vegetset" ] # OK
ProcessToComplete += [ "ligo" ] # not fully implemented, works for this process, but does not export max files
-#ProcessToComplete += [ "pacs_prim" ]
+##ProcessToComplete += [ "pacs_prim" ]
# *** MAP EXPORT OPTIONS ***
PanoplyFileList = [ ]
diff --git a/code/ryzom/tools/leveldesign/alias_synchronizer/alias_synchronizer.vcproj b/code/ryzom/tools/leveldesign/alias_synchronizer/alias_synchronizer.vcproj
index 02c8bb892..7c62f2a07 100644
--- a/code/ryzom/tools/leveldesign/alias_synchronizer/alias_synchronizer.vcproj
+++ b/code/ryzom/tools/leveldesign/alias_synchronizer/alias_synchronizer.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="alias_synchronizer"
ProjectGUID="{3ECD7F32-6603-45D2-91AB-5FBC278F6DC8}"
+ RootNamespace="alias_synchronizer"
TargetFrameworkVersion="0"
>
@@ -70,6 +71,7 @@
/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
-
+
diff --git a/code/ryzom/tools/leveldesign/world_editor/land_export/land_export.vcproj b/code/ryzom/tools/leveldesign/world_editor/land_export/land_export.vcproj
index b9c583400..92404aa9e 100644
--- a/code/ryzom/tools/leveldesign/world_editor/land_export/land_export.vcproj
+++ b/code/ryzom/tools/leveldesign/world_editor/land_export/land_export.vcproj
@@ -1,7 +1,7 @@