Browse Source

Added flattening call hook up

Gyedo Jeon 15 years ago
parent
commit
cb769c21ac
1 changed files with 12 additions and 4 deletions
  1. 12 4
      direct/src/leveleditor/ObjectMgrBase.py

+ 12 - 4
direct/src/leveleditor/ObjectMgrBase.py

@@ -75,6 +75,9 @@ class ObjectMgrBase:
         if parent is None:
         if parent is None:
             parent = self.editor.NPParent
             parent = self.editor.NPParent
 
 
+        if uid is None:
+            uid = self.genUniqueId()
+
         if self.editor:
         if self.editor:
             objDef = self.editor.objectPalette.findItem(typeName)
             objDef = self.editor.objectPalette.findItem(typeName)
             if objDef is None:
             if objDef is None:
@@ -132,6 +135,7 @@ class ObjectMgrBase:
                     except:
                     except:
                         newobjModel = loader.loadModel(Filename.fromOsSpecific(model).getFullpath(), okMissing=True)
                         newobjModel = loader.loadModel(Filename.fromOsSpecific(model).getFullpath(), okMissing=True)
                     if newobjModel:
                     if newobjModel:
+                        self.flatten(newobjModel, model, objDef, uid)
                         newobj = PythonNodePath(newobjModel)
                         newobj = PythonNodePath(newobjModel)
                     else:
                     else:
                         newobj = None
                         newobj = None
@@ -163,9 +167,6 @@ class ObjectMgrBase:
             newobj.reparentTo(parent)
             newobj.reparentTo(parent)
             newobj.setTag('OBJRoot','1')
             newobj.setTag('OBJRoot','1')
 
 
-            if uid is None:
-                uid = self.genUniqueId()
-
             # populate obj data using default values
             # populate obj data using default values
             properties = {}
             properties = {}
             for key in objDef.properties.keys():
             for key in objDef.properties.keys():
@@ -385,10 +386,12 @@ class ObjectMgrBase:
             base.direct.deselectAllCB()
             base.direct.deselectAllCB()
 
 
             objNP = obj[OG.OBJ_NP]
             objNP = obj[OG.OBJ_NP]
+            objDef = obj[OG.OBJ_DEF]
             objRGBA = obj[OG.OBJ_RGBA]
             objRGBA = obj[OG.OBJ_RGBA]
+            uid = obj[OG.OBJ_UID]
             
             
             # load new model
             # load new model
-            if obj[OG.OBJ_DEF].actor:
+            if objDef.actor:
                 try:
                 try:
                     newobj = Actor(model)
                     newobj = Actor(model)
                 except:
                 except:
@@ -398,6 +401,7 @@ class ObjectMgrBase:
                 if newobjModel is None:
                 if newobjModel is None:
                     print "Can't load model %s"%model
                     print "Can't load model %s"%model
                     return
                     return
+                self.flatten(newobjModel, model, objDef, uid)
                 newobj = PythonNodePath(newobjModel)
                 newobj = PythonNodePath(newobjModel)
             newobj.setTag('OBJRoot','1')
             newobj.setTag('OBJRoot','1')
 
 
@@ -762,3 +766,7 @@ class ObjectMgrBase:
         self.editor.ui.sceneGraphUI.delete(uid)
         self.editor.ui.sceneGraphUI.delete(uid)
         newobj = self.addNewObject(typeName, uid, parent=parentNP, fSelectObject=False)
         newobj = self.addNewObject(typeName, uid, parent=parentNP, fSelectObject=False)
         newobj.setMat(mat)
         newobj.setMat(mat)
+
+    def flatten(self, newobjModel, objDef, uid):
+        # override this to flatten models
+        pass