Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions fast64_internal/oot/exporter/scene/actors.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@ def getEntryC(self):
+ ("\n" + indent + "},\n")
)

def getEntryXML(self)
"""Returns a single transition actor entry as an XML ``str``"""

rot = self.rot[len("DEF_TO_BINANG("):-1]
data = indent + "<TransitionActor "
data += f"FrontSideRoom='{self.roomFrom}' "
data += f"FrontSideEffects={self.cameraFront}' "
data += f"BackSideRoom='{self.roomTo}' "
data += f"BackSideEffects='{self.cameraBack}' "

data += f"PosX='{self.posData[0]}' "
data += f"PosY='{self.posData[1]}' "
data += f"PosZ='{self.posData[2]}' "
data += f"RotY='{rot}' "
data += f"Params='{self.params}'/>\n"

return data

@dataclass
class SceneTransitionActors:
Expand Down Expand Up @@ -118,6 +135,13 @@ def getC(self):

return transActorList

def getXML(self):
"""Returns the transition actor list as an XML string"""
data = "<TransitionActorList>\n"
for actor in self.entries:
data += actor.getXML();
data += "</TransitionActorList>\n"
return data

@dataclass
class EntranceActor(Actor):
Expand All @@ -131,6 +155,16 @@ def getEntryC(self):

return indent + "{ " + f"{self.spawnIndex}, {self.roomIndex}" + " },\n"

def getEntryXML(self)
"""Returns a single spawn entry as an XML ``str``"""

rot = self.rot[len("DEF_TO_BINANG("):-1]
data = indent + "<EntraceEntry "
data += f"Spawn='{self.spawnIndex}' "
data += f"Room='{self.roomIndex}'/>\n"

return data


@dataclass
class SceneEntranceActors:
Expand Down Expand Up @@ -203,6 +237,14 @@ def getC(self):

return spawnActorList

def getXML(self):
"""Returns the spawn list as an XML string"""
data = "<EntranceList>\n"
for actor in self.entries:
data += actor.getXML();
data += "</EntranceList>\n"
return data


@dataclass
class SceneSpawns(Utility):
Expand Down Expand Up @@ -234,3 +276,11 @@ def getC(self):
)

return spawnList

def getXML(self):
"""Returns the spawn list as an XML string"""
data = "<EntranceList>\n"
for actor in self.entries:
data += actor.getXML();
data += "</EntranceList>\n"
return data
40 changes: 40 additions & 0 deletions fast64_internal/oot/exporter/scene/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,37 @@ def getC(self):

return lightSettingsC

def getXML(self):
"""Returns a ``str`` containing the XML data of env. light settings"""

data = "<LightingSettings>\n"
for i, light in enumerate(self.settings):
data += indent *1 + "<LightingSetting "
data += f"AmbientColorR='{light.ambientColor[0]}' "
data += f"AmbientColorG='{light.ambientColor[1]}' "
data += f"AmbientColorB='{light.ambientColor[2]}' "

data += f"Light1DirX='{light.light1Dir[0]}' "
data += f"Light1DirY='{light.light1Dir[1]}' "
data += f"Light1DirZ='{light.light1Dir[2]}' "
data += f"Light1ColorR='{light.light1Color[0]}' "
data += f"Light1ColorG='{light.light1Color[1]}' "
data += f"Light1ColorB='{light.light1Color[2]}' "

data += f"Light2DirX='{light.light2Dir[0]}' "
data += f"Light2DirY='{light.light2Dir[1]}' "
data += f"Light2DirZ='{light.light2Dir[2]}' "
data += f"Light2ColorR='{light.light2Color[0]}' "
data += f"Light2ColorG='{light.light2Color[1]}' "
data += f"Light2ColorB='{light.light2Color[2]}' "

data += f"FogColorR='{light.fogColor[0]}' "
data += f"FogColorG='{light.fogColor[1]}' "
data += f"FogColorB='{light.fogColor[2]}' "
data += f"FogNear='{light.fogNear}' "
data += f"FogFar='{light.zFar}'/>\n"
data += "</LightingSettings>\n"
return data

@dataclass
class SceneInfos:
Expand Down Expand Up @@ -249,3 +280,12 @@ def getC(self):
)

return exitListC

def getXML(self):
"""Returns a ``str`` containing the XML data of the exit array"""

data = "<ExitList>\n"
for (exitId, name) in self.exitList:
data += indent * 1 + "<ExitEntry Id='{exitId}' Name='{name}' />\n"
data += "</ExitList>\n"
return data
27 changes: 26 additions & 1 deletion fast64_internal/oot/exporter/scene/pathways.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from dataclasses import dataclass, field
from mathutils import Matrix
from bpy.types import Object
from ....utility import PluginError, CData, indent
from ....utility import PluginError, CData, indent, writeXMLData
from ...oot_utility import getObjectList
from ..utility import Utility

Expand Down Expand Up @@ -34,6 +34,18 @@ def getC(self):

return pathData

def getXML(self):
"""Returns the pathway position list as an XML ``str``"""
data = "<Pathway>\n"
pathDataElement = indent * 1 + "<PathDataElement>\n"
for point in self.points:
pointData = indent * 2 + "<Point "
pointData += f"X='{round(point.x):5}' "
pointData += f"Y='{round(point.y):5}' "
pointData += f"Z='{round(point.z):5}'/>\n"
pathDataElement += pointData
data += pathDataElement
data += "</Pathway>\n"

@dataclass
class ScenePathways:
Expand Down Expand Up @@ -92,3 +104,16 @@ def getC(self):
pathData.append(pathListData)

return pathData

def getXML(self, dirPath):
"""Returns an XML ``str`` containing the data of the pathway array"""

data = "<Pathways>\n"
for path in self.pathList:
filePath = os.join(dirPath, path.name)
pathToXML = path.toXML()
writeXMLData(pathToXML, filePath)
data += indent * 1 + f"<Pathway FilePath='{filePath}'/>\n"
data += "</Pathways>\n"
return data

16 changes: 15 additions & 1 deletion fast64_internal/oot/exporter/scene/rooms.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from dataclasses import dataclass
from mathutils import Matrix
from bpy.types import Object
from ....utility import PluginError, CData, indent
from ....utility import PluginError, CData, indent, writeXMLData
from ...oot_utility import getObjectList
from ...oot_model_classes import OOTModel
from ..room import Room
Expand Down Expand Up @@ -97,3 +97,17 @@ def getC(self, useDummyRoomList: bool):

roomList.source += "};\n\n"
return roomList

def getXML(self, useDummyRoomList: bool, dirPath):
"""Returns the XML ``str`` containing the room list data"""

data = "<RoomList>\n"
for entry in self.entries:
filePath = os.join(dirPath, entry.name)
## TODO: figure out VromStart/VromEnd
entryPathData = indent * 1 + f"<RoomEntry Path='{filePath}' VromStart='0' VromEnd='0'/>\n"
data += entryPathData

#writeXMLData()
data += "</RoomList>\n"
return data