mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -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
|
#return 2
|
||||||
from direct.task import Task
|
from direct.task import Task
|
||||||
return Task.again
|
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):
|
def OnDropText(self, x, y, text):
|
||||||
# create new object
|
# 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)
|
self.editor.actionMgr.push(action)
|
||||||
newobj = action()
|
newobj = action()
|
||||||
if newobj is None:
|
if newobj is None:
|
||||||
@ -112,6 +115,7 @@ ID_GRID_SIZE = 302
|
|||||||
ID_GRID_SNAP = 303
|
ID_GRID_SNAP = 303
|
||||||
ID_SHOW_PANDA_OBJECT = 304
|
ID_SHOW_PANDA_OBJECT = 304
|
||||||
ID_HOT_KEYS = 305
|
ID_HOT_KEYS = 305
|
||||||
|
ID_PARENT_TO_SELECTED = 306
|
||||||
|
|
||||||
class LevelEditorUIBase(WxPandaShell):
|
class LevelEditorUIBase(WxPandaShell):
|
||||||
""" Class for Panda3D LevelEditor """
|
""" Class for Panda3D LevelEditor """
|
||||||
@ -131,6 +135,7 @@ class LevelEditorUIBase(WxPandaShell):
|
|||||||
ID_GRID_SNAP : ("Grid S&nap", None),
|
ID_GRID_SNAP : ("Grid S&nap", None),
|
||||||
ID_SHOW_PANDA_OBJECT : ("Show &Panda Objects", None),
|
ID_SHOW_PANDA_OBJECT : ("Show &Panda Objects", None),
|
||||||
ID_HOT_KEYS : ("&Hot Keys", None),
|
ID_HOT_KEYS : ("&Hot Keys", None),
|
||||||
|
ID_PARENT_TO_SELECTED : ("&Parent To Selected", None)
|
||||||
})
|
})
|
||||||
|
|
||||||
self.editor = editor
|
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.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.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.hotKeysMenuItem = self.menuOptions.Append(ID_HOT_KEYS, self.MENU_TEXTS[ID_HOT_KEYS][0])
|
||||||
self.Bind(wx.EVT_MENU, self.onHotKeys, self.hotKeysMenuItem)
|
self.Bind(wx.EVT_MENU, self.onHotKeys, self.hotKeysMenuItem)
|
||||||
|
|
||||||
|
@ -180,7 +180,7 @@ class ObjectMgrBase:
|
|||||||
if self.editor:
|
if self.editor:
|
||||||
if fSelectObject:
|
if fSelectObject:
|
||||||
self.editor.select(newobj, fUndo=0)
|
self.editor.select(newobj, fUndo=0)
|
||||||
self.editor.ui.sceneGraphUI.add(newobj)
|
self.editor.ui.sceneGraphUI.add(newobj, parent)
|
||||||
self.editor.fNeedToSave = True
|
self.editor.fNeedToSave = True
|
||||||
return newobj
|
return newobj
|
||||||
|
|
||||||
@ -771,3 +771,5 @@ class ObjectMgrBase:
|
|||||||
def flatten(self, newobjModel, objDef, uid):
|
def flatten(self, newobjModel, objDef, uid):
|
||||||
# override this to flatten models
|
# override this to flatten models
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ class SceneGraphUIBase(wx.Panel):
|
|||||||
item, cookie = self.tree.GetNextChild(parent, cookie)
|
item, cookie = self.tree.GetNextChild(parent, cookie)
|
||||||
self.removePandaObjectChildren(itemToRemove)
|
self.removePandaObjectChildren(itemToRemove)
|
||||||
|
|
||||||
def add(self, item):
|
def add(self, item, parentNP = None):
|
||||||
#import pdb;pdb.set_trace()
|
#import pdb;pdb.set_trace()
|
||||||
if item is None:
|
if item is None:
|
||||||
return
|
return
|
||||||
@ -120,10 +120,10 @@ class SceneGraphUIBase(wx.Panel):
|
|||||||
if obj is None:
|
if obj is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
parentNodePath = obj[OG.OBJ_NP].getParent()
|
if parentNP is None :
|
||||||
parentObj = self.editor.objectMgr.findObjectByNodePath(parentNodePath)
|
parentNP = obj[OG.OBJ_NP].getParent()
|
||||||
|
parentObj = self.editor.objectMgr.findObjectByNodePath(parentNP)
|
||||||
|
|
||||||
#import pdb;pdb.set_trace()
|
|
||||||
if parentObj is None:
|
if parentObj is None:
|
||||||
parent = self.root
|
parent = self.root
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user