mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
integrated selected obj parenting option
This commit is contained in:
parent
64083938fa
commit
129f164f16
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user