mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
actorNode conditionally inserted
This commit is contained in:
parent
ece1ba83d2
commit
043d1f0de4
@ -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)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user