Made LE data can be loaded outside of LE

This commit is contained in:
Gyedo Jeon 2010-01-26 01:21:23 +00:00
parent bf3daf54a1
commit 6b22e16a51
5 changed files with 356 additions and 323 deletions

View File

@ -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

View File

@ -1,254 +1,255 @@
""" """
Defines Layer UI Defines Layer UI
""" """
import wx import wx
import sys import sys
import cPickle as pickle import cPickle as pickle
from pandac.PandaModules import * from pandac.PandaModules import *
import ObjectGlobals as OG import ObjectGlobals as OG
class LayerEditorUI(wx.Panel): class LayerEditorUI(wx.Panel):
def __init__(self, parent, editor): def __init__(self, parent, editor):
wx.Panel.__init__(self, parent) wx.Panel.__init__(self, parent)
self.editor = editor self.editor = editor
self.editorTxt = "Layer Editor" self.editorTxt = "Layer Editor"
self.saveData = [] self.saveData = []
self.layersDataDict = dict() self.layersDataDict = dict()
self.layersDataDictNextKey = 0 self.layersDataDictNextKey = 0
self.llist = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_EDIT_LABELS|wx.LC_NO_HEADER) self.llist = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_EDIT_LABELS|wx.LC_NO_HEADER)
self.llist.InsertColumn(0, "Layers") self.llist.InsertColumn(0, "Layers")
sizer = wx.BoxSizer(wx.VERTICAL) sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.llist, 1, wx.EXPAND, 0) sizer.Add(self.llist, 1, wx.EXPAND, 0)
self.SetSizer(sizer); self.Layout() self.SetSizer(sizer); self.Layout()
parentSizer = wx.BoxSizer(wx.VERTICAL) parentSizer = wx.BoxSizer(wx.VERTICAL)
parentSizer.Add(self, 1, wx.EXPAND, 0) parentSizer.Add(self, 1, wx.EXPAND, 0)
parent.SetSizer(parentSizer); parent.Layout() parent.SetSizer(parentSizer); parent.Layout()
self.opAdd = "Add Layer" self.opAdd = "Add Layer"
self.opDelete = "Delete Layer" self.opDelete = "Delete Layer"
self.opRename = "Rename Layer" self.opRename = "Rename Layer"
self.opAddObj = "Add Selected Object" self.opAddObj = "Add Selected Object"
self.opRemoveObj = "Remove Selected Object" self.opRemoveObj = "Remove Selected Object"
self.opShowObj = "Show Layer Objects" self.opShowObj = "Show Layer Objects"
self.opHideObj = "Hide Layer Objects" self.opHideObj = "Hide Layer Objects"
self.menuItemsGen = list() self.menuItemsGen = list()
self.menuItemsGen.append(self.opAdd) self.menuItemsGen.append(self.opAdd)
#self.menuItems.append(self.opRename) #self.menuItems.append(self.opRename)
self.menuItemsObj = list() self.menuItemsObj = list()
self.menuItemsObj.append(self.opAddObj) self.menuItemsObj.append(self.opAddObj)
self.menuItemsObj.append(self.opRemoveObj) self.menuItemsObj.append(self.opRemoveObj)
self.menuItemsObj.append(self.opShowObj) self.menuItemsObj.append(self.opShowObj)
self.menuItemsObj.append(self.opHideObj) self.menuItemsObj.append(self.opHideObj)
self.menuItemsObj.append(self.opDelete) self.menuItemsObj.append(self.opDelete)
self.popupmenu = wx.Menu() self.popupmenu = wx.Menu()
for item in self.menuItemsGen: for item in self.menuItemsGen:
menuItem = self.popupmenu.Append(-1, item) menuItem = self.popupmenu.Append(-1, item)
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem) self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup) self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
self.llist.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onShowMembers) self.llist.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onShowMembers)
def menuAppendGenItems(self): def menuAppendGenItems(self):
for item in self.menuItemsGen: for item in self.menuItemsGen:
menuItem = self.popupmenu.Append(-1, item) menuItem = self.popupmenu.Append(-1, item)
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem) self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
def menuAppendObjItems(self): def menuAppendObjItems(self):
for item in self.menuItemsObj: for item in self.menuItemsObj:
menuItem = self.popupmenu.Append(-1, item) menuItem = self.popupmenu.Append(-1, item)
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem) self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
def onShowPopup(self, event): def onShowPopup(self, event):
pos = event.GetPosition() pos = event.GetPosition()
pos = self.ScreenToClient(pos) pos = self.ScreenToClient(pos)
for menuItem in self.popupmenu.GetMenuItems(): for menuItem in self.popupmenu.GetMenuItems():
self.popupmenu.RemoveItem(menuItem) self.popupmenu.RemoveItem(menuItem)
#import pdb;set_trace() #import pdb;set_trace()
hitItem, flags = self.llist.HitTest(pos) hitItem, flags = self.llist.HitTest(pos)
if hitItem == -1: if hitItem == -1:
self.menuAppendGenItems() self.menuAppendGenItems()
else: else:
self.menuAppendObjItems() self.menuAppendObjItems()
self.PopupMenu(self.popupmenu, pos) self.PopupMenu(self.popupmenu, pos)
def onPopupItemSelected(self, event): def onPopupItemSelected(self, event):
menuItem = self.popupmenu.FindItemById(event.GetId()) menuItem = self.popupmenu.FindItemById(event.GetId())
text = menuItem.GetText() text = menuItem.GetText()
if text == self.opAddObj: if text == self.opAddObj:
self.addObj() self.addObj()
elif text == self.opRemoveObj: elif text == self.opRemoveObj:
self.removeObj() self.removeObj()
elif text == self.opShowObj: elif text == self.opShowObj:
self.HideObj(False) self.HideObj(False)
elif text == self.opHideObj: elif text == self.opHideObj:
self.HideObj(True) self.HideObj(True)
elif text == self.opAdd: elif text == self.opAdd:
self.addLayer() self.addLayer()
elif text == self.opDelete: elif text == self.opDelete:
self.deleteLayer() self.deleteLayer()
elif text == self.opRename: elif text == self.opRename:
self.renameLayer() self.renameLayer()
else: else:
wx.MessageBox("You selected item '%s'" % text) wx.MessageBox("You selected item '%s'" % text)
def reset(self): def reset(self):
#import pdb;set_trace() #import pdb;set_trace()
self.layersDataDict.clear() self.layersDataDict.clear()
self.layersDataDictNextKey = 0 self.layersDataDictNextKey = 0
self.llist.DeleteAllItems() self.llist.DeleteAllItems()
def findLabel(self, text): def findLabel(self, text):
found = False found = False
for index in range(self.llist.GetItemCount()): for index in range(self.llist.GetItemCount()):
itemtext = self.llist.GetItemText(index) itemtext = self.llist.GetItemText(index)
if itemtext == text: if itemtext == text:
return True return True
return found return found
def addLayerData(self, idx, objUID): def addLayerData(self, idx, objUID):
self.removeObjData(objUID) self.removeObjData(objUID)
layerData = self.layersDataDict[idx] layerData = self.layersDataDict[idx]
layerData.append(objUID) layerData.append(objUID)
def addLayerEntry(self, name, idx): def addLayerEntry(self, name, idx):
index = self.llist.InsertStringItem(self.llist.GetItemCount(), name) index = self.llist.InsertStringItem(self.llist.GetItemCount(), name)
self.llist.SetItemData(index, idx) self.llist.SetItemData(index, idx)
layersData = list() layersData = list()
self.layersDataDict[idx] = layersData self.layersDataDict[idx] = layersData
if idx > self.layersDataDictNextKey: if idx > self.layersDataDictNextKey:
self.layersDataDictNextKey = idx self.layersDataDictNextKey = idx
def addLayer(self): def addLayer(self):
#import pdb;set_trace() #import pdb;set_trace()
count = self.llist.GetItemCount() count = self.llist.GetItemCount()
i = 1 i = 1
text = "Layer%s"%(count + i) text = "Layer%s"%(count + i)
found = self.findLabel(text) found = self.findLabel(text)
while found: while found:
i = i + 1 i = i + 1
text = "Layer%s"%(count + i) text = "Layer%s"%(count + i)
found = self.findLabel(text) found = self.findLabel(text)
self.layersDataDictNextKey = self.layersDataDictNextKey + 1 self.layersDataDictNextKey = self.layersDataDictNextKey + 1
self.addLayerEntry(text, self.layersDataDictNextKey) self.addLayerEntry(text, self.layersDataDictNextKey)
def deleteLayer(self): def deleteLayer(self):
index = self.llist.GetFirstSelected() index = self.llist.GetFirstSelected()
if index != -1: if index != -1:
key = self.llist.GetItemData(index) key = self.llist.GetItemData(index)
del(self.layersDataDict[key]) del(self.layersDataDict[key])
item = self.llist.DeleteItem(index) item = self.llist.DeleteItem(index)
def renameLayer(self): def renameLayer(self):
index = self.llist.GetFirstSelected() index = self.llist.GetFirstSelected()
if index != -1: if index != -1:
self.llist.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED) self.llist.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
self.llist.SetItemState(index, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED) self.llist.SetItemState(index, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED)
def removeObjData(self, objUID): def removeObjData(self, objUID):
layersDataDictKeys = self.layersDataDict.keys() layersDataDictKeys = self.layersDataDict.keys()
for i in range(len(layersDataDictKeys)): for i in range(len(layersDataDictKeys)):
layersData = self.layersDataDict[layersDataDictKeys[i]] layersData = self.layersDataDict[layersDataDictKeys[i]]
for j in range(len(layersData)): for j in range(len(layersData)):
if layersData[j] == objUID: if layersData[j] == objUID:
del(layersData[j]) del(layersData[j])
def removeObj(self): def removeObj(self):
objNodePath = base.direct.selected.last objNodePath = base.direct.selected.last
if objNodePath is None: if objNodePath is None:
wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION) wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
return return
obj = self.editor.objectMgr.findObjectByNodePath(objNodePath) obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
if obj is not None: if obj is not None:
self.removeObjData(obj[OG.OBJ_UID]) self.removeObjData(obj[OG.OBJ_UID])
def addObj(self): def addObj(self):
index = self.llist.GetFirstSelected() index = self.llist.GetFirstSelected()
if index == -1: if index == -1:
wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION) wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
return return
objNodePath = base.direct.selected.last objNodePath = base.direct.selected.last
if objNodePath is None: if objNodePath is None:
wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION) wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
return return
# Checking if the object was laready added to the layer # Checking if the object was laready added to the layer
obj = self.editor.objectMgr.findObjectByNodePath(objNodePath) obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
if obj is not None: if obj is not None:
i = self.llist.GetItemData(index) i = self.llist.GetItemData(index)
layersData = self.layersDataDict[i] layersData = self.layersDataDict[i]
for j in range(len(layersData)): for j in range(len(layersData)):
if layersData[j] == obj[OG.OBJ_UID]: if layersData[j] == obj[OG.OBJ_UID]:
wx.MessageBox("Selected object already is this layer", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION) wx.MessageBox("Selected object already is this layer", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
return return
# Looking for the object in the other layers # Looking for the object in the other layers
# If the object is found - delete it. # If the object is found - delete it.
self.removeObj() self.removeObj()
layersData.append(obj[OG.OBJ_UID]) layersData.append(obj[OG.OBJ_UID])
def onShowMembers(self, event): def onShowMembers(self, event):
item = event.GetItem() item = event.GetItem()
layerMembers = list() layerMembers = list()
layerName = item.GetText() layerName = item.GetText()
key = item.GetData() key = item.GetData()
layerData = self.layersDataDict[key] layerData = self.layersDataDict[key]
for i in range(len(layerData)): for i in range(len(layerData)):
obj = self.editor.objectMgr.findObjectById(layerData[i]) obj = self.editor.objectMgr.findObjectById(layerData[i])
namestr = "%s_%s"%(obj[OG.OBJ_DEF].name, obj[OG.OBJ_UID]) namestr = "%s_%s"%(obj[OG.OBJ_DEF].name, obj[OG.OBJ_UID])
layerMembers.append(namestr) layerMembers.append(namestr)
dialog = wx.SingleChoiceDialog(None, layerName, self.editorTxt, layerMembers) dialog = wx.SingleChoiceDialog(None, layerName, self.editorTxt, layerMembers)
if dialog.ShowModal() == wx.ID_OK: if dialog.ShowModal() == wx.ID_OK:
#do something here #do something here
dialog.GetStringSelection() dialog.GetStringSelection()
dialog.Destroy() dialog.Destroy()
def HideObj(self, hide): def HideObj(self, hide):
index = self.llist.GetFirstSelected() index = self.llist.GetFirstSelected()
if index == -1: if index == -1:
wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION) wx.MessageBox("No layer was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
return return
key = self.llist.GetItemData(index) key = self.llist.GetItemData(index)
layerData = self.layersDataDict[key] layerData = self.layersDataDict[key]
if len(layerData) == 0: if len(layerData) == 0:
return return
for i in range(len(layerData)): for i in range(len(layerData)):
obj = self.editor.objectMgr.findObjectById(layerData[i]) obj = self.editor.objectMgr.findObjectById(layerData[i])
if hide: if hide:
obj[OG.OBJ_NP].hide() obj[OG.OBJ_NP].hide()
else: else:
obj[OG.OBJ_NP].show() obj[OG.OBJ_NP].show()
font = wx.Font font = wx.Font
font = self.llist.GetItemFont(index) font = self.llist.GetItemFont(index)
if hide: if hide:
font.SetWeight(wx.FONTWEIGHT_BOLD) font.SetWeight(wx.FONTWEIGHT_BOLD)
else: else:
font.SetWeight(wx.FONTWEIGHT_NORMAL) font.SetWeight(wx.FONTWEIGHT_NORMAL)
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'):")
for index in range(self.llist.GetItemCount()): self.saveData.append("\tui.layerEditorUI.reset()")
self.saveData.append("ui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index))) for index in range(self.llist.GetItemCount()):
layersDataDictKeys = self.layersDataDict.keys() self.saveData.append("\tui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index)))
for i in range(len(layersDataDictKeys)): layersDataDictKeys = self.layersDataDict.keys()
layerData = self.layersDataDict[layersDataDictKeys[i]] for i in range(len(layersDataDictKeys)):
for j in range(len(layerData)): layerData = self.layersDataDict[layersDataDictKeys[i]]
self.saveData.append("ui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j])) for j in range(len(layerData)):
self.saveData.append("\tui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j]))
def getSaveData(self):
self.saveData = [] def getSaveData(self):
self.traverse() self.saveData = []
return self.saveData self.traverse()
return self.saveData

View File

@ -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()

View File

@ -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):

View File

@ -1,54 +1,65 @@
from pandac.PandaModules import * from pandac.PandaModules import *
objectMgr = base.le.objectMgr hasattr(base, 'le'):
# temporary place holder for nodepath objectMgr = base.le.objectMgr
objects = {} ui = base.le.ui
ui.sceneGraphUI.reset()
objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
if objects['1252538687.73gjeon']: else:
objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246)) objectMgr = base.objectMgr
objects['1252538687.73gjeon'].setHpr(VBase3(180, 0, 0)) # temporary place holder for nodepath
objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1)) objects = {}
objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
objects['1252538690.2gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252538690.2gjeon', None, objects['1252538687.73gjeon']) if objects['1252538687.73gjeon']:
if objects['1252538690.2gjeon']: objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246))
objects['1252538690.2gjeon'].setPos(Point3(0, 0, 2.12046)) objects['1252538687.73gjeon'].setHpr(VBase3(-180, 0, 0))
objects['1252538690.2gjeon'].setHpr(VBase3(0, 0, 0)) objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1))
objects['1252538690.2gjeon'].setScale(VBase3(1, 1, 1)) objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
objectMgr.updateObjectProperties(objects['1252538690.2gjeon'], {'Distance': 2.0, 'Abc': 'a'})
objects['1252538690.2gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252538690.2gjeon', None, objects['1252538687.73gjeon'])
objects['1252539696.69gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539696.69gjeon', None, objects['1252538687.73gjeon']) if objects['1252538690.2gjeon']:
if objects['1252539696.69gjeon']: objects['1252538690.2gjeon'].setPos(Point3(0, 0, 2.12046))
objects['1252539696.69gjeon'].setPos(Point3(-9.53674e-006, 0, 0)) objects['1252538690.2gjeon'].setHpr(VBase3(0, 0, 0))
objects['1252539696.69gjeon'].setHpr(VBase3(0, 0, 0)) objects['1252538690.2gjeon'].setScale(VBase3(1, 1, 1))
objects['1252539696.69gjeon'].setScale(VBase3(1, 1, 1)) objectMgr.updateObjectProperties(objects['1252538690.2gjeon'], {'Distance': 2.0, 'Abc': 'a'})
objectMgr.updateObjectProperties(objects['1252539696.69gjeon'], {'Distance': 2.0, 'Abc': 'a'})
objects['1252539696.69gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539696.69gjeon', None, objects['1252538687.73gjeon'])
objects['1252539897.22gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539897.22gjeon', None, objects['1252538687.73gjeon']) if objects['1252539696.69gjeon']:
if objects['1252539897.22gjeon']: objects['1252539696.69gjeon'].setPos(Point3(-9.53674e-006, 0, 0))
objects['1252539897.22gjeon'].setPos(Point3(0.06987, 0, -2.12046)) objects['1252539696.69gjeon'].setHpr(VBase3(0, 0, 0))
objects['1252539897.22gjeon'].setHpr(VBase3(0, 0, 0)) objects['1252539696.69gjeon'].setScale(VBase3(1, 1, 1))
objects['1252539897.22gjeon'].setScale(VBase3(1, 1, 1)) objectMgr.updateObjectProperties(objects['1252539696.69gjeon'], {'Distance': 2.0, 'Abc': 'a'})
objectMgr.updateObjectProperties(objects['1252539897.22gjeon'], {'Distance': 2.0, 'Abc': 'a'})
objects['1252539897.22gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539897.22gjeon', None, objects['1252538687.73gjeon'])
objects['1252538689.13gjeon'] = objectMgr.addNewObject('V Double Smiley', '1252538689.13gjeon', None, objects['1252538687.73gjeon']) if objects['1252539897.22gjeon']:
if objects['1252538689.13gjeon']: objects['1252539897.22gjeon'].setPos(Point3(0.06987, 0, -2.12046))
objects['1252538689.13gjeon'].setPos(Point3(6.07152, 0, -0.863791)) objects['1252539897.22gjeon'].setHpr(VBase3(0, 0, 0))
objects['1252538689.13gjeon'].setHpr(VBase3(0, 0, 0)) objects['1252539897.22gjeon'].setScale(VBase3(1, 1, 1))
objects['1252538689.13gjeon'].setScale(VBase3(1, 1, 1)) objectMgr.updateObjectProperties(objects['1252539897.22gjeon'], {'Distance': 2.0, 'Abc': 'a'})
objectMgr.updateObjectProperties(objects['1252538689.13gjeon'], {'Distance': 1.0, 'Abc': 'a'})
objects['1252538689.13gjeon'] = objectMgr.addNewObject('V Double Smiley', '1252538689.13gjeon', None, objects['1252538687.73gjeon'])
objects['1252539974.19gjeon'] = objectMgr.addNewObject('Smiley', '1252539974.19gjeon', 'models/frowney.egg', objects['1252538689.13gjeon']) if objects['1252538689.13gjeon']:
if objects['1252539974.19gjeon']: objects['1252538689.13gjeon'].setPos(Point3(6.07152, 0, -0.863791))
objects['1252539974.19gjeon'].setPos(Point3(0.06987, 0, 3.09209)) objects['1252538689.13gjeon'].setHpr(VBase3(0, 0, 0))
objects['1252539974.19gjeon'].setHpr(VBase3(0, 0, 0)) objects['1252538689.13gjeon'].setScale(VBase3(1, 1, 1))
objects['1252539974.19gjeon'].setScale(VBase3(1, 1, 1)) objectMgr.updateObjectProperties(objects['1252538689.13gjeon'], {'Distance': 1.0, 'Abc': 'a'})
objectMgr.updateObjectProperties(objects['1252539974.19gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
objects['1252539974.19gjeon'] = objectMgr.addNewObject('Smiley', '1252539974.19gjeon', 'models/frowney.egg', objects['1252538689.13gjeon'])
objects['1252623762.9gjeon'] = objectMgr.addNewObject('Panda', '1252623762.9gjeon', None, None) if objects['1252539974.19gjeon']:
if objects['1252623762.9gjeon']: objects['1252539974.19gjeon'].setPos(Point3(0.06987, 0, 3.09209))
objects['1252623762.9gjeon'].setPos(Point3(0, 0, 0)) objects['1252539974.19gjeon'].setHpr(VBase3(0, 0, 0))
objects['1252623762.9gjeon'].setHpr(VBase3(172.8, 0, 0)) objects['1252539974.19gjeon'].setScale(VBase3(1, 1, 1))
objects['1252623762.9gjeon'].setScale(VBase3(0.005, 0.005, 0.005)) objectMgr.updateObjectProperties(objects['1252539974.19gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
objectMgr.updateObjectProperties(objects['1252623762.9gjeon'], {'Distance': 1.0, 'Abc': 'a'})
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')