Hi Guys!
Well, i’m tryng to make my “level system” with the following code:
# - - - Panda3d Modules - - - #
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from direct.actor.Actor import Actor
from direct.gui.OnscreenText import OnscreenText
from panda3d.core import CollisionTraverser,CollisionNode
from panda3d.core import CollisionHandlerQueue,CollisionRay
from panda3d.core import Vec3,Vec4,BitMask32
from panda3d.core import PandaNode,NodePath,Camera,TextNode
import random, sys, os, math
# - - - Level SuperClass - - - #
class level(DirectObject):
class character(DirectObject):
def __init__(self, parent):
self.parent = parent
# Set Model
self.actor = Actor()
self.actor.loadModel("Models/Char1")
self.actor.reparentTo(self.parent.roomnode)
self.actor.loadAnims({"stand":"Models/Char1a","walk":"Models/Char1b"})
self.actor.setPlayRate(1.5, "walk")
# Events
taskMgr.add(self.test,"testTask")
def test(self, task):
if (self.parent.keyMap["left"]!=0):
self.parent.level_clear(1)
return task.cont
def level_config(self):
# -------- Default Level Settings -------- #
# Set Keys
self.keyMap = {"left":0,"right":0,"up":0}
self.accept("escape", sys.exit)
self.accept("arrow_left", self.setKey, ["left",1])
self.accept("arrow_right", self.setKey, ["right",1])
self.accept("arrow_up", self.setKey, ["up",1])
self.accept("arrow_left-up", self.setKey, ["left",0])
self.accept("arrow_right-up", self.setKey, ["right",0])
self.accept("arrow_up-up", self.setKey, ["up",0])
# Load Objects
self.char = self.character(self)
#self.char.actor.setPos(self.environ.find("**/start_point").getPos())
def level_clear(self,a):
self.roomnode.removeNode()
self.parent.set_level(a)
def setKey(self, key, value):
self.keyMap[key] = value
# - - - Level Classes - - - #
class level1(level):
def __init__(self, parent):
self.parent = parent
self.roomnode = render.attachNewNode("Nivel")
self.environ = loader.loadModel("Models/Map/world")
self.environ.reparentTo(self.roomnode)
self.environ.setPos(0,0,0)
self.level_config()
class level2():
def __init__(self, parent):
print "lalala"
# - - - Scene Control - - - #
class main():
def __init__(self):
# All level classes
self.allrooms = {0:level1,1:level2}
self.set_level(0)
def set_level(self,a):
self.room = self.allrooms.get(a)(self)
start = main()
# - - - Main Bucle - - - #
run()
That’s good, when i press “left key” the scene it’s clean… but the “level1” class it’s still alive and his classes and tasks too.
The cuestion IS:
How can i delete the previous level class and “clean it” ?
Thank you very much, sorry my bad english.