aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsActor.cs3
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsScene.cs6
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs74
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs150
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODETestClass.cs6
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs2
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs200
7 files changed, 225 insertions, 216 deletions
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
index 0f75c46..94f3d85 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
@@ -213,6 +213,9 @@ namespace OpenSim.Region.Physics.Manager
213 public abstract void SubscribeEvents(int ms); 213 public abstract void SubscribeEvents(int ms);
214 public abstract void UnSubscribeEvents(); 214 public abstract void UnSubscribeEvents();
215 public abstract bool SubscribedEvents(); 215 public abstract bool SubscribedEvents();
216
217 public virtual void SetCollisionMesh(byte[] meshdata, string meshname, bool scalemesh) { }
218 public virtual void SetBoundsScaling(bool scalemesh) { }
216 } 219 }
217 220
218 public class NullPhysicsActor : PhysicsActor 221 public class NullPhysicsActor : PhysicsActor
diff --git a/OpenSim/Region/Physics/Manager/PhysicsScene.cs b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
index 2cf4d5a..3d0015f 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsScene.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
@@ -152,6 +152,12 @@ namespace OpenSim.Region.Physics.Manager
152 152
153 public abstract bool IsThreaded { get; } 153 public abstract bool IsThreaded { get; }
154 154
155 public virtual uint Raycast(PhysicsVector pos, PhysicsVector dir, float rayLength, uint ignoreId)
156 { return 0; }
157
158 public virtual void SetMaxFlightHeight(float maxheight) { }
159
160
155 private class NullPhysicsScene : PhysicsScene 161 private class NullPhysicsScene : PhysicsScene
156 { 162 {
157 private static int m_workIndicator; 163 private static int m_workIndicator;
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index 2cdc988..73b7612 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -57,73 +57,73 @@ namespace OpenSim.Region.Physics.OdePlugin
57 } 57 }
58 public class OdeCharacter : PhysicsActor 58 public class OdeCharacter : PhysicsActor
59 { 59 {
60 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 60 protected static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
61 61
62 private PhysicsVector _position; 62 protected PhysicsVector _position;
63 private d.Vector3 _zeroPosition; 63 protected d.Vector3 _zeroPosition;
64 // private d.Matrix3 m_StandUpRotation; 64 // protected d.Matrix3 m_StandUpRotation;
65 private bool _zeroFlag = false; 65 protected bool _zeroFlag = false;
66 private bool m_lastUpdateSent = false; 66 protected bool m_lastUpdateSent = false;
67 private PhysicsVector _velocity; 67 protected PhysicsVector _velocity;
68 private PhysicsVector _target_velocity; 68 protected PhysicsVector _target_velocity;
69 private PhysicsVector _acceleration; 69 protected PhysicsVector _acceleration;
70 private PhysicsVector m_rotationalVelocity; 70 protected PhysicsVector m_rotationalVelocity;
71 private float m_mass = 80f; 71 protected float m_mass = 80f;
72 public float m_density = 60f; 72 public float m_density = 60f;
73 private bool m_pidControllerActive = true; 73 protected bool m_pidControllerActive = true;
74 public float PID_D = 800.0f; 74 public float PID_D = 800.0f;
75 public float PID_P = 900.0f; 75 public float PID_P = 900.0f;
76 //private static float POSTURE_SERVO = 10000.0f; 76 //protected static float POSTURE_SERVO = 10000.0f;
77 public float CAPSULE_RADIUS = 0.37f; 77 public float CAPSULE_RADIUS = 0.37f;
78 public float CAPSULE_LENGTH = 2.140599f; 78 public float CAPSULE_LENGTH = 2.140599f;
79 public float m_tensor = 3800000f; 79 public float m_tensor = 3800000f;
80 public float heightFudgeFactor = 0.52f; 80 public float heightFudgeFactor = 0.52f;
81 public float walkDivisor = 1.3f; 81 public float walkDivisor = 1.3f;
82 public float runDivisor = 0.8f; 82 public float runDivisor = 0.8f;
83 private bool flying = false; 83 protected bool flying = false;
84 private bool m_iscolliding = false; 84 protected bool m_iscolliding = false;
85 private bool m_iscollidingGround = false; 85 protected bool m_iscollidingGround = false;
86 private bool m_wascolliding = false; 86 protected bool m_wascolliding = false;
87 private bool m_wascollidingGround = false; 87 protected bool m_wascollidingGround = false;
88 private bool m_iscollidingObj = false; 88 protected bool m_iscollidingObj = false;
89 private bool m_alwaysRun = false; 89 protected bool m_alwaysRun = false;
90 private bool m_hackSentFall = false; 90 protected bool m_hackSentFall = false;
91 private bool m_hackSentFly = false; 91 protected bool m_hackSentFly = false;
92 private PhysicsVector m_taintPosition = new PhysicsVector(0, 0, 0); 92 protected PhysicsVector m_taintPosition = new PhysicsVector(0, 0, 0);
93 public uint m_localID = 0; 93 public uint m_localID = 0;
94 public bool m_returnCollisions = false; 94 public bool m_returnCollisions = false;
95 // taints and their non-tainted counterparts 95 // taints and their non-tainted counterparts
96 public bool m_isPhysical = false; // the current physical status 96 public bool m_isPhysical = false; // the current physical status
97 public bool m_tainted_isPhysical = false; // set when the physical status is tainted (false=not existing in physics engine, true=existing) 97 public bool m_tainted_isPhysical = false; // set when the physical status is tainted (false=not existing in physics engine, true=existing)
98 private float m_tainted_CAPSULE_LENGTH; // set when the capsule length changes. 98 protected float m_tainted_CAPSULE_LENGTH; // set when the capsule length changes.
99 99
100 private float m_buoyancy = 0f; 100 protected float m_buoyancy = 0f;
101 101
102 // private CollisionLocker ode; 102 // protected CollisionLocker ode;
103 103
104 private string m_name = String.Empty; 104 protected string m_name = String.Empty;
105 105
106 private bool[] m_colliderarr = new bool[11]; 106 protected bool[] m_colliderarr = new bool[11];
107 private bool[] m_colliderGroundarr = new bool[11]; 107 protected bool[] m_colliderGroundarr = new bool[11];
108 108
109 // Default we're a Character 109 // Default we're a Character
110 private CollisionCategories m_collisionCategories = (CollisionCategories.Character); 110 protected CollisionCategories m_collisionCategories = (CollisionCategories.Character);
111 111
112 // Default, Collide with Other Geometries, spaces, bodies and characters. 112 // Default, Collide with Other Geometries, spaces, bodies and characters.
113 private CollisionCategories m_collisionFlags = (CollisionCategories.Geom 113 protected CollisionCategories m_collisionFlags = (CollisionCategories.Geom
114 | CollisionCategories.Space 114 | CollisionCategories.Space
115 | CollisionCategories.Body 115 | CollisionCategories.Body
116 | CollisionCategories.Character 116 | CollisionCategories.Character
117 | CollisionCategories.Land); 117 | CollisionCategories.Land);
118 public IntPtr Body = IntPtr.Zero; 118 public IntPtr Body = IntPtr.Zero;
119 private OdeScene _parent_scene; 119 protected OdeScene _parent_scene;
120 public IntPtr Shell = IntPtr.Zero; 120 public IntPtr Shell = IntPtr.Zero;
121 public IntPtr Amotor = IntPtr.Zero; 121 public IntPtr Amotor = IntPtr.Zero;
122 public d.Mass ShellMass; 122 public d.Mass ShellMass;
123 public bool collidelock = false; 123 public bool collidelock = false;
124 124
125 public int m_eventsubscription = 0; 125 public int m_eventsubscription = 0;
126 private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate(); 126 protected CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate();
127 127
128 public OdeCharacter(String avName, OdeScene parent_scene, PhysicsVector pos, CollisionLocker dode, PhysicsVector size, float pid_d, float pid_p, float capsule_radius, float tensor, float density, float height_fudge_factor, float walk_divisor, float rundivisor) 128 public OdeCharacter(String avName, OdeScene parent_scene, PhysicsVector pos, CollisionLocker dode, PhysicsVector size, float pid_d, float pid_p, float capsule_radius, float tensor, float density, float height_fudge_factor, float walk_divisor, float rundivisor)
129 { 129 {
@@ -421,7 +421,7 @@ namespace OpenSim.Region.Physics.OdePlugin
421 // WARNING: This MUST NOT be called outside of ProcessTaints, else we can have unsynchronized access 421 // WARNING: This MUST NOT be called outside of ProcessTaints, else we can have unsynchronized access
422 // to ODE internals. ProcessTaints is called from within thread-locked Simulate(), so it is the only 422 // to ODE internals. ProcessTaints is called from within thread-locked Simulate(), so it is the only
423 // place that is safe to call this routine AvatarGeomAndBodyCreation. 423 // place that is safe to call this routine AvatarGeomAndBodyCreation.
424 private void AvatarGeomAndBodyCreation(float npositionX, float npositionY, float npositionZ, float tensor) 424 protected void AvatarGeomAndBodyCreation(float npositionX, float npositionY, float npositionZ, float tensor)
425 { 425 {
426 //CAPSULE_LENGTH = -5; 426 //CAPSULE_LENGTH = -5;
427 //CAPSULE_RADIUS = -5; 427 //CAPSULE_RADIUS = -5;
@@ -535,7 +535,7 @@ namespace OpenSim.Region.Physics.OdePlugin
535// This code is very useful. Written by DanX0r. We're just not using it right now. 535// This code is very useful. Written by DanX0r. We're just not using it right now.
536// Commented out to prevent a warning. 536// Commented out to prevent a warning.
537// 537//
538// private void standupStraight() 538// protected void standupStraight()
539// { 539// {
540// // The purpose of this routine here is to quickly stabilize the Body while it's popped up in the air. 540// // The purpose of this routine here is to quickly stabilize the Body while it's popped up in the air.
541// // The amotor needs a few seconds to stabilize so without it, the avatar shoots up sky high when you 541// // The amotor needs a few seconds to stabilize so without it, the avatar shoots up sky high when you
@@ -714,7 +714,7 @@ namespace OpenSim.Region.Physics.OdePlugin
714 /// This is the avatar's movement control + PID Controller 714 /// This is the avatar's movement control + PID Controller
715 /// </summary> 715 /// </summary>
716 /// <param name="timeStep"></param> 716 /// <param name="timeStep"></param>
717 public void Move(float timeStep) 717 public virtual void Move(float timeStep)
718 { 718 {
719 // no lock; for now it's only called from within Simulate() 719 // no lock; for now it's only called from within Simulate()
720 720
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index bfb9b1a..54edbdc 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -43,54 +43,54 @@ namespace OpenSim.Region.Physics.OdePlugin
43 43
44 public class OdePrim : PhysicsActor 44 public class OdePrim : PhysicsActor
45 { 45 {
46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 46 protected static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47 47
48 private PhysicsVector _position; 48 protected PhysicsVector _position;
49 private PhysicsVector _velocity; 49 protected PhysicsVector _velocity;
50 private PhysicsVector _torque = new PhysicsVector(0,0,0); 50 protected PhysicsVector _torque = new PhysicsVector(0,0,0);
51 private PhysicsVector m_lastVelocity = new PhysicsVector(0.0f, 0.0f, 0.0f); 51 protected PhysicsVector m_lastVelocity = new PhysicsVector(0.0f, 0.0f, 0.0f);
52 private PhysicsVector m_lastposition = new PhysicsVector(0.0f, 0.0f, 0.0f); 52 protected PhysicsVector m_lastposition = new PhysicsVector(0.0f, 0.0f, 0.0f);
53 private Quaternion m_lastorientation = new Quaternion(); 53 protected Quaternion m_lastorientation = new Quaternion();
54 private PhysicsVector m_rotationalVelocity; 54 protected PhysicsVector m_rotationalVelocity;
55 private PhysicsVector _size; 55 protected PhysicsVector _size;
56 private PhysicsVector _acceleration; 56 protected PhysicsVector _acceleration;
57 // private d.Vector3 _zeroPosition = new d.Vector3(0.0f, 0.0f, 0.0f); 57 // protected d.Vector3 _zeroPosition = new d.Vector3(0.0f, 0.0f, 0.0f);
58 private Quaternion _orientation; 58 protected Quaternion _orientation;
59 private PhysicsVector m_taintposition; 59 protected PhysicsVector m_taintposition;
60 private PhysicsVector m_taintsize; 60 protected PhysicsVector m_taintsize;
61 private PhysicsVector m_taintVelocity = new PhysicsVector(0, 0, 0); 61 protected PhysicsVector m_taintVelocity = new PhysicsVector(0, 0, 0);
62 private PhysicsVector m_taintTorque = new PhysicsVector(0, 0, 0); 62 protected PhysicsVector m_taintTorque = new PhysicsVector(0, 0, 0);
63 private Quaternion m_taintrot; 63 protected Quaternion m_taintrot;
64 private PhysicsVector m_angularlock = new PhysicsVector(1f, 1f, 1f); 64 protected PhysicsVector m_angularlock = new PhysicsVector(1f, 1f, 1f);
65 private PhysicsVector m_taintAngularLock = new PhysicsVector(1f, 1f, 1f); 65 protected PhysicsVector m_taintAngularLock = new PhysicsVector(1f, 1f, 1f);
66 private IntPtr Amotor = IntPtr.Zero; 66 protected IntPtr Amotor = IntPtr.Zero;
67 67
68 private PhysicsVector m_PIDTarget = new PhysicsVector(0, 0, 0); 68 protected PhysicsVector m_PIDTarget = new PhysicsVector(0, 0, 0);
69 private float m_PIDTau = 0f; 69 protected float m_PIDTau = 0f;
70 private float PID_D = 35f; 70 protected float PID_D = 35f;
71 private float PID_G = 25f; 71 protected float PID_G = 25f;
72 private float m_tensor = 5f; 72 protected float m_tensor = 5f;
73 private int body_autodisable_frames = 20; 73 protected int body_autodisable_frames = 20;
74 private IMesh primMesh = null; 74 protected IMesh primMesh = null;
75 75
76 private bool m_usePID = false; 76 protected bool m_usePID = false;
77 77
78 private const CollisionCategories m_default_collisionFlags = (CollisionCategories.Geom 78 protected const CollisionCategories m_default_collisionFlags = (CollisionCategories.Geom
79 | CollisionCategories.Space 79 | CollisionCategories.Space
80 | CollisionCategories.Body 80 | CollisionCategories.Body
81 | CollisionCategories.Character 81 | CollisionCategories.Character
82 ); 82 );
83 private bool m_taintshape = false; 83 protected bool m_taintshape = false;
84 private bool m_taintPhysics = false; 84 protected bool m_taintPhysics = false;
85 private bool m_collidesLand = true; 85 protected bool m_collidesLand = true;
86 private bool m_collidesWater = false; 86 protected bool m_collidesWater = false;
87 public bool m_returnCollisions = false; 87 public bool m_returnCollisions = false;
88 88
89 // Default we're a Geometry 89 // Default we're a Geometry
90 private CollisionCategories m_collisionCategories = (CollisionCategories.Geom); 90 protected CollisionCategories m_collisionCategories = (CollisionCategories.Geom);
91 91
92 // Default, Collide with Other Geometries, spaces and Bodies 92 // Default, Collide with Other Geometries, spaces and Bodies
93 private CollisionCategories m_collisionFlags = m_default_collisionFlags; 93 protected CollisionCategories m_collisionFlags = m_default_collisionFlags;
94 94
95 public bool m_taintremove = false; 95 public bool m_taintremove = false;
96 public bool m_taintdisable = false; 96 public bool m_taintdisable = false;
@@ -102,58 +102,58 @@ namespace OpenSim.Region.Physics.OdePlugin
102 public uint m_localID = 0; 102 public uint m_localID = 0;
103 103
104 //public GCHandle gc; 104 //public GCHandle gc;
105 private CollisionLocker ode; 105 protected CollisionLocker ode;
106 106
107 private bool m_taintforce = false; 107 protected bool m_taintforce = false;
108 private bool m_taintaddangularforce = false; 108 protected bool m_taintaddangularforce = false;
109 private PhysicsVector m_force = new PhysicsVector(0.0f, 0.0f, 0.0f); 109 protected PhysicsVector m_force = new PhysicsVector(0.0f, 0.0f, 0.0f);
110 private List<PhysicsVector> m_forcelist = new List<PhysicsVector>(); 110 protected List<PhysicsVector> m_forcelist = new List<PhysicsVector>();
111 private List<PhysicsVector> m_angularforcelist = new List<PhysicsVector>(); 111 protected List<PhysicsVector> m_angularforcelist = new List<PhysicsVector>();
112 112
113 private IMesh _mesh; 113 protected IMesh _mesh;
114 private PrimitiveBaseShape _pbs; 114 protected PrimitiveBaseShape _pbs;
115 private OdeScene _parent_scene; 115 protected OdeScene _parent_scene;
116 public IntPtr m_targetSpace = (IntPtr) 0; 116 public IntPtr m_targetSpace = (IntPtr) 0;
117 public IntPtr prim_geom; 117 public IntPtr prim_geom;
118 public IntPtr prev_geom; 118 public IntPtr prev_geom;
119 public IntPtr _triMeshData; 119 public IntPtr _triMeshData;
120 120
121 private IntPtr _linkJointGroup = (IntPtr)0; 121 protected IntPtr _linkJointGroup = (IntPtr)0;
122 private PhysicsActor _parent = null; 122 protected PhysicsActor _parent = null;
123 private PhysicsActor m_taintparent = null; 123 protected PhysicsActor m_taintparent = null;
124 124
125 private List<OdePrim> childrenPrim = new List<OdePrim>(); 125 protected List<OdePrim> childrenPrim = new List<OdePrim>();
126 126
127 private bool iscolliding = false; 127 protected bool iscolliding = false;
128 private bool m_isphysical = false; 128 protected bool m_isphysical = false;
129 private bool m_isSelected = false; 129 protected bool m_isSelected = false;
130 130
131 internal bool m_isVolumeDetect = false; // If true, this prim only detects collisions but doesn't collide actively 131 public bool m_isVolumeDetect = false; // If true, this prim only detects collisions but doesn't collide actively
132 132
133 private bool m_throttleUpdates = false; 133 protected bool m_throttleUpdates = false;
134 private int throttleCounter = 0; 134 protected int throttleCounter = 0;
135 public int m_interpenetrationcount = 0; 135 public int m_interpenetrationcount = 0;
136 public float m_collisionscore = 0; 136 public float m_collisionscore = 0;
137 public int m_roundsUnderMotionThreshold = 0; 137 public int m_roundsUnderMotionThreshold = 0;
138 private int m_crossingfailures = 0; 138 protected int m_crossingfailures = 0;
139 139
140 public float m_buoyancy = 0f; 140 public float m_buoyancy = 0f;
141 141
142 public bool outofBounds = false; 142 public bool outofBounds = false;
143 private float m_density = 10.000006836f; // Aluminum g/cm3; 143 protected float m_density = 10.000006836f; // Aluminum g/cm3;
144 144
145 public bool _zeroFlag = false; 145 public bool _zeroFlag = false;
146 private bool m_lastUpdateSent = false; 146 protected bool m_lastUpdateSent = false;
147 147
148 public IntPtr Body = (IntPtr) 0; 148 public IntPtr Body = (IntPtr) 0;
149 private String m_primName; 149 protected String m_primName;
150 private PhysicsVector _target_velocity; 150 protected PhysicsVector _target_velocity;
151 public d.Mass pMass; 151 public d.Mass pMass;
152 152
153 public int m_eventsubscription = 0; 153 public int m_eventsubscription = 0;
154 private CollisionEventUpdate CollisionEventsThisFrame = null; 154 protected CollisionEventUpdate CollisionEventsThisFrame = null;
155 155
156 private IntPtr m_linkJoint = (IntPtr)0; 156 protected IntPtr m_linkJoint = (IntPtr)0;
157 157
158 public volatile bool childPrim = false; 158 public volatile bool childPrim = false;
159 159
@@ -338,7 +338,7 @@ namespace OpenSim.Region.Physics.OdePlugin
338 338
339 #region Mass Calculation 339 #region Mass Calculation
340 340
341 private float CalculateMass() 341 protected float CalculateMass()
342 { 342 {
343 float volume = 0; 343 float volume = 0;
344 344
@@ -815,7 +815,7 @@ namespace OpenSim.Region.Physics.OdePlugin
815 // } 815 // }
816 } 816 }
817 817
818 public void ProcessTaints(float timestep) 818 public virtual void ProcessTaints(float timestep)
819 { 819 {
820 if (m_taintadd) 820 if (m_taintadd)
821 { 821 {
@@ -875,7 +875,7 @@ namespace OpenSim.Region.Physics.OdePlugin
875 } 875 }
876 } 876 }
877 877
878 private void changeAngularLock(float timestep) 878 protected void changeAngularLock(float timestep)
879 { 879 {
880 // do we have a Physical object? 880 // do we have a Physical object?
881 if (Body != IntPtr.Zero) 881 if (Body != IntPtr.Zero)
@@ -904,7 +904,7 @@ namespace OpenSim.Region.Physics.OdePlugin
904 m_angularlock = new PhysicsVector(m_taintAngularLock.X, m_taintAngularLock.Y, m_taintAngularLock.Z); 904 m_angularlock = new PhysicsVector(m_taintAngularLock.X, m_taintAngularLock.Y, m_taintAngularLock.Z);
905 } 905 }
906 906
907 private void changelink(float timestep) 907 protected void changelink(float timestep)
908 { 908 {
909 // If the newly set parent is not null 909 // If the newly set parent is not null
910 // create link 910 // create link
@@ -1095,7 +1095,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1095 1095
1096 } 1096 }
1097 1097
1098 private void ChildSetGeom(OdePrim odePrim) 1098 public void ChildSetGeom(OdePrim odePrim)
1099 { 1099 {
1100 //if (m_isphysical && Body != IntPtr.Zero) 1100 //if (m_isphysical && Body != IntPtr.Zero)
1101 lock (childrenPrim) 1101 lock (childrenPrim)
@@ -1129,7 +1129,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1129 1129
1130 } 1130 }
1131 1131
1132 private void ChildDelink(OdePrim odePrim) 1132 protected void ChildDelink(OdePrim odePrim)
1133 { 1133 {
1134 // Okay, we have a delinked child.. need to rebuild the body. 1134 // Okay, we have a delinked child.. need to rebuild the body.
1135 lock (childrenPrim) 1135 lock (childrenPrim)
@@ -1173,7 +1173,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1173 1173
1174 } 1174 }
1175 1175
1176 private void changeSelectedStatus(float timestep) 1176 protected void changeSelectedStatus(float timestep)
1177 { 1177 {
1178 if (m_taintselected) 1178 if (m_taintselected)
1179 { 1179 {
@@ -1603,7 +1603,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1603 m_taintrot = _orientation; 1603 m_taintrot = _orientation;
1604 } 1604 }
1605 1605
1606 private void resetCollisionAccounting() 1606 protected void resetCollisionAccounting()
1607 { 1607 {
1608 m_collisionscore = 0; 1608 m_collisionscore = 0;
1609 m_interpenetrationcount = 0; 1609 m_interpenetrationcount = 0;
@@ -2132,7 +2132,7 @@ namespace OpenSim.Region.Physics.OdePlugin
2132 m_taintaddangularforce = false; 2132 m_taintaddangularforce = false;
2133 } 2133 }
2134 2134
2135 private void changevelocity(float timestep) 2135 protected void changevelocity(float timestep)
2136 { 2136 {
2137 if (!m_isSelected) 2137 if (!m_isSelected)
2138 { 2138 {
@@ -2622,7 +2622,7 @@ namespace OpenSim.Region.Physics.OdePlugin
2622 public override bool PIDActive { set { m_usePID = value; } } 2622 public override bool PIDActive { set { m_usePID = value; } }
2623 public override float PIDTau { set { m_PIDTau = value; } } 2623 public override float PIDTau { set { m_PIDTau = value; } }
2624 2624
2625 private void createAMotor(PhysicsVector axis) 2625 protected void createAMotor(PhysicsVector axis)
2626 { 2626 {
2627 if (Body == IntPtr.Zero) 2627 if (Body == IntPtr.Zero)
2628 return; 2628 return;
diff --git a/OpenSim/Region/Physics/OdePlugin/ODETestClass.cs b/OpenSim/Region/Physics/OdePlugin/ODETestClass.cs
index c913639..b955e4b 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODETestClass.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODETestClass.cs
@@ -37,9 +37,9 @@ namespace OpenSim.Region.Physics.OdePlugin
37 [TestFixture] 37 [TestFixture]
38 public class ODETestClass 38 public class ODETestClass
39 { 39 {
40 private OdePlugin cbt; 40 protected OdePlugin cbt;
41 private PhysicsScene ps; 41 protected PhysicsScene ps;
42 private IMeshingPlugin imp; 42 protected IMeshingPlugin imp;
43 43
44 [SetUp] 44 [SetUp]
45 public void Initialize() 45 public void Initialize()
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs b/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs
index 8180497..b7b39a4 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs
@@ -34,7 +34,7 @@ using OpenSim.Region.Physics.OdePlugin;
34 34
35namespace OpenSim.Region.Physics.OdePlugin 35namespace OpenSim.Region.Physics.OdePlugin
36{ 36{
37 class OdePhysicsJoint : PhysicsJoint 37 public class OdePhysicsJoint : PhysicsJoint
38 { 38 {
39 public override bool IsInPhysicsEngine 39 public override bool IsInPhysicsEngine
40 { 40 {
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 3adabcf..9a1645d 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -52,10 +52,10 @@ namespace OpenSim.Region.Physics.OdePlugin
52 /// </summary> 52 /// </summary>
53 public class OdePlugin : IPhysicsPlugin 53 public class OdePlugin : IPhysicsPlugin
54 { 54 {
55 //private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 55 //protected static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
56 56
57 private CollisionLocker ode; 57 protected CollisionLocker ode;
58 private OdeScene _mScene; 58 protected OdeScene _mScene;
59 59
60 public OdePlugin() 60 public OdePlugin()
61 { 61 {
@@ -124,62 +124,62 @@ namespace OpenSim.Region.Physics.OdePlugin
124 124
125 public class OdeScene : PhysicsScene 125 public class OdeScene : PhysicsScene
126 { 126 {
127 private ILog m_log; 127 protected ILog m_log;
128 // private Dictionary<string, sCollisionData> m_storedCollisions = new Dictionary<string, sCollisionData>(); 128 // protected Dictionary<string, sCollisionData> m_storedCollisions = new Dictionary<string, sCollisionData>();
129 129
130 CollisionLocker ode; 130 protected CollisionLocker ode;
131 131
132 protected Random fluidRandomizer = new Random(Environment.TickCount); 132 protected Random fluidRandomizer = new Random(Environment.TickCount);
133 133
134 private const uint m_regionWidth = Constants.RegionSize; 134 protected const uint m_regionWidth = Constants.RegionSize;
135 private const uint m_regionHeight = Constants.RegionSize; 135 protected const uint m_regionHeight = Constants.RegionSize;
136 136
137 private float ODE_STEPSIZE = 0.020f; 137 protected float ODE_STEPSIZE = 0.020f;
138 private float metersInSpace = 29.9f; 138 protected float metersInSpace = 29.9f;
139 139
140 public float gravityx = 0f; 140 public float gravityx = 0f;
141 public float gravityy = 0f; 141 public float gravityy = 0f;
142 public float gravityz = -9.8f; 142 public float gravityz = -9.8f;
143 143
144 private float contactsurfacelayer = 0.001f; 144 protected float contactsurfacelayer = 0.001f;
145 145
146 private int worldHashspaceLow = -4; 146 protected int worldHashspaceLow = -4;
147 private int worldHashspaceHigh = 128; 147 protected int worldHashspaceHigh = 128;
148 148
149 private int smallHashspaceLow = -4; 149 protected int smallHashspaceLow = -4;
150 private int smallHashspaceHigh = 66; 150 protected int smallHashspaceHigh = 66;
151 151
152 private float waterlevel = 0f; 152 protected float waterlevel = 0f;
153 private int framecount = 0; 153 protected int framecount = 0;
154 //private int m_returncollisions = 10; 154 //protected int m_returncollisions = 10;
155 155
156 private IntPtr contactgroup; 156 protected IntPtr contactgroup;
157 private IntPtr LandGeom; 157 protected IntPtr LandGeom;
158 158
159 private IntPtr WaterGeom; 159 protected IntPtr WaterGeom;
160 160
161 private float nmTerrainContactFriction = 255.0f; 161 protected float nmTerrainContactFriction = 255.0f;
162 private float nmTerrainContactBounce = 0.1f; 162 protected float nmTerrainContactBounce = 0.1f;
163 private float nmTerrainContactERP = 0.1025f; 163 protected float nmTerrainContactERP = 0.1025f;
164 164
165 private float mTerrainContactFriction = 75f; 165 protected float mTerrainContactFriction = 75f;
166 private float mTerrainContactBounce = 0.1f; 166 protected float mTerrainContactBounce = 0.1f;
167 private float mTerrainContactERP = 0.05025f; 167 protected float mTerrainContactERP = 0.05025f;
168 168
169 private float nmAvatarObjectContactFriction = 250f; 169 protected float nmAvatarObjectContactFriction = 250f;
170 private float nmAvatarObjectContactBounce = 0.1f; 170 protected float nmAvatarObjectContactBounce = 0.1f;
171 171
172 private float mAvatarObjectContactFriction = 75f; 172 protected float mAvatarObjectContactFriction = 75f;
173 private float mAvatarObjectContactBounce = 0.1f; 173 protected float mAvatarObjectContactBounce = 0.1f;
174 174
175 private float avPIDD = 3200f; 175 protected float avPIDD = 3200f;
176 private float avPIDP = 1400f; 176 protected float avPIDP = 1400f;
177 private float avCapRadius = 0.37f; 177 protected float avCapRadius = 0.37f;
178 private float avStandupTensor = 2000000f; 178 protected float avStandupTensor = 2000000f;
179 private float avDensity = 80f; 179 protected float avDensity = 80f;
180 private float avHeightFudgeFactor = 0.52f; 180 protected float avHeightFudgeFactor = 0.52f;
181 private float avMovementDivisorWalk = 1.3f; 181 protected float avMovementDivisorWalk = 1.3f;
182 private float avMovementDivisorRun = 0.8f; 182 protected float avMovementDivisorRun = 0.8f;
183 183
184 public bool meshSculptedPrim = true; 184 public bool meshSculptedPrim = true;
185 185
@@ -200,66 +200,66 @@ namespace OpenSim.Region.Physics.OdePlugin
200 200
201 public int bodyFramesAutoDisable = 20; 201 public int bodyFramesAutoDisable = 20;
202 202
203 private float[] _heightmap; 203 protected float[] _heightmap;
204 204
205 private float[] _watermap; 205 protected float[] _watermap;
206 private bool m_filterCollisions = true; 206 protected bool m_filterCollisions = true;
207 207
208 // private float[] _origheightmap; 208 // protected float[] _origheightmap;
209 209
210 private d.NearCallback nearCallback; 210 protected d.NearCallback nearCallback;
211 public d.TriCallback triCallback; 211 public d.TriCallback triCallback;
212 public d.TriArrayCallback triArrayCallback; 212 public d.TriArrayCallback triArrayCallback;
213 private List<OdeCharacter> _characters = new List<OdeCharacter>(); 213 protected List<OdeCharacter> _characters = new List<OdeCharacter>();
214 private List<OdePrim> _prims = new List<OdePrim>(); 214 protected List<OdePrim> _prims = new List<OdePrim>();
215 private List<OdePrim> _activeprims = new List<OdePrim>(); 215 protected List<OdePrim> _activeprims = new List<OdePrim>();
216 private List<OdePrim> _taintedPrim = new List<OdePrim>(); 216 protected List<OdePrim> _taintedPrim = new List<OdePrim>();
217 private List<OdeCharacter> _taintedActors = new List<OdeCharacter>(); 217 protected List<OdeCharacter> _taintedActors = new List<OdeCharacter>();
218 private List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>(); 218 protected List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>();
219 private List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>(); 219 protected List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>();
220 public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>(); 220 public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>();
221 public Dictionary<IntPtr, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>(); 221 public Dictionary<IntPtr, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>();
222 private bool m_NINJA_physics_joints_enabled = false; 222 protected bool m_NINJA_physics_joints_enabled = false;
223 //private Dictionary<String, IntPtr> jointpart_name_map = new Dictionary<String,IntPtr>(); 223 //protected Dictionary<String, IntPtr> jointpart_name_map = new Dictionary<String,IntPtr>();
224 private Dictionary<String, List<PhysicsJoint>> joints_connecting_actor = new Dictionary<String, List<PhysicsJoint>>(); 224 protected Dictionary<String, List<PhysicsJoint>> joints_connecting_actor = new Dictionary<String, List<PhysicsJoint>>();
225 private d.ContactGeom[] contacts = new d.ContactGeom[80]; 225 protected d.ContactGeom[] contacts = new d.ContactGeom[80];
226 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 226 protected 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
227 private List<PhysicsJoint> pendingJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene. 227 protected List<PhysicsJoint> pendingJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene.
228 private List<PhysicsJoint> activeJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene. 228 protected List<PhysicsJoint> activeJoints = new List<PhysicsJoint>(); // can lock for longer. accessed only by OdeScene.
229 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 229 protected 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
230 private Object externalJointRequestsLock = new Object(); 230 protected Object externalJointRequestsLock = new Object();
231 private Dictionary<String, PhysicsJoint> SOPName_to_activeJoint = new Dictionary<String, PhysicsJoint>(); 231 protected Dictionary<String, PhysicsJoint> SOPName_to_activeJoint = new Dictionary<String, PhysicsJoint>();
232 private Dictionary<String, PhysicsJoint> SOPName_to_pendingJoint = new Dictionary<String, PhysicsJoint>(); 232 protected Dictionary<String, PhysicsJoint> SOPName_to_pendingJoint = new Dictionary<String, PhysicsJoint>();
233 233
234 private d.Contact contact; 234 protected d.Contact contact;
235 private d.Contact TerrainContact; 235 protected d.Contact TerrainContact;
236 private d.Contact AvatarMovementprimContact; 236 protected d.Contact AvatarMovementprimContact;
237 private d.Contact AvatarMovementTerrainContact; 237 protected d.Contact AvatarMovementTerrainContact;
238 private d.Contact WaterContact; 238 protected d.Contact WaterContact;
239 239
240//Ckrinke: Comment out until used. We declare it, initialize it, but do not use it 240//Ckrinke: Comment out until used. We declare it, initialize it, but do not use it
241//Ckrinke private int m_randomizeWater = 200; 241//Ckrinke protected int m_randomizeWater = 200;
242 private int m_physicsiterations = 10; 242 protected int m_physicsiterations = 10;
243 private float m_SkipFramesAtms = 0.40f; // Drop frames gracefully at a 400 ms lag 243 protected float m_SkipFramesAtms = 0.40f; // Drop frames gracefully at a 400 ms lag
244 private PhysicsActor PANull = new NullPhysicsActor(); 244 protected PhysicsActor PANull = new NullPhysicsActor();
245 private float step_time = 0.0f; 245 protected float step_time = 0.0f;
246//Ckrinke: Comment out until used. We declare it, initialize it, but do not use it 246//Ckrinke: Comment out until used. We declare it, initialize it, but do not use it
247//Ckrinke private int ms = 0; 247//Ckrinke protected int ms = 0;
248 public IntPtr world; 248 public IntPtr world;
249 //private bool returncollisions = false; 249 //protected bool returncollisions = false;
250 // private uint obj1LocalID = 0; 250 // protected uint obj1LocalID = 0;
251 private uint obj2LocalID = 0; 251 protected uint obj2LocalID = 0;
252 //private int ctype = 0; 252 //protected int ctype = 0;
253 private OdeCharacter cc1; 253 protected OdeCharacter cc1;
254 private OdePrim cp1; 254 protected OdePrim cp1;
255 private OdeCharacter cc2; 255 protected OdeCharacter cc2;
256 private OdePrim cp2; 256 protected OdePrim cp2;
257 //private int cStartStop = 0; 257 //protected int cStartStop = 0;
258 //private string cDictKey = ""; 258 //protected string cDictKey = "";
259 259
260 public IntPtr space; 260 public IntPtr space;
261 261
262 //private IntPtr tmpSpace; 262 //protected IntPtr tmpSpace;
263 // split static geometry collision handling into spaces of 30 meters 263 // split static geometry collision handling into spaces of 30 meters
264 public IntPtr[,] staticPrimspace; 264 public IntPtr[,] staticPrimspace;
265 265
@@ -267,7 +267,7 @@ namespace OpenSim.Region.Physics.OdePlugin
267 267
268 public IMesher mesher; 268 public IMesher mesher;
269 269
270 private IConfigSource m_config; 270 protected IConfigSource m_config;
271 271
272 public bool physics_logging = false; 272 public bool physics_logging = false;
273 public int physics_logging_interval = 0; 273 public int physics_logging_interval = 0;
@@ -493,7 +493,7 @@ namespace OpenSim.Region.Physics.OdePlugin
493 } 493 }
494 } 494 }
495 495
496 internal void waitForSpaceUnlock(IntPtr space) 496 public void waitForSpaceUnlock(IntPtr space)
497 { 497 {
498 //if (space != IntPtr.Zero) 498 //if (space != IntPtr.Zero)
499 //while (d.SpaceLockQuery(space)) { } // Wait and do nothing 499 //while (d.SpaceLockQuery(space)) { } // Wait and do nothing
@@ -517,7 +517,7 @@ namespace OpenSim.Region.Physics.OdePlugin
517 /// <param name="space">The space that contains the geoms. Remember, spaces are also geoms</param> 517 /// <param name="space">The space that contains the geoms. Remember, spaces are also geoms</param>
518 /// <param name="g1">a geometry or space</param> 518 /// <param name="g1">a geometry or space</param>
519 /// <param name="g2">another geometry or space</param> 519 /// <param name="g2">another geometry or space</param>
520 private void near(IntPtr space, IntPtr g1, IntPtr g2) 520 protected void near(IntPtr space, IntPtr g1, IntPtr g2)
521 { 521 {
522 // no lock here! It's invoked from within Simulate(), which is thread-locked 522 // no lock here! It's invoked from within Simulate(), which is thread-locked
523 523
@@ -912,7 +912,7 @@ namespace OpenSim.Region.Physics.OdePlugin
912 } 912 }
913 } 913 }
914 914
915 private bool checkDupe(d.ContactGeom contactGeom, int atype) 915 protected bool checkDupe(d.ContactGeom contactGeom, int atype)
916 { 916 {
917 bool result = false; 917 bool result = false;
918 //return result; 918 //return result;
@@ -982,7 +982,7 @@ namespace OpenSim.Region.Physics.OdePlugin
982 return result; 982 return result;
983 } 983 }
984 984
985 private void collision_accounting_events(PhysicsActor p1, PhysicsActor p2, float collisiondepth) 985 protected void collision_accounting_events(PhysicsActor p1, PhysicsActor p2, float collisiondepth)
986 { 986 {
987 // obj1LocalID = 0; 987 // obj1LocalID = 0;
988 //returncollisions = false; 988 //returncollisions = false;
@@ -1160,7 +1160,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1160 /// This is our collision testing routine in ODE 1160 /// This is our collision testing routine in ODE
1161 /// </summary> 1161 /// </summary>
1162 /// <param name="timeStep"></param> 1162 /// <param name="timeStep"></param>
1163 private void collision_optimized(float timeStep) 1163 protected void collision_optimized(float timeStep)
1164 { 1164 {
1165 _perloopContact.Clear(); 1165 _perloopContact.Clear();
1166 1166
@@ -1249,7 +1249,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1249 #endregion 1249 #endregion
1250 1250
1251// TODO: unused 1251// TODO: unused
1252// private float GetTerrainHeightAtXY(float x, float y) 1252// protected float GetTerrainHeightAtXY(float x, float y)
1253// { 1253// {
1254// return (float)_origheightmap[(int)y * Constants.RegionSize + (int)x]; 1254// return (float)_origheightmap[(int)y * Constants.RegionSize + (int)x];
1255// } 1255// }
@@ -1295,7 +1295,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1295 } 1295 }
1296 } 1296 }
1297 1297
1298 private PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation, 1298 protected PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation,
1299 IMesh mesh, PrimitiveBaseShape pbs, bool isphysical) 1299 IMesh mesh, PrimitiveBaseShape pbs, bool isphysical)
1300 { 1300 {
1301 PhysicsVector pos = new PhysicsVector(position.X, position.Y, position.Z); 1301 PhysicsVector pos = new PhysicsVector(position.X, position.Y, position.Z);
@@ -1370,28 +1370,28 @@ namespace OpenSim.Region.Physics.OdePlugin
1370 } 1370 }
1371 1371
1372 // internal utility function: must be called within a lock (OdeLock) 1372 // internal utility function: must be called within a lock (OdeLock)
1373 private void InternalAddActiveJoint(PhysicsJoint joint) 1373 protected void InternalAddActiveJoint(PhysicsJoint joint)
1374 { 1374 {
1375 activeJoints.Add(joint); 1375 activeJoints.Add(joint);
1376 SOPName_to_activeJoint.Add(joint.ObjectNameInScene, joint); 1376 SOPName_to_activeJoint.Add(joint.ObjectNameInScene, joint);
1377 } 1377 }
1378 1378
1379 // internal utility function: must be called within a lock (OdeLock) 1379 // internal utility function: must be called within a lock (OdeLock)
1380 private void InternalAddPendingJoint(OdePhysicsJoint joint) 1380 protected void InternalAddPendingJoint(OdePhysicsJoint joint)
1381 { 1381 {
1382 pendingJoints.Add(joint); 1382 pendingJoints.Add(joint);
1383 SOPName_to_pendingJoint.Add(joint.ObjectNameInScene, joint); 1383 SOPName_to_pendingJoint.Add(joint.ObjectNameInScene, joint);
1384 } 1384 }
1385 1385
1386 // internal utility function: must be called within a lock (OdeLock) 1386 // internal utility function: must be called within a lock (OdeLock)
1387 private void InternalRemovePendingJoint(PhysicsJoint joint) 1387 protected void InternalRemovePendingJoint(PhysicsJoint joint)
1388 { 1388 {
1389 pendingJoints.Remove(joint); 1389 pendingJoints.Remove(joint);
1390 SOPName_to_pendingJoint.Remove(joint.ObjectNameInScene); 1390 SOPName_to_pendingJoint.Remove(joint.ObjectNameInScene);
1391 } 1391 }
1392 1392
1393 // internal utility function: must be called within a lock (OdeLock) 1393 // internal utility function: must be called within a lock (OdeLock)
1394 private void InternalRemoveActiveJoint(PhysicsJoint joint) 1394 protected void InternalRemoveActiveJoint(PhysicsJoint joint)
1395 { 1395 {
1396 activeJoints.Remove(joint); 1396 activeJoints.Remove(joint);
1397 SOPName_to_activeJoint.Remove(joint.ObjectNameInScene); 1397 SOPName_to_activeJoint.Remove(joint.ObjectNameInScene);
@@ -1445,7 +1445,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1445 } 1445 }
1446 } 1446 }
1447 1447
1448 private void DeleteRequestedJoints() 1448 protected void DeleteRequestedJoints()
1449 { 1449 {
1450 List<string> myRequestedJointsToBeDeleted; 1450 List<string> myRequestedJointsToBeDeleted;
1451 lock (externalJointRequestsLock) 1451 lock (externalJointRequestsLock)
@@ -1525,7 +1525,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1525 1525
1526 // for pending joints we don't know if their associated bodies exist yet or not. 1526 // for pending joints we don't know if their associated bodies exist yet or not.
1527 // the joint is actually created during processing of the taints 1527 // the joint is actually created during processing of the taints
1528 private void CreateRequestedJoints() 1528 protected void CreateRequestedJoints()
1529 { 1529 {
1530 List<PhysicsJoint> myRequestedJointsToBeCreated; 1530 List<PhysicsJoint> myRequestedJointsToBeCreated;
1531 lock (externalJointRequestsLock) 1531 lock (externalJointRequestsLock)
@@ -1611,7 +1611,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1611 return joint; 1611 return joint;
1612 } 1612 }
1613 1613
1614 private void RemoveAllJointsConnectedToActor(PhysicsActor actor) 1614 protected void RemoveAllJointsConnectedToActor(PhysicsActor actor)
1615 { 1615 {
1616 //m_log.Debug("RemoveAllJointsConnectedToActor: start"); 1616 //m_log.Debug("RemoveAllJointsConnectedToActor: start");
1617 if (actor.SOPName != null && joints_connecting_actor.ContainsKey(actor.SOPName) && joints_connecting_actor[actor.SOPName] != null) 1617 if (actor.SOPName != null && joints_connecting_actor.ContainsKey(actor.SOPName) && joints_connecting_actor[actor.SOPName] != null)