Added: #929 Generators for ecosystem projects, all four ecosystem projects, generators for max exporter scripts, rbank cmb export.
Changed: #929 Improved skipping of exported max files, corrected search paths for some tools configurations.
This commit is contained in:
parent
411f2893c8
commit
a3b71cdb3e
77 changed files with 5430 additions and 1036 deletions
|
@ -215,6 +215,31 @@ def findFile(log, dir_where, file_name):
|
||||||
printLog(log, "findFile: file not dir or file?! " + filePath)
|
printLog(log, "findFile: file not dir or file?! " + filePath)
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
def needUpdateDirByTagLog(log, dir_source, ext_source, dir_dest, ext_dest):
|
||||||
|
updateCount = 0
|
||||||
|
skipCount = 0
|
||||||
|
lenSrcExt = len(ext_source)
|
||||||
|
sourceFiles = findFilesNoSubdir(log, dir_source, ext_source)
|
||||||
|
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
|
||||||
|
for file in sourceFiles:
|
||||||
|
sourceFile = dir_source + "/" + file
|
||||||
|
tagFile = dir_dest + "/" + file[0:-lenSrcExt] + ext_dest
|
||||||
|
if os.path.isfile(tagFile):
|
||||||
|
sourceTime = os.stat(sourceFile).st_mtime
|
||||||
|
tagTime = os.stat(tagFile).st_mtime
|
||||||
|
if (sourceTime > tagTime):
|
||||||
|
updateCount = updateCount + 1
|
||||||
|
else:
|
||||||
|
skipCount = skipCount + 1
|
||||||
|
else:
|
||||||
|
updateCount = updateCount + 1
|
||||||
|
if updateCount > 0:
|
||||||
|
printLog(log, "UPDATE " + str(updateCount) + " / " + str(len(sourceFiles)) + "; SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
printLog(log, "SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
||||||
|
return 0
|
||||||
|
|
||||||
def needUpdateDirNoSubdirLogExt(log, dir_source, ext_source, dir_dest, ext_dest):
|
def needUpdateDirNoSubdirLogExt(log, dir_source, ext_source, dir_dest, ext_dest):
|
||||||
latestSourceFile = 0
|
latestSourceFile = 0
|
||||||
latestDestFile = 0
|
latestDestFile = 0
|
||||||
|
|
|
@ -0,0 +1,196 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## %PreGenWarning%
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file directories.py
|
||||||
|
# \brief Directories configuration
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# \date 2001-2005
|
||||||
|
# \author Nevrax
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Directories configuration for '%PreGenEcosystemName%' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "%PreGenEcosystemName%"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
DatabaseRootName = "%PreGenDatabaseRootName%"
|
||||||
|
DatabaseRootPath = "stuff/" + DatabaseRootName
|
||||||
|
|
||||||
|
|
||||||
|
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeSourceDirectories = [ ]
|
||||||
|
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
||||||
|
|
||||||
|
# Maps directories
|
||||||
|
MapSourceDirectories = [ ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
|
||||||
|
%PreGenMapSubdirectories%MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
||||||
|
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
||||||
|
|
||||||
|
MapUncompressedSourceDirectories = [ ]
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesSourceDirectories = [ ]
|
||||||
|
%PreGenTileSourceDirectories%
|
||||||
|
# Tiles root directory
|
||||||
|
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
|
||||||
|
|
||||||
|
# Do not use, needs to be removed and fixed in processes
|
||||||
|
DisplaceSourceDirectories = [ ]
|
||||||
|
DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Vegetable set directories
|
||||||
|
VegetSetSourceDirectories = [ ]
|
||||||
|
VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetSourceDirectories = [ ]
|
||||||
|
VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
|
||||||
|
|
||||||
|
# Ig landscape directories
|
||||||
|
IgLandSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ig other directories
|
||||||
|
IgOtherSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimSourceDirectories = [ ]
|
||||||
|
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeTagExportDirectory = CommonPath + "/shape_tag"
|
||||||
|
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
|
||||||
|
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
|
||||||
|
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
|
||||||
|
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
||||||
|
|
||||||
|
# Smallbank directories
|
||||||
|
SmallbankExportDirectory = CommonPath + "/smallbank"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesExportDirectory = CommonPath + "/tiles"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
DisplaceExportDirectory = CommonPath + "/diplace"
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetExportDirectory = CommonPath + "/veget"
|
||||||
|
VegetTagExportDirectory = CommonPath + "/veget_tag"
|
||||||
|
|
||||||
|
# Veget Set directories
|
||||||
|
VegetSetExportDirectory = CommonPath + "/veget_set"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoDatabaseExportDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoDatabaseIgExportDirectory = LigoDatabaseExportDirectory + "/igs"
|
||||||
|
LigoDatabaseZoneExportDirectory = LigoDatabaseExportDirectory + "/zones"
|
||||||
|
LigoDatabaseZoneLigoExportDirectory = LigoDatabaseExportDirectory + "/zoneligos"
|
||||||
|
LigoDatabaseCmbExportDirectory = LigoDatabaseExportDirectory + "/cmb"
|
||||||
|
LigoTagExportDirectory = CommonPath + "/ligo_tag"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneExportDirectory = CommonPath + "/zone"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimExportDirectory = CommonPath + "/pacs_prim"
|
||||||
|
|
||||||
|
|
||||||
|
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Map directories
|
||||||
|
MapBuildDirectory = CommonPath + "/map"
|
||||||
|
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
|
||||||
|
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
|
||||||
|
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
|
||||||
|
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
||||||
|
|
||||||
|
# Farbank directories
|
||||||
|
FarbankBuildDirectory = CommonPath + "/farbank"
|
||||||
|
|
||||||
|
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
||||||
|
IgLandBuildDirectory = "_invalid"
|
||||||
|
IgOtherBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Rbank directories
|
||||||
|
RbankOutputBuildDirectory = "_invalid"
|
||||||
|
RbankMeshBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
|
||||||
|
|
||||||
|
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
||||||
|
|
||||||
|
# Map directory
|
||||||
|
MapClientDirectory = CommonName + "_maps"
|
||||||
|
BitmapClientDirectory = MapClientDirectory
|
||||||
|
|
||||||
|
# Shape directory
|
||||||
|
ShapeClientDirectory = CommonName + "_shapes"
|
||||||
|
|
||||||
|
# Lightmap directory
|
||||||
|
LightmapClientDirectory = CommonName + "_lightmaps"
|
||||||
|
|
||||||
|
# Tile directory
|
||||||
|
TilesClientDirectory = CommonName + "_tiles"
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceClientDirectory = CommonName + "_displaces"
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankClientDirectory = CommonName + "_bank"
|
||||||
|
|
||||||
|
# Vegetable set directory
|
||||||
|
VegetSetClientDirectory = CommonName + "_vegetable_sets"
|
||||||
|
|
||||||
|
# Vegetable shape directory
|
||||||
|
VegetClientDirectory = CommonName + "_vegetables"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimClientDirectory = CommonName + "_pacs_prim"
|
|
@ -0,0 +1,120 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## %PreGenWarning%
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file config.py
|
||||||
|
# \brief Process configuration
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Process configuration for '%PreGenEcosystemName%' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# *** PROCESS CONFIGURATION ***
|
||||||
|
|
||||||
|
# *** PROCESS CONFIG ***
|
||||||
|
ProcessToComplete = [ ]
|
||||||
|
ProcessToComplete += [ "shape" ]
|
||||||
|
ProcessToComplete += [ "map" ]
|
||||||
|
ProcessToComplete += [ "smallbank" ]
|
||||||
|
ProcessToComplete += [ "farbank" ]
|
||||||
|
ProcessToComplete += [ "tiles" ]
|
||||||
|
ProcessToComplete += [ "displace" ]
|
||||||
|
ProcessToComplete += [ "veget" ]
|
||||||
|
ProcessToComplete += [ "vegetset" ]
|
||||||
|
ProcessToComplete += [ "ligo" ]
|
||||||
|
ProcessToComplete += [ "pacs_prim" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "%PreGenEcosystemName%"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
|
||||||
|
# *** MAP EXPORT OPTIONS ***
|
||||||
|
PanoplyFileList = [ ]
|
||||||
|
HlsBankFileName = ""
|
||||||
|
|
||||||
|
# *** SHAPE EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Compute lightmaps ?
|
||||||
|
ShapeExportOptExportLighting = "%PreGenShapeExportOptExportLighting%"
|
||||||
|
|
||||||
|
# Cast shadow in lightmap ?
|
||||||
|
ShapeExportOptShadow = "%PreGenShapeExportOptShadow%"
|
||||||
|
|
||||||
|
# Lighting limits. 0 : normal, 1 : soft shadows
|
||||||
|
ShapeExportOptLightingLimit = %PreGenShapeExportOptLightingLimit%
|
||||||
|
|
||||||
|
# Lightmap lumel size
|
||||||
|
ShapeExportOptLumelSize = "%PreGenShapeExportOptLumelSize%"
|
||||||
|
|
||||||
|
# Oversampling value. Can be 1, 2, 4 or 8
|
||||||
|
ShapeExportOptOversampling = %PreGenShapeExportOptOversampling%
|
||||||
|
|
||||||
|
# Does the lightmap must be generated in 8 bits format ?
|
||||||
|
ShapeExportOpt8BitsLightmap = "%PreGenShapeExportOpt8BitsLightmap%"
|
||||||
|
|
||||||
|
# Does the lightmaps export must generate logs ?
|
||||||
|
ShapeExportOptLightmapLog = "%PreGenShapeExportOptLightmapLog%"
|
||||||
|
|
||||||
|
# Coarse mesh texture mul size
|
||||||
|
TextureMulSizeValue = "%PreGenTextureMulSizeValue%"
|
||||||
|
|
||||||
|
DoBuildShadowSkin = 0
|
||||||
|
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** COARSE MESH TEXTURE NAME ***
|
||||||
|
CoarseMeshTextureNames = [ ]
|
||||||
|
%PreGenCoarseMeshTextureNames%
|
||||||
|
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
||||||
|
MultipleTilesPostfix = [ ]
|
||||||
|
%PreGenMultipleTilesPostfix%
|
||||||
|
# *** BANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Name of the tilebank to use
|
||||||
|
BankTileBankName = EcosystemName
|
||||||
|
|
||||||
|
# *** RBANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Output names
|
||||||
|
RbankRbankName = "_invalid"
|
||||||
|
|
||||||
|
# *** LIGO OPTIONS ***
|
||||||
|
|
||||||
|
LigoExportLand = ""
|
||||||
|
LigoExportOnePass = 0
|
||||||
|
|
||||||
|
# *** MAPS OPTIONS ***
|
||||||
|
|
||||||
|
ReduceBitmapFactor = 0
|
||||||
|
|
||||||
|
# *** SHAPE BUILD OPTIONS *
|
||||||
|
|
||||||
|
DoBuildShadowSkin = False
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** PACS_PRIM OPTIONS ***
|
||||||
|
WantLandscapeColPrimPacsList = True
|
65
code/nel/tools/build_gamedata/generators/generate_all.py
Normal file
65
code/nel/tools/build_gamedata/generators/generate_all.py
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 0_setup.py
|
||||||
|
# \brief Run all setup processes
|
||||||
|
# \date 2009-02-18 15:28GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Run all setup processes
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||||
|
sys.path.append("../configuration")
|
||||||
|
if os.path.isfile("generate_all.log"):
|
||||||
|
os.remove("generate_all.log")
|
||||||
|
log = open("generate_all.log", "w")
|
||||||
|
from scripts import *
|
||||||
|
from buildsite import *
|
||||||
|
from tools import *
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, "--- Generate all")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
subprocess.call([ "python", "generate_simple_max_exporters.py" ])
|
||||||
|
except Exception, e:
|
||||||
|
printLog(log, "<" + processName + "> " + str(e))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
subprocess.call([ "python", "generate_tagged_max_exporters.py" ])
|
||||||
|
except Exception, e:
|
||||||
|
printLog(log, "<" + processName + "> " + str(e))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
subprocess.call([ "python", "generate_ecosystem_projects.py" ])
|
||||||
|
except Exception, e:
|
||||||
|
printLog(log, "<" + processName + "> " + str(e))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
|
log.close()
|
|
@ -0,0 +1,278 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file generate_ecosystem_projects.py
|
||||||
|
# \brief Run all setup processes
|
||||||
|
# \date 2010-09-02 10:36GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Generate ecosystem projects
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||||
|
sys.path.append("../configuration")
|
||||||
|
if os.path.isfile("generate_ecosystem_projects.log"):
|
||||||
|
os.remove("generate_ecosystem_projects.log")
|
||||||
|
log = open("generate_ecosystem_projects.log", "w")
|
||||||
|
from scripts import *
|
||||||
|
from buildsite import *
|
||||||
|
from tools import *
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, "--- Generate ecosystem projects")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
templateDir = os.getcwd().replace("\\", "/") + "/ecosystem_project_template"
|
||||||
|
mkPath(log, templateDir)
|
||||||
|
|
||||||
|
os.chdir("..")
|
||||||
|
|
||||||
|
|
||||||
|
# Scroll down to add an ecosystem.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DefaultShapeExportOptExportLighting = "true"
|
||||||
|
DefaultShapeExportOptShadow = "true"
|
||||||
|
DefaultShapeExportOptLightingLimit = "1"
|
||||||
|
DefaultShapeExportOptLumelSize = "0.25"
|
||||||
|
DefaultShapeExportOptOversampling = "1"
|
||||||
|
DefaultShapeExportOpt8BitsLightmap = "true"
|
||||||
|
DefaultShapeExportOptLightmapLog = "true"
|
||||||
|
DefaultTextureMulSizeValue = "1.5"
|
||||||
|
DefaultSeasonSuffixes = [ "sp" ] + [ "su" ] + [ "au" ] + [ "wi" ]
|
||||||
|
DefaultMapSubdirectories = [ ]
|
||||||
|
DefaultTileDirectories = [ ]
|
||||||
|
|
||||||
|
|
||||||
|
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||||
|
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||||
|
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||||
|
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||||
|
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||||
|
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
|
||||||
|
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||||
|
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||||
|
SeasonSuffixes = DefaultSeasonSuffixes
|
||||||
|
MapSubdirectories = DefaultMapSubdirectories
|
||||||
|
TileDirectories = DefaultTileDirectories
|
||||||
|
|
||||||
|
|
||||||
|
PreGenDateTimeStamp = None
|
||||||
|
PreGenEcosystemName = None
|
||||||
|
PreGenDatabaseRootName = None
|
||||||
|
PreGenCoarseMeshTextureNames = None
|
||||||
|
PreGenMultipleTilesPostfix = None
|
||||||
|
PreGenMapSubdirectories = None
|
||||||
|
PreGenTileSourceDirectories = None
|
||||||
|
|
||||||
|
|
||||||
|
def transformLine(line):
|
||||||
|
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||||
|
newline = newline.replace("%PreGenDateTimeStamp%", PreGenDateTimeStamp)
|
||||||
|
|
||||||
|
newline = newline.replace("%PreGenEcosystemName%", PreGenEcosystemName)
|
||||||
|
newline = newline.replace("%PreGenDatabaseRootName%", PreGenDatabaseRootName)
|
||||||
|
|
||||||
|
newline = newline.replace("%PreGenCoarseMeshTextureNames%", PreGenCoarseMeshTextureNames)
|
||||||
|
newline = newline.replace("%PreGenMultipleTilesPostfix%", PreGenMultipleTilesPostfix)
|
||||||
|
newline = newline.replace("%PreGenMapSubdirectories%", PreGenMapSubdirectories)
|
||||||
|
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
|
||||||
|
|
||||||
|
newline = newline.replace("%PreGenShapeExportOptExportLighting%", ShapeExportOptExportLighting)
|
||||||
|
newline = newline.replace("%PreGenShapeExportOptShadow%", ShapeExportOptShadow)
|
||||||
|
newline = newline.replace("%PreGenShapeExportOptLightingLimit%", ShapeExportOptLightingLimit)
|
||||||
|
newline = newline.replace("%PreGenShapeExportOptLumelSize%", ShapeExportOptLumelSize)
|
||||||
|
newline = newline.replace("%PreGenShapeExportOptOversampling%", ShapeExportOptOversampling)
|
||||||
|
newline = newline.replace("%PreGenShapeExportOpt8BitsLightmap%", ShapeExportOpt8BitsLightmap)
|
||||||
|
newline = newline.replace("%PreGenShapeExportOptLightmapLog%", ShapeExportOptLightmapLog)
|
||||||
|
newline = newline.replace("%PreGenTextureMulSizeValue%", TextureMulSizeValue)
|
||||||
|
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
|
||||||
|
|
||||||
|
return newline
|
||||||
|
|
||||||
|
def generateFile(sourceFile, destFile):
|
||||||
|
srcf = open(sourceFile, "r")
|
||||||
|
dstf = open(destFile, "w")
|
||||||
|
printLog(log, "WRITE " + destFile)
|
||||||
|
for line in srcf:
|
||||||
|
dstf.write(transformLine(line))
|
||||||
|
dstf.close()
|
||||||
|
srcf.close()
|
||||||
|
|
||||||
|
def generateEcosystem(ecosystemName, databaseRootName):
|
||||||
|
global PreGenEcosystemName
|
||||||
|
PreGenEcosystemName = ecosystemName
|
||||||
|
global PreGenDatabaseRootName
|
||||||
|
PreGenDatabaseRootName = databaseRootName
|
||||||
|
global PreGenDateTimeStamp
|
||||||
|
PreGenDateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||||
|
|
||||||
|
global PreGenMultipleTilesPostfix
|
||||||
|
PreGenMultipleTilesPostfix = ""
|
||||||
|
global PreGenCoarseMeshTextureNames
|
||||||
|
PreGenCoarseMeshTextureNames = ""
|
||||||
|
global PreGenTileSourceDirectories
|
||||||
|
PreGenTileSourceDirectories = ""
|
||||||
|
for suffix in SeasonSuffixes:
|
||||||
|
PreGenMultipleTilesPostfix += "MultipleTilesPostfix += [ \"_" + suffix + "\" ]\n"
|
||||||
|
PreGenCoarseMeshTextureNames += "CoarseMeshTextureNames += [ \"nel_coarse_mesh_\" + EcosystemName + \"_" + suffix + "\" ]\n"
|
||||||
|
for tiledir in TileDirectories:
|
||||||
|
PreGenTileSourceDirectories += "TilesSourceDirectories += [ \"landscape/_texture_tiles/\" + EcosystemName + \"_" + suffix + "/" + tiledir + "\" ]\n"
|
||||||
|
global PreGenMapSubdirectories
|
||||||
|
PreGenMapSubdirectories = ""
|
||||||
|
for subdir in MapSubdirectories:
|
||||||
|
PreGenMapSubdirectories += "MapSourceDirectories += [ DatabaseRootPath + \"/decors/_textures/" + subdir + "\" ]\n"
|
||||||
|
|
||||||
|
destDir = WorkspaceDirectory + "/ecosystems/" + ecosystemName
|
||||||
|
mkPath(log, destDir)
|
||||||
|
|
||||||
|
generateFile(templateDir + "/process.py", destDir + "/process.py")
|
||||||
|
generateFile(templateDir + "/directories.py", destDir + "/directories.py")
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Add new ecosystems below this line.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# DESERT
|
||||||
|
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||||
|
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||||
|
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||||
|
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||||
|
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||||
|
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
|
||||||
|
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||||
|
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||||
|
SeasonSuffixes = DefaultSeasonSuffixes
|
||||||
|
MapSubdirectories = [ ]
|
||||||
|
MapSubdirectories += [ "vegetations" ]
|
||||||
|
TileDirectories = [ ]
|
||||||
|
TileDirectories += [ "1.5-marecage_profond" ]
|
||||||
|
TileDirectories += [ "1-marecages" ]
|
||||||
|
TileDirectories += [ "2-citees" ]
|
||||||
|
TileDirectories += [ "3-fond_canyon" ]
|
||||||
|
TileDirectories += [ "4.2-boisbandeclair" ]
|
||||||
|
TileDirectories += [ "4.5-desert2boisbande" ]
|
||||||
|
TileDirectories += [ "4-falaise_bois_bande" ]
|
||||||
|
TileDirectories += [ "5-falaise_normales" ]
|
||||||
|
TileDirectories += [ "6.5-desertalternatif" ]
|
||||||
|
TileDirectories += [ "6-desert" ]
|
||||||
|
TileDirectories += [ "7-routes" ]
|
||||||
|
TileDirectories += [ "8-foretbrule" ]
|
||||||
|
generateEcosystem("desert", "fyros")
|
||||||
|
|
||||||
|
|
||||||
|
# JUNGLE
|
||||||
|
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||||
|
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||||
|
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||||
|
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||||
|
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||||
|
ShapeExportOpt8BitsLightmap = "false"
|
||||||
|
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||||
|
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||||
|
SeasonSuffixes = DefaultSeasonSuffixes
|
||||||
|
MapSubdirectories = [ ]
|
||||||
|
MapSubdirectories += [ "vegetations" ]
|
||||||
|
TileDirectories = [ ]
|
||||||
|
TileDirectories += [ "10-crevassejungle" ]
|
||||||
|
TileDirectories += [ "11-paroisjungle" ]
|
||||||
|
TileDirectories += [ "12-vasejungle" ]
|
||||||
|
TileDirectories += [ "1-junglemousse" ]
|
||||||
|
TileDirectories += [ "2-junglefeuilles" ]
|
||||||
|
TileDirectories += [ "3-jungleherbesseche" ]
|
||||||
|
TileDirectories += [ "4-jungleherbevieille" ]
|
||||||
|
TileDirectories += [ "5-jungleterreaux" ]
|
||||||
|
TileDirectories += [ "6-junglegoo" ]
|
||||||
|
TileDirectories += [ "7-sciurejungle" ]
|
||||||
|
TileDirectories += [ "8-terrejungle" ]
|
||||||
|
TileDirectories += [ "9-falaisejungle" ]
|
||||||
|
TileDirectories += [ "Transitions" ]
|
||||||
|
generateEcosystem("jungle", "jungle")
|
||||||
|
|
||||||
|
|
||||||
|
# PRIMES RACINES
|
||||||
|
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||||
|
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||||
|
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||||
|
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||||
|
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||||
|
ShapeExportOpt8BitsLightmap = "false"
|
||||||
|
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||||
|
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||||
|
SeasonSuffixes = DefaultSeasonSuffixes
|
||||||
|
MapSubdirectories = [ ]
|
||||||
|
MapSubdirectories += [ "vegetations" ]
|
||||||
|
MapSubdirectories += [ "batiments" ]
|
||||||
|
TileDirectories = [ ]
|
||||||
|
TileDirectories += [ "PR-creux" ]
|
||||||
|
TileDirectories += [ "PR-dome-moussu" ]
|
||||||
|
TileDirectories += [ "PR-kitiniere" ]
|
||||||
|
TileDirectories += [ "PR-mousse-licken" ]
|
||||||
|
TileDirectories += [ "PR-mousse-spongieus" ]
|
||||||
|
TileDirectories += [ "PR-parois" ]
|
||||||
|
TileDirectories += [ "PR-sol-mousse" ]
|
||||||
|
TileDirectories += [ "PR-souche" ]
|
||||||
|
TileDirectories += [ "PR-stalagmite" ]
|
||||||
|
TileDirectories += [ "PR-terre" ]
|
||||||
|
TileDirectories += [ "aditif" ]
|
||||||
|
generateEcosystem("primes_racines", "primes_racines")
|
||||||
|
|
||||||
|
|
||||||
|
# LACUSTRE
|
||||||
|
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||||
|
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||||
|
ShapeExportOptLightingLimit = "0"
|
||||||
|
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||||
|
ShapeExportOptOversampling = "8"
|
||||||
|
ShapeExportOpt8BitsLightmap = "false"
|
||||||
|
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||||
|
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||||
|
SeasonSuffixes = DefaultSeasonSuffixes
|
||||||
|
MapSubdirectories = [ ]
|
||||||
|
MapSubdirectories += [ "vegetations" ]
|
||||||
|
TileDirectories = [ ]
|
||||||
|
TileDirectories += [ "1a-sable-marin" ]
|
||||||
|
TileDirectories += [ "1-plages" ]
|
||||||
|
TileDirectories += [ "2-iles" ]
|
||||||
|
TileDirectories += [ "2-ilesa" ]
|
||||||
|
TileDirectories += [ "2-iles-marines" ]
|
||||||
|
TileDirectories += [ "3-fondmarin2plage" ]
|
||||||
|
TileDirectories += [ "4-marecages" ]
|
||||||
|
TileDirectories += [ "5-marecages" ]
|
||||||
|
TileDirectories += [ "5-parois-marine" ]
|
||||||
|
TileDirectories += [ "6-fond_marin" ]
|
||||||
|
TileDirectories += [ "7-bassesiles" ]
|
||||||
|
TileDirectories += [ "7-mousseter" ]
|
||||||
|
TileDirectories += [ "7-racines" ]
|
||||||
|
TileDirectories += [ "8-mousse_marine" ]
|
||||||
|
TileDirectories += [ "constructible" ]
|
||||||
|
generateEcosystem("lacustre", "tryker")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
log.close()
|
|
@ -0,0 +1,104 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 0_setup.py
|
||||||
|
# \brief Run all setup processes
|
||||||
|
# \date 2009-02-18 15:28GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Run all setup processes
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||||
|
sys.path.append("../configuration")
|
||||||
|
if os.path.isfile("generate_simple_max_exporters.log"):
|
||||||
|
os.remove("generate_simple_max_exporters.log")
|
||||||
|
log = open("generate_simple_max_exporters.log", "w")
|
||||||
|
from scripts import *
|
||||||
|
from buildsite import *
|
||||||
|
from tools import *
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, "--- Generate simple max exporters")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||||
|
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||||
|
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
|
||||||
|
newline = newline.replace("%PreGenProcessName%", processName)
|
||||||
|
newline = newline.replace("%PreGenFileExtension%", fileExtension)
|
||||||
|
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
|
||||||
|
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
|
||||||
|
newline = newline.replace("%PreGenClientDirectoryVariable%", clientDirectoryVariable)
|
||||||
|
return newline
|
||||||
|
|
||||||
|
def generateSimpleMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||||
|
srcf = open(sourceFile, "r")
|
||||||
|
dstf = open(destFile, writeMode)
|
||||||
|
printLog(log, "WRITE " + destFile + " " + writeMode)
|
||||||
|
for line in srcf:
|
||||||
|
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
|
||||||
|
dstf.close()
|
||||||
|
srcf.close()
|
||||||
|
|
||||||
|
def generateSimpleMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable):
|
||||||
|
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||||
|
processDir = ScriptDirectory + "/processes/" + processName
|
||||||
|
mkPath(log, processDir)
|
||||||
|
maxscriptDir = processDir + "/maxscript"
|
||||||
|
mkPath(log, maxscriptDir)
|
||||||
|
templateDir = os.getcwd().replace("\\", "/") + "/simple_max_exporter_template"
|
||||||
|
mkPath(log, templateDir)
|
||||||
|
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
|
||||||
|
mkPath(log, scriptDir)
|
||||||
|
|
||||||
|
if not os.path.isfile(processDir + "/0_setup.py"):
|
||||||
|
generateSimpleMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
generateSimpleMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateSimpleMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
if not os.path.isfile(processDir + "/2_build.py"):
|
||||||
|
generateSimpleMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
if not os.path.isfile(processDir + "/3_install.py"):
|
||||||
|
generateSimpleMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
generateSimpleMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateSimpleMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
generateSimpleMaxExporter("pacs_prim", "pacs_prim", "PacsPrimSourceDirectories", "PacsPrimExportDirectory", "PacsPrimClientDirectory")
|
||||||
|
|
||||||
|
generateSimpleMaxExporter("anim", "anim", "AnimSourceDirectories", "AnimExportDirectory", "AnimClientDirectory")
|
||||||
|
|
||||||
|
generateSimpleMaxExporter("skel", "skel", "SkelSourceDirectories", "SkelExportDirectory", "SkelClientDirectory")
|
||||||
|
|
||||||
|
generateSimpleMaxExporter("swt", "swt", "SwtSourceDirectories", "SwtExportDirectory", "SwtClientDirectory")
|
||||||
|
|
||||||
|
generateSimpleMaxExporter("zone", "zone", "ZoneSourceDirectory", "ZoneExportDirectory", "ZoneClientDirectory")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
log.close()
|
|
@ -0,0 +1,114 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 0_setup.py
|
||||||
|
# \brief Run all setup processes
|
||||||
|
# \date 2009-02-18 15:28GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Run all setup processes
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||||
|
sys.path.append("../configuration")
|
||||||
|
if os.path.isfile("generate_tagged_max_exporters.log"):
|
||||||
|
os.remove("generate_tagged_max_exporters.log")
|
||||||
|
log = open("generate_tagged_max_exporters.log", "w")
|
||||||
|
from scripts import *
|
||||||
|
from buildsite import *
|
||||||
|
from tools import *
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, "--- Generate tagged max exporters")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
templateDir = os.getcwd().replace("\\", "/") + "/tagged_max_exporter_template"
|
||||||
|
mkPath(log, templateDir)
|
||||||
|
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
|
||||||
|
mkPath(log, scriptDir)
|
||||||
|
|
||||||
|
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||||
|
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||||
|
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
|
||||||
|
newline = newline.replace("%PreGenProcessName%", processName)
|
||||||
|
newline = newline.replace("%PreGenFileExtension%", fileExtension)
|
||||||
|
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
|
||||||
|
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
|
||||||
|
newline = newline.replace("%PreGenTagExportDirectoryVariable%", tagExportDirectoryVariable)
|
||||||
|
newline = newline.replace("%PreGenClientDirectoryVariable%", clientDirectoryVariable)
|
||||||
|
return newline
|
||||||
|
|
||||||
|
def generateTaggedMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||||
|
srcf = open(sourceFile, "r")
|
||||||
|
dstf = open(destFile, writeMode)
|
||||||
|
printLog(log, "WRITE " + destFile + " " + writeMode)
|
||||||
|
for line in srcf:
|
||||||
|
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
|
||||||
|
dstf.close()
|
||||||
|
srcf.close()
|
||||||
|
|
||||||
|
def generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||||
|
maxscriptDir = processDir + "/maxscript"
|
||||||
|
mkPath(log, maxscriptDir)
|
||||||
|
generateTaggedMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateTaggedMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
def generateTaggedMaxScript(processName, fileExtension):
|
||||||
|
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||||
|
processDir = ScriptDirectory + "/processes/" + processName
|
||||||
|
mkPath(log, processDir)
|
||||||
|
|
||||||
|
generateTaggedMaxScriptFile(processDir, processName, fileExtension, "_invalid", "_invalid", "_invalid", "_invalid", dateTimeStamp)
|
||||||
|
|
||||||
|
def generateTaggedMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable):
|
||||||
|
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||||
|
processDir = ScriptDirectory + "/processes/" + processName
|
||||||
|
mkPath(log, processDir)
|
||||||
|
|
||||||
|
if not os.path.isfile(processDir + "/0_setup.py"):
|
||||||
|
generateTaggedMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
generateTaggedMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
generateTaggedMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
if not os.path.isfile(processDir + "/2_build.py"):
|
||||||
|
generateTaggedMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
if not os.path.isfile(processDir + "/3_install.py"):
|
||||||
|
generateTaggedMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
generateTaggedMaxExporter("clodbank", "clod", "ClodSourceDirectories", "ClodExportDirectory", "ClodTagExportDirectory", "ClodClientDirectory")
|
||||||
|
|
||||||
|
generateTaggedMaxScript("ig", "ig")
|
||||||
|
|
||||||
|
generateTaggedMaxExporter("rbank", "cmb", "RBankCmbSourceDirectories", "RBankCmbExportDirectory", "RBankCmbTagExportDirectory", "PacsClientDirectory")
|
||||||
|
|
||||||
|
generateTaggedMaxExporter("veget", "veget", "VegetSourceDirectories", "VegetExportDirectory", "VegetTagExportDirectory", "VegetClientDirectory")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
log.close()
|
|
@ -0,0 +1,69 @@
|
||||||
|
|
||||||
|
|
||||||
|
NEL3D_APPDATA_EXPORT_NODE_ANIMATION = 1423062800
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".%PreGenFileExtension%")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select Bip01, not very smart
|
||||||
|
if $Bip01 != undefined then
|
||||||
|
(
|
||||||
|
select $Bip01
|
||||||
|
|
||||||
|
-- Always uncheck triangle pelvis
|
||||||
|
if (classof $Bip01) == Biped_Object then
|
||||||
|
(
|
||||||
|
$Bip01.controller.figureMode = true
|
||||||
|
$Bip01.controller.trianglepelvis = false
|
||||||
|
$Bip01.controller.figureMode = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- For each node
|
||||||
|
for node in objects do
|
||||||
|
(
|
||||||
|
exportNodeAnmation = getappdata node NEL3D_APPDATA_EXPORT_NODE_ANIMATION
|
||||||
|
if (exportNodeAnmation != undefined) then
|
||||||
|
(
|
||||||
|
if (exportNodeAnmation == "1") then
|
||||||
|
(
|
||||||
|
selectmore node
|
||||||
|
|
||||||
|
-- Is it a biped ?
|
||||||
|
if (classof node.controller) == Vertical_Horizontal_Turn then
|
||||||
|
(
|
||||||
|
-- Always uncheck triangle pelvis
|
||||||
|
node.controller.trianglepelvis = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if ((selection as array).count != 0) then
|
||||||
|
(
|
||||||
|
-- Export the animation
|
||||||
|
if (NelExportAnimation (selection as array) outputNelFile false) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting animation " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting animation: no node animated to export in file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,123 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- Some globals
|
||||||
|
|
||||||
|
NEL3D_APPDATA_DONOTEXPORT = 1423062565 -- do not export me : "undefined" = export me
|
||||||
|
-- "0" = export me
|
||||||
|
-- "1" = DONT export me
|
||||||
|
NEL3D_APPDATA_CHARACTER_LOD = 1423062618 -- "1": I am a character lod if "1". "0" or undefined: I am not.
|
||||||
|
|
||||||
|
|
||||||
|
-- Must export this node ?
|
||||||
|
fn isToBeExported node =
|
||||||
|
(
|
||||||
|
if ((classof node) == RklPatch) then
|
||||||
|
return false
|
||||||
|
|
||||||
|
if ((classof node) == nel_ps) then
|
||||||
|
return false
|
||||||
|
|
||||||
|
if ((classof node) == nel_pacs_cylinder) then
|
||||||
|
return false
|
||||||
|
|
||||||
|
if ((classof node) == nel_pacs_box) then
|
||||||
|
return false
|
||||||
|
|
||||||
|
doNotExport = getappdata node NEL3D_APPDATA_DONOTEXPORT
|
||||||
|
if (doNotExport != undefined) then
|
||||||
|
(
|
||||||
|
if (doNotExport == "1") then
|
||||||
|
return false
|
||||||
|
)
|
||||||
|
return true
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
-- is this node flagged as a LodCharacter ??
|
||||||
|
fn isLodCharacter node =
|
||||||
|
(
|
||||||
|
isCLod = getappdata node NEL3D_APPDATA_CHARACTER_LOD
|
||||||
|
if (isCLod == undefined) then
|
||||||
|
return false
|
||||||
|
if (isCLod == "1") then
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
)
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Unhide
|
||||||
|
max unhide all
|
||||||
|
|
||||||
|
-- unselect
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Exported object count
|
||||||
|
exported = 0
|
||||||
|
|
||||||
|
-- For each node
|
||||||
|
for node in geometry do
|
||||||
|
(
|
||||||
|
-- It is root ?
|
||||||
|
if (node.parent == undefined) then
|
||||||
|
(
|
||||||
|
-- Can be exported ?
|
||||||
|
if (isToBeExported node == true) then
|
||||||
|
(
|
||||||
|
-- Is a Lod character?
|
||||||
|
if ((isLodCharacter node) == true) then
|
||||||
|
(
|
||||||
|
-- Output directory
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (node.name) + ".clod")
|
||||||
|
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Export the shape
|
||||||
|
if (NelExportLodCharacter node outputNelFile false) == true then
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
exported = exported+1
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting .clod " + node.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting .clod " + node.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("SKIPPED " + outputNelFile)
|
||||||
|
exported = exported + 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Something exported
|
||||||
|
if (exported == 0) then
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror ("WARNING no .clod exported from the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
|
||||||
|
NEL3D_APPDATA_COLLISION = 1423062613
|
||||||
|
NEL3D_APPDATA_COLLISION_EXTERIOR = 1423062614
|
||||||
|
|
||||||
|
|
||||||
|
-- Must export this node ?
|
||||||
|
fn isToBeExported node =
|
||||||
|
(
|
||||||
|
doNotExport = getappdata node NEL3D_APPDATA_COLLISION
|
||||||
|
if (doNotExport != undefined) then
|
||||||
|
(
|
||||||
|
if (doNotExport == "1") then
|
||||||
|
return true
|
||||||
|
)
|
||||||
|
|
||||||
|
doNotExport = getappdata node NEL3D_APPDATA_COLLISION_EXTERIOR
|
||||||
|
if (doNotExport != undefined) then
|
||||||
|
(
|
||||||
|
if (doNotExport == "1") then
|
||||||
|
return true
|
||||||
|
)
|
||||||
|
|
||||||
|
return false
|
||||||
|
)
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelDir = "%OutputDirectory%"
|
||||||
|
|
||||||
|
-- Tag this file ?
|
||||||
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select all collision mesh
|
||||||
|
max select none
|
||||||
|
for m in geometry do
|
||||||
|
(
|
||||||
|
if (isToBeExported m) == true then
|
||||||
|
selectmore m
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Export the collision
|
||||||
|
if (NelExportCollision ($selection as array) outputNelDir) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting collision " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK collision in folder " + outputNelDir)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,172 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
|
||||||
|
|
||||||
|
-- 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)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + ig_array[ig] + ".ig")
|
||||||
|
|
||||||
|
-- Check date
|
||||||
|
if (NeLTestFileDate outputNelFile inputMaxFile) == 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 outputNelFile) == true then
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting ig " + ig_array[ig] + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting ig " + ig_array[ig] + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("SKIPPED " + outputNelFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("WARNING nothing exported from ig max file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".%PreGenFileExtension%")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select none
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Select all PACS primitives
|
||||||
|
for i in geometry do
|
||||||
|
(
|
||||||
|
if ((classof i) == nel_pacs_cylinder) or ((classof i) == nel_pacs_box) then
|
||||||
|
selectmore i
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Array of node
|
||||||
|
arrayNode = selection as array
|
||||||
|
|
||||||
|
-- Something to export ?
|
||||||
|
if (arrayNode.count != 0) then
|
||||||
|
(
|
||||||
|
-- Export the collision
|
||||||
|
if (NelExportPACSPrimitives arrayNode outputNelFile) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting PACS primitives in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK PACS primitives in file " + inputMaxFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("WARNING no PACS primitives in file " + inputMaxFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, ">>> List %PreGenFileExtension% <<<")
|
||||||
|
outDirPacsPrim = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||||
|
mkPath(log, outDirPacsPrim)
|
||||||
|
listPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% + "/landscape_col_prim_pacs_list.txt"
|
||||||
|
if os.path.isfile(listPath):
|
||||||
|
os.remove(listPath)
|
||||||
|
if WantLandscapeColPrimPacsList:
|
||||||
|
exportedPacsPrims = findFiles(log, outDirPacsPrim, "", ".%PreGenFileExtension%")
|
||||||
|
printLog(log, "WRITE " + listPath)
|
||||||
|
listFile = open(listPath, "w")
|
||||||
|
for exported in exportedPacsPrims:
|
||||||
|
listFile.write(exported + "\n")
|
||||||
|
listFile.close()
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".%PreGenFileExtension%")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select Bip01, not very smart
|
||||||
|
if $Bip01 != undefined then
|
||||||
|
(
|
||||||
|
-- Select Bip01
|
||||||
|
select $Bip01
|
||||||
|
|
||||||
|
if ($ != undefined) then
|
||||||
|
(
|
||||||
|
-- Set figure mode on
|
||||||
|
if ((classof $) == Biped_Object) then
|
||||||
|
(
|
||||||
|
$.controller.figureMode = true
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Export the skeleton template
|
||||||
|
if (NelExportSkeleton $ outputNelFile) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting skeleton " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting skeleton: no Bip01 node in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting skeleton: no Bip01 node in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, ">>> Export skel directly <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
|
||||||
|
for dir in SkelSourceDirectories:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
|
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".%PreGenFileExtension%")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select all the nodes
|
||||||
|
max select all
|
||||||
|
|
||||||
|
-- Export the skeleton template
|
||||||
|
if NelExportSkeletonWeight ($selection as array) outputNelFile == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting skeleton weight " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,113 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- Some globals
|
||||||
|
|
||||||
|
NEL3D_APPDATA_DONOTEXPORT = 1423062565 -- do not export me : "undefined" = export me
|
||||||
|
-- "0" = export me
|
||||||
|
-- "1" = DONT export me
|
||||||
|
|
||||||
|
NEL3D_APPDATA_VEGETABLE = 1423062580 -- "undefined" = not vegetable
|
||||||
|
-- "0" = not vegetable
|
||||||
|
-- "1" = vegetable
|
||||||
|
|
||||||
|
|
||||||
|
-- Must export this node ?
|
||||||
|
fn isToBeExported node =
|
||||||
|
(
|
||||||
|
if (classof node == nel_ps) then
|
||||||
|
return false
|
||||||
|
|
||||||
|
doNotExport = getappdata node NEL3D_APPDATA_DONOTEXPORT
|
||||||
|
if (doNotExport != undefined) then
|
||||||
|
(
|
||||||
|
if (doNotExport == "1") then
|
||||||
|
return false
|
||||||
|
)
|
||||||
|
|
||||||
|
vegetable = getappdata node NEL3D_APPDATA_VEGETABLE
|
||||||
|
if (vegetable != undefined) then
|
||||||
|
if (vegetable == "1") then
|
||||||
|
return true
|
||||||
|
|
||||||
|
-- Do not export
|
||||||
|
return false
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Unhide
|
||||||
|
max unhide all
|
||||||
|
|
||||||
|
-- unselect
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Exported object count
|
||||||
|
exported = 0
|
||||||
|
|
||||||
|
-- For each node
|
||||||
|
for node in geometry do
|
||||||
|
(
|
||||||
|
-- It is root ?
|
||||||
|
if (node.parent == undefined) then
|
||||||
|
(
|
||||||
|
-- Is not a skeleton ?
|
||||||
|
if (node.name != "Bip01") then
|
||||||
|
(
|
||||||
|
-- Can be exported ?
|
||||||
|
if (isToBeExported node == true) then
|
||||||
|
(
|
||||||
|
-- Output directory
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (node.name) + ".veget")
|
||||||
|
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Export the veget
|
||||||
|
if (NelExportVegetable node outputNelFile false) == true then
|
||||||
|
(
|
||||||
|
nlerror("OK "+outputNelFile)
|
||||||
|
exported = exported+1
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting veget " + node.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fata error exporting veget " + node.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("SKIPPED " + outputNelFile)
|
||||||
|
exported = exported + 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Something exported
|
||||||
|
if exported == 0 then
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("WARNING no veget exported from the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- Find id
|
||||||
|
Fn findID node =
|
||||||
|
(
|
||||||
|
local
|
||||||
|
|
||||||
|
-- Const
|
||||||
|
alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
|
NameTab = filterString node.name "_"
|
||||||
|
Z_ID = -1
|
||||||
|
alpha_letter1 = NameTab[2][1]
|
||||||
|
alpha_letter2 = NameTab[2][2]
|
||||||
|
alpha_letter1_value = findstring alphabet alpha_letter1
|
||||||
|
alpha_letter2_value = findstring alphabet alpha_letter2
|
||||||
|
|
||||||
|
-- Decompose theh name in an array array[1]=numeric string value array[2]=alpha string value
|
||||||
|
-- The index of the engine start at 0 but the script one at 1 so we sub 1 each time
|
||||||
|
alpha_sub_id = (((alpha_letter1_value as integer - 1) * 26 + (alpha_letter2_value as integer)))-1
|
||||||
|
num_sub_id = (NameTab[1] as integer)-1
|
||||||
|
|
||||||
|
-- Array of 256 per 256
|
||||||
|
---------------------------
|
||||||
|
-- 0 1 2 3 ... 255
|
||||||
|
-- 256 257 258 259 ... 511
|
||||||
|
-- 512 513 514 515 ... 767
|
||||||
|
-- ...
|
||||||
|
|
||||||
|
Z_ID = num_sub_id*256 + alpha_sub_id
|
||||||
|
return Z_ID
|
||||||
|
)
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".%PreGenFileExtension%")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select none
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Found it ?
|
||||||
|
find = false
|
||||||
|
|
||||||
|
-- For each object in the priject
|
||||||
|
for i in geometry do
|
||||||
|
(
|
||||||
|
-- Look for a NeL patch mesh
|
||||||
|
if (classof i) == RklPatch then
|
||||||
|
(
|
||||||
|
-- Error catching
|
||||||
|
try
|
||||||
|
(
|
||||||
|
if (ExportRykolZone i outputNelFile (findID i)) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting zone " + i.name + " in file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
find = true
|
||||||
|
exit
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting zone " + i.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Not found ?
|
||||||
|
if (find == false) then
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("WARNING no zone found in project " + inputMaxFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, ">>> Try to copy ligo zone if any <<<")
|
||||||
|
printLog(log, "********************************")
|
||||||
|
printLog(log, "******** TODO ********")
|
||||||
|
printLog(log, "********************************")
|
||||||
|
printLog(log, "")
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 0_setup.py
|
||||||
|
# \brief setup %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Setup %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
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 %PreGenSourceDirectoriesVariable%:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
|
|
||||||
|
# Setup export directories
|
||||||
|
printLog(log, ">>> Setup export directories <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||||
|
|
||||||
|
# Setup build directories
|
||||||
|
printLog(log, ">>> Setup build directories <<<")
|
||||||
|
|
||||||
|
# Setup client directories
|
||||||
|
printLog(log, ">>> Setup client directories <<<")
|
||||||
|
mkPath(log, ClientDataDirectory + "/" + %PreGenClientDirectoryVariable%)
|
||||||
|
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,92 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## %PreGenWarning%
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file 1_export.py
|
||||||
|
# \brief Export %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Export %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
# Find tools
|
||||||
|
# ...
|
||||||
|
|
||||||
|
# Export %PreGenProcessName% 3dsmax
|
||||||
|
if MaxAvailable:
|
||||||
|
# Find tools
|
||||||
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||||
|
for dir in %PreGenSourceDirectoriesVariable%:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%, ".%PreGenFileExtension%")):
|
||||||
|
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
|
||||||
|
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
|
||||||
|
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
|
||||||
|
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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .%PreGenFileExtension% files!")
|
||||||
|
os.remove(scriptDst)
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 2_build.py
|
||||||
|
# \brief Build %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Build %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,57 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 3_install.py
|
||||||
|
# \brief Install %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Install %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
printLog(log, ">>> Install %PreGenProcessName% <<<")
|
||||||
|
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||||
|
mkPath(log, exportPath)
|
||||||
|
clientPath = ClientDataDirectory + "/" + %PreGenClientDirectoryVariable%
|
||||||
|
mkPath(log, clientPath)
|
||||||
|
copyFilesExtNoSubdirIfNeeded(log, exportPath, clientPath, ".%PreGenFileExtension%")
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,74 @@
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- Sort files
|
||||||
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- No file ?
|
||||||
|
if files.count != 0 then
|
||||||
|
(
|
||||||
|
-- For each files
|
||||||
|
for i = 1 to files.count do
|
||||||
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".%PreGenFileExtension%")
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
-- Free memory and file handles
|
||||||
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
|
-- Reset 3dsmax
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
|
-- Open the max project
|
||||||
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
|
(
|
||||||
|
runNelMaxExport(inputMaxFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting '%PreGenFileExtension%': can't open the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("SKIPPED " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR error exporting '%PreGenFileExtension%' in files " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting '%PreGenFileExtension%' in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Bye
|
||||||
|
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
quitMAX #noPrompt
|
||||||
|
quitMAX() #noPrompt
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## %PreGenWarning%
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
|
-- Allocate 20 Me for the script
|
||||||
|
heapSize += 15000000
|
||||||
|
|
||||||
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 0_setup.py
|
||||||
|
# \brief setup %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Setup %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
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 %PreGenSourceDirectoriesVariable%:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
|
|
||||||
|
# Setup export directories
|
||||||
|
printLog(log, ">>> Setup export directories <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
|
||||||
|
|
||||||
|
# Setup build directories
|
||||||
|
printLog(log, ">>> Setup build directories <<<")
|
||||||
|
|
||||||
|
# Setup client directories
|
||||||
|
printLog(log, ">>> Setup client directories <<<")
|
||||||
|
mkPath(log, ClientDataDirectory + "/" + %PreGenClientDirectoryVariable%)
|
||||||
|
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,96 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## %PreGenWarning%
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file 1_export.py
|
||||||
|
# \brief Export %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Export %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
|
# Find tools
|
||||||
|
# ...
|
||||||
|
|
||||||
|
# Export %PreGenProcessName% 3dsmax
|
||||||
|
if MaxAvailable:
|
||||||
|
# Find tools
|
||||||
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
|
||||||
|
for dir in %PreGenSourceDirectoriesVariable%:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%, ".max.tag")):
|
||||||
|
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
|
||||||
|
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
|
||||||
|
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||||
|
tagDirectory = ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
newline = newline.replace("%TagDirectory%", tagDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .max files!")
|
||||||
|
os.remove(scriptDst)
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 2_build.py
|
||||||
|
# \brief Build %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Build %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,57 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# \file 3_install.py
|
||||||
|
# \brief Install %PreGenProcessName%
|
||||||
|
# \date %PreGenDateTimeStamp%
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Install %PreGenProcessName%
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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 %PreGenProcessName%")
|
||||||
|
printLog(log, "-------")
|
||||||
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
printLog(log, ">>> Install %PreGenProcessName% <<<")
|
||||||
|
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||||
|
mkPath(log, exportPath)
|
||||||
|
clientPath = ClientDataDirectory + "/" + %PreGenClientDirectoryVariable%
|
||||||
|
mkPath(log, clientPath)
|
||||||
|
copyFilesNoTreeIfNeeded(log, exportPath, clientPath)
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
# end of file
|
|
@ -0,0 +1,89 @@
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- Sort files
|
||||||
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- No file ?
|
||||||
|
if files.count != 0 then
|
||||||
|
(
|
||||||
|
-- For each files
|
||||||
|
for i = 1 to files.count do
|
||||||
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputTagFile = ("%TagDirectory%/" + (getFilenameFile inputMaxFile) + (getFilenameType inputMaxFile) + ".tag")
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputTagFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
-- Free memory and file handles
|
||||||
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
|
-- Reset 3dsmax
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
|
-- Open the max project
|
||||||
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
|
(
|
||||||
|
tagThisFile = runNelMaxExport(inputMaxFile)
|
||||||
|
|
||||||
|
-- Write a tag file
|
||||||
|
if tagThisFile == true then
|
||||||
|
(
|
||||||
|
tagFile = createFile outputTagFile
|
||||||
|
if tagFile == undefined then
|
||||||
|
(
|
||||||
|
nlerror("WARNING can't create tag file " + outputTagFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
print "mukyu" to: tagFile
|
||||||
|
close tagFile
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting '%PreGenFileExtension%': can't open the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("SKIPPED BY TAG " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR error exporting '%PreGenFileExtension%' in files " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting '%PreGenFileExtension%' in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Bye
|
||||||
|
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
quitMAX #noPrompt
|
||||||
|
quitMAX() #noPrompt
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## %PreGenWarning%
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
|
-- Allocate 20 Me for the script
|
||||||
|
heapSize += 15000000
|
||||||
|
|
||||||
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export anim
|
# \brief Export anim
|
||||||
# \date 2009-03-10 13:13GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export anim
|
# Export anim
|
||||||
|
@ -44,46 +48,51 @@ printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
# Find tools
|
# Find tools
|
||||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
# ...
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each anim directory
|
# Export anim 3dsmax
|
||||||
printLog(log, ">>> Export anim 3dsmax <<<")
|
if MaxAvailable:
|
||||||
mkPath(log, ExportBuildDirectory + "/" + AnimExportDirectory)
|
# Find tools
|
||||||
for dir in AnimSourceDirectories:
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
printLog(log, "")
|
||||||
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, AnimSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + AnimExportDirectory, ".anim")):
|
|
||||||
scriptSrc = "maxscript/anim_export.ms"
|
printLog(log, ">>> Export anim 3dsmax <<<")
|
||||||
scriptDst = MaxUserDirectory + "/scripts/anim_export.ms"
|
mkPath(log, ExportBuildDirectory + "/" + AnimExportDirectory)
|
||||||
logFile = ScriptDirectory + "/processes/anim/log.log"
|
for dir in AnimSourceDirectories:
|
||||||
outDirAnim = ExportBuildDirectory + "/" + AnimExportDirectory
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
animSourceDir = DatabaseDirectory + "/" + dir
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + AnimExportDirectory, ".anim")):
|
||||||
tagList = findFiles(log, outDirAnim, "", ".anim")
|
scriptSrc = "maxscript/anim_export.ms"
|
||||||
tagLen = len(tagList)
|
scriptDst = MaxUserDirectory + "/scripts/anim_export.ms"
|
||||||
if os.path.isfile(scriptDst):
|
outputLogfile = ScriptDirectory + "/processes/anim/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + AnimExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".anim")
|
||||||
|
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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "anim_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".anim")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .anim files!")
|
||||||
os.remove(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("anim_source_directory", animSourceDir)
|
|
||||||
newline = newline.replace("output_directory", outDirAnim)
|
|
||||||
sDst.write(newline)
|
|
||||||
sSrc.close()
|
|
||||||
sDst.close()
|
|
||||||
while tagDiff > 0:
|
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
|
||||||
subprocess.call([ Max, "-U", "MAXScript", "anim_export.ms", "-q", "-mi", "-vn" ])
|
|
||||||
tagList = findFiles(log, outDirAnim, "", ".anim")
|
|
||||||
newTagLen = len(tagList)
|
|
||||||
tagDiff = newTagLen - tagLen
|
|
||||||
tagLen = newTagLen
|
|
||||||
printLog(log, "Exported " + str(tagDiff) + " .anim files!")
|
|
||||||
os.remove(scriptDst)
|
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
NEL3D_APPDATA_EXPORT_NODE_ANIMATION = 1423062800
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
-- Allocate 20 Me for the script
|
-- Allocate 20 Me for the script
|
||||||
heapSize += 15000000
|
heapSize += 15000000
|
||||||
|
|
||||||
nlErrorFilename = "output_logfile"
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
nlErrorStream = openFile nlErrorFilename mode:"a"
|
nlErrorStream = openFile nlErrorFilename mode:"a"
|
||||||
if nlErrorStream == undefined then
|
if nlErrorStream == undefined then
|
||||||
nlErrorStream = createFile nlErrorFilename
|
nlErrorStream = createFile nlErrorFilename
|
||||||
|
@ -57,15 +61,86 @@ fn nlerror message =
|
||||||
print message
|
print message
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NEL3D_APPDATA_EXPORT_NODE_ANIMATION = 1423062800
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".anim")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select Bip01, not very smart
|
||||||
|
if $Bip01 != undefined then
|
||||||
|
(
|
||||||
|
select $Bip01
|
||||||
|
|
||||||
|
-- Always uncheck triangle pelvis
|
||||||
|
if (classof $Bip01) == Biped_Object then
|
||||||
|
(
|
||||||
|
$Bip01.controller.figureMode = true
|
||||||
|
$Bip01.controller.trianglepelvis = false
|
||||||
|
$Bip01.controller.figureMode = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- For each node
|
||||||
|
for node in objects do
|
||||||
|
(
|
||||||
|
exportNodeAnmation = getappdata node NEL3D_APPDATA_EXPORT_NODE_ANIMATION
|
||||||
|
if (exportNodeAnmation != undefined) then
|
||||||
|
(
|
||||||
|
if (exportNodeAnmation == "1") then
|
||||||
|
(
|
||||||
|
selectmore node
|
||||||
|
|
||||||
|
-- Is it a biped ?
|
||||||
|
if (classof node.controller) == Vertical_Horizontal_Turn then
|
||||||
|
(
|
||||||
|
-- Always uncheck triangle pelvis
|
||||||
|
node.controller.trianglepelvis = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if ((selection as array).count != 0) then
|
||||||
|
(
|
||||||
|
-- Export the animation
|
||||||
|
if (NelExportAnimation (selection as array) outputNelFile false) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting animation " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting animation: no node animated to export in file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Get files in the anim_source_directory
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
files = getFiles "anim_source_directory/*.max"
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
gc ()
|
gc()
|
||||||
|
|
||||||
-- Sort files
|
-- Sort files
|
||||||
sort files
|
sort files
|
||||||
gc ()
|
gc()
|
||||||
|
|
||||||
-- No file ?
|
-- No file ?
|
||||||
if files.count != 0 then
|
if files.count != 0 then
|
||||||
|
@ -73,113 +148,59 @@ try
|
||||||
-- For each files
|
-- For each files
|
||||||
for i = 1 to files.count do
|
for i = 1 to files.count do
|
||||||
(
|
(
|
||||||
nlerror ("Scanning file "+files[i]+" ...")
|
inputMaxFile = files[i]
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".anim")
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Output file
|
|
||||||
output = ("output_directory/"+(getFilenameFile files[i])+".anim")
|
|
||||||
|
|
||||||
-- Compare file date
|
-- Compare file date
|
||||||
if (NeLTestFileDate output files[i]) == true then
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
(
|
(
|
||||||
-- Free memory and file handles
|
-- Free memory and file handles
|
||||||
gc ()
|
gc()
|
||||||
heapfree
|
heapfree
|
||||||
|
|
||||||
-- Reset 3dsmax
|
-- Reset 3dsmax
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
-- Open the max project
|
-- Open the max project
|
||||||
if (loadMaxFile files[i] quiet:true) == true then
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
(
|
(
|
||||||
-- Unhide category
|
runNelMaxExport(inputMaxFile)
|
||||||
unhidecategory()
|
|
||||||
|
|
||||||
-- Select Bip01, not very smart
|
|
||||||
if $Bip01 != undefined then
|
|
||||||
(
|
|
||||||
select $Bip01
|
|
||||||
|
|
||||||
-- Always uncheck triangle pelvis
|
|
||||||
if (classof $Bip01) == Biped_Object then
|
|
||||||
(
|
|
||||||
$Bip01.controller.figureMode = true
|
|
||||||
$Bip01.controller.trianglepelvis = false
|
|
||||||
$Bip01.controller.figureMode = false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
-- For each node
|
|
||||||
for node in objects do
|
|
||||||
(
|
|
||||||
exportNodeAnmation = getappdata node NEL3D_APPDATA_EXPORT_NODE_ANIMATION
|
|
||||||
if (exportNodeAnmation != undefined) then
|
|
||||||
(
|
|
||||||
if (exportNodeAnmation == "1") then
|
|
||||||
(
|
|
||||||
selectmore node
|
|
||||||
|
|
||||||
-- Is it a biped ?
|
|
||||||
if (classof node.controller) == Vertical_Horizontal_Turn then
|
|
||||||
(
|
|
||||||
-- Always uncheck triangle pelvis
|
|
||||||
node.controller.trianglepelvis = false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if ((selection as array).count != 0) then
|
|
||||||
(
|
|
||||||
-- Export the animation
|
|
||||||
if (NelExportAnimation (selection as array) output false) == false then
|
|
||||||
(
|
|
||||||
nlerror ("ERROR exporting animation "+files[i])
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
nlerror ("OK "+output)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR exporting animation: no node animated to export in file "+files[i])
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR exporting animation: can't open the file "+files[i])
|
nlerror("ERROR exporting 'anim': can't open the file " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("SKIPPED "+files[i])
|
nlerror("SKIPPED " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR error exporting animation in files " + files[i])
|
nlerror("ERROR error exporting 'anim' in files " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("WARNING no animation file in folder anim_source_directory")
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR fatal error exporting animation in folder anim_source_directory")
|
nlerror("ERROR fatal error exporting 'anim' in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Bye
|
-- Bye
|
||||||
|
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
quitMAX #noPrompt
|
quitMAX #noPrompt
|
||||||
quitMAX () #noPrompt
|
quitMAX() #noPrompt
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export clodbank
|
# \brief Export clodbank
|
||||||
# \date 2009-03-10 13:13GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export clodbank
|
# Export clodbank
|
||||||
|
@ -43,50 +47,56 @@ printLog(log, "-------")
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
# Find tools
|
# Find tools
|
||||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
# ...
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each clodbank directory
|
# Export clodbank 3dsmax
|
||||||
printLog(log, ">>> Export clodbank 3dsmax <<<")
|
if MaxAvailable:
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
|
# Find tools
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory)
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
for dir in ClodSourceDirectories:
|
printLog(log, "")
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
|
||||||
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, ClodSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + ClodTagExportDirectory, ".tag")):
|
printLog(log, ">>> Export clodbank 3dsmax <<<")
|
||||||
scriptSrc = "maxscript/clod_export.ms"
|
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
|
||||||
scriptDst = MaxUserDirectory + "/scripts/clod_export.ms"
|
mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory)
|
||||||
logFile = ScriptDirectory + "/processes/clodbank/log.log"
|
for dir in ClodSourceDirectories:
|
||||||
outDirClod = ExportBuildDirectory + "/" + ClodExportDirectory
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
outDirTag = ExportBuildDirectory + "/" + ClodTagExportDirectory
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + ClodTagExportDirectory, ".max.tag")):
|
||||||
maxSourceDir = DatabaseDirectory + "/" + dir
|
scriptSrc = "maxscript/clod_export.ms"
|
||||||
tagList = findFiles(log, outDirTag, "", ".tag")
|
scriptDst = MaxUserDirectory + "/scripts/clod_export.ms"
|
||||||
tagLen = len(tagList)
|
outputLogfile = ScriptDirectory + "/processes/clodbank/log.log"
|
||||||
if os.path.isfile(scriptDst):
|
outputDirectory = ExportBuildDirectory + "/" + ClodExportDirectory
|
||||||
|
tagDirectory = ExportBuildDirectory + "/" + ClodTagExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
newline = newline.replace("%TagDirectory%", tagDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "clod_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .max files!")
|
||||||
os.remove(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("shape_source_directory", maxSourceDir)
|
|
||||||
newline = newline.replace("output_directory_clod", outDirClod)
|
|
||||||
newline = newline.replace("output_directory_tag", outDirTag)
|
|
||||||
sDst.write(newline)
|
|
||||||
sSrc.close()
|
|
||||||
sDst.close()
|
|
||||||
while tagDiff > 0:
|
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
|
||||||
subprocess.call([ Max, "-U", "MAXScript", "clod_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)
|
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
-- Some globals
|
|
||||||
|
|
||||||
NEL3D_APPDATA_DONOTEXPORT = 1423062565 -- do not export me : "undefined" = export me
|
|
||||||
-- "0" = export me
|
-- #################################################################
|
||||||
-- "1" = DONT export me
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
NEL3D_APPDATA_CHARACTER_LOD = 1423062618 -- "1": I am a character lod if "1". "0" or undefined: I am not.
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
-- Allocate 20 Me for the script
|
-- Allocate 20 Me for the script
|
||||||
heapSize += 15000000
|
heapSize += 15000000
|
||||||
|
|
||||||
nlErrorFilename = "output_logfile"
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
nlErrorStream = openFile nlErrorFilename mode:"a"
|
nlErrorStream = openFile nlErrorFilename mode:"a"
|
||||||
if nlErrorStream == undefined then
|
if nlErrorStream == undefined then
|
||||||
nlErrorStream = createFile nlErrorFilename
|
nlErrorStream = createFile nlErrorFilename
|
||||||
|
@ -62,6 +61,16 @@ fn nlerror message =
|
||||||
print message
|
print message
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Some globals
|
||||||
|
|
||||||
|
NEL3D_APPDATA_DONOTEXPORT = 1423062565 -- do not export me : "undefined" = export me
|
||||||
|
-- "0" = export me
|
||||||
|
-- "1" = DONT export me
|
||||||
|
NEL3D_APPDATA_CHARACTER_LOD = 1423062618 -- "1": I am a character lod if "1". "0" or undefined: I am not.
|
||||||
|
|
||||||
|
|
||||||
-- Must export this node ?
|
-- Must export this node ?
|
||||||
fn isToBeExported node =
|
fn isToBeExported node =
|
||||||
(
|
(
|
||||||
|
@ -86,6 +95,7 @@ fn isToBeExported node =
|
||||||
return true
|
return true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
-- is this node flagged as a LodCharacter ??
|
-- is this node flagged as a LodCharacter ??
|
||||||
fn isLodCharacter node =
|
fn isLodCharacter node =
|
||||||
(
|
(
|
||||||
|
@ -97,173 +107,169 @@ fn isLodCharacter node =
|
||||||
return false
|
return false
|
||||||
)
|
)
|
||||||
|
|
||||||
fn goClodExport =
|
fn runNelMaxExport inputMaxFile =
|
||||||
(
|
(
|
||||||
try
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Unhide
|
||||||
|
max unhide all
|
||||||
|
|
||||||
|
-- unselect
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Exported object count
|
||||||
|
exported = 0
|
||||||
|
|
||||||
|
-- For each node
|
||||||
|
for node in geometry do
|
||||||
(
|
(
|
||||||
-- Get files in the shape_source_directory
|
-- It is root ?
|
||||||
files = getFiles "shape_source_directory/*.max"
|
if (node.parent == undefined) then
|
||||||
|
|
||||||
-- Sort files
|
|
||||||
sort files
|
|
||||||
|
|
||||||
-- No file ?
|
|
||||||
if files.count != 0 then
|
|
||||||
(
|
(
|
||||||
-- For each files
|
-- Can be exported ?
|
||||||
for i = 1 to files.count do
|
if (isToBeExported node == true) then
|
||||||
(
|
(
|
||||||
try
|
-- Is a Lod character?
|
||||||
|
if ((isLodCharacter node) == true) then
|
||||||
(
|
(
|
||||||
-- Ok ?
|
-- Output directory
|
||||||
ok = false
|
outputNelFile = ("%OutputDirectory%/" + (node.name) + ".clod")
|
||||||
|
|
||||||
-- Free memory and file handles
|
-- Compare file date
|
||||||
gc ()
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
|
|
||||||
-- 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
|
try
|
||||||
nlerror ("Scanning file "+files[i]+" ...")
|
|
||||||
if (loadMaxFile files[i] quiet:true) == true then
|
|
||||||
(
|
(
|
||||||
-- Unhide category
|
-- Export the shape
|
||||||
unhidecategory()
|
if (NelExportLodCharacter node outputNelFile false) == true then
|
||||||
|
|
||||||
tagThisFile = true
|
|
||||||
|
|
||||||
-- Unhide
|
|
||||||
max unhide all
|
|
||||||
|
|
||||||
-- unselect
|
|
||||||
max select none
|
|
||||||
|
|
||||||
-- Exported object count
|
|
||||||
exported = 0
|
|
||||||
|
|
||||||
-- For each node
|
|
||||||
for node in geometry do
|
|
||||||
(
|
(
|
||||||
-- It is root ?
|
nlerror("OK " + outputNelFile)
|
||||||
if (node.parent == undefined) then
|
exported = exported+1
|
||||||
(
|
|
||||||
-- Can be exported ?
|
|
||||||
if (isToBeExported node == true) then
|
|
||||||
(
|
|
||||||
-- Is a Lod character?
|
|
||||||
if ((isLodCharacter node) == true) then
|
|
||||||
(
|
|
||||||
-- Output directory
|
|
||||||
output = ("output_directory_clod/"+(node.name)+".clod")
|
|
||||||
|
|
||||||
-- Compare file date
|
|
||||||
if (NeLTestFileDate output files[i]) == true then
|
|
||||||
(
|
|
||||||
try
|
|
||||||
(
|
|
||||||
-- Export the shape
|
|
||||||
if (NelExportLodCharacter node output false) == true then
|
|
||||||
(
|
|
||||||
nlerror ("OK "+output)
|
|
||||||
exported = exported+1
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR exporting .clod "+node.name+" in file "+files[i])
|
|
||||||
tagThisFile = false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
catch
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR fatal error exporting .clod "+node.name+" in file "+files[i])
|
|
||||||
tagThisFile = false
|
|
||||||
return 0
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("SKIPPED "+output)
|
|
||||||
exported = exported+1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
else
|
||||||
-- Something exported
|
|
||||||
if (exported == 0) then
|
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("WARNING no .clod exported from the file "+files[i])
|
nlerror("ERROR exporting .clod " + node.name + " in file " + inputMaxFile)
|
||||||
)
|
tagThisFile = false
|
||||||
|
|
||||||
-- 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
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR exporting .clod: can't open the file "+files[i])
|
nlerror("ERROR fatal error exporting .clod " + node.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("SKIPPED BY TAG "+files[i])
|
nlerror("SKIPPED " + outputNelFile)
|
||||||
|
exported = exported + 1
|
||||||
)
|
)
|
||||||
|
|
||||||
gc ()
|
|
||||||
|
|
||||||
-- Reset 3dsmax
|
|
||||||
resetMAXFile #noprompt
|
|
||||||
)
|
|
||||||
catch
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR fatal error exporting .clod in file " + files[i])
|
|
||||||
-- break
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
|
||||||
(
|
|
||||||
nlerror ("WARNING no max file in folder shape_source_directory")
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
catch
|
|
||||||
|
-- Something exported
|
||||||
|
if (exported == 0) then
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR fatal error exporting .clod in folder shape_source_directory")
|
nlerror ("WARNING no .clod exported from the file " + inputMaxFile)
|
||||||
return 0
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
)
|
)
|
||||||
|
|
||||||
goClodExport()
|
|
||||||
|
|
||||||
nlerror ("BYE")
|
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- Sort files
|
||||||
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- No file ?
|
||||||
|
if files.count != 0 then
|
||||||
|
(
|
||||||
|
-- For each files
|
||||||
|
for i = 1 to files.count do
|
||||||
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputTagFile = ("%TagDirectory%/" + (getFilenameFile inputMaxFile) + (getFilenameType inputMaxFile) + ".tag")
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputTagFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
-- Free memory and file handles
|
||||||
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
|
-- Reset 3dsmax
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
|
-- Open the max project
|
||||||
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
|
(
|
||||||
|
tagThisFile = runNelMaxExport(inputMaxFile)
|
||||||
|
|
||||||
|
-- Write a tag file
|
||||||
|
if tagThisFile == true then
|
||||||
|
(
|
||||||
|
tagFile = createFile outputTagFile
|
||||||
|
if tagFile == undefined then
|
||||||
|
(
|
||||||
|
nlerror("WARNING can't create tag file " + outputTagFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
print "mukyu" to: tagFile
|
||||||
|
close tagFile
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting 'clod': can't open the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("SKIPPED BY TAG " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR error exporting 'clod' in files " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting 'clod' in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Bye
|
||||||
|
|
||||||
|
resetMAXFile #noprompt
|
||||||
quitMAX #noPrompt
|
quitMAX #noPrompt
|
||||||
quitMAX () #noPrompt
|
quitMAX() #noPrompt
|
||||||
|
|
||||||
|
|
|
@ -46,15 +46,15 @@ printLog(log, "")
|
||||||
Max = "" #find later
|
Max = "" #find later
|
||||||
|
|
||||||
|
|
||||||
def igExport(all_source_base, all_source_dir, sourceDir, targetDir):
|
def igExport(sourceDir, targetDir):
|
||||||
scriptSrc = "maxscript/ig_export.ms"
|
scriptSrc = "maxscript/ig_export.ms"
|
||||||
scriptDst = MaxUserDirectory + "/scripts/ig_export.ms"
|
scriptDst = MaxUserDirectory + "/scripts/ig_export.ms"
|
||||||
logFile = ScriptDirectory + "/processes/ig/log.log"
|
outputLogfile = ScriptDirectory + "/processes/ig/log.log"
|
||||||
outDirTag = ExportBuildDirectory + "/" + IgStaticTagExportDirectory
|
tagDirectory = ExportBuildDirectory + "/" + IgStaticTagExportDirectory
|
||||||
outDirIg = ExportBuildDirectory + "/" + targetDir
|
outputDirectory = ExportBuildDirectory + "/" + targetDir
|
||||||
igSourceDir = DatabaseDirectory + "/" + sourceDir
|
maxSourceDir = DatabaseDirectory + "/" + sourceDir
|
||||||
if (needUpdateDirNoSubdirLogExtMultidir(log, all_source_base, all_source_dir, igSourceDir, ".max", outDirTag, ".max.tag")):
|
if (needUpdateDirByTagLog(log, maxSourceDir, ".max", tagDirectory, ".max.tag")):
|
||||||
tagList = findFiles(log, outDirTag, "", ".tag")
|
tagList = findFiles(log, tagDirectory, "", ".tag")
|
||||||
tagLen = len(tagList)
|
tagLen = len(tagList)
|
||||||
if os.path.isfile(scriptDst):
|
if os.path.isfile(scriptDst):
|
||||||
os.remove(scriptDst)
|
os.remove(scriptDst)
|
||||||
|
@ -62,17 +62,17 @@ def igExport(all_source_base, all_source_dir, sourceDir, targetDir):
|
||||||
sSrc = open(scriptSrc, "r")
|
sSrc = open(scriptSrc, "r")
|
||||||
sDst = open(scriptDst, "w")
|
sDst = open(scriptDst, "w")
|
||||||
for line in sSrc:
|
for line in sSrc:
|
||||||
newline = line.replace("output_logfile", logFile)
|
newline = line.replace("%OutputLogfile%", outputLogfile)
|
||||||
newline = newline.replace("ig_source_directory", igSourceDir)
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
newline = newline.replace("output_directory_tag", outDirTag)
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
newline = newline.replace("output_directory_ig", outDirIg)
|
newline = newline.replace("%TagDirectory%", tagDirectory)
|
||||||
sDst.write(newline)
|
sDst.write(newline)
|
||||||
sSrc.close()
|
sSrc.close()
|
||||||
sDst.close()
|
sDst.close()
|
||||||
while tagDiff > 0:
|
while tagDiff > 0:
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
subprocess.call([ Max, "-U", "MAXScript", "ig_export.ms", "-q", "-mi", "-vn" ])
|
subprocess.call([ Max, "-U", "MAXScript", "ig_export.ms", "-q", "-mi", "-vn" ])
|
||||||
tagList = findFiles(log, outDirTag, "", ".tag")
|
tagList = findFiles(log, tagDirectory, "", ".tag")
|
||||||
newTagLen = len(tagList)
|
newTagLen = len(tagList)
|
||||||
tagDiff = newTagLen - tagLen
|
tagDiff = newTagLen - tagLen
|
||||||
tagLen = newTagLen
|
tagLen = newTagLen
|
||||||
|
@ -94,14 +94,14 @@ if MaxAvailable:
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgStaticLandExportDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + IgStaticLandExportDirectory)
|
||||||
for dir in IgLandSourceDirectories:
|
for dir in IgLandSourceDirectories:
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
igExport(DatabaseDirectory, IgLandSourceDirectories, dir, IgStaticLandExportDirectory)
|
igExport(dir, IgStaticLandExportDirectory)
|
||||||
|
|
||||||
# Export ig other 3dsmax
|
# Export ig other 3dsmax
|
||||||
printLog(log, ">>> Export ig other 3dsmax <<<")
|
printLog(log, ">>> Export ig other 3dsmax <<<")
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory)
|
||||||
for dir in IgOtherSourceDirectories:
|
for dir in IgOtherSourceDirectories:
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
igExport(DatabaseDirectory, IgOtherSourceDirectories, dir, IgStaticOtherExportDirectory)
|
igExport(dir, IgStaticOtherExportDirectory)
|
||||||
|
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
|
@ -1,34 +1,14 @@
|
||||||
-- 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
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
-- "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
|
-- Allocate 20 Me for the script
|
||||||
heapSize += 15000000
|
heapSize += 15000000
|
||||||
|
|
||||||
nlErrorFilename = "output_logfile"
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
nlErrorStream = openFile nlErrorFilename mode:"a"
|
nlErrorStream = openFile nlErrorFilename mode:"a"
|
||||||
if nlErrorStream == undefined then
|
if nlErrorStream == undefined then
|
||||||
nlErrorStream = createFile nlErrorFilename
|
nlErrorStream = createFile nlErrorFilename
|
||||||
|
@ -81,6 +61,36 @@ fn nlerror message =
|
||||||
print message
|
print message
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
|
||||||
|
|
||||||
-- This node is n accelerator ?
|
-- This node is n accelerator ?
|
||||||
fn isAccelerator node =
|
fn isAccelerator node =
|
||||||
(
|
(
|
||||||
|
@ -101,13 +111,139 @@ fn getIg node =
|
||||||
return (getappdata node NEL3D_APPDATA_IGNAME)
|
return (getappdata node NEL3D_APPDATA_IGNAME)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + ig_array[ig] + ".ig")
|
||||||
|
|
||||||
|
-- Check date
|
||||||
|
if (NeLTestFileDate outputNelFile inputMaxFile) == 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 outputNelFile) == true then
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting ig " + ig_array[ig] + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting ig " + ig_array[ig] + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("SKIPPED " + outputNelFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("WARNING nothing exported from ig max file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Get files in the ig_source_directory
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
files = getFiles "ig_source_directory/*.max"
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
-- Sort files
|
-- Sort files
|
||||||
sort files
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
-- No file ?
|
-- No file ?
|
||||||
if files.count != 0 then
|
if files.count != 0 then
|
||||||
|
@ -115,190 +251,74 @@ try
|
||||||
-- For each files
|
-- For each files
|
||||||
for i = 1 to files.count do
|
for i = 1 to files.count do
|
||||||
(
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputTagFile = ("%TagDirectory%/" + (getFilenameFile inputMaxFile) + (getFilenameType inputMaxFile) + ".tag")
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Free memory and file handles
|
-- Compare file date
|
||||||
gc ()
|
if (NeLTestFileDate outputTagFile inputMaxFile) == true then
|
||||||
|
|
||||||
-- 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
|
|
||||||
(
|
(
|
||||||
|
-- Free memory and file handles
|
||||||
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
|
-- Reset 3dsmax
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
-- Open the max project
|
-- Open the max project
|
||||||
nlerror ("Scanning file "+files[i]+" ...")
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
if (mergeMaxFile files[i] quiet:true) == true then
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
(
|
(
|
||||||
-- Unhide category
|
tagThisFile = runNelMaxExport(inputMaxFile)
|
||||||
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
|
-- Write a tag file
|
||||||
if tagThisFile == true then
|
if tagThisFile == true then
|
||||||
(
|
(
|
||||||
tagFile = createFile tag
|
tagFile = createFile outputTagFile
|
||||||
if tagFile == undefined then
|
if tagFile == undefined then
|
||||||
(
|
(
|
||||||
nlerror ("WARNING can't create tag file "+tag)
|
nlerror("WARNING can't create tag file " + outputTagFile)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
print "toto" to: tagFile
|
print "mukyu" to: tagFile
|
||||||
close tagFile
|
close tagFile
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
resetMAXFile #noprompt
|
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR exporting ig: can't open the file "+files[i])
|
nlerror("ERROR exporting 'ig': can't open the file " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
nlerror("SKIPPED BY TAG " + inputMaxFile)
|
||||||
nlerror ("SKIPPED BY TAG "+files[i])
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR error exporting ig in files " + files[i])
|
nlerror("ERROR error exporting 'ig' in files " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("WARNING no max file in folder ig_source_directory")
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR fatal error exporting ig in folder ig_source_directory")
|
nlerror("ERROR fatal error exporting 'ig' in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Bye
|
-- Bye
|
||||||
|
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
quitMAX #noPrompt
|
quitMAX #noPrompt
|
||||||
quitMAX () #noPrompt
|
quitMAX() #noPrompt
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ printLog(log, "")
|
||||||
printLog(log, ">>> Setup source directories <<<")
|
printLog(log, ">>> Setup source directories <<<")
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory)
|
mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory)
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory)
|
mkPath(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory)
|
||||||
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory)
|
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory[0])
|
||||||
|
|
||||||
# Setup export directories
|
# Setup export directories
|
||||||
printLog(log, ">>> Setup export directories <<<")
|
printLog(log, ">>> Setup export directories <<<")
|
||||||
|
|
|
@ -60,15 +60,15 @@ if LigoExportLand == "" or LigoExportOnePass == 1:
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoDatabaseZoneExportDirectory)
|
mkPath(log, DatabaseDirectory + "/" + LigoDatabaseZoneExportDirectory)
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoDatabaseZoneLigoExportDirectory)
|
mkPath(log, DatabaseDirectory + "/" + LigoDatabaseZoneLigoExportDirectory)
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoDatabaseCmbExportDirectory)
|
mkPath(log, DatabaseDirectory + "/" + LigoDatabaseCmbExportDirectory)
|
||||||
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory)
|
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory[0])
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoTagExportDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + LigoTagExportDirectory)
|
||||||
if (needUpdateDirNoSubdirLogExt(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory, ".max", ExportBuildDirectory + "/" + LigoTagExportDirectory, ".max.tag")):
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory, ".max", ExportBuildDirectory + "/" + LigoTagExportDirectory, ".max.tag")):
|
||||||
printLog(log, "WRITE " + ligoIniPath)
|
printLog(log, "WRITE " + ligoIniPath)
|
||||||
ligoIni = open(ligoIniPath, "w")
|
ligoIni = open(ligoIniPath, "w")
|
||||||
ligoIni.write("[LigoConfig]\n")
|
ligoIni.write("[LigoConfig]\n")
|
||||||
ligoIni.write("LigoPath=" + DatabaseDirectory + "/" + LigoMaxSourceDirectory + "/\n")
|
ligoIni.write("LigoPath=" + DatabaseDirectory + "/" + LigoMaxSourceDirectory + "/\n")
|
||||||
ligoIni.write("LigoExportPath=" + DatabaseDirectory + "/" + LigoDatabaseExportDirectory + "/\n")
|
ligoIni.write("LigoExportPath=" + DatabaseDirectory + "/" + LigoDatabaseExportDirectory + "/\n")
|
||||||
ligoIni.write("LigoOldZonePath=" + DatabaseDirectory + "/" + ZoneSourceDirectory + "/\n")
|
ligoIni.write("LigoOldZonePath=" + DatabaseDirectory + "/" + ZoneSourceDirectory[0] + "/\n")
|
||||||
ligoIni.close()
|
ligoIni.close()
|
||||||
|
|
||||||
outDirTag = ExportBuildDirectory + "/" + LigoTagExportDirectory
|
outDirTag = ExportBuildDirectory + "/" + LigoTagExportDirectory
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export pacs_prim
|
# \brief Export pacs_prim
|
||||||
# \date 2010-08-31 16:50GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export pacs_prim
|
# Export pacs_prim
|
||||||
|
@ -44,43 +48,49 @@ printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
# Find tools
|
# Find tools
|
||||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
# ...
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each pacs_prim directory
|
# Export pacs_prim 3dsmax
|
||||||
printLog(log, ">>> Export pacs_prim 3dsmax <<<")
|
if MaxAvailable:
|
||||||
mkPath(log, ExportBuildDirectory + "/" + PacsPrimExportDirectory)
|
# Find tools
|
||||||
for dir in PacsPrimSourceDirectories:
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
printLog(log, "")
|
||||||
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, PacsPrimSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + PacsPrimExportDirectory, ".pacs_prim")):
|
|
||||||
scriptSrc = "maxscript/pacs_prim_export.ms"
|
printLog(log, ">>> Export pacs_prim 3dsmax <<<")
|
||||||
scriptDst = MaxUserDirectory + "/scripts/pacs_prim_export.ms"
|
mkPath(log, ExportBuildDirectory + "/" + PacsPrimExportDirectory)
|
||||||
logFile = ScriptDirectory + "/processes/pacs_prim/log.log"
|
for dir in PacsPrimSourceDirectories:
|
||||||
outDirPacsPrim = ExportBuildDirectory + "/" + PacsPrimExportDirectory
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
pacs_primSourceDir = DatabaseDirectory + "/" + dir
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + PacsPrimExportDirectory, ".pacs_prim")):
|
||||||
tagList = findFiles(log, outDirPacsPrim, "", ".pacs_prim")
|
scriptSrc = "maxscript/pacs_prim_export.ms"
|
||||||
tagLen = len(tagList)
|
scriptDst = MaxUserDirectory + "/scripts/pacs_prim_export.ms"
|
||||||
if os.path.isfile(scriptDst):
|
outputLogfile = ScriptDirectory + "/processes/pacs_prim/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + PacsPrimExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".pacs_prim")
|
||||||
|
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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "pacs_prim_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".pacs_prim")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .pacs_prim files!")
|
||||||
os.remove(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("pacs_prim_source_directory", pacs_primSourceDir)
|
|
||||||
newline = newline.replace("output_directory", outDirPacsPrim)
|
|
||||||
sDst.write(newline)
|
|
||||||
sSrc.close()
|
|
||||||
sDst.close()
|
|
||||||
while tagDiff > 0:
|
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
|
||||||
subprocess.call([ Max, "-U", "MAXScript", "pacs_prim_export.ms", "-q", "-mi", "-vn" ])
|
|
||||||
tagList = findFiles(log, outDirPacsPrim, "", ".pacs_prim")
|
|
||||||
newTagLen = len(tagList)
|
|
||||||
tagDiff = newTagLen - tagLen
|
|
||||||
tagLen = newTagLen
|
|
||||||
printLog(log, "Exported " + str(tagDiff) + " .pacs_prim files!")
|
|
||||||
os.remove(scriptDst)
|
|
||||||
|
|
||||||
printLog(log, ">>> List pacs_prim <<<")
|
printLog(log, ">>> List pacs_prim <<<")
|
||||||
outDirPacsPrim = ExportBuildDirectory + "/" + PacsPrimExportDirectory
|
outDirPacsPrim = ExportBuildDirectory + "/" + PacsPrimExportDirectory
|
||||||
|
@ -96,8 +106,9 @@ if WantLandscapeColPrimPacsList:
|
||||||
listFile.write(exported + "\n")
|
listFile.write(exported + "\n")
|
||||||
listFile.close()
|
listFile.close()
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
-- Allocate 20 Me for the script
|
-- Allocate 20 Me for the script
|
||||||
heapSize += 15000000
|
heapSize += 15000000
|
||||||
|
|
||||||
nlErrorFilename = "output_logfile"
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
nlErrorStream = openFile nlErrorFilename mode:"a"
|
nlErrorStream = openFile nlErrorFilename mode:"a"
|
||||||
if nlErrorStream == undefined then
|
if nlErrorStream == undefined then
|
||||||
nlErrorStream = createFile nlErrorFilename
|
nlErrorStream = createFile nlErrorFilename
|
||||||
|
@ -55,15 +61,64 @@ fn nlerror message =
|
||||||
print message
|
print message
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".pacs_prim")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select none
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Select all PACS primitives
|
||||||
|
for i in geometry do
|
||||||
|
(
|
||||||
|
if ((classof i) == nel_pacs_cylinder) or ((classof i) == nel_pacs_box) then
|
||||||
|
selectmore i
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Array of node
|
||||||
|
arrayNode = selection as array
|
||||||
|
|
||||||
|
-- Something to export ?
|
||||||
|
if (arrayNode.count != 0) then
|
||||||
|
(
|
||||||
|
-- Export the collision
|
||||||
|
if (NelExportPACSPrimitives arrayNode outputNelFile) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting PACS primitives in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK PACS primitives in file " + inputMaxFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("WARNING no PACS primitives in file " + inputMaxFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Get files in the "pacs_prim_source_directory" directory
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
files = getFiles "pacs_prim_source_directory/*.max"
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
gc ()
|
gc()
|
||||||
|
|
||||||
-- Sort files
|
-- Sort files
|
||||||
sort files
|
sort files
|
||||||
gc ()
|
gc()
|
||||||
|
|
||||||
-- No file ?
|
-- No file ?
|
||||||
if files.count != 0 then
|
if files.count != 0 then
|
||||||
|
@ -71,91 +126,59 @@ try
|
||||||
-- For each files
|
-- For each files
|
||||||
for i = 1 to files.count do
|
for i = 1 to files.count do
|
||||||
(
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".pacs_prim")
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Output file
|
|
||||||
output = "output_directory/" + (getFilenameFile files[i]) + ".pacs_prim"
|
|
||||||
|
|
||||||
-- Compare file date
|
-- Compare file date
|
||||||
if (NeLTestFileDate output files[i]) == true then
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
(
|
(
|
||||||
-- Free memory and file handles
|
-- Free memory and file handles
|
||||||
gc ()
|
gc()
|
||||||
heapfree
|
heapfree
|
||||||
|
|
||||||
-- Reset 3dsmax
|
-- Reset 3dsmax
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
-- Open the max project
|
-- Open the max project
|
||||||
nlerror ("Scanning file "+files[i]+" ...")
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
if (loadMaxFile files[i] quiet:true) == true then
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
(
|
(
|
||||||
-- Unhide category
|
runNelMaxExport(inputMaxFile)
|
||||||
unhidecategory()
|
|
||||||
|
|
||||||
-- Select none
|
|
||||||
max select none
|
|
||||||
|
|
||||||
-- Select all PACS primitives
|
|
||||||
for i in geometry do
|
|
||||||
(
|
|
||||||
if ((classof i) == nel_pacs_cylinder) or ((classof i) == nel_pacs_box) then
|
|
||||||
selectmore i
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Array of node
|
|
||||||
arrayNode = selection as array
|
|
||||||
|
|
||||||
-- Something to export ?
|
|
||||||
if (arrayNode.count != 0) then
|
|
||||||
(
|
|
||||||
-- Export the collision
|
|
||||||
if (NelExportPACSPrimitives arrayNode output) == false then
|
|
||||||
(
|
|
||||||
nlerror ("ERROR exporting PACS primitives in file "+files[i])
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
nlerror ("OK PACS primitives in file "+files[i])
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
nlerror ("WARNING no PACS primitives in file "+files[i])
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR exporting collision: can't open the file "+files[i])
|
nlerror("ERROR exporting 'pacs_prim': can't open the file " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("SKIPPED "+files[i])
|
nlerror("SKIPPED " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR error exporting collision in files " + files[i])
|
nlerror("ERROR error exporting 'pacs_prim' in files " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("WARNING no collision file in folder pacs_prim_source_directory")
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR fatal error exporting collision in folder pacs_prim_source_directory")
|
nlerror("ERROR fatal error exporting 'pacs_prim' in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Bye
|
-- Bye
|
||||||
|
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
quitMAX #noPrompt
|
quitMAX #noPrompt
|
||||||
quitMAX () #noPrompt
|
quitMAX() #noPrompt
|
||||||
|
|
||||||
|
|
|
@ -45,10 +45,14 @@ printLog(log, "")
|
||||||
|
|
||||||
# Setup source directories
|
# Setup source directories
|
||||||
printLog(log, ">>> Setup source directories <<<")
|
printLog(log, ">>> Setup source directories <<<")
|
||||||
|
for dir in RBankCmbSourceDirectories:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
mkPath(log, LeveldesignWorldDirectory)
|
mkPath(log, LeveldesignWorldDirectory)
|
||||||
|
|
||||||
# Setup export directories
|
# Setup export directories
|
||||||
printLog(log, ">>> Setup export directories <<<")
|
printLog(log, ">>> Setup export directories <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + RBankCmbExportDirectory)
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + RBankCmbTagExportDirectory)
|
||||||
mkPath(log, ExportBuildDirectory + "/" + SmallbankExportDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + SmallbankExportDirectory)
|
||||||
|
|
||||||
# Setup build directories
|
# Setup build directories
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export rbank
|
# \brief Export rbank
|
||||||
# \date 2009-03-10-22-43-GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export rbank
|
# Export rbank
|
||||||
|
@ -43,17 +47,56 @@ printLog(log, "-------")
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
# Find tools
|
# Find tools
|
||||||
printLog(log, "")
|
# ...
|
||||||
|
|
||||||
|
# Export rbank 3dsmax
|
||||||
|
if MaxAvailable:
|
||||||
|
# Find tools
|
||||||
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
|
printLog(log, "")
|
||||||
|
|
||||||
|
printLog(log, ">>> Export rbank 3dsmax <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + RBankCmbExportDirectory)
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + RBankCmbTagExportDirectory)
|
||||||
|
for dir in RBankCmbSourceDirectories:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + RBankCmbTagExportDirectory, ".max.tag")):
|
||||||
|
scriptSrc = "maxscript/cmb_export.ms"
|
||||||
|
scriptDst = MaxUserDirectory + "/scripts/cmb_export.ms"
|
||||||
|
outputLogfile = ScriptDirectory + "/processes/rbank/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + RBankCmbExportDirectory
|
||||||
|
tagDirectory = ExportBuildDirectory + "/" + RBankCmbTagExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
newline = newline.replace("%TagDirectory%", tagDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "cmb_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .max files!")
|
||||||
|
os.remove(scriptDst)
|
||||||
|
|
||||||
|
|
||||||
# For each rbank directory
|
|
||||||
printLog(log, ">>> Export rbank 3dsmax <<<")
|
|
||||||
printLog(log, "********************************")
|
|
||||||
printLog(log, "******** TODO ********")
|
|
||||||
printLog(log, "********************************")
|
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,211 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
|
-- Allocate 20 Me for the script
|
||||||
|
heapSize += 15000000
|
||||||
|
|
||||||
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NEL3D_APPDATA_COLLISION = 1423062613
|
||||||
|
NEL3D_APPDATA_COLLISION_EXTERIOR = 1423062614
|
||||||
|
|
||||||
|
|
||||||
|
-- Must export this node ?
|
||||||
|
fn isToBeExported node =
|
||||||
|
(
|
||||||
|
doNotExport = getappdata node NEL3D_APPDATA_COLLISION
|
||||||
|
if (doNotExport != undefined) then
|
||||||
|
(
|
||||||
|
if (doNotExport == "1") then
|
||||||
|
return true
|
||||||
|
)
|
||||||
|
|
||||||
|
doNotExport = getappdata node NEL3D_APPDATA_COLLISION_EXTERIOR
|
||||||
|
if (doNotExport != undefined) then
|
||||||
|
(
|
||||||
|
if (doNotExport == "1") then
|
||||||
|
return true
|
||||||
|
)
|
||||||
|
|
||||||
|
return false
|
||||||
|
)
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelDir = "%OutputDirectory%"
|
||||||
|
|
||||||
|
-- Tag this file ?
|
||||||
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select all collision mesh
|
||||||
|
max select none
|
||||||
|
for m in geometry do
|
||||||
|
(
|
||||||
|
if (isToBeExported m) == true then
|
||||||
|
selectmore m
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Export the collision
|
||||||
|
if (NelExportCollision ($selection as array) outputNelDir) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting collision " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK collision in folder " + outputNelDir)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- Sort files
|
||||||
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- No file ?
|
||||||
|
if files.count != 0 then
|
||||||
|
(
|
||||||
|
-- For each files
|
||||||
|
for i = 1 to files.count do
|
||||||
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputTagFile = ("%TagDirectory%/" + (getFilenameFile inputMaxFile) + (getFilenameType inputMaxFile) + ".tag")
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputTagFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
-- Free memory and file handles
|
||||||
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
|
-- Reset 3dsmax
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
|
-- Open the max project
|
||||||
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
|
(
|
||||||
|
tagThisFile = runNelMaxExport(inputMaxFile)
|
||||||
|
|
||||||
|
-- Write a tag file
|
||||||
|
if tagThisFile == true then
|
||||||
|
(
|
||||||
|
tagFile = createFile outputTagFile
|
||||||
|
if tagFile == undefined then
|
||||||
|
(
|
||||||
|
nlerror("WARNING can't create tag file " + outputTagFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
print "mukyu" to: tagFile
|
||||||
|
close tagFile
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting 'cmb': can't open the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("SKIPPED BY TAG " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR error exporting 'cmb' in files " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting 'cmb' in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Bye
|
||||||
|
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
quitMAX #noPrompt
|
||||||
|
quitMAX() #noPrompt
|
||||||
|
|
|
@ -121,13 +121,19 @@ if MaxAvailable:
|
||||||
while retriesLeft > 0:
|
while retriesLeft > 0:
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst + "; " + maxFilePath)
|
printLog(log, "MAXSCRIPT " + scriptDst + "; " + maxFilePath)
|
||||||
subprocess.call([ ExecTimeout, str(MaxShapeExportTimeout), Max, "-U", "MAXScript", "shape_export.ms", "-q", "-mi", "-vn" ])
|
subprocess.call([ ExecTimeout, str(MaxShapeExportTimeout), Max, "-U", "MAXScript", "shape_export.ms", "-q", "-mi", "-vn" ])
|
||||||
lSrc = open(logFile, "r")
|
if os.path.exists(logFile):
|
||||||
for line in lSrc:
|
try:
|
||||||
lineStrip = line.strip()
|
lSrc = open(logFile, "r")
|
||||||
if (len(lineStrip) > 0):
|
for line in lSrc:
|
||||||
printLog(log, lineStrip)
|
lineStrip = line.strip()
|
||||||
lSrc.close()
|
if (len(lineStrip) > 0):
|
||||||
os.remove(logFile)
|
printLog(log, lineStrip)
|
||||||
|
lSrc.close()
|
||||||
|
os.remove(logFile)
|
||||||
|
except Exception:
|
||||||
|
printLog(log, "ERROR Failed to read 3dsmax log")
|
||||||
|
else:
|
||||||
|
printLog(log, "WARNING No 3dsmax log")
|
||||||
if (os.path.exists(tagFilePath)):
|
if (os.path.exists(tagFilePath)):
|
||||||
printLog(log, "OK " + maxFilePath)
|
printLog(log, "OK " + maxFilePath)
|
||||||
retriesLeft = 0
|
retriesLeft = 0
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export skel
|
# \brief Export skel
|
||||||
# \date 2009-03-10-20-23-GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export skel
|
# Export skel
|
||||||
|
@ -44,43 +48,49 @@ printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
# Find tools
|
# Find tools
|
||||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
# ...
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each skel directory
|
# Export skel 3dsmax
|
||||||
printLog(log, ">>> Export skel 3dsmax <<<")
|
if MaxAvailable:
|
||||||
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
|
# Find tools
|
||||||
for dir in SkelSourceDirectories:
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
printLog(log, "")
|
||||||
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, SkelSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")):
|
|
||||||
scriptSrc = "maxscript/skel_export.ms"
|
printLog(log, ">>> Export skel 3dsmax <<<")
|
||||||
scriptDst = MaxUserDirectory + "/scripts/skel_export.ms"
|
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
|
||||||
logFile = ScriptDirectory + "/processes/skel/log.log"
|
for dir in SkelSourceDirectories:
|
||||||
outDirSkel = ExportBuildDirectory + "/" + SkelExportDirectory
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
skelSourceDir = DatabaseDirectory + "/" + dir
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")):
|
||||||
tagList = findFiles(log, outDirSkel, "", ".skel")
|
scriptSrc = "maxscript/skel_export.ms"
|
||||||
tagLen = len(tagList)
|
scriptDst = MaxUserDirectory + "/scripts/skel_export.ms"
|
||||||
if os.path.isfile(scriptDst):
|
outputLogfile = ScriptDirectory + "/processes/skel/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + SkelExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".skel")
|
||||||
|
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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "skel_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".skel")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .skel files!")
|
||||||
os.remove(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("skel_source_directory", skelSourceDir)
|
|
||||||
newline = newline.replace("output_directory", outDirSkel)
|
|
||||||
sDst.write(newline)
|
|
||||||
sSrc.close()
|
|
||||||
sDst.close()
|
|
||||||
while tagDiff > 0:
|
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
|
||||||
subprocess.call([ Max, "-U", "MAXScript", "skel_export.ms", "-q", "-mi", "-vn" ])
|
|
||||||
tagList = findFiles(log, outDirSkel, "", ".skel")
|
|
||||||
newTagLen = len(tagList)
|
|
||||||
tagDiff = newTagLen - tagLen
|
|
||||||
tagLen = newTagLen
|
|
||||||
printLog(log, "Exported " + str(tagDiff) + " .skel files!")
|
|
||||||
os.remove(scriptDst)
|
|
||||||
|
|
||||||
printLog(log, ">>> Export skel directly <<<")
|
printLog(log, ">>> Export skel directly <<<")
|
||||||
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
|
||||||
|
@ -88,6 +98,8 @@ for dir in SkelSourceDirectories:
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")
|
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,18 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
-- Allocate 20 Me for the script
|
-- Allocate 20 Me for the script
|
||||||
heapSize += 15000000
|
heapSize += 15000000
|
||||||
|
|
||||||
nlErrorFilename = "output_logfile"
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
nlErrorStream = openFile nlErrorFilename mode:"a"
|
nlErrorStream = openFile nlErrorFilename mode:"a"
|
||||||
if nlErrorStream == undefined then
|
if nlErrorStream == undefined then
|
||||||
nlErrorStream = createFile nlErrorFilename
|
nlErrorStream = createFile nlErrorFilename
|
||||||
|
|
||||||
-- Log a message
|
|
||||||
fn nlerror message =
|
|
||||||
(
|
|
||||||
if nlErrorStream != undefined then
|
|
||||||
(
|
|
||||||
format "%\n" message to:nlErrorStream
|
|
||||||
flush nlErrorStream
|
|
||||||
)
|
|
||||||
|
|
||||||
-- To the console
|
|
||||||
print message
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Unhide category
|
-- Unhide category
|
||||||
fn unhidecategory =
|
fn unhidecategory =
|
||||||
(
|
(
|
||||||
|
@ -54,13 +48,83 @@ fn unhidecategory =
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
-- Log a message
|
||||||
|
fn nlerror message =
|
||||||
|
(
|
||||||
|
if nlErrorStream != undefined then
|
||||||
|
(
|
||||||
|
format "%\n" message to:nlErrorStream
|
||||||
|
flush nlErrorStream
|
||||||
|
)
|
||||||
|
|
||||||
|
-- To the console
|
||||||
|
print message
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".skel")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select Bip01, not very smart
|
||||||
|
if $Bip01 != undefined then
|
||||||
|
(
|
||||||
|
-- Select Bip01
|
||||||
|
select $Bip01
|
||||||
|
|
||||||
|
if ($ != undefined) then
|
||||||
|
(
|
||||||
|
-- Set figure mode on
|
||||||
|
if ((classof $) == Biped_Object) then
|
||||||
|
(
|
||||||
|
$.controller.figureMode = true
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Export the skeleton template
|
||||||
|
if (NelExportSkeleton $ outputNelFile) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting skeleton " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting skeleton: no Bip01 node in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting skeleton: no Bip01 node in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Get files in the skel_source_directory
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
files = getFiles "skel_source_directory/*.max"
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
-- Sort files
|
-- Sort files
|
||||||
sort files
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
-- No file ?
|
-- No file ?
|
||||||
if files.count != 0 then
|
if files.count != 0 then
|
||||||
|
@ -68,95 +132,59 @@ try
|
||||||
-- For each files
|
-- For each files
|
||||||
for i = 1 to files.count do
|
for i = 1 to files.count do
|
||||||
(
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".skel")
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Output file
|
|
||||||
output = ("output_directory/"+(getFilenameFile files[i])+".skel")
|
|
||||||
|
|
||||||
-- Compare file date
|
-- Compare file date
|
||||||
if (NeLTestFileDate output files[i]) == true then
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
(
|
(
|
||||||
-- Free memory and file handles
|
-- Free memory and file handles
|
||||||
gc ()
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
-- Reset 3dsmax
|
-- Reset 3dsmax
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
-- Open the max project
|
-- Open the max project
|
||||||
nlerror ("Scanning file "+files[i]+" ...")
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
if (loadMaxFile files[i] quiet:true) == true then
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
(
|
(
|
||||||
-- Unhide category
|
runNelMaxExport(inputMaxFile)
|
||||||
unhidecategory()
|
|
||||||
|
|
||||||
-- Select Bip01, not very smart
|
|
||||||
if $Bip01 != undefined then
|
|
||||||
(
|
|
||||||
-- Select Bip01
|
|
||||||
select $Bip01
|
|
||||||
|
|
||||||
if ($ != undefined) then
|
|
||||||
(
|
|
||||||
-- Set figure mode on
|
|
||||||
if ((classof $) == Biped_Object) then
|
|
||||||
(
|
|
||||||
$.controller.figureMode = true
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Export the skeleton template
|
|
||||||
if (NelExportSkeleton $ output) == false then
|
|
||||||
(
|
|
||||||
nlerror ("ERROR exporting skeleton "+files[i])
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
nlerror ("OK "+output)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR exporting skeleton: no Bip01 node in file "+files[i])
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR exporting skeleton: no Bip01 node in file "+files[i])
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR exporting skeleton: can't open the file "+files[i])
|
nlerror("ERROR exporting 'skel': can't open the file " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("SKIPPED "+files[i])
|
nlerror("SKIPPED " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR error exporting skeleton in files " + files[i])
|
nlerror("ERROR error exporting 'skel' in files " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("WARNING no skeleton file in folder skel_source_directory")
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR fatal error exporting skeleton in folder skel_source_directory")
|
nlerror("ERROR fatal error exporting 'skel' in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Bye
|
-- Bye
|
||||||
|
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
quitMAX #noPrompt
|
quitMAX #noPrompt
|
||||||
quitMAX () #noPrompt
|
quitMAX() #noPrompt
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export swt
|
# \brief Export swt
|
||||||
# \date 2009-03-10-20-23-GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export swt
|
# Export swt
|
||||||
|
@ -38,49 +42,55 @@ from directories import *
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
printLog(log, "-------")
|
printLog(log, "-------")
|
||||||
printLog(log, "--- Export skeleton weigths")
|
printLog(log, "--- Export swt")
|
||||||
printLog(log, "-------")
|
printLog(log, "-------")
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
# Find tools
|
# Find tools
|
||||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
# ...
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each swt directory
|
# Export swt 3dsmax
|
||||||
printLog(log, ">>> Export skeleton weigths 3dsmax <<<")
|
if MaxAvailable:
|
||||||
mkPath(log, ExportBuildDirectory + "/" + SwtExportDirectory)
|
# Find tools
|
||||||
for dir in SwtSourceDirectories:
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
printLog(log, "")
|
||||||
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, SwtSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + SwtExportDirectory, ".swt")):
|
|
||||||
scriptSrc = "maxscript/swt_export.ms"
|
printLog(log, ">>> Export swt 3dsmax <<<")
|
||||||
scriptDst = MaxUserDirectory + "/scripts/swt_export.ms"
|
mkPath(log, ExportBuildDirectory + "/" + SwtExportDirectory)
|
||||||
logFile = ScriptDirectory + "/processes/swt/log.log"
|
for dir in SwtSourceDirectories:
|
||||||
outDirSwt = ExportBuildDirectory + "/" + SwtExportDirectory
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
swtSourceDir = DatabaseDirectory + "/" + dir
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + SwtExportDirectory, ".swt")):
|
||||||
tagList = findFiles(log, outDirSwt, "", ".swt")
|
scriptSrc = "maxscript/swt_export.ms"
|
||||||
tagLen = len(tagList)
|
scriptDst = MaxUserDirectory + "/scripts/swt_export.ms"
|
||||||
if os.path.isfile(scriptDst):
|
outputLogfile = ScriptDirectory + "/processes/swt/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + SwtExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".swt")
|
||||||
|
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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "swt_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".swt")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .swt files!")
|
||||||
os.remove(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("swt_source_directory", swtSourceDir)
|
|
||||||
newline = newline.replace("output_directory", outDirSwt)
|
|
||||||
sDst.write(newline)
|
|
||||||
sSrc.close()
|
|
||||||
sDst.close()
|
|
||||||
while tagDiff > 0:
|
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
|
||||||
subprocess.call([ Max, "-U", "MAXScript", "swt_export.ms", "-q", "-mi", "-vn" ])
|
|
||||||
tagList = findFiles(log, outDirSwt, "", ".swt")
|
|
||||||
newTagLen = len(tagList)
|
|
||||||
tagDiff = newTagLen - tagLen
|
|
||||||
tagLen = newTagLen
|
|
||||||
printLog(log, "Exported " + str(tagDiff) + " .swt files!")
|
|
||||||
os.remove(scriptDst)
|
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
log.close()
|
log.close()
|
||||||
|
|
|
@ -1,24 +1,18 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
-- Allocate 20 Me for the script
|
-- Allocate 20 Me for the script
|
||||||
heapSize += 15000000
|
heapSize += 15000000
|
||||||
|
|
||||||
nlErrorFilename = "output_logfile"
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
nlErrorStream = openFile nlErrorFilename mode:"a"
|
nlErrorStream = openFile nlErrorFilename mode:"a"
|
||||||
if nlErrorStream == undefined then
|
if nlErrorStream == undefined then
|
||||||
nlErrorStream = createFile nlErrorFilename
|
nlErrorStream = createFile nlErrorFilename
|
||||||
|
|
||||||
-- Log a message
|
|
||||||
fn nlerror message =
|
|
||||||
(
|
|
||||||
if nlErrorStream != undefined then
|
|
||||||
(
|
|
||||||
format "%\n" message to:nlErrorStream
|
|
||||||
flush nlErrorStream
|
|
||||||
)
|
|
||||||
|
|
||||||
-- To the console
|
|
||||||
print message
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Unhide category
|
-- Unhide category
|
||||||
fn unhidecategory =
|
fn unhidecategory =
|
||||||
(
|
(
|
||||||
|
@ -54,13 +48,58 @@ fn unhidecategory =
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
-- Log a message
|
||||||
|
fn nlerror message =
|
||||||
|
(
|
||||||
|
if nlErrorStream != undefined then
|
||||||
|
(
|
||||||
|
format "%\n" message to:nlErrorStream
|
||||||
|
flush nlErrorStream
|
||||||
|
)
|
||||||
|
|
||||||
|
-- To the console
|
||||||
|
print message
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".swt")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select all the nodes
|
||||||
|
max select all
|
||||||
|
|
||||||
|
-- Export the skeleton template
|
||||||
|
if NelExportSkeletonWeight ($selection as array) outputNelFile == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting skeleton weight " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Get files in the swt_source_directory
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
files = getFiles "swt_source_directory/*.max"
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
-- Sort files
|
-- Sort files
|
||||||
sort files
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
-- No file ?
|
-- No file ?
|
||||||
if files.count != 0 then
|
if files.count != 0 then
|
||||||
|
@ -68,72 +107,59 @@ try
|
||||||
-- For each files
|
-- For each files
|
||||||
for i = 1 to files.count do
|
for i = 1 to files.count do
|
||||||
(
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".swt")
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Output file
|
|
||||||
output = ("output_directory/"+(getFilenameFile files[i])+".swt")
|
|
||||||
|
|
||||||
-- Compare file date
|
-- Compare file date
|
||||||
if (NeLTestFileDate output files[i]) == true then
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
(
|
(
|
||||||
-- Free memory and file handles
|
-- Free memory and file handles
|
||||||
gc ()
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
-- Reset 3dsmax
|
-- Reset 3dsmax
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
-- Open the max project
|
-- Open the max project
|
||||||
nlerror ("Scanning file "+files[i]+" ...")
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
if (loadMaxFile files[i] quiet:true) == true then
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
(
|
(
|
||||||
-- Unhide category
|
runNelMaxExport(inputMaxFile)
|
||||||
unhidecategory()
|
|
||||||
|
|
||||||
-- Select all the nodes
|
|
||||||
max select all
|
|
||||||
|
|
||||||
-- Export the skeleton template
|
|
||||||
if NelExportSkeletonWeight ($selection as array) output == false then
|
|
||||||
(
|
|
||||||
nlerror ("ERROR exporting skeleton weight "+files[i])
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
nlerror ("OK "+output)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR exporting skeleton weight: can't open the file "+files[i])
|
nlerror("ERROR exporting 'swt': can't open the file " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("SKIPPED "+files[i])
|
nlerror("SKIPPED " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR error exporting skeleton weight in files " + files[i])
|
nlerror("ERROR error exporting 'swt' in files " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("WARNING no skeleton weight file in folder swt_source_directory")
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR error exporting skeleton weight in folder swt_source_directory")
|
nlerror("ERROR fatal error exporting 'swt' in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Bye
|
-- Bye
|
||||||
|
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
quitMAX #noPrompt
|
quitMAX #noPrompt
|
||||||
quitMAX () #noPrompt
|
quitMAX() #noPrompt
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# \file 0_setup.py
|
# \file 0_setup.py
|
||||||
# \brief setup veget
|
# \brief setup veget
|
||||||
# \date 2010-05-24 08:13GMT
|
# \date 2010-09-02-08-40-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Setup veget
|
# Setup veget
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export veget
|
# \brief Export veget
|
||||||
# \date 2010-05-24 08:13GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export veget
|
# Export veget
|
||||||
|
@ -43,49 +47,56 @@ printLog(log, "-------")
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
|
# Find tools
|
||||||
|
# ...
|
||||||
|
|
||||||
|
# Export veget 3dsmax
|
||||||
if MaxAvailable:
|
if MaxAvailable:
|
||||||
# Find tools
|
# Find tools
|
||||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
# Export veget 3dsmax
|
|
||||||
printLog(log, ">>> Export veget 3dsmax <<<")
|
printLog(log, ">>> Export veget 3dsmax <<<")
|
||||||
|
|
||||||
# Build paths
|
|
||||||
scriptSrc = "maxscript/veget_export.ms"
|
|
||||||
# scriptDst = MaxDirectory + "/scripts/veget_export.ms"
|
|
||||||
scriptDst = MaxUserDirectory + "/scripts/veget_export.ms"
|
|
||||||
logFile = ScriptDirectory + "/processes/veget/log.log"
|
|
||||||
outputDirVeget = ExportBuildDirectory + "/" + VegetExportDirectory
|
|
||||||
mkPath(log, outputDirVeget)
|
|
||||||
outputDirTag = ExportBuildDirectory + "/" + VegetTagExportDirectory
|
|
||||||
mkPath(log, outputDirTag)
|
|
||||||
|
|
||||||
# For each directoy
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + VegetExportDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + VegetExportDirectory)
|
||||||
if os.path.isfile(scriptDst):
|
mkPath(log, ExportBuildDirectory + "/" + VegetTagExportDirectory)
|
||||||
os.remove(scriptDst)
|
|
||||||
for dir in VegetSourceDirectories:
|
for dir in VegetSourceDirectories:
|
||||||
vegetSourceDir = DatabaseDirectory + "/" + dir
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
mkPath(log, vegetSourceDir)
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + VegetTagExportDirectory, ".max.tag")):
|
||||||
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, VegetSourceDirectories, vegetSourceDir, ".max", outputDirTag, ".max.tag")):
|
scriptSrc = "maxscript/veget_export.ms"
|
||||||
|
scriptDst = MaxUserDirectory + "/scripts/veget_export.ms"
|
||||||
|
outputLogfile = ScriptDirectory + "/processes/veget/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + VegetExportDirectory
|
||||||
|
tagDirectory = ExportBuildDirectory + "/" + VegetTagExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||||
|
tagLen = len(tagList)
|
||||||
|
if os.path.isfile(scriptDst):
|
||||||
|
os.remove(scriptDst)
|
||||||
|
tagDiff = 1
|
||||||
sSrc = open(scriptSrc, "r")
|
sSrc = open(scriptSrc, "r")
|
||||||
sDst = open(scriptDst, "w")
|
sDst = open(scriptDst, "w")
|
||||||
for line in sSrc:
|
for line in sSrc:
|
||||||
newline = line.replace("output_logfile", logFile)
|
newline = line.replace("%OutputLogfile%", outputLogfile)
|
||||||
newline = newline.replace("veget_source_directory", vegetSourceDir)
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
newline = newline.replace("output_directory_veget", outputDirVeget)
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
newline = newline.replace("output_directory_tag", outputDirTag)
|
newline = newline.replace("%TagDirectory%", tagDirectory)
|
||||||
sDst.write(newline)
|
sDst.write(newline)
|
||||||
sSrc.close()
|
sSrc.close()
|
||||||
sDst.close()
|
sDst.close()
|
||||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
while tagDiff > 0:
|
||||||
subprocess.call([ Max, "-U", "MAXScript", "veget_export.ms", "-q", "-mi", "-vn" ])
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "veget_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .max files!")
|
||||||
os.remove(scriptDst)
|
os.remove(scriptDst)
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# \file 2_build.py
|
# \file 2_build.py
|
||||||
# \brief Build veget
|
# \brief Build veget
|
||||||
# \date 2010-05-24 08:13GMT
|
# \date 2010-09-02-08-40-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Build veget
|
# Build veget
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# \file 3_install.py
|
# \file 3_install.py
|
||||||
# \brief Install veget
|
# \brief Install veget
|
||||||
# \date 2010-05-24 08:13GMT
|
# \date 2010-09-02-08-40-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Install veget
|
# Install veget
|
||||||
|
@ -43,12 +43,12 @@ printLog(log, "-------")
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
|
printLog(log, ">>> Install veget <<<")
|
||||||
|
exportPath = ExportBuildDirectory + "/" + VegetExportDirectory
|
||||||
|
mkPath(log, exportPath)
|
||||||
clientPath = ClientDataDirectory + "/" + VegetClientDirectory
|
clientPath = ClientDataDirectory + "/" + VegetClientDirectory
|
||||||
mkPath(log, clientPath)
|
mkPath(log, clientPath)
|
||||||
|
copyFilesNoTreeIfNeeded(log, exportPath, clientPath)
|
||||||
printLog(log, ">>> Install veget <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + VegetExportDirectory)
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + VegetExportDirectory, clientPath, ".veget")
|
|
||||||
|
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
log.close()
|
log.close()
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
-- Some globals
|
|
||||||
|
|
||||||
NEL3D_APPDATA_DONOTEXPORT = 1423062565 -- do not export me : "undefined" = export me
|
|
||||||
-- "0" = export me
|
|
||||||
-- "1" = DONT export me
|
|
||||||
|
|
||||||
NEL3D_APPDATA_VEGETABLE = 1423062580 -- "undefined" = not vegetable
|
-- #################################################################
|
||||||
-- "0" = not vegetable
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
-- "1" = vegetable
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
-- Allocate 20 Me for the script
|
-- Allocate 20 Me for the script
|
||||||
heapSize += 15000000
|
heapSize += 15000000
|
||||||
|
|
||||||
nlErrorFilename = "output_logfile"
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
nlErrorStream = openFile nlErrorFilename mode:"a"
|
nlErrorStream = openFile nlErrorFilename mode:"a"
|
||||||
if nlErrorStream == undefined then
|
if nlErrorStream == undefined then
|
||||||
nlErrorStream = createFile nlErrorFilename
|
nlErrorStream = createFile nlErrorFilename
|
||||||
|
@ -64,6 +61,19 @@ fn nlerror message =
|
||||||
print message
|
print message
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Some globals
|
||||||
|
|
||||||
|
NEL3D_APPDATA_DONOTEXPORT = 1423062565 -- do not export me : "undefined" = export me
|
||||||
|
-- "0" = export me
|
||||||
|
-- "1" = DONT export me
|
||||||
|
|
||||||
|
NEL3D_APPDATA_VEGETABLE = 1423062580 -- "undefined" = not vegetable
|
||||||
|
-- "0" = not vegetable
|
||||||
|
-- "1" = vegetable
|
||||||
|
|
||||||
|
|
||||||
-- Must export this node ?
|
-- Must export this node ?
|
||||||
fn isToBeExported node =
|
fn isToBeExported node =
|
||||||
(
|
(
|
||||||
|
@ -86,13 +96,95 @@ fn isToBeExported node =
|
||||||
return false
|
return false
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
tagThisFile = true
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Unhide
|
||||||
|
max unhide all
|
||||||
|
|
||||||
|
-- unselect
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Exported object count
|
||||||
|
exported = 0
|
||||||
|
|
||||||
|
-- For each node
|
||||||
|
for node in geometry do
|
||||||
|
(
|
||||||
|
-- It is root ?
|
||||||
|
if (node.parent == undefined) then
|
||||||
|
(
|
||||||
|
-- Is not a skeleton ?
|
||||||
|
if (node.name != "Bip01") then
|
||||||
|
(
|
||||||
|
-- Can be exported ?
|
||||||
|
if (isToBeExported node == true) then
|
||||||
|
(
|
||||||
|
-- Output directory
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (node.name) + ".veget")
|
||||||
|
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Export the veget
|
||||||
|
if (NelExportVegetable node outputNelFile false) == true then
|
||||||
|
(
|
||||||
|
nlerror("OK "+outputNelFile)
|
||||||
|
exported = exported+1
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting veget " + node.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fata error exporting veget " + node.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("SKIPPED " + outputNelFile)
|
||||||
|
exported = exported + 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Something exported
|
||||||
|
if exported == 0 then
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("WARNING no veget exported from the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Get files in the veget_source_directory
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
files = getFiles "veget_source_directory/*.max"
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
-- Sort files
|
-- Sort files
|
||||||
sort files
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
-- No file ?
|
-- No file ?
|
||||||
if files.count != 0 then
|
if files.count != 0 then
|
||||||
|
@ -100,113 +192,38 @@ try
|
||||||
-- For each files
|
-- For each files
|
||||||
for i = 1 to files.count do
|
for i = 1 to files.count do
|
||||||
(
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputTagFile = ("%TagDirectory%/" + (getFilenameFile inputMaxFile) + (getFilenameType inputMaxFile) + ".tag")
|
||||||
|
|
||||||
try
|
try
|
||||||
(
|
(
|
||||||
-- Delete lod files
|
-- Compare file date
|
||||||
lod_array = #()
|
if (NeLTestFileDate outputTagFile inputMaxFile) == true then
|
||||||
|
|
||||||
-- Ok ?
|
|
||||||
ok = false
|
|
||||||
|
|
||||||
-- 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
|
|
||||||
(
|
(
|
||||||
|
-- Free memory and file handles
|
||||||
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
|
-- Reset 3dsmax
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
-- Open the max project
|
-- Open the max project
|
||||||
nlerror ("Scanning file "+files[i]+" ...")
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
if loadMaxFile files[i] quiet:true == true then
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
(
|
(
|
||||||
-- Unhide category
|
tagThisFile = runNelMaxExport(inputMaxFile)
|
||||||
unhidecategory()
|
|
||||||
|
|
||||||
tagThisFile = true
|
|
||||||
|
|
||||||
-- Unhide
|
|
||||||
max unhide all
|
|
||||||
|
|
||||||
-- unselect
|
|
||||||
max select none
|
|
||||||
|
|
||||||
-- Exported object count
|
|
||||||
exported = 0
|
|
||||||
|
|
||||||
-- For each node
|
|
||||||
for node in geometry do
|
|
||||||
(
|
|
||||||
-- It is root ?
|
|
||||||
if (node.parent == undefined) then
|
|
||||||
(
|
|
||||||
-- Is not a skeleton ?
|
|
||||||
if (node.name != "Bip01") then
|
|
||||||
(
|
|
||||||
-- Can be exported ?
|
|
||||||
if (isToBeExported node == true) then
|
|
||||||
(
|
|
||||||
-- Output directory
|
|
||||||
output = ("output_directory_veget/"+(node.name)+".veget")
|
|
||||||
|
|
||||||
-- Compare file date
|
|
||||||
if (NeLTestFileDate output files[i]) == true then
|
|
||||||
(
|
|
||||||
try
|
|
||||||
(
|
|
||||||
-- Export the veget
|
|
||||||
if (NelExportVegetable node output false) == true then
|
|
||||||
(
|
|
||||||
nlerror ("OK "+output)
|
|
||||||
exported = exported+1
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR exporting veget "+node.name+" in file "+files[i])
|
|
||||||
tagThisFile = false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
catch
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("ERROR fata error exporting veget "+node.name+" in file "+files[i])
|
|
||||||
tagThisFile = false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("SKIPPED "+output)
|
|
||||||
exported = exported+1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Something exported
|
|
||||||
if exported == 0 then
|
|
||||||
(
|
|
||||||
-- Error
|
|
||||||
nlerror ("WARNING no veget exported from the file "+files[i])
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Write a tag file
|
-- Write a tag file
|
||||||
if tagThisFile == true then
|
if tagThisFile == true then
|
||||||
(
|
(
|
||||||
tagFile = createFile tag
|
tagFile = createFile outputTagFile
|
||||||
if tagFile == undefined then
|
if tagFile == undefined then
|
||||||
(
|
(
|
||||||
nlerror ("WARNING can't create tag file "+tag)
|
nlerror("WARNING can't create tag file " + outputTagFile)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
print "toto" to: tagFile
|
print "mukyu" to: tagFile
|
||||||
close tagFile
|
close tagFile
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -214,36 +231,35 @@ try
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR exporting veget: can't open the file "+files[i])
|
nlerror("ERROR exporting 'veget': can't open the file " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
-- Error
|
nlerror("SKIPPED BY TAG " + inputMaxFile)
|
||||||
nlerror ("SKIPPED BY TAG "+files[i])
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR error exporting veget in files " + files[i])
|
nlerror("ERROR error exporting 'veget' in files " + inputMaxFile)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
nlerror ("WARNING no max file in folder veget_source_directory")
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
catch
|
catch
|
||||||
(
|
(
|
||||||
-- Error
|
-- Error
|
||||||
nlerror ("ERROR fatal error exporting veget in folder veget_source_directory")
|
nlerror("ERROR fatal error exporting 'veget' in folder %MaxSourceDirectory%")
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Bye
|
-- Bye
|
||||||
|
|
||||||
resetMAXFile #noprompt
|
resetMAXFile #noprompt
|
||||||
quitMAX #noPrompt
|
quitMAX #noPrompt
|
||||||
quitMAX () #noPrompt
|
quitMAX() #noPrompt
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ printLog(log, "")
|
||||||
|
|
||||||
# Setup source directories
|
# Setup source directories
|
||||||
printLog(log, ">>> Setup source directories <<<")
|
printLog(log, ">>> Setup source directories <<<")
|
||||||
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory)
|
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory[0])
|
||||||
|
|
||||||
# Setup export directories
|
# Setup export directories
|
||||||
printLog(log, ">>> Setup export directories <<<")
|
printLog(log, ">>> Setup export directories <<<")
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file 1_export.py
|
# \file 1_export.py
|
||||||
# \brief Export zone
|
# \brief Export zone
|
||||||
# \date 2009-03-10-22-23-GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Export zone
|
# Export zone
|
||||||
|
@ -44,25 +48,59 @@ printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
# Find tools
|
# Find tools
|
||||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
# ...
|
||||||
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each zone directory
|
# Export zone 3dsmax
|
||||||
printLog(log, ">>> Export zone 3dsmax <<<")
|
if MaxAvailable:
|
||||||
printLog(log, "********************************")
|
# Find tools
|
||||||
printLog(log, "******** TODO ********")
|
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||||
printLog(log, "********************************")
|
printLog(log, "")
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Export zone ligo <<<")
|
printLog(log, ">>> Export zone 3dsmax <<<")
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
|
||||||
|
for dir in ZoneSourceDirectory:
|
||||||
|
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||||
|
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + ZoneExportDirectory, ".zone")):
|
||||||
|
scriptSrc = "maxscript/zone_export.ms"
|
||||||
|
scriptDst = MaxUserDirectory + "/scripts/zone_export.ms"
|
||||||
|
outputLogfile = ScriptDirectory + "/processes/zone/log.log"
|
||||||
|
outputDirectory = ExportBuildDirectory + "/" + ZoneExportDirectory
|
||||||
|
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".zone")
|
||||||
|
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("%OutputLogfile%", outputLogfile)
|
||||||
|
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||||
|
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||||
|
sDst.write(newline)
|
||||||
|
sSrc.close()
|
||||||
|
sDst.close()
|
||||||
|
while tagDiff > 0:
|
||||||
|
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||||
|
subprocess.call([ Max, "-U", "MAXScript", "zone_export.ms", "-q", "-mi", "-vn" ])
|
||||||
|
tagList = findFiles(log, outputDirectory, "", ".zone")
|
||||||
|
newTagLen = len(tagList)
|
||||||
|
tagDiff = newTagLen - tagLen
|
||||||
|
tagLen = newTagLen
|
||||||
|
printLog(log, "Exported " + str(tagDiff) + " .zone files!")
|
||||||
|
os.remove(scriptDst)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, ">>> Try to copy ligo zone if any <<<")
|
||||||
printLog(log, "********************************")
|
printLog(log, "********************************")
|
||||||
printLog(log, "******** TODO ********")
|
printLog(log, "******** TODO ********")
|
||||||
printLog(log, "********************************")
|
printLog(log, "********************************")
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
printLog(log, "")
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,223 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- #################################################################
|
||||||
|
-- ## WARNING : this is a generated file, don't change it !
|
||||||
|
-- #################################################################
|
||||||
|
|
||||||
|
|
||||||
|
-- Allocate 20 Me for the script
|
||||||
|
heapSize += 15000000
|
||||||
|
|
||||||
|
nlErrorFilename = "%OutputLogfile%"
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Find id
|
||||||
|
Fn findID node =
|
||||||
|
(
|
||||||
|
local
|
||||||
|
|
||||||
|
-- Const
|
||||||
|
alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
|
NameTab = filterString node.name "_"
|
||||||
|
Z_ID = -1
|
||||||
|
alpha_letter1 = NameTab[2][1]
|
||||||
|
alpha_letter2 = NameTab[2][2]
|
||||||
|
alpha_letter1_value = findstring alphabet alpha_letter1
|
||||||
|
alpha_letter2_value = findstring alphabet alpha_letter2
|
||||||
|
|
||||||
|
-- Decompose theh name in an array array[1]=numeric string value array[2]=alpha string value
|
||||||
|
-- The index of the engine start at 0 but the script one at 1 so we sub 1 each time
|
||||||
|
alpha_sub_id = (((alpha_letter1_value as integer - 1) * 26 + (alpha_letter2_value as integer)))-1
|
||||||
|
num_sub_id = (NameTab[1] as integer)-1
|
||||||
|
|
||||||
|
-- Array of 256 per 256
|
||||||
|
---------------------------
|
||||||
|
-- 0 1 2 3 ... 255
|
||||||
|
-- 256 257 258 259 ... 511
|
||||||
|
-- 512 513 514 515 ... 767
|
||||||
|
-- ...
|
||||||
|
|
||||||
|
Z_ID = num_sub_id*256 + alpha_sub_id
|
||||||
|
return Z_ID
|
||||||
|
)
|
||||||
|
|
||||||
|
fn runNelMaxExport inputMaxFile =
|
||||||
|
(
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".zone")
|
||||||
|
tagThisFile = false
|
||||||
|
|
||||||
|
-- Unhide category
|
||||||
|
unhidecategory()
|
||||||
|
|
||||||
|
-- Select none
|
||||||
|
max select none
|
||||||
|
|
||||||
|
-- Found it ?
|
||||||
|
find = false
|
||||||
|
|
||||||
|
-- For each object in the priject
|
||||||
|
for i in geometry do
|
||||||
|
(
|
||||||
|
-- Look for a NeL patch mesh
|
||||||
|
if (classof i) == RklPatch then
|
||||||
|
(
|
||||||
|
-- Error catching
|
||||||
|
try
|
||||||
|
(
|
||||||
|
if (ExportRykolZone i outputNelFile (findID i)) == false then
|
||||||
|
(
|
||||||
|
nlerror("ERROR exporting zone " + i.name + " in file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("OK " + outputNelFile)
|
||||||
|
tagThisFile = true
|
||||||
|
find = true
|
||||||
|
exit
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting zone " + i.name + " in file " + inputMaxFile)
|
||||||
|
tagThisFile = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Not found ?
|
||||||
|
if (find == false) then
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("WARNING no zone found in project " + inputMaxFile)
|
||||||
|
tagThisFile = true
|
||||||
|
)
|
||||||
|
|
||||||
|
return tagThisFile
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Get files in the %MaxSourceDirectory% directory
|
||||||
|
files = getFiles "%MaxSourceDirectory%/*.max"
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- Sort files
|
||||||
|
sort files
|
||||||
|
gc()
|
||||||
|
|
||||||
|
-- No file ?
|
||||||
|
if files.count != 0 then
|
||||||
|
(
|
||||||
|
-- For each files
|
||||||
|
for i = 1 to files.count do
|
||||||
|
(
|
||||||
|
inputMaxFile = files[i]
|
||||||
|
outputNelFile = ("%OutputDirectory%/" + (getFilenameFile inputMaxFile) + ".zone")
|
||||||
|
|
||||||
|
try
|
||||||
|
(
|
||||||
|
-- Compare file date
|
||||||
|
if (NeLTestFileDate outputNelFile inputMaxFile) == true then
|
||||||
|
(
|
||||||
|
-- Free memory and file handles
|
||||||
|
gc()
|
||||||
|
heapfree
|
||||||
|
|
||||||
|
-- Reset 3dsmax
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
|
||||||
|
-- Open the max project
|
||||||
|
nlerror("Scanning file " + inputMaxFile + " ...")
|
||||||
|
if (loadMaxFile inputMaxFile quiet:true) == true then
|
||||||
|
(
|
||||||
|
runNelMaxExport(inputMaxFile)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR exporting 'zone': can't open the file " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("SKIPPED " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR error exporting 'zone' in files " + inputMaxFile)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
(
|
||||||
|
nlerror("WARNING no *.max file in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
catch
|
||||||
|
(
|
||||||
|
-- Error
|
||||||
|
nlerror("ERROR fatal error exporting 'zone' in folder %MaxSourceDirectory%")
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Bye
|
||||||
|
|
||||||
|
resetMAXFile #noprompt
|
||||||
|
quitMAX #noPrompt
|
||||||
|
quitMAX() #noPrompt
|
||||||
|
|
|
@ -55,6 +55,7 @@ mkPath(log, ExportBuildDirectory + "/" + ZoneLightWaterShapesLightedExportDirect
|
||||||
# Setup build directories
|
# Setup build directories
|
||||||
printLog(log, ">>> Setup build directories <<<")
|
printLog(log, ">>> Setup build directories <<<")
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
||||||
|
mkPath(log, ExportBuildDirectory + "/" + ZoneDependBuildDirectory)
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneLightBuildDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + ZoneLightBuildDirectory)
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneLightDependBuildDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + ZoneLightDependBuildDirectory)
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory)
|
mkPath(log, ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory)
|
||||||
|
|
|
@ -60,14 +60,14 @@ else:
|
||||||
mkPath(log, srcDir)
|
mkPath(log, srcDir)
|
||||||
destDir = ExportBuildDirectory + "/" + ZoneLightBuildDirectory
|
destDir = ExportBuildDirectory + "/" + ZoneLightBuildDirectory
|
||||||
mkPath(log, destDir)
|
mkPath(log, destDir)
|
||||||
dependDir = ExportBuildDirectory + "/" + ZoneLightDependBuildDirectory
|
dependDir = ExportBuildDirectory + "/" + ZoneDependBuildDirectory
|
||||||
mkPath(log, dependDir)
|
mkPath(log, dependDir)
|
||||||
files = findFiles(log, srcDir, "", ".zonew")
|
files = findFiles(log, srcDir, "", ".zonew")
|
||||||
for file in files:
|
for file in files:
|
||||||
srcFile = srcDir + "/" + file
|
srcFile = srcDir + "/" + file
|
||||||
destFile = destDir + "/" + file[0:-len(".zonew")] + ".zonel"
|
destFile = destDir + "/" + file[0:-len(".zonew")] + ".zonel"
|
||||||
if (needUpdateLogRemoveDest(log, srcFile, destFile)):
|
if (needUpdateLogRemoveDest(log, srcFile, destFile)):
|
||||||
dependFile = destDir + "/" + file[0:-len(".zonew")] + ".depend"
|
dependFile = dependDir + "/" + file[0:-len(".zonew")] + ".depend"
|
||||||
subprocess.call([ ExecTimeout, str(ZoneLightBuildTimeout), ZoneLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
|
subprocess.call([ ExecTimeout, str(ZoneLightBuildTimeout), ZoneLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ else:
|
||||||
mkPath(log, igsrcDir)
|
mkPath(log, igsrcDir)
|
||||||
destDir = ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory
|
destDir = ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory
|
||||||
mkPath(log, destDir)
|
mkPath(log, destDir)
|
||||||
dependDir = ExportBuildDirectory + "/" + ZoneLightDependBuildDirectory
|
dependDir = ExportBuildDirectory + "/" + ZoneDependBuildDirectory
|
||||||
mkPath(log, dependDir)
|
mkPath(log, dependDir)
|
||||||
files = findFiles(log, srcDir, "", ".zonel")
|
files = findFiles(log, srcDir, "", ".zonel")
|
||||||
for file in files:
|
for file in files:
|
||||||
|
@ -93,7 +93,7 @@ else:
|
||||||
if (os.path.isfile(igsrcFile)):
|
if (os.path.isfile(igsrcFile)):
|
||||||
if (needUpdateLogRemoveDest(log, igsrcFile, destFile)):
|
if (needUpdateLogRemoveDest(log, igsrcFile, destFile)):
|
||||||
srcFile = srcDir + "/" + file
|
srcFile = srcDir + "/" + file
|
||||||
dependFile = destDir + "/" + file[0:-len(".zonel")] + ".depend"
|
dependFile = dependDir + "/" + file[0:-len(".zonel")] + ".depend"
|
||||||
subprocess.call([ ExecTimeout, str(ZoneIgLightBuildTimeout), ZoneIgLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
|
subprocess.call([ ExecTimeout, str(ZoneIgLightBuildTimeout), ZoneIgLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
|
||||||
printLog(log, "")
|
printLog(log, "")
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ ContinentPath = "continents/" + ContinentName
|
||||||
CommonName = ContinentName
|
CommonName = ContinentName
|
||||||
CommonPath = ContinentPath
|
CommonPath = ContinentPath
|
||||||
|
|
||||||
|
|
||||||
# *** SOURCE DIRECTORIES LEVELDESIGN/WORLD ***
|
# *** SOURCE DIRECTORIES LEVELDESIGN/WORLD ***
|
||||||
ContinentLeveldesignWorldDirectory = ContinentName
|
ContinentLeveldesignWorldDirectory = ContinentName
|
||||||
|
|
||||||
|
@ -57,7 +58,10 @@ LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||||
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||||
|
|
||||||
# Zone directories
|
# Zone directories
|
||||||
ZoneSourceDirectory = "landscape/zones/" + EcosystemName
|
ZoneSourceDirectory = [ "landscape/zones/" + ContinentName ] # For old snowballs style landscape when not using ligo
|
||||||
|
|
||||||
|
# RBank directories
|
||||||
|
RBankCmbSourceDirectories = [ ]
|
||||||
|
|
||||||
# Ig directories
|
# Ig directories
|
||||||
IgLandSourceDirectories = [ ]
|
IgLandSourceDirectories = [ ]
|
||||||
|
@ -99,6 +103,10 @@ LigoTagExportDirectory = "ecosystems/" + EcosystemName + "/ligo_tag"
|
||||||
ZoneExportDirectory = ContinentPath + "/zone"
|
ZoneExportDirectory = ContinentPath + "/zone"
|
||||||
WaterMapSourceDirectories = [ ]
|
WaterMapSourceDirectories = [ ]
|
||||||
|
|
||||||
|
# RBank directories
|
||||||
|
RBankCmbExportDirectory = CommonPath + "/rbank_cmb_export"
|
||||||
|
RBankCmbTagExportDirectory = CommonPath + "/rbank_cmb_tag_export"
|
||||||
|
|
||||||
# Smallbank directories
|
# Smallbank directories
|
||||||
SmallbankExportDirectory = EcosystemPath + "/smallbank"
|
SmallbankExportDirectory = EcosystemPath + "/smallbank"
|
||||||
|
|
||||||
|
|
|
@ -32,18 +32,23 @@ ProcessToComplete = [ ]
|
||||||
ProcessToComplete += [ "properties" ]
|
ProcessToComplete += [ "properties" ]
|
||||||
ProcessToComplete += [ "map" ]
|
ProcessToComplete += [ "map" ]
|
||||||
ProcessToComplete += [ "shape" ]
|
ProcessToComplete += [ "shape" ]
|
||||||
ProcessToComplete += [ "ligo" ] # not fully implemented, works for this process (not yet), but does not export max files
|
ProcessToComplete += [ "ligo" ]
|
||||||
ProcessToComplete += [ "zone" ] # works, need to check completeness
|
ProcessToComplete += [ "zone" ]
|
||||||
ProcessToComplete += [ "ig" ] # fully implemented
|
ProcessToComplete += [ "ig" ] # fully implemented
|
||||||
ProcessToComplete += [ "zone_light" ] # works, need to check completeness
|
ProcessToComplete += [ "zone_light" ] # works, need to check completeness
|
||||||
ProcessToComplete += [ "rbank" ] # works, need to check completeness
|
ProcessToComplete += [ "rbank" ]
|
||||||
ProcessToComplete += [ "ig_light" ] # fully implemented
|
ProcessToComplete += [ "ig_light" ] # fully implemented
|
||||||
ProcessToComplete += [ "ps" ]
|
ProcessToComplete += [ "ps" ]
|
||||||
|
|
||||||
|
|
||||||
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
EcosystemName = "jungle"
|
EcosystemName = "jungle"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
ContinentName = "newbieland"
|
ContinentName = "newbieland"
|
||||||
|
ContinentPath = "continents/" + ContinentName
|
||||||
|
CommonName = ContinentName
|
||||||
|
CommonPath = ContinentPath
|
||||||
|
|
||||||
|
|
||||||
# *** LANDSCAPE NAME ***
|
# *** LANDSCAPE NAME ***
|
||||||
|
|
|
@ -0,0 +1,245 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file directories.py
|
||||||
|
# \brief Directories configuration
|
||||||
|
# \date 2010-09-03-10-06-GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# \date 2001-2005
|
||||||
|
# \author Nevrax
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Directories configuration for 'desert' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "desert"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
DatabaseRootName = "fyros"
|
||||||
|
DatabaseRootPath = "stuff/" + DatabaseRootName
|
||||||
|
|
||||||
|
|
||||||
|
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeSourceDirectories = [ ]
|
||||||
|
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
||||||
|
|
||||||
|
# Maps directories
|
||||||
|
MapSourceDirectories = [ ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures/vegetations" ]
|
||||||
|
MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
||||||
|
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
||||||
|
|
||||||
|
MapUncompressedSourceDirectories = [ ]
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesSourceDirectories = [ ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/1.5-marecage_profond" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/1-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/2-citees" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/3-fond_canyon" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/4.2-boisbandeclair" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/4.5-desert2boisbande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/4-falaise_bois_bande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/5-falaise_normales" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/6.5-desertalternatif" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/6-desert" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/7-routes" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/8-foretbrule" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/1.5-marecage_profond" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/1-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/2-citees" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/3-fond_canyon" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/4.2-boisbandeclair" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/4.5-desert2boisbande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/4-falaise_bois_bande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/5-falaise_normales" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/6.5-desertalternatif" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/6-desert" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/7-routes" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/8-foretbrule" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/1.5-marecage_profond" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/1-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/2-citees" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/3-fond_canyon" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/4.2-boisbandeclair" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/4.5-desert2boisbande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/4-falaise_bois_bande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/5-falaise_normales" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/6.5-desertalternatif" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/6-desert" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/7-routes" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/8-foretbrule" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/1.5-marecage_profond" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/1-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/2-citees" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/3-fond_canyon" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/4.2-boisbandeclair" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/4.5-desert2boisbande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/4-falaise_bois_bande" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/5-falaise_normales" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/6.5-desertalternatif" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/6-desert" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/7-routes" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/8-foretbrule" ]
|
||||||
|
|
||||||
|
# Tiles root directory
|
||||||
|
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
|
||||||
|
|
||||||
|
# Do not use, needs to be removed and fixed in processes
|
||||||
|
DisplaceSourceDirectories = [ ]
|
||||||
|
DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Vegetable set directories
|
||||||
|
VegetSetSourceDirectories = [ ]
|
||||||
|
VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetSourceDirectories = [ ]
|
||||||
|
VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
|
||||||
|
|
||||||
|
# Ig landscape directories
|
||||||
|
IgLandSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ig other directories
|
||||||
|
IgOtherSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimSourceDirectories = [ ]
|
||||||
|
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeTagExportDirectory = CommonPath + "/shape_tag"
|
||||||
|
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
|
||||||
|
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
|
||||||
|
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
|
||||||
|
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
||||||
|
|
||||||
|
# Smallbank directories
|
||||||
|
SmallbankExportDirectory = CommonPath + "/smallbank"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesExportDirectory = CommonPath + "/tiles"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
DisplaceExportDirectory = CommonPath + "/diplace"
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetExportDirectory = CommonPath + "/veget"
|
||||||
|
VegetTagExportDirectory = CommonPath + "/veget_tag"
|
||||||
|
|
||||||
|
# Veget Set directories
|
||||||
|
VegetSetExportDirectory = CommonPath + "/veget_set"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoDatabaseExportDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoDatabaseIgExportDirectory = LigoDatabaseExportDirectory + "/igs"
|
||||||
|
LigoDatabaseZoneExportDirectory = LigoDatabaseExportDirectory + "/zones"
|
||||||
|
LigoDatabaseZoneLigoExportDirectory = LigoDatabaseExportDirectory + "/zoneligos"
|
||||||
|
LigoDatabaseCmbExportDirectory = LigoDatabaseExportDirectory + "/cmb"
|
||||||
|
LigoTagExportDirectory = CommonPath + "/ligo_tag"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneExportDirectory = CommonPath + "/zone"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimExportDirectory = CommonPath + "/pacs_prim"
|
||||||
|
|
||||||
|
|
||||||
|
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Map directories
|
||||||
|
MapBuildDirectory = CommonPath + "/map"
|
||||||
|
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
|
||||||
|
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
|
||||||
|
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
|
||||||
|
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
||||||
|
|
||||||
|
# Farbank directories
|
||||||
|
FarbankBuildDirectory = CommonPath + "/farbank"
|
||||||
|
|
||||||
|
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
||||||
|
IgLandBuildDirectory = "_invalid"
|
||||||
|
IgOtherBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Rbank directories
|
||||||
|
RbankOutputBuildDirectory = "_invalid"
|
||||||
|
RbankMeshBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
|
||||||
|
|
||||||
|
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
||||||
|
|
||||||
|
# Map directory
|
||||||
|
MapClientDirectory = CommonName + "_maps"
|
||||||
|
BitmapClientDirectory = MapClientDirectory
|
||||||
|
|
||||||
|
# Shape directory
|
||||||
|
ShapeClientDirectory = CommonName + "_shapes"
|
||||||
|
|
||||||
|
# Lightmap directory
|
||||||
|
LightmapClientDirectory = CommonName + "_lightmaps"
|
||||||
|
|
||||||
|
# Tile directory
|
||||||
|
TilesClientDirectory = CommonName + "_tiles"
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceClientDirectory = CommonName + "_displaces"
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankClientDirectory = CommonName + "_bank"
|
||||||
|
|
||||||
|
# Vegetable set directory
|
||||||
|
VegetSetClientDirectory = CommonName + "_vegetable_sets"
|
||||||
|
|
||||||
|
# Vegetable shape directory
|
||||||
|
VegetClientDirectory = CommonName + "_vegetables"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimClientDirectory = CommonName + "_pacs_prim"
|
|
@ -0,0 +1,128 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file config.py
|
||||||
|
# \brief Process configuration
|
||||||
|
# \date 2010-09-03-10-06-GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Process configuration for 'desert' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# *** PROCESS CONFIGURATION ***
|
||||||
|
|
||||||
|
# *** PROCESS CONFIG ***
|
||||||
|
ProcessToComplete = [ ]
|
||||||
|
ProcessToComplete += [ "shape" ]
|
||||||
|
ProcessToComplete += [ "map" ]
|
||||||
|
ProcessToComplete += [ "smallbank" ]
|
||||||
|
ProcessToComplete += [ "farbank" ]
|
||||||
|
ProcessToComplete += [ "tiles" ]
|
||||||
|
ProcessToComplete += [ "displace" ]
|
||||||
|
ProcessToComplete += [ "veget" ]
|
||||||
|
ProcessToComplete += [ "vegetset" ]
|
||||||
|
ProcessToComplete += [ "ligo" ]
|
||||||
|
ProcessToComplete += [ "pacs_prim" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "desert"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
|
||||||
|
# *** MAP EXPORT OPTIONS ***
|
||||||
|
PanoplyFileList = [ ]
|
||||||
|
HlsBankFileName = ""
|
||||||
|
|
||||||
|
# *** SHAPE EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Compute lightmaps ?
|
||||||
|
ShapeExportOptExportLighting = "true"
|
||||||
|
|
||||||
|
# Cast shadow in lightmap ?
|
||||||
|
ShapeExportOptShadow = "true"
|
||||||
|
|
||||||
|
# Lighting limits. 0 : normal, 1 : soft shadows
|
||||||
|
ShapeExportOptLightingLimit = 1
|
||||||
|
|
||||||
|
# Lightmap lumel size
|
||||||
|
ShapeExportOptLumelSize = "0.25"
|
||||||
|
|
||||||
|
# Oversampling value. Can be 1, 2, 4 or 8
|
||||||
|
ShapeExportOptOversampling = 1
|
||||||
|
|
||||||
|
# Does the lightmap must be generated in 8 bits format ?
|
||||||
|
ShapeExportOpt8BitsLightmap = "true"
|
||||||
|
|
||||||
|
# Does the lightmaps export must generate logs ?
|
||||||
|
ShapeExportOptLightmapLog = "true"
|
||||||
|
|
||||||
|
# Coarse mesh texture mul size
|
||||||
|
TextureMulSizeValue = "1.5"
|
||||||
|
|
||||||
|
DoBuildShadowSkin = 0
|
||||||
|
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** COARSE MESH TEXTURE NAME ***
|
||||||
|
CoarseMeshTextureNames = [ ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_sp" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_su" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_au" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_wi" ]
|
||||||
|
|
||||||
|
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
||||||
|
MultipleTilesPostfix = [ ]
|
||||||
|
MultipleTilesPostfix += [ "_sp" ]
|
||||||
|
MultipleTilesPostfix += [ "_su" ]
|
||||||
|
MultipleTilesPostfix += [ "_au" ]
|
||||||
|
MultipleTilesPostfix += [ "_wi" ]
|
||||||
|
|
||||||
|
# *** BANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Name of the tilebank to use
|
||||||
|
BankTileBankName = EcosystemName
|
||||||
|
|
||||||
|
# *** RBANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Output names
|
||||||
|
RbankRbankName = "_invalid"
|
||||||
|
|
||||||
|
# *** LIGO OPTIONS ***
|
||||||
|
|
||||||
|
LigoExportLand = ""
|
||||||
|
LigoExportOnePass = 0
|
||||||
|
|
||||||
|
# *** MAPS OPTIONS ***
|
||||||
|
|
||||||
|
ReduceBitmapFactor = 0
|
||||||
|
|
||||||
|
# *** SHAPE BUILD OPTIONS *
|
||||||
|
|
||||||
|
DoBuildShadowSkin = False
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** PACS_PRIM OPTIONS ***
|
||||||
|
WantLandscapeColPrimPacsList = True
|
|
@ -1,13 +1,17 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file directories.py
|
# \file directories.py
|
||||||
# \brief Directories configuration
|
# \brief Directories configuration
|
||||||
# \date 2010-05-24 06:34GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# \date 2001-2005
|
# \date 2001-2005
|
||||||
# \author Nevrax
|
# \author Nevrax
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Directories configuration.
|
# Directories configuration for 'jungle' ecosystem.
|
||||||
#
|
#
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
# Copyright (C) 2010 Winch Gate Property Limited
|
# Copyright (C) 2010 Winch Gate Property Limited
|
||||||
|
@ -27,22 +31,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
# *** ECOSYSTEM NAME ***
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
EcosystemName = "jungle"
|
EcosystemName = "jungle"
|
||||||
EcosystemPath = "ecosystems/" + EcosystemName
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
CommonPath = EcosystemPath
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
DatabaseRootName = "jungle"
|
||||||
|
DatabaseRootPath = "stuff/" + DatabaseRootName
|
||||||
|
|
||||||
|
|
||||||
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
||||||
|
|
||||||
# Shape directories
|
# Shape directories
|
||||||
ShapeSourceDirectories = [ ]
|
ShapeSourceDirectories = [ ]
|
||||||
ShapeSourceDirectories += [ "stuff/" + EcosystemName + "/decors/vegetations" ]
|
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
||||||
|
|
||||||
# Maps directories
|
# Maps directories
|
||||||
MapSourceDirectories = [ ]
|
MapSourceDirectories = [ ]
|
||||||
MapSourceDirectories += [ "stuff/" + EcosystemName + "/decors/_textures/Vegetations" ]
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures/vegetations" ]
|
||||||
MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
||||||
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
||||||
|
|
||||||
|
@ -50,7 +60,9 @@ MapUncompressedSourceDirectories = [ ]
|
||||||
|
|
||||||
# Tiles directories
|
# Tiles directories
|
||||||
TilesSourceDirectories = [ ]
|
TilesSourceDirectories = [ ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/10-crevassejungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/11-paroisjungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/12-vasejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/1-junglemousse" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/1-junglemousse" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/2-junglefeuilles" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/2-junglefeuilles" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/3-jungleherbesseche" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/3-jungleherbesseche" ]
|
||||||
|
@ -60,11 +72,10 @@ TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/6
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/7-sciurejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/7-sciurejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/8-terrejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/8-terrejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/9-falaisejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/9-falaisejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/10-crevassejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/11-paroisjungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/12-vasejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/Transitions" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/Transitions" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/10-crevassejungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/11-paroisjungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/12-vasejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/1-junglemousse" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/1-junglemousse" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/2-junglefeuilles" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/2-junglefeuilles" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/3-jungleherbesseche" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/3-jungleherbesseche" ]
|
||||||
|
@ -74,11 +85,10 @@ TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/6
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/7-sciurejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/7-sciurejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/8-terrejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/8-terrejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/9-falaisejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/9-falaisejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/10-crevassejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/11-paroisjungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/12-vasejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/Transitions" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/Transitions" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/10-crevassejungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/11-paroisjungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/12-vasejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/1-junglemousse" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/1-junglemousse" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/2-junglefeuilles" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/2-junglefeuilles" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/3-jungleherbesseche" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/3-jungleherbesseche" ]
|
||||||
|
@ -88,11 +98,10 @@ TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/6
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/7-sciurejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/7-sciurejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/8-terrejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/8-terrejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/9-falaisejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/9-falaisejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/10-crevassejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/11-paroisjungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/12-vasejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/Transitions" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/Transitions" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/10-crevassejungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/11-paroisjungle" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/12-vasejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/1-junglemousse" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/1-junglemousse" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/2-junglefeuilles" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/2-junglefeuilles" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/3-jungleherbesseche" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/3-jungleherbesseche" ]
|
||||||
|
@ -102,9 +111,6 @@ TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/6
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/7-sciurejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/7-sciurejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/8-terrejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/8-terrejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/9-falaisejungle" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/9-falaisejungle" ]
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/10-crevassejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/11-paroisjungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/12-vasejungle" ]
|
|
||||||
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/Transitions" ]
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/Transitions" ]
|
||||||
|
|
||||||
# Tiles root directory
|
# Tiles root directory
|
||||||
|
@ -133,7 +139,7 @@ LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||||
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||||
|
|
||||||
# Zone directories
|
# Zone directories
|
||||||
ZoneSourceDirectory = "landscape/zones/" + EcosystemName
|
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
|
||||||
|
|
||||||
# Ig landscape directories
|
# Ig landscape directories
|
||||||
IgLandSourceDirectory = "_invalid"
|
IgLandSourceDirectory = "_invalid"
|
||||||
|
@ -143,7 +149,7 @@ IgOtherSourceDirectory = "_invalid"
|
||||||
|
|
||||||
# PACS primitives directories
|
# PACS primitives directories
|
||||||
PacsPrimSourceDirectories = [ ]
|
PacsPrimSourceDirectories = [ ]
|
||||||
PacsPrimSourceDirectories += [ "stuff/" + EcosystemName + "/decors/vegetations" ]
|
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
|
||||||
|
|
||||||
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
@ -156,20 +162,20 @@ ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_opt
|
||||||
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
||||||
|
|
||||||
# Smallbank directories
|
# Smallbank directories
|
||||||
SmallbankExportDirectory = "ecosystems/" + EcosystemName + "/smallbank"
|
SmallbankExportDirectory = CommonPath + "/smallbank"
|
||||||
|
|
||||||
# Tiles directories
|
# Tiles directories
|
||||||
TilesExportDirectory = "ecosystems/" + EcosystemName + "/tiles"
|
TilesExportDirectory = CommonPath + "/tiles"
|
||||||
|
|
||||||
# Tiles directories
|
# Tiles directories
|
||||||
DisplaceExportDirectory = "ecosystems/" + EcosystemName + "/diplace"
|
DisplaceExportDirectory = CommonPath + "/diplace"
|
||||||
|
|
||||||
# Veget directories
|
# Veget directories
|
||||||
VegetExportDirectory = "ecosystems/" + EcosystemName + "/veget"
|
VegetExportDirectory = CommonPath + "/veget"
|
||||||
VegetTagExportDirectory = "ecosystems/" + EcosystemName + "/veget_tag"
|
VegetTagExportDirectory = CommonPath + "/veget_tag"
|
||||||
|
|
||||||
# Veget Set directories
|
# Veget Set directories
|
||||||
VegetSetExportDirectory = "ecosystems/" + EcosystemName + "/veget_set"
|
VegetSetExportDirectory = CommonPath + "/veget_set"
|
||||||
|
|
||||||
# Ligo directories
|
# Ligo directories
|
||||||
LigoDatabaseExportDirectory = "landscape/ligo/" + EcosystemName
|
LigoDatabaseExportDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
@ -177,13 +183,13 @@ LigoDatabaseIgExportDirectory = LigoDatabaseExportDirectory + "/igs"
|
||||||
LigoDatabaseZoneExportDirectory = LigoDatabaseExportDirectory + "/zones"
|
LigoDatabaseZoneExportDirectory = LigoDatabaseExportDirectory + "/zones"
|
||||||
LigoDatabaseZoneLigoExportDirectory = LigoDatabaseExportDirectory + "/zoneligos"
|
LigoDatabaseZoneLigoExportDirectory = LigoDatabaseExportDirectory + "/zoneligos"
|
||||||
LigoDatabaseCmbExportDirectory = LigoDatabaseExportDirectory + "/cmb"
|
LigoDatabaseCmbExportDirectory = LigoDatabaseExportDirectory + "/cmb"
|
||||||
LigoTagExportDirectory = "ecosystems/" + EcosystemName + "/ligo_tag"
|
LigoTagExportDirectory = CommonPath + "/ligo_tag"
|
||||||
|
|
||||||
# Zone directories
|
# Zone directories
|
||||||
ZoneExportDirectory = "ecosystems/" + EcosystemName + "/zone"
|
ZoneExportDirectory = CommonPath + "/zone"
|
||||||
|
|
||||||
# PACS primitives directories
|
# PACS primitives directories
|
||||||
PacsPrimExportDirectory = "ecosystems/" + EcosystemName + "/pacs_prim"
|
PacsPrimExportDirectory = CommonPath + "/pacs_prim"
|
||||||
|
|
||||||
|
|
||||||
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
@ -199,7 +205,7 @@ ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
|
||||||
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
||||||
|
|
||||||
# Farbank directories
|
# Farbank directories
|
||||||
FarbankBuildDirectory = "ecosystems/" + EcosystemName + "/farbank"
|
FarbankBuildDirectory = CommonPath + "/farbank"
|
||||||
|
|
||||||
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
||||||
IgLandBuildDirectory = "_invalid"
|
IgLandBuildDirectory = "_invalid"
|
||||||
|
@ -214,44 +220,30 @@ RbankMeshBuildDirectory = "_invalid"
|
||||||
|
|
||||||
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
||||||
|
|
||||||
# Client directories
|
|
||||||
ClientSetupDirectories = [ ]
|
|
||||||
ClientSetupDirectories += [ "jungle_shapes" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_maps" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_tiles" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_displaces" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_bank" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_vegetables" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_vegetable_sets" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_pacs_prim" ]
|
|
||||||
ClientSetupDirectories += [ "jungle_lightmaps" ]
|
|
||||||
|
|
||||||
# Map directory
|
|
||||||
MapClientDirectory = "jungle_maps"
|
|
||||||
|
|
||||||
# Map directory
|
# Map directory
|
||||||
|
MapClientDirectory = CommonName + "_maps"
|
||||||
BitmapClientDirectory = MapClientDirectory
|
BitmapClientDirectory = MapClientDirectory
|
||||||
|
|
||||||
# Shape directory
|
# Shape directory
|
||||||
ShapeClientDirectory = "jungle_shapes"
|
ShapeClientDirectory = CommonName + "_shapes"
|
||||||
|
|
||||||
# Lightmap directory
|
# Lightmap directory
|
||||||
LightmapClientDirectory = "jungle_lightmaps"
|
LightmapClientDirectory = CommonName + "_lightmaps"
|
||||||
|
|
||||||
# Tile directory
|
# Tile directory
|
||||||
TilesClientDirectory = "jungle_tiles"
|
TilesClientDirectory = CommonName + "_tiles"
|
||||||
|
|
||||||
# Displace directory
|
# Displace directory
|
||||||
DisplaceClientDirectory = "jungle_displaces"
|
DisplaceClientDirectory = CommonName + "_displaces"
|
||||||
|
|
||||||
# Bank directory
|
# Bank directory
|
||||||
BankClientDirectory = "jungle_bank"
|
BankClientDirectory = CommonName + "_bank"
|
||||||
|
|
||||||
# Vegetable set directory
|
# Vegetable set directory
|
||||||
VegetSetClientDirectory = "jungle_vegetable_sets"
|
VegetSetClientDirectory = CommonName + "_vegetable_sets"
|
||||||
|
|
||||||
# Vegetable shape directory
|
# Vegetable shape directory
|
||||||
VegetClientDirectory = "jungle_vegetables"
|
VegetClientDirectory = CommonName + "_vegetables"
|
||||||
|
|
||||||
# PACS primitives directories
|
# PACS primitives directories
|
||||||
PacsPrimClientDirectory = "jungle_pacs_prim"
|
PacsPrimClientDirectory = CommonName + "_pacs_prim"
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
#
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
# \file config.py
|
# \file config.py
|
||||||
# \brief Process configuration
|
# \brief Process configuration
|
||||||
# \date 2010-05-24 06:30GMT
|
# \date 2010-09-03-10-06-GMT
|
||||||
# \author Jan Boon (Kaetemi)
|
# \author Jan Boon (Kaetemi)
|
||||||
# Python port of game data build pipeline.
|
# Python port of game data build pipeline.
|
||||||
# Process configuration.
|
# Process configuration for 'jungle' ecosystem.
|
||||||
#
|
#
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
# Copyright (C) 2010 Winch Gate Property Limited
|
# Copyright (C) 2010 Winch Gate Property Limited
|
||||||
|
@ -28,17 +32,26 @@
|
||||||
|
|
||||||
# *** PROCESS CONFIG ***
|
# *** PROCESS CONFIG ***
|
||||||
ProcessToComplete = [ ]
|
ProcessToComplete = [ ]
|
||||||
ProcessToComplete += [ "shape" ] # not fully implemented, but works for this process
|
ProcessToComplete += [ "shape" ]
|
||||||
ProcessToComplete += [ "map" ] # not fully implemented, but works for this process
|
ProcessToComplete += [ "map" ]
|
||||||
ProcessToComplete += [ "smallbank" ] # OK
|
ProcessToComplete += [ "smallbank" ]
|
||||||
ProcessToComplete += [ "farbank" ] # OK
|
ProcessToComplete += [ "farbank" ]
|
||||||
ProcessToComplete += [ "tiles" ] # OK
|
ProcessToComplete += [ "tiles" ]
|
||||||
ProcessToComplete += [ "displace" ] # OK
|
ProcessToComplete += [ "displace" ]
|
||||||
ProcessToComplete += [ "veget" ] # OK
|
ProcessToComplete += [ "veget" ]
|
||||||
ProcessToComplete += [ "vegetset" ] # OK
|
ProcessToComplete += [ "vegetset" ]
|
||||||
ProcessToComplete += [ "ligo" ] # not fully implemented, works for this process, but does not export max files
|
ProcessToComplete += [ "ligo" ]
|
||||||
ProcessToComplete += [ "pacs_prim" ]
|
ProcessToComplete += [ "pacs_prim" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "jungle"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
|
||||||
# *** MAP EXPORT OPTIONS ***
|
# *** MAP EXPORT OPTIONS ***
|
||||||
PanoplyFileList = [ ]
|
PanoplyFileList = [ ]
|
||||||
HlsBankFileName = ""
|
HlsBankFileName = ""
|
||||||
|
@ -52,7 +65,7 @@ ShapeExportOptExportLighting = "true"
|
||||||
ShapeExportOptShadow = "true"
|
ShapeExportOptShadow = "true"
|
||||||
|
|
||||||
# Lighting limits. 0 : normal, 1 : soft shadows
|
# Lighting limits. 0 : normal, 1 : soft shadows
|
||||||
ShapeExportOptLightingLimit = 0
|
ShapeExportOptLightingLimit = 1
|
||||||
|
|
||||||
# Lightmap lumel size
|
# Lightmap lumel size
|
||||||
ShapeExportOptLumelSize = "0.25"
|
ShapeExportOptLumelSize = "0.25"
|
||||||
|
@ -64,7 +77,7 @@ ShapeExportOptOversampling = 1
|
||||||
ShapeExportOpt8BitsLightmap = "false"
|
ShapeExportOpt8BitsLightmap = "false"
|
||||||
|
|
||||||
# Does the lightmaps export must generate logs ?
|
# Does the lightmaps export must generate logs ?
|
||||||
ShapeExportOptLightmapLog = "false"
|
ShapeExportOptLightmapLog = "true"
|
||||||
|
|
||||||
# Coarse mesh texture mul size
|
# Coarse mesh texture mul size
|
||||||
TextureMulSizeValue = "1.5"
|
TextureMulSizeValue = "1.5"
|
||||||
|
@ -75,10 +88,10 @@ ClodConfigFile = ""
|
||||||
|
|
||||||
# *** COARSE MESH TEXTURE NAME ***
|
# *** COARSE MESH TEXTURE NAME ***
|
||||||
CoarseMeshTextureNames = [ ]
|
CoarseMeshTextureNames = [ ]
|
||||||
CoarseMeshTextureNames += [ "nel_coarse_mesh_jungle_sp" ]
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_sp" ]
|
||||||
CoarseMeshTextureNames += [ "nel_coarse_mesh_jungle_su" ]
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_su" ]
|
||||||
CoarseMeshTextureNames += [ "nel_coarse_mesh_jungle_au" ]
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_au" ]
|
||||||
CoarseMeshTextureNames += [ "nel_coarse_mesh_jungle_wi" ]
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_wi" ]
|
||||||
|
|
||||||
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
||||||
MultipleTilesPostfix = [ ]
|
MultipleTilesPostfix = [ ]
|
||||||
|
@ -90,7 +103,7 @@ MultipleTilesPostfix += [ "_wi" ]
|
||||||
# *** BANK EXPORT OPTIONS ***
|
# *** BANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
# Name of the tilebank to use
|
# Name of the tilebank to use
|
||||||
BankTileBankName = "jungle"
|
BankTileBankName = EcosystemName
|
||||||
|
|
||||||
# *** RBANK EXPORT OPTIONS ***
|
# *** RBANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,257 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file directories.py
|
||||||
|
# \brief Directories configuration
|
||||||
|
# \date 2010-09-03-10-06-GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# \date 2001-2005
|
||||||
|
# \author Nevrax
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Directories configuration for 'lacustre' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "lacustre"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
DatabaseRootName = "tryker"
|
||||||
|
DatabaseRootPath = "stuff/" + DatabaseRootName
|
||||||
|
|
||||||
|
|
||||||
|
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeSourceDirectories = [ ]
|
||||||
|
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
||||||
|
|
||||||
|
# Maps directories
|
||||||
|
MapSourceDirectories = [ ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures/vegetations" ]
|
||||||
|
MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
||||||
|
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
||||||
|
|
||||||
|
MapUncompressedSourceDirectories = [ ]
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesSourceDirectories = [ ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/1a-sable-marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/1-plages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/2-iles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/2-ilesa" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/2-iles-marines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/3-fondmarin2plage" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/4-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/5-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/5-parois-marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/6-fond_marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/7-bassesiles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/7-mousseter" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/7-racines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/8-mousse_marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/constructible" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/1a-sable-marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/1-plages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/2-iles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/2-ilesa" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/2-iles-marines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/3-fondmarin2plage" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/4-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/5-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/5-parois-marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/6-fond_marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/7-bassesiles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/7-mousseter" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/7-racines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/8-mousse_marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/constructible" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/1a-sable-marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/1-plages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/2-iles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/2-ilesa" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/2-iles-marines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/3-fondmarin2plage" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/4-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/5-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/5-parois-marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/6-fond_marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/7-bassesiles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/7-mousseter" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/7-racines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/8-mousse_marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/constructible" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/1a-sable-marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/1-plages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/2-iles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/2-ilesa" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/2-iles-marines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/3-fondmarin2plage" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/4-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/5-marecages" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/5-parois-marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/6-fond_marin" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/7-bassesiles" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/7-mousseter" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/7-racines" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/8-mousse_marine" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/constructible" ]
|
||||||
|
|
||||||
|
# Tiles root directory
|
||||||
|
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
|
||||||
|
|
||||||
|
# Do not use, needs to be removed and fixed in processes
|
||||||
|
DisplaceSourceDirectories = [ ]
|
||||||
|
DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Vegetable set directories
|
||||||
|
VegetSetSourceDirectories = [ ]
|
||||||
|
VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetSourceDirectories = [ ]
|
||||||
|
VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
|
||||||
|
|
||||||
|
# Ig landscape directories
|
||||||
|
IgLandSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ig other directories
|
||||||
|
IgOtherSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimSourceDirectories = [ ]
|
||||||
|
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeTagExportDirectory = CommonPath + "/shape_tag"
|
||||||
|
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
|
||||||
|
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
|
||||||
|
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
|
||||||
|
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
||||||
|
|
||||||
|
# Smallbank directories
|
||||||
|
SmallbankExportDirectory = CommonPath + "/smallbank"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesExportDirectory = CommonPath + "/tiles"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
DisplaceExportDirectory = CommonPath + "/diplace"
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetExportDirectory = CommonPath + "/veget"
|
||||||
|
VegetTagExportDirectory = CommonPath + "/veget_tag"
|
||||||
|
|
||||||
|
# Veget Set directories
|
||||||
|
VegetSetExportDirectory = CommonPath + "/veget_set"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoDatabaseExportDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoDatabaseIgExportDirectory = LigoDatabaseExportDirectory + "/igs"
|
||||||
|
LigoDatabaseZoneExportDirectory = LigoDatabaseExportDirectory + "/zones"
|
||||||
|
LigoDatabaseZoneLigoExportDirectory = LigoDatabaseExportDirectory + "/zoneligos"
|
||||||
|
LigoDatabaseCmbExportDirectory = LigoDatabaseExportDirectory + "/cmb"
|
||||||
|
LigoTagExportDirectory = CommonPath + "/ligo_tag"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneExportDirectory = CommonPath + "/zone"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimExportDirectory = CommonPath + "/pacs_prim"
|
||||||
|
|
||||||
|
|
||||||
|
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Map directories
|
||||||
|
MapBuildDirectory = CommonPath + "/map"
|
||||||
|
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
|
||||||
|
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
|
||||||
|
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
|
||||||
|
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
||||||
|
|
||||||
|
# Farbank directories
|
||||||
|
FarbankBuildDirectory = CommonPath + "/farbank"
|
||||||
|
|
||||||
|
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
||||||
|
IgLandBuildDirectory = "_invalid"
|
||||||
|
IgOtherBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Rbank directories
|
||||||
|
RbankOutputBuildDirectory = "_invalid"
|
||||||
|
RbankMeshBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
|
||||||
|
|
||||||
|
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
||||||
|
|
||||||
|
# Map directory
|
||||||
|
MapClientDirectory = CommonName + "_maps"
|
||||||
|
BitmapClientDirectory = MapClientDirectory
|
||||||
|
|
||||||
|
# Shape directory
|
||||||
|
ShapeClientDirectory = CommonName + "_shapes"
|
||||||
|
|
||||||
|
# Lightmap directory
|
||||||
|
LightmapClientDirectory = CommonName + "_lightmaps"
|
||||||
|
|
||||||
|
# Tile directory
|
||||||
|
TilesClientDirectory = CommonName + "_tiles"
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceClientDirectory = CommonName + "_displaces"
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankClientDirectory = CommonName + "_bank"
|
||||||
|
|
||||||
|
# Vegetable set directory
|
||||||
|
VegetSetClientDirectory = CommonName + "_vegetable_sets"
|
||||||
|
|
||||||
|
# Vegetable shape directory
|
||||||
|
VegetClientDirectory = CommonName + "_vegetables"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimClientDirectory = CommonName + "_pacs_prim"
|
|
@ -0,0 +1,128 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file config.py
|
||||||
|
# \brief Process configuration
|
||||||
|
# \date 2010-09-03-10-06-GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Process configuration for 'lacustre' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# *** PROCESS CONFIGURATION ***
|
||||||
|
|
||||||
|
# *** PROCESS CONFIG ***
|
||||||
|
ProcessToComplete = [ ]
|
||||||
|
ProcessToComplete += [ "shape" ]
|
||||||
|
ProcessToComplete += [ "map" ]
|
||||||
|
ProcessToComplete += [ "smallbank" ]
|
||||||
|
ProcessToComplete += [ "farbank" ]
|
||||||
|
ProcessToComplete += [ "tiles" ]
|
||||||
|
ProcessToComplete += [ "displace" ]
|
||||||
|
ProcessToComplete += [ "veget" ]
|
||||||
|
ProcessToComplete += [ "vegetset" ]
|
||||||
|
ProcessToComplete += [ "ligo" ]
|
||||||
|
ProcessToComplete += [ "pacs_prim" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "lacustre"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
|
||||||
|
# *** MAP EXPORT OPTIONS ***
|
||||||
|
PanoplyFileList = [ ]
|
||||||
|
HlsBankFileName = ""
|
||||||
|
|
||||||
|
# *** SHAPE EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Compute lightmaps ?
|
||||||
|
ShapeExportOptExportLighting = "true"
|
||||||
|
|
||||||
|
# Cast shadow in lightmap ?
|
||||||
|
ShapeExportOptShadow = "true"
|
||||||
|
|
||||||
|
# Lighting limits. 0 : normal, 1 : soft shadows
|
||||||
|
ShapeExportOptLightingLimit = 0
|
||||||
|
|
||||||
|
# Lightmap lumel size
|
||||||
|
ShapeExportOptLumelSize = "0.25"
|
||||||
|
|
||||||
|
# Oversampling value. Can be 1, 2, 4 or 8
|
||||||
|
ShapeExportOptOversampling = 8
|
||||||
|
|
||||||
|
# Does the lightmap must be generated in 8 bits format ?
|
||||||
|
ShapeExportOpt8BitsLightmap = "false"
|
||||||
|
|
||||||
|
# Does the lightmaps export must generate logs ?
|
||||||
|
ShapeExportOptLightmapLog = "true"
|
||||||
|
|
||||||
|
# Coarse mesh texture mul size
|
||||||
|
TextureMulSizeValue = "1.5"
|
||||||
|
|
||||||
|
DoBuildShadowSkin = 0
|
||||||
|
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** COARSE MESH TEXTURE NAME ***
|
||||||
|
CoarseMeshTextureNames = [ ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_sp" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_su" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_au" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_wi" ]
|
||||||
|
|
||||||
|
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
||||||
|
MultipleTilesPostfix = [ ]
|
||||||
|
MultipleTilesPostfix += [ "_sp" ]
|
||||||
|
MultipleTilesPostfix += [ "_su" ]
|
||||||
|
MultipleTilesPostfix += [ "_au" ]
|
||||||
|
MultipleTilesPostfix += [ "_wi" ]
|
||||||
|
|
||||||
|
# *** BANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Name of the tilebank to use
|
||||||
|
BankTileBankName = EcosystemName
|
||||||
|
|
||||||
|
# *** RBANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Output names
|
||||||
|
RbankRbankName = "_invalid"
|
||||||
|
|
||||||
|
# *** LIGO OPTIONS ***
|
||||||
|
|
||||||
|
LigoExportLand = ""
|
||||||
|
LigoExportOnePass = 0
|
||||||
|
|
||||||
|
# *** MAPS OPTIONS ***
|
||||||
|
|
||||||
|
ReduceBitmapFactor = 0
|
||||||
|
|
||||||
|
# *** SHAPE BUILD OPTIONS *
|
||||||
|
|
||||||
|
DoBuildShadowSkin = False
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** PACS_PRIM OPTIONS ***
|
||||||
|
WantLandscapeColPrimPacsList = True
|
|
@ -0,0 +1,242 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file directories.py
|
||||||
|
# \brief Directories configuration
|
||||||
|
# \date 2010-09-03-10-06-GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# \date 2001-2005
|
||||||
|
# \author Nevrax
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Directories configuration for 'primes_racines' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "primes_racines"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
DatabaseRootName = "primes_racines"
|
||||||
|
DatabaseRootPath = "stuff/" + DatabaseRootName
|
||||||
|
|
||||||
|
|
||||||
|
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeSourceDirectories = [ ]
|
||||||
|
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
||||||
|
|
||||||
|
# Maps directories
|
||||||
|
MapSourceDirectories = [ ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures/vegetations" ]
|
||||||
|
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures/batiments" ]
|
||||||
|
MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
||||||
|
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
||||||
|
|
||||||
|
MapUncompressedSourceDirectories = [ ]
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesSourceDirectories = [ ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-creux" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-dome-moussu" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-kitiniere" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-mousse-licken" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-mousse-spongieus" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-parois" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-sol-mousse" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-souche" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-stalagmite" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/PR-terre" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_sp/aditif" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-creux" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-dome-moussu" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-kitiniere" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-mousse-licken" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-mousse-spongieus" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-parois" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-sol-mousse" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-souche" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-stalagmite" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/PR-terre" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_su/aditif" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-creux" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-dome-moussu" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-kitiniere" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-mousse-licken" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-mousse-spongieus" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-parois" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-sol-mousse" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-souche" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-stalagmite" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/PR-terre" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_au/aditif" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-creux" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-dome-moussu" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-kitiniere" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-mousse-licken" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-mousse-spongieus" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-parois" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-sol-mousse" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-souche" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-stalagmite" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/PR-terre" ]
|
||||||
|
TilesSourceDirectories += [ "landscape/_texture_tiles/" + EcosystemName + "_wi/aditif" ]
|
||||||
|
|
||||||
|
# Tiles root directory
|
||||||
|
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
|
||||||
|
|
||||||
|
# Do not use, needs to be removed and fixed in processes
|
||||||
|
DisplaceSourceDirectories = [ ]
|
||||||
|
DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||||
|
|
||||||
|
# Vegetable set directories
|
||||||
|
VegetSetSourceDirectories = [ ]
|
||||||
|
VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetSourceDirectories = [ ]
|
||||||
|
VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
|
||||||
|
|
||||||
|
# Ig landscape directories
|
||||||
|
IgLandSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ig other directories
|
||||||
|
IgOtherSourceDirectory = "_invalid"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimSourceDirectories = [ ]
|
||||||
|
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeTagExportDirectory = CommonPath + "/shape_tag"
|
||||||
|
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
|
||||||
|
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
|
||||||
|
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
|
||||||
|
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
||||||
|
|
||||||
|
# Smallbank directories
|
||||||
|
SmallbankExportDirectory = CommonPath + "/smallbank"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
TilesExportDirectory = CommonPath + "/tiles"
|
||||||
|
|
||||||
|
# Tiles directories
|
||||||
|
DisplaceExportDirectory = CommonPath + "/diplace"
|
||||||
|
|
||||||
|
# Veget directories
|
||||||
|
VegetExportDirectory = CommonPath + "/veget"
|
||||||
|
VegetTagExportDirectory = CommonPath + "/veget_tag"
|
||||||
|
|
||||||
|
# Veget Set directories
|
||||||
|
VegetSetExportDirectory = CommonPath + "/veget_set"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
LigoDatabaseExportDirectory = "landscape/ligo/" + EcosystemName
|
||||||
|
LigoDatabaseIgExportDirectory = LigoDatabaseExportDirectory + "/igs"
|
||||||
|
LigoDatabaseZoneExportDirectory = LigoDatabaseExportDirectory + "/zones"
|
||||||
|
LigoDatabaseZoneLigoExportDirectory = LigoDatabaseExportDirectory + "/zoneligos"
|
||||||
|
LigoDatabaseCmbExportDirectory = LigoDatabaseExportDirectory + "/cmb"
|
||||||
|
LigoTagExportDirectory = CommonPath + "/ligo_tag"
|
||||||
|
|
||||||
|
# Zone directories
|
||||||
|
ZoneExportDirectory = CommonPath + "/zone"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimExportDirectory = CommonPath + "/pacs_prim"
|
||||||
|
|
||||||
|
|
||||||
|
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||||
|
|
||||||
|
# Map directories
|
||||||
|
MapBuildDirectory = CommonPath + "/map"
|
||||||
|
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
|
||||||
|
|
||||||
|
# Shape directories
|
||||||
|
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
|
||||||
|
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
|
||||||
|
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
|
||||||
|
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
||||||
|
|
||||||
|
# Farbank directories
|
||||||
|
FarbankBuildDirectory = CommonPath + "/farbank"
|
||||||
|
|
||||||
|
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
||||||
|
IgLandBuildDirectory = "_invalid"
|
||||||
|
IgOtherBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Rbank directories
|
||||||
|
RbankOutputBuildDirectory = "_invalid"
|
||||||
|
RbankMeshBuildDirectory = "_invalid"
|
||||||
|
|
||||||
|
# Ligo directories
|
||||||
|
|
||||||
|
|
||||||
|
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
||||||
|
|
||||||
|
# Map directory
|
||||||
|
MapClientDirectory = CommonName + "_maps"
|
||||||
|
BitmapClientDirectory = MapClientDirectory
|
||||||
|
|
||||||
|
# Shape directory
|
||||||
|
ShapeClientDirectory = CommonName + "_shapes"
|
||||||
|
|
||||||
|
# Lightmap directory
|
||||||
|
LightmapClientDirectory = CommonName + "_lightmaps"
|
||||||
|
|
||||||
|
# Tile directory
|
||||||
|
TilesClientDirectory = CommonName + "_tiles"
|
||||||
|
|
||||||
|
# Displace directory
|
||||||
|
DisplaceClientDirectory = CommonName + "_displaces"
|
||||||
|
|
||||||
|
# Bank directory
|
||||||
|
BankClientDirectory = CommonName + "_bank"
|
||||||
|
|
||||||
|
# Vegetable set directory
|
||||||
|
VegetSetClientDirectory = CommonName + "_vegetable_sets"
|
||||||
|
|
||||||
|
# Vegetable shape directory
|
||||||
|
VegetClientDirectory = CommonName + "_vegetables"
|
||||||
|
|
||||||
|
# PACS primitives directories
|
||||||
|
PacsPrimClientDirectory = CommonName + "_pacs_prim"
|
|
@ -0,0 +1,128 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# #################################################################
|
||||||
|
# ## WARNING : this is a generated file, don't change it !
|
||||||
|
# #################################################################
|
||||||
|
#
|
||||||
|
# \file config.py
|
||||||
|
# \brief Process configuration
|
||||||
|
# \date 2010-09-03-10-06-GMT
|
||||||
|
# \author Jan Boon (Kaetemi)
|
||||||
|
# Python port of game data build pipeline.
|
||||||
|
# Process configuration for 'primes_racines' ecosystem.
|
||||||
|
#
|
||||||
|
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# *** PROCESS CONFIGURATION ***
|
||||||
|
|
||||||
|
# *** PROCESS CONFIG ***
|
||||||
|
ProcessToComplete = [ ]
|
||||||
|
ProcessToComplete += [ "shape" ]
|
||||||
|
ProcessToComplete += [ "map" ]
|
||||||
|
ProcessToComplete += [ "smallbank" ]
|
||||||
|
ProcessToComplete += [ "farbank" ]
|
||||||
|
ProcessToComplete += [ "tiles" ]
|
||||||
|
ProcessToComplete += [ "displace" ]
|
||||||
|
ProcessToComplete += [ "veget" ]
|
||||||
|
ProcessToComplete += [ "vegetset" ]
|
||||||
|
ProcessToComplete += [ "ligo" ]
|
||||||
|
ProcessToComplete += [ "pacs_prim" ]
|
||||||
|
|
||||||
|
|
||||||
|
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||||
|
|
||||||
|
EcosystemName = "primes_racines"
|
||||||
|
EcosystemPath = "ecosystems/" + EcosystemName
|
||||||
|
CommonName = EcosystemName
|
||||||
|
CommonPath = EcosystemPath
|
||||||
|
|
||||||
|
|
||||||
|
# *** MAP EXPORT OPTIONS ***
|
||||||
|
PanoplyFileList = [ ]
|
||||||
|
HlsBankFileName = ""
|
||||||
|
|
||||||
|
# *** SHAPE EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Compute lightmaps ?
|
||||||
|
ShapeExportOptExportLighting = "true"
|
||||||
|
|
||||||
|
# Cast shadow in lightmap ?
|
||||||
|
ShapeExportOptShadow = "true"
|
||||||
|
|
||||||
|
# Lighting limits. 0 : normal, 1 : soft shadows
|
||||||
|
ShapeExportOptLightingLimit = 1
|
||||||
|
|
||||||
|
# Lightmap lumel size
|
||||||
|
ShapeExportOptLumelSize = "0.25"
|
||||||
|
|
||||||
|
# Oversampling value. Can be 1, 2, 4 or 8
|
||||||
|
ShapeExportOptOversampling = 1
|
||||||
|
|
||||||
|
# Does the lightmap must be generated in 8 bits format ?
|
||||||
|
ShapeExportOpt8BitsLightmap = "false"
|
||||||
|
|
||||||
|
# Does the lightmaps export must generate logs ?
|
||||||
|
ShapeExportOptLightmapLog = "true"
|
||||||
|
|
||||||
|
# Coarse mesh texture mul size
|
||||||
|
TextureMulSizeValue = "1.5"
|
||||||
|
|
||||||
|
DoBuildShadowSkin = 0
|
||||||
|
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** COARSE MESH TEXTURE NAME ***
|
||||||
|
CoarseMeshTextureNames = [ ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_sp" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_su" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_au" ]
|
||||||
|
CoarseMeshTextureNames += [ "nel_coarse_mesh_" + EcosystemName + "_wi" ]
|
||||||
|
|
||||||
|
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
||||||
|
MultipleTilesPostfix = [ ]
|
||||||
|
MultipleTilesPostfix += [ "_sp" ]
|
||||||
|
MultipleTilesPostfix += [ "_su" ]
|
||||||
|
MultipleTilesPostfix += [ "_au" ]
|
||||||
|
MultipleTilesPostfix += [ "_wi" ]
|
||||||
|
|
||||||
|
# *** BANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Name of the tilebank to use
|
||||||
|
BankTileBankName = EcosystemName
|
||||||
|
|
||||||
|
# *** RBANK EXPORT OPTIONS ***
|
||||||
|
|
||||||
|
# Output names
|
||||||
|
RbankRbankName = "_invalid"
|
||||||
|
|
||||||
|
# *** LIGO OPTIONS ***
|
||||||
|
|
||||||
|
LigoExportLand = ""
|
||||||
|
LigoExportOnePass = 0
|
||||||
|
|
||||||
|
# *** MAPS OPTIONS ***
|
||||||
|
|
||||||
|
ReduceBitmapFactor = 0
|
||||||
|
|
||||||
|
# *** SHAPE BUILD OPTIONS *
|
||||||
|
|
||||||
|
DoBuildShadowSkin = False
|
||||||
|
ClodConfigFile = ""
|
||||||
|
|
||||||
|
# *** PACS_PRIM OPTIONS ***
|
||||||
|
WantLandscapeColPrimPacsList = True
|
|
@ -35,7 +35,10 @@ ProjectsToProcess += [ "common/sfx" ]
|
||||||
ProjectsToProcess += [ "common/fauna" ]
|
ProjectsToProcess += [ "common/fauna" ]
|
||||||
|
|
||||||
# Ecosystem projects
|
# Ecosystem projects
|
||||||
|
ProjectsToProcess += [ "ecosystems/desert" ]
|
||||||
ProjectsToProcess += [ "ecosystems/jungle" ]
|
ProjectsToProcess += [ "ecosystems/jungle" ]
|
||||||
|
ProjectsToProcess += [ "ecosystems/primes_racines" ]
|
||||||
|
ProjectsToProcess += [ "ecosystems/lacustre" ]
|
||||||
|
|
||||||
# Continent projects
|
# Continent projects
|
||||||
ProjectsToProcess += [ "continents/newbieland" ]
|
ProjectsToProcess += [ "continents/newbieland" ]
|
||||||
|
@ -49,9 +52,7 @@ ProjectsToProcess += [ "common/sky" ] # Depends on jungle/newbieland due to ig_l
|
||||||
#ProjectsToProcess += [ "common/characters" ] # TODO
|
#ProjectsToProcess += [ "common/characters" ] # TODO
|
||||||
#ProjectsToProcess += [ "common/characters_maps_hr" ] # TODO
|
#ProjectsToProcess += [ "common/characters_maps_hr" ] # TODO
|
||||||
#ProjectsToProcess += [ "common/characters_maps_lr" ] # TODO
|
#ProjectsToProcess += [ "common/characters_maps_lr" ] # TODO
|
||||||
#ProjectsToProcess += [ "ecosystems/desert" ] # TODO
|
#ProjectsToProcess += [ "continents/indoors" ] # TODO
|
||||||
#ProjectsToProcess += [ "ecosystems/lacustre" ] # TODO
|
|
||||||
#ProjectsToProcess += [ "ecosystems/primes_racines" ] # TODO
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
# end of file
|
||||||
|
|
Loading…
Reference in a new issue