integrated selected obj parenting option

This commit is contained in:
Arkady Trestman 2010-05-05 22:35:30 +00:00
parent 64083938fa
commit 129f164f16
4 changed files with 374 additions and 355 deletions

View File

@ -347,3 +347,13 @@ class LevelEditorBase(DirectObject):
#return 2
from direct.task import Task
return Task.again
def propMeetsReq(self, typeName, parentNP):
if self.ui.parentToSelectedMenuItem.IsChecked():
if base.direct.selected.last:
parent = base.le.objectMgr.findObjectByNodePath(base.direct.selected.last)
if parent:
parentNP[0] = parent[OG.OBJ_NP]
else:
parentNP[0] = None
return True

View File

@ -23,7 +23,10 @@ class PandaTextDropTarget(wx.TextDropTarget):
def OnDropText(self, x, y, text):
# create new object
action = ActionAddNewObj(self.editor, text)
parentNPRef = [None]
if not self.editor.propMeetsReq(text, parentNPRef):
return
action = ActionAddNewObj(self.editor, text, parent=parentNPRef[0])
self.editor.actionMgr.push(action)
newobj = action()
if newobj is None:
@ -112,6 +115,7 @@ ID_GRID_SIZE = 302
ID_GRID_SNAP = 303
ID_SHOW_PANDA_OBJECT = 304
ID_HOT_KEYS = 305
ID_PARENT_TO_SELECTED = 306
class LevelEditorUIBase(WxPandaShell):
""" Class for Panda3D LevelEditor """
@ -131,6 +135,7 @@ class LevelEditorUIBase(WxPandaShell):
ID_GRID_SNAP : ("Grid S&nap", None),
ID_SHOW_PANDA_OBJECT : ("Show &Panda Objects", None),
ID_HOT_KEYS : ("&Hot Keys", None),
ID_PARENT_TO_SELECTED : ("&Parent To Selected", None)
})
self.editor = editor
@ -191,6 +196,8 @@ class LevelEditorUIBase(WxPandaShell):
self.showPandaObjectsMenuItem = self.menuOptions.Append(ID_SHOW_PANDA_OBJECT, self.MENU_TEXTS[ID_SHOW_PANDA_OBJECT][0], kind = wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.onShowPandaObjects, self.showPandaObjectsMenuItem)
self.parentToSelectedMenuItem = self.menuOptions.Append(ID_PARENT_TO_SELECTED, self.MENU_TEXTS[ID_PARENT_TO_SELECTED][0], kind = wx.ITEM_CHECK)
self.hotKeysMenuItem = self.menuOptions.Append(ID_HOT_KEYS, self.MENU_TEXTS[ID_HOT_KEYS][0])
self.Bind(wx.EVT_MENU, self.onHotKeys, self.hotKeysMenuItem)

View File

@ -180,7 +180,7 @@ class ObjectMgrBase:
if self.editor:
if fSelectObject:
self.editor.select(newobj, fUndo=0)
self.editor.ui.sceneGraphUI.add(newobj)
self.editor.ui.sceneGraphUI.add(newobj, parent)
self.editor.fNeedToSave = True
return newobj
@ -771,3 +771,5 @@ class ObjectMgrBase:
def flatten(self, newobjModel, objDef, uid):
# override this to flatten models
pass

View File

@ -112,7 +112,7 @@ class SceneGraphUIBase(wx.Panel):
item, cookie = self.tree.GetNextChild(parent, cookie)
self.removePandaObjectChildren(itemToRemove)
def add(self, item):
def add(self, item, parentNP = None):
#import pdb;pdb.set_trace()
if item is None:
return
@ -120,10 +120,10 @@ class SceneGraphUIBase(wx.Panel):
if obj is None:
return
parentNodePath = obj[OG.OBJ_NP].getParent()
parentObj = self.editor.objectMgr.findObjectByNodePath(parentNodePath)
if parentNP is None :
parentNP = obj[OG.OBJ_NP].getParent()
parentObj = self.editor.objectMgr.findObjectByNodePath(parentNP)
#import pdb;pdb.set_trace()
if parentObj is None:
parent = self.root
else: