diff --git a/fast64_internal/oot/exporter/scene/actors.py b/fast64_internal/oot/exporter/scene/actors.py index 8f7735b6e..e1b4af4f7 100644 --- a/fast64_internal/oot/exporter/scene/actors.py +++ b/fast64_internal/oot/exporter/scene/actors.py @@ -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 + "\n" + + return data @dataclass class SceneTransitionActors: @@ -118,6 +135,13 @@ def getC(self): return transActorList + def getXML(self): + """Returns the transition actor list as an XML string""" + data = "\n" + for actor in self.entries: + data += actor.getXML(); + data += "\n" + return data @dataclass class EntranceActor(Actor): @@ -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 + "\n" + + return data + @dataclass class SceneEntranceActors: @@ -203,6 +237,14 @@ def getC(self): return spawnActorList + def getXML(self): + """Returns the spawn list as an XML string""" + data = "\n" + for actor in self.entries: + data += actor.getXML(); + data += "\n" + return data + @dataclass class SceneSpawns(Utility): @@ -234,3 +276,11 @@ def getC(self): ) return spawnList + + def getXML(self): + """Returns the spawn list as an XML string""" + data = "\n" + for actor in self.entries: + data += actor.getXML(); + data += "\n" + return data diff --git a/fast64_internal/oot/exporter/scene/general.py b/fast64_internal/oot/exporter/scene/general.py index 2a1638dea..a9cea9e6f 100644 --- a/fast64_internal/oot/exporter/scene/general.py +++ b/fast64_internal/oot/exporter/scene/general.py @@ -142,6 +142,37 @@ def getC(self): return lightSettingsC + def getXML(self): + """Returns a ``str`` containing the XML data of env. light settings""" + + data = "\n" + for i, light in enumerate(self.settings): + data += indent *1 + "\n" + data += "\n" + return data @dataclass class SceneInfos: @@ -249,3 +280,12 @@ def getC(self): ) return exitListC + + def getXML(self): + """Returns a ``str`` containing the XML data of the exit array""" + + data = "\n" + for (exitId, name) in self.exitList: + data += indent * 1 + "\n" + data += "\n" + return data diff --git a/fast64_internal/oot/exporter/scene/pathways.py b/fast64_internal/oot/exporter/scene/pathways.py index 331af8dbe..3491fe88c 100644 --- a/fast64_internal/oot/exporter/scene/pathways.py +++ b/fast64_internal/oot/exporter/scene/pathways.py @@ -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 @@ -34,6 +34,18 @@ def getC(self): return pathData + def getXML(self): + """Returns the pathway position list as an XML ``str``""" + data = "\n" + pathDataElement = indent * 1 + "\n" + for point in self.points: + pointData = indent * 2 + "\n" + pathDataElement += pointData + data += pathDataElement + data += "\n" @dataclass class ScenePathways: @@ -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 = "\n" + for path in self.pathList: + filePath = os.join(dirPath, path.name) + pathToXML = path.toXML() + writeXMLData(pathToXML, filePath) + data += indent * 1 + f"\n" + data += "\n" + return data + diff --git a/fast64_internal/oot/exporter/scene/rooms.py b/fast64_internal/oot/exporter/scene/rooms.py index 6948ef6bb..a9ff939fc 100644 --- a/fast64_internal/oot/exporter/scene/rooms.py +++ b/fast64_internal/oot/exporter/scene/rooms.py @@ -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 @@ -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 = "\n" + for entry in self.entries: + filePath = os.join(dirPath, entry.name) + ## TODO: figure out VromStart/VromEnd + entryPathData = indent * 1 + f"\n" + data += entryPathData + + #writeXMLData() + data += "\n" + return data