Added feature for importing toontown dna

This commit is contained in:
Gyedo Jeon 2010-03-12 05:11:03 +00:00
parent ae157e1b89
commit 47f4e39de8
4 changed files with 76 additions and 47 deletions

View File

@ -30,6 +30,7 @@ class LevelEditorBase(DirectObject):
self.fileMgr = FileMgr(self) self.fileMgr = FileMgr(self)
self.actionMgr = ActionMgr() self.actionMgr = ActionMgr()
self.NPParent = render
# define your own config file in inherited class # define your own config file in inherited class
self.settingsFile = None self.settingsFile = None
@ -262,6 +263,7 @@ class LevelEditorBase(DirectObject):
return return
base.direct.deselectAll() base.direct.deselectAll()
self.ui.reset()
self.objectMgr.reset() self.objectMgr.reset()
self.actionMgr.reset() self.actionMgr.reset()
self.ui.perspView.camera.setPos(-19, -19, 19) self.ui.perspView.camera.setPos(-19, -19, 19)

View File

@ -84,6 +84,7 @@ class PandaTextDropTarget(wx.TextDropTarget):
self.editor.actionMgr.push(action) self.editor.actionMgr.push(action)
np.remove() np.remove()
action() action()
iRay.collisionNodePath.removeNode()
del iRay del iRay
ID_NEW = 101 ID_NEW = 101
@ -361,11 +362,13 @@ class LevelEditorUIBase(WxAppShell):
self.wxApp.ProcessIdle() self.wxApp.ProcessIdle()
if task != None: return task.cont if task != None: return task.cont
def onNew(self, evt=None): def reset(self):
self.editor.reset()
self.sceneGraphUI.reset() self.sceneGraphUI.reset()
self.layerEditorUI.reset() self.layerEditorUI.reset()
def onNew(self, evt=None):
self.editor.reset()
def onOpen(self, evt=None): def onOpen(self, evt=None):
dialog = wx.FileDialog(None, "Choose a file", os.getcwd(), "", "*.py", wx.OPEN) dialog = wx.FileDialog(None, "Choose a file", os.getcwd(), "", "*.py", wx.OPEN)
if dialog.ShowModal() == wx.ID_OK: if dialog.ShowModal() == wx.ID_OK:

View File

