actorNode conditionally inserted

This commit is contained in:
Samir Naik 2004-08-18 23:32:01 +00:00
parent ece1ba83d2
commit 043d1f0de4

View File

@ -185,85 +185,91 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
if avatarNodePath is None: if avatarNodePath is None:
return return
assert not avatarNodePath.isEmpty() assert not avatarNodePath.isEmpty()
# Connect to Physics Manager:
self.actorNode=ActorNode("ship physicsActor")
self.actorNode.getPhysicsObject().setOriented(1)
self.actorNode.getPhysical(0).setViscosity(0.1)
physicsActor=render.attachNewNode(self.actorNode)
physicsActor.setPos(avatarNodePath, Vec3(0))
physicsActor.setHpr(avatarNodePath, Vec3(0))
avatarNodePath.reparentTo(physicsActor)
avatarNodePath.setPos(Vec3(0))
avatarNodePath.setHpr(Vec3(0))
avatarNodePath.assign(physicsActor)
self.phys=PhysicsManager.PhysicsManager()
fn=ForceNode("ship gravity") if not hasattr(self,'actorNode'):
fnp=NodePath(fn)
#fnp.reparentTo(physicsActor)
fnp.reparentTo(render)
gravity=LinearVectorForce(0.0, 0.0, self.__gravity)
fn.addForce(gravity)
self.phys.addLinearForce(gravity)
self.gravity = gravity
fn=ForceNode("ship keel") # Connect to Physics Manager:
fnp=NodePath(fn) self.actorNode=ActorNode("ship physicsActor")
#fnp.reparentTo(physicsActor) self.actorNode.getPhysicsObject().setOriented(1)
fnp.reparentTo(render) self.actorNode.getPhysical(0).setViscosity(0.1)
self.keel=AngularVectorForce(0.0, 0.0, 80.0) physicsActor=render.attachNewNode(self.actorNode)
fn.addForce(self.keel) physicsActor.setPos(avatarNodePath, Vec3(0))
self.phys.addAngularForce(self.keel) physicsActor.setHpr(avatarNodePath, Vec3(0))
avatarNodePath.reparentTo(physicsActor)
avatarNodePath.setPos(Vec3(0))
avatarNodePath.setHpr(Vec3(0))
avatarNodePath.assign(physicsActor)
self.phys=PhysicsManager.PhysicsManager()
fn=ForceNode("ship priorParent") fn=ForceNode("ship gravity")
fnp=NodePath(fn)
fnp.reparentTo(render)
priorParent=LinearVectorForce(0.0, 0.0, 0.0)
fn.addForce(priorParent)
self.phys.addLinearForce(priorParent)
self.priorParentNp = fnp
self.priorParent = priorParent
if 1:
fn=ForceNode("ship viscosity")
fnp=NodePath(fn) fnp=NodePath(fn)
#fnp.reparentTo(physicsActor) #fnp.reparentTo(physicsActor)
fnp.reparentTo(render) fnp.reparentTo(render)
self.avatarViscosity=LinearFrictionForce(0.0, 1.0, 0) gravity=LinearVectorForce(0.0, 0.0, self.__gravity)
#self.avatarViscosity.setCoef(0.9) fn.addForce(gravity)
fn.addForce(self.avatarViscosity) self.phys.addLinearForce(gravity)
self.phys.addLinearForce(self.avatarViscosity) self.gravity = gravity
self.phys.attachLinearIntegrator(LinearEulerIntegrator()) fn=ForceNode("ship keel")
#*#self.phys.attachAngularIntegrator(AngularEulerIntegrator()) fnp=NodePath(fn)
self.phys.attachPhysicalnode(physicsActor.node()) #fnp.reparentTo(physicsActor)
fnp.reparentTo(render)
self.keel=AngularVectorForce(0.0, 0.0, 80.0)
fn.addForce(self.keel)
self.phys.addAngularForce(self.keel)
self.momentumForce=LinearVectorForce(0.0, 0.0, 0.0) fn=ForceNode("ship priorParent")
fn=ForceNode("ship momentum") fnp=NodePath(fn)
fnp=NodePath(fn) fnp.reparentTo(render)
fnp.reparentTo(render) priorParent=LinearVectorForce(0.0, 0.0, 0.0)
fn.addForce(self.momentumForce) fn.addForce(priorParent)
self.phys.addLinearForce(self.momentumForce) self.phys.addLinearForce(priorParent)
self.priorParentNp = fnp
self.priorParent = priorParent
if 1:
fn=ForceNode("ship viscosity")
fnp=NodePath(fn)
#fnp.reparentTo(physicsActor)
fnp.reparentTo(render)
self.avatarViscosity=LinearFrictionForce(0.0, 1.0, 0)
#self.avatarViscosity.setCoef(0.9)
fn.addForce(self.avatarViscosity)
self.phys.addLinearForce(self.avatarViscosity)
self.phys.attachLinearIntegrator(LinearEulerIntegrator())
#*#self.phys.attachAngularIntegrator(AngularEulerIntegrator())
self.phys.attachPhysicalnode(physicsActor.node())
self.momentumForce=LinearVectorForce(0.0, 0.0, 0.0)
fn=ForceNode("ship momentum")
fnp=NodePath(fn)
fnp.reparentTo(render)
fn.addForce(self.momentumForce)
self.phys.addLinearForce(self.momentumForce)
self.acForce=LinearVectorForce(0.0, 0.0, 0.0)
fn=ForceNode("ship avatarControls")
fnp=NodePath(fn)
fnp.reparentTo(render)
fn.addForce(self.acForce)
self.phys.addLinearForce(self.acForce)
#self.phys.removeLinearForce(self.acForce)
#fnp.remove()
if 0 or self.useHeightRay:
#self.setupRay(self.floorBitmask, self.avatarRadius)
self.setupRay(self.floorBitmask, 0.0)
self.acForce=LinearVectorForce(0.0, 0.0, 0.0)
fn=ForceNode("ship avatarControls")
fnp=NodePath(fn)
fnp.reparentTo(render)
fn.addForce(self.acForce)
self.phys.addLinearForce(self.acForce)
#self.phys.removeLinearForce(self.acForce)
#fnp.remove()
#avatarNodePath.reparentTo(render) #avatarNodePath.reparentTo(render)
self.avatarNodePath = avatarNodePath self.avatarNodePath = avatarNodePath
#self.actorNode.getPhysicsObject().resetPosition(self.avatarNodePath.getPos()) #self.actorNode.getPhysicsObject().resetPosition(self.avatarNodePath.getPos())
#self.actorNode.updateTransform() #self.actorNode.updateTransform()
self.setupSphere(self.wallBitmask|self.floorBitmask, self.avatarRadius)
assert not avatarNodePath.isEmpty() assert not avatarNodePath.isEmpty()
if 0 or self.useHeightRay:
#self.setupRay(self.floorBitmask, self.avatarRadius)
self.setupRay(self.floorBitmask, 0.0)
self.setupSphere(self.wallBitmask|self.floorBitmask, self.avatarRadius)
self.setCollisionsActive(1) self.setCollisionsActive(1)