mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 19:08:55 -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 os
|
||||||
import imp
|
import imp
|
||||||
|
|
||||||
|
from ObjectMgr import ObjectMgr
|
||||||
|
from ObjectHandler import ObjectHandler
|
||||||
|
from ObjectPalette import ObjectPalette
|
||||||
|
|
||||||
import ObjectGlobals as OG
|
import ObjectGlobals as OG
|
||||||
|
|
||||||
class FileMgr:
|
class FileMgr:
|
||||||
@ -13,9 +17,12 @@ class FileMgr:
|
|||||||
try:
|
try:
|
||||||
f = open(fileName, 'w')
|
f = open(fileName, 'w')
|
||||||
f.write("from pandac.PandaModules import *\n")
|
f.write("from pandac.PandaModules import *\n")
|
||||||
f.write("\nobjectMgr = base.le.objectMgr\n")
|
f.write("\nhasattr(base, 'le'):\n")
|
||||||
f.write('ui = base.le.ui\n')
|
f.write("\tobjectMgr = base.le.objectMgr\n")
|
||||||
f.write('\nui.sceneGraphUI.reset()\n\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("# temporary place holder for nodepath\n")
|
||||||
f.write("objects = {}\n")
|
f.write("objects = {}\n")
|
||||||
saveData = self.editor.objectMgr.getSaveData()
|
saveData = self.editor.objectMgr.getSaveData()
|
||||||
@ -36,9 +43,13 @@ class FileMgr:
|
|||||||
dirname, moduleName = os.path.split(fileName)
|
dirname, moduleName = os.path.split(fileName)
|
||||||
if moduleName.endswith('.py'):
|
if moduleName.endswith('.py'):
|
||||||
moduleName = moduleName[:-3]
|
moduleName = moduleName[:-3]
|
||||||
|
|
||||||
file, pathname, description = imp.find_module(moduleName, [dirname])
|
file, pathname, description = imp.find_module(moduleName, [dirname])
|
||||||
try:
|
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)
|
module = imp.load_module(moduleName, file, pathname, description)
|
||||||
except:
|
except:
|
||||||
print 'failed to load %s'%fileName
|
print 'failed to load %s'%fileName
|
||||||
|
@ -238,14 +238,15 @@ class LayerEditorUI(wx.Panel):
|
|||||||
self.llist.SetItemFont(index, font)
|
self.llist.SetItemFont(index, font)
|
||||||
|
|
||||||
def traverse(self):
|
def traverse(self):
|
||||||
self.saveData.append("ui.layerEditorUI.reset()")
|
self.saveData.append("\nif hasattr(base, 'le'):")
|
||||||
|
self.saveData.append("\tui.layerEditorUI.reset()")
|
||||||
for index in range(self.llist.GetItemCount()):
|
for index in range(self.llist.GetItemCount()):
|
||||||
self.saveData.append("ui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index)))
|
self.saveData.append("\tui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index)))
|
||||||
layersDataDictKeys = self.layersDataDict.keys()
|
layersDataDictKeys = self.layersDataDict.keys()
|
||||||
for i in range(len(layersDataDictKeys)):
|
for i in range(len(layersDataDictKeys)):
|
||||||
layerData = self.layersDataDict[layersDataDictKeys[i]]
|
layerData = self.layersDataDict[layersDataDictKeys[i]]
|
||||||
for j in range(len(layerData)):
|
for j in range(len(layerData)):
|
||||||
self.saveData.append("ui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j]))
|
self.saveData.append("\tui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j]))
|
||||||
|
|
||||||
def getSaveData(self):
|
def getSaveData(self):
|
||||||
self.saveData = []
|
self.saveData = []
|
||||||
|
@ -45,7 +45,8 @@ class ObjectHandler:
|
|||||||
|
|
||||||
def updateSmiley(self, val, obj):
|
def updateSmiley(self, val, obj):
|
||||||
objNP = obj[OG.OBJ_NP]
|
objNP = obj[OG.OBJ_NP]
|
||||||
base.direct.deselectAll()
|
if base.direct:
|
||||||
|
base.direct.deselectAll()
|
||||||
for child in objNP.findAllMatches("+GeomNode"):
|
for child in objNP.findAllMatches("+GeomNode"):
|
||||||
child.removeNode()
|
child.removeNode()
|
||||||
|
|
||||||
|
@ -63,9 +63,12 @@ class ObjectMgr:
|
|||||||
if parent is None:
|
if parent is None:
|
||||||
parent = render
|
parent = render
|
||||||
|
|
||||||
objDef = self.editor.objectPalette.findItem(typeName)
|
if self.editor:
|
||||||
if objDef is None:
|
objDef = self.editor.objectPalette.findItem(typeName)
|
||||||
objDef = self.editor.protoPalette.findItem(typeName)
|
if objDef is None:
|
||||||
|
objDef = self.editor.protoPalette.findItem(typeName)
|
||||||
|
else:
|
||||||
|
objDef = base.objectPalette.findItem(typeName)
|
||||||
newobj = None
|
newobj = None
|
||||||
if objDef and type(objDef) != dict:
|
if objDef and type(objDef) != dict:
|
||||||
if objDef.createFunction:
|
if objDef.createFunction:
|
||||||
@ -73,7 +76,10 @@ class ObjectMgr:
|
|||||||
funcArgs = objDef.createFunction[OG.FUNC_ARGS]
|
funcArgs = objDef.createFunction[OG.FUNC_ARGS]
|
||||||
if funcName.startswith('.'):
|
if funcName.startswith('.'):
|
||||||
# when it's using default objectHandler
|
# 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:
|
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
|
||||||
@ -125,10 +131,10 @@ class ObjectMgr:
|
|||||||
self.objects[uid] = [uid, newobj, objDef, model, anim, properties]
|
self.objects[uid] = [uid, newobj, objDef, model, anim, properties]
|
||||||
self.npIndex[NodePath(newobj)] = uid
|
self.npIndex[NodePath(newobj)] = uid
|
||||||
|
|
||||||
if fSelectObject:
|
if self.editor:
|
||||||
base.direct.select(newobj)
|
if fSelectObject:
|
||||||
|
base.direct.select(newobj)
|
||||||
self.editor.ui.sceneGraphUI.add(newobj)
|
self.editor.ui.sceneGraphUI.add(newobj)
|
||||||
|
|
||||||
return newobj
|
return newobj
|
||||||
|
|
||||||
@ -397,7 +403,10 @@ class ObjectMgr:
|
|||||||
funcArgs = propDef[OG.PROP_FUNC][OG.FUNC_ARGS]
|
funcArgs = propDef[OG.PROP_FUNC][OG.FUNC_ARGS]
|
||||||
|
|
||||||
if funcName.startswith('.'):
|
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:
|
else:
|
||||||
func = Functor(eval(funcName))
|
func = Functor(eval(funcName))
|
||||||
|
|
||||||
@ -414,7 +423,7 @@ class ObjectMgr:
|
|||||||
# finally call update function
|
# finally call update function
|
||||||
func(**kwargs)
|
func(**kwargs)
|
||||||
|
|
||||||
if fSelectObject:
|
if self.editor and fSelectObject:
|
||||||
base.direct.select(obj[OG.OBJ_NP])
|
base.direct.select(obj[OG.OBJ_NP])
|
||||||
|
|
||||||
def updateObjectProperties(self, nodePath, propValues):
|
def updateObjectProperties(self, nodePath, propValues):
|
||||||
|
@ -1,13 +1,19 @@
|
|||||||
from pandac.PandaModules import *
|
from pandac.PandaModules import *
|
||||||
|
|
||||||
objectMgr = base.le.objectMgr
|
hasattr(base, 'le'):
|
||||||
|
objectMgr = base.le.objectMgr
|
||||||
|
ui = base.le.ui
|
||||||
|
ui.sceneGraphUI.reset()
|
||||||
|
|
||||||
|
else:
|
||||||
|
objectMgr = base.objectMgr
|
||||||
# temporary place holder for nodepath
|
# temporary place holder for nodepath
|
||||||
objects = {}
|
objects = {}
|
||||||
|
|
||||||
objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
|
objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
|
||||||
if objects['1252538687.73gjeon']:
|
if objects['1252538687.73gjeon']:
|
||||||
objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246))
|
objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246))
|
||||||
objects['1252538687.73gjeon'].setHpr(VBase3(180, 0, 0))
|
objects['1252538687.73gjeon'].setHpr(VBase3(-180, 0, 0))
|
||||||
objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1))
|
objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1))
|
||||||
objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
|
objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
|
||||||
|
|
||||||
@ -51,4 +57,9 @@ if objects['1252623762.9gjeon']:
|
|||||||
objects['1252623762.9gjeon'].setPos(Point3(0, 0, 0))
|
objects['1252623762.9gjeon'].setPos(Point3(0, 0, 0))
|
||||||
objects['1252623762.9gjeon'].setHpr(VBase3(172.8, 0, 0))
|
objects['1252623762.9gjeon'].setHpr(VBase3(172.8, 0, 0))
|
||||||
objects['1252623762.9gjeon'].setScale(VBase3(0.005, 0.005, 0.005))
|
objects['1252623762.9gjeon'].setScale(VBase3(0.005, 0.005, 0.005))
|
||||||
objectMgr.updateObjectProperties(objects['1252623762.9gjeon'], {'Distance': 1.0, 'Abc': 'a'})
|
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