Browse Source

Added support for name in addNewObject function

Gyedo Jeon 15 years ago
parent
commit
87e588689f

+ 2 - 1
direct/src/leveleditor/ObjectGlobals.py

@@ -45,6 +45,7 @@ PROP_BLIND = 4 # blind type value
 
 
 TYPE_CONV = {PROP_INT: int, PROP_BOOL: bool, PROP_FLOAT: float, PROP_STR: str}
 TYPE_CONV = {PROP_INT: int, PROP_BOOL: bool, PROP_FLOAT: float, PROP_STR: str}
 
 
-# these dynamic args should be used in update function declaration
+# these dynamic args should be used in create / update function declaration
+ARG_NAME = '_arg_name'
 ARG_VAL = '_arg_val' # value from UI
 ARG_VAL = '_arg_val' # value from UI
 ARG_OBJ = '_arg_object' # obj information data structure
 ARG_OBJ = '_arg_object' # obj information data structure

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

@@ -2,7 +2,7 @@
 Defines ObjectMgrBase
 Defines ObjectMgrBase
 """
 """
 
 
-import os, time, wx, types
+import os, time, wx, types, copy
 
 
 from direct.task import Task
 from direct.task import Task
 from direct.actor.Actor import Actor
 from direct.actor.Actor import Actor
@@ -65,7 +65,7 @@ class ObjectMgrBase:
             self.lastUidMod = 0
             self.lastUidMod = 0
         return newUid
         return newUid
 
 
-    def addNewObject(self, typeName, uid = None, model = None, parent=None, anim = None, fSelectObject=True, nodePath=None):
+    def addNewObject(self, typeName, uid = None, model = None, parent=None, anim = None, fSelectObject=True, nodePath=None, nameStr=None):
         """ function to add new obj to the scene """
         """ function to add new obj to the scene """
         if parent is None:
         if parent is None:
             parent = self.editor.NPParent
             parent = self.editor.NPParent
@@ -83,7 +83,13 @@ class ObjectMgrBase:
             if nodePath is None:
             if nodePath is None:
                 if objDef.createFunction:
                 if objDef.createFunction:
                     funcName = objDef.createFunction[OG.FUNC_NAME]
                     funcName = objDef.createFunction[OG.FUNC_NAME]
-                    funcArgs = objDef.createFunction[OG.FUNC_ARGS]
+                    funcArgs = copy.deepcopy(objDef.createFunction[OG.FUNC_ARGS])
+
+                    for pair in funcArgs.items():
+                        if pair[1] == OG.ARG_NAME:
+                            funcArgs[pair[0]] = nameStr
+                            break;
+
                     if type(funcName) == types.StringType:
                     if type(funcName) == types.StringType:
                         if funcName.startswith('.'):
                         if funcName.startswith('.'):
                             # when it's using default objectHandler
                             # when it's using default objectHandler
@@ -586,7 +592,12 @@ class ObjectMgrBase:
                     else:
                     else:
                         animStr = "None"
                         animStr = "None"
 
 
-                    self.saveData.append("\nobjects['%s'] = objectMgr.addNewObject('%s', '%s', %s, %s, %s, fSelectObject=False)"%(uid, objDef.name, uid, modelStr, parentStr, animStr))
+                    if objDef.named:
+                        nameStr = "'%s'"%np.getName()
+                    else:
+                        nameStr = "None"
+
+                    self.saveData.append("\nobjects['%s'] = objectMgr.addNewObject('%s', '%s', %s, %s, '%s', False, None, %s)"%(uid, objDef.name, uid, modelStr, parentStr, animStr, nameStr))
                     self.saveData.append("if objects['%s']:"%uid)
                     self.saveData.append("if objects['%s']:"%uid)
                     self.saveData.append("    objects['%s'].setPos(%s)"%(uid, np.getPos()))
                     self.saveData.append("    objects['%s'].setPos(%s)"%(uid, np.getPos()))
                     self.saveData.append("    objects['%s'].setHpr(%s)"%(uid, np.getHpr()))
                     self.saveData.append("    objects['%s'].setHpr(%s)"%(uid, np.getHpr()))

+ 2 - 1
direct/src/leveleditor/ObjectPaletteBase.py

@@ -9,7 +9,7 @@ class ObjectGen:
 class ObjectBase(ObjectGen):
 class ObjectBase(ObjectGen):
     """ Base class for obj definitions """
     """ Base class for obj definitions """
     def __init__(self, name='', createFunction = None, model = None, models= [], anims = [], animNames = [], properties={},
     def __init__(self, name='', createFunction = None, model = None, models= [], anims = [], animNames = [], properties={},
-                 movable = True, actor = False):
+                 movable = True, actor = False, named=False):
         ObjectGen.__init__(self, name)
         ObjectGen.__init__(self, name)
         self.createFunction = createFunction
         self.createFunction = createFunction
         self.model = model
         self.model = model
@@ -19,6 +19,7 @@ class ObjectBase(ObjectGen):
         self.properties = copy.deepcopy(properties)
         self.properties = copy.deepcopy(properties)
         self.movable = movable
         self.movable = movable
         self.actor = actor
         self.actor = actor
+        self.named = named
 
 
 class ObjectPaletteBase:
 class ObjectPaletteBase:
     """
     """