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