diff --git a/direct/src/leveleditor/ObjectGlobals.py b/direct/src/leveleditor/ObjectGlobals.py index f3b81672ac..8bc7855540 100755 --- a/direct/src/leveleditor/ObjectGlobals.py +++ b/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} -# 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_OBJ = '_arg_object' # obj information data structure diff --git a/direct/src/leveleditor/ObjectMgrBase.py b/direct/src/leveleditor/ObjectMgrBase.py index e1002db5c0..768c0b570f 100755 --- a/direct/src/leveleditor/ObjectMgrBase.py +++ b/direct/src/leveleditor/ObjectMgrBase.py @@ -2,7 +2,7 @@ Defines ObjectMgrBase """ -import os, time, wx, types +import os, time, wx, types, copy from direct.task import Task from direct.actor.Actor import Actor @@ -65,7 +65,7 @@ class ObjectMgrBase: self.lastUidMod = 0 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 """ if parent is None: parent = self.editor.NPParent @@ -83,7 +83,13 @@ class ObjectMgrBase: if nodePath is None: if objDef.createFunction: 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 funcName.startswith('.'): # when it's using default objectHandler @@ -586,7 +592,12 @@ class ObjectMgrBase: else: 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(" objects['%s'].setPos(%s)"%(uid, np.getPos())) self.saveData.append(" objects['%s'].setHpr(%s)"%(uid, np.getHpr())) diff --git a/direct/src/leveleditor/ObjectPaletteBase.py b/direct/src/leveleditor/ObjectPaletteBase.py index 7590cc8470..6c7d3bc73c 100755 --- a/direct/src/leveleditor/ObjectPaletteBase.py +++ b/direct/src/leveleditor/ObjectPaletteBase.py @@ -9,7 +9,7 @@ class ObjectGen: class ObjectBase(ObjectGen): """ Base class for obj definitions """ 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) self.createFunction = createFunction self.model = model @@ -19,6 +19,7 @@ class ObjectBase(ObjectGen): self.properties = copy.deepcopy(properties) self.movable = movable self.actor = actor + self.named = named class ObjectPaletteBase: """