diff options
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 898436b..248d1f2 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -85,7 +85,6 @@ public sealed class BSPrim : PhysicsActor | |||
85 | private OMV.Vector3 _rotationalVelocity; | 85 | private OMV.Vector3 _rotationalVelocity; |
86 | private bool _kinematic; | 86 | private bool _kinematic; |
87 | private float _buoyancy; | 87 | private float _buoyancy; |
88 | private OMV.Vector3 _angularVelocity; | ||
89 | 88 | ||
90 | private List<BSPrim> _childrenPrims; | 89 | private List<BSPrim> _childrenPrims; |
91 | private BSPrim _parentPrim; | 90 | private BSPrim _parentPrim; |
@@ -119,7 +118,6 @@ public sealed class BSPrim : PhysicsActor | |||
119 | _buoyancy = 1f; | 118 | _buoyancy = 1f; |
120 | _velocity = OMV.Vector3.Zero; | 119 | _velocity = OMV.Vector3.Zero; |
121 | _rotationalVelocity = OMV.Vector3.Zero; | 120 | _rotationalVelocity = OMV.Vector3.Zero; |
122 | _angularVelocity = OMV.Vector3.Zero; | ||
123 | _hullKey = 0; | 121 | _hullKey = 0; |
124 | _meshKey = 0; | 122 | _meshKey = 0; |
125 | _pbs = pbs; | 123 | _pbs = pbs; |
@@ -146,7 +144,7 @@ public sealed class BSPrim : PhysicsActor | |||
146 | // called when this prim is being destroyed and we should free all the resources | 144 | // called when this prim is being destroyed and we should free all the resources |
147 | public void Destroy() | 145 | public void Destroy() |
148 | { | 146 | { |
149 | // m_log.DebugFormat("{0}: Destroy", LogHeader); | 147 | // m_log.DebugFormat("{0}: Destroy, id={1}", LogHeader, LocalID); |
150 | // Undo any vehicle properties | 148 | // Undo any vehicle properties |
151 | _vehicle.ProcessTypeChange(Vehicle.TYPE_NONE); | 149 | _vehicle.ProcessTypeChange(Vehicle.TYPE_NONE); |
152 | _scene.RemoveVehiclePrim(this); // just to make sure | 150 | _scene.RemoveVehiclePrim(this); // just to make sure |
@@ -203,7 +201,7 @@ public sealed class BSPrim : PhysicsActor | |||
203 | 201 | ||
204 | // link me to the specified parent | 202 | // link me to the specified parent |
205 | public override void link(PhysicsActor obj) { | 203 | public override void link(PhysicsActor obj) { |
206 | BSPrim parent = (BSPrim)obj; | 204 | BSPrim parent = obj as BSPrim; |
207 | // m_log.DebugFormat("{0}: link {1}/{2} to {3}", LogHeader, _avName, _localID, obj.LocalID); | 205 | // m_log.DebugFormat("{0}: link {1}/{2} to {3}", LogHeader, _avName, _localID, obj.LocalID); |
208 | // TODO: decide if this parent checking needs to happen at taint time | 206 | // TODO: decide if this parent checking needs to happen at taint time |
209 | if (_parentPrim == null) | 207 | if (_parentPrim == null) |
@@ -527,10 +525,6 @@ public sealed class BSPrim : PhysicsActor | |||
527 | }); | 525 | }); |
528 | } | 526 | } |
529 | } | 527 | } |
530 | public OMV.Vector3 AngularVelocity { | ||
531 | get { return _angularVelocity; } | ||
532 | set { _angularVelocity = value; } | ||
533 | } | ||
534 | public override bool Kinematic { | 528 | public override bool Kinematic { |
535 | get { return _kinematic; } | 529 | get { return _kinematic; } |
536 | set { _kinematic = value; | 530 | set { _kinematic = value; |
@@ -993,7 +987,7 @@ public sealed class BSPrim : PhysicsActor | |||
993 | } | 987 | } |
994 | 988 | ||
995 | // m_log.DebugFormat("{0}: CreateGeomMesh: calling CreateMesh. lid={1}, key={2}, indices={3}, vertices={4}", | 989 | // m_log.DebugFormat("{0}: CreateGeomMesh: calling CreateMesh. lid={1}, key={2}, indices={3}, vertices={4}", |
996 | // LogHeader, _localID, _meshKey, indices.Length, vertices.Count); | 990 | // LogHeader, _localID, _meshKey, indices.Length, vertices.Count); |
997 | BulletSimAPI.CreateMesh(_scene.WorldID, _meshKey, indices.GetLength(0), indices, | 991 | BulletSimAPI.CreateMesh(_scene.WorldID, _meshKey, indices.GetLength(0), indices, |
998 | vertices.Count, verticesAsFloats); | 992 | vertices.Count, verticesAsFloats); |
999 | 993 | ||
@@ -1127,7 +1121,7 @@ public sealed class BSPrim : PhysicsActor | |||
1127 | return; | 1121 | return; |
1128 | } | 1122 | } |
1129 | 1123 | ||
1130 | // Create an object in Bullet | 1124 | // Create an object in Bullet if it has not already been created |
1131 | // No locking here because this is done when the physics engine is not simulating | 1125 | // No locking here because this is done when the physics engine is not simulating |
1132 | private void CreateObject() | 1126 | private void CreateObject() |
1133 | { | 1127 | { |
@@ -1324,13 +1318,15 @@ public sealed class BSPrim : PhysicsActor | |||
1324 | _velocity = entprop.Velocity; | 1318 | _velocity = entprop.Velocity; |
1325 | _acceleration = entprop.Acceleration; | 1319 | _acceleration = entprop.Acceleration; |
1326 | _rotationalVelocity = entprop.RotationalVelocity; | 1320 | _rotationalVelocity = entprop.RotationalVelocity; |
1327 | // m_log.DebugFormat("{0}: RequestTerseUpdate. id={1}, ch={2}, pos={3}, rot={4}", LogHeader, LocalID, changed, _position, _orientation); | 1321 | // m_log.DebugFormat("{0}: RequestTerseUpdate. id={1}, ch={2}, pos={3}, rot={4}, vel={5}, acc={6}, rvel={7}", |
1322 | // LogHeader, LocalID, changed, _position, _orientation, _velocity, _acceleration, _rotationalVelocity); | ||
1328 | base.RequestPhysicsterseUpdate(); | 1323 | base.RequestPhysicsterseUpdate(); |
1329 | } | 1324 | } |
1330 | } | 1325 | } |
1331 | } | 1326 | } |
1332 | 1327 | ||
1333 | // I've collided with something | 1328 | // I've collided with something |
1329 | CollisionEventUpdate collisionCollection = null; | ||
1334 | public void Collide(uint collidingWith, ActorTypes type, OMV.Vector3 contactPoint, OMV.Vector3 contactNormal, float pentrationDepth) | 1330 | public void Collide(uint collidingWith, ActorTypes type, OMV.Vector3 contactPoint, OMV.Vector3 contactNormal, float pentrationDepth) |
1335 | { | 1331 | { |
1336 | // m_log.DebugFormat("{0}: Collide: ms={1}, id={2}, with={3}", LogHeader, _subscribedEventsMs, LocalID, collidingWith); | 1332 | // m_log.DebugFormat("{0}: Collide: ms={1}, id={2}, with={3}", LogHeader, _subscribedEventsMs, LocalID, collidingWith); |
@@ -1348,11 +1344,18 @@ public sealed class BSPrim : PhysicsActor | |||
1348 | if (nowTime < (_lastCollisionTime + _subscribedEventsMs)) return; | 1344 | if (nowTime < (_lastCollisionTime + _subscribedEventsMs)) return; |
1349 | _lastCollisionTime = nowTime; | 1345 | _lastCollisionTime = nowTime; |
1350 | 1346 | ||
1351 | // create the event for the collision | 1347 | if (collisionCollection == null) |
1352 | Dictionary<uint, ContactPoint> contactPoints = new Dictionary<uint, ContactPoint>(); | 1348 | collisionCollection = new CollisionEventUpdate(); |
1353 | contactPoints.Add(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth)); | 1349 | collisionCollection.AddCollider(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth)); |
1354 | CollisionEventUpdate args = new CollisionEventUpdate(contactPoints); | 1350 | } |
1355 | base.SendCollisionUpdate(args); | 1351 | |
1352 | public void SendCollisions() | ||
1353 | { | ||
1354 | if (collisionCollection != null) | ||
1355 | { | ||
1356 | base.SendCollisionUpdate(collisionCollection); | ||
1357 | collisionCollection = null; | ||
1358 | } | ||
1356 | } | 1359 | } |
1357 | } | 1360 | } |
1358 | } | 1361 | } |