aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs47
1 files changed, 41 insertions, 6 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index 58dbd63..4e1696d 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -136,8 +136,12 @@ namespace OpenSim.Region.Physics.OdePlugin
136 private PhysicsVector _target_velocity; 136 private PhysicsVector _target_velocity;
137 public d.Mass pMass; 137 public d.Mass pMass;
138 138
139 public int m_eventsubscription = 0;
140 private CollisionEventUpdate CollisionEventsThisFrame = null;
141
139 private IntPtr m_linkJoint = (IntPtr)0; 142 private IntPtr m_linkJoint = (IntPtr)0;
140 143
144
141 public OdePrim(String primName, OdeScene parent_scene, PhysicsVector pos, PhysicsVector size, 145 public OdePrim(String primName, OdeScene parent_scene, PhysicsVector pos, PhysicsVector size,
142 Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode) 146 Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode)
143 { 147 {
@@ -201,12 +205,6 @@ namespace OpenSim.Region.Physics.OdePlugin
201 205
202 } 206 }
203 207
204 /// <summary>
205 /// Nasty, however without this you get
206 /// 'invalid operation for locked space' when things are really loaded down
207 /// </summary>
208 /// <param name="space"></param>
209
210 public override int PhysicsActorType 208 public override int PhysicsActorType
211 { 209 {
212 get { return (int) ActorTypes.Prim; } 210 get { return (int) ActorTypes.Prim; }
@@ -2229,5 +2227,42 @@ namespace OpenSim.Region.Physics.OdePlugin
2229 d.JointSetAMotorParam(Amotor, (int)dParam.FudgeFactor, 0f); 2227 d.JointSetAMotorParam(Amotor, (int)dParam.FudgeFactor, 0f);
2230 d.JointSetAMotorParam(Amotor, (int)dParam.FMax, m_tensor); 2228 d.JointSetAMotorParam(Amotor, (int)dParam.FMax, m_tensor);
2231 } 2229 }
2230 public override void SubscribeEvents(int ms)
2231 {
2232 m_eventsubscription = ms;
2233 _parent_scene.addCollisionEventReporting(this);
2234 }
2235 public override void UnSubscribeEvents()
2236 {
2237 _parent_scene.remCollisionEventReporting(this);
2238 m_eventsubscription = 0;
2239 }
2240 public void AddCollisionEvent(uint CollidedWith, float depth)
2241 {
2242 if (CollisionEventsThisFrame == null)
2243 CollisionEventsThisFrame = new CollisionEventUpdate();
2244 CollisionEventsThisFrame.addCollider(CollidedWith,depth);
2245 }
2246
2247 public void SendCollisions()
2248 {
2249 if (CollisionEventsThisFrame == null)
2250 return;
2251
2252 //if (CollisionEventsThisFrame.m_objCollisionList == null)
2253 // return;
2254
2255 if (CollisionEventsThisFrame.m_objCollisionList.Count > 0)
2256 {
2257 base.SendCollisionUpdate(CollisionEventsThisFrame);
2258 CollisionEventsThisFrame = new CollisionEventUpdate();
2259 }
2260 }
2261 public override bool SubscribedEvents()
2262 {
2263 if (m_eventsubscription > 0)
2264 return true;
2265 return false;
2266 }
2232 } 2267 }
2233} 2268}