mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
Made LE data can be loaded outside of LE
This commit is contained in:
parent
bf3daf54a1
commit
6b22e16a51
@ -1,6 +1,10 @@
|
||||
import os
|
||||
import imp
|
||||
|
||||
from ObjectMgr import ObjectMgr
|
||||
from ObjectHandler import ObjectHandler
|
||||
from ObjectPalette import ObjectPalette
|
||||
|
||||
import ObjectGlobals as OG
|
||||
|
||||
class FileMgr:
|
||||
@ -13,9 +17,12 @@ class FileMgr:
|
||||
try:
|
||||
f = open(fileName, 'w')
|
||||
f.write("from pandac.PandaModules import *\n")
|
||||
f.write("\nobjectMgr = base.le.objectMgr\n")
|
||||
f.write('ui = base.le.ui\n')
|
||||
f.write('\nui.sceneGraphUI.reset()\n\n')
|
||||
f.write("\nhasattr(base, 'le'):\n")
|
||||
f.write("\tobjectMgr = base.le.objectMgr\n")
|
||||
f.write('\tui = base.le.ui\n')
|
||||
f.write('\tui.sceneGraphUI.reset()\n\n')
|
||||
f.write("else:\n")
|
||||
f.write("\tobjectMgr = base.objectMgr\n")
|
||||
f.write("# temporary place holder for nodepath\n")
|
||||
f.write("objects = {}\n")
|
||||
saveData = self.editor.objectMgr.getSaveData()
|
||||
@ -36,9 +43,13 @@ class FileMgr:
|
||||
dirname, moduleName = os.path.split(fileName)
|
||||
if moduleName.endswith('.py'):
|
||||
moduleName = moduleName[:-3]
|
||||
|
||||
file, pathname, description = imp.find_module(moduleName, [dirname])
|
||||
try:
|
||||
if self.editor is None: # when loaded outside of LE
|
||||
base.objectPalette = ObjectPalette()
|
||||
base.objectHandler = ObjectHandler(None)
|
||||
base.objectMgr = ObjectMgr(None)
|
||||
|
||||
module = imp.load_module(moduleName, file, pathname, description)
|
||||
except:
|
||||
print 'failed to load %s'%fileName
|
||||
|
@ -1,254 +1,255 @@
|
||||
"""
|
||||
Defines Layer UI
|
||||
"""
|
||||
import wx
|
||||
import sys
|
||||
import cPickle as pickle
|
||||
from pandac.PandaModules import *
|
||||
|
||||
import ObjectGlobals as OG
|
||||
|
||||
class LayerEditorUI(wx.Panel):
|
||||
def __init__(self, parent, editor):
|
||||
wx.Panel.__init__(self, parent)
|
||||
|
||||
self.editor = editor
|
||||
self.editorTxt = "Layer Editor"
|
||||
self.saveData = []
|
||||
self.layersDataDict = dict()
|
||||
self.layersDataDictNextKey = 0
|
||||
self.llist = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_EDIT_LABELS|wx.LC_NO_HEADER)
|
||||
self.llist.InsertColumn(0, "Layers")
|
||||
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(self.llist, 1, wx.EXPAND, 0)
|
||||
self.SetSizer(sizer); self.Layout()
|
||||
|
||||
parentSizer = wx.BoxSizer(wx.VERTICAL)
|
||||
parentSizer.Add(self, 1, wx.EXPAND, 0)
|
||||
parent.SetSizer(parentSizer); parent.Layout()
|
||||
|
||||
self.opAdd = "Add Layer"
|
||||
self.opDelete = "Delete Layer"
|
||||
self.opRename = "Rename Layer"
|
||||
self.opAddObj = "Add Selected Object"
|
||||
self.opRemoveObj = "Remove Selected Object"
|
||||
self.opShowObj = "Show Layer Objects"
|
||||
self.opHideObj = "Hide Layer Objects"
|
||||
|
||||
self.menuItemsGen = list()
|
||||
self.menuItemsGen.append(self.opAdd)
|
||||
#self.menuItems.append(self.opRename)
|
||||
|
||||
self.menuItemsObj = list()
|
||||
self.menuItemsObj.append(self.opAddObj)
|
||||
self.menuItemsObj.append(self.opRemoveObj)
|
||||
self.menuItemsObj.append(self.opShowObj)
|
||||
self.menuItemsObj.append(self.opHideObj)
|
||||
self.menuItemsObj.append(self.opDelete)
|
||||
|
||||
self.popupmenu = wx.Menu()
|
||||
for item in self.menuItemsGen:
|
||||
menuItem = self.popupmenu.Append(-1, item)
|
||||
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
|
||||
|
||||
self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
|
||||
self.llist.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onShowMembers)
|
||||
|
||||
def menuAppendGenItems(self):
|
||||
for item in self.menuItemsGen:
|
||||
menuItem = self.popupmenu.Append(-1, item)
|
||||
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
|
||||
|
||||
def menuAppendObjItems(self):
|
||||
for item in self.menuItemsObj:
|
||||
menuItem = self.popupmenu.Append(-1, item)
|
||||
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
|
||||
|
||||
def onShowPopup(self, event):
|
||||
pos = event.GetPosition()
|
||||
pos = self.ScreenToClient(pos)
|
||||
|
||||
for menuItem in self.popupmenu.GetMenuItems():
|
||||
self.popupmenu.RemoveItem(menuItem)
|
||||
|
||||
#import pdb;set_trace()
|
||||
hitItem, flags = self.llist.HitTest(pos)
|
||||
if hitItem == -1:
|
||||
self.menuAppendGenItems()
|
||||
else:
|
||||
self.menuAppendObjItems()
|
||||
self.PopupMenu(self.popupmenu, pos)
|
||||
|
||||
def onPopupItemSelected(self, event):
|
||||
menuItem = self.popupmenu.FindItemById(event.GetId())
|
||||
text = menuItem.GetText()
|
||||
if text == self.opAddObj:
|
||||
self.addObj()
|
||||
elif text == self.opRemoveObj:
|
||||
self.removeObj()
|
||||
elif text == self.opShowObj:
|
||||
self.HideObj(False)
|
||||
elif text == self.opHideObj:
|
||||
self.HideObj(True)
|
||||
elif text == self.opAdd:
|
||||
self.addLayer()
|
||||
elif text == self.opDelete:
|
||||
self.deleteLayer()
|
||||
elif text == self.opRename:
|
||||
self.renameLayer()
|
||||
else:
|
||||
wx.MessageBox("You selected item '%s'" % text)
|
||||
|
||||
def reset(self):
|
||||
#import pdb;set_trace()
|
||||
self.layersDataDict.clear()
|
||||
self.layersDataDictNextKey = 0
|
||||
self.llist.DeleteAllItems()
|
||||
|
||||
def findLabel(self, text):
|
||||
found = False
|
||||
for index in range(self.llist.GetItemCount()):
|
||||
itemtext = self.llist.GetItemText(index)
|
||||
if itemtext == text:
|
||||
return True
|
||||
return found
|
||||
|
||||
def addLayerData(self, idx, objUID):
|
||||
self.removeObjData(objUID)
|
||||
layerData = self.layersDataDict[idx]
|
||||
layerData.append(objUID)
|
||||
|
||||
def addLayerEntry(self, name, idx):
|
||||
index = self.llist.InsertStringItem(self.llist.GetItemCount(), name)
|
||||
self.llist.SetItemData(index, idx)
|
||||
layersData = list()
|
||||
self.layersDataDict[idx] = layersData
|
||||
if idx > self.layersDataDictNextKey:
|
||||
self.layersDataDictNextKey = idx
|
||||
|
||||
def addLayer(self):
|
||||
#import pdb;set_trace()
|
||||
count = self.llist.GetItemCount()
|
||||
i = 1
|
||||
text = "Layer%s"%(count + i)
|
||||
found = self.findLabel(text)
|
||||
while found:
|
||||
i = i + 1
|
||||
text = "Layer%s"%(count + i)
|
||||
found = self.findLabel(text)
|
||||
|
||||
self.layersDataDictNextKey = self.layersDataDictNextKey + 1
|
||||
self.addLayerEntry(text, self.layersDataDictNextKey)
|
||||
|
||||
def deleteLayer(self):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index != -1:
|
||||
key = self.llist.GetItemData(index)
|
||||
del(self.layersDataDict[key])
|
||||
item = self.llist.DeleteItem(index)
|
||||
|
||||
def renameLayer(self):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index != -1:
|
||||
self.llist.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
|
||||
self.llist.SetItemState(index, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED)
|
||||
|
||||
def removeObjData(self, objUID):
|
||||
layersDataDictKeys = self.layersDataDict.keys()
|
||||
for i in range(len(layersDataDictKeys)):
|
||||
layersData = self.layersDataDict[layersDataDictKeys[i]]
|
||||
for j in range(len(layersData)):
|
||||
if layersData[j] == objUID:
|
||||
del(layersData[j])
|
||||
|
||||
def removeObj(self):
|
||||
objNodePath = base.direct.selected.last
|
||||
if objNodePath is None:
|
||||
wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
|
||||
if obj is not None:
|
||||
self.removeObjData(obj[OG.OBJ_UID])
|
||||
|
||||
def addObj(self):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index == -1:
|
||||
wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
objNodePath = base.direct.selected.last
|
||||
if objNodePath is None:
|
||||
wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
|
||||
# Checking if the object was laready added to the layer
|
||||
obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
|
||||
if obj is not None:
|
||||
i = self.llist.GetItemData(index)
|
||||
layersData = self.layersDataDict[i]
|
||||
for j in range(len(layersData)):
|
||||
if layersData[j] == obj[OG.OBJ_UID]:
|
||||
wx.MessageBox("Selected object already is this layer", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
# Looking for the object in the other layers
|
||||
# If the object is found - delete it.
|
||||
self.removeObj()
|
||||
|
||||
layersData.append(obj[OG.OBJ_UID])
|
||||
|
||||
def onShowMembers(self, event):
|
||||
item = event.GetItem()
|
||||
layerMembers = list()
|
||||
layerName = item.GetText()
|
||||
key = item.GetData()
|
||||
layerData = self.layersDataDict[key]
|
||||
for i in range(len(layerData)):
|
||||
obj = self.editor.objectMgr.findObjectById(layerData[i])
|
||||
namestr = "%s_%s"%(obj[OG.OBJ_DEF].name, obj[OG.OBJ_UID])
|
||||
layerMembers.append(namestr)
|
||||
dialog = wx.SingleChoiceDialog(None, layerName, self.editorTxt, layerMembers)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
#do something here
|
||||
dialog.GetStringSelection()
|
||||
dialog.Destroy()
|
||||
|
||||
def HideObj(self, hide):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index == -1:
|
||||
wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
|
||||
key = self.llist.GetItemData(index)
|
||||
layerData = self.layersDataDict[key]
|
||||
if len(layerData) == 0:
|
||||
return
|
||||
for i in range(len(layerData)):
|
||||
obj = self.editor.objectMgr.findObjectById(layerData[i])
|
||||
if hide:
|
||||
obj[OG.OBJ_NP].hide()
|
||||
else:
|
||||
obj[OG.OBJ_NP].show()
|
||||
|
||||
font = wx.Font
|
||||
font = self.llist.GetItemFont(index)
|
||||
if hide:
|
||||
font.SetWeight(wx.FONTWEIGHT_BOLD)
|
||||
else:
|
||||
font.SetWeight(wx.FONTWEIGHT_NORMAL)
|
||||
self.llist.SetItemFont(index, font)
|
||||
|
||||
def traverse(self):
|
||||
self.saveData.append("ui.layerEditorUI.reset()")
|
||||
for index in range(self.llist.GetItemCount()):
|
||||
self.saveData.append("ui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index)))
|
||||
layersDataDictKeys = self.layersDataDict.keys()
|
||||
for i in range(len(layersDataDictKeys)):
|
||||
layerData = self.layersDataDict[layersDataDictKeys[i]]
|
||||
for j in range(len(layerData)):
|
||||
self.saveData.append("ui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j]))
|
||||
|
||||
def getSaveData(self):
|
||||
self.saveData = []
|
||||
self.traverse()
|
||||
return self.saveData
|
||||
|
||||
"""
|
||||
Defines Layer UI
|
||||
"""
|
||||
import wx
|
||||
import sys
|
||||
import cPickle as pickle
|
||||
from pandac.PandaModules import *
|
||||
|
||||
import ObjectGlobals as OG
|
||||
|
||||
class LayerEditorUI(wx.Panel):
|
||||
def __init__(self, parent, editor):
|
||||
wx.Panel.__init__(self, parent)
|
||||
|
||||
self.editor = editor
|
||||
self.editorTxt = "Layer Editor"
|
||||
self.saveData = []
|
||||
self.layersDataDict = dict()
|
||||
self.layersDataDictNextKey = 0
|
||||
self.llist = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_EDIT_LABELS|wx.LC_NO_HEADER)
|
||||
self.llist.InsertColumn(0, "Layers")
|
||||
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(self.llist, 1, wx.EXPAND, 0)
|
||||
self.SetSizer(sizer); self.Layout()
|
||||
|
||||
parentSizer = wx.BoxSizer(wx.VERTICAL)
|
||||
parentSizer.Add(self, 1, wx.EXPAND, 0)
|
||||
parent.SetSizer(parentSizer); parent.Layout()
|
||||
|
||||
self.opAdd = "Add Layer"
|
||||
self.opDelete = "Delete Layer"
|
||||
self.opRename = "Rename Layer"
|
||||
self.opAddObj = "Add Selected Object"
|
||||
self.opRemoveObj = "Remove Selected Object"
|
||||
self.opShowObj = "Show Layer Objects"
|
||||
self.opHideObj = "Hide Layer Objects"
|
||||
|
||||
self.menuItemsGen = list()
|
||||
self.menuItemsGen.append(self.opAdd)
|
||||
#self.menuItems.append(self.opRename)
|
||||
|
||||
self.menuItemsObj = list()
|
||||
self.menuItemsObj.append(self.opAddObj)
|
||||
self.menuItemsObj.append(self.opRemoveObj)
|
||||
self.menuItemsObj.append(self.opShowObj)
|
||||
self.menuItemsObj.append(self.opHideObj)
|
||||
self.menuItemsObj.append(self.opDelete)
|
||||
|
||||
self.popupmenu = wx.Menu()
|
||||
for item in self.menuItemsGen:
|
||||
menuItem = self.popupmenu.Append(-1, item)
|
||||
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
|
||||
|
||||
self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
|
||||
self.llist.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onShowMembers)
|
||||
|
||||
def menuAppendGenItems(self):
|
||||
for item in self.menuItemsGen:
|
||||
menuItem = self.popupmenu.Append(-1, item)
|
||||
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
|
||||
|
||||
def menuAppendObjItems(self):
|
||||
for item in self.menuItemsObj:
|
||||
menuItem = self.popupmenu.Append(-1, item)
|
||||
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
|
||||
|
||||
def onShowPopup(self, event):
|
||||
pos = event.GetPosition()
|
||||
pos = self.ScreenToClient(pos)
|
||||
|
||||
for menuItem in self.popupmenu.GetMenuItems():
|
||||
self.popupmenu.RemoveItem(menuItem)
|
||||
|
||||
#import pdb;set_trace()
|
||||
hitItem, flags = self.llist.HitTest(pos)
|
||||
if hitItem == -1:
|
||||
self.menuAppendGenItems()
|
||||
else:
|
||||
self.menuAppendObjItems()
|
||||
self.PopupMenu(self.popupmenu, pos)
|
||||
|
||||
def onPopupItemSelected(self, event):
|
||||
menuItem = self.popupmenu.FindItemById(event.GetId())
|
||||
text = menuItem.GetText()
|
||||
if text == self.opAddObj:
|
||||
self.addObj()
|
||||
elif text == self.opRemoveObj:
|
||||
self.removeObj()
|
||||
elif text == self.opShowObj:
|
||||
self.HideObj(False)
|
||||
elif text == self.opHideObj:
|
||||
self.HideObj(True)
|
||||
elif text == self.opAdd:
|
||||
self.addLayer()
|
||||
elif text == self.opDelete:
|
||||
self.deleteLayer()
|
||||
elif text == self.opRename:
|
||||
self.renameLayer()
|
||||
else:
|
||||
wx.MessageBox("You selected item '%s'" % text)
|
||||
|
||||
def reset(self):
|
||||
#import pdb;set_trace()
|
||||
self.layersDataDict.clear()
|
||||
self.layersDataDictNextKey = 0
|
||||
self.llist.DeleteAllItems()
|
||||
|
||||
def findLabel(self, text):
|
||||
found = False
|
||||
for index in range(self.llist.GetItemCount()):
|
||||
itemtext = self.llist.GetItemText(index)
|
||||
if itemtext == text:
|
||||
return True
|
||||
return found
|
||||
|
||||
def addLayerData(self, idx, objUID):
|
||||
self.removeObjData(objUID)
|
||||
layerData = self.layersDataDict[idx]
|
||||
layerData.append(objUID)
|
||||
|
||||
def addLayerEntry(self, name, idx):
|
||||
index = self.llist.InsertStringItem(self.llist.GetItemCount(), name)
|
||||
self.llist.SetItemData(index, idx)
|
||||
layersData = list()
|
||||
self.layersDataDict[idx] = layersData
|
||||
if idx > self.layersDataDictNextKey:
|
||||
self.layersDataDictNextKey = idx
|
||||
|
||||
def addLayer(self):
|
||||
#import pdb;set_trace()
|
||||
count = self.llist.GetItemCount()
|
||||
i = 1
|
||||
text = "Layer%s"%(count + i)
|
||||
found = self.findLabel(text)
|
||||
while found:
|
||||
i = i + 1
|
||||
text = "Layer%s"%(count + i)
|
||||
found = self.findLabel(text)
|
||||
|
||||
self.layersDataDictNextKey = self.layersDataDictNextKey + 1
|
||||
self.addLayerEntry(text, self.layersDataDictNextKey)
|
||||
|
||||
def deleteLayer(self):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index != -1:
|
||||
key = self.llist.GetItemData(index)
|
||||
del(self.layersDataDict[key])
|
||||
item = self.llist.DeleteItem(index)
|
||||
|
||||
def renameLayer(self):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index != -1:
|
||||
self.llist.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
|
||||
self.llist.SetItemState(index, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED)
|
||||
|
||||
def removeObjData(self, objUID):
|
||||
layersDataDictKeys = self.layersDataDict.keys()
|
||||
for i in range(len(layersDataDictKeys)):
|
||||
layersData = self.layersDataDict[layersDataDictKeys[i]]
|
||||
for j in range(len(layersData)):
|
||||
if layersData[j] == objUID:
|
||||
del(layersData[j])
|
||||
|
||||
def removeObj(self):
|
||||
objNodePath = base.direct.selected.last
|
||||
if objNodePath is None:
|
||||
wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
|
||||
if obj is not None:
|
||||
self.removeObjData(obj[OG.OBJ_UID])
|
||||
|
||||
def addObj(self):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index == -1:
|
||||
wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
objNodePath = base.direct.selected.last
|
||||
if objNodePath is None:
|
||||
wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
|
||||
# Checking if the object was laready added to the layer
|
||||
obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
|
||||
if obj is not None:
|
||||
i = self.llist.GetItemData(index)
|
||||
layersData = self.layersDataDict[i]
|
||||
for j in range(len(layersData)):
|
||||
if layersData[j] == obj[OG.OBJ_UID]:
|
||||
wx.MessageBox("Selected object already is this layer", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
# Looking for the object in the other layers
|
||||
# If the object is found - delete it.
|
||||
self.removeObj()
|
||||
|
||||
layersData.append(obj[OG.OBJ_UID])
|
||||
|
||||
def onShowMembers(self, event):
|
||||
item = event.GetItem()
|
||||
layerMembers = list()
|
||||
layerName = item.GetText()
|
||||
key = item.GetData()
|
||||
layerData = self.layersDataDict[key]
|
||||
for i in range(len(layerData)):
|
||||
obj = self.editor.objectMgr.findObjectById(layerData[i])
|
||||
namestr = "%s_%s"%(obj[OG.OBJ_DEF].name, obj[OG.OBJ_UID])
|
||||
layerMembers.append(namestr)
|
||||
dialog = wx.SingleChoiceDialog(None, layerName, self.editorTxt, layerMembers)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
#do something here
|
||||
dialog.GetStringSelection()
|
||||
dialog.Destroy()
|
||||
|
||||
def HideObj(self, hide):
|
||||
index = self.llist.GetFirstSelected()
|
||||
if index == -1:
|
||||
wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
|
||||
return
|
||||
|
||||
key = self.llist.GetItemData(index)
|
||||
layerData = self.layersDataDict[key]
|
||||
if len(layerData) == 0:
|
||||
return
|
||||
for i in range(len(layerData)):
|
||||
obj = self.editor.objectMgr.findObjectById(layerData[i])
|
||||
if hide:
|
||||
obj[OG.OBJ_NP].hide()
|
||||
else:
|
||||
obj[OG.OBJ_NP].show()
|
||||
|
||||
font = wx.Font
|
||||
font = self.llist.GetItemFont(index)
|
||||
if hide:
|
||||
font.SetWeight(wx.FONTWEIGHT_BOLD)
|
||||
else:
|
||||
font.SetWeight(wx.FONTWEIGHT_NORMAL)
|
||||
self.llist.SetItemFont(index, font)
|
||||
|
||||
def traverse(self):
|
||||
self.saveData.append("\nif hasattr(base, 'le'):")
|
||||
self.saveData.append("\tui.layerEditorUI.reset()")
|
||||
for index in range(self.llist.GetItemCount()):
|
||||
self.saveData.append("\tui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index)))
|
||||
layersDataDictKeys = self.layersDataDict.keys()
|
||||
for i in range(len(layersDataDictKeys)):
|
||||
layerData = self.layersDataDict[layersDataDictKeys[i]]
|
||||
for j in range(len(layerData)):
|
||||
self.saveData.append("\tui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j]))
|
||||
|
||||
def getSaveData(self):
|
||||
self.saveData = []
|
||||
self.traverse()
|
||||
return self.saveData
|
||||
|
||||
|
@ -45,7 +45,8 @@ class ObjectHandler:
|
||||
|
||||
def updateSmiley(self, val, obj):
|
||||
objNP = obj[OG.OBJ_NP]
|
||||
base.direct.deselectAll()
|
||||
if base.direct:
|
||||
base.direct.deselectAll()
|
||||
for child in objNP.findAllMatches("+GeomNode"):
|
||||
child.removeNode()
|
||||
|
||||
|
@ -63,9 +63,12 @@ class ObjectMgr:
|
||||
if parent is None:
|
||||
parent = render
|
||||
|
||||
objDef = self.editor.objectPalette.findItem(typeName)
|
||||
if objDef is None:
|
||||
objDef = self.editor.protoPalette.findItem(typeName)
|
||||
if self.editor:
|
||||
objDef = self.editor.objectPalette.findItem(typeName)
|
||||
if objDef is None:
|
||||
objDef = self.editor.protoPalette.findItem(typeName)
|
||||
else:
|
||||
objDef = base.objectPalette.findItem(typeName)
|
||||
newobj = None
|
||||
if objDef and type(objDef) != dict:
|
||||
if objDef.createFunction:
|
||||
@ -73,7 +76,10 @@ class ObjectMgr:
|
||||
funcArgs = objDef.createFunction[OG.FUNC_ARGS]
|
||||
if funcName.startswith('.'):
|
||||
# when it's using default objectHandler
|
||||
func = Functor(eval("base.le.objectHandler%s"%funcName))
|
||||
if self.editor:
|
||||
func = Functor(eval("base.le.objectHandler%s"%funcName))
|
||||
else:
|
||||
func = Functor(eval("base.objectHandler%s"%funcName))
|
||||
else:
|
||||
# when it's not using default objectHandler, whole name of the handling obj
|
||||
# should be included in function name
|
||||
@ -125,10 +131,10 @@ class ObjectMgr:
|
||||
self.objects[uid] = [uid, newobj, objDef, model, anim, properties]
|
||||
self.npIndex[NodePath(newobj)] = uid
|
||||
|
||||
if fSelectObject:
|
||||
base.direct.select(newobj)
|
||||
|
||||
self.editor.ui.sceneGraphUI.add(newobj)
|
||||
if self.editor:
|
||||
if fSelectObject:
|
||||
base.direct.select(newobj)
|
||||
self.editor.ui.sceneGraphUI.add(newobj)
|
||||
|
||||
return newobj
|
||||
|
||||
@ -397,7 +403,10 @@ class ObjectMgr:
|
||||
funcArgs = propDef[OG.PROP_FUNC][OG.FUNC_ARGS]
|
||||
|
||||
if funcName.startswith('.'):
|
||||
func = Functor(eval("base.le.objectHandler%s"%funcName))
|
||||
if self.editor:
|
||||
func = Functor(eval("base.le.objectHandler%s"%funcName))
|
||||
else:
|
||||
func = Functor(eval("base.objectHandler%s"%funcName))
|
||||
else:
|
||||
func = Functor(eval(funcName))
|
||||
|
||||
@ -414,7 +423,7 @@ class ObjectMgr:
|
||||
# finally call update function
|
||||
func(**kwargs)
|
||||
|
||||
if fSelectObject:
|
||||
if self.editor and fSelectObject:
|
||||
base.direct.select(obj[OG.OBJ_NP])
|
||||
|
||||
def updateObjectProperties(self, nodePath, propValues):
|
||||
|
@ -1,54 +1,65 @@
|
||||
from pandac.PandaModules import *
|
||||
|
||||
objectMgr = base.le.objectMgr
|
||||
# temporary place holder for nodepath
|
||||
objects = {}
|
||||
|
||||
objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
|
||||
if objects['1252538687.73gjeon']:
|
||||
objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246))
|
||||
objects['1252538687.73gjeon'].setHpr(VBase3(180, 0, 0))
|
||||
objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
|
||||
|
||||
objects['1252538690.2gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252538690.2gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252538690.2gjeon']:
|
||||
objects['1252538690.2gjeon'].setPos(Point3(0, 0, 2.12046))
|
||||
objects['1252538690.2gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252538690.2gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252538690.2gjeon'], {'Distance': 2.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252539696.69gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539696.69gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252539696.69gjeon']:
|
||||
objects['1252539696.69gjeon'].setPos(Point3(-9.53674e-006, 0, 0))
|
||||
objects['1252539696.69gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252539696.69gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252539696.69gjeon'], {'Distance': 2.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252539897.22gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539897.22gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252539897.22gjeon']:
|
||||
objects['1252539897.22gjeon'].setPos(Point3(0.06987, 0, -2.12046))
|
||||
objects['1252539897.22gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252539897.22gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252539897.22gjeon'], {'Distance': 2.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252538689.13gjeon'] = objectMgr.addNewObject('V Double Smiley', '1252538689.13gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252538689.13gjeon']:
|
||||
objects['1252538689.13gjeon'].setPos(Point3(6.07152, 0, -0.863791))
|
||||
objects['1252538689.13gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252538689.13gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252538689.13gjeon'], {'Distance': 1.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252539974.19gjeon'] = objectMgr.addNewObject('Smiley', '1252539974.19gjeon', 'models/frowney.egg', objects['1252538689.13gjeon'])
|
||||
if objects['1252539974.19gjeon']:
|
||||
objects['1252539974.19gjeon'].setPos(Point3(0.06987, 0, 3.09209))
|
||||
objects['1252539974.19gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252539974.19gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252539974.19gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
|
||||
|
||||
objects['1252623762.9gjeon'] = objectMgr.addNewObject('Panda', '1252623762.9gjeon', None, None)
|
||||
if objects['1252623762.9gjeon']:
|
||||
objects['1252623762.9gjeon'].setPos(Point3(0, 0, 0))
|
||||
objects['1252623762.9gjeon'].setHpr(VBase3(172.8, 0, 0))
|
||||
objects['1252623762.9gjeon'].setScale(VBase3(0.005, 0.005, 0.005))
|
||||
objectMgr.updateObjectProperties(objects['1252623762.9gjeon'], {'Distance': 1.0, 'Abc': 'a'})
|
||||
from pandac.PandaModules import *
|
||||
|
||||
hasattr(base, 'le'):
|
||||
objectMgr = base.le.objectMgr
|
||||
ui = base.le.ui
|
||||
ui.sceneGraphUI.reset()
|
||||
|
||||
else:
|
||||
objectMgr = base.objectMgr
|
||||
# temporary place holder for nodepath
|
||||
objects = {}
|
||||
|
||||
objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
|
||||
if objects['1252538687.73gjeon']:
|
||||
objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246))
|
||||
objects['1252538687.73gjeon'].setHpr(VBase3(-180, 0, 0))
|
||||
objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
|
||||
|
||||
objects['1252538690.2gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252538690.2gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252538690.2gjeon']:
|
||||
objects['1252538690.2gjeon'].setPos(Point3(0, 0, 2.12046))
|
||||
objects['1252538690.2gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252538690.2gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252538690.2gjeon'], {'Distance': 2.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252539696.69gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539696.69gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252539696.69gjeon']:
|
||||
objects['1252539696.69gjeon'].setPos(Point3(-9.53674e-006, 0, 0))
|
||||
objects['1252539696.69gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252539696.69gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252539696.69gjeon'], {'Distance': 2.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252539897.22gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539897.22gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252539897.22gjeon']:
|
||||
objects['1252539897.22gjeon'].setPos(Point3(0.06987, 0, -2.12046))
|
||||
objects['1252539897.22gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252539897.22gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252539897.22gjeon'], {'Distance': 2.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252538689.13gjeon'] = objectMgr.addNewObject('V Double Smiley', '1252538689.13gjeon', None, objects['1252538687.73gjeon'])
|
||||
if objects['1252538689.13gjeon']:
|
||||
objects['1252538689.13gjeon'].setPos(Point3(6.07152, 0, -0.863791))
|
||||
objects['1252538689.13gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252538689.13gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252538689.13gjeon'], {'Distance': 1.0, 'Abc': 'a'})
|
||||
|
||||
objects['1252539974.19gjeon'] = objectMgr.addNewObject('Smiley', '1252539974.19gjeon', 'models/frowney.egg', objects['1252538689.13gjeon'])
|
||||
if objects['1252539974.19gjeon']:
|
||||
objects['1252539974.19gjeon'].setPos(Point3(0.06987, 0, 3.09209))
|
||||
objects['1252539974.19gjeon'].setHpr(VBase3(0, 0, 0))
|
||||
objects['1252539974.19gjeon'].setScale(VBase3(1, 1, 1))
|
||||
objectMgr.updateObjectProperties(objects['1252539974.19gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
|
||||
|
||||
objects['1252623762.9gjeon'] = objectMgr.addNewObject('Panda', '1252623762.9gjeon', None, None)
|
||||
if objects['1252623762.9gjeon']:
|
||||
objects['1252623762.9gjeon'].setPos(Point3(0, 0, 0))
|
||||
objects['1252623762.9gjeon'].setHpr(VBase3(172.8, 0, 0))
|
||||
objects['1252623762.9gjeon'].setScale(VBase3(0.005, 0.005, 0.005))
|
||||
objectMgr.updateObjectProperties(objects['1252623762.9gjeon'], {})
|
||||
|
||||
if hasattr(base, 'le'):
|
||||
ui.layerEditorUI.reset()
|
||||
ui.layerEditorUI.addLayerEntry('Layer1', 1 )
|
||||
ui.layerEditorUI.addLayerData(1, '1252538687.73gjeon')
|
||||
|
Loading…
x
Reference in New Issue
Block a user