parent
							
								
									26ca3e26bf
								
							
						
					
					
						commit
						c0c330988f
					
				| 
						 | 
				
			
			@ -122,14 +122,14 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
        Selected = 0x00000100
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class OdeScene : PhysicsScene
 | 
			
		||||
    public sealed class OdeScene : PhysicsScene
 | 
			
		||||
    {
 | 
			
		||||
        private ILog m_log;
 | 
			
		||||
        private readonly ILog m_log;
 | 
			
		||||
        // private Dictionary<string, sCollisionData> m_storedCollisions = new Dictionary<string, sCollisionData>();
 | 
			
		||||
 | 
			
		||||
        CollisionLocker ode;
 | 
			
		||||
 | 
			
		||||
        protected Random fluidRandomizer = new Random(Environment.TickCount);
 | 
			
		||||
        private Random fluidRandomizer = new Random(Environment.TickCount);
 | 
			
		||||
 | 
			
		||||
        private const uint m_regionWidth = Constants.RegionSize;
 | 
			
		||||
        private const uint m_regionHeight = Constants.RegionSize;
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +153,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
        private int framecount = 0;
 | 
			
		||||
        //private int m_returncollisions = 10;
 | 
			
		||||
 | 
			
		||||
        private IntPtr contactgroup;
 | 
			
		||||
        private readonly IntPtr contactgroup;
 | 
			
		||||
        private IntPtr LandGeom;
 | 
			
		||||
 | 
			
		||||
        private IntPtr WaterGeom;
 | 
			
		||||
| 
						 | 
				
			
			@ -210,26 +210,26 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
        private d.NearCallback nearCallback;
 | 
			
		||||
        public d.TriCallback triCallback;
 | 
			
		||||
        public d.TriArrayCallback triArrayCallback;
 | 
			
		||||
        private List<OdeCharacter> _characters = new List<OdeCharacter>();
 | 
			
		||||
        private List<OdePrim> _prims = new List<OdePrim>();
 | 
			
		||||
        private List<OdePrim> _activeprims = new List<OdePrim>();
 | 
			
		||||
        private List<OdePrim> _taintedPrim = new List<OdePrim>();
 | 
			
		||||
        private List<OdeCharacter> _taintedActors = new List<OdeCharacter>();
 | 
			
		||||
        private List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>();
 | 
			
		||||
        private List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>();
 | 
			
		||||
        private readonly List<OdeCharacter> _characters = new List<OdeCharacter>();
 | 
			
		||||
        private readonly List<OdePrim> _prims = new List<OdePrim>();
 | 
			
		||||
        private readonly List<OdePrim> _activeprims = new List<OdePrim>();
 | 
			
		||||
        private readonly List<OdePrim> _taintedPrim = new List<OdePrim>();
 | 
			
		||||
        private readonly List<OdeCharacter> _taintedActors = new List<OdeCharacter>();
 | 
			
		||||
        private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>();
 | 
			
		||||
        private readonly List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>();
 | 
			
		||||
        public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>();
 | 
			
		||||
        public Dictionary<IntPtr, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>();
 | 
			
		||||
        private bool m_NINJA_physics_joints_enabled = false;
 | 
			
		||||
        //private Dictionary<String, IntPtr> jointpart_name_map = new Dictionary<String,IntPtr>();
 | 
			
		||||
        private Dictionary<String, List<PhysicsJoint>> joints_connecting_actor = new Dictionary<String, List<PhysicsJoint>>();
 | 
			
		||||
        private readonly Dictionary<String, List<PhysicsJoint>> joints_connecting_actor = new Dictionary<String, List<PhysicsJoint>>();
 | 
			
		||||
        private d.ContactGeom[] contacts = new d.ContactGeom[80];
 | 
			
		||||
        private List<PhysicsJoint> requestedJointsToBeCreated = new List<PhysicsJoint>(); // lock only briefly. accessed by external code (to request new joints) and by OdeScene.Simulate() to move those joints into pending/active
 | 
			
		||||
        private List<PhysicsJoint> pendingJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene.
 | 
			
		||||
        private List<PhysicsJoint> activeJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene.
 | 
			
		||||
        private List<string> requestedJointsToBeDeleted = new List<string>(); // lock only briefly. accessed by external code (to request deletion of joints) and by OdeScene.Simulate() to move those joints out of pending/active
 | 
			
		||||
        private readonly List<PhysicsJoint> requestedJointsToBeCreated = new List<PhysicsJoint>(); // lock only briefly. accessed by external code (to request new joints) and by OdeScene.Simulate() to move those joints into pending/active
 | 
			
		||||
        private readonly List<PhysicsJoint> pendingJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene.
 | 
			
		||||
        private readonly List<PhysicsJoint> activeJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene.
 | 
			
		||||
        private readonly List<string> requestedJointsToBeDeleted = new List<string>(); // lock only briefly. accessed by external code (to request deletion of joints) and by OdeScene.Simulate() to move those joints out of pending/active
 | 
			
		||||
        private Object externalJointRequestsLock = new Object();
 | 
			
		||||
        private Dictionary<String, PhysicsJoint> SOPName_to_activeJoint = new Dictionary<String, PhysicsJoint>();
 | 
			
		||||
        private Dictionary<String, PhysicsJoint> SOPName_to_pendingJoint = new Dictionary<String, PhysicsJoint>();
 | 
			
		||||
        private readonly Dictionary<String, PhysicsJoint> SOPName_to_activeJoint = new Dictionary<String, PhysicsJoint>();
 | 
			
		||||
        private readonly Dictionary<String, PhysicsJoint> SOPName_to_pendingJoint = new Dictionary<String, PhysicsJoint>();
 | 
			
		||||
 | 
			
		||||
        private d.Contact contact;
 | 
			
		||||
        private d.Contact TerrainContact;
 | 
			
		||||
| 
						 | 
				
			
			@ -240,8 +240,8 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
//Ckrinke: Comment out until used. We declare it, initialize it, but do not use it
 | 
			
		||||
//Ckrinke        private int m_randomizeWater = 200;
 | 
			
		||||
        private int m_physicsiterations = 10;
 | 
			
		||||
        private float m_SkipFramesAtms = 0.40f; // Drop frames gracefully at a 400 ms lag
 | 
			
		||||
        private PhysicsActor PANull = new NullPhysicsActor();
 | 
			
		||||
        private const float m_SkipFramesAtms = 0.40f; // Drop frames gracefully at a 400 ms lag
 | 
			
		||||
        private readonly PhysicsActor PANull = new NullPhysicsActor();
 | 
			
		||||
        private float step_time = 0.0f;
 | 
			
		||||
//Ckrinke: Comment out until used. We declare it, initialize it, but do not use it
 | 
			
		||||
//Ckrinke        private int ms = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1874,14 +1874,14 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        /// Takes a space pointer and zeros out the array we're using to hold the spaces
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="space"></param>
 | 
			
		||||
        public void resetSpaceArrayItemToZero(IntPtr space)
 | 
			
		||||
        /// <param name="pSpace"></param>
 | 
			
		||||
        public void resetSpaceArrayItemToZero(IntPtr pSpace)
 | 
			
		||||
        {
 | 
			
		||||
            for (int x = 0; x < staticPrimspace.GetLength(0); x++)
 | 
			
		||||
            {
 | 
			
		||||
                for (int y = 0; y < staticPrimspace.GetLength(1); y++)
 | 
			
		||||
                {
 | 
			
		||||
                    if (staticPrimspace[x, y] == space)
 | 
			
		||||
                    if (staticPrimspace[x, y] == pSpace)
 | 
			
		||||
                        staticPrimspace[x, y] = IntPtr.Zero;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -1926,8 +1926,8 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        m_log.Info("[Physics]: Invalid Scene passed to 'recalculatespace':" + currentspace.ToString() +
 | 
			
		||||
                                   " Geom:" + geom.ToString());
 | 
			
		||||
                        m_log.Info("[Physics]: Invalid Scene passed to 'recalculatespace':" + currentspace +
 | 
			
		||||
                                   " Geom:" + geom);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
| 
						 | 
				
			
			@ -1943,7 +1943,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            m_log.Info("[Physics]: Invalid Scene passed to 'recalculatespace':" +
 | 
			
		||||
                                       sGeomIsIn.ToString() + " Geom:" + geom.ToString());
 | 
			
		||||
                                       sGeomIsIn + " Geom:" + geom);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -1966,7 +1966,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            m_log.Info("[Physics]: Invalid Scene passed to 'recalculatespace':" +
 | 
			
		||||
                                       currentspace.ToString() + " Geom:" + geom.ToString());
 | 
			
		||||
                                       currentspace + " Geom:" + geom);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -1986,7 +1986,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            m_log.Info("[Physics]: Invalid Scene passed to 'recalculatespace':" +
 | 
			
		||||
                                       currentspace.ToString() + " Geom:" + geom.ToString());
 | 
			
		||||
                                       currentspace + " Geom:" + geom);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
| 
						 | 
				
			
			@ -2002,7 +2002,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                m_log.Info("[Physics]: Invalid Scene passed to 'recalculatespace':" +
 | 
			
		||||
                                           sGeomIsIn.ToString() + " Geom:" + geom.ToString());
 | 
			
		||||
                                           sGeomIsIn + " Geom:" + geom);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
| 
						 | 
				
			
			@ -2127,7 +2127,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
            if (pbs.ProfileHollow != 0)
 | 
			
		||||
                iPropertiesNotSupportedDefault++;
 | 
			
		||||
 | 
			
		||||
            if (((Int16)pbs.PathTwistBegin != 0) || ((Int16)pbs.PathTwist != 0))
 | 
			
		||||
            if ((pbs.PathTwistBegin != 0) || (pbs.PathTwist != 0))
 | 
			
		||||
                iPropertiesNotSupportedDefault++; 
 | 
			
		||||
 | 
			
		||||
            if ((pbs.ProfileBegin != 0) || pbs.ProfileEnd != 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue