I have already done this.
Example:
(Note, you need to do all your Panda imports and such…
#Import xml:
import xml.etree.ElementTree as xml
class Loader():
def __init__(self):
#Set some var's:
self.currentObject = 0
#Parse XML directly from the file path
self.tree = xml.parse("level.xml")
self.root = self.tree.getroot()
self.objectList = self.root.findall("object")
#Load level:
if self.objectList != None:
for n in self.objectList:
self.element = n
self.type = self.element.get("type")
self.name = self.element.get("name")
if self.type == "model":
self.path = self.element.get("path")
self.x = float(self.element.get("x"))
self.y = float(self.element.get("y"))
self.z = float(self.element.get("z"))
model = Model("models/"+self.path,self.x,self.y,self.z)
class Model():
def __init__(self,path,x=0,y=0,z=0,h=0,p=0,r=0):
#Load a model:
self.model = main.loader.loadModel(path)
#Set the position:
self.model.setPos(x,y,z)
#Reparent the model to render:
self.model.reparentTo(render)
loader = Loader()
And the level it loads:
<world>
<object name="Cube" type="model" path="Cube.egg" x="1" y="0" z="0" />
<object name="Sphere" type="model" path="Sphere.egg" x="-1" y="0" z="0" />
</world>
If you expand on that, you can easily do what your asking for.