@ -2,14 +2,14 @@
Defines ObjectMgr Defines ObjectMgr
""" """
import os, time, wx import os, time, wx, types
from direct.task import Task from direct.task import Task
from direct.actor.Actor import Actor from direct.actor.Actor import Actor
from pandac.PandaModules import * from pandac.PandaModules import *
from ActionMgr import * from ActionMgr import *
import ObjectGlobals as OG import ObjectGlobals as OG
from ObjectPaletteBase import ObjectGen
class ObjectMgr: class ObjectMgr:
""" ObjectMgr will create, manage, update objects in the scene """ """ ObjectMgr will create, manage, update objects in the scene """
@ -64,10 +64,10 @@ class ObjectMgr:
self.lastUidMod = 0 self.lastUidMod = 0
return newUid return newUid
def addNewObject(self, typeName, uid = None, model = None, parent=None, anim = None, fSelectObject=True): def addNewObject(self, typeName, uid = None, model = None, parent=None, anim = None, fSelectObject=True, nodePath=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 = render parent = self.editor.NPParent
if self.editor: if self.editor:
objDef = self.editor.objectPalette.findItem(typeName) objDef = self.editor.objectPalette.findItem(typeName)
@ -79,20 +79,23 @@ class ObjectMgr:
objDef = base.protoPalette.findItem(typeName) objDef = base.protoPalette.findItem(typeName)
newobj = None newobj = None
if objDef and type(objDef) != dict: if objDef and type(objDef) != dict:
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 = objDef.createFunction[OG.FUNC_ARGS]
if type(funcName) == types.StringType:
if funcName.startswith('.'): if funcName.startswith('.'):
# when it's using default objectHandler # when it's using default objectHandler
if self.editor: if self.editor:
func = Functor(eval("base.le.objectHandler%s"%funcName)) func = Functor(eval("self.editor.objectHandler%s"%funcName))
else: # when loaded outside of LE else: # when loaded outside of LE
func = Functor(eval("base.objectHandler%s"%funcName)) func = Functor(eval("base.objectHandler%s"%funcName))
else: else:
# when it's not using default objectHandler, whole name of the handling obj # when it's not using default objectHandler, whole name of the handling obj
# should be included in function name # should be included in function name
func = Functor(eval(funcName)) func = Functor(eval(funcName))
else:
func = funcName
# create new obj using function and keyword arguments defined in ObjectPalette # create new obj using function and keyword arguments defined in ObjectPalette
newobj = func(**funcArgs) newobj = func(**funcArgs)
elif objDef.actor: elif objDef.actor:
@ -110,7 +113,10 @@ class ObjectMgr:
newobj = loader.loadModel(model) newobj = loader.loadModel(model)
except: except:
newobj = loader.loadModel(Filename.fromOsSpecific(model).getFullpath()) newobj = loader.loadModel(Filename.fromOsSpecific(model).getFullpath())
else:
newobj = hidden.attachNewNode(objDef.name)
else:
newobj = nodePath
i = 0 i = 0
for i in range(len(objDef.anims)): for i in range(len(objDef.anims)):
animFile = objDef.anims[i] animFile = objDef.anims[i]
@ -499,16 +505,20 @@ class ObjectMgr:
kwargs[key] = funcArgs[key] kwargs[key] = funcArgs[key]
undoKwargs[key] = funcArgs[key] undoKwargs[key] = funcArgs[key]
if type(funcName) == types.StringType:
if funcName.startswith('.'): if funcName.startswith('.'):
if self.editor: if self.editor:
func = Functor(eval("base.le.objectHandler%s"%funcName), **kwargs) func = Functor(eval("self.editor.objectHandler%s"%funcName), **kwargs)
undoFunc = Functor(eval("base.le.objectHandler%s"%funcName), **undoKwargs) undoFunc = Functor(eval("self.editor.objectHandler%s"%funcName), **undoKwargs)
else: # when loaded outside of LE else: # when loaded outside of LE
func = Functor(eval("base.objectHandler%s"%funcName), **kwargs) func = Functor(eval("base.objectHandler%s"%funcName), **kwargs)
undoFunc = Functor(eval("base.objectHandler%s"%funcName), **undoKwargs) undoFunc = Functor(eval("base.objectHandler%s"%funcName), **undoKwargs)
else: else:
func = Functor(eval(funcName), **kwargs) func = Functor(eval(funcName), **kwargs)
undoFunc = Functor(eval(funcName), **undoKwargs) undoFunc = Functor(eval(funcName), **undoKwargs)
else:
func = Functor(funcName, **kwargs)
undoFunc = Functor(funcName, **undoKwargs)
# finally call update function # finally call update function
#func(**kwargs) #func(**kwargs)

View File

@ -125,7 +125,10 @@ class SceneGraphUIBase(wx.Panel):
else: else:
parent = self.traverse(self.root, parentObj[OG.OBJ_UID]) parent = self.traverse(self.root, parentObj[OG.OBJ_UID])
namestr = "%s_%s"%(obj[OG.OBJ_DEF].name, obj[OG.OBJ_UID]) name = NodePath(item).getName()
if not name:
name = ' '
namestr = "%s_%s_%s"%(obj[OG.OBJ_DEF].name, name, obj[OG.OBJ_UID])
newItem = self.tree.AppendItem(parent, namestr) newItem = self.tree.AppendItem(parent, namestr)
self.tree.SetItemPyData(newItem, obj[OG.OBJ_UID]) self.tree.SetItemPyData(newItem, obj[OG.OBJ_UID])
@ -257,6 +260,17 @@ class SceneGraphUIBase(wx.Panel):
if not self.tree.IsSelected(item): if not self.tree.IsSelected(item):
self.tree.SelectItem(item) self.tree.SelectItem(item)
def changeLabel(self, itemId, newName):
item = self.traverse(self.root, itemId)
if item:
obj = self.editor.objectMgr.findObjectById(itemId)
if obj is None:
return
obj[OG.OBJ_NP].setName(newName)
namestr = "%s_%s_%s"%(obj[OG.OBJ_DEF].name, newName, obj[OG.OBJ_UID])
self.tree.SetItemText(item, namestr)
def deSelect(self, itemId): def deSelect(self, itemId):
item = self.traverse(self.root, itemId) item = self.traverse(self.root, itemId)
if item is not None: if item is not None: