diff options
author | Robert Adams | 2012-07-18 08:49:01 -0700 |
---|---|---|
committer | Robert Adams | 2012-07-20 14:02:29 -0700 |
commit | 7451bb16137fad6336fae12608ef6df92ba1a46c (patch) | |
tree | cdf12be395b7058310f63647fd685b1ae0951071 /OpenSim/Region/Physics | |
parent | BulletSim: Add very detailed logging to BSDynamics for vehicle debugging (diff) | |
download | opensim-SC-7451bb16137fad6336fae12608ef6df92ba1a46c.zip opensim-SC-7451bb16137fad6336fae12608ef6df92ba1a46c.tar.gz opensim-SC-7451bb16137fad6336fae12608ef6df92ba1a46c.tar.bz2 opensim-SC-7451bb16137fad6336fae12608ef6df92ba1a46c.tar.xz |
BulletSim: fix compile errors from last commit. Clean up passing of physics scene into vehicle dynamics code.
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | 23 | ||||
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 6 |
2 files changed, 14 insertions, 15 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs index bef7aec..4c5bc85 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | |||
@@ -57,7 +57,6 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
57 | private int frcount = 0; // Used to limit dynamics debug output to | 57 | private int frcount = 0; // Used to limit dynamics debug output to |
58 | // every 100th frame | 58 | // every 100th frame |
59 | 59 | ||
60 | // private BSScene m_parentScene = null; | ||
61 | private BSPrim m_prim; // the prim this dynamic controller belongs to | 60 | private BSPrim m_prim; // the prim this dynamic controller belongs to |
62 | 61 | ||
63 | // Vehicle properties | 62 | // Vehicle properties |
@@ -602,7 +601,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
602 | } | 601 | } |
603 | }//end SetDefaultsForType | 602 | }//end SetDefaultsForType |
604 | 603 | ||
605 | internal void Step(float pTimestep, BSScene pParentScene) | 604 | internal void Step(float pTimestep) |
606 | { | 605 | { |
607 | if (m_type == Vehicle.TYPE_NONE) return; | 606 | if (m_type == Vehicle.TYPE_NONE) return; |
608 | 607 | ||
@@ -610,14 +609,15 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
610 | if (frcount > 100) | 609 | if (frcount > 100) |
611 | frcount = 0; | 610 | frcount = 0; |
612 | 611 | ||
613 | MoveLinear(pTimestep, pParentScene); | 612 | MoveLinear(pTimestep); |
614 | MoveAngular(pTimestep); | 613 | MoveAngular(pTimestep); |
615 | LimitRotation(pTimestep); | 614 | LimitRotation(pTimestep); |
616 | DetailLog("{0},step,pos={1},force={2},velocity={3},angvel={4}", | 615 | |
616 | DetailLog("{0},step,done,pos={1},force={2},velocity={3},angvel={4}", | ||
617 | m_prim.LocalID, m_prim.Position, m_prim.Force, m_prim.Velocity, m_prim.RotationalVelocity); | 617 | m_prim.LocalID, m_prim.Position, m_prim.Force, m_prim.Velocity, m_prim.RotationalVelocity); |
618 | }// end Step | 618 | }// end Step |
619 | 619 | ||
620 | private void MoveLinear(float pTimestep, BSScene _pParentScene) | 620 | private void MoveLinear(float pTimestep) |
621 | { | 621 | { |
622 | if (!m_linearMotorDirection.ApproxEquals(Vector3.Zero, 0.01f)) // requested m_linearMotorDirection is significant | 622 | if (!m_linearMotorDirection.ApproxEquals(Vector3.Zero, 0.01f)) // requested m_linearMotorDirection is significant |
623 | { | 623 | { |
@@ -664,7 +664,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
664 | Vector3 grav = Vector3.Zero; | 664 | Vector3 grav = Vector3.Zero; |
665 | // There is some gravity, make a gravity force vector that is applied after object velocity. | 665 | // There is some gravity, make a gravity force vector that is applied after object velocity. |
666 | // m_VehicleBuoyancy: -1=2g; 0=1g; 1=0g; | 666 | // m_VehicleBuoyancy: -1=2g; 0=1g; 1=0g; |
667 | grav.Z = _pParentScene.DefaultGravity.Z * m_prim.Mass * (1f - m_VehicleBuoyancy); | 667 | grav.Z = m_prim.Scene.DefaultGravity.Z * m_prim.Mass * (1f - m_VehicleBuoyancy); |
668 | // Preserve the current Z velocity | 668 | // Preserve the current Z velocity |
669 | Vector3 vel_now = m_prim.Velocity; | 669 | Vector3 vel_now = m_prim.Velocity; |
670 | m_dir.Z = vel_now.Z; // Preserve the accumulated falling velocity | 670 | m_dir.Z = vel_now.Z; // Preserve the accumulated falling velocity |
@@ -708,9 +708,9 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
708 | m_prim.LocalID, m_BlockingEndPoint, posChange, pos); | 708 | m_prim.LocalID, m_BlockingEndPoint, posChange, pos); |
709 | } | 709 | } |
710 | } | 710 | } |
711 | if (pos.Z < _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y)) | 711 | if (pos.Z < m_prim.Scene.GetTerrainHeightAtXY(pos.X, pos.Y)) |
712 | { | 712 | { |
713 | pos.Z = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y) + 2; | 713 | pos.Z = m_prim.Scene.GetTerrainHeightAtXY(pos.X, pos.Y) + 2; |
714 | m_prim.Position = pos; | 714 | m_prim.Position = pos; |
715 | DetailLog("{0},MoveLinear,terrainHeight,pos={1}", m_prim.LocalID, pos); | 715 | DetailLog("{0},MoveLinear,terrainHeight,pos={1}", m_prim.LocalID, pos); |
716 | } | 716 | } |
@@ -721,11 +721,11 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
721 | // We should hover, get the target height | 721 | // We should hover, get the target height |
722 | if ((m_Hoverflags & VehicleFlag.HOVER_WATER_ONLY) != 0) | 722 | if ((m_Hoverflags & VehicleFlag.HOVER_WATER_ONLY) != 0) |
723 | { | 723 | { |
724 | m_VhoverTargetHeight = _pParentScene.GetWaterLevel() + m_VhoverHeight; | 724 | m_VhoverTargetHeight = m_prim.Scene.GetWaterLevel() + m_VhoverHeight; |
725 | } | 725 | } |
726 | if ((m_Hoverflags & VehicleFlag.HOVER_TERRAIN_ONLY) != 0) | 726 | if ((m_Hoverflags & VehicleFlag.HOVER_TERRAIN_ONLY) != 0) |
727 | { | 727 | { |
728 | m_VhoverTargetHeight = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y) + m_VhoverHeight; | 728 | m_VhoverTargetHeight = m_prim.Scene.GetTerrainHeightAtXY(pos.X, pos.Y) + m_VhoverHeight; |
729 | } | 729 | } |
730 | if ((m_Hoverflags & VehicleFlag.HOVER_GLOBAL_HEIGHT) != 0) | 730 | if ((m_Hoverflags & VehicleFlag.HOVER_GLOBAL_HEIGHT) != 0) |
731 | { | 731 | { |
@@ -789,7 +789,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
789 | { | 789 | { |
790 | grav.Z = (float)(grav.Z * 1.125); | 790 | grav.Z = (float)(grav.Z * 1.125); |
791 | } | 791 | } |
792 | float terraintemp = _pParentScene.GetTerrainHeightAtXYZ(pos); | 792 | float terraintemp = m_prim.Scene.GetTerrainHeightAtXYZ(pos); |
793 | float postemp = (pos.Z - terraintemp); | 793 | float postemp = (pos.Z - terraintemp); |
794 | if (postemp > 2.5f) | 794 | if (postemp > 2.5f) |
795 | { | 795 | { |
@@ -940,7 +940,6 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
940 | DetailLog("{0},MoveAngular,done,decay={1},lastAngular={2}", m_prim.LocalID, decayamount, m_lastAngularVelocity); | 940 | DetailLog("{0},MoveAngular,done,decay={1},lastAngular={2}", m_prim.LocalID, decayamount, m_lastAngularVelocity); |
941 | } //end MoveAngular | 941 | } //end MoveAngular |
942 | 942 | ||
943 | } //end MoveAngular | ||
944 | internal void LimitRotation(float timestep) | 943 | internal void LimitRotation(float timestep) |
945 | { | 944 | { |
946 | Quaternion rotq = m_prim.Orientation; | 945 | Quaternion rotq = m_prim.Orientation; |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 227696e..5911897 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -149,7 +149,7 @@ public sealed class BSPrim : PhysicsActor | |||
149 | { | 149 | { |
150 | // m_log.DebugFormat("{0}: Destroy, id={1}", LogHeader, LocalID); | 150 | // m_log.DebugFormat("{0}: Destroy, id={1}", LogHeader, LocalID); |
151 | // Undo any vehicle properties | 151 | // Undo any vehicle properties |
152 | _vehicle.ProcessTypeChange(Vehicle.TYPE_NONE, 1f); | 152 | _vehicle.ProcessTypeChange(Vehicle.TYPE_NONE); |
153 | _scene.RemoveVehiclePrim(this); // just to make sure | 153 | _scene.RemoveVehiclePrim(this); // just to make sure |
154 | 154 | ||
155 | // undo any dependance with/on other objects | 155 | // undo any dependance with/on other objects |
@@ -354,7 +354,7 @@ public sealed class BSPrim : PhysicsActor | |||
354 | } | 354 | } |
355 | set { | 355 | set { |
356 | Vehicle type = (Vehicle)value; | 356 | Vehicle type = (Vehicle)value; |
357 | _vehicle.ProcessTypeChange(type, _scene.LastSimulatedTimestep); | 357 | _vehicle.ProcessTypeChange(type); |
358 | _scene.TaintedObject(delegate() | 358 | _scene.TaintedObject(delegate() |
359 | { | 359 | { |
360 | if (type == Vehicle.TYPE_NONE) | 360 | if (type == Vehicle.TYPE_NONE) |
@@ -389,7 +389,7 @@ public sealed class BSPrim : PhysicsActor | |||
389 | // Called each simulation step to advance vehicle characteristics | 389 | // Called each simulation step to advance vehicle characteristics |
390 | public void StepVehicle(float timeStep) | 390 | public void StepVehicle(float timeStep) |
391 | { | 391 | { |
392 | _vehicle.Step(timeStep, _scene); | 392 | _vehicle.Step(timeStep); |
393 | } | 393 | } |
394 | 394 | ||
395 | // Allows the detection of collisions with inherently non-physical prims. see llVolumeDetect for more | 395 | // Allows the detection of collisions with inherently non-physical prims. see llVolumeDetect for more |