Hi,
Lets say that I have this code:
class NPC(FSM):
def __init__(self):
FSM.__init__(self, 'NPC FSM')
self.nodePath = NodePath('NPC NodePath')
self.nodePath.reparentTo(render)
self.nodePath.setTag('pickable', 'NPC')
self.Actor = Actor('ralph',
{'run':'ralph-run'})
self.Actor.reparentTo(self.nodePath)
self.Hat = loader.loadModel('hat')
self.Hat.reparentTo(self.Actor)
self.setupCollisions()
taskMgr.add(self.updateTask, 'updateTask')
self.request('move')
def setupCollisions(self):
# Create a Sphere to be clickable
ActorSphere = CollisionSphere(0,0,1,1)
self.enemyCol = CollisionNode(' Enemy CollisionSphere')
self.enemyCol.addSolid(ActorSphere)
self.enemyCol.setFromCollideMask(BitMask32.bit(2)|BitMask32.bit(3))
self.enemyCol.setIntoCollideMask(BitMask32.bit(10))
self.enemyColNP = self.nodePath.attachNewNode(self.enemyCol)
self.enemyHandler = CollisionHandlerPusher()
self.enemyHandler.addCollider(self.enemyColNP, self.nodePath)
base.cTrav.addCollider(self.enemyColNP, self.enemyHandler)
# Create the collision Ray to collide with the floor
ActorRay = CollisionRay(0,0,1,0,0,-1)
self.enemyGroundCol = CollisionNode('Enemy CollisionRay')
self.enemyGroundCol.addSolid(ActorRay)
self.enemyGroundCol.setFromCollideMask(BitMask32.bit(1))
self.enemyGroundCol.setIntoCollideMask(BitMask32.allOff())
self.enemyGroundColNP = self.nodePath.attachNewNode(self.enemyGroundCol)
self.enemyGroundHandler = CollisionHandlerFloor()
self.enemyGroundHandler.addCollider(self.enemyGroundColNP, self.nodePath)
base.cTrav.addCollider(self.enemyGroundColNP, self.enemyGroundHandler)
def setAi(self, world):
self.AIworld = AIworld
self.AIchar = AICharacter('NPC - AI', self.nodePath, 100, 1.05, 10)
self.AIworld.addAiChar(self.AIchar)
self.AIbehaviors = self.AIchar.getAiBehaviors()
def updateTask(self, task):
return task.cont
def enterMove(self):
self.Actor.loop('run')
def exitMove(self):
pass
def destroy(self):
self.AIworld.removeAiChar('NPC - AI')
self.nodePath.removeNode()
taskMgr.remove('updateTask')
base.cTrav.removeCollider(self.enemyGroundColNP)
base.cTrav.removeCollider(self.enemyColNP)
def __del__(self):
print 'deleted'
I wanna make sure that everything is deleted.
It prints deleted whether or not I call base.cTrav.removeCollider
Do I need to call base.cTrav.removeCollider??
I’ve been reading and did not found ppl calling this.