mirror of
https://github.com/ApfelTeeSaft/lightspeed64.git
synced 2026-09-02 12:23:33 +00:00
Added newlines to group includes, added prefix to material_revert_render_settings. Added enum option instead of boolean for dynamic/static display lists in order to add option for material dynamic display lists.
This commit is contained in:
+31
-24
@@ -6,6 +6,12 @@ import os
|
||||
from .utility import getNameFromPath, PluginError
|
||||
import copy
|
||||
|
||||
dlTypeEnum = [
|
||||
('STATIC', "Static", "Static"),
|
||||
('MATERIAL', 'Dynamic Material', 'Dynamic Material'),
|
||||
('PROCEDURAL', 'Procedural', 'Procedural'),
|
||||
]
|
||||
|
||||
lightIndex = {
|
||||
'LIGHT_1' : 1,
|
||||
'LIGHT_2' : 2,
|
||||
@@ -1550,21 +1556,22 @@ class FModel:
|
||||
if self.materialRevert is not None:
|
||||
self.materialRevert.save_binary(romfile, self.f3d, segments)
|
||||
|
||||
def to_c(self, static):
|
||||
# See dlTypeEnum at top of f3d_gbi.py
|
||||
def to_c(self, dlType):
|
||||
data = ''
|
||||
for name, light in self.lights.items():
|
||||
data += light.to_c() + '\n'
|
||||
for info, texture in self.textures.items():
|
||||
data += texture.to_c() + '\n'
|
||||
for (material, drawLayer), (fMaterial, texDimensions) in self.materials.items():
|
||||
data += fMaterial.to_c(static) + '\n'
|
||||
data += fMaterial.to_c(dlType == 'STATIC') + '\n'
|
||||
for name, meshGroup in self.meshGroups.items():
|
||||
data += meshGroup.to_c(static) + '\n'
|
||||
data += meshGroup.to_c(dlType) + '\n'
|
||||
if self.materialRevert is not None:
|
||||
data += self.materialRevert.to_c(static) + '\n'
|
||||
data += self.materialRevert.to_c(dlType == 'STATIC') + '\n'
|
||||
return data
|
||||
|
||||
def save_c_tex_separate(self, static, texDir, dirpath, texSeparate, texFileName):
|
||||
def save_c_tex_separate(self, dlType, texDir, dirpath, texSeparate, texFileName):
|
||||
data = ''
|
||||
texC = ''
|
||||
|
||||
@@ -1604,11 +1611,11 @@ class FModel:
|
||||
image.filepath = oldpath
|
||||
|
||||
for (material, drawLayer), (fMaterial, texDimensions) in self.materials.items():
|
||||
data += fMaterial.to_c(static) + '\n'
|
||||
data += fMaterial.to_c(dlType == 'STATIC') + '\n'
|
||||
for name, meshGroup in self.meshGroups.items():
|
||||
data += meshGroup.to_c(static) + '\n'
|
||||
data += meshGroup.to_c(dlType) + '\n'
|
||||
if self.materialRevert is not None:
|
||||
data += self.materialRevert.to_c(static) + '\n'
|
||||
data += self.materialRevert.to_c(dlType == 'STATIC') + '\n'
|
||||
|
||||
modelPath = os.path.join(dirpath, 'model.inc.c')
|
||||
modelFile = open(modelPath, 'w')
|
||||
@@ -1629,14 +1636,14 @@ class FModel:
|
||||
if texInfo[1] == 'PAL':
|
||||
bpy.data.images.remove(image)
|
||||
|
||||
def to_c_def(self, static):
|
||||
def to_c_def(self, dlType):
|
||||
data = ''
|
||||
#for (material, drawLayer), (fMaterial, texDimensions) in self.materials.items():
|
||||
# data += fMaterial.to_c_def(static)
|
||||
for name, meshGroup in self.meshGroups.items():
|
||||
data += meshGroup.to_c_def(static)
|
||||
data += meshGroup.to_c_def(dlType)
|
||||
if self.materialRevert is not None:
|
||||
data += self.materialRevert.to_c_def(static)
|
||||
data += self.materialRevert.to_c_def(dlType == 'STATIC')
|
||||
return data + '\n'
|
||||
|
||||
class FMeshGroup:
|
||||
@@ -1672,20 +1679,20 @@ class FMeshGroup:
|
||||
if self.skinnedMesh is not None:
|
||||
self.skinnedMesh.save_binary(romfile, f3d, segments)
|
||||
|
||||
def to_c(self, static):
|
||||
def to_c(self, dlType):
|
||||
data = ""
|
||||
if self.mesh is not None:
|
||||
data += self.mesh.to_c(static) + '\n'
|
||||
data += self.mesh.to_c(dlType) + '\n'
|
||||
if self.skinnedMesh is not None:
|
||||
data += self.skinnedMesh.to_c(static) + '\n'
|
||||
data += self.skinnedMesh.to_c(dlType) + '\n'
|
||||
return data
|
||||
|
||||
def to_c_def(self, static):
|
||||
def to_c_def(self, dlType):
|
||||
data = ""
|
||||
if self.mesh is not None:
|
||||
data += self.mesh.to_c_def(static)
|
||||
data += self.mesh.to_c_def(dlType)
|
||||
if self.skinnedMesh is not None:
|
||||
data += self.skinnedMesh.to_c_def(static)
|
||||
data += self.skinnedMesh.to_c_def(dlType)
|
||||
return data
|
||||
|
||||
class FMesh:
|
||||
@@ -1732,21 +1739,21 @@ class FMesh:
|
||||
for materialTuple, drawOverride in self.drawMatOverrides.items():
|
||||
drawOverride.save_binary(romfile, f3d, segments)
|
||||
|
||||
def to_c(self, static):
|
||||
def to_c(self, dlType):
|
||||
data = self.vertexList.to_c() + '\n'
|
||||
for triangleList in self.triangleLists:
|
||||
data += triangleList.to_c(static) + '\n'
|
||||
data += self.draw.to_c(static) + '\n'
|
||||
data += triangleList.to_c(dlType != 'PROCEDURAL') + '\n'
|
||||
data += self.draw.to_c(dlType == 'STATIC') + '\n'
|
||||
for materialTuple, drawOverride in self.drawMatOverrides.items():
|
||||
data += drawOverride.to_c(static) + '\n'
|
||||
data += drawOverride.to_c(dlType == 'STATIC') + '\n'
|
||||
return data
|
||||
|
||||
def to_c_def(self, static):
|
||||
data = self.draw.to_c_def(static)
|
||||
def to_c_def(self, dlType):
|
||||
data = self.draw.to_c_def(dlType == 'STATIC')
|
||||
#for triangleList in self.triangleLists:
|
||||
# data += triangleList.to_c_def(static)
|
||||
for materialTuple, drawOverride in self.drawMatOverrides.items():
|
||||
data += drawOverride.to_c_def(static)
|
||||
data += drawOverride.to_c_def(dlType == 'STATIC')
|
||||
return data
|
||||
|
||||
class FMaterial:
|
||||
|
||||
@@ -184,19 +184,19 @@ def exportF3DtoC(dirPath, obj, isStatic, transformMatrix,
|
||||
os.mkdir(modelDirPath)
|
||||
|
||||
if savePNG:
|
||||
fModel.save_c_tex_separate(isStatic, texDir, modelDirPath, texSeparate, 'texture.inc.c')
|
||||
fModel.save_c_tex_separate("STATIC" if isStatic else "PROCEDURAL", texDir, modelDirPath, texSeparate, 'texture.inc.c')
|
||||
fModel.freePalettes()
|
||||
else:
|
||||
fModel.freePalettes()
|
||||
modelPath = os.path.join(modelDirPath, 'model.inc.c')
|
||||
|
||||
data = fModel.to_c(isStatic)
|
||||
data = fModel.to_c("STATIC" if isStatic else "PROCEDURAL")
|
||||
outFile = open(modelPath, 'w')
|
||||
outFile.write(data)
|
||||
outFile.close()
|
||||
|
||||
headerPath = os.path.join(modelDirPath, 'header.h')
|
||||
cDefine = fModel.to_c_def(isStatic)
|
||||
cDefine = fModel.to_c_def("STATIC" if isStatic else "PROCEDURAL")
|
||||
cDefFile = open(headerPath, 'w')
|
||||
cDefFile.write(cDefine)
|
||||
cDefFile.close()
|
||||
|
||||
@@ -65,7 +65,7 @@ def getCameraObj(camera):
|
||||
' is no longer in the scene.')
|
||||
|
||||
def appendRevertToGeolayout(geolayoutGraph, fModel):
|
||||
fModel.materialRevert = GfxList('material_revert_render_settings')
|
||||
fModel.materialRevert = GfxList(fModel.name + "_" + 'material_revert_render_settings')
|
||||
revertMatAndEndDraw(fModel.materialRevert,
|
||||
[DPSetEnvColor(0xFF, 0xFF, 0xFF, 0xFF),
|
||||
DPSetAlphaCompare("G_AC_NONE")])
|
||||
@@ -191,12 +191,12 @@ def saveGeolayoutC(dirName, geolayoutGraph, fModel, dirPath, texDir, savePNG,
|
||||
os.mkdir(geoDirPath)
|
||||
|
||||
if savePNG:
|
||||
fModel.save_c_tex_separate(True, texDir, geoDirPath, texSeparate, 'texture.inc.c')
|
||||
fModel.save_c_tex_separate("STATIC", texDir, geoDirPath, texSeparate, 'texture.inc.c')
|
||||
fModel.freePalettes()
|
||||
else:
|
||||
fModel.freePalettes()
|
||||
modelPath = os.path.join(geoDirPath, 'model.inc.c')
|
||||
dlData = fModel.to_c(True)
|
||||
dlData = fModel.to_c("STATIC")
|
||||
dlFile = open(modelPath, 'w')
|
||||
dlFile.write(dlData)
|
||||
dlFile.close()
|
||||
@@ -204,7 +204,7 @@ def saveGeolayoutC(dirName, geolayoutGraph, fModel, dirPath, texDir, savePNG,
|
||||
# group.c include
|
||||
if groupName is not None:
|
||||
groupPathC = os.path.join(dirPath, groupName + ".c")
|
||||
writeIfNotFound(groupPathC, '#include "' + dirName + '/model.inc.c"', False)
|
||||
writeIfNotFound(groupPathC, '#include "' + dirName + '/model.inc.c"\n', False)
|
||||
|
||||
geoPath = os.path.join(geoDirPath, 'geo.inc.c')
|
||||
geoData = geolayoutGraph.to_c()
|
||||
@@ -215,7 +215,7 @@ def saveGeolayoutC(dirName, geolayoutGraph, fModel, dirPath, texDir, savePNG,
|
||||
# group_geo.c include
|
||||
if groupName is not None:
|
||||
groupPathGeoC = os.path.join(dirPath, groupName + "_geo.c")
|
||||
writeIfNotFound(groupPathGeoC, '#include "' + dirName + '/geo.inc.c"', False)
|
||||
writeIfNotFound(groupPathGeoC, '#include "' + dirName + '/geo.inc.c"\n', False)
|
||||
|
||||
cDefine = geolayoutGraph.to_c_def() + fModel.to_c_def(True)
|
||||
if writeDefinitionsFile:
|
||||
@@ -227,7 +227,7 @@ def saveGeolayoutC(dirName, geolayoutGraph, fModel, dirPath, texDir, savePNG,
|
||||
# group.h declaration
|
||||
if groupName is not None:
|
||||
groupPathH = os.path.join(dirPath, groupName + ".h")
|
||||
writeIfNotFound(groupPathH, '#include "' + dirName + '/geo_declarations.h"', True)
|
||||
writeIfNotFound(groupPathH, '#include "' + dirName + '/geo_declarations.h"\n', True)
|
||||
|
||||
return cDefine
|
||||
|
||||
|
||||
@@ -96,18 +96,18 @@ def exportLevelC(obj, transformMatrix, f3dType, isHWv1, levelName, exportDir,
|
||||
shutil.rmtree(os.path.join(levelDir, f))
|
||||
|
||||
if savePNG:
|
||||
fModel.save_c_tex_separate(True, 'levels/' + levelName, levelDir, True, 'texture_include.inc.c')
|
||||
fModel.save_c_tex_separate("STATIC", 'levels/' + levelName, levelDir, True, 'texture_include.inc.c')
|
||||
fModel.freePalettes()
|
||||
else:
|
||||
fModel.freePalettes()
|
||||
modelPath = os.path.join(levelDir, 'model.inc.c')
|
||||
dlData = fModel.to_c(True)
|
||||
dlData = fModel.to_c("STATIC")
|
||||
dlFile = open(modelPath, 'w')
|
||||
dlFile.write(dlData)
|
||||
dlFile.close()
|
||||
|
||||
levelDataString += '#include "levels/' + levelName + '/model.inc.c"\n'
|
||||
headerString += fModel.to_c_def(True)
|
||||
headerString += fModel.to_c_def("STATIC")
|
||||
#headerString += '\nextern const LevelScript level_' + levelName + '_entry[];\n'
|
||||
#headerString += '\n#endif\n'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user