Added support for name in addNewObject function

This commit is contained in:
Gyedo Jeon 2010-03-24 03:31:56 +00:00
parent d4bb6e276a
commit 87e588689f
3 changed files with 19 additions and 6 deletions

View File

@ -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

View File

@ -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()))

View File

@ -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:
""" """