hello
I have another problem with cPickle
right now, when i save one objects, cPickle load two objects o_O .
for exemple, if i just save a taepot, and i load it, i have a teapot and a panda in the same place.
here is the code :
import direct.directbase.DirectStart
import cPickle, sys
from pandac.PandaModules import *
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import PandaNode,NodePath,Camera,TextNode
from pandac.PandaModules import Filename
from direct.gui.DirectGui import *
class World (DirectObject) :
def __init__ (self) :
self.allobjects = []
self.GUI ()
def GUI (self) :
self.ButtonFile = DirectOptionMenu(text="File", scale=0.05,items=["File", "Save", "Load"],
initialitem=0,highlightColor=(0.65,0.65,0.65,1),command=self.File )
self.ButtonFile.setPos (-1.33, 0, 0.963)
self.ButtonPanda = DirectButton(text = ("Teapot", "click!"),scale=.05,command = self.Panda )
self.ButtonPanda.setPos (1, 0, -0.9)
self.ButtonRalph = DirectButton(text = ("Ralph", "click!"),scale=.05,command = self.Teapot )
self.ButtonRalph.setPos (1, 0, -0.4)
def File (self, arg) :# pour changer de temps (ensoleillΓΒ©,neige, etc.)
if (arg == "Save") : self.savePickle ()
if (arg == "Load") : self.loadPickle ()
def Panda (self) :
self.panda = loader.loadModel ("models/panda-model.egg.pz")
self.panda.reparentTo (render)
self.panda.setPos(0,0,0)
self.panda.setScale (0.1,0.1,0.1)
self.allobjects.append(self.panda)
def Teapot (self) :
self.teapot = loader.loadModel ("models/teapot.egg.pz")
self.teapot.reparentTo (render)
self.teapot.setPos(35,0,0)
self.allobjects.append(self.teapot)
def loadPickle(self):
data = cPickle.load(open('nodepaths.pickle','rb'))
for nodepath in data:
self.teapot = loader.loadModel ("models/teapot.egg.pz")
self.teapot.reparentTo (render)
pos = nodepath
self.teapot.setPos(*pos)
self.panda = loader.loadModel ("models/panda-model.egg.pz")
pos = nodepath
self.panda.setPos (*pos)
self.panda.setScale (0.1,0.1,0.1)
self.panda.reparentTo (render)
def savePickle (self):
data = []
for nodepath in self.allobjects:
pos = nodepath.getPos()[0],nodepath.getPos()[1],nodepath.getPos()[2] # pos = a,b,c -> pos = (a,b,c) ; another tupple
data.append((pos))
cPickle.dump(data,open('nodepaths.pickle','wb'))
w = World ()
run ()
how can i do to resolve this problem ?
thanks in advance