mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 09:23:03 -04:00
added setting of bitMasks and tags
This commit is contained in:
parent
ebf10096a5
commit
d0efed6b70
@ -127,21 +127,26 @@ class ControlManager:
|
|||||||
else:
|
else:
|
||||||
print "Unkown controls:", name
|
print "Unkown controls:", name
|
||||||
|
|
||||||
|
def delete(self):
|
||||||
|
assert self.notify.debugCall(id(self))
|
||||||
|
self.disable()
|
||||||
|
#self.monitorTask.remove()
|
||||||
|
|
||||||
def setSpeeds(self, forwardSpeed, jumpForce,
|
def setSpeeds(self, forwardSpeed, jumpForce,
|
||||||
reverseSpeed, rotateSpeed):
|
reverseSpeed, rotateSpeed):
|
||||||
assert self.notify.debugCall(id(self))
|
assert self.notify.debugCall(id(self))
|
||||||
for controls in self.controls.values():
|
for controls in self.controls.values():
|
||||||
controls.setWalkSpeed(
|
controls.setWalkSpeed(
|
||||||
forwardSpeed, jumpForce, reverseSpeed, rotateSpeed)
|
forwardSpeed, jumpForce, reverseSpeed, rotateSpeed)
|
||||||
|
|
||||||
def delete(self):
|
|
||||||
assert self.notify.debugCall(id(self))
|
|
||||||
self.disable()
|
|
||||||
#self.monitorTask.remove()
|
|
||||||
|
|
||||||
def getSpeeds(self):
|
def getSpeeds(self):
|
||||||
return self.currentControls.getSpeeds()
|
return self.currentControls.getSpeeds()
|
||||||
|
|
||||||
|
def setTag(self, key, value):
|
||||||
|
assert self.notify.debugCall(id(self))
|
||||||
|
for controls in self.controls.values():
|
||||||
|
controls.setTag(key, value)
|
||||||
|
|
||||||
def deleteCollisions(self):
|
def deleteCollisions(self):
|
||||||
assert self.notify.debugCall(id(self))
|
assert self.notify.debugCall(id(self))
|
||||||
for controls in self.controls.values():
|
for controls in self.controls.values():
|
||||||
|
@ -53,6 +53,12 @@ class DevWalker(DirectObject.DirectObject):
|
|||||||
if avatar is not None:
|
if avatar is not None:
|
||||||
pass # setup the avatar
|
pass # setup the avatar
|
||||||
|
|
||||||
|
def setWallBitMask(self, bitMask):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def setFloorBitMask(self, bitMask):
|
||||||
|
pass
|
||||||
|
|
||||||
def initializeCollisions(self, collisionTraverser, avatarNodePath,
|
def initializeCollisions(self, collisionTraverser, avatarNodePath,
|
||||||
wallCollideMask, floorCollideMask,
|
wallCollideMask, floorCollideMask,
|
||||||
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
||||||
@ -67,6 +73,9 @@ class DevWalker(DirectObject.DirectObject):
|
|||||||
def deleteCollisions(self):
|
def deleteCollisions(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def setTag(self, key, value):
|
||||||
|
pass
|
||||||
|
|
||||||
def setCollisionsActive(self, active = 1):
|
def setCollisionsActive(self, active = 1):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -279,8 +279,13 @@ class GravityWalker(DirectObject.DirectObject):
|
|||||||
self.pusherFloor = handler
|
self.pusherFloor = handler
|
||||||
self.cFloorSphereNodePath = cSphereNodePath
|
self.cFloorSphereNodePath = cSphereNodePath
|
||||||
|
|
||||||
|
def setWallBitMask(self, bitMask):
|
||||||
|
self.wallBitmask = bitMask
|
||||||
|
|
||||||
|
def setFloorBitMask(self, bitMask):
|
||||||
|
self.floorBitmask = bitMask
|
||||||
|
|
||||||
def initializeCollisions(self, collisionTraverser, avatarNodePath,
|
def initializeCollisions(self, collisionTraverser, avatarNodePath,
|
||||||
wallBitmask, floorBitmask,
|
|
||||||
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
||||||
"""
|
"""
|
||||||
floorOffset is how high the avatar can reach. I.e. if the avatar
|
floorOffset is how high the avatar can reach. I.e. if the avatar
|
||||||
@ -297,14 +302,17 @@ class GravityWalker(DirectObject.DirectObject):
|
|||||||
|
|
||||||
self.cTrav = collisionTraverser
|
self.cTrav = collisionTraverser
|
||||||
|
|
||||||
self.setupRay(floorBitmask, floorOffset, reach )
|
self.setupRay(self.floorBitmask, floorOffset, reach )
|
||||||
self.setupWallSphere(wallBitmask, avatarRadius)
|
self.setupWallSphere(self.wallBitmask, avatarRadius)
|
||||||
self.setupEventSphere(wallBitmask, avatarRadius)
|
self.setupEventSphere(self.wallBitmask, avatarRadius)
|
||||||
if self.wantFloorSphere:
|
if self.wantFloorSphere:
|
||||||
self.setupFloorSphere(floorBitmask, avatarRadius)
|
self.setupFloorSphere(self.floorBitmask, avatarRadius)
|
||||||
|
|
||||||
self.setCollisionsActive(1)
|
self.setCollisionsActive(1)
|
||||||
|
|
||||||
|
def setTag(self, key, value):
|
||||||
|
self.cEventSphereNodePath.setTag(key, value)
|
||||||
|
|
||||||
def setAirborneHeightFunc(self, unused_parameter):
|
def setAirborneHeightFunc(self, unused_parameter):
|
||||||
assert self.notify.debugStateCall(self)
|
assert self.notify.debugStateCall(self)
|
||||||
self.getAirborneHeight = self.lifter.getAirborneHeight
|
self.getAirborneHeight = self.lifter.getAirborneHeight
|
||||||
|
@ -52,8 +52,16 @@ class NonPhysicsWalker(DirectObject.DirectObject):
|
|||||||
if avatar is not None:
|
if avatar is not None:
|
||||||
pass # setup the avatar
|
pass # setup the avatar
|
||||||
|
|
||||||
|
def setAirborneHeightFunc(self, getAirborneHeight):
|
||||||
|
self.getAirborneHeight = getAirborneHeight
|
||||||
|
|
||||||
|
def setWallBitMask(self, bitMask):
|
||||||
|
self.cSphereBitMask = bitMask
|
||||||
|
|
||||||
|
def setFloorBitMask(self, bitMask):
|
||||||
|
self.cRayBitMask = bitMask
|
||||||
|
|
||||||
def initializeCollisions(self, collisionTraverser, avatarNodePath,
|
def initializeCollisions(self, collisionTraverser, avatarNodePath,
|
||||||
wallCollideMask, floorCollideMask,
|
|
||||||
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
||||||
"""
|
"""
|
||||||
Set up the avatar for collisions
|
Set up the avatar for collisions
|
||||||
@ -69,7 +77,6 @@ class NonPhysicsWalker(DirectObject.DirectObject):
|
|||||||
cSphereNode = CollisionNode('NPW.cSphereNode')
|
cSphereNode = CollisionNode('NPW.cSphereNode')
|
||||||
cSphereNode.addSolid(self.cSphere)
|
cSphereNode.addSolid(self.cSphere)
|
||||||
self.cSphereNodePath = avatarNodePath.attachNewNode(cSphereNode)
|
self.cSphereNodePath = avatarNodePath.attachNewNode(cSphereNode)
|
||||||
self.cSphereBitMask = wallCollideMask
|
|
||||||
|
|
||||||
cSphereNode.setFromCollideMask(self.cSphereBitMask)
|
cSphereNode.setFromCollideMask(self.cSphereBitMask)
|
||||||
cSphereNode.setIntoCollideMask(BitMask32.allOff())
|
cSphereNode.setIntoCollideMask(BitMask32.allOff())
|
||||||
@ -84,7 +91,6 @@ class NonPhysicsWalker(DirectObject.DirectObject):
|
|||||||
cRayNode = CollisionNode('NPW.cRayNode')
|
cRayNode = CollisionNode('NPW.cRayNode')
|
||||||
cRayNode.addSolid(self.cRay)
|
cRayNode.addSolid(self.cRay)
|
||||||
self.cRayNodePath = avatarNodePath.attachNewNode(cRayNode)
|
self.cRayNodePath = avatarNodePath.attachNewNode(cRayNode)
|
||||||
self.cRayBitMask = floorCollideMask
|
|
||||||
cRayNode.setFromCollideMask(self.cRayBitMask)
|
cRayNode.setFromCollideMask(self.cRayBitMask)
|
||||||
cRayNode.setIntoCollideMask(BitMask32.allOff())
|
cRayNode.setIntoCollideMask(BitMask32.allOff())
|
||||||
|
|
||||||
@ -112,9 +118,6 @@ class NonPhysicsWalker(DirectObject.DirectObject):
|
|||||||
# activate the collider with the traverser and pusher
|
# activate the collider with the traverser and pusher
|
||||||
self.setCollisionsActive(1)
|
self.setCollisionsActive(1)
|
||||||
|
|
||||||
def setAirborneHeightFunc(self, getAirborneHeight):
|
|
||||||
self.getAirborneHeight = getAirborneHeight
|
|
||||||
|
|
||||||
def deleteCollisions(self):
|
def deleteCollisions(self):
|
||||||
del self.cTrav
|
del self.cTrav
|
||||||
|
|
||||||
@ -129,6 +132,9 @@ class NonPhysicsWalker(DirectObject.DirectObject):
|
|||||||
del self.pusher
|
del self.pusher
|
||||||
del self.lifter
|
del self.lifter
|
||||||
|
|
||||||
|
def setTag(self, key, value):
|
||||||
|
self.cSphereNodePath.setTag(key, value)
|
||||||
|
|
||||||
def setCollisionsActive(self, active = 1):
|
def setCollisionsActive(self, active = 1):
|
||||||
assert(self.debugPrint("setCollisionsActive(active%s)"%(active,)))
|
assert(self.debugPrint("setCollisionsActive(active%s)"%(active,)))
|
||||||
if self.collisionsActive != active:
|
if self.collisionsActive != active:
|
||||||
|
@ -337,19 +337,20 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
|
|||||||
|
|
||||||
self.setCollisionsActive(1)
|
self.setCollisionsActive(1)
|
||||||
|
|
||||||
|
def setWallBitMask(self, bitMask):
|
||||||
|
self.wallBitmask = bitMask
|
||||||
|
|
||||||
|
def setFloorBitMask(self, bitMask):
|
||||||
|
self.floorBitmask = bitMask
|
||||||
|
|
||||||
def initializeCollisions(self, collisionTraverser,
|
def initializeCollisions(self, collisionTraverser,
|
||||||
wallBitmask, floorBitmask,
|
|
||||||
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
avatarRadius = 1.4, floorOffset = 1.0, reach = 1.0):
|
||||||
"""
|
"""
|
||||||
Set up the avatar collisions
|
Set up the avatar collisions
|
||||||
"""
|
"""
|
||||||
assert(self.debugPrint("initializeCollisions()"))
|
assert(self.debugPrint("initializeCollisions()"))
|
||||||
|
|
||||||
|
|
||||||
self.cTrav = collisionTraverser
|
self.cTrav = collisionTraverser
|
||||||
self.floorOffset = floorOffset = 7.0
|
self.floorOffset = floorOffset = 7.0
|
||||||
self.wallBitmask = wallBitmask
|
|
||||||
self.floorBitmask = floorBitmask
|
|
||||||
self.avatarRadius = avatarRadius
|
self.avatarRadius = avatarRadius
|
||||||
self.floorOffset = floorOffset
|
self.floorOffset = floorOffset
|
||||||
self.reach = reach
|
self.reach = reach
|
||||||
@ -372,6 +373,11 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
|
|||||||
|
|
||||||
self.getAirborneHeight = None
|
self.getAirborneHeight = None
|
||||||
|
|
||||||
|
def setTag(self, key, value):
|
||||||
|
if not hasattr(self, "collisionTags"):
|
||||||
|
self.collisionTags = {}
|
||||||
|
self.collisionTags[key] = value
|
||||||
|
|
||||||
def setAirborneHeightFunc(self, getAirborneHeight):
|
def setAirborneHeightFunc(self, getAirborneHeight):
|
||||||
self.getAirborneHeight = getAirborneHeight
|
self.getAirborneHeight = getAirborneHeight
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user