aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/PhysicsModules
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs4
-rw-r--r--OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs1
-rwxr-xr-xOpenSim/Region/PhysicsModules/BulletS/Tests/Raycast.cs2
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/ODEApi.cs1186
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs128
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/ODEDynamics.cs52
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/ODEModule.cs2
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs374
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/ODERayCastRequestManager.cs26
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/OdeScene.cs281
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODEApi.cs1190
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs889
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODEDynamics.cs48
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs18
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODEModule.cs5
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs778
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODERayCastRequestManager.cs116
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs467
-rw-r--r--OpenSim/Region/PhysicsModules/ubOde/ODESitAvatar.cs16
-rw-r--r--OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs6
20 files changed, 2813 insertions, 2776 deletions
diff --git a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
index 2a1ae45..5ce1515 100644
--- a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
+++ b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
@@ -163,7 +163,7 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics
163 { 163 {
164// Console.WriteLine("Simulating"); 164// Console.WriteLine("Simulating");
165 165
166 float fps = 0; 166 float fps = 1.0f / timeStep;
167 for (int i = 0; i < _actors.Count; ++i) 167 for (int i = 0; i < _actors.Count; ++i)
168 { 168 {
169 BasicActor actor = _actors[i]; 169 BasicActor actor = _actors[i];
@@ -226,7 +226,7 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics
226 actor.Velocity = actorVelocity; 226 actor.Velocity = actorVelocity;
227 } 227 }
228 228
229 return 1.0f; 229 return fps;
230 } 230 }
231 231
232 public override void GetResults() 232 public override void GetResults()
diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs b/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs
index d182c34..2ca7dbc 100644
--- a/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs
+++ b/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs
@@ -92,6 +92,7 @@ public sealed class BSCharacter : BSPhysObject
92 Density = BSParam.AvatarDensity; 92 Density = BSParam.AvatarDensity;
93 _isPhysical = true; 93 _isPhysical = true;
94 94
95 _footOffset = footOffset;
95 // Adjustments for zero X and Y made in Size() 96 // Adjustments for zero X and Y made in Size()
96 // This also computes avatar scale, volume, and mass 97 // This also computes avatar scale, volume, and mass
97 SetAvatarSize(size, footOffset, true /* initializing */); 98 SetAvatarSize(size, footOffset, true /* initializing */);
diff --git a/OpenSim/Region/PhysicsModules/BulletS/Tests/Raycast.cs b/OpenSim/Region/PhysicsModules/BulletS/Tests/Raycast.cs
index bfa95c1..a6f587e 100755
--- a/OpenSim/Region/PhysicsModules/BulletS/Tests/Raycast.cs
+++ b/OpenSim/Region/PhysicsModules/BulletS/Tests/Raycast.cs
@@ -51,7 +51,7 @@ namespace OpenSim.Region.PhysicsModule.BulletS.Tests
51 BSScene _physicsScene { get; set; } 51 BSScene _physicsScene { get; set; }
52 BSPrim _targetSphere { get; set; } 52 BSPrim _targetSphere { get; set; }
53 Vector3 _targetSpherePosition { get; set; } 53 Vector3 _targetSpherePosition { get; set; }
54 float _simulationTimeStep = 0.089f; 54// float _simulationTimeStep = 0.089f;
55 55
56 uint _targetLocalID = 123; 56 uint _targetLocalID = 123;
57 57
diff --git a/OpenSim/Region/PhysicsModules/Ode/ODEApi.cs b/OpenSim/Region/PhysicsModules/Ode/ODEApi.cs
index c851b12..cc3077e 100644
--- a/OpenSim/Region/PhysicsModules/Ode/ODEApi.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/ODEApi.cs
@@ -55,18 +55,18 @@ namespace OpenSim.Region.PhysicsModule.ODE
55 using dReal = System.Single; 55 using dReal = System.Single;
56//#endif 56//#endif
57 57
58 public static class d 58 internal static class SafeNativeMethods
59 { 59 {
60 public static dReal Infinity = dReal.MaxValue; 60 internal static dReal Infinity = dReal.MaxValue;
61 public static int NTotalBodies = 0; 61 internal static int NTotalBodies = 0;
62 public static int NTotalGeoms = 0; 62 internal static int NTotalGeoms = 0;
63 63
64 public const uint CONTACTS_UNIMPORTANT = 0x80000000; 64 internal const uint CONTACTS_UNIMPORTANT = 0x80000000;
65 65
66 #region Flags and Enumerations 66 #region Flags and Enumerations
67 67
68 [Flags] 68 [Flags]
69 public enum AllocateODEDataFlags : uint 69 internal enum AllocateODEDataFlags : uint
70 { 70 {
71 BasicData = 0, 71 BasicData = 0,
72 CollisionData = 0x00000001, 72 CollisionData = 0x00000001,
@@ -74,13 +74,13 @@ namespace OpenSim.Region.PhysicsModule.ODE
74 } 74 }
75 75
76 [Flags] 76 [Flags]
77 public enum IniteODEFlags : uint 77 internal enum IniteODEFlags : uint
78 { 78 {
79 dInitFlagManualThreadCleanup = 0x00000001 79 dInitFlagManualThreadCleanup = 0x00000001
80 } 80 }
81 81
82 [Flags] 82 [Flags]
83 public enum ContactFlags : int 83 internal enum ContactFlags : int
84 { 84 {
85 Mu2 = 0x001, 85 Mu2 = 0x001,
86 FDir1 = 0x002, 86 FDir1 = 0x002,
@@ -98,7 +98,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
98 Approx1 = 0x3000 98 Approx1 = 0x3000
99 } 99 }
100 100
101 public enum GeomClassID : int 101 internal enum GeomClassID : int
102 { 102 {
103 SphereClass, 103 SphereClass,
104 BoxClass, 104 BoxClass,
@@ -122,7 +122,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
122 MaxUserClasses = 5 122 MaxUserClasses = 5
123 } 123 }
124 124
125 public enum JointType : int 125 internal enum JointType : int
126 { 126 {
127 None, 127 None,
128 Ball, 128 Ball,
@@ -138,7 +138,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
138 Plane2D 138 Plane2D
139 } 139 }
140 140
141 public enum JointParam : int 141 internal enum JointParam : int
142 { 142 {
143 LoStop, 143 LoStop,
144 HiStop, 144 HiStop,
@@ -175,7 +175,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
175 SuspensionCFM3 175 SuspensionCFM3
176 } 176 }
177 177
178 public enum dSweepAndPruneAxis : int 178 internal enum dSweepAndPruneAxis : int
179 { 179 {
180 XYZ = ((0)|(1<<2)|(2<<4)), 180 XYZ = ((0)|(1<<2)|(2<<4)),
181 XZY = ((0)|(2<<2)|(1<<4)), 181 XZY = ((0)|(2<<2)|(1<<4)),
@@ -190,126 +190,126 @@ namespace OpenSim.Region.PhysicsModule.ODE
190 #region Callbacks 190 #region Callbacks
191 191
192 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 192 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
193 public delegate int AABBTestFn(IntPtr o1, IntPtr o2, ref AABB aabb); 193 internal delegate int AABBTestFn(IntPtr o1, IntPtr o2, ref AABB aabb);
194 194
195 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 195 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
196 public delegate int ColliderFn(IntPtr o1, IntPtr o2, int flags, out ContactGeom contact, int skip); 196 internal delegate int ColliderFn(IntPtr o1, IntPtr o2, int flags, out ContactGeom contact, int skip);
197 197
198 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 198 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
199 public delegate void GetAABBFn(IntPtr geom, out AABB aabb); 199 internal delegate void GetAABBFn(IntPtr geom, out AABB aabb);
200 200
201 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 201 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
202 public delegate ColliderFn GetColliderFnFn(int num); 202 internal delegate ColliderFn GetColliderFnFn(int num);
203 203
204 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 204 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
205 public delegate void GeomDtorFn(IntPtr o); 205 internal delegate void GeomDtorFn(IntPtr o);
206 206
207 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 207 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
208 public delegate dReal HeightfieldGetHeight(IntPtr p_user_data, int x, int z); 208 internal delegate dReal HeightfieldGetHeight(IntPtr p_user_data, int x, int z);
209 209
210 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 210 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
211 public delegate dReal OSTerrainGetHeight(IntPtr p_user_data, int x, int z); 211 internal delegate dReal OSTerrainGetHeight(IntPtr p_user_data, int x, int z);
212 212
213 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 213 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
214 public delegate void NearCallback(IntPtr data, IntPtr geom1, IntPtr geom2); 214 internal delegate void NearCallback(IntPtr data, IntPtr geom1, IntPtr geom2);
215 215
216 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 216 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
217 public delegate int TriCallback(IntPtr trimesh, IntPtr refObject, int triangleIndex); 217 internal delegate int TriCallback(IntPtr trimesh, IntPtr refObject, int triangleIndex);
218 218
219 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 219 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
220 public delegate int TriArrayCallback(IntPtr trimesh, IntPtr refObject, int[] triangleIndex, int triCount); 220 internal delegate int TriArrayCallback(IntPtr trimesh, IntPtr refObject, int[] triangleIndex, int triCount);
221 221
222 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 222 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
223 public delegate int TriRayCallback(IntPtr trimesh, IntPtr ray, int triangleIndex, dReal u, dReal v); 223 internal delegate int TriRayCallback(IntPtr trimesh, IntPtr ray, int triangleIndex, dReal u, dReal v);
224 224
225 #endregion 225 #endregion
226 226
227 #region Structs 227 #region Structs
228 228
229 [StructLayout(LayoutKind.Sequential)] 229 [StructLayout(LayoutKind.Sequential)]
230 public struct AABB 230 internal struct AABB
231 { 231 {
232 public dReal MinX, MaxX; 232 internal dReal MinX, MaxX;
233 public dReal MinY, MaxY; 233 internal dReal MinY, MaxY;
234 public dReal MinZ, MaxZ; 234 internal dReal MinZ, MaxZ;
235 } 235 }
236 236
237 237
238 [StructLayout(LayoutKind.Sequential)] 238 [StructLayout(LayoutKind.Sequential)]
239 public struct Contact 239 internal struct Contact
240 { 240 {
241 public SurfaceParameters surface; 241 internal SurfaceParameters surface;
242 public ContactGeom geom; 242 internal ContactGeom geom;
243 public Vector3 fdir1; 243 internal Vector3 fdir1;
244 public static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(Contact)); 244 internal static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(Contact));
245 } 245 }
246 246
247 247
248 [StructLayout(LayoutKind.Sequential)] 248 [StructLayout(LayoutKind.Sequential)]
249 public struct ContactGeom 249 internal struct ContactGeom
250 { 250 {
251 251
252 public Vector3 pos; 252 internal Vector3 pos;
253 public Vector3 normal; 253 internal Vector3 normal;
254 public dReal depth; 254 internal dReal depth;
255 public IntPtr g1; 255 internal IntPtr g1;
256 public IntPtr g2; 256 internal IntPtr g2;
257 public int side1; 257 internal int side1;
258 public int side2; 258 internal int side2;
259 public static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(ContactGeom)); 259 internal static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(ContactGeom));
260 } 260 }
261 261
262 [StructLayout(LayoutKind.Sequential)] 262 [StructLayout(LayoutKind.Sequential)]
263 public struct GeomClass 263 internal struct GeomClass
264 { 264 {
265 public int bytes; 265 internal int bytes;
266 public GetColliderFnFn collider; 266 internal GetColliderFnFn collider;
267 public GetAABBFn aabb; 267 internal GetAABBFn aabb;
268 public AABBTestFn aabb_test; 268 internal AABBTestFn aabb_test;
269 public GeomDtorFn dtor; 269 internal GeomDtorFn dtor;
270 } 270 }
271 271
272 272
273 [StructLayout(LayoutKind.Sequential)] 273 [StructLayout(LayoutKind.Sequential)]
274 public struct JointFeedback 274 internal struct JointFeedback
275 { 275 {
276 public Vector3 f1; 276 internal Vector3 f1;
277 public Vector3 t1; 277 internal Vector3 t1;
278 public Vector3 f2; 278 internal Vector3 f2;
279 public Vector3 t2; 279 internal Vector3 t2;
280 } 280 }
281 281
282 282
283 [StructLayout(LayoutKind.Sequential)] 283 [StructLayout(LayoutKind.Sequential)]
284 public struct Mass 284 internal struct Mass
285 { 285 {
286 public dReal mass; 286 internal dReal mass;
287 public Vector4 c; 287 internal Vector4 c;
288 public Matrix3 I; 288 internal Matrix3 I;
289 } 289 }
290 290
291 291
292 [StructLayout(LayoutKind.Sequential)] 292 [StructLayout(LayoutKind.Sequential)]
293 public struct Matrix3 293 internal struct Matrix3
294 { 294 {
295 public Matrix3(dReal m00, dReal m10, dReal m20, dReal m01, dReal m11, dReal m21, dReal m02, dReal m12, dReal m22) 295 internal Matrix3(dReal m00, dReal m10, dReal m20, dReal m01, dReal m11, dReal m21, dReal m02, dReal m12, dReal m22)
296 { 296 {
297 M00 = m00; M10 = m10; M20 = m20; _m30 = 0.0f; 297 M00 = m00; M10 = m10; M20 = m20; _m30 = 0.0f;
298 M01 = m01; M11 = m11; M21 = m21; _m31 = 0.0f; 298 M01 = m01; M11 = m11; M21 = m21; _m31 = 0.0f;
299 M02 = m02; M12 = m12; M22 = m22; _m32 = 0.0f; 299 M02 = m02; M12 = m12; M22 = m22; _m32 = 0.0f;
300 } 300 }
301 public dReal M00, M10, M20; 301 internal dReal M00, M10, M20;
302 private dReal _m30; 302 private dReal _m30;
303 public dReal M01, M11, M21; 303 internal dReal M01, M11, M21;
304 private dReal _m31; 304 private dReal _m31;
305 public dReal M02, M12, M22; 305 internal dReal M02, M12, M22;
306 private dReal _m32; 306 private dReal _m32;
307 } 307 }
308 308
309 [StructLayout(LayoutKind.Sequential)] 309 [StructLayout(LayoutKind.Sequential)]
310 public struct Matrix4 310 internal struct Matrix4
311 { 311 {
312 public Matrix4(dReal m00, dReal m10, dReal m20, dReal m30, 312 internal Matrix4(dReal m00, dReal m10, dReal m20, dReal m30,
313 dReal m01, dReal m11, dReal m21, dReal m31, 313 dReal m01, dReal m11, dReal m21, dReal m31,
314 dReal m02, dReal m12, dReal m22, dReal m32, 314 dReal m02, dReal m12, dReal m22, dReal m32,
315 dReal m03, dReal m13, dReal m23, dReal m33) 315 dReal m03, dReal m13, dReal m23, dReal m33)
@@ -319,312 +319,312 @@ namespace OpenSim.Region.PhysicsModule.ODE
319 M02 = m02; M12 = m12; M22 = m22; M32 = m32; 319 M02 = m02; M12 = m12; M22 = m22; M32 = m32;
320 M03 = m03; M13 = m13; M23 = m23; M33 = m33; 320 M03 = m03; M13 = m13; M23 = m23; M33 = m33;
321 } 321 }
322 public dReal M00, M10, M20, M30; 322 internal dReal M00, M10, M20, M30;
323 public dReal M01, M11, M21, M31; 323 internal dReal M01, M11, M21, M31;
324 public dReal M02, M12, M22, M32; 324 internal dReal M02, M12, M22, M32;
325 public dReal M03, M13, M23, M33; 325 internal dReal M03, M13, M23, M33;
326 } 326 }
327 327
328 [StructLayout(LayoutKind.Sequential)] 328 [StructLayout(LayoutKind.Sequential)]
329 public struct Quaternion 329 internal struct Quaternion
330 { 330 {
331 public dReal W, X, Y, Z; 331 internal dReal W, X, Y, Z;
332 } 332 }
333 333
334 334
335 [StructLayout(LayoutKind.Sequential)] 335 [StructLayout(LayoutKind.Sequential)]
336 public struct SurfaceParameters 336 internal struct SurfaceParameters
337 { 337 {
338 public ContactFlags mode; 338 internal ContactFlags mode;
339 public dReal mu; 339 internal dReal mu;
340 public dReal mu2; 340 internal dReal mu2;
341 public dReal bounce; 341 internal dReal bounce;
342 public dReal bounce_vel; 342 internal dReal bounce_vel;
343 public dReal soft_erp; 343 internal dReal soft_erp;
344 public dReal soft_cfm; 344 internal dReal soft_cfm;
345 public dReal motion1; 345 internal dReal motion1;
346 public dReal motion2; 346 internal dReal motion2;
347 public dReal motionN; 347 internal dReal motionN;
348 public dReal slip1; 348 internal dReal slip1;
349 public dReal slip2; 349 internal dReal slip2;
350 } 350 }
351 351
352 352
353 [StructLayout(LayoutKind.Sequential)] 353 [StructLayout(LayoutKind.Sequential)]
354 public struct Vector3 354 internal struct Vector3
355 { 355 {
356 public Vector3(dReal x, dReal y, dReal z) 356 internal Vector3(dReal x, dReal y, dReal z)
357 { 357 {
358 X = x; Y = y; Z = z; _w = 0.0f; 358 X = x; Y = y; Z = z; _w = 0.0f;
359 } 359 }
360 public dReal X, Y, Z; 360 internal dReal X, Y, Z;
361 private dReal _w; 361 private dReal _w;
362 } 362 }
363 363
364 364
365 [StructLayout(LayoutKind.Sequential)] 365 [StructLayout(LayoutKind.Sequential)]
366 public struct Vector4 366 internal struct Vector4
367 { 367 {
368 public Vector4(dReal x, dReal y, dReal z, dReal w) 368 internal Vector4(dReal x, dReal y, dReal z, dReal w)
369 { 369 {
370 X = x; Y = y; Z = z; W = w; 370 X = x; Y = y; Z = z; W = w;
371 } 371 }
372 public dReal X, Y, Z, W; 372 internal dReal X, Y, Z, W;
373 } 373 }
374 374
375 #endregion 375 #endregion
376 376
377 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAllocateODEDataForThread"), SuppressUnmanagedCodeSecurity] 377 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAllocateODEDataForThread"), SuppressUnmanagedCodeSecurity]
378 public static extern int AllocateODEDataForThread(uint ODEInitFlags); 378 internal static extern int AllocateODEDataForThread(uint ODEInitFlags);
379 379
380 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnected"), SuppressUnmanagedCodeSecurity] 380 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnected"), SuppressUnmanagedCodeSecurity]
381 public static extern bool AreConnected(IntPtr b1, IntPtr b2); 381 internal static extern bool AreConnected(IntPtr b1, IntPtr b2);
382 382
383 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnectedExcluding"), SuppressUnmanagedCodeSecurity] 383 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnectedExcluding"), SuppressUnmanagedCodeSecurity]
384 public static extern bool AreConnectedExcluding(IntPtr b1, IntPtr b2, JointType joint_type); 384 internal static extern bool AreConnectedExcluding(IntPtr b1, IntPtr b2, JointType joint_type);
385 385
386 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForce"), SuppressUnmanagedCodeSecurity] 386 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForce"), SuppressUnmanagedCodeSecurity]
387 public static extern void BodyAddForce(IntPtr body, dReal fx, dReal fy, dReal fz); 387 internal static extern void BodyAddForce(IntPtr body, dReal fx, dReal fy, dReal fz);
388 388
389 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtPos"), SuppressUnmanagedCodeSecurity] 389 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtPos"), SuppressUnmanagedCodeSecurity]
390 public static extern void BodyAddForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 390 internal static extern void BodyAddForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
391 391
392 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtRelPos"), SuppressUnmanagedCodeSecurity] 392 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtRelPos"), SuppressUnmanagedCodeSecurity]
393 public static extern void BodyAddForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 393 internal static extern void BodyAddForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
394 394
395 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForce"), SuppressUnmanagedCodeSecurity] 395 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForce"), SuppressUnmanagedCodeSecurity]
396 public static extern void BodyAddRelForce(IntPtr body, dReal fx, dReal fy, dReal fz); 396 internal static extern void BodyAddRelForce(IntPtr body, dReal fx, dReal fy, dReal fz);
397 397
398 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtPos"), SuppressUnmanagedCodeSecurity] 398 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtPos"), SuppressUnmanagedCodeSecurity]
399 public static extern void BodyAddRelForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 399 internal static extern void BodyAddRelForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
400 400
401 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtRelPos"), SuppressUnmanagedCodeSecurity] 401 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtRelPos"), SuppressUnmanagedCodeSecurity]
402 public static extern void BodyAddRelForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 402 internal static extern void BodyAddRelForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
403 403
404 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelTorque"), SuppressUnmanagedCodeSecurity] 404 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelTorque"), SuppressUnmanagedCodeSecurity]
405 public static extern void BodyAddRelTorque(IntPtr body, dReal fx, dReal fy, dReal fz); 405 internal static extern void BodyAddRelTorque(IntPtr body, dReal fx, dReal fy, dReal fz);
406 406
407 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddTorque"), SuppressUnmanagedCodeSecurity] 407 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddTorque"), SuppressUnmanagedCodeSecurity]
408 public static extern void BodyAddTorque(IntPtr body, dReal fx, dReal fy, dReal fz); 408 internal static extern void BodyAddTorque(IntPtr body, dReal fx, dReal fy, dReal fz);
409 409
410 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity] 410 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity]
411 public static extern void BodyCopyPosition(IntPtr body, out Vector3 pos); 411 internal static extern void BodyCopyPosition(IntPtr body, out Vector3 pos);
412 412
413 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity] 413 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity]
414 public static extern void BodyCopyPosition(IntPtr body, out dReal X); 414 internal static extern void BodyCopyPosition(IntPtr body, out dReal X);
415 415
416 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity] 416 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity]
417 public static extern void BodyCopyQuaternion(IntPtr body, out Quaternion quat); 417 internal static extern void BodyCopyQuaternion(IntPtr body, out Quaternion quat);
418 418
419 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity] 419 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity]
420 public static extern void BodyCopyQuaternion(IntPtr body, out dReal X); 420 internal static extern void BodyCopyQuaternion(IntPtr body, out dReal X);
421 421
422 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity] 422 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity]
423 public static extern void BodyCopyRotation(IntPtr body, out Matrix3 R); 423 internal static extern void BodyCopyRotation(IntPtr body, out Matrix3 R);
424 424
425 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity] 425 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity]
426 public static extern void BodyCopyRotation(IntPtr body, out dReal M00); 426 internal static extern void BodyCopyRotation(IntPtr body, out dReal M00);
427 427
428 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCreate"), SuppressUnmanagedCodeSecurity] 428 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCreate"), SuppressUnmanagedCodeSecurity]
429 public static extern IntPtr BodyiCreate(IntPtr world); 429 internal static extern IntPtr BodyiCreate(IntPtr world);
430 public static IntPtr BodyCreate(IntPtr world) 430 internal static IntPtr BodyCreate(IntPtr world)
431 { 431 {
432 NTotalBodies++; 432 NTotalBodies++;
433 return BodyiCreate(world); 433 return BodyiCreate(world);
434 } 434 }
435 435
436 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDestroy"), SuppressUnmanagedCodeSecurity] 436 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDestroy"), SuppressUnmanagedCodeSecurity]
437 public static extern void BodyiDestroy(IntPtr body); 437 internal static extern void BodyiDestroy(IntPtr body);
438 public static void BodyDestroy(IntPtr body) 438 internal static void BodyDestroy(IntPtr body)
439 { 439 {
440 NTotalBodies--; 440 NTotalBodies--;
441 BodyiDestroy(body); 441 BodyiDestroy(body);
442 } 442 }
443 443
444 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDisable"), SuppressUnmanagedCodeSecurity] 444 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDisable"), SuppressUnmanagedCodeSecurity]
445 public static extern void BodyDisable(IntPtr body); 445 internal static extern void BodyDisable(IntPtr body);
446 446
447 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyEnable"), SuppressUnmanagedCodeSecurity] 447 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyEnable"), SuppressUnmanagedCodeSecurity]
448 public static extern void BodyEnable(IntPtr body); 448 internal static extern void BodyEnable(IntPtr body);
449 449
450 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 450 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
451 public static extern dReal BodyGetAutoDisableAngularThreshold(IntPtr body); 451 internal static extern dReal BodyGetAutoDisableAngularThreshold(IntPtr body);
452 452
453 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 453 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
454 public static extern bool BodyGetAutoDisableFlag(IntPtr body); 454 internal static extern bool BodyGetAutoDisableFlag(IntPtr body);
455 455
456 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity] 456 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity]
457 public static extern void BodyGetAutoDisableDefaults(IntPtr body); 457 internal static extern void BodyGetAutoDisableDefaults(IntPtr body);
458 458
459 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 459 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
460 public static extern dReal BodyGetAutoDisableLinearThreshold(IntPtr body); 460 internal static extern dReal BodyGetAutoDisableLinearThreshold(IntPtr body);
461 461
462 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 462 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
463 public static extern int BodyGetAutoDisableSteps(IntPtr body); 463 internal static extern int BodyGetAutoDisableSteps(IntPtr body);
464 464
465 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 465 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
466 public static extern dReal BodyGetAutoDisableTime(IntPtr body); 466 internal static extern dReal BodyGetAutoDisableTime(IntPtr body);
467 467
468 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularVel"), SuppressUnmanagedCodeSecurity] 468 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularVel"), SuppressUnmanagedCodeSecurity]
469 public extern unsafe static Vector3* BodyGetAngularVelUnsafe(IntPtr body); 469 internal extern unsafe static Vector3* BodyGetAngularVelUnsafe(IntPtr body);
470 public static Vector3 BodyGetAngularVel(IntPtr body) 470 internal static Vector3 BodyGetAngularVel(IntPtr body)
471 { 471 {
472 unsafe { return *(BodyGetAngularVelUnsafe(body)); } 472 unsafe { return *(BodyGetAngularVelUnsafe(body)); }
473 } 473 }
474 474
475 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetData"), SuppressUnmanagedCodeSecurity] 475 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetData"), SuppressUnmanagedCodeSecurity]
476 public static extern IntPtr BodyGetData(IntPtr body); 476 internal static extern IntPtr BodyGetData(IntPtr body);
477 477
478 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationMode"), SuppressUnmanagedCodeSecurity] 478 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationMode"), SuppressUnmanagedCodeSecurity]
479 public static extern int BodyGetFiniteRotationMode(IntPtr body); 479 internal static extern int BodyGetFiniteRotationMode(IntPtr body);
480 480
481 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity] 481 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity]
482 public static extern void BodyGetFiniteRotationAxis(IntPtr body, out Vector3 result); 482 internal static extern void BodyGetFiniteRotationAxis(IntPtr body, out Vector3 result);
483 483
484 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetForce"), SuppressUnmanagedCodeSecurity] 484 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetForce"), SuppressUnmanagedCodeSecurity]
485 public extern unsafe static Vector3* BodyGetForceUnsafe(IntPtr body); 485 internal extern unsafe static Vector3* BodyGetForceUnsafe(IntPtr body);
486 public static Vector3 BodyGetForce(IntPtr body) 486 internal static Vector3 BodyGetForce(IntPtr body)
487 { 487 {
488 unsafe { return *(BodyGetForceUnsafe(body)); } 488 unsafe { return *(BodyGetForceUnsafe(body)); }
489 } 489 }
490 490
491 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGravityMode"), SuppressUnmanagedCodeSecurity] 491 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGravityMode"), SuppressUnmanagedCodeSecurity]
492 public static extern bool BodyGetGravityMode(IntPtr body); 492 internal static extern bool BodyGetGravityMode(IntPtr body);
493 493
494 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGyroscopicMode"), SuppressUnmanagedCodeSecurity] 494 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGyroscopicMode"), SuppressUnmanagedCodeSecurity]
495 public static extern int BodyGetGyroscopicMode(IntPtr body); 495 internal static extern int BodyGetGyroscopicMode(IntPtr body);
496 496
497 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetJoint"), SuppressUnmanagedCodeSecurity] 497 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetJoint"), SuppressUnmanagedCodeSecurity]
498 public static extern IntPtr BodyGetJoint(IntPtr body, int index); 498 internal static extern IntPtr BodyGetJoint(IntPtr body, int index);
499 499
500 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearVel"), SuppressUnmanagedCodeSecurity] 500 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearVel"), SuppressUnmanagedCodeSecurity]
501 public extern unsafe static Vector3* BodyGetLinearVelUnsafe(IntPtr body); 501 internal extern unsafe static Vector3* BodyGetLinearVelUnsafe(IntPtr body);
502 public static Vector3 BodyGetLinearVel(IntPtr body) 502 internal static Vector3 BodyGetLinearVel(IntPtr body)
503 { 503 {
504 unsafe { return *(BodyGetLinearVelUnsafe(body)); } 504 unsafe { return *(BodyGetLinearVelUnsafe(body)); }
505 } 505 }
506 506
507 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetMass"), SuppressUnmanagedCodeSecurity] 507 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetMass"), SuppressUnmanagedCodeSecurity]
508 public static extern void BodyGetMass(IntPtr body, out Mass mass); 508 internal static extern void BodyGetMass(IntPtr body, out Mass mass);
509 509
510 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNumJoints"), SuppressUnmanagedCodeSecurity] 510 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNumJoints"), SuppressUnmanagedCodeSecurity]
511 public static extern int BodyGetNumJoints(IntPtr body); 511 internal static extern int BodyGetNumJoints(IntPtr body);
512 512
513 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPointVel"), SuppressUnmanagedCodeSecurity] 513 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPointVel"), SuppressUnmanagedCodeSecurity]
514 public static extern void BodyGetPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 514 internal static extern void BodyGetPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
515 515
516 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosition"), SuppressUnmanagedCodeSecurity] 516 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosition"), SuppressUnmanagedCodeSecurity]
517 public extern unsafe static Vector3* BodyGetPositionUnsafe(IntPtr body); 517 internal extern unsafe static Vector3* BodyGetPositionUnsafe(IntPtr body);
518 public static Vector3 BodyGetPosition(IntPtr body) 518 internal static Vector3 BodyGetPosition(IntPtr body)
519 { 519 {
520 unsafe { return *(BodyGetPositionUnsafe(body)); } 520 unsafe { return *(BodyGetPositionUnsafe(body)); }
521 } 521 }
522 522
523 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosRelPoint"), SuppressUnmanagedCodeSecurity] 523 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosRelPoint"), SuppressUnmanagedCodeSecurity]
524 public static extern void BodyGetPosRelPoint(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 524 internal static extern void BodyGetPosRelPoint(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
525 525
526 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetQuaternion"), SuppressUnmanagedCodeSecurity] 526 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetQuaternion"), SuppressUnmanagedCodeSecurity]
527 public extern unsafe static Quaternion* BodyGetQuaternionUnsafe(IntPtr body); 527 internal extern unsafe static Quaternion* BodyGetQuaternionUnsafe(IntPtr body);
528 public static Quaternion BodyGetQuaternion(IntPtr body) 528 internal static Quaternion BodyGetQuaternion(IntPtr body)
529 { 529 {
530 unsafe { return *(BodyGetQuaternionUnsafe(body)); } 530 unsafe { return *(BodyGetQuaternionUnsafe(body)); }
531 } 531 }
532 532
533 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointPos"), SuppressUnmanagedCodeSecurity] 533 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointPos"), SuppressUnmanagedCodeSecurity]
534 public static extern void BodyGetRelPointPos(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 534 internal static extern void BodyGetRelPointPos(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
535 535
536 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointVel"), SuppressUnmanagedCodeSecurity] 536 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointVel"), SuppressUnmanagedCodeSecurity]
537 public static extern void BodyGetRelPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 537 internal static extern void BodyGetRelPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
538 538
539 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRotation"), SuppressUnmanagedCodeSecurity] 539 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRotation"), SuppressUnmanagedCodeSecurity]
540 public extern unsafe static Matrix3* BodyGetRotationUnsafe(IntPtr body); 540 internal extern unsafe static Matrix3* BodyGetRotationUnsafe(IntPtr body);
541 public static Matrix3 BodyGetRotation(IntPtr body) 541 internal static Matrix3 BodyGetRotation(IntPtr body)
542 { 542 {
543 unsafe { return *(BodyGetRotationUnsafe(body)); } 543 unsafe { return *(BodyGetRotationUnsafe(body)); }
544 } 544 }
545 545
546 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetTorque"), SuppressUnmanagedCodeSecurity] 546 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetTorque"), SuppressUnmanagedCodeSecurity]
547 public extern unsafe static Vector3* BodyGetTorqueUnsafe(IntPtr body); 547 internal extern unsafe static Vector3* BodyGetTorqueUnsafe(IntPtr body);
548 public static Vector3 BodyGetTorque(IntPtr body) 548 internal static Vector3 BodyGetTorque(IntPtr body)
549 { 549 {
550 unsafe { return *(BodyGetTorqueUnsafe(body)); } 550 unsafe { return *(BodyGetTorqueUnsafe(body)); }
551 } 551 }
552 552
553 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetWorld"), SuppressUnmanagedCodeSecurity] 553 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetWorld"), SuppressUnmanagedCodeSecurity]
554 public static extern IntPtr BodyGetWorld(IntPtr body); 554 internal static extern IntPtr BodyGetWorld(IntPtr body);
555 555
556 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFirstGeom"), SuppressUnmanagedCodeSecurity] 556 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFirstGeom"), SuppressUnmanagedCodeSecurity]
557 public static extern IntPtr BodyGetFirstGeom(IntPtr body); 557 internal static extern IntPtr BodyGetFirstGeom(IntPtr body);
558 558
559 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNextGeom"), SuppressUnmanagedCodeSecurity] 559 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNextGeom"), SuppressUnmanagedCodeSecurity]
560 public static extern IntPtr dBodyGetNextGeom(IntPtr Geom); 560 internal static extern IntPtr dBodyGetNextGeom(IntPtr Geom);
561 561
562 562
563 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyIsEnabled"), SuppressUnmanagedCodeSecurity] 563 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyIsEnabled"), SuppressUnmanagedCodeSecurity]
564 public static extern bool BodyIsEnabled(IntPtr body); 564 internal static extern bool BodyIsEnabled(IntPtr body);
565 565
566 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularVel"), SuppressUnmanagedCodeSecurity] 566 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularVel"), SuppressUnmanagedCodeSecurity]
567 public static extern void BodySetAngularVel(IntPtr body, dReal x, dReal y, dReal z); 567 internal static extern void BodySetAngularVel(IntPtr body, dReal x, dReal y, dReal z);
568 568
569 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 569 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
570 public static extern void BodySetAutoDisableAngularThreshold(IntPtr body, dReal angular_threshold); 570 internal static extern void BodySetAutoDisableAngularThreshold(IntPtr body, dReal angular_threshold);
571 571
572 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity] 572 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity]
573 public static extern void BodySetAutoDisableDefaults(IntPtr body); 573 internal static extern void BodySetAutoDisableDefaults(IntPtr body);
574 574
575 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 575 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
576 public static extern void BodySetAutoDisableFlag(IntPtr body, bool do_auto_disable); 576 internal static extern void BodySetAutoDisableFlag(IntPtr body, bool do_auto_disable);
577 577
578 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 578 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
579 public static extern void BodySetAutoDisableLinearThreshold(IntPtr body, dReal linear_threshold); 579 internal static extern void BodySetAutoDisableLinearThreshold(IntPtr body, dReal linear_threshold);
580 580
581 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 581 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
582 public static extern void BodySetAutoDisableSteps(IntPtr body, int steps); 582 internal static extern void BodySetAutoDisableSteps(IntPtr body, int steps);
583 583
584 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 584 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
585 public static extern void BodySetAutoDisableTime(IntPtr body, dReal time); 585 internal static extern void BodySetAutoDisableTime(IntPtr body, dReal time);
586 586
587 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetData"), SuppressUnmanagedCodeSecurity] 587 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetData"), SuppressUnmanagedCodeSecurity]
588 public static extern void BodySetData(IntPtr body, IntPtr data); 588 internal static extern void BodySetData(IntPtr body, IntPtr data);
589 589
590 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationMode"), SuppressUnmanagedCodeSecurity] 590 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationMode"), SuppressUnmanagedCodeSecurity]
591 public static extern void BodySetFiniteRotationMode(IntPtr body, int mode); 591 internal static extern void BodySetFiniteRotationMode(IntPtr body, int mode);
592 592
593 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity] 593 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity]
594 public static extern void BodySetFiniteRotationAxis(IntPtr body, dReal x, dReal y, dReal z); 594 internal static extern void BodySetFiniteRotationAxis(IntPtr body, dReal x, dReal y, dReal z);
595 595
596 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDamping"), SuppressUnmanagedCodeSecurity] 596 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDamping"), SuppressUnmanagedCodeSecurity]
597 public static extern void BodySetLinearDamping(IntPtr body, dReal scale); 597 internal static extern void BodySetLinearDamping(IntPtr body, dReal scale);
598 598
599 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity] 599 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity]
600 public static extern void BodySetAngularDamping(IntPtr body, dReal scale); 600 internal static extern void BodySetAngularDamping(IntPtr body, dReal scale);
601 601
602 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDamping"), SuppressUnmanagedCodeSecurity] 602 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDamping"), SuppressUnmanagedCodeSecurity]
603 public static extern dReal BodyGetLinearDamping(IntPtr body); 603 internal static extern dReal BodyGetLinearDamping(IntPtr body);
604 604
605 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDamping"), SuppressUnmanagedCodeSecurity] 605 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDamping"), SuppressUnmanagedCodeSecurity]
606 public static extern dReal BodyGetAngularDamping(IntPtr body); 606 internal static extern dReal BodyGetAngularDamping(IntPtr body);
607 607
608 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity] 608 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity]
609 public static extern void BodySetDamping(IntPtr body, dReal linear_scale, dReal angular_scale); 609 internal static extern void BodySetDamping(IntPtr body, dReal linear_scale, dReal angular_scale);
610 610
611 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 611 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
612 public static extern void BodySetAngularDampingThreshold(IntPtr body, dReal threshold); 612 internal static extern void BodySetAngularDampingThreshold(IntPtr body, dReal threshold);
613 613
614 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 614 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
615 public static extern void BodySetLinearDampingThreshold(IntPtr body, dReal threshold); 615 internal static extern void BodySetLinearDampingThreshold(IntPtr body, dReal threshold);
616 616
617 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 617 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
618 public static extern dReal BodyGetLinearDampingThreshold(IntPtr body); 618 internal static extern dReal BodyGetLinearDampingThreshold(IntPtr body);
619 619
620 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 620 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
621 public static extern dReal BodyGetAngularDampingThreshold(IntPtr body); 621 internal static extern dReal BodyGetAngularDampingThreshold(IntPtr body);
622 622
623 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetForce"), SuppressUnmanagedCodeSecurity] 623 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetForce"), SuppressUnmanagedCodeSecurity]
624 public static extern void BodySetForce(IntPtr body, dReal x, dReal y, dReal z); 624 internal static extern void BodySetForce(IntPtr body, dReal x, dReal y, dReal z);
625 625
626 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGravityMode"), SuppressUnmanagedCodeSecurity] 626 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGravityMode"), SuppressUnmanagedCodeSecurity]
627 public static extern void BodySetGravityMode(IntPtr body, bool mode); 627 internal static extern void BodySetGravityMode(IntPtr body, bool mode);
628 628
629 /// <summary> 629 /// <summary>
630 /// Sets the Gyroscopic term status on the body specified. 630 /// Sets the Gyroscopic term status on the body specified.
@@ -632,112 +632,112 @@ namespace OpenSim.Region.PhysicsModule.ODE
632 /// <param name="body">Pointer to body</param> 632 /// <param name="body">Pointer to body</param>
633 /// <param name="enabled">NonZero enabled, Zero disabled</param> 633 /// <param name="enabled">NonZero enabled, Zero disabled</param>
634 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGyroscopicMode"), SuppressUnmanagedCodeSecurity] 634 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGyroscopicMode"), SuppressUnmanagedCodeSecurity]
635 public static extern void dBodySetGyroscopicMode(IntPtr body, int enabled); 635 internal static extern void dBodySetGyroscopicMode(IntPtr body, int enabled);
636 636
637 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearVel"), SuppressUnmanagedCodeSecurity] 637 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearVel"), SuppressUnmanagedCodeSecurity]
638 public static extern void BodySetLinearVel(IntPtr body, dReal x, dReal y, dReal z); 638 internal static extern void BodySetLinearVel(IntPtr body, dReal x, dReal y, dReal z);
639 639
640 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetMass"), SuppressUnmanagedCodeSecurity] 640 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetMass"), SuppressUnmanagedCodeSecurity]
641 public static extern void BodySetMass(IntPtr body, ref Mass mass); 641 internal static extern void BodySetMass(IntPtr body, ref Mass mass);
642 642
643 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetPosition"), SuppressUnmanagedCodeSecurity] 643 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetPosition"), SuppressUnmanagedCodeSecurity]
644 public static extern void BodySetPosition(IntPtr body, dReal x, dReal y, dReal z); 644 internal static extern void BodySetPosition(IntPtr body, dReal x, dReal y, dReal z);
645 645
646 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity] 646 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity]
647 public static extern void BodySetQuaternion(IntPtr body, ref Quaternion q); 647 internal static extern void BodySetQuaternion(IntPtr body, ref Quaternion q);
648 648
649 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity] 649 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity]
650 public static extern void BodySetQuaternion(IntPtr body, ref dReal w); 650 internal static extern void BodySetQuaternion(IntPtr body, ref dReal w);
651 651
652 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity] 652 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity]
653 public static extern void BodySetRotation(IntPtr body, ref Matrix3 R); 653 internal static extern void BodySetRotation(IntPtr body, ref Matrix3 R);
654 654
655 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity] 655 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity]
656 public static extern void BodySetRotation(IntPtr body, ref dReal M00); 656 internal static extern void BodySetRotation(IntPtr body, ref dReal M00);
657 657
658 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetTorque"), SuppressUnmanagedCodeSecurity] 658 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetTorque"), SuppressUnmanagedCodeSecurity]
659 public static extern void BodySetTorque(IntPtr body, dReal x, dReal y, dReal z); 659 internal static extern void BodySetTorque(IntPtr body, dReal x, dReal y, dReal z);
660 660
661 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorFromWorld"), SuppressUnmanagedCodeSecurity] 661 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorFromWorld"), SuppressUnmanagedCodeSecurity]
662 public static extern void BodyVectorFromWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 662 internal static extern void BodyVectorFromWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
663 663
664 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorToWorld"), SuppressUnmanagedCodeSecurity] 664 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorToWorld"), SuppressUnmanagedCodeSecurity]
665 public static extern void BodyVectorToWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 665 internal static extern void BodyVectorToWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
666 666
667 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxBox"), SuppressUnmanagedCodeSecurity] 667 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxBox"), SuppressUnmanagedCodeSecurity]
668 public static extern void BoxBox(ref Vector3 p1, ref Matrix3 R1, 668 internal static extern void BoxBox(ref Vector3 p1, ref Matrix3 R1,
669 ref Vector3 side1, ref Vector3 p2, 669 ref Vector3 side1, ref Vector3 p2,
670 ref Matrix3 R2, ref Vector3 side2, 670 ref Matrix3 R2, ref Vector3 side2,
671 ref Vector3 normal, out dReal depth, out int return_code, 671 ref Vector3 normal, out dReal depth, out int return_code,
672 int maxc, out ContactGeom contact, int skip); 672 int maxc, out ContactGeom contact, int skip);
673 673
674 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxTouchesBox"), SuppressUnmanagedCodeSecurity] 674 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxTouchesBox"), SuppressUnmanagedCodeSecurity]
675 public static extern void BoxTouchesBox(ref Vector3 _p1, ref Matrix3 R1, 675 internal static extern void BoxTouchesBox(ref Vector3 _p1, ref Matrix3 R1,
676 ref Vector3 side1, ref Vector3 _p2, 676 ref Vector3 side1, ref Vector3 _p2,
677 ref Matrix3 R2, ref Vector3 side2); 677 ref Matrix3 R2, ref Vector3 side2);
678 678
679 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCleanupODEAllDataForThread"), SuppressUnmanagedCodeSecurity] 679 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCleanupODEAllDataForThread"), SuppressUnmanagedCodeSecurity]
680 public static extern void CleanupODEAllDataForThread(); 680 internal static extern void CleanupODEAllDataForThread();
681 681
682 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dClosestLineSegmentPoints"), SuppressUnmanagedCodeSecurity] 682 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dClosestLineSegmentPoints"), SuppressUnmanagedCodeSecurity]
683 public static extern void ClosestLineSegmentPoints(ref Vector3 a1, ref Vector3 a2, 683 internal static extern void ClosestLineSegmentPoints(ref Vector3 a1, ref Vector3 a2,
684 ref Vector3 b1, ref Vector3 b2, 684 ref Vector3 b1, ref Vector3 b2,
685 ref Vector3 cp1, ref Vector3 cp2); 685 ref Vector3 cp1, ref Vector3 cp2);
686 686
687 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCloseODE"), SuppressUnmanagedCodeSecurity] 687 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCloseODE"), SuppressUnmanagedCodeSecurity]
688 public static extern void CloseODE(); 688 internal static extern void CloseODE();
689 689
690 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity] 690 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity]
691 public static extern int Collide(IntPtr o1, IntPtr o2, int flags, [In, Out] ContactGeom[] contact, int skip); 691 internal static extern int Collide(IntPtr o1, IntPtr o2, int flags, [In, Out] ContactGeom[] contact, int skip);
692 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity] 692 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity]
693 public static extern int CollidePtr(IntPtr o1, IntPtr o2, int flags, IntPtr contactgeomarray, int skip); 693 internal static extern int CollidePtr(IntPtr o1, IntPtr o2, int flags, IntPtr contactgeomarray, int skip);
694 694
695 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dConnectingJoint"), SuppressUnmanagedCodeSecurity] 695 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dConnectingJoint"), SuppressUnmanagedCodeSecurity]
696 public static extern IntPtr ConnectingJoint(IntPtr j1, IntPtr j2); 696 internal static extern IntPtr ConnectingJoint(IntPtr j1, IntPtr j2);
697 697
698 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateBox"), SuppressUnmanagedCodeSecurity] 698 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateBox"), SuppressUnmanagedCodeSecurity]
699 public static extern IntPtr CreateiBox(IntPtr space, dReal lx, dReal ly, dReal lz); 699 internal static extern IntPtr CreateiBox(IntPtr space, dReal lx, dReal ly, dReal lz);
700 public static IntPtr CreateBox(IntPtr space, dReal lx, dReal ly, dReal lz) 700 internal static IntPtr CreateBox(IntPtr space, dReal lx, dReal ly, dReal lz)
701 { 701 {
702 NTotalGeoms++; 702 NTotalGeoms++;
703 return CreateiBox(space, lx, ly, lz); 703 return CreateiBox(space, lx, ly, lz);
704 } 704 }
705 705
706 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCapsule"), SuppressUnmanagedCodeSecurity] 706 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCapsule"), SuppressUnmanagedCodeSecurity]
707 public static extern IntPtr CreateiCapsule(IntPtr space, dReal radius, dReal length); 707 internal static extern IntPtr CreateiCapsule(IntPtr space, dReal radius, dReal length);
708 public static IntPtr CreateCapsule(IntPtr space, dReal radius, dReal length) 708 internal static IntPtr CreateCapsule(IntPtr space, dReal radius, dReal length)
709 { 709 {
710 NTotalGeoms++; 710 NTotalGeoms++;
711 return CreateiCapsule(space, radius, length); 711 return CreateiCapsule(space, radius, length);
712 } 712 }
713 713
714 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateConvex"), SuppressUnmanagedCodeSecurity] 714 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateConvex"), SuppressUnmanagedCodeSecurity]
715 public static extern IntPtr CreateiConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons); 715 internal static extern IntPtr CreateiConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons);
716 public static IntPtr CreateConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons) 716 internal static IntPtr CreateConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons)
717 { 717 {
718 NTotalGeoms++; 718 NTotalGeoms++;
719 return CreateiConvex(space, planes, planeCount, points, pointCount, polygons); 719 return CreateiConvex(space, planes, planeCount, points, pointCount, polygons);
720 } 720 }
721 721
722 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCylinder"), SuppressUnmanagedCodeSecurity] 722 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCylinder"), SuppressUnmanagedCodeSecurity]
723 public static extern IntPtr CreateiCylinder(IntPtr space, dReal radius, dReal length); 723 internal static extern IntPtr CreateiCylinder(IntPtr space, dReal radius, dReal length);
724 public static IntPtr CreateCylinder(IntPtr space, dReal radius, dReal length) 724 internal static IntPtr CreateCylinder(IntPtr space, dReal radius, dReal length)
725 { 725 {
726 NTotalGeoms++; 726 NTotalGeoms++;
727 return CreateiCylinder(space, radius, length); 727 return CreateiCylinder(space, radius, length);
728 } 728 }
729 729
730 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateHeightfield"), SuppressUnmanagedCodeSecurity] 730 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateHeightfield"), SuppressUnmanagedCodeSecurity]
731 public static extern IntPtr CreateiHeightfield(IntPtr space, IntPtr data, int bPlaceable); 731 internal static extern IntPtr CreateiHeightfield(IntPtr space, IntPtr data, int bPlaceable);
732 public static IntPtr CreateHeightfield(IntPtr space, IntPtr data, int bPlaceable) 732 internal static IntPtr CreateHeightfield(IntPtr space, IntPtr data, int bPlaceable)
733 { 733 {
734 NTotalGeoms++; 734 NTotalGeoms++;
735 return CreateiHeightfield(space, data, bPlaceable); 735 return CreateiHeightfield(space, data, bPlaceable);
736 } 736 }
737 737
738 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateOSTerrain"), SuppressUnmanagedCodeSecurity] 738 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateOSTerrain"), SuppressUnmanagedCodeSecurity]
739 public static extern IntPtr CreateiOSTerrain(IntPtr space, IntPtr data, int bPlaceable); 739 internal static extern IntPtr CreateiOSTerrain(IntPtr space, IntPtr data, int bPlaceable);
740 public static IntPtr CreateOSTerrain(IntPtr space, IntPtr data, int bPlaceable) 740 internal static IntPtr CreateOSTerrain(IntPtr space, IntPtr data, int bPlaceable)
741 { 741 {
742 NTotalGeoms++; 742 NTotalGeoms++;
743 return CreateiOSTerrain(space, data, bPlaceable); 743 return CreateiOSTerrain(space, data, bPlaceable);
@@ -748,127 +748,127 @@ namespace OpenSim.Region.PhysicsModule.ODE
748 748
749 749
750 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeom"), SuppressUnmanagedCodeSecurity] 750 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeom"), SuppressUnmanagedCodeSecurity]
751 public static extern IntPtr CreateiGeom(int classnum); 751 internal static extern IntPtr CreateiGeom(int classnum);
752 public static IntPtr CreateGeom(int classnum) 752 internal static IntPtr CreateGeom(int classnum)
753 { 753 {
754 NTotalGeoms++; 754 NTotalGeoms++;
755 return CreateiGeom(classnum); 755 return CreateiGeom(classnum);
756 } 756 }
757 757
758 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomClass"), SuppressUnmanagedCodeSecurity] 758 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomClass"), SuppressUnmanagedCodeSecurity]
759 public static extern int CreateGeomClass(ref GeomClass classptr); 759 internal static extern int CreateGeomClass(ref GeomClass classptr);
760 760
761 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomTransform"), SuppressUnmanagedCodeSecurity] 761 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomTransform"), SuppressUnmanagedCodeSecurity]
762 public static extern IntPtr CreateGeomTransform(IntPtr space); 762 internal static extern IntPtr CreateGeomTransform(IntPtr space);
763 763
764 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreatePlane"), SuppressUnmanagedCodeSecurity] 764 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreatePlane"), SuppressUnmanagedCodeSecurity]
765 public static extern IntPtr CreateiPlane(IntPtr space, dReal a, dReal b, dReal c, dReal d); 765 internal static extern IntPtr CreateiPlane(IntPtr space, dReal a, dReal b, dReal c, dReal d);
766 public static IntPtr CreatePlane(IntPtr space, dReal a, dReal b, dReal c, dReal d) 766 internal static IntPtr CreatePlane(IntPtr space, dReal a, dReal b, dReal c, dReal d)
767 { 767 {
768 NTotalGeoms++; 768 NTotalGeoms++;
769 return CreateiPlane(space, a, b, c, d); 769 return CreateiPlane(space, a, b, c, d);
770 } 770 }
771 771
772 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateRay"), SuppressUnmanagedCodeSecurity] 772 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateRay"), SuppressUnmanagedCodeSecurity]
773 public static extern IntPtr CreateiRay(IntPtr space, dReal length); 773 internal static extern IntPtr CreateiRay(IntPtr space, dReal length);
774 public static IntPtr CreateRay(IntPtr space, dReal length) 774 internal static IntPtr CreateRay(IntPtr space, dReal length)
775 { 775 {
776 NTotalGeoms++; 776 NTotalGeoms++;
777 return CreateiRay(space, length); 777 return CreateiRay(space, length);
778 } 778 }
779 779
780 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateSphere"), SuppressUnmanagedCodeSecurity] 780 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateSphere"), SuppressUnmanagedCodeSecurity]
781 public static extern IntPtr CreateiSphere(IntPtr space, dReal radius); 781 internal static extern IntPtr CreateiSphere(IntPtr space, dReal radius);
782 public static IntPtr CreateSphere(IntPtr space, dReal radius) 782 internal static IntPtr CreateSphere(IntPtr space, dReal radius)
783 { 783 {
784 NTotalGeoms++; 784 NTotalGeoms++;
785 return CreateiSphere(space, radius); 785 return CreateiSphere(space, radius);
786 } 786 }
787 787
788 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateTriMesh"), SuppressUnmanagedCodeSecurity] 788 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateTriMesh"), SuppressUnmanagedCodeSecurity]
789 public static extern IntPtr CreateiTriMesh(IntPtr space, IntPtr data, 789 internal static extern IntPtr CreateiTriMesh(IntPtr space, IntPtr data,
790 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback); 790 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback);
791 public static IntPtr CreateTriMesh(IntPtr space, IntPtr data, 791 internal static IntPtr CreateTriMesh(IntPtr space, IntPtr data,
792 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback) 792 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback)
793 { 793 {
794 NTotalGeoms++; 794 NTotalGeoms++;
795 return CreateiTriMesh(space, data, callback, arrayCallback, rayCallback); 795 return CreateiTriMesh(space, data, callback, arrayCallback, rayCallback);
796 } 796 }
797 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDot"), SuppressUnmanagedCodeSecurity] 797 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDot"), SuppressUnmanagedCodeSecurity]
798 public static extern dReal Dot(ref dReal X0, ref dReal X1, int n); 798 internal static extern dReal Dot(ref dReal X0, ref dReal X1, int n);
799 799
800 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDQfromW"), SuppressUnmanagedCodeSecurity] 800 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDQfromW"), SuppressUnmanagedCodeSecurity]
801 public static extern void DQfromW(dReal[] dq, ref Vector3 w, ref Quaternion q); 801 internal static extern void DQfromW(dReal[] dq, ref Vector3 w, ref Quaternion q);
802 802
803 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorCholesky"), SuppressUnmanagedCodeSecurity] 803 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorCholesky"), SuppressUnmanagedCodeSecurity]
804 public static extern int FactorCholesky(ref dReal A00, int n); 804 internal static extern int FactorCholesky(ref dReal A00, int n);
805 805
806 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorLDLT"), SuppressUnmanagedCodeSecurity] 806 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorLDLT"), SuppressUnmanagedCodeSecurity]
807 public static extern void FactorLDLT(ref dReal A, out dReal d, int n, int nskip); 807 internal static extern void FactorLDLT(ref dReal A, out dReal d, int n, int nskip);
808 808
809 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity] 809 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity]
810 public static extern void GeomBoxGetLengths(IntPtr geom, out Vector3 len); 810 internal static extern void GeomBoxGetLengths(IntPtr geom, out Vector3 len);
811 811
812 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity] 812 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity]
813 public static extern void GeomBoxGetLengths(IntPtr geom, out dReal x); 813 internal static extern void GeomBoxGetLengths(IntPtr geom, out dReal x);
814 814
815 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxPointDepth"), SuppressUnmanagedCodeSecurity] 815 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxPointDepth"), SuppressUnmanagedCodeSecurity]
816 public static extern dReal GeomBoxPointDepth(IntPtr geom, dReal x, dReal y, dReal z); 816 internal static extern dReal GeomBoxPointDepth(IntPtr geom, dReal x, dReal y, dReal z);
817 817
818 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxSetLengths"), SuppressUnmanagedCodeSecurity] 818 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxSetLengths"), SuppressUnmanagedCodeSecurity]
819 public static extern void GeomBoxSetLengths(IntPtr geom, dReal x, dReal y, dReal z); 819 internal static extern void GeomBoxSetLengths(IntPtr geom, dReal x, dReal y, dReal z);
820 820
821 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleGetParams"), SuppressUnmanagedCodeSecurity] 821 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleGetParams"), SuppressUnmanagedCodeSecurity]
822 public static extern void GeomCapsuleGetParams(IntPtr geom, out dReal radius, out dReal length); 822 internal static extern void GeomCapsuleGetParams(IntPtr geom, out dReal radius, out dReal length);
823 823
824 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsulePointDepth"), SuppressUnmanagedCodeSecurity] 824 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsulePointDepth"), SuppressUnmanagedCodeSecurity]
825 public static extern dReal GeomCapsulePointDepth(IntPtr geom, dReal x, dReal y, dReal z); 825 internal static extern dReal GeomCapsulePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
826 826
827 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleSetParams"), SuppressUnmanagedCodeSecurity] 827 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleSetParams"), SuppressUnmanagedCodeSecurity]
828 public static extern void GeomCapsuleSetParams(IntPtr geom, dReal radius, dReal length); 828 internal static extern void GeomCapsuleSetParams(IntPtr geom, dReal radius, dReal length);
829 829
830 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomClearOffset"), SuppressUnmanagedCodeSecurity] 830 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomClearOffset"), SuppressUnmanagedCodeSecurity]
831 public static extern void GeomClearOffset(IntPtr geom); 831 internal static extern void GeomClearOffset(IntPtr geom);
832 832
833 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity] 833 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity]
834 public static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref Vector3 pos); 834 internal static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref Vector3 pos);
835 835
836 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity] 836 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity]
837 public static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref dReal X); 837 internal static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref dReal X);
838 838
839 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 839 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
840 public static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref Quaternion Q); 840 internal static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref Quaternion Q);
841 841
842 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 842 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
843 public static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref dReal X); 843 internal static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref dReal X);
844 844
845 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity] 845 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity]
846 public static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref Matrix3 R); 846 internal static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref Matrix3 R);
847 847
848 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity] 848 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity]
849 public static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref dReal M00); 849 internal static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref dReal M00);
850 850
851 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity] 851 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity]
852 public static extern void GeomCopyPosition(IntPtr geom, out Vector3 pos); 852 internal static extern void GeomCopyPosition(IntPtr geom, out Vector3 pos);
853 853
854 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity] 854 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity]
855 public static extern void GeomCopyPosition(IntPtr geom, out dReal X); 855 internal static extern void GeomCopyPosition(IntPtr geom, out dReal X);
856 856
857 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity] 857 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity]
858 public static extern void GeomCopyRotation(IntPtr geom, out Matrix3 R); 858 internal static extern void GeomCopyRotation(IntPtr geom, out Matrix3 R);
859 859
860 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity] 860 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity]
861 public static extern void GeomCopyRotation(IntPtr geom, out dReal M00); 861 internal static extern void GeomCopyRotation(IntPtr geom, out dReal M00);
862 862
863 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderGetParams"), SuppressUnmanagedCodeSecurity] 863 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderGetParams"), SuppressUnmanagedCodeSecurity]
864 public static extern void GeomCylinderGetParams(IntPtr geom, out dReal radius, out dReal length); 864 internal static extern void GeomCylinderGetParams(IntPtr geom, out dReal radius, out dReal length);
865 865
866 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderSetParams"), SuppressUnmanagedCodeSecurity] 866 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderSetParams"), SuppressUnmanagedCodeSecurity]
867 public static extern void GeomCylinderSetParams(IntPtr geom, dReal radius, dReal length); 867 internal static extern void GeomCylinderSetParams(IntPtr geom, dReal radius, dReal length);
868 868
869 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDestroy"), SuppressUnmanagedCodeSecurity] 869 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDestroy"), SuppressUnmanagedCodeSecurity]
870 public static extern void GeomiDestroy(IntPtr geom); 870 internal static extern void GeomiDestroy(IntPtr geom);
871 public static void GeomDestroy(IntPtr geom) 871 internal static void GeomDestroy(IntPtr geom)
872 { 872 {
873 NTotalGeoms--; 873 NTotalGeoms--;
874 GeomiDestroy(geom); 874 GeomiDestroy(geom);
@@ -876,64 +876,64 @@ namespace OpenSim.Region.PhysicsModule.ODE
876 876
877 877
878 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDisable"), SuppressUnmanagedCodeSecurity] 878 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDisable"), SuppressUnmanagedCodeSecurity]
879 public static extern void GeomDisable(IntPtr geom); 879 internal static extern void GeomDisable(IntPtr geom);
880 880
881 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomEnable"), SuppressUnmanagedCodeSecurity] 881 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomEnable"), SuppressUnmanagedCodeSecurity]
882 public static extern void GeomEnable(IntPtr geom); 882 internal static extern void GeomEnable(IntPtr geom);
883 883
884 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity] 884 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity]
885 public static extern void GeomGetAABB(IntPtr geom, out AABB aabb); 885 internal static extern void GeomGetAABB(IntPtr geom, out AABB aabb);
886 886
887 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity] 887 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity]
888 public static extern void GeomGetAABB(IntPtr geom, out dReal minX); 888 internal static extern void GeomGetAABB(IntPtr geom, out dReal minX);
889 889
890 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetBody"), SuppressUnmanagedCodeSecurity] 890 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetBody"), SuppressUnmanagedCodeSecurity]
891 public static extern IntPtr GeomGetBody(IntPtr geom); 891 internal static extern IntPtr GeomGetBody(IntPtr geom);
892 892
893 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCategoryBits"), SuppressUnmanagedCodeSecurity] 893 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCategoryBits"), SuppressUnmanagedCodeSecurity]
894 public static extern uint GeomGetCategoryBits(IntPtr geom); 894 internal static extern uint GeomGetCategoryBits(IntPtr geom);
895 895
896 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClassData"), SuppressUnmanagedCodeSecurity] 896 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClassData"), SuppressUnmanagedCodeSecurity]
897 public static extern IntPtr GeomGetClassData(IntPtr geom); 897 internal static extern IntPtr GeomGetClassData(IntPtr geom);
898 898
899 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCollideBits"), SuppressUnmanagedCodeSecurity] 899 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCollideBits"), SuppressUnmanagedCodeSecurity]
900 public static extern uint GeomGetCollideBits(IntPtr geom); 900 internal static extern uint GeomGetCollideBits(IntPtr geom);
901 901
902 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClass"), SuppressUnmanagedCodeSecurity] 902 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClass"), SuppressUnmanagedCodeSecurity]
903 public static extern GeomClassID GeomGetClass(IntPtr geom); 903 internal static extern GeomClassID GeomGetClass(IntPtr geom);
904 904
905 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetData"), SuppressUnmanagedCodeSecurity] 905 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetData"), SuppressUnmanagedCodeSecurity]
906 public static extern IntPtr GeomGetData(IntPtr geom); 906 internal static extern IntPtr GeomGetData(IntPtr geom);
907 907
908 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetPosition"), SuppressUnmanagedCodeSecurity] 908 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetPosition"), SuppressUnmanagedCodeSecurity]
909 public extern unsafe static Vector3* GeomGetOffsetPositionUnsafe(IntPtr geom); 909 internal extern unsafe static Vector3* GeomGetOffsetPositionUnsafe(IntPtr geom);
910 public static Vector3 GeomGetOffsetPosition(IntPtr geom) 910 internal static Vector3 GeomGetOffsetPosition(IntPtr geom)
911 { 911 {
912 unsafe { return *(GeomGetOffsetPositionUnsafe(geom)); } 912 unsafe { return *(GeomGetOffsetPositionUnsafe(geom)); }
913 } 913 }
914 914
915 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetRotation"), SuppressUnmanagedCodeSecurity] 915 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetRotation"), SuppressUnmanagedCodeSecurity]
916 public extern unsafe static Matrix3* GeomGetOffsetRotationUnsafe(IntPtr geom); 916 internal extern unsafe static Matrix3* GeomGetOffsetRotationUnsafe(IntPtr geom);
917 public static Matrix3 GeomGetOffsetRotation(IntPtr geom) 917 internal static Matrix3 GeomGetOffsetRotation(IntPtr geom)
918 { 918 {
919 unsafe { return *(GeomGetOffsetRotationUnsafe(geom)); } 919 unsafe { return *(GeomGetOffsetRotationUnsafe(geom)); }
920 } 920 }
921 921
922 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetPosition"), SuppressUnmanagedCodeSecurity] 922 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetPosition"), SuppressUnmanagedCodeSecurity]
923 public extern unsafe static Vector3* GeomGetPositionUnsafe(IntPtr geom); 923 internal extern unsafe static Vector3* GeomGetPositionUnsafe(IntPtr geom);
924 public static Vector3 GeomGetPosition(IntPtr geom) 924 internal static Vector3 GeomGetPosition(IntPtr geom)
925 { 925 {
926 unsafe { return *(GeomGetPositionUnsafe(geom)); } 926 unsafe { return *(GeomGetPositionUnsafe(geom)); }
927 } 927 }
928 public static OMV.Vector3 GeomGetPositionOMV(IntPtr geom) 928 internal static OMV.Vector3 GeomGetPositionOMV(IntPtr geom)
929 { 929 {
930 Vector3 vtmp = GeomGetPosition(geom); 930 Vector3 vtmp = GeomGetPosition(geom);
931 return new OMV.Vector3(vtmp.X, vtmp.Y, vtmp.Z); 931 return new OMV.Vector3(vtmp.X, vtmp.Y, vtmp.Z);
932 } 932 }
933 933
934 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity] 934 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity]
935 public static extern void GeomCopyQuaternion(IntPtr geom, out Quaternion q); 935 internal static extern void GeomCopyQuaternion(IntPtr geom, out Quaternion q);
936 public static OMV.Quaternion GeomGetQuaternionOMV(IntPtr geom) 936 internal static OMV.Quaternion GeomGetQuaternionOMV(IntPtr geom)
937 { 937 {
938 Quaternion qtmp; 938 Quaternion qtmp;
939 GeomCopyQuaternion(geom, out qtmp); 939 GeomCopyQuaternion(geom, out qtmp);
@@ -941,393 +941,393 @@ namespace OpenSim.Region.PhysicsModule.ODE
941 } 941 }
942 942
943 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity] 943 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity]
944 public static extern void GeomCopyQuaternion(IntPtr geom, out dReal X); 944 internal static extern void GeomCopyQuaternion(IntPtr geom, out dReal X);
945 945
946 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetRotation"), SuppressUnmanagedCodeSecurity] 946 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetRotation"), SuppressUnmanagedCodeSecurity]
947 public extern unsafe static Matrix3* GeomGetRotationUnsafe(IntPtr geom); 947 internal extern unsafe static Matrix3* GeomGetRotationUnsafe(IntPtr geom);
948 public static Matrix3 GeomGetRotation(IntPtr geom) 948 internal static Matrix3 GeomGetRotation(IntPtr geom)
949 { 949 {
950 unsafe { return *(GeomGetRotationUnsafe(geom)); } 950 unsafe { return *(GeomGetRotationUnsafe(geom)); }
951 } 951 }
952 952
953 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetSpace"), SuppressUnmanagedCodeSecurity] 953 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetSpace"), SuppressUnmanagedCodeSecurity]
954 public static extern IntPtr GeomGetSpace(IntPtr geom); 954 internal static extern IntPtr GeomGetSpace(IntPtr geom);
955 955
956 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity] 956 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity]
957 public static extern void GeomHeightfieldDataBuildByte(IntPtr d, byte[] pHeightData, int bCopyHeightData, 957 internal static extern void GeomHeightfieldDataBuildByte(IntPtr d, byte[] pHeightData, int bCopyHeightData,
958 dReal width, dReal depth, int widthSamples, int depthSamples, 958 dReal width, dReal depth, int widthSamples, int depthSamples,
959 dReal scale, dReal offset, dReal thickness, int bWrap); 959 dReal scale, dReal offset, dReal thickness, int bWrap);
960 960
961 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity] 961 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity]
962 public static extern void GeomHeightfieldDataBuildByte(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 962 internal static extern void GeomHeightfieldDataBuildByte(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
963 dReal width, dReal depth, int widthSamples, int depthSamples, 963 dReal width, dReal depth, int widthSamples, int depthSamples,
964 dReal scale, dReal offset, dReal thickness, int bWrap); 964 dReal scale, dReal offset, dReal thickness, int bWrap);
965 965
966 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildCallback"), SuppressUnmanagedCodeSecurity] 966 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildCallback"), SuppressUnmanagedCodeSecurity]
967 public static extern void GeomHeightfieldDataBuildCallback(IntPtr d, IntPtr pUserData, HeightfieldGetHeight pCallback, 967 internal static extern void GeomHeightfieldDataBuildCallback(IntPtr d, IntPtr pUserData, HeightfieldGetHeight pCallback,
968 dReal width, dReal depth, int widthSamples, int depthSamples, 968 dReal width, dReal depth, int widthSamples, int depthSamples,
969 dReal scale, dReal offset, dReal thickness, int bWrap); 969 dReal scale, dReal offset, dReal thickness, int bWrap);
970 970
971 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity] 971 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
972 public static extern void GeomHeightfieldDataBuildShort(IntPtr d, ushort[] pHeightData, int bCopyHeightData, 972 internal static extern void GeomHeightfieldDataBuildShort(IntPtr d, ushort[] pHeightData, int bCopyHeightData,
973 dReal width, dReal depth, int widthSamples, int depthSamples, 973 dReal width, dReal depth, int widthSamples, int depthSamples,
974 dReal scale, dReal offset, dReal thickness, int bWrap); 974 dReal scale, dReal offset, dReal thickness, int bWrap);
975 975
976 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity] 976 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
977 public static extern void GeomHeightfieldDataBuildShort(IntPtr d, short[] pHeightData, int bCopyHeightData, 977 internal static extern void GeomHeightfieldDataBuildShort(IntPtr d, short[] pHeightData, int bCopyHeightData,
978 dReal width, dReal depth, int widthSamples, int depthSamples, 978 dReal width, dReal depth, int widthSamples, int depthSamples,
979 dReal scale, dReal offset, dReal thickness, int bWrap); 979 dReal scale, dReal offset, dReal thickness, int bWrap);
980 980
981 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity] 981 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
982 public static extern void GeomHeightfieldDataBuildShort(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 982 internal static extern void GeomHeightfieldDataBuildShort(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
983 dReal width, dReal depth, int widthSamples, int depthSamples, 983 dReal width, dReal depth, int widthSamples, int depthSamples,
984 dReal scale, dReal offset, dReal thickness, int bWrap); 984 dReal scale, dReal offset, dReal thickness, int bWrap);
985 985
986 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity] 986 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity]
987 public static extern void GeomHeightfieldDataBuildSingle(IntPtr d, float[] pHeightData, int bCopyHeightData, 987 internal static extern void GeomHeightfieldDataBuildSingle(IntPtr d, float[] pHeightData, int bCopyHeightData,
988 dReal width, dReal depth, int widthSamples, int depthSamples, 988 dReal width, dReal depth, int widthSamples, int depthSamples,
989 dReal scale, dReal offset, dReal thickness, int bWrap); 989 dReal scale, dReal offset, dReal thickness, int bWrap);
990 990
991 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity] 991 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity]
992 public static extern void GeomHeightfieldDataBuildSingle(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 992 internal static extern void GeomHeightfieldDataBuildSingle(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
993 dReal width, dReal depth, int widthSamples, int depthSamples, 993 dReal width, dReal depth, int widthSamples, int depthSamples,
994 dReal scale, dReal offset, dReal thickness, int bWrap); 994 dReal scale, dReal offset, dReal thickness, int bWrap);
995 995
996 996
997 997
998 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity] 998 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity]
999 public static extern void GeomHeightfieldDataBuildDouble(IntPtr d, double[] pHeightData, int bCopyHeightData, 999 internal static extern void GeomHeightfieldDataBuildDouble(IntPtr d, double[] pHeightData, int bCopyHeightData,
1000 dReal width, dReal depth, int widthSamples, int depthSamples, 1000 dReal width, dReal depth, int widthSamples, int depthSamples,
1001 dReal scale, dReal offset, dReal thickness, int bWrap); 1001 dReal scale, dReal offset, dReal thickness, int bWrap);
1002 1002
1003 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity] 1003 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1004 public static extern void GeomHeightfieldDataBuildDouble(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 1004 internal static extern void GeomHeightfieldDataBuildDouble(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
1005 dReal width, dReal depth, int widthSamples, int depthSamples, 1005 dReal width, dReal depth, int widthSamples, int depthSamples,
1006 dReal scale, dReal offset, dReal thickness, int bWrap); 1006 dReal scale, dReal offset, dReal thickness, int bWrap);
1007 1007
1008 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataCreate"), SuppressUnmanagedCodeSecurity] 1008 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataCreate"), SuppressUnmanagedCodeSecurity]
1009 public static extern IntPtr GeomHeightfieldDataCreate(); 1009 internal static extern IntPtr GeomHeightfieldDataCreate();
1010 1010
1011 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataDestroy"), SuppressUnmanagedCodeSecurity] 1011 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataDestroy"), SuppressUnmanagedCodeSecurity]
1012 public static extern void GeomHeightfieldDataDestroy(IntPtr d); 1012 internal static extern void GeomHeightfieldDataDestroy(IntPtr d);
1013 1013
1014 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataSetBounds"), SuppressUnmanagedCodeSecurity] 1014 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataSetBounds"), SuppressUnmanagedCodeSecurity]
1015 public static extern void GeomHeightfieldDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight); 1015 internal static extern void GeomHeightfieldDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
1016 1016
1017 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldGetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1017 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1018 public static extern IntPtr GeomHeightfieldGetHeightfieldData(IntPtr g); 1018 internal static extern IntPtr GeomHeightfieldGetHeightfieldData(IntPtr g);
1019 1019
1020 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldSetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1020 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1021 public static extern void GeomHeightfieldSetHeightfieldData(IntPtr g, IntPtr d); 1021 internal static extern void GeomHeightfieldSetHeightfieldData(IntPtr g, IntPtr d);
1022 1022
1023 1023
1024 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomUbitTerrainDataBuild"), SuppressUnmanagedCodeSecurity] 1024 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomUbitTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
1025 public static extern void GeomOSTerrainDataBuild(IntPtr d, float[] pHeightData, int bCopyHeightData, 1025 internal static extern void GeomOSTerrainDataBuild(IntPtr d, float[] pHeightData, int bCopyHeightData,
1026 dReal sampleSize, int widthSamples, int depthSamples, 1026 dReal sampleSize, int widthSamples, int depthSamples,
1027 dReal offset, dReal thickness, int bWrap); 1027 dReal offset, dReal thickness, int bWrap);
1028 1028
1029 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataBuild"), SuppressUnmanagedCodeSecurity] 1029 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
1030 public static extern void GeomOSTerrainDataBuild(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 1030 internal static extern void GeomOSTerrainDataBuild(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
1031 dReal sampleSize, int widthSamples, int depthSamples, 1031 dReal sampleSize, int widthSamples, int depthSamples,
1032 dReal thickness, int bWrap); 1032 dReal thickness, int bWrap);
1033 1033
1034 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataCreate"), SuppressUnmanagedCodeSecurity] 1034 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataCreate"), SuppressUnmanagedCodeSecurity]
1035 public static extern IntPtr GeomOSTerrainDataCreate(); 1035 internal static extern IntPtr GeomOSTerrainDataCreate();
1036 1036
1037 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataDestroy"), SuppressUnmanagedCodeSecurity] 1037 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataDestroy"), SuppressUnmanagedCodeSecurity]
1038 public static extern void GeomOSTerrainDataDestroy(IntPtr d); 1038 internal static extern void GeomOSTerrainDataDestroy(IntPtr d);
1039 1039
1040 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataSetBounds"), SuppressUnmanagedCodeSecurity] 1040 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataSetBounds"), SuppressUnmanagedCodeSecurity]
1041 public static extern void GeomOSTerrainDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight); 1041 internal static extern void GeomOSTerrainDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
1042 1042
1043 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainGetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1043 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1044 public static extern IntPtr GeomOSTerrainGetHeightfieldData(IntPtr g); 1044 internal static extern IntPtr GeomOSTerrainGetHeightfieldData(IntPtr g);
1045 1045
1046 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainSetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1046 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1047 public static extern void GeomOSTerrainSetHeightfieldData(IntPtr g, IntPtr d); 1047 internal static extern void GeomOSTerrainSetHeightfieldData(IntPtr g, IntPtr d);
1048 1048
1049 1049
1050 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsEnabled"), SuppressUnmanagedCodeSecurity] 1050 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsEnabled"), SuppressUnmanagedCodeSecurity]
1051 public static extern bool GeomIsEnabled(IntPtr geom); 1051 internal static extern bool GeomIsEnabled(IntPtr geom);
1052 1052
1053 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsOffset"), SuppressUnmanagedCodeSecurity] 1053 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsOffset"), SuppressUnmanagedCodeSecurity]
1054 public static extern bool GeomIsOffset(IntPtr geom); 1054 internal static extern bool GeomIsOffset(IntPtr geom);
1055 1055
1056 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsSpace"), SuppressUnmanagedCodeSecurity] 1056 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsSpace"), SuppressUnmanagedCodeSecurity]
1057 public static extern bool GeomIsSpace(IntPtr geom); 1057 internal static extern bool GeomIsSpace(IntPtr geom);
1058 1058
1059 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity] 1059 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity]
1060 public static extern void GeomPlaneGetParams(IntPtr geom, ref Vector4 result); 1060 internal static extern void GeomPlaneGetParams(IntPtr geom, ref Vector4 result);
1061 1061
1062 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity] 1062 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity]
1063 public static extern void GeomPlaneGetParams(IntPtr geom, ref dReal A); 1063 internal static extern void GeomPlaneGetParams(IntPtr geom, ref dReal A);
1064 1064
1065 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlanePointDepth"), SuppressUnmanagedCodeSecurity] 1065 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlanePointDepth"), SuppressUnmanagedCodeSecurity]
1066 public static extern dReal GeomPlanePointDepth(IntPtr geom, dReal x, dReal y, dReal z); 1066 internal static extern dReal GeomPlanePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
1067 1067
1068 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneSetParams"), SuppressUnmanagedCodeSecurity] 1068 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneSetParams"), SuppressUnmanagedCodeSecurity]
1069 public static extern void GeomPlaneSetParams(IntPtr plane, dReal a, dReal b, dReal c, dReal d); 1069 internal static extern void GeomPlaneSetParams(IntPtr plane, dReal a, dReal b, dReal c, dReal d);
1070 1070
1071 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity] 1071 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity]
1072 public static extern void GeomRayGet(IntPtr ray, ref Vector3 start, ref Vector3 dir); 1072 internal static extern void GeomRayGet(IntPtr ray, ref Vector3 start, ref Vector3 dir);
1073 1073
1074 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity] 1074 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity]
1075 public static extern void GeomRayGet(IntPtr ray, ref dReal startX, ref dReal dirX); 1075 internal static extern void GeomRayGet(IntPtr ray, ref dReal startX, ref dReal dirX);
1076 1076
1077 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetClosestHit"), SuppressUnmanagedCodeSecurity] 1077 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetClosestHit"), SuppressUnmanagedCodeSecurity]
1078 public static extern int GeomRayGetClosestHit(IntPtr ray); 1078 internal static extern int GeomRayGetClosestHit(IntPtr ray);
1079 1079
1080 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetLength"), SuppressUnmanagedCodeSecurity] 1080 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetLength"), SuppressUnmanagedCodeSecurity]
1081 public static extern dReal GeomRayGetLength(IntPtr ray); 1081 internal static extern dReal GeomRayGetLength(IntPtr ray);
1082 1082
1083 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetParams"), SuppressUnmanagedCodeSecurity] 1083 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetParams"), SuppressUnmanagedCodeSecurity]
1084 public static extern dReal GeomRayGetParams(IntPtr g, out int firstContact, out int backfaceCull); 1084 internal static extern dReal GeomRayGetParams(IntPtr g, out int firstContact, out int backfaceCull);
1085 1085
1086 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySet"), SuppressUnmanagedCodeSecurity] 1086 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySet"), SuppressUnmanagedCodeSecurity]
1087 public static extern void GeomRaySet(IntPtr ray, dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz); 1087 internal static extern void GeomRaySet(IntPtr ray, dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz);
1088 1088
1089 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetClosestHit"), SuppressUnmanagedCodeSecurity] 1089 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetClosestHit"), SuppressUnmanagedCodeSecurity]
1090 public static extern void GeomRaySetClosestHit(IntPtr ray, int closestHit); 1090 internal static extern void GeomRaySetClosestHit(IntPtr ray, int closestHit);
1091 1091
1092 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetLength"), SuppressUnmanagedCodeSecurity] 1092 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetLength"), SuppressUnmanagedCodeSecurity]
1093 public static extern void GeomRaySetLength(IntPtr ray, dReal length); 1093 internal static extern void GeomRaySetLength(IntPtr ray, dReal length);
1094 1094
1095 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetParams"), SuppressUnmanagedCodeSecurity] 1095 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetParams"), SuppressUnmanagedCodeSecurity]
1096 public static extern void GeomRaySetParams(IntPtr ray, int firstContact, int backfaceCull); 1096 internal static extern void GeomRaySetParams(IntPtr ray, int firstContact, int backfaceCull);
1097 1097
1098 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetBody"), SuppressUnmanagedCodeSecurity] 1098 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetBody"), SuppressUnmanagedCodeSecurity]
1099 public static extern void GeomSetBody(IntPtr geom, IntPtr body); 1099 internal static extern void GeomSetBody(IntPtr geom, IntPtr body);
1100 1100
1101 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCategoryBits"), SuppressUnmanagedCodeSecurity] 1101 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCategoryBits"), SuppressUnmanagedCodeSecurity]
1102 public static extern void GeomSetCategoryBits(IntPtr geom, uint bits); 1102 internal static extern void GeomSetCategoryBits(IntPtr geom, uint bits);
1103 1103
1104 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCollideBits"), SuppressUnmanagedCodeSecurity] 1104 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCollideBits"), SuppressUnmanagedCodeSecurity]
1105 public static extern void GeomSetCollideBits(IntPtr geom, uint bits); 1105 internal static extern void GeomSetCollideBits(IntPtr geom, uint bits);
1106 1106
1107 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetConvex"), SuppressUnmanagedCodeSecurity] 1107 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetConvex"), SuppressUnmanagedCodeSecurity]
1108 public static extern IntPtr GeomSetConvex(IntPtr geom, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons); 1108 internal static extern IntPtr GeomSetConvex(IntPtr geom, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons);
1109 1109
1110 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetData"), SuppressUnmanagedCodeSecurity] 1110 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetData"), SuppressUnmanagedCodeSecurity]
1111 public static extern void GeomSetData(IntPtr geom, IntPtr data); 1111 internal static extern void GeomSetData(IntPtr geom, IntPtr data);
1112 1112
1113 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetPosition"), SuppressUnmanagedCodeSecurity] 1113 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetPosition"), SuppressUnmanagedCodeSecurity]
1114 public static extern void GeomSetOffsetPosition(IntPtr geom, dReal x, dReal y, dReal z); 1114 internal static extern void GeomSetOffsetPosition(IntPtr geom, dReal x, dReal y, dReal z);
1115 1115
1116 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 1116 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
1117 public static extern void GeomSetOffsetQuaternion(IntPtr geom, ref Quaternion Q); 1117 internal static extern void GeomSetOffsetQuaternion(IntPtr geom, ref Quaternion Q);
1118 1118
1119 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 1119 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
1120 public static extern void GeomSetOffsetQuaternion(IntPtr geom, ref dReal X); 1120 internal static extern void GeomSetOffsetQuaternion(IntPtr geom, ref dReal X);
1121 1121
1122 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity] 1122 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity]
1123 public static extern void GeomSetOffsetRotation(IntPtr geom, ref Matrix3 R); 1123 internal static extern void GeomSetOffsetRotation(IntPtr geom, ref Matrix3 R);
1124 1124
1125 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity] 1125 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity]
1126 public static extern void GeomSetOffsetRotation(IntPtr geom, ref dReal M00); 1126 internal static extern void GeomSetOffsetRotation(IntPtr geom, ref dReal M00);
1127 1127
1128 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldPosition"), SuppressUnmanagedCodeSecurity] 1128 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldPosition"), SuppressUnmanagedCodeSecurity]
1129 public static extern void GeomSetOffsetWorldPosition(IntPtr geom, dReal x, dReal y, dReal z); 1129 internal static extern void GeomSetOffsetWorldPosition(IntPtr geom, dReal x, dReal y, dReal z);
1130 1130
1131 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity] 1131 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity]
1132 public static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref Quaternion Q); 1132 internal static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref Quaternion Q);
1133 1133
1134 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity] 1134 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity]
1135 public static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref dReal X); 1135 internal static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref dReal X);
1136 1136
1137 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity] 1137 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity]
1138 public static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref Matrix3 R); 1138 internal static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref Matrix3 R);
1139 1139
1140 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity] 1140 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity]
1141 public static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref dReal M00); 1141 internal static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref dReal M00);
1142 1142
1143 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetPosition"), SuppressUnmanagedCodeSecurity] 1143 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetPosition"), SuppressUnmanagedCodeSecurity]
1144 public static extern void GeomSetPosition(IntPtr geom, dReal x, dReal y, dReal z); 1144 internal static extern void GeomSetPosition(IntPtr geom, dReal x, dReal y, dReal z);
1145 1145
1146 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity] 1146 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity]
1147 public static extern void GeomSetQuaternion(IntPtr geom, ref Quaternion quat); 1147 internal static extern void GeomSetQuaternion(IntPtr geom, ref Quaternion quat);
1148 1148
1149 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity] 1149 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity]
1150 public static extern void GeomSetQuaternion(IntPtr geom, ref dReal w); 1150 internal static extern void GeomSetQuaternion(IntPtr geom, ref dReal w);
1151 1151
1152 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity] 1152 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity]
1153 public static extern void GeomSetRotation(IntPtr geom, ref Matrix3 R); 1153 internal static extern void GeomSetRotation(IntPtr geom, ref Matrix3 R);
1154 1154
1155 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity] 1155 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity]
1156 public static extern void GeomSetRotation(IntPtr geom, ref dReal M00); 1156 internal static extern void GeomSetRotation(IntPtr geom, ref dReal M00);
1157 1157
1158 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereGetRadius"), SuppressUnmanagedCodeSecurity] 1158 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereGetRadius"), SuppressUnmanagedCodeSecurity]
1159 public static extern dReal GeomSphereGetRadius(IntPtr geom); 1159 internal static extern dReal GeomSphereGetRadius(IntPtr geom);
1160 1160
1161 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSpherePointDepth"), SuppressUnmanagedCodeSecurity] 1161 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSpherePointDepth"), SuppressUnmanagedCodeSecurity]
1162 public static extern dReal GeomSpherePointDepth(IntPtr geom, dReal x, dReal y, dReal z); 1162 internal static extern dReal GeomSpherePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
1163 1163
1164 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereSetRadius"), SuppressUnmanagedCodeSecurity] 1164 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereSetRadius"), SuppressUnmanagedCodeSecurity]
1165 public static extern void GeomSphereSetRadius(IntPtr geom, dReal radius); 1165 internal static extern void GeomSphereSetRadius(IntPtr geom, dReal radius);
1166 1166
1167 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetCleanup"), SuppressUnmanagedCodeSecurity] 1167 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetCleanup"), SuppressUnmanagedCodeSecurity]
1168 public static extern int GeomTransformGetCleanup(IntPtr geom); 1168 internal static extern int GeomTransformGetCleanup(IntPtr geom);
1169 1169
1170 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetGeom"), SuppressUnmanagedCodeSecurity] 1170 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetGeom"), SuppressUnmanagedCodeSecurity]
1171 public static extern IntPtr GeomTransformGetGeom(IntPtr geom); 1171 internal static extern IntPtr GeomTransformGetGeom(IntPtr geom);
1172 1172
1173 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetInfo"), SuppressUnmanagedCodeSecurity] 1173 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetInfo"), SuppressUnmanagedCodeSecurity]
1174 public static extern int GeomTransformGetInfo(IntPtr geom); 1174 internal static extern int GeomTransformGetInfo(IntPtr geom);
1175 1175
1176 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetCleanup"), SuppressUnmanagedCodeSecurity] 1176 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetCleanup"), SuppressUnmanagedCodeSecurity]
1177 public static extern void GeomTransformSetCleanup(IntPtr geom, int mode); 1177 internal static extern void GeomTransformSetCleanup(IntPtr geom, int mode);
1178 1178
1179 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetGeom"), SuppressUnmanagedCodeSecurity] 1179 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetGeom"), SuppressUnmanagedCodeSecurity]
1180 public static extern void GeomTransformSetGeom(IntPtr geom, IntPtr obj); 1180 internal static extern void GeomTransformSetGeom(IntPtr geom, IntPtr obj);
1181 1181
1182 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetInfo"), SuppressUnmanagedCodeSecurity] 1182 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetInfo"), SuppressUnmanagedCodeSecurity]
1183 public static extern void GeomTransformSetInfo(IntPtr geom, int info); 1183 internal static extern void GeomTransformSetInfo(IntPtr geom, int info);
1184 1184
1185 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity] 1185 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1186 public static extern void GeomTriMeshDataBuildDouble(IntPtr d, 1186 internal static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1187 double[] vertices, int vertexStride, int vertexCount, 1187 double[] vertices, int vertexStride, int vertexCount,
1188 int[] indices, int indexCount, int triStride); 1188 int[] indices, int indexCount, int triStride);
1189 1189
1190 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity] 1190 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1191 public static extern void GeomTriMeshDataBuildDouble(IntPtr d, 1191 internal static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1192 IntPtr vertices, int vertexStride, int vertexCount, 1192 IntPtr vertices, int vertexStride, int vertexCount,
1193 IntPtr indices, int indexCount, int triStride); 1193 IntPtr indices, int indexCount, int triStride);
1194 1194
1195 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity] 1195 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity]
1196 public static extern void GeomTriMeshDataBuildDouble1(IntPtr d, 1196 internal static extern void GeomTriMeshDataBuildDouble1(IntPtr d,
1197 double[] vertices, int vertexStride, int vertexCount, 1197 double[] vertices, int vertexStride, int vertexCount,
1198 int[] indices, int indexCount, int triStride, 1198 int[] indices, int indexCount, int triStride,
1199 double[] normals); 1199 double[] normals);
1200 1200
1201 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity] 1201 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity]
1202 public static extern void GeomTriMeshDataBuildDouble(IntPtr d, 1202 internal static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1203 IntPtr vertices, int vertexStride, int vertexCount, 1203 IntPtr vertices, int vertexStride, int vertexCount,
1204 IntPtr indices, int indexCount, int triStride, 1204 IntPtr indices, int indexCount, int triStride,
1205 IntPtr normals); 1205 IntPtr normals);
1206 1206
1207 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity] 1207 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity]
1208 public static extern void GeomTriMeshDataBuildSingle(IntPtr d, 1208 internal static extern void GeomTriMeshDataBuildSingle(IntPtr d,
1209 dReal[] vertices, int vertexStride, int vertexCount, 1209 dReal[] vertices, int vertexStride, int vertexCount,
1210 int[] indices, int indexCount, int triStride); 1210 int[] indices, int indexCount, int triStride);
1211 1211
1212 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity] 1212 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity]
1213 public static extern void GeomTriMeshDataBuildSingle(IntPtr d, 1213 internal static extern void GeomTriMeshDataBuildSingle(IntPtr d,
1214 IntPtr vertices, int vertexStride, int vertexCount, 1214 IntPtr vertices, int vertexStride, int vertexCount,
1215 IntPtr indices, int indexCount, int triStride); 1215 IntPtr indices, int indexCount, int triStride);
1216 1216
1217 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity] 1217 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity]
1218 public static extern void GeomTriMeshDataBuildSingle1(IntPtr d, 1218 internal static extern void GeomTriMeshDataBuildSingle1(IntPtr d,
1219 dReal[] vertices, int vertexStride, int vertexCount, 1219 dReal[] vertices, int vertexStride, int vertexCount,
1220 int[] indices, int indexCount, int triStride, 1220 int[] indices, int indexCount, int triStride,
1221 dReal[] normals); 1221 dReal[] normals);
1222 1222
1223 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity] 1223 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity]
1224 public static extern void GeomTriMeshDataBuildSingle1(IntPtr d, 1224 internal static extern void GeomTriMeshDataBuildSingle1(IntPtr d,
1225 IntPtr vertices, int vertexStride, int vertexCount, 1225 IntPtr vertices, int vertexStride, int vertexCount,
1226 IntPtr indices, int indexCount, int triStride, 1226 IntPtr indices, int indexCount, int triStride,
1227 IntPtr normals); 1227 IntPtr normals);
1228 1228
1229 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity] 1229 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity]
1230 public static extern void GeomTriMeshDataBuildSimple(IntPtr d, 1230 internal static extern void GeomTriMeshDataBuildSimple(IntPtr d,
1231 float[] vertices, int vertexStride, int vertexCount, 1231 float[] vertices, int vertexStride, int vertexCount,
1232 int[] indices, int indexCount, int triStride); 1232 int[] indices, int indexCount, int triStride);
1233 1233
1234 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity] 1234 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity]
1235 public static extern void GeomTriMeshDataBuildSimple(IntPtr d, 1235 internal static extern void GeomTriMeshDataBuildSimple(IntPtr d,
1236 IntPtr vertices, int vertexStride, int vertexCount, 1236 IntPtr vertices, int vertexStride, int vertexCount,
1237 IntPtr indices, int indexCount, int triStride); 1237 IntPtr indices, int indexCount, int triStride);
1238 1238
1239 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity] 1239 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity]
1240 public static extern void GeomTriMeshDataBuildSimple1(IntPtr d, 1240 internal static extern void GeomTriMeshDataBuildSimple1(IntPtr d,
1241 float[] vertices, int vertexStride, int vertexCount, 1241 float[] vertices, int vertexStride, int vertexCount,
1242 int[] indices, int indexCount, int triStride, 1242 int[] indices, int indexCount, int triStride,
1243 float[] normals); 1243 float[] normals);
1244 1244
1245 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity] 1245 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity]
1246 public static extern void GeomTriMeshDataBuildSimple1(IntPtr d, 1246 internal static extern void GeomTriMeshDataBuildSimple1(IntPtr d,
1247 IntPtr vertices, int vertexStride, int vertexCount, 1247 IntPtr vertices, int vertexStride, int vertexCount,
1248 IntPtr indices, int indexCount, int triStride, 1248 IntPtr indices, int indexCount, int triStride,
1249 IntPtr normals); 1249 IntPtr normals);
1250 1250
1251 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshClearTCCache"), SuppressUnmanagedCodeSecurity] 1251 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshClearTCCache"), SuppressUnmanagedCodeSecurity]
1252 public static extern void GeomTriMeshClearTCCache(IntPtr g); 1252 internal static extern void GeomTriMeshClearTCCache(IntPtr g);
1253 1253
1254 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataCreate"), SuppressUnmanagedCodeSecurity] 1254 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataCreate"), SuppressUnmanagedCodeSecurity]
1255 public static extern IntPtr GeomTriMeshDataCreate(); 1255 internal static extern IntPtr GeomTriMeshDataCreate();
1256 1256
1257 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataDestroy"), SuppressUnmanagedCodeSecurity] 1257 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataDestroy"), SuppressUnmanagedCodeSecurity]
1258 public static extern void GeomTriMeshDataDestroy(IntPtr d); 1258 internal static extern void GeomTriMeshDataDestroy(IntPtr d);
1259 1259
1260 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataGet"), SuppressUnmanagedCodeSecurity] 1260 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataGet"), SuppressUnmanagedCodeSecurity]
1261 public static extern IntPtr GeomTriMeshDataGet(IntPtr d, int data_id); 1261 internal static extern IntPtr GeomTriMeshDataGet(IntPtr d, int data_id);
1262 1262
1263 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataPreprocess"), SuppressUnmanagedCodeSecurity] 1263 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataPreprocess"), SuppressUnmanagedCodeSecurity]
1264 public static extern void GeomTriMeshDataPreprocess(IntPtr d); 1264 internal static extern void GeomTriMeshDataPreprocess(IntPtr d);
1265 1265
1266 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataSet"), SuppressUnmanagedCodeSecurity] 1266 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataSet"), SuppressUnmanagedCodeSecurity]
1267 public static extern void GeomTriMeshDataSet(IntPtr d, int data_id, IntPtr in_data); 1267 internal static extern void GeomTriMeshDataSet(IntPtr d, int data_id, IntPtr in_data);
1268 1268
1269 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataUpdate"), SuppressUnmanagedCodeSecurity] 1269 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataUpdate"), SuppressUnmanagedCodeSecurity]
1270 public static extern void GeomTriMeshDataUpdate(IntPtr d); 1270 internal static extern void GeomTriMeshDataUpdate(IntPtr d);
1271 1271
1272 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshEnableTC"), SuppressUnmanagedCodeSecurity] 1272 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshEnableTC"), SuppressUnmanagedCodeSecurity]
1273 public static extern void GeomTriMeshEnableTC(IntPtr g, int geomClass, bool enable); 1273 internal static extern void GeomTriMeshEnableTC(IntPtr g, int geomClass, bool enable);
1274 1274
1275 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetArrayCallback"), SuppressUnmanagedCodeSecurity] 1275 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetArrayCallback"), SuppressUnmanagedCodeSecurity]
1276 public static extern TriArrayCallback GeomTriMeshGetArrayCallback(IntPtr g); 1276 internal static extern TriArrayCallback GeomTriMeshGetArrayCallback(IntPtr g);
1277 1277
1278 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetCallback"), SuppressUnmanagedCodeSecurity] 1278 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetCallback"), SuppressUnmanagedCodeSecurity]
1279 public static extern TriCallback GeomTriMeshGetCallback(IntPtr g); 1279 internal static extern TriCallback GeomTriMeshGetCallback(IntPtr g);
1280 1280
1281 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetData"), SuppressUnmanagedCodeSecurity] 1281 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetData"), SuppressUnmanagedCodeSecurity]
1282 public static extern IntPtr GeomTriMeshGetData(IntPtr g); 1282 internal static extern IntPtr GeomTriMeshGetData(IntPtr g);
1283 1283
1284 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetLastTransform"), SuppressUnmanagedCodeSecurity] 1284 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetLastTransform"), SuppressUnmanagedCodeSecurity]
1285 public extern unsafe static Matrix4* GeomTriMeshGetLastTransformUnsafe(IntPtr geom); 1285 internal extern unsafe static Matrix4* GeomTriMeshGetLastTransformUnsafe(IntPtr geom);
1286 public static Matrix4 GeomTriMeshGetLastTransform(IntPtr geom) 1286 internal static Matrix4 GeomTriMeshGetLastTransform(IntPtr geom)
1287 { 1287 {
1288 unsafe { return *(GeomTriMeshGetLastTransformUnsafe(geom)); } 1288 unsafe { return *(GeomTriMeshGetLastTransformUnsafe(geom)); }
1289 } 1289 }
1290 1290
1291 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetPoint"), SuppressUnmanagedCodeSecurity] 1291 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetPoint"), SuppressUnmanagedCodeSecurity]
1292 public extern static void GeomTriMeshGetPoint(IntPtr g, int index, dReal u, dReal v, ref Vector3 outVec); 1292 internal extern static void GeomTriMeshGetPoint(IntPtr g, int index, dReal u, dReal v, ref Vector3 outVec);
1293 1293
1294 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetRayCallback"), SuppressUnmanagedCodeSecurity] 1294 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetRayCallback"), SuppressUnmanagedCodeSecurity]
1295 public static extern TriRayCallback GeomTriMeshGetRayCallback(IntPtr g); 1295 internal static extern TriRayCallback GeomTriMeshGetRayCallback(IntPtr g);
1296 1296
1297 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangle"), SuppressUnmanagedCodeSecurity] 1297 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangle"), SuppressUnmanagedCodeSecurity]
1298 public extern static void GeomTriMeshGetTriangle(IntPtr g, int index, ref Vector3 v0, ref Vector3 v1, ref Vector3 v2); 1298 internal extern static void GeomTriMeshGetTriangle(IntPtr g, int index, ref Vector3 v0, ref Vector3 v1, ref Vector3 v2);
1299 1299
1300 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangleCount"), SuppressUnmanagedCodeSecurity] 1300 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangleCount"), SuppressUnmanagedCodeSecurity]
1301 public extern static int GeomTriMeshGetTriangleCount(IntPtr g); 1301 internal extern static int GeomTriMeshGetTriangleCount(IntPtr g);
1302 1302
1303 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriMeshDataID"), SuppressUnmanagedCodeSecurity] 1303 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriMeshDataID"), SuppressUnmanagedCodeSecurity]
1304 public static extern IntPtr GeomTriMeshGetTriMeshDataID(IntPtr g); 1304 internal static extern IntPtr GeomTriMeshGetTriMeshDataID(IntPtr g);
1305 1305
1306 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshIsTCEnabled"), SuppressUnmanagedCodeSecurity] 1306 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshIsTCEnabled"), SuppressUnmanagedCodeSecurity]
1307 public static extern bool GeomTriMeshIsTCEnabled(IntPtr g, int geomClass); 1307 internal static extern bool GeomTriMeshIsTCEnabled(IntPtr g, int geomClass);
1308 1308
1309 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetArrayCallback"), SuppressUnmanagedCodeSecurity] 1309 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetArrayCallback"), SuppressUnmanagedCodeSecurity]
1310 public static extern void GeomTriMeshSetArrayCallback(IntPtr g, TriArrayCallback arrayCallback); 1310 internal static extern void GeomTriMeshSetArrayCallback(IntPtr g, TriArrayCallback arrayCallback);
1311 1311
1312 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetCallback"), SuppressUnmanagedCodeSecurity] 1312 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetCallback"), SuppressUnmanagedCodeSecurity]
1313 public static extern void GeomTriMeshSetCallback(IntPtr g, TriCallback callback); 1313 internal static extern void GeomTriMeshSetCallback(IntPtr g, TriCallback callback);
1314 1314
1315 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetData"), SuppressUnmanagedCodeSecurity] 1315 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetData"), SuppressUnmanagedCodeSecurity]
1316 public static extern void GeomTriMeshSetData(IntPtr g, IntPtr data); 1316 internal static extern void GeomTriMeshSetData(IntPtr g, IntPtr data);
1317 1317
1318 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity] 1318 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity]
1319 public static extern void GeomTriMeshSetLastTransform(IntPtr g, ref Matrix4 last_trans); 1319 internal static extern void GeomTriMeshSetLastTransform(IntPtr g, ref Matrix4 last_trans);
1320 1320
1321 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity] 1321 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity]
1322 public static extern void GeomTriMeshSetLastTransform(IntPtr g, ref dReal M00); 1322 internal static extern void GeomTriMeshSetLastTransform(IntPtr g, ref dReal M00);
1323 1323
1324 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetRayCallback"), SuppressUnmanagedCodeSecurity] 1324 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetRayCallback"), SuppressUnmanagedCodeSecurity]
1325 public static extern void GeomTriMeshSetRayCallback(IntPtr g, TriRayCallback callback); 1325 internal static extern void GeomTriMeshSetRayCallback(IntPtr g, TriRayCallback callback);
1326 1326
1327 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGetConfiguration"), SuppressUnmanagedCodeSecurity] 1327 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGetConfiguration"), SuppressUnmanagedCodeSecurity]
1328 public static extern IntPtr iGetConfiguration(); 1328 internal static extern IntPtr iGetConfiguration();
1329 1329
1330 public static string GetConfiguration() 1330 internal static string GetConfiguration()
1331 { 1331 {
1332 IntPtr ptr = iGetConfiguration(); 1332 IntPtr ptr = iGetConfiguration();
1333 string s = Marshal.PtrToStringAnsi(ptr); 1333 string s = Marshal.PtrToStringAnsi(ptr);
@@ -1335,691 +1335,691 @@ namespace OpenSim.Region.PhysicsModule.ODE
1335 } 1335 }
1336 1336
1337 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceCreate"), SuppressUnmanagedCodeSecurity] 1337 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceCreate"), SuppressUnmanagedCodeSecurity]
1338 public static extern IntPtr HashSpaceCreate(IntPtr space); 1338 internal static extern IntPtr HashSpaceCreate(IntPtr space);
1339 1339
1340 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceGetLevels"), SuppressUnmanagedCodeSecurity] 1340 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceGetLevels"), SuppressUnmanagedCodeSecurity]
1341 public static extern void HashSpaceGetLevels(IntPtr space, out int minlevel, out int maxlevel); 1341 internal static extern void HashSpaceGetLevels(IntPtr space, out int minlevel, out int maxlevel);
1342 1342
1343 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceSetLevels"), SuppressUnmanagedCodeSecurity] 1343 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceSetLevels"), SuppressUnmanagedCodeSecurity]
1344 public static extern void HashSpaceSetLevels(IntPtr space, int minlevel, int maxlevel); 1344 internal static extern void HashSpaceSetLevels(IntPtr space, int minlevel, int maxlevel);
1345 1345
1346 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInfiniteAABB"), SuppressUnmanagedCodeSecurity] 1346 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInfiniteAABB"), SuppressUnmanagedCodeSecurity]
1347 public static extern void InfiniteAABB(IntPtr geom, out AABB aabb); 1347 internal static extern void InfiniteAABB(IntPtr geom, out AABB aabb);
1348 1348
1349 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE"), SuppressUnmanagedCodeSecurity] 1349 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE"), SuppressUnmanagedCodeSecurity]
1350 public static extern void InitODE(); 1350 internal static extern void InitODE();
1351 1351
1352 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE2"), SuppressUnmanagedCodeSecurity] 1352 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE2"), SuppressUnmanagedCodeSecurity]
1353 public static extern int InitODE2(uint ODEInitFlags); 1353 internal static extern int InitODE2(uint ODEInitFlags);
1354 1354
1355 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dIsPositiveDefinite"), SuppressUnmanagedCodeSecurity] 1355 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dIsPositiveDefinite"), SuppressUnmanagedCodeSecurity]
1356 public static extern int IsPositiveDefinite(ref dReal A, int n); 1356 internal static extern int IsPositiveDefinite(ref dReal A, int n);
1357 1357
1358 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInvertPDMatrix"), SuppressUnmanagedCodeSecurity] 1358 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInvertPDMatrix"), SuppressUnmanagedCodeSecurity]
1359 public static extern int InvertPDMatrix(ref dReal A, out dReal Ainv, int n); 1359 internal static extern int InvertPDMatrix(ref dReal A, out dReal Ainv, int n);
1360 1360
1361 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddAMotorTorques"), SuppressUnmanagedCodeSecurity] 1361 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddAMotorTorques"), SuppressUnmanagedCodeSecurity]
1362 public static extern void JointAddAMotorTorques(IntPtr joint, dReal torque1, dReal torque2, dReal torque3); 1362 internal static extern void JointAddAMotorTorques(IntPtr joint, dReal torque1, dReal torque2, dReal torque3);
1363 1363
1364 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHingeTorque"), SuppressUnmanagedCodeSecurity] 1364 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHingeTorque"), SuppressUnmanagedCodeSecurity]
1365 public static extern void JointAddHingeTorque(IntPtr joint, dReal torque); 1365 internal static extern void JointAddHingeTorque(IntPtr joint, dReal torque);
1366 1366
1367 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHinge2Torque"), SuppressUnmanagedCodeSecurity] 1367 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHinge2Torque"), SuppressUnmanagedCodeSecurity]
1368 public static extern void JointAddHinge2Torques(IntPtr joint, dReal torque1, dReal torque2); 1368 internal static extern void JointAddHinge2Torques(IntPtr joint, dReal torque1, dReal torque2);
1369 1369
1370 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddPRTorque"), SuppressUnmanagedCodeSecurity] 1370 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddPRTorque"), SuppressUnmanagedCodeSecurity]
1371 public static extern void JointAddPRTorque(IntPtr joint, dReal torque); 1371 internal static extern void JointAddPRTorque(IntPtr joint, dReal torque);
1372 1372
1373 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddUniversalTorque"), SuppressUnmanagedCodeSecurity] 1373 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddUniversalTorque"), SuppressUnmanagedCodeSecurity]
1374 public static extern void JointAddUniversalTorques(IntPtr joint, dReal torque1, dReal torque2); 1374 internal static extern void JointAddUniversalTorques(IntPtr joint, dReal torque1, dReal torque2);
1375 1375
1376 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddSliderForce"), SuppressUnmanagedCodeSecurity] 1376 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddSliderForce"), SuppressUnmanagedCodeSecurity]
1377 public static extern void JointAddSliderForce(IntPtr joint, dReal force); 1377 internal static extern void JointAddSliderForce(IntPtr joint, dReal force);
1378 1378
1379 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAttach"), SuppressUnmanagedCodeSecurity] 1379 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAttach"), SuppressUnmanagedCodeSecurity]
1380 public static extern void JointAttach(IntPtr joint, IntPtr body1, IntPtr body2); 1380 internal static extern void JointAttach(IntPtr joint, IntPtr body1, IntPtr body2);
1381 1381
1382 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateAMotor"), SuppressUnmanagedCodeSecurity] 1382 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateAMotor"), SuppressUnmanagedCodeSecurity]
1383 public static extern IntPtr JointCreateAMotor(IntPtr world, IntPtr group); 1383 internal static extern IntPtr JointCreateAMotor(IntPtr world, IntPtr group);
1384 1384
1385 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateBall"), SuppressUnmanagedCodeSecurity] 1385 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateBall"), SuppressUnmanagedCodeSecurity]
1386 public static extern IntPtr JointCreateBall(IntPtr world, IntPtr group); 1386 internal static extern IntPtr JointCreateBall(IntPtr world, IntPtr group);
1387 1387
1388 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity] 1388 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity]
1389 public static extern IntPtr JointCreateContact(IntPtr world, IntPtr group, ref Contact contact); 1389 internal static extern IntPtr JointCreateContact(IntPtr world, IntPtr group, ref Contact contact);
1390 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity] 1390 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity]
1391 public static extern IntPtr JointCreateContactPtr(IntPtr world, IntPtr group, IntPtr contact); 1391 internal static extern IntPtr JointCreateContactPtr(IntPtr world, IntPtr group, IntPtr contact);
1392 1392
1393 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateFixed"), SuppressUnmanagedCodeSecurity] 1393 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateFixed"), SuppressUnmanagedCodeSecurity]
1394 public static extern IntPtr JointCreateFixed(IntPtr world, IntPtr group); 1394 internal static extern IntPtr JointCreateFixed(IntPtr world, IntPtr group);
1395 1395
1396 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge"), SuppressUnmanagedCodeSecurity] 1396 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge"), SuppressUnmanagedCodeSecurity]
1397 public static extern IntPtr JointCreateHinge(IntPtr world, IntPtr group); 1397 internal static extern IntPtr JointCreateHinge(IntPtr world, IntPtr group);
1398 1398
1399 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge2"), SuppressUnmanagedCodeSecurity] 1399 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge2"), SuppressUnmanagedCodeSecurity]
1400 public static extern IntPtr JointCreateHinge2(IntPtr world, IntPtr group); 1400 internal static extern IntPtr JointCreateHinge2(IntPtr world, IntPtr group);
1401 1401
1402 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateLMotor"), SuppressUnmanagedCodeSecurity] 1402 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateLMotor"), SuppressUnmanagedCodeSecurity]
1403 public static extern IntPtr JointCreateLMotor(IntPtr world, IntPtr group); 1403 internal static extern IntPtr JointCreateLMotor(IntPtr world, IntPtr group);
1404 1404
1405 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateNull"), SuppressUnmanagedCodeSecurity] 1405 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateNull"), SuppressUnmanagedCodeSecurity]
1406 public static extern IntPtr JointCreateNull(IntPtr world, IntPtr group); 1406 internal static extern IntPtr JointCreateNull(IntPtr world, IntPtr group);
1407 1407
1408 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePR"), SuppressUnmanagedCodeSecurity] 1408 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePR"), SuppressUnmanagedCodeSecurity]
1409 public static extern IntPtr JointCreatePR(IntPtr world, IntPtr group); 1409 internal static extern IntPtr JointCreatePR(IntPtr world, IntPtr group);
1410 1410
1411 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePlane2D"), SuppressUnmanagedCodeSecurity] 1411 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePlane2D"), SuppressUnmanagedCodeSecurity]
1412 public static extern IntPtr JointCreatePlane2D(IntPtr world, IntPtr group); 1412 internal static extern IntPtr JointCreatePlane2D(IntPtr world, IntPtr group);
1413 1413
1414 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateSlider"), SuppressUnmanagedCodeSecurity] 1414 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateSlider"), SuppressUnmanagedCodeSecurity]
1415 public static extern IntPtr JointCreateSlider(IntPtr world, IntPtr group); 1415 internal static extern IntPtr JointCreateSlider(IntPtr world, IntPtr group);
1416 1416
1417 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateUniversal"), SuppressUnmanagedCodeSecurity] 1417 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateUniversal"), SuppressUnmanagedCodeSecurity]
1418 public static extern IntPtr JointCreateUniversal(IntPtr world, IntPtr group); 1418 internal static extern IntPtr JointCreateUniversal(IntPtr world, IntPtr group);
1419 1419
1420 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointDestroy"), SuppressUnmanagedCodeSecurity] 1420 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointDestroy"), SuppressUnmanagedCodeSecurity]
1421 public static extern void JointDestroy(IntPtr j); 1421 internal static extern void JointDestroy(IntPtr j);
1422 1422
1423 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngle"), SuppressUnmanagedCodeSecurity] 1423 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngle"), SuppressUnmanagedCodeSecurity]
1424 public static extern dReal JointGetAMotorAngle(IntPtr j, int anum); 1424 internal static extern dReal JointGetAMotorAngle(IntPtr j, int anum);
1425 1425
1426 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngleRate"), SuppressUnmanagedCodeSecurity] 1426 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngleRate"), SuppressUnmanagedCodeSecurity]
1427 public static extern dReal JointGetAMotorAngleRate(IntPtr j, int anum); 1427 internal static extern dReal JointGetAMotorAngleRate(IntPtr j, int anum);
1428 1428
1429 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxis"), SuppressUnmanagedCodeSecurity] 1429 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxis"), SuppressUnmanagedCodeSecurity]
1430 public static extern void JointGetAMotorAxis(IntPtr j, int anum, out Vector3 result); 1430 internal static extern void JointGetAMotorAxis(IntPtr j, int anum, out Vector3 result);
1431 1431
1432 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxisRel"), SuppressUnmanagedCodeSecurity] 1432 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxisRel"), SuppressUnmanagedCodeSecurity]
1433 public static extern int JointGetAMotorAxisRel(IntPtr j, int anum); 1433 internal static extern int JointGetAMotorAxisRel(IntPtr j, int anum);
1434 1434
1435 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorMode"), SuppressUnmanagedCodeSecurity] 1435 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorMode"), SuppressUnmanagedCodeSecurity]
1436 public static extern int JointGetAMotorMode(IntPtr j); 1436 internal static extern int JointGetAMotorMode(IntPtr j);
1437 1437
1438 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1438 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1439 public static extern int JointGetAMotorNumAxes(IntPtr j); 1439 internal static extern int JointGetAMotorNumAxes(IntPtr j);
1440 1440
1441 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorParam"), SuppressUnmanagedCodeSecurity] 1441 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorParam"), SuppressUnmanagedCodeSecurity]
1442 public static extern dReal JointGetAMotorParam(IntPtr j, int parameter); 1442 internal static extern dReal JointGetAMotorParam(IntPtr j, int parameter);
1443 1443
1444 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor"), SuppressUnmanagedCodeSecurity] 1444 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor"), SuppressUnmanagedCodeSecurity]
1445 public static extern void JointGetBallAnchor(IntPtr j, out Vector3 result); 1445 internal static extern void JointGetBallAnchor(IntPtr j, out Vector3 result);
1446 1446
1447 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor2"), SuppressUnmanagedCodeSecurity] 1447 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor2"), SuppressUnmanagedCodeSecurity]
1448 public static extern void JointGetBallAnchor2(IntPtr j, out Vector3 result); 1448 internal static extern void JointGetBallAnchor2(IntPtr j, out Vector3 result);
1449 1449
1450 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBody"), SuppressUnmanagedCodeSecurity] 1450 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBody"), SuppressUnmanagedCodeSecurity]
1451 public static extern IntPtr JointGetBody(IntPtr j); 1451 internal static extern IntPtr JointGetBody(IntPtr j);
1452 1452
1453 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetData"), SuppressUnmanagedCodeSecurity] 1453 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetData"), SuppressUnmanagedCodeSecurity]
1454 public static extern IntPtr JointGetData(IntPtr j); 1454 internal static extern IntPtr JointGetData(IntPtr j);
1455 1455
1456 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetFeedback"), SuppressUnmanagedCodeSecurity] 1456 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetFeedback"), SuppressUnmanagedCodeSecurity]
1457 public extern unsafe static JointFeedback* JointGetFeedbackUnsafe(IntPtr j); 1457 internal extern unsafe static JointFeedback* JointGetFeedbackUnsafe(IntPtr j);
1458 public static JointFeedback JointGetFeedback(IntPtr j) 1458 internal static JointFeedback JointGetFeedback(IntPtr j)
1459 { 1459 {
1460 unsafe { return *(JointGetFeedbackUnsafe(j)); } 1460 unsafe { return *(JointGetFeedbackUnsafe(j)); }
1461 } 1461 }
1462 1462
1463 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor"), SuppressUnmanagedCodeSecurity] 1463 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor"), SuppressUnmanagedCodeSecurity]
1464 public static extern void JointGetHingeAnchor(IntPtr j, out Vector3 result); 1464 internal static extern void JointGetHingeAnchor(IntPtr j, out Vector3 result);
1465 1465
1466 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngle"), SuppressUnmanagedCodeSecurity] 1466 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngle"), SuppressUnmanagedCodeSecurity]
1467 public static extern dReal JointGetHingeAngle(IntPtr j); 1467 internal static extern dReal JointGetHingeAngle(IntPtr j);
1468 1468
1469 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngleRate"), SuppressUnmanagedCodeSecurity] 1469 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngleRate"), SuppressUnmanagedCodeSecurity]
1470 public static extern dReal JointGetHingeAngleRate(IntPtr j); 1470 internal static extern dReal JointGetHingeAngleRate(IntPtr j);
1471 1471
1472 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAxis"), SuppressUnmanagedCodeSecurity] 1472 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAxis"), SuppressUnmanagedCodeSecurity]
1473 public static extern void JointGetHingeAxis(IntPtr j, out Vector3 result); 1473 internal static extern void JointGetHingeAxis(IntPtr j, out Vector3 result);
1474 1474
1475 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeParam"), SuppressUnmanagedCodeSecurity] 1475 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeParam"), SuppressUnmanagedCodeSecurity]
1476 public static extern dReal JointGetHingeParam(IntPtr j, int parameter); 1476 internal static extern dReal JointGetHingeParam(IntPtr j, int parameter);
1477 1477
1478 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1"), SuppressUnmanagedCodeSecurity] 1478 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1"), SuppressUnmanagedCodeSecurity]
1479 public static extern dReal JointGetHinge2Angle1(IntPtr j); 1479 internal static extern dReal JointGetHinge2Angle1(IntPtr j);
1480 1480
1481 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1Rate"), SuppressUnmanagedCodeSecurity] 1481 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1Rate"), SuppressUnmanagedCodeSecurity]
1482 public static extern dReal JointGetHinge2Angle1Rate(IntPtr j); 1482 internal static extern dReal JointGetHinge2Angle1Rate(IntPtr j);
1483 1483
1484 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle2Rate"), SuppressUnmanagedCodeSecurity] 1484 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle2Rate"), SuppressUnmanagedCodeSecurity]
1485 public static extern dReal JointGetHinge2Angle2Rate(IntPtr j); 1485 internal static extern dReal JointGetHinge2Angle2Rate(IntPtr j);
1486 1486
1487 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor2"), SuppressUnmanagedCodeSecurity] 1487 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor2"), SuppressUnmanagedCodeSecurity]
1488 public static extern void JointGetHingeAnchor2(IntPtr j, out Vector3 result); 1488 internal static extern void JointGetHingeAnchor2(IntPtr j, out Vector3 result);
1489 1489
1490 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor"), SuppressUnmanagedCodeSecurity] 1490 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor"), SuppressUnmanagedCodeSecurity]
1491 public static extern void JointGetHinge2Anchor(IntPtr j, out Vector3 result); 1491 internal static extern void JointGetHinge2Anchor(IntPtr j, out Vector3 result);
1492 1492
1493 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor2"), SuppressUnmanagedCodeSecurity] 1493 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor2"), SuppressUnmanagedCodeSecurity]
1494 public static extern void JointGetHinge2Anchor2(IntPtr j, out Vector3 result); 1494 internal static extern void JointGetHinge2Anchor2(IntPtr j, out Vector3 result);
1495 1495
1496 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis1"), SuppressUnmanagedCodeSecurity] 1496 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis1"), SuppressUnmanagedCodeSecurity]
1497 public static extern void JointGetHinge2Axis1(IntPtr j, out Vector3 result); 1497 internal static extern void JointGetHinge2Axis1(IntPtr j, out Vector3 result);
1498 1498
1499 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis2"), SuppressUnmanagedCodeSecurity] 1499 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis2"), SuppressUnmanagedCodeSecurity]
1500 public static extern void JointGetHinge2Axis2(IntPtr j, out Vector3 result); 1500 internal static extern void JointGetHinge2Axis2(IntPtr j, out Vector3 result);
1501 1501
1502 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Param"), SuppressUnmanagedCodeSecurity] 1502 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Param"), SuppressUnmanagedCodeSecurity]
1503 public static extern dReal JointGetHinge2Param(IntPtr j, int parameter); 1503 internal static extern dReal JointGetHinge2Param(IntPtr j, int parameter);
1504 1504
1505 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorAxis"), SuppressUnmanagedCodeSecurity] 1505 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorAxis"), SuppressUnmanagedCodeSecurity]
1506 public static extern void JointGetLMotorAxis(IntPtr j, int anum, out Vector3 result); 1506 internal static extern void JointGetLMotorAxis(IntPtr j, int anum, out Vector3 result);
1507 1507
1508 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1508 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1509 public static extern int JointGetLMotorNumAxes(IntPtr j); 1509 internal static extern int JointGetLMotorNumAxes(IntPtr j);
1510 1510
1511 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorParam"), SuppressUnmanagedCodeSecurity] 1511 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorParam"), SuppressUnmanagedCodeSecurity]
1512 public static extern dReal JointGetLMotorParam(IntPtr j, int parameter); 1512 internal static extern dReal JointGetLMotorParam(IntPtr j, int parameter);
1513 1513
1514 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAnchor"), SuppressUnmanagedCodeSecurity] 1514 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAnchor"), SuppressUnmanagedCodeSecurity]
1515 public static extern void JointGetPRAnchor(IntPtr j, out Vector3 result); 1515 internal static extern void JointGetPRAnchor(IntPtr j, out Vector3 result);
1516 1516
1517 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis1"), SuppressUnmanagedCodeSecurity] 1517 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis1"), SuppressUnmanagedCodeSecurity]
1518 public static extern void JointGetPRAxis1(IntPtr j, out Vector3 result); 1518 internal static extern void JointGetPRAxis1(IntPtr j, out Vector3 result);
1519 1519
1520 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis2"), SuppressUnmanagedCodeSecurity] 1520 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis2"), SuppressUnmanagedCodeSecurity]
1521 public static extern void JointGetPRAxis2(IntPtr j, out Vector3 result); 1521 internal static extern void JointGetPRAxis2(IntPtr j, out Vector3 result);
1522 1522
1523 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRParam"), SuppressUnmanagedCodeSecurity] 1523 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRParam"), SuppressUnmanagedCodeSecurity]
1524 public static extern dReal JointGetPRParam(IntPtr j, int parameter); 1524 internal static extern dReal JointGetPRParam(IntPtr j, int parameter);
1525 1525
1526 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPosition"), SuppressUnmanagedCodeSecurity] 1526 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPosition"), SuppressUnmanagedCodeSecurity]
1527 public static extern dReal JointGetPRPosition(IntPtr j); 1527 internal static extern dReal JointGetPRPosition(IntPtr j);
1528 1528
1529 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPositionRate"), SuppressUnmanagedCodeSecurity] 1529 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPositionRate"), SuppressUnmanagedCodeSecurity]
1530 public static extern dReal JointGetPRPositionRate(IntPtr j); 1530 internal static extern dReal JointGetPRPositionRate(IntPtr j);
1531 1531
1532 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderAxis"), SuppressUnmanagedCodeSecurity] 1532 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderAxis"), SuppressUnmanagedCodeSecurity]
1533 public static extern void JointGetSliderAxis(IntPtr j, out Vector3 result); 1533 internal static extern void JointGetSliderAxis(IntPtr j, out Vector3 result);
1534 1534
1535 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderParam"), SuppressUnmanagedCodeSecurity] 1535 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderParam"), SuppressUnmanagedCodeSecurity]
1536 public static extern dReal JointGetSliderParam(IntPtr j, int parameter); 1536 internal static extern dReal JointGetSliderParam(IntPtr j, int parameter);
1537 1537
1538 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPosition"), SuppressUnmanagedCodeSecurity] 1538 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPosition"), SuppressUnmanagedCodeSecurity]
1539 public static extern dReal JointGetSliderPosition(IntPtr j); 1539 internal static extern dReal JointGetSliderPosition(IntPtr j);
1540 1540
1541 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPositionRate"), SuppressUnmanagedCodeSecurity] 1541 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPositionRate"), SuppressUnmanagedCodeSecurity]
1542 public static extern dReal JointGetSliderPositionRate(IntPtr j); 1542 internal static extern dReal JointGetSliderPositionRate(IntPtr j);
1543 1543
1544 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetType"), SuppressUnmanagedCodeSecurity] 1544 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetType"), SuppressUnmanagedCodeSecurity]
1545 public static extern JointType JointGetType(IntPtr j); 1545 internal static extern JointType JointGetType(IntPtr j);
1546 1546
1547 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor"), SuppressUnmanagedCodeSecurity] 1547 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor"), SuppressUnmanagedCodeSecurity]
1548 public static extern void JointGetUniversalAnchor(IntPtr j, out Vector3 result); 1548 internal static extern void JointGetUniversalAnchor(IntPtr j, out Vector3 result);
1549 1549
1550 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor2"), SuppressUnmanagedCodeSecurity] 1550 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor2"), SuppressUnmanagedCodeSecurity]
1551 public static extern void JointGetUniversalAnchor2(IntPtr j, out Vector3 result); 1551 internal static extern void JointGetUniversalAnchor2(IntPtr j, out Vector3 result);
1552 1552
1553 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1"), SuppressUnmanagedCodeSecurity] 1553 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1"), SuppressUnmanagedCodeSecurity]
1554 public static extern dReal JointGetUniversalAngle1(IntPtr j); 1554 internal static extern dReal JointGetUniversalAngle1(IntPtr j);
1555 1555
1556 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1Rate"), SuppressUnmanagedCodeSecurity] 1556 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1Rate"), SuppressUnmanagedCodeSecurity]
1557 public static extern dReal JointGetUniversalAngle1Rate(IntPtr j); 1557 internal static extern dReal JointGetUniversalAngle1Rate(IntPtr j);
1558 1558
1559 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2"), SuppressUnmanagedCodeSecurity] 1559 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2"), SuppressUnmanagedCodeSecurity]
1560 public static extern dReal JointGetUniversalAngle2(IntPtr j); 1560 internal static extern dReal JointGetUniversalAngle2(IntPtr j);
1561 1561
1562 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2Rate"), SuppressUnmanagedCodeSecurity] 1562 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2Rate"), SuppressUnmanagedCodeSecurity]
1563 public static extern dReal JointGetUniversalAngle2Rate(IntPtr j); 1563 internal static extern dReal JointGetUniversalAngle2Rate(IntPtr j);
1564 1564
1565 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngles"), SuppressUnmanagedCodeSecurity] 1565 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngles"), SuppressUnmanagedCodeSecurity]
1566 public static extern void JointGetUniversalAngles(IntPtr j, out dReal angle1, out dReal angle2); 1566 internal static extern void JointGetUniversalAngles(IntPtr j, out dReal angle1, out dReal angle2);
1567 1567
1568 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis1"), SuppressUnmanagedCodeSecurity] 1568 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis1"), SuppressUnmanagedCodeSecurity]
1569 public static extern void JointGetUniversalAxis1(IntPtr j, out Vector3 result); 1569 internal static extern void JointGetUniversalAxis1(IntPtr j, out Vector3 result);
1570 1570
1571 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis2"), SuppressUnmanagedCodeSecurity] 1571 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis2"), SuppressUnmanagedCodeSecurity]
1572 public static extern void JointGetUniversalAxis2(IntPtr j, out Vector3 result); 1572 internal static extern void JointGetUniversalAxis2(IntPtr j, out Vector3 result);
1573 1573
1574 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalParam"), SuppressUnmanagedCodeSecurity] 1574 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalParam"), SuppressUnmanagedCodeSecurity]
1575 public static extern dReal JointGetUniversalParam(IntPtr j, int parameter); 1575 internal static extern dReal JointGetUniversalParam(IntPtr j, int parameter);
1576 1576
1577 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupCreate"), SuppressUnmanagedCodeSecurity] 1577 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupCreate"), SuppressUnmanagedCodeSecurity]
1578 public static extern IntPtr JointGroupCreate(int max_size); 1578 internal static extern IntPtr JointGroupCreate(int max_size);
1579 1579
1580 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupDestroy"), SuppressUnmanagedCodeSecurity] 1580 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupDestroy"), SuppressUnmanagedCodeSecurity]
1581 public static extern void JointGroupDestroy(IntPtr group); 1581 internal static extern void JointGroupDestroy(IntPtr group);
1582 1582
1583 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupEmpty"), SuppressUnmanagedCodeSecurity] 1583 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupEmpty"), SuppressUnmanagedCodeSecurity]
1584 public static extern void JointGroupEmpty(IntPtr group); 1584 internal static extern void JointGroupEmpty(IntPtr group);
1585 1585
1586 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAngle"), SuppressUnmanagedCodeSecurity] 1586 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAngle"), SuppressUnmanagedCodeSecurity]
1587 public static extern void JointSetAMotorAngle(IntPtr j, int anum, dReal angle); 1587 internal static extern void JointSetAMotorAngle(IntPtr j, int anum, dReal angle);
1588 1588
1589 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAxis"), SuppressUnmanagedCodeSecurity] 1589 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAxis"), SuppressUnmanagedCodeSecurity]
1590 public static extern void JointSetAMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z); 1590 internal static extern void JointSetAMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z);
1591 1591
1592 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorMode"), SuppressUnmanagedCodeSecurity] 1592 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorMode"), SuppressUnmanagedCodeSecurity]
1593 public static extern void JointSetAMotorMode(IntPtr j, int mode); 1593 internal static extern void JointSetAMotorMode(IntPtr j, int mode);
1594 1594
1595 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1595 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1596 public static extern void JointSetAMotorNumAxes(IntPtr group, int num); 1596 internal static extern void JointSetAMotorNumAxes(IntPtr group, int num);
1597 1597
1598 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorParam"), SuppressUnmanagedCodeSecurity] 1598 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorParam"), SuppressUnmanagedCodeSecurity]
1599 public static extern void JointSetAMotorParam(IntPtr group, int parameter, dReal value); 1599 internal static extern void JointSetAMotorParam(IntPtr group, int parameter, dReal value);
1600 1600
1601 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor"), SuppressUnmanagedCodeSecurity] 1601 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor"), SuppressUnmanagedCodeSecurity]
1602 public static extern void JointSetBallAnchor(IntPtr j, dReal x, dReal y, dReal z); 1602 internal static extern void JointSetBallAnchor(IntPtr j, dReal x, dReal y, dReal z);
1603 1603
1604 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor2"), SuppressUnmanagedCodeSecurity] 1604 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor2"), SuppressUnmanagedCodeSecurity]
1605 public static extern void JointSetBallAnchor2(IntPtr j, dReal x, dReal y, dReal z); 1605 internal static extern void JointSetBallAnchor2(IntPtr j, dReal x, dReal y, dReal z);
1606 1606
1607 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetData"), SuppressUnmanagedCodeSecurity] 1607 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetData"), SuppressUnmanagedCodeSecurity]
1608 public static extern void JointSetData(IntPtr j, IntPtr data); 1608 internal static extern void JointSetData(IntPtr j, IntPtr data);
1609 1609
1610 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFeedback"), SuppressUnmanagedCodeSecurity] 1610 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFeedback"), SuppressUnmanagedCodeSecurity]
1611 public static extern void JointSetFeedback(IntPtr j, out JointFeedback feedback); 1611 internal static extern void JointSetFeedback(IntPtr j, out JointFeedback feedback);
1612 1612
1613 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFixed"), SuppressUnmanagedCodeSecurity] 1613 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFixed"), SuppressUnmanagedCodeSecurity]
1614 public static extern void JointSetFixed(IntPtr j); 1614 internal static extern void JointSetFixed(IntPtr j);
1615 1615
1616 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchor"), SuppressUnmanagedCodeSecurity] 1616 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchor"), SuppressUnmanagedCodeSecurity]
1617 public static extern void JointSetHingeAnchor(IntPtr j, dReal x, dReal y, dReal z); 1617 internal static extern void JointSetHingeAnchor(IntPtr j, dReal x, dReal y, dReal z);
1618 1618
1619 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchorDelta"), SuppressUnmanagedCodeSecurity] 1619 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchorDelta"), SuppressUnmanagedCodeSecurity]
1620 public static extern void JointSetHingeAnchorDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az); 1620 internal static extern void JointSetHingeAnchorDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
1621 1621
1622 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAxis"), SuppressUnmanagedCodeSecurity] 1622 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAxis"), SuppressUnmanagedCodeSecurity]
1623 public static extern void JointSetHingeAxis(IntPtr j, dReal x, dReal y, dReal z); 1623 internal static extern void JointSetHingeAxis(IntPtr j, dReal x, dReal y, dReal z);
1624 1624
1625 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeParam"), SuppressUnmanagedCodeSecurity] 1625 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeParam"), SuppressUnmanagedCodeSecurity]
1626 public static extern void JointSetHingeParam(IntPtr j, int parameter, dReal value); 1626 internal static extern void JointSetHingeParam(IntPtr j, int parameter, dReal value);
1627 1627
1628 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Anchor"), SuppressUnmanagedCodeSecurity] 1628 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Anchor"), SuppressUnmanagedCodeSecurity]
1629 public static extern void JointSetHinge2Anchor(IntPtr j, dReal x, dReal y, dReal z); 1629 internal static extern void JointSetHinge2Anchor(IntPtr j, dReal x, dReal y, dReal z);
1630 1630
1631 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis1"), SuppressUnmanagedCodeSecurity] 1631 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis1"), SuppressUnmanagedCodeSecurity]
1632 public static extern void JointSetHinge2Axis1(IntPtr j, dReal x, dReal y, dReal z); 1632 internal static extern void JointSetHinge2Axis1(IntPtr j, dReal x, dReal y, dReal z);
1633 1633
1634 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis2"), SuppressUnmanagedCodeSecurity] 1634 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis2"), SuppressUnmanagedCodeSecurity]
1635 public static extern void JointSetHinge2Axis2(IntPtr j, dReal x, dReal y, dReal z); 1635 internal static extern void JointSetHinge2Axis2(IntPtr j, dReal x, dReal y, dReal z);
1636 1636
1637 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Param"), SuppressUnmanagedCodeSecurity] 1637 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Param"), SuppressUnmanagedCodeSecurity]
1638 public static extern void JointSetHinge2Param(IntPtr j, int parameter, dReal value); 1638 internal static extern void JointSetHinge2Param(IntPtr j, int parameter, dReal value);
1639 1639
1640 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorAxis"), SuppressUnmanagedCodeSecurity] 1640 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorAxis"), SuppressUnmanagedCodeSecurity]
1641 public static extern void JointSetLMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z); 1641 internal static extern void JointSetLMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z);
1642 1642
1643 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1643 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1644 public static extern void JointSetLMotorNumAxes(IntPtr j, int num); 1644 internal static extern void JointSetLMotorNumAxes(IntPtr j, int num);
1645 1645
1646 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorParam"), SuppressUnmanagedCodeSecurity] 1646 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorParam"), SuppressUnmanagedCodeSecurity]
1647 public static extern void JointSetLMotorParam(IntPtr j, int parameter, dReal value); 1647 internal static extern void JointSetLMotorParam(IntPtr j, int parameter, dReal value);
1648 1648
1649 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DAngleParam"), SuppressUnmanagedCodeSecurity] 1649 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DAngleParam"), SuppressUnmanagedCodeSecurity]
1650 public static extern void JointSetPlane2DAngleParam(IntPtr j, int parameter, dReal value); 1650 internal static extern void JointSetPlane2DAngleParam(IntPtr j, int parameter, dReal value);
1651 1651
1652 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DXParam"), SuppressUnmanagedCodeSecurity] 1652 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DXParam"), SuppressUnmanagedCodeSecurity]
1653 public static extern void JointSetPlane2DXParam(IntPtr j, int parameter, dReal value); 1653 internal static extern void JointSetPlane2DXParam(IntPtr j, int parameter, dReal value);
1654 1654
1655 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DYParam"), SuppressUnmanagedCodeSecurity] 1655 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DYParam"), SuppressUnmanagedCodeSecurity]
1656 public static extern void JointSetPlane2DYParam(IntPtr j, int parameter, dReal value); 1656 internal static extern void JointSetPlane2DYParam(IntPtr j, int parameter, dReal value);
1657 1657
1658 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAnchor"), SuppressUnmanagedCodeSecurity] 1658 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAnchor"), SuppressUnmanagedCodeSecurity]
1659 public static extern void JointSetPRAnchor(IntPtr j, dReal x, dReal y, dReal z); 1659 internal static extern void JointSetPRAnchor(IntPtr j, dReal x, dReal y, dReal z);
1660 1660
1661 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis1"), SuppressUnmanagedCodeSecurity] 1661 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis1"), SuppressUnmanagedCodeSecurity]
1662 public static extern void JointSetPRAxis1(IntPtr j, dReal x, dReal y, dReal z); 1662 internal static extern void JointSetPRAxis1(IntPtr j, dReal x, dReal y, dReal z);
1663 1663
1664 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis2"), SuppressUnmanagedCodeSecurity] 1664 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis2"), SuppressUnmanagedCodeSecurity]
1665 public static extern void JointSetPRAxis2(IntPtr j, dReal x, dReal y, dReal z); 1665 internal static extern void JointSetPRAxis2(IntPtr j, dReal x, dReal y, dReal z);
1666 1666
1667 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRParam"), SuppressUnmanagedCodeSecurity] 1667 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRParam"), SuppressUnmanagedCodeSecurity]
1668 public static extern void JointSetPRParam(IntPtr j, int parameter, dReal value); 1668 internal static extern void JointSetPRParam(IntPtr j, int parameter, dReal value);
1669 1669
1670 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxis"), SuppressUnmanagedCodeSecurity] 1670 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxis"), SuppressUnmanagedCodeSecurity]
1671 public static extern void JointSetSliderAxis(IntPtr j, dReal x, dReal y, dReal z); 1671 internal static extern void JointSetSliderAxis(IntPtr j, dReal x, dReal y, dReal z);
1672 1672
1673 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxisDelta"), SuppressUnmanagedCodeSecurity] 1673 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxisDelta"), SuppressUnmanagedCodeSecurity]
1674 public static extern void JointSetSliderAxisDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az); 1674 internal static extern void JointSetSliderAxisDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
1675 1675
1676 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderParam"), SuppressUnmanagedCodeSecurity] 1676 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderParam"), SuppressUnmanagedCodeSecurity]
1677 public static extern void JointSetSliderParam(IntPtr j, int parameter, dReal value); 1677 internal static extern void JointSetSliderParam(IntPtr j, int parameter, dReal value);
1678 1678
1679 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAnchor"), SuppressUnmanagedCodeSecurity] 1679 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAnchor"), SuppressUnmanagedCodeSecurity]
1680 public static extern void JointSetUniversalAnchor(IntPtr j, dReal x, dReal y, dReal z); 1680 internal static extern void JointSetUniversalAnchor(IntPtr j, dReal x, dReal y, dReal z);
1681 1681
1682 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis1"), SuppressUnmanagedCodeSecurity] 1682 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis1"), SuppressUnmanagedCodeSecurity]
1683 public static extern void JointSetUniversalAxis1(IntPtr j, dReal x, dReal y, dReal z); 1683 internal static extern void JointSetUniversalAxis1(IntPtr j, dReal x, dReal y, dReal z);
1684 1684
1685 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis2"), SuppressUnmanagedCodeSecurity] 1685 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis2"), SuppressUnmanagedCodeSecurity]
1686 public static extern void JointSetUniversalAxis2(IntPtr j, dReal x, dReal y, dReal z); 1686 internal static extern void JointSetUniversalAxis2(IntPtr j, dReal x, dReal y, dReal z);
1687 1687
1688 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalParam"), SuppressUnmanagedCodeSecurity] 1688 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalParam"), SuppressUnmanagedCodeSecurity]
1689 public static extern void JointSetUniversalParam(IntPtr j, int parameter, dReal value); 1689 internal static extern void JointSetUniversalParam(IntPtr j, int parameter, dReal value);
1690 1690
1691 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dLDLTAddTL"), SuppressUnmanagedCodeSecurity] 1691 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dLDLTAddTL"), SuppressUnmanagedCodeSecurity]
1692 public static extern void LDLTAddTL(ref dReal L, ref dReal d, ref dReal a, int n, int nskip); 1692 internal static extern void LDLTAddTL(ref dReal L, ref dReal d, ref dReal a, int n, int nskip);
1693 1693
1694 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdd"), SuppressUnmanagedCodeSecurity] 1694 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdd"), SuppressUnmanagedCodeSecurity]
1695 public static extern void MassAdd(ref Mass a, ref Mass b); 1695 internal static extern void MassAdd(ref Mass a, ref Mass b);
1696 1696
1697 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdjust"), SuppressUnmanagedCodeSecurity] 1697 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdjust"), SuppressUnmanagedCodeSecurity]
1698 public static extern void MassAdjust(ref Mass m, dReal newmass); 1698 internal static extern void MassAdjust(ref Mass m, dReal newmass);
1699 1699
1700 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassCheck"), SuppressUnmanagedCodeSecurity] 1700 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassCheck"), SuppressUnmanagedCodeSecurity]
1701 public static extern bool MassCheck(ref Mass m); 1701 internal static extern bool MassCheck(ref Mass m);
1702 1702
1703 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity] 1703 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity]
1704 public static extern void MassRotate(ref Mass mass, ref Matrix3 R); 1704 internal static extern void MassRotate(ref Mass mass, ref Matrix3 R);
1705 1705
1706 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity] 1706 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity]
1707 public static extern void MassRotate(ref Mass mass, ref dReal M00); 1707 internal static extern void MassRotate(ref Mass mass, ref dReal M00);
1708 1708
1709 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBox"), SuppressUnmanagedCodeSecurity] 1709 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBox"), SuppressUnmanagedCodeSecurity]
1710 public static extern void MassSetBox(out Mass mass, dReal density, dReal lx, dReal ly, dReal lz); 1710 internal static extern void MassSetBox(out Mass mass, dReal density, dReal lx, dReal ly, dReal lz);
1711 1711
1712 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBoxTotal"), SuppressUnmanagedCodeSecurity] 1712 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBoxTotal"), SuppressUnmanagedCodeSecurity]
1713 public static extern void MassSetBoxTotal(out Mass mass, dReal total_mass, dReal lx, dReal ly, dReal lz); 1713 internal static extern void MassSetBoxTotal(out Mass mass, dReal total_mass, dReal lx, dReal ly, dReal lz);
1714 1714
1715 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsule"), SuppressUnmanagedCodeSecurity] 1715 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsule"), SuppressUnmanagedCodeSecurity]
1716 public static extern void MassSetCapsule(out Mass mass, dReal density, int direction, dReal radius, dReal length); 1716 internal static extern void MassSetCapsule(out Mass mass, dReal density, int direction, dReal radius, dReal length);
1717 1717
1718 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsuleTotal"), SuppressUnmanagedCodeSecurity] 1718 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsuleTotal"), SuppressUnmanagedCodeSecurity]
1719 public static extern void MassSetCapsuleTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length); 1719 internal static extern void MassSetCapsuleTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length);
1720 1720
1721 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinder"), SuppressUnmanagedCodeSecurity] 1721 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinder"), SuppressUnmanagedCodeSecurity]
1722 public static extern void MassSetCylinder(out Mass mass, dReal density, int direction, dReal radius, dReal length); 1722 internal static extern void MassSetCylinder(out Mass mass, dReal density, int direction, dReal radius, dReal length);
1723 1723
1724 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinderTotal"), SuppressUnmanagedCodeSecurity] 1724 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinderTotal"), SuppressUnmanagedCodeSecurity]
1725 public static extern void MassSetCylinderTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length); 1725 internal static extern void MassSetCylinderTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length);
1726 1726
1727 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetParameters"), SuppressUnmanagedCodeSecurity] 1727 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetParameters"), SuppressUnmanagedCodeSecurity]
1728 public static extern void MassSetParameters(out Mass mass, dReal themass, 1728 internal static extern void MassSetParameters(out Mass mass, dReal themass,
1729 dReal cgx, dReal cgy, dReal cgz, 1729 dReal cgx, dReal cgy, dReal cgz,
1730 dReal i11, dReal i22, dReal i33, 1730 dReal i11, dReal i22, dReal i33,
1731 dReal i12, dReal i13, dReal i23); 1731 dReal i12, dReal i13, dReal i23);
1732 1732
1733 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphere"), SuppressUnmanagedCodeSecurity] 1733 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphere"), SuppressUnmanagedCodeSecurity]
1734 public static extern void MassSetSphere(out Mass mass, dReal density, dReal radius); 1734 internal static extern void MassSetSphere(out Mass mass, dReal density, dReal radius);
1735 1735
1736 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphereTotal"), SuppressUnmanagedCodeSecurity] 1736 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphereTotal"), SuppressUnmanagedCodeSecurity]
1737 public static extern void dMassSetSphereTotal(out Mass mass, dReal total_mass, dReal radius); 1737 internal static extern void dMassSetSphereTotal(out Mass mass, dReal total_mass, dReal radius);
1738 1738
1739 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetTrimesh"), SuppressUnmanagedCodeSecurity] 1739 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetTrimesh"), SuppressUnmanagedCodeSecurity]
1740 public static extern void MassSetTrimesh(out Mass mass, dReal density, IntPtr g); 1740 internal static extern void MassSetTrimesh(out Mass mass, dReal density, IntPtr g);
1741 1741
1742 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetZero"), SuppressUnmanagedCodeSecurity] 1742 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetZero"), SuppressUnmanagedCodeSecurity]
1743 public static extern void MassSetZero(out Mass mass); 1743 internal static extern void MassSetZero(out Mass mass);
1744 1744
1745 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassTranslate"), SuppressUnmanagedCodeSecurity] 1745 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassTranslate"), SuppressUnmanagedCodeSecurity]
1746 public static extern void MassTranslate(ref Mass mass, dReal x, dReal y, dReal z); 1746 internal static extern void MassTranslate(ref Mass mass, dReal x, dReal y, dReal z);
1747 1747
1748 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity] 1748 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity]
1749 public static extern void Multiply0(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r); 1749 internal static extern void Multiply0(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r);
1750 1750
1751 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity] 1751 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity]
1752 private static extern void MultiplyiM3V3(out Vector3 vout, ref Matrix3 matrix, ref Vector3 vect,int p, int q, int r); 1752 private static extern void MultiplyiM3V3(out Vector3 vout, ref Matrix3 matrix, ref Vector3 vect,int p, int q, int r);
1753 public static void MultiplyM3V3(out Vector3 outvector, ref Matrix3 matrix, ref Vector3 invector) 1753 internal static void MultiplyM3V3(out Vector3 outvector, ref Matrix3 matrix, ref Vector3 invector)
1754 { 1754 {
1755 MultiplyiM3V3(out outvector, ref matrix, ref invector, 3, 3, 1); 1755 MultiplyiM3V3(out outvector, ref matrix, ref invector, 3, 3, 1);
1756 } 1756 }
1757 1757
1758 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply1"), SuppressUnmanagedCodeSecurity] 1758 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply1"), SuppressUnmanagedCodeSecurity]
1759 public static extern void Multiply1(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r); 1759 internal static extern void Multiply1(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r);
1760 1760
1761 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply2"), SuppressUnmanagedCodeSecurity] 1761 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply2"), SuppressUnmanagedCodeSecurity]
1762 public static extern void Multiply2(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r); 1762 internal static extern void Multiply2(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r);
1763 1763
1764 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQFromAxisAndAngle"), SuppressUnmanagedCodeSecurity] 1764 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQFromAxisAndAngle"), SuppressUnmanagedCodeSecurity]
1765 public static extern void QFromAxisAndAngle(out Quaternion q, dReal ax, dReal ay, dReal az, dReal angle); 1765 internal static extern void QFromAxisAndAngle(out Quaternion q, dReal ax, dReal ay, dReal az, dReal angle);
1766 1766
1767 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQfromR"), SuppressUnmanagedCodeSecurity] 1767 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQfromR"), SuppressUnmanagedCodeSecurity]
1768 public static extern void QfromR(out Quaternion q, ref Matrix3 R); 1768 internal static extern void QfromR(out Quaternion q, ref Matrix3 R);
1769 1769
1770 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply0"), SuppressUnmanagedCodeSecurity] 1770 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply0"), SuppressUnmanagedCodeSecurity]
1771 public static extern void QMultiply0(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1771 internal static extern void QMultiply0(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1772 1772
1773 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply1"), SuppressUnmanagedCodeSecurity] 1773 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply1"), SuppressUnmanagedCodeSecurity]
1774 public static extern void QMultiply1(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1774 internal static extern void QMultiply1(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1775 1775
1776 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply2"), SuppressUnmanagedCodeSecurity] 1776 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply2"), SuppressUnmanagedCodeSecurity]
1777 public static extern void QMultiply2(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1777 internal static extern void QMultiply2(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1778 1778
1779 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply3"), SuppressUnmanagedCodeSecurity] 1779 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply3"), SuppressUnmanagedCodeSecurity]
1780 public static extern void QMultiply3(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1780 internal static extern void QMultiply3(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1781 1781
1782 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQSetIdentity"), SuppressUnmanagedCodeSecurity] 1782 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQSetIdentity"), SuppressUnmanagedCodeSecurity]
1783 public static extern void QSetIdentity(out Quaternion q); 1783 internal static extern void QSetIdentity(out Quaternion q);
1784 1784
1785 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity] 1785 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity]
1786 public static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref Vector3 center, ref Vector3 extents, int depth); 1786 internal static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref Vector3 center, ref Vector3 extents, int depth);
1787 1787
1788 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity] 1788 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity]
1789 public static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref dReal centerX, ref dReal extentsX, int depth); 1789 internal static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref dReal centerX, ref dReal extentsX, int depth);
1790 1790
1791 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRandReal"), SuppressUnmanagedCodeSecurity] 1791 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRandReal"), SuppressUnmanagedCodeSecurity]
1792 public static extern dReal RandReal(); 1792 internal static extern dReal RandReal();
1793 1793
1794 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFrom2Axes"), SuppressUnmanagedCodeSecurity] 1794 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFrom2Axes"), SuppressUnmanagedCodeSecurity]
1795 public static extern void RFrom2Axes(out Matrix3 R, dReal ax, dReal ay, dReal az, dReal bx, dReal by, dReal bz); 1795 internal static extern void RFrom2Axes(out Matrix3 R, dReal ax, dReal ay, dReal az, dReal bx, dReal by, dReal bz);
1796 1796
1797 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromAxisAndAngle"), SuppressUnmanagedCodeSecurity] 1797 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromAxisAndAngle"), SuppressUnmanagedCodeSecurity]
1798 public static extern void RFromAxisAndAngle(out Matrix3 R, dReal x, dReal y, dReal z, dReal angle); 1798 internal static extern void RFromAxisAndAngle(out Matrix3 R, dReal x, dReal y, dReal z, dReal angle);
1799 1799
1800 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromEulerAngles"), SuppressUnmanagedCodeSecurity] 1800 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromEulerAngles"), SuppressUnmanagedCodeSecurity]
1801 public static extern void RFromEulerAngles(out Matrix3 R, dReal phi, dReal theta, dReal psi); 1801 internal static extern void RFromEulerAngles(out Matrix3 R, dReal phi, dReal theta, dReal psi);
1802 1802
1803 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRfromQ"), SuppressUnmanagedCodeSecurity] 1803 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRfromQ"), SuppressUnmanagedCodeSecurity]
1804 public static extern void RfromQ(out Matrix3 R, ref Quaternion q); 1804 internal static extern void RfromQ(out Matrix3 R, ref Quaternion q);
1805 1805
1806 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromZAxis"), SuppressUnmanagedCodeSecurity] 1806 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromZAxis"), SuppressUnmanagedCodeSecurity]
1807 public static extern void RFromZAxis(out Matrix3 R, dReal ax, dReal ay, dReal az); 1807 internal static extern void RFromZAxis(out Matrix3 R, dReal ax, dReal ay, dReal az);
1808 1808
1809 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRSetIdentity"), SuppressUnmanagedCodeSecurity] 1809 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRSetIdentity"), SuppressUnmanagedCodeSecurity]
1810 public static extern void RSetIdentity(out Matrix3 R); 1810 internal static extern void RSetIdentity(out Matrix3 R);
1811 1811
1812 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetValue"), SuppressUnmanagedCodeSecurity] 1812 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetValue"), SuppressUnmanagedCodeSecurity]
1813 public static extern void SetValue(out dReal a, int n); 1813 internal static extern void SetValue(out dReal a, int n);
1814 1814
1815 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetZero"), SuppressUnmanagedCodeSecurity] 1815 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetZero"), SuppressUnmanagedCodeSecurity]
1816 public static extern void SetZero(out dReal a, int n); 1816 internal static extern void SetZero(out dReal a, int n);
1817 1817
1818 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSimpleSpaceCreate"), SuppressUnmanagedCodeSecurity] 1818 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSimpleSpaceCreate"), SuppressUnmanagedCodeSecurity]
1819 public static extern IntPtr SimpleSpaceCreate(IntPtr space); 1819 internal static extern IntPtr SimpleSpaceCreate(IntPtr space);
1820 1820
1821 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveCholesky"), SuppressUnmanagedCodeSecurity] 1821 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveCholesky"), SuppressUnmanagedCodeSecurity]
1822 public static extern void SolveCholesky(ref dReal L, out dReal b, int n); 1822 internal static extern void SolveCholesky(ref dReal L, out dReal b, int n);
1823 1823
1824 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1"), SuppressUnmanagedCodeSecurity] 1824 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1"), SuppressUnmanagedCodeSecurity]
1825 public static extern void SolveL1(ref dReal L, out dReal b, int n, int nskip); 1825 internal static extern void SolveL1(ref dReal L, out dReal b, int n, int nskip);
1826 1826
1827 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1T"), SuppressUnmanagedCodeSecurity] 1827 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1T"), SuppressUnmanagedCodeSecurity]
1828 public static extern void SolveL1T(ref dReal L, out dReal b, int n, int nskip); 1828 internal static extern void SolveL1T(ref dReal L, out dReal b, int n, int nskip);
1829 1829
1830 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveLDLT"), SuppressUnmanagedCodeSecurity] 1830 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveLDLT"), SuppressUnmanagedCodeSecurity]
1831 public static extern void SolveLDLT(ref dReal L, ref dReal d, out dReal b, int n, int nskip); 1831 internal static extern void SolveLDLT(ref dReal L, ref dReal d, out dReal b, int n, int nskip);
1832 1832
1833 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceAdd"), SuppressUnmanagedCodeSecurity] 1833 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceAdd"), SuppressUnmanagedCodeSecurity]
1834 public static extern void SpaceAdd(IntPtr space, IntPtr geom); 1834 internal static extern void SpaceAdd(IntPtr space, IntPtr geom);
1835 1835
1836 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceLockQuery"), SuppressUnmanagedCodeSecurity] 1836 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceLockQuery"), SuppressUnmanagedCodeSecurity]
1837 public static extern bool SpaceLockQuery(IntPtr space); 1837 internal static extern bool SpaceLockQuery(IntPtr space);
1838 1838
1839 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceClean"), SuppressUnmanagedCodeSecurity] 1839 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceClean"), SuppressUnmanagedCodeSecurity]
1840 public static extern void SpaceClean(IntPtr space); 1840 internal static extern void SpaceClean(IntPtr space);
1841 1841
1842 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide"), SuppressUnmanagedCodeSecurity] 1842 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide"), SuppressUnmanagedCodeSecurity]
1843 public static extern void SpaceCollide(IntPtr space, IntPtr data, NearCallback callback); 1843 internal static extern void SpaceCollide(IntPtr space, IntPtr data, NearCallback callback);
1844 1844
1845 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide2"), SuppressUnmanagedCodeSecurity] 1845 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide2"), SuppressUnmanagedCodeSecurity]
1846 public static extern void SpaceCollide2(IntPtr space1, IntPtr space2, IntPtr data, NearCallback callback); 1846 internal static extern void SpaceCollide2(IntPtr space1, IntPtr space2, IntPtr data, NearCallback callback);
1847 1847
1848 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceDestroy"), SuppressUnmanagedCodeSecurity] 1848 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceDestroy"), SuppressUnmanagedCodeSecurity]
1849 public static extern void SpaceDestroy(IntPtr space); 1849 internal static extern void SpaceDestroy(IntPtr space);
1850 1850
1851 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetCleanup"), SuppressUnmanagedCodeSecurity] 1851 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetCleanup"), SuppressUnmanagedCodeSecurity]
1852 public static extern bool SpaceGetCleanup(IntPtr space); 1852 internal static extern bool SpaceGetCleanup(IntPtr space);
1853 1853
1854 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetNumGeoms"), SuppressUnmanagedCodeSecurity] 1854 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetNumGeoms"), SuppressUnmanagedCodeSecurity]
1855 public static extern int SpaceGetNumGeoms(IntPtr space); 1855 internal static extern int SpaceGetNumGeoms(IntPtr space);
1856 1856
1857 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetGeom"), SuppressUnmanagedCodeSecurity] 1857 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetGeom"), SuppressUnmanagedCodeSecurity]
1858 public static extern IntPtr SpaceGetGeom(IntPtr space, int i); 1858 internal static extern IntPtr SpaceGetGeom(IntPtr space, int i);
1859 1859
1860 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetSublevel"), SuppressUnmanagedCodeSecurity] 1860 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetSublevel"), SuppressUnmanagedCodeSecurity]
1861 public static extern int SpaceGetSublevel(IntPtr space); 1861 internal static extern int SpaceGetSublevel(IntPtr space);
1862 1862
1863 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceQuery"), SuppressUnmanagedCodeSecurity] 1863 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceQuery"), SuppressUnmanagedCodeSecurity]
1864 public static extern bool SpaceQuery(IntPtr space, IntPtr geom); 1864 internal static extern bool SpaceQuery(IntPtr space, IntPtr geom);
1865 1865
1866 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceRemove"), SuppressUnmanagedCodeSecurity] 1866 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceRemove"), SuppressUnmanagedCodeSecurity]
1867 public static extern void SpaceRemove(IntPtr space, IntPtr geom); 1867 internal static extern void SpaceRemove(IntPtr space, IntPtr geom);
1868 1868
1869 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetCleanup"), SuppressUnmanagedCodeSecurity] 1869 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetCleanup"), SuppressUnmanagedCodeSecurity]
1870 public static extern void SpaceSetCleanup(IntPtr space, bool mode); 1870 internal static extern void SpaceSetCleanup(IntPtr space, bool mode);
1871 1871
1872 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetSublevel"), SuppressUnmanagedCodeSecurity] 1872 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetSublevel"), SuppressUnmanagedCodeSecurity]
1873 public static extern void SpaceSetSublevel(IntPtr space, int sublevel); 1873 internal static extern void SpaceSetSublevel(IntPtr space, int sublevel);
1874 1874
1875 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSweepAndPruneSpaceCreate"), SuppressUnmanagedCodeSecurity] 1875 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSweepAndPruneSpaceCreate"), SuppressUnmanagedCodeSecurity]
1876 public static extern IntPtr SweepAndPruneSpaceCreate(IntPtr space, int AxisOrder); 1876 internal static extern IntPtr SweepAndPruneSpaceCreate(IntPtr space, int AxisOrder);
1877 1877
1878 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dVectorScale"), SuppressUnmanagedCodeSecurity] 1878 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dVectorScale"), SuppressUnmanagedCodeSecurity]
1879 public static extern void VectorScale(out dReal a, ref dReal d, int n); 1879 internal static extern void VectorScale(out dReal a, ref dReal d, int n);
1880 1880
1881 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldCreate"), SuppressUnmanagedCodeSecurity] 1881 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldCreate"), SuppressUnmanagedCodeSecurity]
1882 public static extern IntPtr WorldCreate(); 1882 internal static extern IntPtr WorldCreate();
1883 1883
1884 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldDestroy"), SuppressUnmanagedCodeSecurity] 1884 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldDestroy"), SuppressUnmanagedCodeSecurity]
1885 public static extern void WorldDestroy(IntPtr world); 1885 internal static extern void WorldDestroy(IntPtr world);
1886 1886
1887 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity] 1887 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity]
1888 public static extern int WorldGetAutoDisableAverageSamplesCount(IntPtr world); 1888 internal static extern int WorldGetAutoDisableAverageSamplesCount(IntPtr world);
1889 1889
1890 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 1890 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
1891 public static extern dReal WorldGetAutoDisableAngularThreshold(IntPtr world); 1891 internal static extern dReal WorldGetAutoDisableAngularThreshold(IntPtr world);
1892 1892
1893 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 1893 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
1894 public static extern bool WorldGetAutoDisableFlag(IntPtr world); 1894 internal static extern bool WorldGetAutoDisableFlag(IntPtr world);
1895 1895
1896 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 1896 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
1897 public static extern dReal WorldGetAutoDisableLinearThreshold(IntPtr world); 1897 internal static extern dReal WorldGetAutoDisableLinearThreshold(IntPtr world);
1898 1898
1899 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 1899 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
1900 public static extern int WorldGetAutoDisableSteps(IntPtr world); 1900 internal static extern int WorldGetAutoDisableSteps(IntPtr world);
1901 1901
1902 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 1902 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
1903 public static extern dReal WorldGetAutoDisableTime(IntPtr world); 1903 internal static extern dReal WorldGetAutoDisableTime(IntPtr world);
1904 1904
1905 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity] 1905 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity]
1906 public static extern int WorldGetAutoEnableDepthSF1(IntPtr world); 1906 internal static extern int WorldGetAutoEnableDepthSF1(IntPtr world);
1907 1907
1908 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetCFM"), SuppressUnmanagedCodeSecurity] 1908 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetCFM"), SuppressUnmanagedCodeSecurity]
1909 public static extern dReal WorldGetCFM(IntPtr world); 1909 internal static extern dReal WorldGetCFM(IntPtr world);
1910 1910
1911 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetERP"), SuppressUnmanagedCodeSecurity] 1911 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetERP"), SuppressUnmanagedCodeSecurity]
1912 public static extern dReal WorldGetERP(IntPtr world); 1912 internal static extern dReal WorldGetERP(IntPtr world);
1913 1913
1914 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity] 1914 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity]
1915 public static extern void WorldGetGravity(IntPtr world, out Vector3 gravity); 1915 internal static extern void WorldGetGravity(IntPtr world, out Vector3 gravity);
1916 1916
1917 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity] 1917 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity]
1918 public static extern void WorldGetGravity(IntPtr world, out dReal X); 1918 internal static extern void WorldGetGravity(IntPtr world, out dReal X);
1919 1919
1920 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity] 1920 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity]
1921 public static extern dReal WorldGetContactMaxCorrectingVel(IntPtr world); 1921 internal static extern dReal WorldGetContactMaxCorrectingVel(IntPtr world);
1922 1922
1923 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity] 1923 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity]
1924 public static extern dReal WorldGetContactSurfaceLayer(IntPtr world); 1924 internal static extern dReal WorldGetContactSurfaceLayer(IntPtr world);
1925 1925
1926 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDamping"), SuppressUnmanagedCodeSecurity] 1926 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDamping"), SuppressUnmanagedCodeSecurity]
1927 public static extern dReal WorldGetAngularDamping(IntPtr world); 1927 internal static extern dReal WorldGetAngularDamping(IntPtr world);
1928 1928
1929 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 1929 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
1930 public static extern dReal WorldGetAngularDampingThreshold(IntPtr world); 1930 internal static extern dReal WorldGetAngularDampingThreshold(IntPtr world);
1931 1931
1932 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDamping"), SuppressUnmanagedCodeSecurity] 1932 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDamping"), SuppressUnmanagedCodeSecurity]
1933 public static extern dReal WorldGetLinearDamping(IntPtr world); 1933 internal static extern dReal WorldGetLinearDamping(IntPtr world);
1934 1934
1935 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 1935 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
1936 public static extern dReal WorldGetLinearDampingThreshold(IntPtr world); 1936 internal static extern dReal WorldGetLinearDampingThreshold(IntPtr world);
1937 1937
1938 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity] 1938 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity]
1939 public static extern int WorldGetQuickStepNumIterations(IntPtr world); 1939 internal static extern int WorldGetQuickStepNumIterations(IntPtr world);
1940 1940
1941 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepW"), SuppressUnmanagedCodeSecurity] 1941 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepW"), SuppressUnmanagedCodeSecurity]
1942 public static extern dReal WorldGetQuickStepW(IntPtr world); 1942 internal static extern dReal WorldGetQuickStepW(IntPtr world);
1943 1943
1944 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity] 1944 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity]
1945 public static extern dReal WorldGetMaxAngularSpeed(IntPtr world); 1945 internal static extern dReal WorldGetMaxAngularSpeed(IntPtr world);
1946 1946
1947 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity] 1947 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity]
1948 public static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out Vector3 force); 1948 internal static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out Vector3 force);
1949 1949
1950 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity] 1950 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity]
1951 public static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out dReal forceX); 1951 internal static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out dReal forceX);
1952 1952
1953 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldQuickStep"), SuppressUnmanagedCodeSecurity] 1953 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldQuickStep"), SuppressUnmanagedCodeSecurity]
1954 public static extern void WorldQuickStep(IntPtr world, dReal stepsize); 1954 internal static extern void WorldQuickStep(IntPtr world, dReal stepsize);
1955 1955
1956 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDamping"), SuppressUnmanagedCodeSecurity] 1956 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDamping"), SuppressUnmanagedCodeSecurity]
1957 public static extern void WorldSetAngularDamping(IntPtr world, dReal scale); 1957 internal static extern void WorldSetAngularDamping(IntPtr world, dReal scale);
1958 1958
1959 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 1959 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
1960 public static extern void WorldSetAngularDampingThreshold(IntPtr world, dReal threshold); 1960 internal static extern void WorldSetAngularDampingThreshold(IntPtr world, dReal threshold);
1961 1961
1962 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 1962 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
1963 public static extern void WorldSetAutoDisableAngularThreshold(IntPtr world, dReal angular_threshold); 1963 internal static extern void WorldSetAutoDisableAngularThreshold(IntPtr world, dReal angular_threshold);
1964 1964
1965 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity] 1965 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity]
1966 public static extern void WorldSetAutoDisableAverageSamplesCount(IntPtr world, int average_samples_count); 1966 internal static extern void WorldSetAutoDisableAverageSamplesCount(IntPtr world, int average_samples_count);
1967 1967
1968 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 1968 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
1969 public static extern void WorldSetAutoDisableFlag(IntPtr world, bool do_auto_disable); 1969 internal static extern void WorldSetAutoDisableFlag(IntPtr world, bool do_auto_disable);
1970 1970
1971 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 1971 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
1972 public static extern void WorldSetAutoDisableLinearThreshold(IntPtr world, dReal linear_threshold); 1972 internal static extern void WorldSetAutoDisableLinearThreshold(IntPtr world, dReal linear_threshold);
1973 1973
1974 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 1974 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
1975 public static extern void WorldSetAutoDisableSteps(IntPtr world, int steps); 1975 internal static extern void WorldSetAutoDisableSteps(IntPtr world, int steps);
1976 1976
1977 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 1977 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
1978 public static extern void WorldSetAutoDisableTime(IntPtr world, dReal time); 1978 internal static extern void WorldSetAutoDisableTime(IntPtr world, dReal time);
1979 1979
1980 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity] 1980 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity]
1981 public static extern void WorldSetAutoEnableDepthSF1(IntPtr world, int autoEnableDepth); 1981 internal static extern void WorldSetAutoEnableDepthSF1(IntPtr world, int autoEnableDepth);
1982 1982
1983 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetCFM"), SuppressUnmanagedCodeSecurity] 1983 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetCFM"), SuppressUnmanagedCodeSecurity]
1984 public static extern void WorldSetCFM(IntPtr world, dReal cfm); 1984 internal static extern void WorldSetCFM(IntPtr world, dReal cfm);
1985 1985
1986 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity] 1986 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity]
1987 public static extern void WorldSetContactMaxCorrectingVel(IntPtr world, dReal vel); 1987 internal static extern void WorldSetContactMaxCorrectingVel(IntPtr world, dReal vel);
1988 1988
1989 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity] 1989 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity]
1990 public static extern void WorldSetContactSurfaceLayer(IntPtr world, dReal depth); 1990 internal static extern void WorldSetContactSurfaceLayer(IntPtr world, dReal depth);
1991 1991
1992 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetDamping"), SuppressUnmanagedCodeSecurity] 1992 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetDamping"), SuppressUnmanagedCodeSecurity]
1993 public static extern void WorldSetDamping(IntPtr world, dReal linear_scale, dReal angular_scale); 1993 internal static extern void WorldSetDamping(IntPtr world, dReal linear_scale, dReal angular_scale);
1994 1994
1995 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetERP"), SuppressUnmanagedCodeSecurity] 1995 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetERP"), SuppressUnmanagedCodeSecurity]
1996 public static extern void WorldSetERP(IntPtr world, dReal erp); 1996 internal static extern void WorldSetERP(IntPtr world, dReal erp);
1997 1997
1998 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetGravity"), SuppressUnmanagedCodeSecurity] 1998 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetGravity"), SuppressUnmanagedCodeSecurity]
1999 public static extern void WorldSetGravity(IntPtr world, dReal x, dReal y, dReal z); 1999 internal static extern void WorldSetGravity(IntPtr world, dReal x, dReal y, dReal z);
2000 2000
2001 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDamping"), SuppressUnmanagedCodeSecurity] 2001 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDamping"), SuppressUnmanagedCodeSecurity]
2002 public static extern void WorldSetLinearDamping(IntPtr world, dReal scale); 2002 internal static extern void WorldSetLinearDamping(IntPtr world, dReal scale);
2003 2003
2004 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 2004 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
2005 public static extern void WorldSetLinearDampingThreshold(IntPtr world, dReal threshold); 2005 internal static extern void WorldSetLinearDampingThreshold(IntPtr world, dReal threshold);
2006 2006
2007 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity] 2007 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity]
2008 public static extern void WorldSetQuickStepNumIterations(IntPtr world, int num); 2008 internal static extern void WorldSetQuickStepNumIterations(IntPtr world, int num);
2009 2009
2010 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepW"), SuppressUnmanagedCodeSecurity] 2010 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepW"), SuppressUnmanagedCodeSecurity]
2011 public static extern void WorldSetQuickStepW(IntPtr world, dReal over_relaxation); 2011 internal static extern void WorldSetQuickStepW(IntPtr world, dReal over_relaxation);
2012 2012
2013 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity] 2013 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity]
2014 public static extern void WorldSetMaxAngularSpeed(IntPtr world, dReal max_speed); 2014 internal static extern void WorldSetMaxAngularSpeed(IntPtr world, dReal max_speed);
2015 2015
2016 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStep"), SuppressUnmanagedCodeSecurity] 2016 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStep"), SuppressUnmanagedCodeSecurity]
2017 public static extern void WorldStep(IntPtr world, dReal stepsize); 2017 internal static extern void WorldStep(IntPtr world, dReal stepsize);
2018 2018
2019 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStepFast1"), SuppressUnmanagedCodeSecurity] 2019 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStepFast1"), SuppressUnmanagedCodeSecurity]
2020 public static extern void WorldStepFast1(IntPtr world, dReal stepsize, int maxiterations); 2020 internal static extern void WorldStepFast1(IntPtr world, dReal stepsize, int maxiterations);
2021 2021
2022 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldExportDIF"), SuppressUnmanagedCodeSecurity] 2022 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldExportDIF"), SuppressUnmanagedCodeSecurity]
2023 public static extern void WorldExportDIF(IntPtr world, string filename, bool append, string prefix); 2023 internal static extern void WorldExportDIF(IntPtr world, string filename, bool append, string prefix);
2024 } 2024 }
2025} 2025}
diff --git a/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs b/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs
index 98bfd1c..441aa22 100644
--- a/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs
@@ -68,7 +68,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
68 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 68 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
69 69
70 private Vector3 _position; 70 private Vector3 _position;
71 private d.Vector3 _zeroPosition; 71 private SafeNativeMethods.Vector3 _zeroPosition;
72 private bool _zeroFlag = false; 72 private bool _zeroFlag = false;
73 private bool m_lastUpdateSent = false; 73 private bool m_lastUpdateSent = false;
74 private Vector3 _velocity; 74 private Vector3 _velocity;
@@ -151,7 +151,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
151 internal IntPtr Shell { get; private set; } 151 internal IntPtr Shell { get; private set; }
152 152
153 private IntPtr Amotor = IntPtr.Zero; 153 private IntPtr Amotor = IntPtr.Zero;
154 private d.Mass ShellMass; 154 private SafeNativeMethods.Mass ShellMass;
155 155
156 private int m_eventsubscription = 0; 156 private int m_eventsubscription = 0;
157 private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate(); 157 private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate();
@@ -569,12 +569,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
569 float yTiltComponent = -movementVector.Y * m_tiltMagnitudeWhenProjectedOnXYPlane; 569 float yTiltComponent = -movementVector.Y * m_tiltMagnitudeWhenProjectedOnXYPlane;
570 570
571 //m_log.Debug("[ODE CHARACTER]: changing avatar tilt"); 571 //m_log.Debug("[ODE CHARACTER]: changing avatar tilt");
572 d.JointSetAMotorParam(Amotor, (int)dParam.LowStop, xTiltComponent); 572 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LowStop, xTiltComponent);
573 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop, xTiltComponent); // must be same as lowstop, else a different, spurious tilt is introduced 573 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop, xTiltComponent); // must be same as lowstop, else a different, spurious tilt is introduced
574 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, yTiltComponent); 574 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, yTiltComponent);
575 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, yTiltComponent); // same as lowstop 575 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, yTiltComponent); // same as lowstop
576 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, 0f); 576 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, 0f);
577 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 0f); // same as lowstop 577 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 0f); // same as lowstop
578 } 578 }
579 579
580 /// <summary> 580 /// <summary>
@@ -805,11 +805,11 @@ namespace OpenSim.Region.PhysicsModule.ODE
805 805
806 if (m_pidControllerActive == false) 806 if (m_pidControllerActive == false)
807 { 807 {
808 _zeroPosition = d.BodyGetPosition(Body); 808 _zeroPosition = SafeNativeMethods.BodyGetPosition(Body);
809 } 809 }
810 //PidStatus = true; 810 //PidStatus = true;
811 811
812 d.Vector3 localpos = d.BodyGetPosition(Body); 812 SafeNativeMethods.Vector3 localpos = SafeNativeMethods.BodyGetPosition(Body);
813 Vector3 localPos = new Vector3(localpos.X, localpos.Y, localpos.Z); 813 Vector3 localPos = new Vector3(localpos.X, localpos.Y, localpos.Z);
814 814
815 if (!localPos.IsFinite()) 815 if (!localPos.IsFinite())
@@ -824,7 +824,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
824 } 824 }
825 825
826 Vector3 vec = Vector3.Zero; 826 Vector3 vec = Vector3.Zero;
827 d.Vector3 vel = d.BodyGetLinearVel(Body); 827 SafeNativeMethods.Vector3 vel = SafeNativeMethods.BodyGetLinearVel(Body);
828 828
829// m_log.DebugFormat( 829// m_log.DebugFormat(
830// "[ODE CHARACTER]: Current velocity in Move() is <{0},{1},{2}>, target {3} for {4}", 830// "[ODE CHARACTER]: Current velocity in Move() is <{0},{1},{2}>, target {3} for {4}",
@@ -848,7 +848,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
848 if (!_zeroFlag) 848 if (!_zeroFlag)
849 { 849 {
850 _zeroFlag = true; 850 _zeroFlag = true;
851 _zeroPosition = d.BodyGetPosition(Body); 851 _zeroPosition = SafeNativeMethods.BodyGetPosition(Body);
852 } 852 }
853 853
854 if (m_pidControllerActive) 854 if (m_pidControllerActive)
@@ -858,7 +858,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
858 // Avatar to Avatar collisions 858 // Avatar to Avatar collisions
859 // Prim to avatar collisions 859 // Prim to avatar collisions
860 860
861 d.Vector3 pos = d.BodyGetPosition(Body); 861 SafeNativeMethods.Vector3 pos = SafeNativeMethods.BodyGetPosition(Body);
862 vec.X = (_target_velocity.X - vel.X) * (PID_D) + (_zeroPosition.X - pos.X) * (PID_P * 2); 862 vec.X = (_target_velocity.X - vel.X) * (PID_D) + (_zeroPosition.X - pos.X) * (PID_P * 2);
863 vec.Y = (_target_velocity.Y - vel.Y) * (PID_D) + (_zeroPosition.Y - pos.Y)* (PID_P * 2); 863 vec.Y = (_target_velocity.Y - vel.Y) * (PID_D) + (_zeroPosition.Y - pos.Y)* (PID_P * 2);
864 if (flying) 864 if (flying)
@@ -906,7 +906,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
906 { 906 {
907 // We're colliding with something and we're not flying but we're moving 907 // We're colliding with something and we're not flying but we're moving
908 // This means we're walking or running. 908 // This means we're walking or running.
909 d.Vector3 pos = d.BodyGetPosition(Body); 909 SafeNativeMethods.Vector3 pos = SafeNativeMethods.BodyGetPosition(Body);
910 vec.Z = (_target_velocity.Z - vel.Z) * PID_D + (_zeroPosition.Z - pos.Z) * PID_P; 910 vec.Z = (_target_velocity.Z - vel.Z) * PID_D + (_zeroPosition.Z - pos.Z) * PID_P;
911 vec.X = ((_target_velocity.X - vel.X) / 1.2f) * PID_D; 911 vec.X = ((_target_velocity.X - vel.X) / 1.2f) * PID_D;
912 vec.Y = ((_target_velocity.Y - vel.Y) / 1.2f) * PID_D; 912 vec.Y = ((_target_velocity.Y - vel.Y) / 1.2f) * PID_D;
@@ -940,7 +940,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
940 if (vec.IsFinite()) 940 if (vec.IsFinite())
941 { 941 {
942 // Apply the total force acting on this avatar 942 // Apply the total force acting on this avatar
943 d.BodyAddForce(Body, vec.X, vec.Y, vec.Z); 943 SafeNativeMethods.BodyAddForce(Body, vec.X, vec.Y, vec.Z);
944 944
945 if (!_zeroFlag) 945 if (!_zeroFlag)
946 AlignAvatarTiltWithCurrentDirectionOfMovement(vec); 946 AlignAvatarTiltWithCurrentDirectionOfMovement(vec);
@@ -956,7 +956,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
956 return; 956 return;
957 } 957 }
958 958
959 d.Vector3 newVel = d.BodyGetLinearVel(Body); 959 SafeNativeMethods.Vector3 newVel = SafeNativeMethods.BodyGetLinearVel(Body);
960 if (newVel.X >= 256 || newVel.X <= 256 || newVel.Y >= 256 || newVel.Y <= 256 || newVel.Z >= 256 || newVel.Z <= 256) 960 if (newVel.X >= 256 || newVel.X <= 256 || newVel.Y >= 256 || newVel.Y <= 256 || newVel.Z >= 256 || newVel.Z <= 256)
961 { 961 {
962// m_log.DebugFormat( 962// m_log.DebugFormat(
@@ -972,7 +972,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
972 else 972 else
973 newVel.Z = Util.Clamp<float>(newVel.Z, -255f, 255f); 973 newVel.Z = Util.Clamp<float>(newVel.Z, -255f, 255f);
974 974
975 d.BodySetLinearVel(Body, newVel.X, newVel.Y, newVel.Z); 975 SafeNativeMethods.BodySetLinearVel(Body, newVel.X, newVel.Y, newVel.Z);
976 } 976 }
977 } 977 }
978 978
@@ -985,16 +985,16 @@ namespace OpenSim.Region.PhysicsModule.ODE
985 internal void UpdatePositionAndVelocity(List<OdeCharacter> defects) 985 internal void UpdatePositionAndVelocity(List<OdeCharacter> defects)
986 { 986 {
987 // no lock; called from Simulate() -- if you call this from elsewhere, gotta lock or do Monitor.Enter/Exit! 987 // no lock; called from Simulate() -- if you call this from elsewhere, gotta lock or do Monitor.Enter/Exit!
988 d.Vector3 newPos; 988 SafeNativeMethods.Vector3 newPos;
989 try 989 try
990 { 990 {
991 newPos = d.BodyGetPosition(Body); 991 newPos = SafeNativeMethods.BodyGetPosition(Body);
992 } 992 }
993 catch (NullReferenceException) 993 catch (NullReferenceException)
994 { 994 {
995 bad = true; 995 bad = true;
996 defects.Add(this); 996 defects.Add(this);
997 newPos = new d.Vector3(_position.X, _position.Y, _position.Z); 997 newPos = new SafeNativeMethods.Vector3(_position.X, _position.Y, _position.Z);
998 base.RaiseOutOfBounds(_position); // Tells ScenePresence that there's a problem! 998 base.RaiseOutOfBounds(_position); // Tells ScenePresence that there's a problem!
999 m_log.WarnFormat("[ODE CHARACTER]: Avatar Null reference for Avatar {0}, physical actor {1}", Name, m_uuid); 999 m_log.WarnFormat("[ODE CHARACTER]: Avatar Null reference for Avatar {0}, physical actor {1}", Name, m_uuid);
1000 1000
@@ -1031,11 +1031,11 @@ namespace OpenSim.Region.PhysicsModule.ODE
1031 else 1031 else
1032 { 1032 {
1033 m_lastUpdateSent = false; 1033 m_lastUpdateSent = false;
1034 d.Vector3 newVelocity; 1034 SafeNativeMethods.Vector3 newVelocity;
1035 1035
1036 try 1036 try
1037 { 1037 {
1038 newVelocity = d.BodyGetLinearVel(Body); 1038 newVelocity = SafeNativeMethods.BodyGetLinearVel(Body);
1039 } 1039 }
1040 catch (NullReferenceException) 1040 catch (NullReferenceException)
1041 { 1041 {
@@ -1102,14 +1102,14 @@ namespace OpenSim.Region.PhysicsModule.ODE
1102 } 1102 }
1103 1103
1104// lock (OdeScene.UniversalColliderSyncObject) 1104// lock (OdeScene.UniversalColliderSyncObject)
1105 Shell = d.CreateCapsule(_parent_scene.space, CAPSULE_RADIUS, CAPSULE_LENGTH); 1105 Shell = SafeNativeMethods.CreateCapsule(_parent_scene.space, CAPSULE_RADIUS, CAPSULE_LENGTH);
1106 1106
1107 d.GeomSetCategoryBits(Shell, (uint)m_collisionCategories); 1107 SafeNativeMethods.GeomSetCategoryBits(Shell, (uint)m_collisionCategories);
1108 d.GeomSetCollideBits(Shell, (uint)m_collisionFlags); 1108 SafeNativeMethods.GeomSetCollideBits(Shell, (uint)m_collisionFlags);
1109 1109
1110 d.MassSetCapsuleTotal(out ShellMass, m_mass, 2, CAPSULE_RADIUS, CAPSULE_LENGTH); 1110 SafeNativeMethods.MassSetCapsuleTotal(out ShellMass, m_mass, 2, CAPSULE_RADIUS, CAPSULE_LENGTH);
1111 Body = d.BodyCreate(_parent_scene.world); 1111 Body = SafeNativeMethods.BodyCreate(_parent_scene.world);
1112 d.BodySetPosition(Body, npositionX, npositionY, npositionZ); 1112 SafeNativeMethods.BodySetPosition(Body, npositionX, npositionY, npositionZ);
1113 1113
1114 _position.X = npositionX; 1114 _position.X = npositionX;
1115 _position.Y = npositionY; 1115 _position.Y = npositionY;
@@ -1117,45 +1117,45 @@ namespace OpenSim.Region.PhysicsModule.ODE
1117 1117
1118 m_taintPosition = _position; 1118 m_taintPosition = _position;
1119 1119
1120 d.BodySetMass(Body, ref ShellMass); 1120 SafeNativeMethods.BodySetMass(Body, ref ShellMass);
1121 d.Matrix3 m_caprot; 1121 SafeNativeMethods.Matrix3 m_caprot;
1122 // 90 Stand up on the cap of the capped cyllinder 1122 // 90 Stand up on the cap of the capped cyllinder
1123 if (_parent_scene.IsAvCapsuleTilted) 1123 if (_parent_scene.IsAvCapsuleTilted)
1124 { 1124 {
1125 d.RFromAxisAndAngle(out m_caprot, 1, 0, 1, (float)(Math.PI / 2)); 1125 SafeNativeMethods.RFromAxisAndAngle(out m_caprot, 1, 0, 1, (float)(Math.PI / 2));
1126 } 1126 }
1127 else 1127 else
1128 { 1128 {
1129 d.RFromAxisAndAngle(out m_caprot, 0, 0, 1, (float)(Math.PI / 2)); 1129 SafeNativeMethods.RFromAxisAndAngle(out m_caprot, 0, 0, 1, (float)(Math.PI / 2));
1130 } 1130 }
1131 1131
1132 d.GeomSetRotation(Shell, ref m_caprot); 1132 SafeNativeMethods.GeomSetRotation(Shell, ref m_caprot);
1133 d.BodySetRotation(Body, ref m_caprot); 1133 SafeNativeMethods.BodySetRotation(Body, ref m_caprot);
1134 1134
1135 d.GeomSetBody(Shell, Body); 1135 SafeNativeMethods.GeomSetBody(Shell, Body);
1136 1136
1137 // The purpose of the AMotor here is to keep the avatar's physical 1137 // The purpose of the AMotor here is to keep the avatar's physical
1138 // surrogate from rotating while moving 1138 // surrogate from rotating while moving
1139 Amotor = d.JointCreateAMotor(_parent_scene.world, IntPtr.Zero); 1139 Amotor = SafeNativeMethods.JointCreateAMotor(_parent_scene.world, IntPtr.Zero);
1140 d.JointAttach(Amotor, Body, IntPtr.Zero); 1140 SafeNativeMethods.JointAttach(Amotor, Body, IntPtr.Zero);
1141 d.JointSetAMotorMode(Amotor, dAMotorEuler); 1141 SafeNativeMethods.JointSetAMotorMode(Amotor, dAMotorEuler);
1142 d.JointSetAMotorNumAxes(Amotor, 3); 1142 SafeNativeMethods.JointSetAMotorNumAxes(Amotor, 3);
1143 d.JointSetAMotorAxis(Amotor, 0, 0, 1, 0, 0); 1143 SafeNativeMethods.JointSetAMotorAxis(Amotor, 0, 0, 1, 0, 0);
1144 d.JointSetAMotorAxis(Amotor, 1, 0, 0, 1, 0); 1144 SafeNativeMethods.JointSetAMotorAxis(Amotor, 1, 0, 0, 1, 0);
1145 d.JointSetAMotorAxis(Amotor, 2, 0, 0, 0, 1); 1145 SafeNativeMethods.JointSetAMotorAxis(Amotor, 2, 0, 0, 0, 1);
1146 d.JointSetAMotorAngle(Amotor, 0, 0); 1146 SafeNativeMethods.JointSetAMotorAngle(Amotor, 0, 0);
1147 d.JointSetAMotorAngle(Amotor, 1, 0); 1147 SafeNativeMethods.JointSetAMotorAngle(Amotor, 1, 0);
1148 d.JointSetAMotorAngle(Amotor, 2, 0); 1148 SafeNativeMethods.JointSetAMotorAngle(Amotor, 2, 0);
1149 1149
1150 // These lowstops and high stops are effectively (no wiggle room) 1150 // These lowstops and high stops are effectively (no wiggle room)
1151 if (_parent_scene.IsAvCapsuleTilted) 1151 if (_parent_scene.IsAvCapsuleTilted)
1152 { 1152 {
1153 d.JointSetAMotorParam(Amotor, (int)dParam.LowStop, -0.000000000001f); 1153 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LowStop, -0.000000000001f);
1154 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, -0.000000000001f); 1154 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, -0.000000000001f);
1155 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, -0.000000000001f); 1155 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, -0.000000000001f);
1156 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop, 0.000000000001f); 1156 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop, 0.000000000001f);
1157 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 0.000000000001f); 1157 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 0.000000000001f);
1158 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, 0.000000000001f); 1158 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, 0.000000000001f);
1159 } 1159 }
1160 else 1160 else
1161 { 1161 {
@@ -1167,18 +1167,18 @@ namespace OpenSim.Region.PhysicsModule.ODE
1167 // to be comprehended in their entirety. 1167 // to be comprehended in their entirety.
1168 #endregion 1168 #endregion
1169 AlignAvatarTiltWithCurrentDirectionOfMovement(Vector3.Zero); 1169 AlignAvatarTiltWithCurrentDirectionOfMovement(Vector3.Zero);
1170 d.JointSetAMotorParam(Amotor, (int)dParam.LowStop, 0.08f); 1170 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LowStop, 0.08f);
1171 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, -0f); 1171 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, -0f);
1172 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, 0.08f); 1172 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, 0.08f);
1173 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop, 0.08f); // must be same as lowstop, else a different, spurious tilt is introduced 1173 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop, 0.08f); // must be same as lowstop, else a different, spurious tilt is introduced
1174 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 0f); // same as lowstop 1174 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 0f); // same as lowstop
1175 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, 0.08f); // same as lowstop 1175 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, 0.08f); // same as lowstop
1176 } 1176 }
1177 1177
1178 // Fudge factor is 1f by default, we're setting it to 0. We don't want it to Fudge or the 1178 // Fudge factor is 1f by default, we're setting it to 0. We don't want it to Fudge or the
1179 // capped cyllinder will fall over 1179 // capped cyllinder will fall over
1180 d.JointSetAMotorParam(Amotor, (int)dParam.FudgeFactor, 0f); 1180 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.FudgeFactor, 0f);
1181 d.JointSetAMotorParam(Amotor, (int)dParam.FMax, tensor); 1181 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)dParam.FMax, tensor);
1182 1182
1183 //d.Matrix3 bodyrotation = d.BodyGetRotation(Body); 1183 //d.Matrix3 bodyrotation = d.BodyGetRotation(Body);
1184 //d.QfromR( 1184 //d.QfromR(
@@ -1217,7 +1217,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1217 if (Amotor != IntPtr.Zero) 1217 if (Amotor != IntPtr.Zero)
1218 { 1218 {
1219 // Kill the Amotor 1219 // Kill the Amotor
1220 d.JointDestroy(Amotor); 1220 SafeNativeMethods.JointDestroy(Amotor);
1221 Amotor = IntPtr.Zero; 1221 Amotor = IntPtr.Zero;
1222 } 1222 }
1223 1223
@@ -1227,14 +1227,14 @@ namespace OpenSim.Region.PhysicsModule.ODE
1227 if (Body != IntPtr.Zero) 1227 if (Body != IntPtr.Zero)
1228 { 1228 {
1229 //kill the body 1229 //kill the body
1230 d.BodyDestroy(Body); 1230 SafeNativeMethods.BodyDestroy(Body);
1231 Body = IntPtr.Zero; 1231 Body = IntPtr.Zero;
1232 } 1232 }
1233 1233
1234 if (Shell != IntPtr.Zero) 1234 if (Shell != IntPtr.Zero)
1235 { 1235 {
1236// lock (OdeScene.UniversalColliderSyncObject) 1236// lock (OdeScene.UniversalColliderSyncObject)
1237 d.GeomDestroy(Shell); 1237 SafeNativeMethods.GeomDestroy(Shell);
1238 1238
1239 _parent_scene.geom_name_map.Remove(Shell); 1239 _parent_scene.geom_name_map.Remove(Shell);
1240 _parent_scene.actor_name_map.Remove(Shell); 1240 _parent_scene.actor_name_map.Remove(Shell);
@@ -1325,7 +1325,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1325 { 1325 {
1326 if (Body != IntPtr.Zero) 1326 if (Body != IntPtr.Zero)
1327 { 1327 {
1328 d.BodySetPosition(Body, m_taintPosition.X, m_taintPosition.Y, m_taintPosition.Z); 1328 SafeNativeMethods.BodySetPosition(Body, m_taintPosition.X, m_taintPosition.Y, m_taintPosition.Z);
1329 _position = m_taintPosition; 1329 _position = m_taintPosition;
1330 } 1330 }
1331 } 1331 }
@@ -1337,7 +1337,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1337 // FIXME: This is not a good solution since it's subject to a race condition if a force is another 1337 // FIXME: This is not a good solution since it's subject to a race condition if a force is another
1338 // thread sets a new force while we're in this loop (since it could be obliterated by 1338 // thread sets a new force while we're in this loop (since it could be obliterated by
1339 // m_taintForce = Vector3.Zero. Need to lock ProcessTaints() when we set a new tainted force. 1339 // m_taintForce = Vector3.Zero. Need to lock ProcessTaints() when we set a new tainted force.
1340 d.BodyAddForce(Body, m_taintForce.X, m_taintForce.Y, m_taintForce.Z); 1340 SafeNativeMethods.BodyAddForce(Body, m_taintForce.X, m_taintForce.Y, m_taintForce.Z);
1341 } 1341 }
1342 1342
1343 m_taintForce = Vector3.Zero; 1343 m_taintForce = Vector3.Zero;
diff --git a/OpenSim/Region/PhysicsModules/Ode/ODEDynamics.cs b/OpenSim/Region/PhysicsModules/Ode/ODEDynamics.cs
index 7e95d7f..39aea59 100644
--- a/OpenSim/Region/PhysicsModules/Ode/ODEDynamics.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/ODEDynamics.cs
@@ -93,7 +93,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
93 private float m_linearMotorDecayTimescale = 0; 93 private float m_linearMotorDecayTimescale = 0;
94 private float m_linearMotorTimescale = 0; 94 private float m_linearMotorTimescale = 0;
95 private Vector3 m_lastLinearVelocityVector = Vector3.Zero; 95 private Vector3 m_lastLinearVelocityVector = Vector3.Zero;
96 private d.Vector3 m_lastPositionVector = new d.Vector3(); 96 private SafeNativeMethods.Vector3 m_lastPositionVector = new SafeNativeMethods.Vector3();
97 // private bool m_LinearMotorSetLastFrame = false; 97 // private bool m_LinearMotorSetLastFrame = false;
98 // private Vector3 m_linearMotorOffset = Vector3.Zero; 98 // private Vector3 m_linearMotorOffset = Vector3.Zero;
99 99
@@ -611,7 +611,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
611 { 611 {
612 m_lastLinearVelocityVector = Vector3.Zero; 612 m_lastLinearVelocityVector = Vector3.Zero;
613 m_lastAngularVelocity = Vector3.Zero; 613 m_lastAngularVelocity = Vector3.Zero;
614 m_lastPositionVector = d.BodyGetPosition(Body); 614 m_lastPositionVector = SafeNativeMethods.BodyGetPosition(Body);
615 } 615 }
616 616
617 internal void Step(float pTimestep, OdeScene pParentScene) 617 internal void Step(float pTimestep, OdeScene pParentScene)
@@ -631,8 +631,8 @@ namespace OpenSim.Region.PhysicsModule.ODE
631 { 631 {
632 if (!m_linearMotorDirection.ApproxEquals(Vector3.Zero, 0.01f)) // requested m_linearMotorDirection is significant 632 if (!m_linearMotorDirection.ApproxEquals(Vector3.Zero, 0.01f)) // requested m_linearMotorDirection is significant
633 { 633 {
634 if (!d.BodyIsEnabled(Body)) 634 if (!SafeNativeMethods.BodyIsEnabled(Body))
635 d.BodyEnable(Body); 635 SafeNativeMethods.BodyEnable(Body);
636 636
637 // add drive to body 637 // add drive to body
638 Vector3 addAmount = m_linearMotorDirection/(m_linearMotorTimescale/pTimestep); 638 Vector3 addAmount = m_linearMotorDirection/(m_linearMotorTimescale/pTimestep);
@@ -662,7 +662,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
662 662
663 // convert requested object velocity to world-referenced vector 663 // convert requested object velocity to world-referenced vector
664 m_dir = m_lastLinearVelocityVector; 664 m_dir = m_lastLinearVelocityVector;
665 d.Quaternion rot = d.BodyGetQuaternion(Body); 665 SafeNativeMethods.Quaternion rot = SafeNativeMethods.BodyGetQuaternion(Body);
666 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object 666 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object
667 m_dir *= rotq; // apply obj rotation to velocity vector 667 m_dir *= rotq; // apply obj rotation to velocity vector
668 668
@@ -673,15 +673,15 @@ namespace OpenSim.Region.PhysicsModule.ODE
673 Vector3 grav = Vector3.Zero; 673 Vector3 grav = Vector3.Zero;
674 // There is some gravity, make a gravity force vector 674 // There is some gravity, make a gravity force vector
675 // that is applied after object velocity. 675 // that is applied after object velocity.
676 d.Mass objMass; 676 SafeNativeMethods.Mass objMass;
677 d.BodyGetMass(Body, out objMass); 677 SafeNativeMethods.BodyGetMass(Body, out objMass);
678 // m_VehicleBuoyancy: -1=2g; 0=1g; 1=0g; 678 // m_VehicleBuoyancy: -1=2g; 0=1g; 1=0g;
679 grav.Z = _pParentScene.gravityz * objMass.mass * (1f - m_VehicleBuoyancy); 679 grav.Z = _pParentScene.gravityz * objMass.mass * (1f - m_VehicleBuoyancy);
680 // Preserve the current Z velocity 680 // Preserve the current Z velocity
681 d.Vector3 vel_now = d.BodyGetLinearVel(Body); 681 SafeNativeMethods.Vector3 vel_now = SafeNativeMethods.BodyGetLinearVel(Body);
682 m_dir.Z = vel_now.Z; // Preserve the accumulated falling velocity 682 m_dir.Z = vel_now.Z; // Preserve the accumulated falling velocity
683 683
684 d.Vector3 pos = d.BodyGetPosition(Body); 684 SafeNativeMethods.Vector3 pos = SafeNativeMethods.BodyGetPosition(Body);
685// Vector3 accel = new Vector3(-(m_dir.X - m_lastLinearVelocityVector.X / 0.1f), -(m_dir.Y - m_lastLinearVelocityVector.Y / 0.1f), m_dir.Z - m_lastLinearVelocityVector.Z / 0.1f); 685// Vector3 accel = new Vector3(-(m_dir.X - m_lastLinearVelocityVector.X / 0.1f), -(m_dir.Y - m_lastLinearVelocityVector.Y / 0.1f), m_dir.Z - m_lastLinearVelocityVector.Z / 0.1f);
686 Vector3 posChange = new Vector3(); 686 Vector3 posChange = new Vector3();
687 posChange.X = pos.X - m_lastPositionVector.X; 687 posChange.X = pos.X - m_lastPositionVector.X;
@@ -693,33 +693,33 @@ namespace OpenSim.Region.PhysicsModule.ODE
693 if (pos.X >= (m_BlockingEndPoint.X - (float)1)) 693 if (pos.X >= (m_BlockingEndPoint.X - (float)1))
694 { 694 {
695 pos.X -= posChange.X + 1; 695 pos.X -= posChange.X + 1;
696 d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); 696 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, pos.Z);
697 } 697 }
698 if (pos.Y >= (m_BlockingEndPoint.Y - (float)1)) 698 if (pos.Y >= (m_BlockingEndPoint.Y - (float)1))
699 { 699 {
700 pos.Y -= posChange.Y + 1; 700 pos.Y -= posChange.Y + 1;
701 d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); 701 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, pos.Z);
702 } 702 }
703 if (pos.Z >= (m_BlockingEndPoint.Z - (float)1)) 703 if (pos.Z >= (m_BlockingEndPoint.Z - (float)1))
704 { 704 {
705 pos.Z -= posChange.Z + 1; 705 pos.Z -= posChange.Z + 1;
706 d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); 706 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, pos.Z);
707 } 707 }
708 if (pos.X <= 0) 708 if (pos.X <= 0)
709 { 709 {
710 pos.X += posChange.X + 1; 710 pos.X += posChange.X + 1;
711 d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); 711 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, pos.Z);
712 } 712 }
713 if (pos.Y <= 0) 713 if (pos.Y <= 0)
714 { 714 {
715 pos.Y += posChange.Y + 1; 715 pos.Y += posChange.Y + 1;
716 d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); 716 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, pos.Z);
717 } 717 }
718 } 718 }
719 if (pos.Z < _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y)) 719 if (pos.Z < _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y))
720 { 720 {
721 pos.Z = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y) + 2; 721 pos.Z = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y) + 2;
722 d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); 722 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, pos.Z);
723 } 723 }
724 724
725 // Check if hovering 725 // Check if hovering
@@ -748,7 +748,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
748 { 748 {
749 if ((pos.Z - m_VhoverTargetHeight) > .2 || (pos.Z - m_VhoverTargetHeight) < -.2) 749 if ((pos.Z - m_VhoverTargetHeight) > .2 || (pos.Z - m_VhoverTargetHeight) < -.2)
750 { 750 {
751 d.BodySetPosition(Body, pos.X, pos.Y, m_VhoverTargetHeight); 751 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, m_VhoverTargetHeight);
752 } 752 }
753 } 753 }
754 else 754 else
@@ -815,12 +815,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
815 m_dir.Z = 0; 815 m_dir.Z = 0;
816 } 816 }
817 817
818 m_lastPositionVector = d.BodyGetPosition(Body); 818 m_lastPositionVector = SafeNativeMethods.BodyGetPosition(Body);
819 819
820 // Apply velocity 820 // Apply velocity
821 d.BodySetLinearVel(Body, m_dir.X, m_dir.Y, m_dir.Z); 821 SafeNativeMethods.BodySetLinearVel(Body, m_dir.X, m_dir.Y, m_dir.Z);
822 // apply gravity force 822 // apply gravity force
823 d.BodyAddForce(Body, grav.X, grav.Y, grav.Z); 823 SafeNativeMethods.BodyAddForce(Body, grav.X, grav.Y, grav.Z);
824 824
825 825
826 // apply friction 826 // apply friction
@@ -841,7 +841,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
841 */ 841 */
842 842
843 // Get what the body is doing, this includes 'external' influences 843 // Get what the body is doing, this includes 'external' influences
844 d.Vector3 angularVelocity = d.BodyGetAngularVel(Body); 844 SafeNativeMethods.Vector3 angularVelocity = SafeNativeMethods.BodyGetAngularVel(Body);
845 // Vector3 angularVelocity = Vector3.Zero; 845 // Vector3 angularVelocity = Vector3.Zero;
846 846
847 if (m_angularMotorApply > 0) 847 if (m_angularMotorApply > 0)
@@ -874,7 +874,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
874 { 874 {
875 float VAservo = 0.2f / (m_verticalAttractionTimescale * pTimestep); 875 float VAservo = 0.2f / (m_verticalAttractionTimescale * pTimestep);
876 // get present body rotation 876 // get present body rotation
877 d.Quaternion rot = d.BodyGetQuaternion(Body); 877 SafeNativeMethods.Quaternion rot = SafeNativeMethods.BodyGetQuaternion(Body);
878 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); 878 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W);
879 // make a vector pointing up 879 // make a vector pointing up
880 Vector3 verterr = Vector3.Zero; 880 Vector3 verterr = Vector3.Zero;
@@ -923,7 +923,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
923 923
924 if (!m_lastAngularVelocity.ApproxEquals(Vector3.Zero, 0.01f)) 924 if (!m_lastAngularVelocity.ApproxEquals(Vector3.Zero, 0.01f))
925 { 925 {
926 if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body); 926 if (!SafeNativeMethods.BodyIsEnabled (Body)) SafeNativeMethods.BodyEnable (Body);
927 } 927 }
928 else 928 else
929 { 929 {
@@ -935,14 +935,14 @@ namespace OpenSim.Region.PhysicsModule.ODE
935 m_lastAngularVelocity -= m_lastAngularVelocity * decayamount; 935 m_lastAngularVelocity -= m_lastAngularVelocity * decayamount;
936 936
937 // Apply to the body 937 // Apply to the body
938 d.BodySetAngularVel (Body, m_lastAngularVelocity.X, m_lastAngularVelocity.Y, m_lastAngularVelocity.Z); 938 SafeNativeMethods.BodySetAngularVel (Body, m_lastAngularVelocity.X, m_lastAngularVelocity.Y, m_lastAngularVelocity.Z);
939 939
940 } //end MoveAngular 940 } //end MoveAngular
941 internal void LimitRotation(float timestep) 941 internal void LimitRotation(float timestep)
942 { 942 {
943 d.Quaternion rot = d.BodyGetQuaternion(Body); 943 SafeNativeMethods.Quaternion rot = SafeNativeMethods.BodyGetQuaternion(Body);
944 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object 944 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object
945 d.Quaternion m_rot = new d.Quaternion(); 945 SafeNativeMethods.Quaternion m_rot = new SafeNativeMethods.Quaternion();
946 bool changed = false; 946 bool changed = false;
947 m_rot.X = rotq.X; 947 m_rot.X = rotq.X;
948 m_rot.Y = rotq.Y; 948 m_rot.Y = rotq.Y;
@@ -975,7 +975,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
975 changed = true; 975 changed = true;
976 } 976 }
977 if (changed) 977 if (changed)
978 d.BodySetQuaternion(Body, ref m_rot); 978 SafeNativeMethods.BodySetQuaternion(Body, ref m_rot);
979 } 979 }
980 } 980 }
981} 981}
diff --git a/OpenSim/Region/PhysicsModules/Ode/ODEModule.cs b/OpenSim/Region/PhysicsModules/Ode/ODEModule.cs
index 22fc84d..2cf7baa 100644
--- a/OpenSim/Region/PhysicsModules/Ode/ODEModule.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/ODEModule.cs
@@ -63,7 +63,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
63 63
64 // Initializing ODE only when a scene is created allows alternative ODE plugins to co-habit (according to 64 // Initializing ODE only when a scene is created allows alternative ODE plugins to co-habit (according to
65 // http://opensimulator.org/mantis/view.php?id=2750). 65 // http://opensimulator.org/mantis/view.php?id=2750).
66 d.InitODE(); 66 SafeNativeMethods.InitODE();
67 67
68 m_scene = new OdeScene(scene, m_config, Name, Version); 68 m_scene = new OdeScene(scene, m_config, Name, Version);
69 } 69 }
diff --git a/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs b/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs
index 8934330..b1c3b7c 100644
--- a/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs
@@ -212,7 +212,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
212 212
213 public IntPtr Body = IntPtr.Zero; 213 public IntPtr Body = IntPtr.Zero;
214 private Vector3 _target_velocity; 214 private Vector3 _target_velocity;
215 private d.Mass pMass; 215 private SafeNativeMethods.Mass pMass;
216 216
217 private int m_eventsubscription; 217 private int m_eventsubscription;
218 private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate(); 218 private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate();
@@ -356,13 +356,13 @@ namespace OpenSim.Region.PhysicsModule.ODE
356 356
357 if (m_assetFailed) 357 if (m_assetFailed)
358 { 358 {
359 d.GeomSetCategoryBits(prim_geom, 0); 359 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
360 d.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits); 360 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits);
361 } 361 }
362 else 362 else
363 { 363 {
364 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 364 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
365 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 365 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
366 } 366 }
367 367
368 _parent_scene.geom_name_map[prim_geom] = Name; 368 _parent_scene.geom_name_map[prim_geom] = Name;
@@ -386,7 +386,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
386 { 386 {
387 if (IsPhysical && Body != IntPtr.Zero) 387 if (IsPhysical && Body != IntPtr.Zero)
388 { 388 {
389 d.BodyEnable(Body); 389 SafeNativeMethods.BodyEnable(Body);
390 if (m_vehicle.Type != Vehicle.TYPE_NONE) 390 if (m_vehicle.Type != Vehicle.TYPE_NONE)
391 m_vehicle.Enable(Body, _parent_scene); 391 m_vehicle.Enable(Body, _parent_scene);
392 } 392 }
@@ -401,7 +401,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
401 401
402 if (IsPhysical && Body != IntPtr.Zero) 402 if (IsPhysical && Body != IntPtr.Zero)
403 { 403 {
404 d.BodyDisable(Body); 404 SafeNativeMethods.BodyDisable(Body);
405 } 405 }
406 } 406 }
407 407
@@ -415,22 +415,22 @@ namespace OpenSim.Region.PhysicsModule.ODE
415 if (!childPrim) 415 if (!childPrim)
416 { 416 {
417 // Sets the geom to a body 417 // Sets the geom to a body
418 Body = d.BodyCreate(_parent_scene.world); 418 Body = SafeNativeMethods.BodyCreate(_parent_scene.world);
419 419
420 setMass(); 420 setMass();
421 d.BodySetPosition(Body, _position.X, _position.Y, _position.Z); 421 SafeNativeMethods.BodySetPosition(Body, _position.X, _position.Y, _position.Z);
422 d.Quaternion myrot = new d.Quaternion(); 422 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
423 myrot.X = _orientation.X; 423 myrot.X = _orientation.X;
424 myrot.Y = _orientation.Y; 424 myrot.Y = _orientation.Y;
425 myrot.Z = _orientation.Z; 425 myrot.Z = _orientation.Z;
426 myrot.W = _orientation.W; 426 myrot.W = _orientation.W;
427 d.BodySetQuaternion(Body, ref myrot); 427 SafeNativeMethods.BodySetQuaternion(Body, ref myrot);
428 d.GeomSetBody(prim_geom, Body); 428 SafeNativeMethods.GeomSetBody(prim_geom, Body);
429 429
430 if (m_assetFailed) 430 if (m_assetFailed)
431 { 431 {
432 d.GeomSetCategoryBits(prim_geom, 0); 432 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
433 d.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits); 433 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits);
434 } 434 }
435 else 435 else
436 { 436 {
@@ -438,14 +438,14 @@ namespace OpenSim.Region.PhysicsModule.ODE
438 m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind); 438 m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
439 } 439 }
440 440
441 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 441 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
442 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 442 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
443 443
444 d.BodySetAutoDisableFlag(Body, true); 444 SafeNativeMethods.BodySetAutoDisableFlag(Body, true);
445 d.BodySetAutoDisableSteps(Body, body_autodisable_frames); 445 SafeNativeMethods.BodySetAutoDisableSteps(Body, body_autodisable_frames);
446 446
447 // disconnect from world gravity so we can apply buoyancy 447 // disconnect from world gravity so we can apply buoyancy
448 d.BodySetGravityMode (Body, false); 448 SafeNativeMethods.BodySetGravityMode (Body, false);
449 449
450 m_interpenetrationcount = 0; 450 m_interpenetrationcount = 0;
451 m_collisionscore = 0; 451 m_collisionscore = 0;
@@ -787,8 +787,8 @@ namespace OpenSim.Region.PhysicsModule.ODE
787 787
788 //m_log.Info("[PHYSICS]: New Mass: " + newmass.ToString()); 788 //m_log.Info("[PHYSICS]: New Mass: " + newmass.ToString());
789 789
790 d.MassSetBoxTotal(out pMass, newmass, _size.X, _size.Y, _size.Z); 790 SafeNativeMethods.MassSetBoxTotal(out pMass, newmass, _size.X, _size.Y, _size.Z);
791 d.BodySetMass(Body, ref pMass); 791 SafeNativeMethods.BodySetMass(Body, ref pMass);
792 } 792 }
793 } 793 }
794 794
@@ -796,7 +796,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
796 { 796 {
797 if (Body != (IntPtr)0) 797 if (Body != (IntPtr)0)
798 { 798 {
799 d.BodySetAngularVel(Body, x, y, z); 799 SafeNativeMethods.BodySetAngularVel(Body, x, y, z);
800 } 800 }
801 } 801 }
802 802
@@ -818,16 +818,16 @@ namespace OpenSim.Region.PhysicsModule.ODE
818 818
819 if (m_assetFailed) 819 if (m_assetFailed)
820 { 820 {
821 d.GeomSetCategoryBits(prim_geom, 0); 821 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
822 d.GeomSetCollideBits(prim_geom, 0); 822 SafeNativeMethods.GeomSetCollideBits(prim_geom, 0);
823 } 823 }
824 else 824 else
825 { 825 {
826 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 826 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
827 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 827 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
828 } 828 }
829 829
830 d.BodyDestroy(Body); 830 SafeNativeMethods.BodyDestroy(Body);
831 lock (childrenPrim) 831 lock (childrenPrim)
832 { 832 {
833 if (childrenPrim.Count > 0) 833 if (childrenPrim.Count > 0)
@@ -851,14 +851,14 @@ namespace OpenSim.Region.PhysicsModule.ODE
851 851
852 if (m_assetFailed) 852 if (m_assetFailed)
853 { 853 {
854 d.GeomSetCategoryBits(prim_geom, 0); 854 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
855 d.GeomSetCollideBits(prim_geom, 0); 855 SafeNativeMethods.GeomSetCollideBits(prim_geom, 0);
856 } 856 }
857 else 857 else
858 { 858 {
859 859
860 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 860 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
861 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 861 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
862 } 862 }
863 863
864 Body = IntPtr.Zero; 864 Body = IntPtr.Zero;
@@ -915,10 +915,10 @@ namespace OpenSim.Region.PhysicsModule.ODE
915 } 915 }
916 else 916 else
917 { 917 {
918 _triMeshData = d.GeomTriMeshDataCreate(); 918 _triMeshData = SafeNativeMethods.GeomTriMeshDataCreate();
919 919
920 d.GeomTriMeshDataBuildSimple(_triMeshData, vertices, vertexStride, vertexCount, indices, indexCount, triStride); 920 SafeNativeMethods.GeomTriMeshDataBuildSimple(_triMeshData, vertices, vertexStride, vertexCount, indices, indexCount, triStride);
921 d.GeomTriMeshDataPreprocess(_triMeshData); 921 SafeNativeMethods.GeomTriMeshDataPreprocess(_triMeshData);
922 m_MeshToTriMeshMap[mesh] = _triMeshData; 922 m_MeshToTriMeshMap[mesh] = _triMeshData;
923 } 923 }
924 } 924 }
@@ -926,7 +926,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
926// _parent_scene.waitForSpaceUnlock(m_targetSpace); 926// _parent_scene.waitForSpaceUnlock(m_targetSpace);
927 try 927 try
928 { 928 {
929 SetGeom(d.CreateTriMesh(m_targetSpace, _triMeshData, null, null, null)); 929 SetGeom(SafeNativeMethods.CreateTriMesh(m_targetSpace, _triMeshData, null, null, null));
930 } 930 }
931 catch (AccessViolationException) 931 catch (AccessViolationException)
932 { 932 {
@@ -1032,7 +1032,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1032 { 1032 {
1033 if (Amotor != IntPtr.Zero) 1033 if (Amotor != IntPtr.Zero)
1034 { 1034 {
1035 d.JointDestroy(Amotor); 1035 SafeNativeMethods.JointDestroy(Amotor);
1036 Amotor = IntPtr.Zero; 1036 Amotor = IntPtr.Zero;
1037 } 1037 }
1038 } 1038 }
@@ -1107,7 +1107,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1107 1107
1108 if (Body == IntPtr.Zero) 1108 if (Body == IntPtr.Zero)
1109 { 1109 {
1110 Body = d.BodyCreate(_parent_scene.world); 1110 Body = SafeNativeMethods.BodyCreate(_parent_scene.world);
1111 setMass(); 1111 setMass();
1112 } 1112 }
1113 1113
@@ -1123,21 +1123,21 @@ Console.WriteLine("ZProcessTaints for " + Name);
1123 1123
1124 foreach (OdePrim prm in childrenPrim) 1124 foreach (OdePrim prm in childrenPrim)
1125 { 1125 {
1126 d.Mass m2; 1126 SafeNativeMethods.Mass m2;
1127 d.MassSetZero(out m2); 1127 SafeNativeMethods.MassSetZero(out m2);
1128 d.MassSetBoxTotal(out m2, prm.CalculateMass(), prm._size.X, prm._size.Y, prm._size.Z); 1128 SafeNativeMethods.MassSetBoxTotal(out m2, prm.CalculateMass(), prm._size.X, prm._size.Y, prm._size.Z);
1129 1129
1130 d.Quaternion quat = new d.Quaternion(); 1130 SafeNativeMethods.Quaternion quat = new SafeNativeMethods.Quaternion();
1131 quat.W = prm._orientation.W; 1131 quat.W = prm._orientation.W;
1132 quat.X = prm._orientation.X; 1132 quat.X = prm._orientation.X;
1133 quat.Y = prm._orientation.Y; 1133 quat.Y = prm._orientation.Y;
1134 quat.Z = prm._orientation.Z; 1134 quat.Z = prm._orientation.Z;
1135 1135
1136 d.Matrix3 mat = new d.Matrix3(); 1136 SafeNativeMethods.Matrix3 mat = new SafeNativeMethods.Matrix3();
1137 d.RfromQ(out mat, ref quat); 1137 SafeNativeMethods.RfromQ(out mat, ref quat);
1138 d.MassRotate(ref m2, ref mat); 1138 SafeNativeMethods.MassRotate(ref m2, ref mat);
1139 d.MassTranslate(ref m2, Position.X - prm.Position.X, Position.Y - prm.Position.Y, Position.Z - prm.Position.Z); 1139 SafeNativeMethods.MassTranslate(ref m2, Position.X - prm.Position.X, Position.Y - prm.Position.Y, Position.Z - prm.Position.Z);
1140 d.MassAdd(ref pMass, ref m2); 1140 SafeNativeMethods.MassAdd(ref pMass, ref m2);
1141 } 1141 }
1142 1142
1143 foreach (OdePrim prm in childrenPrim) 1143 foreach (OdePrim prm in childrenPrim)
@@ -1148,36 +1148,36 @@ Console.WriteLine("ZProcessTaints for " + Name);
1148//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + Name); 1148//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + Name);
1149 if (prm.m_assetFailed) 1149 if (prm.m_assetFailed)
1150 { 1150 {
1151 d.GeomSetCategoryBits(prm.prim_geom, 0); 1151 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, 0);
1152 d.GeomSetCollideBits(prm.prim_geom, (uint)prm.BadMeshAssetCollideBits); 1152 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, (uint)prm.BadMeshAssetCollideBits);
1153 } 1153 }
1154 else 1154 else
1155 { 1155 {
1156 d.GeomSetCategoryBits(prm.prim_geom, (uint)prm.m_collisionCategories); 1156 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, (uint)prm.m_collisionCategories);
1157 d.GeomSetCollideBits(prm.prim_geom, (uint)prm.m_collisionFlags); 1157 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, (uint)prm.m_collisionFlags);
1158 } 1158 }
1159 1159
1160 d.Quaternion quat = new d.Quaternion(); 1160 SafeNativeMethods.Quaternion quat = new SafeNativeMethods.Quaternion();
1161 quat.W = prm._orientation.W; 1161 quat.W = prm._orientation.W;
1162 quat.X = prm._orientation.X; 1162 quat.X = prm._orientation.X;
1163 quat.Y = prm._orientation.Y; 1163 quat.Y = prm._orientation.Y;
1164 quat.Z = prm._orientation.Z; 1164 quat.Z = prm._orientation.Z;
1165 1165
1166 d.Matrix3 mat = new d.Matrix3(); 1166 SafeNativeMethods.Matrix3 mat = new SafeNativeMethods.Matrix3();
1167 d.RfromQ(out mat, ref quat); 1167 SafeNativeMethods.RfromQ(out mat, ref quat);
1168 if (Body != IntPtr.Zero) 1168 if (Body != IntPtr.Zero)
1169 { 1169 {
1170 d.GeomSetBody(prm.prim_geom, Body); 1170 SafeNativeMethods.GeomSetBody(prm.prim_geom, Body);
1171 prm.childPrim = true; 1171 prm.childPrim = true;
1172 d.GeomSetOffsetWorldPosition(prm.prim_geom, prm.Position.X , prm.Position.Y, prm.Position.Z); 1172 SafeNativeMethods.GeomSetOffsetWorldPosition(prm.prim_geom, prm.Position.X , prm.Position.Y, prm.Position.Z);
1173 //d.GeomSetOffsetPosition(prim.prim_geom, 1173 //d.GeomSetOffsetPosition(prim.prim_geom,
1174 // (Position.X - prm.Position.X) - pMass.c.X, 1174 // (Position.X - prm.Position.X) - pMass.c.X,
1175 // (Position.Y - prm.Position.Y) - pMass.c.Y, 1175 // (Position.Y - prm.Position.Y) - pMass.c.Y,
1176 // (Position.Z - prm.Position.Z) - pMass.c.Z); 1176 // (Position.Z - prm.Position.Z) - pMass.c.Z);
1177 d.GeomSetOffsetWorldRotation(prm.prim_geom, ref mat); 1177 SafeNativeMethods.GeomSetOffsetWorldRotation(prm.prim_geom, ref mat);
1178 //d.GeomSetOffsetRotation(prm.prim_geom, ref mat); 1178 //d.GeomSetOffsetRotation(prm.prim_geom, ref mat);
1179 d.MassTranslate(ref pMass, -pMass.c.X, -pMass.c.Y, -pMass.c.Z); 1179 SafeNativeMethods.MassTranslate(ref pMass, -pMass.c.X, -pMass.c.Y, -pMass.c.Z);
1180 d.BodySetMass(Body, ref pMass); 1180 SafeNativeMethods.BodySetMass(Body, ref pMass);
1181 } 1181 }
1182 else 1182 else
1183 { 1183 {
@@ -1197,37 +1197,37 @@ Console.WriteLine("ZProcessTaints for " + Name);
1197 1197
1198 if (m_assetFailed) 1198 if (m_assetFailed)
1199 { 1199 {
1200 d.GeomSetCategoryBits(prim_geom, 0); 1200 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
1201 d.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits); 1201 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits);
1202 } 1202 }
1203 else 1203 else
1204 { 1204 {
1205 //Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + Name); 1205 //Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + Name);
1206 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 1206 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
1207 //Console.WriteLine(" Post GeomSetCategoryBits 2"); 1207 //Console.WriteLine(" Post GeomSetCategoryBits 2");
1208 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 1208 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
1209 } 1209 }
1210 1210
1211 d.Quaternion quat2 = new d.Quaternion(); 1211 SafeNativeMethods.Quaternion quat2 = new SafeNativeMethods.Quaternion();
1212 quat2.W = _orientation.W; 1212 quat2.W = _orientation.W;
1213 quat2.X = _orientation.X; 1213 quat2.X = _orientation.X;
1214 quat2.Y = _orientation.Y; 1214 quat2.Y = _orientation.Y;
1215 quat2.Z = _orientation.Z; 1215 quat2.Z = _orientation.Z;
1216 1216
1217 d.Matrix3 mat2 = new d.Matrix3(); 1217 SafeNativeMethods.Matrix3 mat2 = new SafeNativeMethods.Matrix3();
1218 d.RfromQ(out mat2, ref quat2); 1218 SafeNativeMethods.RfromQ(out mat2, ref quat2);
1219 d.GeomSetBody(prim_geom, Body); 1219 SafeNativeMethods.GeomSetBody(prim_geom, Body);
1220 d.GeomSetOffsetWorldPosition(prim_geom, Position.X - pMass.c.X, Position.Y - pMass.c.Y, Position.Z - pMass.c.Z); 1220 SafeNativeMethods.GeomSetOffsetWorldPosition(prim_geom, Position.X - pMass.c.X, Position.Y - pMass.c.Y, Position.Z - pMass.c.Z);
1221 //d.GeomSetOffsetPosition(prim.prim_geom, 1221 //d.GeomSetOffsetPosition(prim.prim_geom,
1222 // (Position.X - prm.Position.X) - pMass.c.X, 1222 // (Position.X - prm.Position.X) - pMass.c.X,
1223 // (Position.Y - prm.Position.Y) - pMass.c.Y, 1223 // (Position.Y - prm.Position.Y) - pMass.c.Y,
1224 // (Position.Z - prm.Position.Z) - pMass.c.Z); 1224 // (Position.Z - prm.Position.Z) - pMass.c.Z);
1225 //d.GeomSetOffsetRotation(prim_geom, ref mat2); 1225 //d.GeomSetOffsetRotation(prim_geom, ref mat2);
1226 d.MassTranslate(ref pMass, -pMass.c.X, -pMass.c.Y, -pMass.c.Z); 1226 SafeNativeMethods.MassTranslate(ref pMass, -pMass.c.X, -pMass.c.Y, -pMass.c.Z);
1227 d.BodySetMass(Body, ref pMass); 1227 SafeNativeMethods.BodySetMass(Body, ref pMass);
1228 1228
1229 d.BodySetAutoDisableFlag(Body, true); 1229 SafeNativeMethods.BodySetAutoDisableFlag(Body, true);
1230 d.BodySetAutoDisableSteps(Body, body_autodisable_frames); 1230 SafeNativeMethods.BodySetAutoDisableSteps(Body, body_autodisable_frames);
1231 1231
1232 m_interpenetrationcount = 0; 1232 m_interpenetrationcount = 0;
1233 m_collisionscore = 0; 1233 m_collisionscore = 0;
@@ -1240,7 +1240,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1240 createAMotor(m_angularlock); 1240 createAMotor(m_angularlock);
1241 } 1241 }
1242 1242
1243 d.BodySetPosition(Body, Position.X, Position.Y, Position.Z); 1243 SafeNativeMethods.BodySetPosition(Body, Position.X, Position.Y, Position.Z);
1244 1244
1245 if (m_vehicle.Type != Vehicle.TYPE_NONE) 1245 if (m_vehicle.Type != Vehicle.TYPE_NONE)
1246 m_vehicle.Enable(Body, _parent_scene); 1246 m_vehicle.Enable(Body, _parent_scene);
@@ -1370,13 +1370,13 @@ Console.WriteLine("ZProcessTaints for " + Name);
1370 1370
1371 if (m_assetFailed) 1371 if (m_assetFailed)
1372 { 1372 {
1373 d.GeomSetCategoryBits(prim_geom, 0); 1373 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
1374 d.GeomSetCollideBits(prim_geom, 0); 1374 SafeNativeMethods.GeomSetCollideBits(prim_geom, 0);
1375 } 1375 }
1376 else 1376 else
1377 { 1377 {
1378 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 1378 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
1379 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 1379 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
1380 } 1380 }
1381 1381
1382 if (IsPhysical) 1382 if (IsPhysical)
@@ -1400,21 +1400,21 @@ Console.WriteLine("ZProcessTaints for " + Name);
1400 1400
1401 if (m_assetFailed) 1401 if (m_assetFailed)
1402 { 1402 {
1403 d.GeomSetCategoryBits(prim_geom, 0); 1403 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
1404 d.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits); 1404 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits);
1405 } 1405 }
1406 else 1406 else
1407 { 1407 {
1408 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 1408 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
1409 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 1409 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
1410 } 1410 }
1411 1411
1412 if (IsPhysical) 1412 if (IsPhysical)
1413 { 1413 {
1414 if (Body != IntPtr.Zero) 1414 if (Body != IntPtr.Zero)
1415 { 1415 {
1416 d.BodySetLinearVel(Body, 0f, 0f, 0f); 1416 SafeNativeMethods.BodySetLinearVel(Body, 0f, 0f, 0f);
1417 d.BodySetForce(Body, 0, 0, 0); 1417 SafeNativeMethods.BodySetForce(Body, 0, 0, 0);
1418 enableBodySoft(); 1418 enableBodySoft();
1419 } 1419 }
1420 } 1420 }
@@ -1463,7 +1463,7 @@ Console.WriteLine("CreateGeom:");
1463 try 1463 try
1464 { 1464 {
1465//Console.WriteLine(" CreateGeom 1"); 1465//Console.WriteLine(" CreateGeom 1");
1466 SetGeom(d.CreateSphere(m_targetSpace, _size.X / 2)); 1466 SetGeom(SafeNativeMethods.CreateSphere(m_targetSpace, _size.X / 2));
1467 m_expectedCollisionContacts = 3; 1467 m_expectedCollisionContacts = 3;
1468 } 1468 }
1469 catch (AccessViolationException) 1469 catch (AccessViolationException)
@@ -1478,7 +1478,7 @@ Console.WriteLine("CreateGeom:");
1478 try 1478 try
1479 { 1479 {
1480//Console.WriteLine(" CreateGeom 2"); 1480//Console.WriteLine(" CreateGeom 2");
1481 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z)); 1481 SetGeom(SafeNativeMethods.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
1482 m_expectedCollisionContacts = 4; 1482 m_expectedCollisionContacts = 4;
1483 } 1483 }
1484 catch (AccessViolationException) 1484 catch (AccessViolationException)
@@ -1494,7 +1494,7 @@ Console.WriteLine("CreateGeom:");
1494 try 1494 try
1495 { 1495 {
1496//Console.WriteLine(" CreateGeom 3"); 1496//Console.WriteLine(" CreateGeom 3");
1497 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z)); 1497 SetGeom(SafeNativeMethods.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
1498 m_expectedCollisionContacts = 4; 1498 m_expectedCollisionContacts = 4;
1499 } 1499 }
1500 catch (AccessViolationException) 1500 catch (AccessViolationException)
@@ -1510,7 +1510,7 @@ Console.WriteLine("CreateGeom:");
1510 try 1510 try
1511 { 1511 {
1512//Console.WriteLine(" CreateGeom 4"); 1512//Console.WriteLine(" CreateGeom 4");
1513 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z)); 1513 SetGeom(SafeNativeMethods.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
1514 m_expectedCollisionContacts = 4; 1514 m_expectedCollisionContacts = 4;
1515 } 1515 }
1516 catch (AccessViolationException) 1516 catch (AccessViolationException)
@@ -1536,7 +1536,7 @@ Console.WriteLine("CreateGeom:");
1536 { 1536 {
1537 _parent_scene.geom_name_map.Remove(prim_geom); 1537 _parent_scene.geom_name_map.Remove(prim_geom);
1538 _parent_scene.actor_name_map.Remove(prim_geom); 1538 _parent_scene.actor_name_map.Remove(prim_geom);
1539 d.GeomDestroy(prim_geom); 1539 SafeNativeMethods.GeomDestroy(prim_geom);
1540 m_expectedCollisionContacts = 0; 1540 m_expectedCollisionContacts = 0;
1541 prim_geom = IntPtr.Zero; 1541 prim_geom = IntPtr.Zero;
1542 } 1542 }
@@ -1593,13 +1593,13 @@ Console.WriteLine("changeadd 1");
1593#endif 1593#endif
1594 CreateGeom(m_targetSpace, mesh); 1594 CreateGeom(m_targetSpace, mesh);
1595 1595
1596 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 1596 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
1597 d.Quaternion myrot = new d.Quaternion(); 1597 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
1598 myrot.X = _orientation.X; 1598 myrot.X = _orientation.X;
1599 myrot.Y = _orientation.Y; 1599 myrot.Y = _orientation.Y;
1600 myrot.Z = _orientation.Z; 1600 myrot.Z = _orientation.Z;
1601 myrot.W = _orientation.W; 1601 myrot.W = _orientation.W;
1602 d.GeomSetQuaternion(prim_geom, ref myrot); 1602 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
1603 1603
1604 if (IsPhysical && Body == IntPtr.Zero) 1604 if (IsPhysical && Body == IntPtr.Zero)
1605 enableBody(); 1605 enableBody();
@@ -1627,14 +1627,14 @@ Console.WriteLine("changeadd 1");
1627 { 1627 {
1628 if (m_linkJoint != IntPtr.Zero) 1628 if (m_linkJoint != IntPtr.Zero)
1629 { 1629 {
1630 d.JointDestroy(m_linkJoint); 1630 SafeNativeMethods.JointDestroy(m_linkJoint);
1631 m_linkJoint = IntPtr.Zero; 1631 m_linkJoint = IntPtr.Zero;
1632 } 1632 }
1633 } 1633 }
1634 1634
1635 if (Body != IntPtr.Zero) 1635 if (Body != IntPtr.Zero)
1636 { 1636 {
1637 d.BodySetPosition(Body, _position.X, _position.Y, _position.Z); 1637 SafeNativeMethods.BodySetPosition(Body, _position.X, _position.Y, _position.Z);
1638 1638
1639 if (_parent != null) 1639 if (_parent != null)
1640 { 1640 {
@@ -1643,12 +1643,12 @@ Console.WriteLine("changeadd 1");
1643 { 1643 {
1644// KF: Fixed Joints were removed? Anyway - this Console.WriteLine does not show up, so routine is not used?? 1644// KF: Fixed Joints were removed? Anyway - this Console.WriteLine does not show up, so routine is not used??
1645Console.WriteLine(" JointCreateFixed"); 1645Console.WriteLine(" JointCreateFixed");
1646 m_linkJoint = d.JointCreateFixed(_parent_scene.world, _linkJointGroup); 1646 m_linkJoint = SafeNativeMethods.JointCreateFixed(_parent_scene.world, _linkJointGroup);
1647 d.JointAttach(m_linkJoint, Body, odParent.Body); 1647 SafeNativeMethods.JointAttach(m_linkJoint, Body, odParent.Body);
1648 d.JointSetFixed(m_linkJoint); 1648 SafeNativeMethods.JointSetFixed(m_linkJoint);
1649 } 1649 }
1650 } 1650 }
1651 d.BodyEnable(Body); 1651 SafeNativeMethods.BodyEnable(Body);
1652 if (m_vehicle.Type != Vehicle.TYPE_NONE) 1652 if (m_vehicle.Type != Vehicle.TYPE_NONE)
1653 { 1653 {
1654 m_vehicle.Enable(Body, _parent_scene); 1654 m_vehicle.Enable(Body, _parent_scene);
@@ -1674,10 +1674,10 @@ Console.WriteLine(" JointCreateFixed");
1674 1674
1675// _parent_scene.waitForSpaceUnlock(m_targetSpace); 1675// _parent_scene.waitForSpaceUnlock(m_targetSpace);
1676 1676
1677 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 1677 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
1678 1678
1679// _parent_scene.waitForSpaceUnlock(m_targetSpace); 1679// _parent_scene.waitForSpaceUnlock(m_targetSpace);
1680 d.SpaceAdd(m_targetSpace, prim_geom); 1680 SafeNativeMethods.SpaceAdd(m_targetSpace, prim_geom);
1681 1681
1682 changeSelectedStatus(); 1682 changeSelectedStatus();
1683 1683
@@ -1704,7 +1704,7 @@ Console.WriteLine(" JointCreateFixed");
1704 else 1704 else
1705 { 1705 {
1706//Console.WriteLine("Move " + Name); 1706//Console.WriteLine("Move " + Name);
1707 if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body); // KF add 161009 1707 if (!SafeNativeMethods.BodyIsEnabled (Body)) SafeNativeMethods.BodyEnable (Body); // KF add 161009
1708 1708
1709 float m_mass = CalculateMass(); 1709 float m_mass = CalculateMass();
1710 1710
@@ -1746,9 +1746,9 @@ Console.WriteLine(" JointCreateFixed");
1746 //PidStatus = true; 1746 //PidStatus = true;
1747 1747
1748 // PhysicsVector vec = new PhysicsVector(); 1748 // PhysicsVector vec = new PhysicsVector();
1749 d.Vector3 vel = d.BodyGetLinearVel(Body); 1749 SafeNativeMethods.Vector3 vel = SafeNativeMethods.BodyGetLinearVel(Body);
1750 1750
1751 d.Vector3 pos = d.BodyGetPosition(Body); 1751 SafeNativeMethods.Vector3 pos = SafeNativeMethods.BodyGetPosition(Body);
1752 _target_velocity = 1752 _target_velocity =
1753 new Vector3( 1753 new Vector3(
1754 (m_PIDTarget.X - pos.X) * ((PID_G - m_PIDTau) * timestep), 1754 (m_PIDTarget.X - pos.X) * ((PID_G - m_PIDTau) * timestep),
@@ -1770,9 +1770,9 @@ Console.WriteLine(" JointCreateFixed");
1770 //fx = (_target_velocity.X - vel.X) * (PID_D) + (_zeroPosition.X - pos.X) * (PID_P * 2); 1770 //fx = (_target_velocity.X - vel.X) * (PID_D) + (_zeroPosition.X - pos.X) * (PID_P * 2);
1771 //fy = (_target_velocity.Y - vel.Y) * (PID_D) + (_zeroPosition.Y - pos.Y) * (PID_P * 2); 1771 //fy = (_target_velocity.Y - vel.Y) * (PID_D) + (_zeroPosition.Y - pos.Y) * (PID_P * 2);
1772 //fz = fz + (_target_velocity.Z - vel.Z) * (PID_D) + (_zeroPosition.Z - pos.Z) * PID_P; 1772 //fz = fz + (_target_velocity.Z - vel.Z) * (PID_D) + (_zeroPosition.Z - pos.Z) * PID_P;
1773 d.BodySetPosition(Body, m_PIDTarget.X, m_PIDTarget.Y, m_PIDTarget.Z); 1773 SafeNativeMethods.BodySetPosition(Body, m_PIDTarget.X, m_PIDTarget.Y, m_PIDTarget.Z);
1774 d.BodySetLinearVel(Body, 0, 0, 0); 1774 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0);
1775 d.BodyAddForce(Body, 0, 0, fz); 1775 SafeNativeMethods.BodyAddForce(Body, 0, 0, fz);
1776 return; 1776 return;
1777 } 1777 }
1778 else 1778 else
@@ -1813,8 +1813,8 @@ Console.WriteLine(" JointCreateFixed");
1813 } 1813 }
1814 1814
1815 // Where are we, and where are we headed? 1815 // Where are we, and where are we headed?
1816 d.Vector3 pos = d.BodyGetPosition(Body); 1816 SafeNativeMethods.Vector3 pos = SafeNativeMethods.BodyGetPosition(Body);
1817 d.Vector3 vel = d.BodyGetLinearVel(Body); 1817 SafeNativeMethods.Vector3 vel = SafeNativeMethods.BodyGetLinearVel(Body);
1818 1818
1819 // Non-Vehicles have a limited set of Hover options. 1819 // Non-Vehicles have a limited set of Hover options.
1820 // determine what our target height really is based on HoverType 1820 // determine what our target height really is based on HoverType
@@ -1856,9 +1856,9 @@ Console.WriteLine(" JointCreateFixed");
1856 // Avatar to Avatar collisions 1856 // Avatar to Avatar collisions
1857 // Prim to avatar collisions 1857 // Prim to avatar collisions
1858 1858
1859 d.BodySetPosition(Body, pos.X, pos.Y, m_targetHoverHeight); 1859 SafeNativeMethods.BodySetPosition(Body, pos.X, pos.Y, m_targetHoverHeight);
1860 d.BodySetLinearVel(Body, vel.X, vel.Y, 0); 1860 SafeNativeMethods.BodySetLinearVel(Body, vel.X, vel.Y, 0);
1861 d.BodyAddForce(Body, 0, 0, fz); 1861 SafeNativeMethods.BodyAddForce(Body, 0, 0, fz);
1862 return; 1862 return;
1863 } 1863 }
1864 else 1864 else
@@ -1884,13 +1884,13 @@ Console.WriteLine(" JointCreateFixed");
1884 //m_taintdisable = true; 1884 //m_taintdisable = true;
1885 //base.RaiseOutOfBounds(Position); 1885 //base.RaiseOutOfBounds(Position);
1886 //d.BodySetLinearVel(Body, fx, fy, 0f); 1886 //d.BodySetLinearVel(Body, fx, fy, 0f);
1887 if (!d.BodyIsEnabled(Body)) 1887 if (!SafeNativeMethods.BodyIsEnabled(Body))
1888 { 1888 {
1889 // A physical body at rest on a surface will auto-disable after a while, 1889 // A physical body at rest on a surface will auto-disable after a while,
1890 // this appears to re-enable it incase the surface it is upon vanishes, 1890 // this appears to re-enable it incase the surface it is upon vanishes,
1891 // and the body should fall again. 1891 // and the body should fall again.
1892 d.BodySetLinearVel(Body, 0f, 0f, 0f); 1892 SafeNativeMethods.BodySetLinearVel(Body, 0f, 0f, 0f);
1893 d.BodySetForce(Body, 0, 0, 0); 1893 SafeNativeMethods.BodySetForce(Body, 0, 0, 0);
1894 enableBodySoft(); 1894 enableBodySoft();
1895 } 1895 }
1896 1896
@@ -1906,7 +1906,7 @@ Console.WriteLine(" JointCreateFixed");
1906 fy = nmax; 1906 fy = nmax;
1907 if (fy < nmin) 1907 if (fy < nmin)
1908 fy = nmin; 1908 fy = nmin;
1909 d.BodyAddForce(Body, fx, fy, fz); 1909 SafeNativeMethods.BodyAddForce(Body, fx, fy, fz);
1910//Console.WriteLine("AddForce " + fx + "," + fy + "," + fz); 1910//Console.WriteLine("AddForce " + fx + "," + fy + "," + fz);
1911 } 1911 }
1912 } 1912 }
@@ -1922,7 +1922,7 @@ Console.WriteLine(" JointCreateFixed");
1922 1922
1923 private void rotate() 1923 private void rotate()
1924 { 1924 {
1925 d.Quaternion myrot = new d.Quaternion(); 1925 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
1926 myrot.X = _orientation.X; 1926 myrot.X = _orientation.X;
1927 myrot.Y = _orientation.Y; 1927 myrot.Y = _orientation.Y;
1928 myrot.Z = _orientation.Z; 1928 myrot.Z = _orientation.Z;
@@ -1930,7 +1930,7 @@ Console.WriteLine(" JointCreateFixed");
1930 if (Body != IntPtr.Zero) 1930 if (Body != IntPtr.Zero)
1931 { 1931 {
1932 // KF: If this is a root prim do BodySet 1932 // KF: If this is a root prim do BodySet
1933 d.BodySetQuaternion(Body, ref myrot); 1933 SafeNativeMethods.BodySetQuaternion(Body, ref myrot);
1934 if (IsPhysical) 1934 if (IsPhysical)
1935 { 1935 {
1936 // create or remove locks 1936 // create or remove locks
@@ -1940,7 +1940,7 @@ Console.WriteLine(" JointCreateFixed");
1940 else 1940 else
1941 { 1941 {
1942 // daughter prim, do Geom set 1942 // daughter prim, do Geom set
1943 d.GeomSetQuaternion(prim_geom, ref myrot); 1943 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
1944 } 1944 }
1945 1945
1946 resetCollisionAccounting(); 1946 resetCollisionAccounting();
@@ -1962,7 +1962,7 @@ Console.WriteLine(" JointCreateFixed");
1962 m_disabled = true; 1962 m_disabled = true;
1963 if (Body != IntPtr.Zero) 1963 if (Body != IntPtr.Zero)
1964 { 1964 {
1965 d.BodyDisable(Body); 1965 SafeNativeMethods.BodyDisable(Body);
1966 Body = IntPtr.Zero; 1966 Body = IntPtr.Zero;
1967 } 1967 }
1968 1968
@@ -2051,10 +2051,10 @@ Console.WriteLine(" JointCreateFixed");
2051 } 2051 }
2052 } 2052 }
2053 2053
2054 if (d.SpaceQuery(m_targetSpace, prim_geom)) 2054 if (SafeNativeMethods.SpaceQuery(m_targetSpace, prim_geom))
2055 { 2055 {
2056// _parent_scene.waitForSpaceUnlock(m_targetSpace); 2056// _parent_scene.waitForSpaceUnlock(m_targetSpace);
2057 d.SpaceRemove(m_targetSpace, prim_geom); 2057 SafeNativeMethods.SpaceRemove(m_targetSpace, prim_geom);
2058 } 2058 }
2059 2059
2060 RemoveGeom(); 2060 RemoveGeom();
@@ -2084,13 +2084,13 @@ Console.WriteLine(" JointCreateFixed");
2084 } 2084 }
2085 2085
2086 CreateGeom(m_targetSpace, mesh); 2086 CreateGeom(m_targetSpace, mesh);
2087 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 2087 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
2088 d.Quaternion myrot = new d.Quaternion(); 2088 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
2089 myrot.X = _orientation.X; 2089 myrot.X = _orientation.X;
2090 myrot.Y = _orientation.Y; 2090 myrot.Y = _orientation.Y;
2091 myrot.Z = _orientation.Z; 2091 myrot.Z = _orientation.Z;
2092 myrot.W = _orientation.W; 2092 myrot.W = _orientation.W;
2093 d.GeomSetQuaternion(prim_geom, ref myrot); 2093 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
2094 2094
2095 //d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z); 2095 //d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z);
2096 if (IsPhysical && Body == IntPtr.Zero && !childPrim) 2096 if (IsPhysical && Body == IntPtr.Zero && !childPrim)
@@ -2098,7 +2098,7 @@ Console.WriteLine(" JointCreateFixed");
2098 // Re creates body on size. 2098 // Re creates body on size.
2099 // EnableBody also does setMass() 2099 // EnableBody also does setMass()
2100 enableBody(); 2100 enableBody();
2101 d.BodyEnable(Body); 2101 SafeNativeMethods.BodyEnable(Body);
2102 } 2102 }
2103 2103
2104 changeSelectedStatus(); 2104 changeSelectedStatus();
@@ -2133,10 +2133,10 @@ Console.WriteLine(" JointCreateFixed");
2133 } 2133 }
2134 2134
2135 if (m_assetFailed) 2135 if (m_assetFailed)
2136 d.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits); 2136 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)BadMeshAssetCollideBits);
2137 else 2137 else
2138 2138
2139 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 2139 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
2140 } 2140 }
2141 /// <summary> 2141 /// <summary>
2142 /// Change prim in response to a shape taint. 2142 /// Change prim in response to a shape taint.
@@ -2190,14 +2190,14 @@ Console.WriteLine(" JointCreateFixed");
2190 } 2190 }
2191 2191
2192 CreateGeom(m_targetSpace, mesh); 2192 CreateGeom(m_targetSpace, mesh);
2193 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 2193 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
2194 d.Quaternion myrot = new d.Quaternion(); 2194 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
2195 //myrot.W = _orientation.w; 2195 //myrot.W = _orientation.w;
2196 myrot.W = _orientation.W; 2196 myrot.W = _orientation.W;
2197 myrot.X = _orientation.X; 2197 myrot.X = _orientation.X;
2198 myrot.Y = _orientation.Y; 2198 myrot.Y = _orientation.Y;
2199 myrot.Z = _orientation.Z; 2199 myrot.Z = _orientation.Z;
2200 d.GeomSetQuaternion(prim_geom, ref myrot); 2200 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
2201 2201
2202 //d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z); 2202 //d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z);
2203 if (IsPhysical && Body == IntPtr.Zero) 2203 if (IsPhysical && Body == IntPtr.Zero)
@@ -2207,7 +2207,7 @@ Console.WriteLine(" JointCreateFixed");
2207 enableBody(); 2207 enableBody();
2208 if (Body != IntPtr.Zero) 2208 if (Body != IntPtr.Zero)
2209 { 2209 {
2210 d.BodyEnable(Body); 2210 SafeNativeMethods.BodyEnable(Body);
2211 } 2211 }
2212 } 2212 }
2213 2213
@@ -2264,8 +2264,8 @@ Console.WriteLine(" JointCreateFixed");
2264 m_taintforce = false; 2264 m_taintforce = false;
2265 return; 2265 return;
2266 } 2266 }
2267 d.BodyEnable(Body); 2267 SafeNativeMethods.BodyEnable(Body);
2268 d.BodyAddForce(Body, iforce.X, iforce.Y, iforce.Z); 2268 SafeNativeMethods.BodyAddForce(Body, iforce.X, iforce.Y, iforce.Z);
2269 } 2269 }
2270 m_forcelist.Clear(); 2270 m_forcelist.Clear();
2271 } 2271 }
@@ -2286,7 +2286,7 @@ Console.WriteLine(" JointCreateFixed");
2286 { 2286 {
2287 if (IsPhysical && Body != IntPtr.Zero) 2287 if (IsPhysical && Body != IntPtr.Zero)
2288 { 2288 {
2289 d.BodySetTorque(Body, m_taintTorque.X, m_taintTorque.Y, m_taintTorque.Z); 2289 SafeNativeMethods.BodySetTorque(Body, m_taintTorque.X, m_taintTorque.Y, m_taintTorque.Z);
2290 } 2290 }
2291 } 2291 }
2292 2292
@@ -2310,8 +2310,8 @@ Console.WriteLine(" JointCreateFixed");
2310 { 2310 {
2311 iforce = iforce + (m_angularforcelist[i] * 100); 2311 iforce = iforce + (m_angularforcelist[i] * 100);
2312 } 2312 }
2313 d.BodyEnable(Body); 2313 SafeNativeMethods.BodyEnable(Body);
2314 d.BodyAddTorque(Body, iforce.X, iforce.Y, iforce.Z); 2314 SafeNativeMethods.BodyAddTorque(Body, iforce.X, iforce.Y, iforce.Z);
2315 2315
2316 } 2316 }
2317 m_angularforcelist.Clear(); 2317 m_angularforcelist.Clear();
@@ -2339,7 +2339,7 @@ Console.WriteLine(" JointCreateFixed");
2339 { 2339 {
2340 if (Body != IntPtr.Zero) 2340 if (Body != IntPtr.Zero)
2341 { 2341 {
2342 d.BodySetLinearVel(Body, m_taintVelocity.X, m_taintVelocity.Y, m_taintVelocity.Z); 2342 SafeNativeMethods.BodySetLinearVel(Body, m_taintVelocity.X, m_taintVelocity.Y, m_taintVelocity.Z);
2343 } 2343 }
2344 } 2344 }
2345 2345
@@ -2665,7 +2665,7 @@ Console.WriteLine(" JointCreateFixed");
2665 } 2665 }
2666 */ 2666 */
2667 2667
2668 d.AllocateODEDataForThread(0U); 2668 SafeNativeMethods.AllocateODEDataForThread(0U);
2669 2669
2670 _position.X = Util.Clip(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f); 2670 _position.X = Util.Clip(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f);
2671 _position.Y = Util.Clip(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f); 2671 _position.Y = Util.Clip(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f);
@@ -2680,8 +2680,8 @@ Console.WriteLine(" JointCreateFixed");
2680 2680
2681 if (Body != IntPtr.Zero) 2681 if (Body != IntPtr.Zero)
2682 { 2682 {
2683 d.BodySetLinearVel(Body, 0, 0, 0); // stop it 2683 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0); // stop it
2684 d.BodySetPosition(Body, _position.X, _position.Y, _position.Z); 2684 SafeNativeMethods.BodySetPosition(Body, _position.X, _position.Y, _position.Z);
2685 } 2685 }
2686 2686
2687 if(m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) 2687 if(m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE)
@@ -2728,11 +2728,11 @@ Console.WriteLine(" JointCreateFixed");
2728 float m_minvelocity = 0; 2728 float m_minvelocity = 0;
2729 if (Body != IntPtr.Zero) // FIXME -> or if it is a joint 2729 if (Body != IntPtr.Zero) // FIXME -> or if it is a joint
2730 { 2730 {
2731 d.Vector3 vec = d.BodyGetPosition(Body); 2731 SafeNativeMethods.Vector3 vec = SafeNativeMethods.BodyGetPosition(Body);
2732 d.Quaternion ori = d.BodyGetQuaternion(Body); 2732 SafeNativeMethods.Quaternion ori = SafeNativeMethods.BodyGetQuaternion(Body);
2733 d.Vector3 vel = d.BodyGetLinearVel(Body); 2733 SafeNativeMethods.Vector3 vel = SafeNativeMethods.BodyGetLinearVel(Body);
2734 d.Vector3 rotvel = d.BodyGetAngularVel(Body); 2734 SafeNativeMethods.Vector3 rotvel = SafeNativeMethods.BodyGetAngularVel(Body);
2735 d.Vector3 torque = d.BodyGetTorque(Body); 2735 SafeNativeMethods.Vector3 torque = SafeNativeMethods.BodyGetTorque(Body);
2736 _torque = new Vector3(torque.X, torque.Y, torque.Z); 2736 _torque = new Vector3(torque.X, torque.Y, torque.Z);
2737 Vector3 l_position = Vector3.Zero; 2737 Vector3 l_position = Vector3.Zero;
2738 Quaternion l_orientation = Quaternion.Identity; 2738 Quaternion l_orientation = Quaternion.Identity;
@@ -2812,11 +2812,11 @@ Console.WriteLine(" JointCreateFixed");
2812 else 2812 else
2813 Util.Clamp(l_position.Y, _parent_scene.WorldExtents.Y + 0.1f, _parent_scene.WorldExtents.Y + 2f); 2813 Util.Clamp(l_position.Y, _parent_scene.WorldExtents.Y + 0.1f, _parent_scene.WorldExtents.Y + 2f);
2814 2814
2815 d.BodySetPosition(Body, l_position.X, l_position.Y, l_position.Z); 2815 SafeNativeMethods.BodySetPosition(Body, l_position.X, l_position.Y, l_position.Z);
2816 2816
2817 // stop it 2817 // stop it
2818 d.BodySetAngularVel(Body, 0, 0, 0); 2818 SafeNativeMethods.BodySetAngularVel(Body, 0, 0, 0);
2819 d.BodySetLinearVel(Body, 0, 0, 0); 2819 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0);
2820 disableBodySoft(); 2820 disableBodySoft();
2821 2821
2822 _position = l_position; 2822 _position = l_position;
@@ -3009,7 +3009,7 @@ Console.WriteLine(" JointCreateFixed");
3009 3009
3010 if (Amotor != IntPtr.Zero) 3010 if (Amotor != IntPtr.Zero)
3011 { 3011 {
3012 d.JointDestroy(Amotor); 3012 SafeNativeMethods.JointDestroy(Amotor);
3013 Amotor = IntPtr.Zero; 3013 Amotor = IntPtr.Zero;
3014 } 3014 }
3015 3015
@@ -3039,19 +3039,19 @@ Console.WriteLine(" JointCreateFixed");
3039 if(axisnum == 0) 3039 if(axisnum == 0)
3040 return; 3040 return;
3041 // stop it 3041 // stop it
3042 d.BodySetTorque(Body, 0, 0, 0); 3042 SafeNativeMethods.BodySetTorque(Body, 0, 0, 0);
3043 d.BodySetAngularVel(Body, 0, 0, 0); 3043 SafeNativeMethods.BodySetAngularVel(Body, 0, 0, 0);
3044 3044
3045 Amotor = d.JointCreateAMotor(_parent_scene.world, IntPtr.Zero); 3045 Amotor = SafeNativeMethods.JointCreateAMotor(_parent_scene.world, IntPtr.Zero);
3046 d.JointAttach(Amotor, Body, IntPtr.Zero); 3046 SafeNativeMethods.JointAttach(Amotor, Body, IntPtr.Zero);
3047 3047
3048 d.JointSetAMotorMode(Amotor, 0); 3048 SafeNativeMethods.JointSetAMotorMode(Amotor, 0);
3049 3049
3050 d.JointSetAMotorNumAxes(Amotor, axisnum); 3050 SafeNativeMethods.JointSetAMotorNumAxes(Amotor, axisnum);
3051 3051
3052 // get current orientation to lock 3052 // get current orientation to lock
3053 3053
3054 d.Quaternion dcur = d.BodyGetQuaternion(Body); 3054 SafeNativeMethods.Quaternion dcur = SafeNativeMethods.BodyGetQuaternion(Body);
3055 Quaternion curr; // crap convertion between identical things 3055 Quaternion curr; // crap convertion between identical things
3056 curr.X = dcur.X; 3056 curr.X = dcur.X;
3057 curr.Y = dcur.Y; 3057 curr.Y = dcur.Y;
@@ -3064,17 +3064,17 @@ Console.WriteLine(" JointCreateFixed");
3064 if (axisX) 3064 if (axisX)
3065 { 3065 {
3066 ax = (new Vector3(1, 0, 0)) * curr; // rotate world X to current local X 3066 ax = (new Vector3(1, 0, 0)) * curr; // rotate world X to current local X
3067 d.JointSetAMotorAxis(Amotor, 0, 0, ax.X, ax.Y, ax.Z); 3067 SafeNativeMethods.JointSetAMotorAxis(Amotor, 0, 0, ax.X, ax.Y, ax.Z);
3068 d.JointSetAMotorAngle(Amotor, 0, 0); 3068 SafeNativeMethods.JointSetAMotorAngle(Amotor, 0, 0);
3069 d.JointSetAMotorParam(Amotor, (int)d.JointParam.LoStop, 0f); 3069 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.LoStop, 0f);
3070 d.JointSetAMotorParam(Amotor, (int)d.JointParam.HiStop, 0f); 3070 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.HiStop, 0f);
3071 d.JointSetAMotorParam(Amotor, (int)d.JointParam.Vel, 0); 3071 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.Vel, 0);
3072 d.JointSetAMotorParam(Amotor, (int)d.JointParam.FudgeFactor, 0.0001f); 3072 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.FudgeFactor, 0.0001f);
3073 d.JointSetAMotorParam(Amotor, (int)d.JointParam.Bounce, 0f); 3073 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.Bounce, 0f);
3074 d.JointSetAMotorParam(Amotor, (int)d.JointParam.CFM, 0f); 3074 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.CFM, 0f);
3075 d.JointSetAMotorParam(Amotor, (int)d.JointParam.FMax, 5e8f); 3075 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.FMax, 5e8f);
3076 d.JointSetAMotorParam(Amotor, (int)d.JointParam.StopCFM, 0f); 3076 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.StopCFM, 0f);
3077 d.JointSetAMotorParam(Amotor, (int)d.JointParam.StopERP, 0.8f); 3077 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.StopERP, 0.8f);
3078 i++; 3078 i++;
3079 j = 256; // move to next axis set 3079 j = 256; // move to next axis set
3080 } 3080 }
@@ -3082,17 +3082,17 @@ Console.WriteLine(" JointCreateFixed");
3082 if (axisY) 3082 if (axisY)
3083 { 3083 {
3084 ax = (new Vector3(0, 1, 0)) * curr; 3084 ax = (new Vector3(0, 1, 0)) * curr;
3085 d.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z); 3085 SafeNativeMethods.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z);
3086 d.JointSetAMotorAngle(Amotor, i, 0); 3086 SafeNativeMethods.JointSetAMotorAngle(Amotor, i, 0);
3087 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.LoStop, 0f); 3087 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.LoStop, 0f);
3088 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.HiStop, 0f); 3088 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.HiStop, 0f);
3089 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Vel, 0); 3089 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Vel, 0);
3090 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FudgeFactor, 0.0001f); 3090 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FudgeFactor, 0.0001f);
3091 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Bounce, 0f); 3091 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Bounce, 0f);
3092 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.CFM, 0f); 3092 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.CFM, 0f);
3093 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FMax, 5e8f); 3093 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FMax, 5e8f);
3094 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopCFM, 0f); 3094 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopCFM, 0f);
3095 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopERP, 0.8f); 3095 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopERP, 0.8f);
3096 i++; 3096 i++;
3097 j += 256; 3097 j += 256;
3098 } 3098 }
@@ -3100,17 +3100,17 @@ Console.WriteLine(" JointCreateFixed");
3100 if (axisZ) 3100 if (axisZ)
3101 { 3101 {
3102 ax = (new Vector3(0, 0, 1)) * curr; 3102 ax = (new Vector3(0, 0, 1)) * curr;
3103 d.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z); 3103 SafeNativeMethods.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z);
3104 d.JointSetAMotorAngle(Amotor, i, 0); 3104 SafeNativeMethods.JointSetAMotorAngle(Amotor, i, 0);
3105 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.LoStop, 0f); 3105 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.LoStop, 0f);
3106 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.HiStop, 0f); 3106 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.HiStop, 0f);
3107 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Vel, 0); 3107 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Vel, 0);
3108 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FudgeFactor, 0.0001f); 3108 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FudgeFactor, 0.0001f);
3109 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Bounce, 0f); 3109 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Bounce, 0f);
3110 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.CFM, 0f); 3110 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.CFM, 0f);
3111 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FMax, 5e8f); 3111 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FMax, 5e8f);
3112 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopCFM, 0f); 3112 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopCFM, 0f);
3113 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopERP, 0.8f); 3113 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopERP, 0.8f);
3114 } 3114 }
3115 } 3115 }
3116 3116
diff --git a/OpenSim/Region/PhysicsModules/Ode/ODERayCastRequestManager.cs b/OpenSim/Region/PhysicsModules/Ode/ODERayCastRequestManager.cs
index 78dd7de..c731c6c 100644
--- a/OpenSim/Region/PhysicsModules/Ode/ODERayCastRequestManager.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/ODERayCastRequestManager.cs
@@ -61,12 +61,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
61 /// <summary> 61 /// <summary>
62 /// ODE contact array to be filled by the collision testing 62 /// ODE contact array to be filled by the collision testing
63 /// </summary> 63 /// </summary>
64 d.ContactGeom[] contacts = new d.ContactGeom[5]; 64 SafeNativeMethods.ContactGeom[] contacts = new SafeNativeMethods.ContactGeom[5];
65 65
66 /// <summary> 66 /// <summary>
67 /// ODE near callback delegate 67 /// ODE near callback delegate
68 /// </summary> 68 /// </summary>
69 private d.NearCallback nearCallback; 69 private SafeNativeMethods.NearCallback nearCallback;
70 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 70 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
71 private List<ContactResult> m_contactResults = new List<ContactResult>(); 71 private List<ContactResult> m_contactResults = new List<ContactResult>();
72 72
@@ -179,14 +179,14 @@ namespace OpenSim.Region.PhysicsModule.ODE
179 len = 100f; 179 len = 100f;
180 180
181 // Create the ray 181 // Create the ray
182 IntPtr ray = d.CreateRay(m_scene.space, len); 182 IntPtr ray = SafeNativeMethods.CreateRay(m_scene.space, len);
183 d.GeomRaySet(ray, req.Origin.X, req.Origin.Y, req.Origin.Z, req.Normal.X, req.Normal.Y, req.Normal.Z); 183 SafeNativeMethods.GeomRaySet(ray, req.Origin.X, req.Origin.Y, req.Origin.Z, req.Normal.X, req.Normal.Y, req.Normal.Z);
184 184
185 // Collide test 185 // Collide test
186 d.SpaceCollide2(m_scene.space, ray, IntPtr.Zero, nearCallback); 186 SafeNativeMethods.SpaceCollide2(m_scene.space, ray, IntPtr.Zero, nearCallback);
187 187
188 // Remove Ray 188 // Remove Ray
189 d.GeomDestroy(ray); 189 SafeNativeMethods.GeomDestroy(ray);
190 190
191 // Define default results 191 // Define default results
192 bool hitYN = false; 192 bool hitYN = false;
@@ -230,14 +230,14 @@ namespace OpenSim.Region.PhysicsModule.ODE
230 len = 100f; 230 len = 100f;
231 231
232 // Create the ray 232 // Create the ray
233 IntPtr ray = d.CreateRay(m_scene.space, len); 233 IntPtr ray = SafeNativeMethods.CreateRay(m_scene.space, len);
234 d.GeomRaySet(ray, req.Origin.X, req.Origin.Y, req.Origin.Z, req.Normal.X, req.Normal.Y, req.Normal.Z); 234 SafeNativeMethods.GeomRaySet(ray, req.Origin.X, req.Origin.Y, req.Origin.Z, req.Normal.X, req.Normal.Y, req.Normal.Z);
235 235
236 // Collide test 236 // Collide test
237 d.SpaceCollide2(m_scene.space, ray, IntPtr.Zero, nearCallback); 237 SafeNativeMethods.SpaceCollide2(m_scene.space, ray, IntPtr.Zero, nearCallback);
238 238
239 // Remove Ray 239 // Remove Ray
240 d.GeomDestroy(ray); 240 SafeNativeMethods.GeomDestroy(ray);
241 241
242 // Find closest contact and object. 242 // Find closest contact and object.
243 lock (m_contactResults) 243 lock (m_contactResults)
@@ -258,7 +258,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
258// return; 258// return;
259 259
260 // Raytest against AABBs of spaces first, then dig into the spaces it hits for actual geoms. 260 // Raytest against AABBs of spaces first, then dig into the spaces it hits for actual geoms.
261 if (d.GeomIsSpace(g1) || d.GeomIsSpace(g2)) 261 if (SafeNativeMethods.GeomIsSpace(g1) || SafeNativeMethods.GeomIsSpace(g2))
262 { 262 {
263 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero) 263 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero)
264 return; 264 return;
@@ -269,7 +269,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
269 // contact points in the space 269 // contact points in the space
270 try 270 try
271 { 271 {
272 d.SpaceCollide2(g1, g2, IntPtr.Zero, nearCallback); 272 SafeNativeMethods.SpaceCollide2(g1, g2, IntPtr.Zero, nearCallback);
273 } 273 }
274 catch (AccessViolationException) 274 catch (AccessViolationException)
275 { 275 {
@@ -296,7 +296,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
296 296
297 lock (contacts) 297 lock (contacts)
298 { 298 {
299 count = d.Collide(g1, g2, contacts.GetLength(0), contacts, d.ContactGeom.unmanagedSizeOf); 299 count = SafeNativeMethods.Collide(g1, g2, contacts.GetLength(0), contacts, SafeNativeMethods.ContactGeom.unmanagedSizeOf);
300 } 300 }
301 } 301 }
302 catch (SEHException) 302 catch (SEHException)
diff --git a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
index d15568e..e760fa2 100644
--- a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
@@ -336,9 +336,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
336 336
337 private bool m_filterCollisions = true; 337 private bool m_filterCollisions = true;
338 338
339 private d.NearCallback nearCallback; 339 private SafeNativeMethods.NearCallback nearCallback;
340 public d.TriCallback triCallback;
341 public d.TriArrayCallback triArrayCallback;
342 340
343 /// <summary> 341 /// <summary>
344 /// Avatars in the physics scene. 342 /// Avatars in the physics scene.
@@ -368,7 +366,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
368 /// <summary> 366 /// <summary>
369 /// Keep record of contacts in the physics loop so that we can remove duplicates. 367 /// Keep record of contacts in the physics loop so that we can remove duplicates.
370 /// </summary> 368 /// </summary>
371 private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>(); 369 private readonly List<SafeNativeMethods.ContactGeom> _perloopContact = new List<SafeNativeMethods.ContactGeom>();
372 370
373 /// <summary> 371 /// <summary>
374 /// A dictionary of actors that should receive collision events. 372 /// A dictionary of actors that should receive collision events.
@@ -409,7 +407,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
409 private bool m_NINJA_physics_joints_enabled = false; 407 private bool m_NINJA_physics_joints_enabled = false;
410 //private Dictionary<String, IntPtr> jointpart_name_map = new Dictionary<String,IntPtr>(); 408 //private Dictionary<String, IntPtr> jointpart_name_map = new Dictionary<String,IntPtr>();
411 private readonly Dictionary<String, List<PhysicsJoint>> joints_connecting_actor = new Dictionary<String, List<PhysicsJoint>>(); 409 private readonly Dictionary<String, List<PhysicsJoint>> joints_connecting_actor = new Dictionary<String, List<PhysicsJoint>>();
412 private d.ContactGeom[] contacts; 410 private SafeNativeMethods.ContactGeom[] contacts;
413 411
414 /// <summary> 412 /// <summary>
415 /// Lock only briefly. accessed by external code (to request new joints) and by OdeScene.Simulate() to move those joints into pending/active 413 /// Lock only briefly. accessed by external code (to request new joints) and by OdeScene.Simulate() to move those joints into pending/active
@@ -437,12 +435,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
437 private readonly DoubleDictionary<Vector3, IntPtr, IntPtr> RegionTerrain = new DoubleDictionary<Vector3, IntPtr, IntPtr>(); 435 private readonly DoubleDictionary<Vector3, IntPtr, IntPtr> RegionTerrain = new DoubleDictionary<Vector3, IntPtr, IntPtr>();
438 private readonly Dictionary<IntPtr,float[]> TerrainHeightFieldHeights = new Dictionary<IntPtr, float[]>(); 436 private readonly Dictionary<IntPtr,float[]> TerrainHeightFieldHeights = new Dictionary<IntPtr, float[]>();
439 437
440 private d.Contact contact; 438 private SafeNativeMethods.Contact contact;
441 private d.Contact TerrainContact; 439 private SafeNativeMethods.Contact TerrainContact;
442 private d.Contact AvatarMovementprimContact; 440 private SafeNativeMethods.Contact AvatarMovementprimContact;
443 private d.Contact AvatarMovementTerrainContact; 441 private SafeNativeMethods.Contact AvatarMovementTerrainContact;
444 private d.Contact WaterContact; 442 private SafeNativeMethods.Contact WaterContact;
445 private d.Contact[,] m_materialContacts; 443 private SafeNativeMethods.Contact[,] m_materialContacts;
446 444
447 private int m_physicsiterations = 10; 445 private int m_physicsiterations = 10;
448 private const float m_SkipFramesAtms = 0.40f; // Drop frames gracefully at a 400 ms lag 446 private const float m_SkipFramesAtms = 0.40f; // Drop frames gracefully at a 400 ms lag
@@ -480,8 +478,8 @@ namespace OpenSim.Region.PhysicsModule.ODE
480 private bool avplanted = false; 478 private bool avplanted = false;
481 private bool av_av_collisions_off = false; 479 private bool av_av_collisions_off = false;
482 480
483 public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f); 481 internal SafeNativeMethods.Vector3 xyz = new SafeNativeMethods.Vector3(128.1640f, 128.3079f, 25.7600f);
484 public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f); 482 internal SafeNativeMethods.Vector3 hpr = new SafeNativeMethods.Vector3(125.5000f, -17.0000f, 0.0000f);
485 483
486 private volatile int m_global_contactcount = 0; 484 private volatile int m_global_contactcount = 0;
487 485
@@ -544,12 +542,11 @@ namespace OpenSim.Region.PhysicsModule.ODE
544 m_rayCastManager = new ODERayCastRequestManager(this); 542 m_rayCastManager = new ODERayCastRequestManager(this);
545 543
546 // Create the world and the first space 544 // Create the world and the first space
547 world = d.WorldCreate(); 545 world = SafeNativeMethods.WorldCreate();
548 space = d.HashSpaceCreate(IntPtr.Zero); 546 space = SafeNativeMethods.HashSpaceCreate(IntPtr.Zero);
547 contactgroup = SafeNativeMethods.JointGroupCreate(0);
549 548
550 contactgroup = d.JointGroupCreate(0); 549 SafeNativeMethods.WorldSetAutoDisableFlag(world, false);
551
552 d.WorldSetAutoDisableFlag(world, false);
553 } 550 }
554 551
555 // Initialize from configs 552 // Initialize from configs
@@ -651,7 +648,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
651 } 648 }
652 } 649 }
653 650
654 contacts = new d.ContactGeom[contactsPerCollision]; 651 contacts = new SafeNativeMethods.ContactGeom[contactsPerCollision];
655 652
656 spacesPerMeterX = 1.0f / metersInSpace; 653 spacesPerMeterX = 1.0f / metersInSpace;
657 spacesPerMeterY = 1.0f / metersInSpace; 654 spacesPerMeterY = 1.0f / metersInSpace;
@@ -680,7 +677,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
680 // Centeral contact friction and bounce 677 // Centeral contact friction and bounce
681 // ckrinke 11/10/08 Enabling soft_erp but not soft_cfm until I figure out why 678 // ckrinke 11/10/08 Enabling soft_erp but not soft_cfm until I figure out why
682 // an avatar falls through in Z but not in X or Y when walking on a prim. 679 // an avatar falls through in Z but not in X or Y when walking on a prim.
683 contact.surface.mode |= d.ContactFlags.SoftERP; 680 contact.surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
684 contact.surface.mu = nmAvatarObjectContactFriction; 681 contact.surface.mu = nmAvatarObjectContactFriction;
685 contact.surface.bounce = nmAvatarObjectContactBounce; 682 contact.surface.bounce = nmAvatarObjectContactBounce;
686 contact.surface.soft_cfm = 0.010f; 683 contact.surface.soft_cfm = 0.010f;
@@ -689,12 +686,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
689 // Terrain contact friction and Bounce 686 // Terrain contact friction and Bounce
690 // This is the *non* moving version. Use this when an avatar 687 // This is the *non* moving version. Use this when an avatar
691 // isn't moving to keep it in place better 688 // isn't moving to keep it in place better
692 TerrainContact.surface.mode |= d.ContactFlags.SoftERP; 689 TerrainContact.surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
693 TerrainContact.surface.mu = nmTerrainContactFriction; 690 TerrainContact.surface.mu = nmTerrainContactFriction;
694 TerrainContact.surface.bounce = nmTerrainContactBounce; 691 TerrainContact.surface.bounce = nmTerrainContactBounce;
695 TerrainContact.surface.soft_erp = nmTerrainContactERP; 692 TerrainContact.surface.soft_erp = nmTerrainContactERP;
696 693
697 WaterContact.surface.mode |= (d.ContactFlags.SoftERP | d.ContactFlags.SoftCFM); 694 WaterContact.surface.mode |= (SafeNativeMethods.ContactFlags.SoftERP | SafeNativeMethods.ContactFlags.SoftCFM);
698 WaterContact.surface.mu = 0f; // No friction 695 WaterContact.surface.mu = 0f; // No friction
699 WaterContact.surface.bounce = 0.0f; // No bounce 696 WaterContact.surface.bounce = 0.0f; // No bounce
700 WaterContact.surface.soft_cfm = 0.010f; 697 WaterContact.surface.soft_cfm = 0.010f;
@@ -709,7 +706,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
709 706
710 // Terrain contact friction bounce and various error correcting calculations 707 // Terrain contact friction bounce and various error correcting calculations
711 // Use this when an avatar is in contact with the terrain and moving. 708 // Use this when an avatar is in contact with the terrain and moving.
712 AvatarMovementTerrainContact.surface.mode |= d.ContactFlags.SoftERP; 709 AvatarMovementTerrainContact.surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
713 AvatarMovementTerrainContact.surface.mu = mTerrainContactFriction; 710 AvatarMovementTerrainContact.surface.mu = mTerrainContactFriction;
714 AvatarMovementTerrainContact.surface.bounce = mTerrainContactBounce; 711 AvatarMovementTerrainContact.surface.bounce = mTerrainContactBounce;
715 AvatarMovementTerrainContact.surface.soft_erp = mTerrainContactERP; 712 AvatarMovementTerrainContact.surface.soft_erp = mTerrainContactERP;
@@ -731,38 +728,38 @@ namespace OpenSim.Region.PhysicsModule.ODE
731 Rubber = 6 728 Rubber = 6
732 */ 729 */
733 730
734 m_materialContacts = new d.Contact[7,2]; 731 m_materialContacts = new SafeNativeMethods.Contact[7,2];
735 732
736 m_materialContacts[(int)Material.Stone, 0] = new d.Contact(); 733 m_materialContacts[(int)Material.Stone, 0] = new SafeNativeMethods.Contact();
737 m_materialContacts[(int)Material.Stone, 0].surface.mode |= d.ContactFlags.SoftERP; 734 m_materialContacts[(int)Material.Stone, 0].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
738 m_materialContacts[(int)Material.Stone, 0].surface.mu = nmAvatarObjectContactFriction; 735 m_materialContacts[(int)Material.Stone, 0].surface.mu = nmAvatarObjectContactFriction;
739 m_materialContacts[(int)Material.Stone, 0].surface.bounce = nmAvatarObjectContactBounce; 736 m_materialContacts[(int)Material.Stone, 0].surface.bounce = nmAvatarObjectContactBounce;
740 m_materialContacts[(int)Material.Stone, 0].surface.soft_cfm = 0.010f; 737 m_materialContacts[(int)Material.Stone, 0].surface.soft_cfm = 0.010f;
741 m_materialContacts[(int)Material.Stone, 0].surface.soft_erp = 0.010f; 738 m_materialContacts[(int)Material.Stone, 0].surface.soft_erp = 0.010f;
742 739
743 m_materialContacts[(int)Material.Stone, 1] = new d.Contact(); 740 m_materialContacts[(int)Material.Stone, 1] = new SafeNativeMethods.Contact();
744 m_materialContacts[(int)Material.Stone, 1].surface.mode |= d.ContactFlags.SoftERP; 741 m_materialContacts[(int)Material.Stone, 1].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
745 m_materialContacts[(int)Material.Stone, 1].surface.mu = mAvatarObjectContactFriction; 742 m_materialContacts[(int)Material.Stone, 1].surface.mu = mAvatarObjectContactFriction;
746 m_materialContacts[(int)Material.Stone, 1].surface.bounce = mAvatarObjectContactBounce; 743 m_materialContacts[(int)Material.Stone, 1].surface.bounce = mAvatarObjectContactBounce;
747 m_materialContacts[(int)Material.Stone, 1].surface.soft_cfm = 0.010f; 744 m_materialContacts[(int)Material.Stone, 1].surface.soft_cfm = 0.010f;
748 m_materialContacts[(int)Material.Stone, 1].surface.soft_erp = 0.010f; 745 m_materialContacts[(int)Material.Stone, 1].surface.soft_erp = 0.010f;
749 746
750 m_materialContacts[(int)Material.Metal, 0] = new d.Contact(); 747 m_materialContacts[(int)Material.Metal, 0] = new SafeNativeMethods.Contact();
751 m_materialContacts[(int)Material.Metal, 0].surface.mode |= d.ContactFlags.SoftERP; 748 m_materialContacts[(int)Material.Metal, 0].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
752 m_materialContacts[(int)Material.Metal, 0].surface.mu = nmAvatarObjectContactFriction; 749 m_materialContacts[(int)Material.Metal, 0].surface.mu = nmAvatarObjectContactFriction;
753 m_materialContacts[(int)Material.Metal, 0].surface.bounce = nmAvatarObjectContactBounce; 750 m_materialContacts[(int)Material.Metal, 0].surface.bounce = nmAvatarObjectContactBounce;
754 m_materialContacts[(int)Material.Metal, 0].surface.soft_cfm = 0.010f; 751 m_materialContacts[(int)Material.Metal, 0].surface.soft_cfm = 0.010f;
755 m_materialContacts[(int)Material.Metal, 0].surface.soft_erp = 0.010f; 752 m_materialContacts[(int)Material.Metal, 0].surface.soft_erp = 0.010f;
756 753
757 m_materialContacts[(int)Material.Metal, 1] = new d.Contact(); 754 m_materialContacts[(int)Material.Metal, 1] = new SafeNativeMethods.Contact();
758 m_materialContacts[(int)Material.Metal, 1].surface.mode |= d.ContactFlags.SoftERP; 755 m_materialContacts[(int)Material.Metal, 1].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
759 m_materialContacts[(int)Material.Metal, 1].surface.mu = mAvatarObjectContactFriction; 756 m_materialContacts[(int)Material.Metal, 1].surface.mu = mAvatarObjectContactFriction;
760 m_materialContacts[(int)Material.Metal, 1].surface.bounce = mAvatarObjectContactBounce; 757 m_materialContacts[(int)Material.Metal, 1].surface.bounce = mAvatarObjectContactBounce;
761 m_materialContacts[(int)Material.Metal, 1].surface.soft_cfm = 0.010f; 758 m_materialContacts[(int)Material.Metal, 1].surface.soft_cfm = 0.010f;
762 m_materialContacts[(int)Material.Metal, 1].surface.soft_erp = 0.010f; 759 m_materialContacts[(int)Material.Metal, 1].surface.soft_erp = 0.010f;
763 760
764 m_materialContacts[(int)Material.Glass, 0] = new d.Contact(); 761 m_materialContacts[(int)Material.Glass, 0] = new SafeNativeMethods.Contact();
765 m_materialContacts[(int)Material.Glass, 0].surface.mode |= d.ContactFlags.SoftERP; 762 m_materialContacts[(int)Material.Glass, 0].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
766 m_materialContacts[(int)Material.Glass, 0].surface.mu = 1f; 763 m_materialContacts[(int)Material.Glass, 0].surface.mu = 1f;
767 m_materialContacts[(int)Material.Glass, 0].surface.bounce = 0.5f; 764 m_materialContacts[(int)Material.Glass, 0].surface.bounce = 0.5f;
768 m_materialContacts[(int)Material.Glass, 0].surface.soft_cfm = 0.010f; 765 m_materialContacts[(int)Material.Glass, 0].surface.soft_cfm = 0.010f;
@@ -775,83 +772,83 @@ namespace OpenSim.Region.PhysicsModule.ODE
775 private float mAvatarObjectContactFriction = 75f; 772 private float mAvatarObjectContactFriction = 75f;
776 private float mAvatarObjectContactBounce = 0.1f; 773 private float mAvatarObjectContactBounce = 0.1f;
777 */ 774 */
778 m_materialContacts[(int)Material.Glass, 1] = new d.Contact(); 775 m_materialContacts[(int)Material.Glass, 1] = new SafeNativeMethods.Contact();
779 m_materialContacts[(int)Material.Glass, 1].surface.mode |= d.ContactFlags.SoftERP; 776 m_materialContacts[(int)Material.Glass, 1].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
780 m_materialContacts[(int)Material.Glass, 1].surface.mu = 1f; 777 m_materialContacts[(int)Material.Glass, 1].surface.mu = 1f;
781 m_materialContacts[(int)Material.Glass, 1].surface.bounce = 0.5f; 778 m_materialContacts[(int)Material.Glass, 1].surface.bounce = 0.5f;
782 m_materialContacts[(int)Material.Glass, 1].surface.soft_cfm = 0.010f; 779 m_materialContacts[(int)Material.Glass, 1].surface.soft_cfm = 0.010f;
783 m_materialContacts[(int)Material.Glass, 1].surface.soft_erp = 0.010f; 780 m_materialContacts[(int)Material.Glass, 1].surface.soft_erp = 0.010f;
784 781
785 m_materialContacts[(int)Material.Wood, 0] = new d.Contact(); 782 m_materialContacts[(int)Material.Wood, 0] = new SafeNativeMethods.Contact();
786 m_materialContacts[(int)Material.Wood, 0].surface.mode |= d.ContactFlags.SoftERP; 783 m_materialContacts[(int)Material.Wood, 0].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
787 m_materialContacts[(int)Material.Wood, 0].surface.mu = nmAvatarObjectContactFriction; 784 m_materialContacts[(int)Material.Wood, 0].surface.mu = nmAvatarObjectContactFriction;
788 m_materialContacts[(int)Material.Wood, 0].surface.bounce = nmAvatarObjectContactBounce; 785 m_materialContacts[(int)Material.Wood, 0].surface.bounce = nmAvatarObjectContactBounce;
789 m_materialContacts[(int)Material.Wood, 0].surface.soft_cfm = 0.010f; 786 m_materialContacts[(int)Material.Wood, 0].surface.soft_cfm = 0.010f;
790 m_materialContacts[(int)Material.Wood, 0].surface.soft_erp = 0.010f; 787 m_materialContacts[(int)Material.Wood, 0].surface.soft_erp = 0.010f;
791 788
792 m_materialContacts[(int)Material.Wood, 1] = new d.Contact(); 789 m_materialContacts[(int)Material.Wood, 1] = new SafeNativeMethods.Contact();
793 m_materialContacts[(int)Material.Wood, 1].surface.mode |= d.ContactFlags.SoftERP; 790 m_materialContacts[(int)Material.Wood, 1].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
794 m_materialContacts[(int)Material.Wood, 1].surface.mu = mAvatarObjectContactFriction; 791 m_materialContacts[(int)Material.Wood, 1].surface.mu = mAvatarObjectContactFriction;
795 m_materialContacts[(int)Material.Wood, 1].surface.bounce = mAvatarObjectContactBounce; 792 m_materialContacts[(int)Material.Wood, 1].surface.bounce = mAvatarObjectContactBounce;
796 m_materialContacts[(int)Material.Wood, 1].surface.soft_cfm = 0.010f; 793 m_materialContacts[(int)Material.Wood, 1].surface.soft_cfm = 0.010f;
797 m_materialContacts[(int)Material.Wood, 1].surface.soft_erp = 0.010f; 794 m_materialContacts[(int)Material.Wood, 1].surface.soft_erp = 0.010f;
798 795
799 m_materialContacts[(int)Material.Flesh, 0] = new d.Contact(); 796 m_materialContacts[(int)Material.Flesh, 0] = new SafeNativeMethods.Contact();
800 m_materialContacts[(int)Material.Flesh, 0].surface.mode |= d.ContactFlags.SoftERP; 797 m_materialContacts[(int)Material.Flesh, 0].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
801 m_materialContacts[(int)Material.Flesh, 0].surface.mu = nmAvatarObjectContactFriction; 798 m_materialContacts[(int)Material.Flesh, 0].surface.mu = nmAvatarObjectContactFriction;
802 m_materialContacts[(int)Material.Flesh, 0].surface.bounce = nmAvatarObjectContactBounce; 799 m_materialContacts[(int)Material.Flesh, 0].surface.bounce = nmAvatarObjectContactBounce;
803 m_materialContacts[(int)Material.Flesh, 0].surface.soft_cfm = 0.010f; 800 m_materialContacts[(int)Material.Flesh, 0].surface.soft_cfm = 0.010f;
804 m_materialContacts[(int)Material.Flesh, 0].surface.soft_erp = 0.010f; 801 m_materialContacts[(int)Material.Flesh, 0].surface.soft_erp = 0.010f;
805 802
806 m_materialContacts[(int)Material.Flesh, 1] = new d.Contact(); 803 m_materialContacts[(int)Material.Flesh, 1] = new SafeNativeMethods.Contact();
807 m_materialContacts[(int)Material.Flesh, 1].surface.mode |= d.ContactFlags.SoftERP; 804 m_materialContacts[(int)Material.Flesh, 1].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
808 m_materialContacts[(int)Material.Flesh, 1].surface.mu = mAvatarObjectContactFriction; 805 m_materialContacts[(int)Material.Flesh, 1].surface.mu = mAvatarObjectContactFriction;
809 m_materialContacts[(int)Material.Flesh, 1].surface.bounce = mAvatarObjectContactBounce; 806 m_materialContacts[(int)Material.Flesh, 1].surface.bounce = mAvatarObjectContactBounce;
810 m_materialContacts[(int)Material.Flesh, 1].surface.soft_cfm = 0.010f; 807 m_materialContacts[(int)Material.Flesh, 1].surface.soft_cfm = 0.010f;
811 m_materialContacts[(int)Material.Flesh, 1].surface.soft_erp = 0.010f; 808 m_materialContacts[(int)Material.Flesh, 1].surface.soft_erp = 0.010f;
812 809
813 m_materialContacts[(int)Material.Plastic, 0] = new d.Contact(); 810 m_materialContacts[(int)Material.Plastic, 0] = new SafeNativeMethods.Contact();
814 m_materialContacts[(int)Material.Plastic, 0].surface.mode |= d.ContactFlags.SoftERP; 811 m_materialContacts[(int)Material.Plastic, 0].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
815 m_materialContacts[(int)Material.Plastic, 0].surface.mu = nmAvatarObjectContactFriction; 812 m_materialContacts[(int)Material.Plastic, 0].surface.mu = nmAvatarObjectContactFriction;
816 m_materialContacts[(int)Material.Plastic, 0].surface.bounce = nmAvatarObjectContactBounce; 813 m_materialContacts[(int)Material.Plastic, 0].surface.bounce = nmAvatarObjectContactBounce;
817 m_materialContacts[(int)Material.Plastic, 0].surface.soft_cfm = 0.010f; 814 m_materialContacts[(int)Material.Plastic, 0].surface.soft_cfm = 0.010f;
818 m_materialContacts[(int)Material.Plastic, 0].surface.soft_erp = 0.010f; 815 m_materialContacts[(int)Material.Plastic, 0].surface.soft_erp = 0.010f;
819 816
820 m_materialContacts[(int)Material.Plastic, 1] = new d.Contact(); 817 m_materialContacts[(int)Material.Plastic, 1] = new SafeNativeMethods.Contact();
821 m_materialContacts[(int)Material.Plastic, 1].surface.mode |= d.ContactFlags.SoftERP; 818 m_materialContacts[(int)Material.Plastic, 1].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
822 m_materialContacts[(int)Material.Plastic, 1].surface.mu = mAvatarObjectContactFriction; 819 m_materialContacts[(int)Material.Plastic, 1].surface.mu = mAvatarObjectContactFriction;
823 m_materialContacts[(int)Material.Plastic, 1].surface.bounce = mAvatarObjectContactBounce; 820 m_materialContacts[(int)Material.Plastic, 1].surface.bounce = mAvatarObjectContactBounce;
824 m_materialContacts[(int)Material.Plastic, 1].surface.soft_cfm = 0.010f; 821 m_materialContacts[(int)Material.Plastic, 1].surface.soft_cfm = 0.010f;
825 m_materialContacts[(int)Material.Plastic, 1].surface.soft_erp = 0.010f; 822 m_materialContacts[(int)Material.Plastic, 1].surface.soft_erp = 0.010f;
826 823
827 m_materialContacts[(int)Material.Rubber, 0] = new d.Contact(); 824 m_materialContacts[(int)Material.Rubber, 0] = new SafeNativeMethods.Contact();
828 m_materialContacts[(int)Material.Rubber, 0].surface.mode |= d.ContactFlags.SoftERP; 825 m_materialContacts[(int)Material.Rubber, 0].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
829 m_materialContacts[(int)Material.Rubber, 0].surface.mu = nmAvatarObjectContactFriction; 826 m_materialContacts[(int)Material.Rubber, 0].surface.mu = nmAvatarObjectContactFriction;
830 m_materialContacts[(int)Material.Rubber, 0].surface.bounce = nmAvatarObjectContactBounce; 827 m_materialContacts[(int)Material.Rubber, 0].surface.bounce = nmAvatarObjectContactBounce;
831 m_materialContacts[(int)Material.Rubber, 0].surface.soft_cfm = 0.010f; 828 m_materialContacts[(int)Material.Rubber, 0].surface.soft_cfm = 0.010f;
832 m_materialContacts[(int)Material.Rubber, 0].surface.soft_erp = 0.010f; 829 m_materialContacts[(int)Material.Rubber, 0].surface.soft_erp = 0.010f;
833 830
834 m_materialContacts[(int)Material.Rubber, 1] = new d.Contact(); 831 m_materialContacts[(int)Material.Rubber, 1] = new SafeNativeMethods.Contact();
835 m_materialContacts[(int)Material.Rubber, 1].surface.mode |= d.ContactFlags.SoftERP; 832 m_materialContacts[(int)Material.Rubber, 1].surface.mode |= SafeNativeMethods.ContactFlags.SoftERP;
836 m_materialContacts[(int)Material.Rubber, 1].surface.mu = mAvatarObjectContactFriction; 833 m_materialContacts[(int)Material.Rubber, 1].surface.mu = mAvatarObjectContactFriction;
837 m_materialContacts[(int)Material.Rubber, 1].surface.bounce = mAvatarObjectContactBounce; 834 m_materialContacts[(int)Material.Rubber, 1].surface.bounce = mAvatarObjectContactBounce;
838 m_materialContacts[(int)Material.Rubber, 1].surface.soft_cfm = 0.010f; 835 m_materialContacts[(int)Material.Rubber, 1].surface.soft_cfm = 0.010f;
839 m_materialContacts[(int)Material.Rubber, 1].surface.soft_erp = 0.010f; 836 m_materialContacts[(int)Material.Rubber, 1].surface.soft_erp = 0.010f;
840 837
841 d.HashSpaceSetLevels(space, HashspaceLow, HashspaceHigh); 838 SafeNativeMethods.HashSpaceSetLevels(space, HashspaceLow, HashspaceHigh);
842 839
843 // Set the gravity,, don't disable things automatically (we set it explicitly on some things) 840 // Set the gravity,, don't disable things automatically (we set it explicitly on some things)
844 841
845 d.WorldSetGravity(world, gravityx, gravityy, gravityz); 842 SafeNativeMethods.WorldSetGravity(world, gravityx, gravityy, gravityz);
846 d.WorldSetContactSurfaceLayer(world, contactsurfacelayer); 843 SafeNativeMethods.WorldSetContactSurfaceLayer(world, contactsurfacelayer);
847 844
848 d.WorldSetLinearDamping(world, 256f); 845 SafeNativeMethods.WorldSetLinearDamping(world, 256f);
849 d.WorldSetAngularDamping(world, 256f); 846 SafeNativeMethods.WorldSetAngularDamping(world, 256f);
850 d.WorldSetAngularDampingThreshold(world, 256f); 847 SafeNativeMethods.WorldSetAngularDampingThreshold(world, 256f);
851 d.WorldSetLinearDampingThreshold(world, 256f); 848 SafeNativeMethods.WorldSetLinearDampingThreshold(world, 256f);
852 d.WorldSetMaxAngularSpeed(world, 256f); 849 SafeNativeMethods.WorldSetMaxAngularSpeed(world, 256f);
853 850
854 d.WorldSetQuickStepNumIterations(world, m_physicsiterations); 851 SafeNativeMethods.WorldSetQuickStepNumIterations(world, m_physicsiterations);
855 //d.WorldSetContactMaxCorrectingVel(world, 1000.0f); 852 //d.WorldSetContactMaxCorrectingVel(world, 1000.0f);
856 853
857 for (int i = 0; i < staticPrimspace.GetLength(0); i++) 854 for (int i = 0; i < staticPrimspace.GetLength(0); i++)
@@ -877,7 +874,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
877 /// <param name='contactsArray'></param> 874 /// <param name='contactsArray'></param>
878 /// <param name='contactGeomSize'></param> 875 /// <param name='contactGeomSize'></param>
879 private int CollideGeoms( 876 private int CollideGeoms(
880 IntPtr geom1, IntPtr geom2, int maxContacts, d.ContactGeom[] contactsArray, int contactGeomSize) 877 IntPtr geom1, IntPtr geom2, int maxContacts, SafeNativeMethods.ContactGeom[] contactsArray, int contactGeomSize)
881 { 878 {
882 int count; 879 int count;
883 880
@@ -887,7 +884,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
887 if (CollectStats) 884 if (CollectStats)
888 m_nativeCollisionStartTick = Util.EnvironmentTickCount(); 885 m_nativeCollisionStartTick = Util.EnvironmentTickCount();
889 886
890 count = d.Collide(geom1, geom2, maxContacts, contactsArray, contactGeomSize); 887 count = SafeNativeMethods.Collide(geom1, geom2, maxContacts, contactsArray, contactGeomSize);
891 } 888 }
892 889
893 // We do this outside the lock so that any waiting threads aren't held up, though the effect is probably 890 // We do this outside the lock so that any waiting threads aren't held up, though the effect is probably
@@ -913,7 +910,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
913 m_nativeCollisionStartTick = Util.EnvironmentTickCount(); 910 m_nativeCollisionStartTick = Util.EnvironmentTickCount();
914 } 911 }
915 912
916 d.SpaceCollide2(space1, space2, data, nearCallback); 913 SafeNativeMethods.SpaceCollide2(space1, space2, data, nearCallback);
917 914
918 if (CollectStats && m_inCollisionTiming) 915 if (CollectStats && m_inCollisionTiming)
919 { 916 {
@@ -944,7 +941,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
944 // Test if we're colliding a geom with a space. 941 // Test if we're colliding a geom with a space.
945 // If so we have to drill down into the space recursively 942 // If so we have to drill down into the space recursively
946 943
947 if (d.GeomIsSpace(g1) || d.GeomIsSpace(g2)) 944 if (SafeNativeMethods.GeomIsSpace(g1) || SafeNativeMethods.GeomIsSpace(g2))
948 { 945 {
949 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero) 946 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero)
950 return; 947 return;
@@ -973,8 +970,8 @@ namespace OpenSim.Region.PhysicsModule.ODE
973 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero) 970 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero)
974 return; 971 return;
975 972
976 IntPtr b1 = d.GeomGetBody(g1); 973 IntPtr b1 = SafeNativeMethods.GeomGetBody(g1);
977 IntPtr b2 = d.GeomGetBody(g2); 974 IntPtr b2 = SafeNativeMethods.GeomGetBody(g2);
978 975
979 // d.GeomClassID id = d.GeomGetClass(g1); 976 // d.GeomClassID id = d.GeomGetClass(g1);
980 977
@@ -1001,10 +998,10 @@ namespace OpenSim.Region.PhysicsModule.ODE
1001 if (g1 == g2) 998 if (g1 == g2)
1002 return; // Can't collide with yourself 999 return; // Can't collide with yourself
1003 1000
1004 if (b1 != IntPtr.Zero && b2 != IntPtr.Zero && d.AreConnectedExcluding(b1, b2, d.JointType.Contact)) 1001 if (b1 != IntPtr.Zero && b2 != IntPtr.Zero && SafeNativeMethods.AreConnectedExcluding(b1, b2, SafeNativeMethods.JointType.Contact))
1005 return; 1002 return;
1006 1003
1007 count = CollideGeoms(g1, g2, contacts.Length, contacts, d.ContactGeom.unmanagedSizeOf); 1004 count = CollideGeoms(g1, g2, contacts.Length, contacts, SafeNativeMethods.ContactGeom.unmanagedSizeOf);
1008 1005
1009 // All code after this is only relevant if we have any collisions 1006 // All code after this is only relevant if we have any collisions
1010 if (count <= 0) 1007 if (count <= 0)
@@ -1052,7 +1049,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1052 1049
1053 for (int i = 0; i < count; i++) 1050 for (int i = 0; i < count; i++)
1054 { 1051 {
1055 d.ContactGeom curContact = contacts[i]; 1052 SafeNativeMethods.ContactGeom curContact = contacts[i];
1056 1053
1057 if (curContact.depth > maxDepthContact.PenetrationDepth) 1054 if (curContact.depth > maxDepthContact.PenetrationDepth)
1058 { 1055 {
@@ -1129,7 +1126,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1129 curContact.depth = 0.00000003f; 1126 curContact.depth = 0.00000003f;
1130 p2.Velocity = p2.Velocity + new Vector3(0f, 0f, 0.5f); 1127 p2.Velocity = p2.Velocity + new Vector3(0f, 0f, 0.5f);
1131 curContact.pos = 1128 curContact.pos =
1132 new d.Vector3(curContact.pos.X + (p1.Size.X/2), 1129 new SafeNativeMethods.Vector3(curContact.pos.X + (p1.Size.X/2),
1133 curContact.pos.Y + (p1.Size.Y/2), 1130 curContact.pos.Y + (p1.Size.Y/2),
1134 curContact.pos.Z + (p1.Size.Z/2)); 1131 curContact.pos.Z + (p1.Size.Z/2));
1135 character.SetPidStatus(true); 1132 character.SetPidStatus(true);
@@ -1146,7 +1143,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1146 curContact.depth = 0.00000003f; 1143 curContact.depth = 0.00000003f;
1147 p1.Velocity = p1.Velocity + new Vector3(0f, 0f, 0.5f); 1144 p1.Velocity = p1.Velocity + new Vector3(0f, 0f, 0.5f);
1148 curContact.pos = 1145 curContact.pos =
1149 new d.Vector3(curContact.pos.X + (p1.Size.X/2), 1146 new SafeNativeMethods.Vector3(curContact.pos.X + (p1.Size.X/2),
1150 curContact.pos.Y + (p1.Size.Y/2), 1147 curContact.pos.Y + (p1.Size.Y/2),
1151 curContact.pos.Z + (p1.Size.Z/2)); 1148 curContact.pos.Z + (p1.Size.Z/2));
1152 character.SetPidStatus(true); 1149 character.SetPidStatus(true);
@@ -1198,7 +1195,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1198 1195
1199 if (m_global_contactcount < maxContactsbeforedeath) 1196 if (m_global_contactcount < maxContactsbeforedeath)
1200 { 1197 {
1201 joint = d.JointCreateContact(world, contactgroup, ref AvatarMovementTerrainContact); 1198 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref AvatarMovementTerrainContact);
1202 m_global_contactcount++; 1199 m_global_contactcount++;
1203 } 1200 }
1204 } 1201 }
@@ -1212,7 +1209,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1212 1209
1213 if (m_global_contactcount < maxContactsbeforedeath) 1210 if (m_global_contactcount < maxContactsbeforedeath)
1214 { 1211 {
1215 joint = d.JointCreateContact(world, contactgroup, ref TerrainContact); 1212 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref TerrainContact);
1216 m_global_contactcount++; 1213 m_global_contactcount++;
1217 } 1214 }
1218 } 1215 }
@@ -1247,7 +1244,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1247 1244
1248 if (m_global_contactcount < maxContactsbeforedeath) 1245 if (m_global_contactcount < maxContactsbeforedeath)
1249 { 1246 {
1250 joint = d.JointCreateContact(world, contactgroup, ref m_materialContacts[material, movintYN]); 1247 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref m_materialContacts[material, movintYN]);
1251 m_global_contactcount++; 1248 m_global_contactcount++;
1252 } 1249 }
1253 } 1250 }
@@ -1273,7 +1270,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1273 1270
1274 if (m_global_contactcount < maxContactsbeforedeath) 1271 if (m_global_contactcount < maxContactsbeforedeath)
1275 { 1272 {
1276 joint = d.JointCreateContact(world, contactgroup, ref m_materialContacts[material, movintYN]); 1273 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref m_materialContacts[material, movintYN]);
1277 m_global_contactcount++; 1274 m_global_contactcount++;
1278 } 1275 }
1279 } 1276 }
@@ -1307,7 +1304,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1307 1304
1308 if (m_global_contactcount < maxContactsbeforedeath) 1305 if (m_global_contactcount < maxContactsbeforedeath)
1309 { 1306 {
1310 joint = d.JointCreateContact(world, contactgroup, ref WaterContact); 1307 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref WaterContact);
1311 m_global_contactcount++; 1308 m_global_contactcount++;
1312 } 1309 }
1313 //m_log.Info("[PHYSICS]: Prim Water Contact" + contact.depth); 1310 //m_log.Info("[PHYSICS]: Prim Water Contact" + contact.depth);
@@ -1324,7 +1321,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1324 1321
1325 if (m_global_contactcount < maxContactsbeforedeath) 1322 if (m_global_contactcount < maxContactsbeforedeath)
1326 { 1323 {
1327 joint = d.JointCreateContact(world, contactgroup, ref AvatarMovementprimContact); 1324 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref AvatarMovementprimContact);
1328 m_global_contactcount++; 1325 m_global_contactcount++;
1329 } 1326 }
1330 } 1327 }
@@ -1335,7 +1332,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1335 1332
1336 if (m_global_contactcount < maxContactsbeforedeath) 1333 if (m_global_contactcount < maxContactsbeforedeath)
1337 { 1334 {
1338 joint = d.JointCreateContact(world, contactgroup, ref contact); 1335 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref contact);
1339 m_global_contactcount++; 1336 m_global_contactcount++;
1340 } 1337 }
1341 } 1338 }
@@ -1356,7 +1353,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1356 1353
1357 if (m_global_contactcount < maxContactsbeforedeath) 1354 if (m_global_contactcount < maxContactsbeforedeath)
1358 { 1355 {
1359 joint = d.JointCreateContact(world, contactgroup, ref m_materialContacts[material, 0]); 1356 joint = SafeNativeMethods.JointCreateContact(world, contactgroup, ref m_materialContacts[material, 0]);
1360 m_global_contactcount++; 1357 m_global_contactcount++;
1361 } 1358 }
1362 } 1359 }
@@ -1364,7 +1361,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1364 1361
1365 if (m_global_contactcount < maxContactsbeforedeath && joint != IntPtr.Zero) // stack collide! 1362 if (m_global_contactcount < maxContactsbeforedeath && joint != IntPtr.Zero) // stack collide!
1366 { 1363 {
1367 d.JointAttach(joint, b1, b2); 1364 SafeNativeMethods.JointAttach(joint, b1, b2);
1368 m_global_contactcount++; 1365 m_global_contactcount++;
1369 } 1366 }
1370 } 1367 }
@@ -1384,7 +1381,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1384 } 1381 }
1385 } 1382 }
1386 1383
1387 private bool checkDupe(d.ContactGeom contactGeom, int atype) 1384 private bool checkDupe(SafeNativeMethods.ContactGeom contactGeom, int atype)
1388 { 1385 {
1389 if (!m_filterCollisions) 1386 if (!m_filterCollisions)
1390 return false; 1387 return false;
@@ -1393,7 +1390,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1393 1390
1394 ActorTypes at = (ActorTypes)atype; 1391 ActorTypes at = (ActorTypes)atype;
1395 1392
1396 foreach (d.ContactGeom contact in _perloopContact) 1393 foreach (SafeNativeMethods.ContactGeom contact in _perloopContact)
1397 { 1394 {
1398 //if ((contact.g1 == contactGeom.g1 && contact.g2 == contactGeom.g2)) 1395 //if ((contact.g1 == contactGeom.g1 && contact.g2 == contactGeom.g2))
1399 //{ 1396 //{
@@ -1580,7 +1577,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1580 List<OdePrim> removeprims = null; 1577 List<OdePrim> removeprims = null;
1581 foreach (OdePrim chr in _activeprims) 1578 foreach (OdePrim chr in _activeprims)
1582 { 1579 {
1583 if (chr.Body != IntPtr.Zero && d.BodyIsEnabled(chr.Body) && (!chr.m_disabled)) 1580 if (chr.Body != IntPtr.Zero && SafeNativeMethods.BodyIsEnabled(chr.Body) && (!chr.m_disabled))
1584 { 1581 {
1585 try 1582 try
1586 { 1583 {
@@ -1706,7 +1703,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1706 1703
1707 public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 velocity, Vector3 size, bool isFlying) 1704 public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 velocity, Vector3 size, bool isFlying)
1708 { 1705 {
1709 d.AllocateODEDataForThread(0); 1706 SafeNativeMethods.AllocateODEDataForThread(0);
1710 1707
1711 OdeCharacter newAv 1708 OdeCharacter newAv
1712 = new OdeCharacter( 1709 = new OdeCharacter(
@@ -1729,7 +1726,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1729 1726
1730 lock (OdeLock) 1727 lock (OdeLock)
1731 { 1728 {
1732 d.AllocateODEDataForThread(0); 1729 SafeNativeMethods.AllocateODEDataForThread(0);
1733 1730
1734 ((OdeCharacter) actor).Destroy(); 1731 ((OdeCharacter) actor).Destroy();
1735 } 1732 }
@@ -1786,7 +1783,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1786 OdePrim newPrim; 1783 OdePrim newPrim;
1787 lock (OdeLock) 1784 lock (OdeLock)
1788 { 1785 {
1789 d.AllocateODEDataForThread(0); 1786 SafeNativeMethods.AllocateODEDataForThread(0);
1790 newPrim = new OdePrim(name, this, pos, siz, rot, pbs, isphysical); 1787 newPrim = new OdePrim(name, this, pos, siz, rot, pbs, isphysical);
1791 1788
1792 lock (_prims) 1789 lock (_prims)
@@ -1950,7 +1947,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
1950 DoJointDeactivated(joint); 1947 DoJointDeactivated(joint);
1951 if (joint.jointID != IntPtr.Zero) 1948 if (joint.jointID != IntPtr.Zero)
1952 { 1949 {
1953 d.JointDestroy(joint.jointID); 1950 SafeNativeMethods.JointDestroy(joint.jointID);
1954 joint.jointID = IntPtr.Zero; 1951 joint.jointID = IntPtr.Zero;
1955 //DoJointErrorMessage(joint, "successfully destroyed joint " + jointName); 1952 //DoJointErrorMessage(joint, "successfully destroyed joint " + jointName);
1956 } 1953 }
@@ -2115,7 +2112,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2115 public override Vector3 GetJointAnchor(PhysicsJoint joint) 2112 public override Vector3 GetJointAnchor(PhysicsJoint joint)
2116 { 2113 {
2117 Debug.Assert(joint.IsInPhysicsEngine); 2114 Debug.Assert(joint.IsInPhysicsEngine);
2118 d.Vector3 pos = new d.Vector3(); 2115 SafeNativeMethods.Vector3 pos = new SafeNativeMethods.Vector3();
2119 2116
2120 if (!(joint is OdePhysicsJoint)) 2117 if (!(joint is OdePhysicsJoint))
2121 { 2118 {
@@ -2127,10 +2124,10 @@ namespace OpenSim.Region.PhysicsModule.ODE
2127 switch (odeJoint.Type) 2124 switch (odeJoint.Type)
2128 { 2125 {
2129 case PhysicsJointType.Ball: 2126 case PhysicsJointType.Ball:
2130 d.JointGetBallAnchor(odeJoint.jointID, out pos); 2127 SafeNativeMethods.JointGetBallAnchor(odeJoint.jointID, out pos);
2131 break; 2128 break;
2132 case PhysicsJointType.Hinge: 2129 case PhysicsJointType.Hinge:
2133 d.JointGetHingeAnchor(odeJoint.jointID, out pos); 2130 SafeNativeMethods.JointGetHingeAnchor(odeJoint.jointID, out pos);
2134 break; 2131 break;
2135 } 2132 }
2136 } 2133 }
@@ -2151,7 +2148,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2151 public override Vector3 GetJointAxis(PhysicsJoint joint) 2148 public override Vector3 GetJointAxis(PhysicsJoint joint)
2152 { 2149 {
2153 Debug.Assert(joint.IsInPhysicsEngine); 2150 Debug.Assert(joint.IsInPhysicsEngine);
2154 d.Vector3 axis = new d.Vector3(); 2151 SafeNativeMethods.Vector3 axis = new SafeNativeMethods.Vector3();
2155 2152
2156 if (!(joint is OdePhysicsJoint)) 2153 if (!(joint is OdePhysicsJoint))
2157 { 2154 {
@@ -2166,7 +2163,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2166 DoJointErrorMessage(joint, "warning - axis requested for ball joint: " + joint.ObjectNameInScene); 2163 DoJointErrorMessage(joint, "warning - axis requested for ball joint: " + joint.ObjectNameInScene);
2167 break; 2164 break;
2168 case PhysicsJointType.Hinge: 2165 case PhysicsJointType.Hinge:
2169 d.JointGetHingeAxis(odeJoint.jointID, out axis); 2166 SafeNativeMethods.JointGetHingeAxis(odeJoint.jointID, out axis);
2170 break; 2167 break;
2171 } 2168 }
2172 } 2169 }
@@ -2299,12 +2296,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
2299 //{ 2296 //{
2300 //int adfadf = 0; 2297 //int adfadf = 0;
2301 //} 2298 //}
2302 if (d.SpaceQuery(currentspace, geom) && currentspace != IntPtr.Zero) 2299 if (SafeNativeMethods.SpaceQuery(currentspace, geom) && currentspace != IntPtr.Zero)
2303 { 2300 {
2304 if (d.GeomIsSpace(currentspace)) 2301 if (SafeNativeMethods.GeomIsSpace(currentspace))
2305 { 2302 {
2306// waitForSpaceUnlock(currentspace); 2303// waitForSpaceUnlock(currentspace);
2307 d.SpaceRemove(currentspace, geom); 2304 SafeNativeMethods.SpaceRemove(currentspace, geom);
2308 } 2305 }
2309 else 2306 else
2310 { 2307 {
@@ -2314,13 +2311,13 @@ namespace OpenSim.Region.PhysicsModule.ODE
2314 } 2311 }
2315 else 2312 else
2316 { 2313 {
2317 IntPtr sGeomIsIn = d.GeomGetSpace(geom); 2314 IntPtr sGeomIsIn = SafeNativeMethods.GeomGetSpace(geom);
2318 if (sGeomIsIn != IntPtr.Zero) 2315 if (sGeomIsIn != IntPtr.Zero)
2319 { 2316 {
2320 if (d.GeomIsSpace(currentspace)) 2317 if (SafeNativeMethods.GeomIsSpace(currentspace))
2321 { 2318 {
2322// waitForSpaceUnlock(sGeomIsIn); 2319// waitForSpaceUnlock(sGeomIsIn);
2323 d.SpaceRemove(sGeomIsIn, geom); 2320 SafeNativeMethods.SpaceRemove(sGeomIsIn, geom);
2324 } 2321 }
2325 else 2322 else
2326 { 2323 {
@@ -2331,13 +2328,13 @@ namespace OpenSim.Region.PhysicsModule.ODE
2331 } 2328 }
2332 2329
2333 //If there are no more geometries in the sub-space, we don't need it in the main space anymore 2330 //If there are no more geometries in the sub-space, we don't need it in the main space anymore
2334 if (d.SpaceGetNumGeoms(currentspace) == 0) 2331 if (SafeNativeMethods.SpaceGetNumGeoms(currentspace) == 0)
2335 { 2332 {
2336 if (currentspace != IntPtr.Zero) 2333 if (currentspace != IntPtr.Zero)
2337 { 2334 {
2338 if (d.GeomIsSpace(currentspace)) 2335 if (SafeNativeMethods.GeomIsSpace(currentspace))
2339 { 2336 {
2340 d.SpaceRemove(space, currentspace); 2337 SafeNativeMethods.SpaceRemove(space, currentspace);
2341 // free up memory used by the space. 2338 // free up memory used by the space.
2342 2339
2343 resetSpaceArrayItemToZero(currentspace); 2340 resetSpaceArrayItemToZero(currentspace);
@@ -2355,12 +2352,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
2355 // this is a physical object that got disabled. ;.; 2352 // this is a physical object that got disabled. ;.;
2356 if (currentspace != IntPtr.Zero && geom != IntPtr.Zero) 2353 if (currentspace != IntPtr.Zero && geom != IntPtr.Zero)
2357 { 2354 {
2358 if (d.SpaceQuery(currentspace, geom)) 2355 if (SafeNativeMethods.SpaceQuery(currentspace, geom))
2359 { 2356 {
2360 if (d.GeomIsSpace(currentspace)) 2357 if (SafeNativeMethods.GeomIsSpace(currentspace))
2361 { 2358 {
2362// waitForSpaceUnlock(currentspace); 2359// waitForSpaceUnlock(currentspace);
2363 d.SpaceRemove(currentspace, geom); 2360 SafeNativeMethods.SpaceRemove(currentspace, geom);
2364 } 2361 }
2365 else 2362 else
2366 { 2363 {
@@ -2370,13 +2367,13 @@ namespace OpenSim.Region.PhysicsModule.ODE
2370 } 2367 }
2371 else 2368 else
2372 { 2369 {
2373 IntPtr sGeomIsIn = d.GeomGetSpace(geom); 2370 IntPtr sGeomIsIn = SafeNativeMethods.GeomGetSpace(geom);
2374 if (sGeomIsIn != IntPtr.Zero) 2371 if (sGeomIsIn != IntPtr.Zero)
2375 { 2372 {
2376 if (d.GeomIsSpace(sGeomIsIn)) 2373 if (SafeNativeMethods.GeomIsSpace(sGeomIsIn))
2377 { 2374 {
2378// waitForSpaceUnlock(sGeomIsIn); 2375// waitForSpaceUnlock(sGeomIsIn);
2379 d.SpaceRemove(sGeomIsIn, geom); 2376 SafeNativeMethods.SpaceRemove(sGeomIsIn, geom);
2380 } 2377 }
2381 else 2378 else
2382 { 2379 {
@@ -2397,7 +2394,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2397 if (newspace == IntPtr.Zero) 2394 if (newspace == IntPtr.Zero)
2398 { 2395 {
2399 newspace = createprimspace(iprimspaceArrItem[0], iprimspaceArrItem[1]); 2396 newspace = createprimspace(iprimspaceArrItem[0], iprimspaceArrItem[1]);
2400 d.HashSpaceSetLevels(newspace, HashspaceLow, HashspaceHigh); 2397 SafeNativeMethods.HashSpaceSetLevels(newspace, HashspaceLow, HashspaceHigh);
2401 } 2398 }
2402 2399
2403 return newspace; 2400 return newspace;
@@ -2412,11 +2409,11 @@ namespace OpenSim.Region.PhysicsModule.ODE
2412 internal IntPtr createprimspace(int iprimspaceArrItemX, int iprimspaceArrItemY) 2409 internal IntPtr createprimspace(int iprimspaceArrItemX, int iprimspaceArrItemY)
2413 { 2410 {
2414 // creating a new space for prim and inserting it into main space. 2411 // creating a new space for prim and inserting it into main space.
2415 staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY] = d.HashSpaceCreate(IntPtr.Zero); 2412 staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY] = SafeNativeMethods.HashSpaceCreate(IntPtr.Zero);
2416 d.GeomSetCategoryBits(staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY], (int)CollisionCategories.Space); 2413 SafeNativeMethods.GeomSetCategoryBits(staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY], (int)CollisionCategories.Space);
2417// waitForSpaceUnlock(space); 2414// waitForSpaceUnlock(space);
2418 d.SpaceSetSublevel(space, 1); 2415 SafeNativeMethods.SpaceSetSublevel(space, 1);
2419 d.SpaceAdd(space, staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY]); 2416 SafeNativeMethods.SpaceAdd(space, staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY]);
2420 2417
2421 return staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY]; 2418 return staticPrimspace[iprimspaceArrItemX, iprimspaceArrItemY];
2422 } 2419 }
@@ -2636,7 +2633,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2636 m_log.InfoFormat("[Ode] start processing pending actor operations"); 2633 m_log.InfoFormat("[Ode] start processing pending actor operations");
2637 int tstart = Util.EnvironmentTickCount(); 2634 int tstart = Util.EnvironmentTickCount();
2638 2635
2639 d.AllocateODEDataForThread(0); 2636 SafeNativeMethods.AllocateODEDataForThread(0);
2640 2637
2641 lock (_taintedPrims) 2638 lock (_taintedPrims)
2642 { 2639 {
@@ -2719,7 +2716,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2719 2716
2720 lock (OdeLock) 2717 lock (OdeLock)
2721 { 2718 {
2722 d.AllocateODEDataForThread(~0U); 2719 SafeNativeMethods.AllocateODEDataForThread(~0U);
2723 2720
2724 while (step_time > HalfOdeStep) 2721 while (step_time > HalfOdeStep)
2725 { 2722 {
@@ -2871,12 +2868,12 @@ namespace OpenSim.Region.PhysicsModule.ODE
2871 } 2868 }
2872 2869
2873 lock(SimulationLock) 2870 lock(SimulationLock)
2874 d.WorldQuickStep(world, ODE_STEPSIZE); 2871 SafeNativeMethods.WorldQuickStep(world, ODE_STEPSIZE);
2875 2872
2876 if (CollectStats) 2873 if (CollectStats)
2877 m_stats[ODENativeStepFrameMsStatName] += Util.EnvironmentTickCountSubtract(tempTick); 2874 m_stats[ODENativeStepFrameMsStatName] += Util.EnvironmentTickCountSubtract(tempTick);
2878 2875
2879 d.JointGroupEmpty(contactgroup); 2876 SafeNativeMethods.JointGroupEmpty(contactgroup);
2880 } 2877 }
2881 catch (Exception e) 2878 catch (Exception e)
2882 { 2879 {
@@ -2924,7 +2921,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2924 2921
2925 foreach (OdePrim prim in _activeprims) 2922 foreach (OdePrim prim in _activeprims)
2926 { 2923 {
2927 if (prim.IsPhysical && (d.BodyIsEnabled(prim.Body) || !prim._zeroFlag)) 2924 if (prim.IsPhysical && (SafeNativeMethods.BodyIsEnabled(prim.Body) || !prim._zeroFlag))
2928 { 2925 {
2929 prim.UpdatePositionAndVelocity(); 2926 prim.UpdatePositionAndVelocity();
2930 2927
@@ -2954,7 +2951,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
2954 fwriter.Close(); 2951 fwriter.Close();
2955 } 2952 }
2956 2953
2957 d.WorldExportDIF(world, fname, physics_logging_append_existing_logfile, prefix); 2954 SafeNativeMethods.WorldExportDIF(world, fname, physics_logging_append_existing_logfile, prefix);
2958 } 2955 }
2959 2956
2960 latertickcount = Util.EnvironmentTickCountSubtract(tickCountFrameRun); 2957 latertickcount = Util.EnvironmentTickCountSubtract(tickCountFrameRun);
@@ -3069,11 +3066,11 @@ namespace OpenSim.Region.PhysicsModule.ODE
3069 { 3066 {
3070 IntPtr odeJoint; 3067 IntPtr odeJoint;
3071 //DoJointErrorMessage(joint, "ODE creating ball joint "); 3068 //DoJointErrorMessage(joint, "ODE creating ball joint ");
3072 odeJoint = d.JointCreateBall(world, IntPtr.Zero); 3069 odeJoint = SafeNativeMethods.JointCreateBall(world, IntPtr.Zero);
3073 //DoJointErrorMessage(joint, "ODE attaching ball joint: " + odeJoint + " with b1:" + jointBodies[0] + " b2:" + jointBodies[1]); 3070 //DoJointErrorMessage(joint, "ODE attaching ball joint: " + odeJoint + " with b1:" + jointBodies[0] + " b2:" + jointBodies[1]);
3074 d.JointAttach(odeJoint, jointBodies[0], jointBodies[1]); 3071 SafeNativeMethods.JointAttach(odeJoint, jointBodies[0], jointBodies[1]);
3075 //DoJointErrorMessage(joint, "ODE setting ball anchor: " + odeJoint + " to vec:" + joint.Position); 3072 //DoJointErrorMessage(joint, "ODE setting ball anchor: " + odeJoint + " to vec:" + joint.Position);
3076 d.JointSetBallAnchor(odeJoint, 3073 SafeNativeMethods.JointSetBallAnchor(odeJoint,
3077 joint.Position.X, 3074 joint.Position.X,
3078 joint.Position.Y, 3075 joint.Position.Y,
3079 joint.Position.Z); 3076 joint.Position.Z);
@@ -3097,11 +3094,11 @@ namespace OpenSim.Region.PhysicsModule.ODE
3097 { 3094 {
3098 IntPtr odeJoint; 3095 IntPtr odeJoint;
3099 //DoJointErrorMessage(joint, "ODE creating hinge joint "); 3096 //DoJointErrorMessage(joint, "ODE creating hinge joint ");
3100 odeJoint = d.JointCreateHinge(world, IntPtr.Zero); 3097 odeJoint = SafeNativeMethods.JointCreateHinge(world, IntPtr.Zero);
3101 //DoJointErrorMessage(joint, "ODE attaching hinge joint: " + odeJoint + " with b1:" + jointBodies[0] + " b2:" + jointBodies[1]); 3098 //DoJointErrorMessage(joint, "ODE attaching hinge joint: " + odeJoint + " with b1:" + jointBodies[0] + " b2:" + jointBodies[1]);
3102 d.JointAttach(odeJoint, jointBodies[0], jointBodies[1]); 3099 SafeNativeMethods.JointAttach(odeJoint, jointBodies[0], jointBodies[1]);
3103 //DoJointErrorMessage(joint, "ODE setting hinge anchor: " + odeJoint + " to vec:" + joint.Position); 3100 //DoJointErrorMessage(joint, "ODE setting hinge anchor: " + odeJoint + " to vec:" + joint.Position);
3104 d.JointSetHingeAnchor(odeJoint, 3101 SafeNativeMethods.JointSetHingeAnchor(odeJoint,
3105 joint.Position.X, 3102 joint.Position.X,
3106 joint.Position.Y, 3103 joint.Position.Y,
3107 joint.Position.Z); 3104 joint.Position.Z);
@@ -3137,7 +3134,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
3137 Vector3 jointAxis = Vector3.Transform(Vector3.UnitX, proxyFrame); 3134 Vector3 jointAxis = Vector3.Transform(Vector3.UnitX, proxyFrame);
3138 //m_log.Debug("PHY: making axis: hinge joint axis is " + jointAxis); 3135 //m_log.Debug("PHY: making axis: hinge joint axis is " + jointAxis);
3139 //DoJointErrorMessage(joint, "ODE setting hinge axis: " + odeJoint + " to vec:" + jointAxis); 3136 //DoJointErrorMessage(joint, "ODE setting hinge axis: " + odeJoint + " to vec:" + jointAxis);
3140 d.JointSetHingeAxis(odeJoint, 3137 SafeNativeMethods.JointSetHingeAxis(odeJoint,
3141 jointAxis.X, 3138 jointAxis.X,
3142 jointAxis.Y, 3139 jointAxis.Y,
3143 jointAxis.Z); 3140 jointAxis.Z);
@@ -3299,7 +3296,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
3299 3296
3300 lock (OdeLock) 3297 lock (OdeLock)
3301 { 3298 {
3302 d.AllocateODEDataForThread(~0U); 3299 SafeNativeMethods.AllocateODEDataForThread(~0U);
3303 3300
3304 IntPtr GroundGeom = IntPtr.Zero; 3301 IntPtr GroundGeom = IntPtr.Zero;
3305 if (RegionTerrain.TryGetValue(pOffset, out GroundGeom)) 3302 if (RegionTerrain.TryGetValue(pOffset, out GroundGeom))
@@ -3311,29 +3308,29 @@ namespace OpenSim.Region.PhysicsModule.ODE
3311 { 3308 {
3312 TerrainHeightFieldHeights.Remove(GroundGeom); 3309 TerrainHeightFieldHeights.Remove(GroundGeom);
3313 } 3310 }
3314 d.SpaceRemove(space, GroundGeom); 3311 SafeNativeMethods.SpaceRemove(space, GroundGeom);
3315 d.GeomDestroy(GroundGeom); 3312 SafeNativeMethods.GeomDestroy(GroundGeom);
3316 } 3313 }
3317 3314
3318 } 3315 }
3319 IntPtr HeightmapData = d.GeomHeightfieldDataCreate(); 3316 IntPtr HeightmapData = SafeNativeMethods.GeomHeightfieldDataCreate();
3320 d.GeomHeightfieldDataBuildSingle(HeightmapData, _heightmap, 0, 3317 SafeNativeMethods.GeomHeightfieldDataBuildSingle(HeightmapData, _heightmap, 0,
3321 heightmapWidth, heightmapHeight, 3318 heightmapWidth, heightmapHeight,
3322 (int)heightmapWidthSamples, 3319 (int)heightmapWidthSamples,
3323 (int)heightmapHeightSamples, 3320 (int)heightmapHeightSamples,
3324 scale, offset, thickness, wrap); 3321 scale, offset, thickness, wrap);
3325 3322
3326 d.GeomHeightfieldDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1); 3323 SafeNativeMethods.GeomHeightfieldDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1);
3327 GroundGeom = d.CreateHeightfield(space, HeightmapData, 1); 3324 GroundGeom = SafeNativeMethods.CreateHeightfield(space, HeightmapData, 1);
3328 if (GroundGeom != IntPtr.Zero) 3325 if (GroundGeom != IntPtr.Zero)
3329 { 3326 {
3330 d.GeomSetCategoryBits(GroundGeom, (int)(CollisionCategories.Land)); 3327 SafeNativeMethods.GeomSetCategoryBits(GroundGeom, (int)(CollisionCategories.Land));
3331 d.GeomSetCollideBits(GroundGeom, (int)(CollisionCategories.Space)); 3328 SafeNativeMethods.GeomSetCollideBits(GroundGeom, (int)(CollisionCategories.Space));
3332 3329
3333 } 3330 }
3334 geom_name_map[GroundGeom] = "Terrain"; 3331 geom_name_map[GroundGeom] = "Terrain";
3335 3332
3336 d.Matrix3 R = new d.Matrix3(); 3333 SafeNativeMethods.Matrix3 R = new SafeNativeMethods.Matrix3();
3337 3334
3338 Quaternion q1 = Quaternion.CreateFromAxisAngle(new Vector3(1, 0, 0), 1.5707f); 3335 Quaternion q1 = Quaternion.CreateFromAxisAngle(new Vector3(1, 0, 0), 1.5707f);
3339 Quaternion q2 = Quaternion.CreateFromAxisAngle(new Vector3(0, 1, 0), 1.5707f); 3336 Quaternion q2 = Quaternion.CreateFromAxisAngle(new Vector3(0, 1, 0), 1.5707f);
@@ -3343,9 +3340,9 @@ namespace OpenSim.Region.PhysicsModule.ODE
3343 float angle; 3340 float angle;
3344 q1.GetAxisAngle(out v3, out angle); 3341 q1.GetAxisAngle(out v3, out angle);
3345 3342
3346 d.RFromAxisAndAngle(out R, v3.X, v3.Y, v3.Z, angle); 3343 SafeNativeMethods.RFromAxisAndAngle(out R, v3.X, v3.Y, v3.Z, angle);
3347 d.GeomSetRotation(GroundGeom, ref R); 3344 SafeNativeMethods.GeomSetRotation(GroundGeom, ref R);
3348 d.GeomSetPosition(GroundGeom, pOffset.X + regionsizeX * 0.5f, pOffset.Y + regionsizeY * 0.5f, 0.0f); 3345 SafeNativeMethods.GeomSetPosition(GroundGeom, pOffset.X + regionsizeX * 0.5f, pOffset.Y + regionsizeY * 0.5f, 0.0f);
3349 IntPtr testGround = IntPtr.Zero; 3346 IntPtr testGround = IntPtr.Zero;
3350 if (RegionTerrain.TryGetValue(pOffset, out testGround)) 3347 if (RegionTerrain.TryGetValue(pOffset, out testGround))
3351 { 3348 {
@@ -3384,7 +3381,7 @@ namespace OpenSim.Region.PhysicsModule.ODE
3384 3381
3385 _worldInitialized = false; 3382 _worldInitialized = false;
3386 3383
3387 d.AllocateODEDataForThread(~0U); 3384 SafeNativeMethods.AllocateODEDataForThread(~0U);
3388 3385
3389 if (m_rayCastManager != null) 3386 if (m_rayCastManager != null)
3390 { 3387 {
@@ -3412,13 +3409,13 @@ namespace OpenSim.Region.PhysicsModule.ODE
3412 { 3409 {
3413 if (TerrainHeightFieldHeights.ContainsKey(GroundGeom)) 3410 if (TerrainHeightFieldHeights.ContainsKey(GroundGeom))
3414 TerrainHeightFieldHeights.Remove(GroundGeom); 3411 TerrainHeightFieldHeights.Remove(GroundGeom);
3415 d.GeomDestroy(GroundGeom); 3412 SafeNativeMethods.GeomDestroy(GroundGeom);
3416 } 3413 }
3417 } 3414 }
3418 3415
3419 try 3416 try
3420 { 3417 {
3421 d.WorldDestroy(world); 3418 SafeNativeMethods.WorldDestroy(world);
3422 world = IntPtr.Zero; 3419 world = IntPtr.Zero;
3423 } 3420 }
3424 catch (AccessViolationException e) 3421 catch (AccessViolationException e)
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEApi.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEApi.cs
index 35adf11..42ad391 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEApi.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEApi.cs
@@ -44,7 +44,7 @@ using System;
44using System.Runtime.InteropServices; 44using System.Runtime.InteropServices;
45using System.Security; 45using System.Security;
46using OMV = OpenMetaverse; 46using OMV = OpenMetaverse;
47namespace OdeAPI 47namespace OpenSim.Region.PhysicsModule.ubOde
48{ 48{
49//#if dDOUBLE 49//#if dDOUBLE
50// don't see much use in double precision with time steps of 20ms and 10 iterations used on opensim 50// don't see much use in double precision with time steps of 20ms and 10 iterations used on opensim
@@ -54,18 +54,19 @@ namespace OdeAPI
54 using dReal = System.Single; 54 using dReal = System.Single;
55//#endif 55//#endif
56 56
57 public static class d 57 [SuppressUnmanagedCodeSecurityAttribute]
58 internal static class SafeNativeMethods
58 { 59 {
59 public static dReal Infinity = dReal.MaxValue; 60 internal static dReal Infinity = dReal.MaxValue;
60 public static int NTotalBodies = 0; 61 internal static int NTotalBodies = 0;
61 public static int NTotalGeoms = 0; 62 internal static int NTotalGeoms = 0;
62 63
63 public const uint CONTACTS_UNIMPORTANT = 0x80000000; 64 internal const uint CONTACTS_UNIMPORTANT = 0x80000000;
64 65
65 #region Flags and Enumerations 66 #region Flags and Enumerations
66 67
67 [Flags] 68 [Flags]
68 public enum AllocateODEDataFlags : uint 69 internal enum AllocateODEDataFlags : uint
69 { 70 {
70 BasicData = 0, 71 BasicData = 0,
71 CollisionData = 0x00000001, 72 CollisionData = 0x00000001,
@@ -73,13 +74,13 @@ namespace OdeAPI
73 } 74 }
74 75
75 [Flags] 76 [Flags]
76 public enum IniteODEFlags : uint 77 internal enum IniteODEFlags : uint
77 { 78 {
78 dInitFlagManualThreadCleanup = 0x00000001 79 dInitFlagManualThreadCleanup = 0x00000001
79 } 80 }
80 81
81 [Flags] 82 [Flags]
82 public enum ContactFlags : int 83 internal enum ContactFlags : int
83 { 84 {
84 Mu2 = 0x001, 85 Mu2 = 0x001,
85 FDir1 = 0x002, 86 FDir1 = 0x002,
@@ -97,7 +98,7 @@ namespace OdeAPI
97 Approx1 = 0x3000 98 Approx1 = 0x3000
98 } 99 }
99 100
100 public enum GeomClassID : int 101 internal enum GeomClassID : int
101 { 102 {
102 SphereClass, 103 SphereClass,
103 BoxClass, 104 BoxClass,
@@ -121,7 +122,7 @@ namespace OdeAPI
121 MaxUserClasses = 5 122 MaxUserClasses = 5
122 } 123 }
123 124
124 public enum JointType : int 125 internal enum JointType : int
125 { 126 {
126 None, 127 None,
127 Ball, 128 Ball,
@@ -137,7 +138,7 @@ namespace OdeAPI
137 Plane2D 138 Plane2D
138 } 139 }
139 140
140 public enum JointParam : int 141 internal enum JointParam : int
141 { 142 {
142 LoStop, 143 LoStop,
143 HiStop, 144 HiStop,
@@ -174,7 +175,7 @@ namespace OdeAPI
174 SuspensionCFM3 175 SuspensionCFM3
175 } 176 }
176 177
177 public enum dSweepAndPruneAxis : int 178 internal enum dSweepAndPruneAxis : int
178 { 179 {
179 XYZ = ((0)|(1<<2)|(2<<4)), 180 XYZ = ((0)|(1<<2)|(2<<4)),
180 XZY = ((0)|(2<<2)|(1<<4)), 181 XZY = ((0)|(2<<2)|(1<<4)),
@@ -189,126 +190,126 @@ namespace OdeAPI
189 #region Callbacks 190 #region Callbacks
190 191
191 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 192 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
192 public delegate int AABBTestFn(IntPtr o1, IntPtr o2, ref AABB aabb); 193 internal delegate int AABBTestFn(IntPtr o1, IntPtr o2, ref AABB aabb);
193 194
194 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 195 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
195 public delegate int ColliderFn(IntPtr o1, IntPtr o2, int flags, out ContactGeom contact, int skip); 196 internal delegate int ColliderFn(IntPtr o1, IntPtr o2, int flags, out ContactGeom contact, int skip);
196 197
197 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 198 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
198 public delegate void GetAABBFn(IntPtr geom, out AABB aabb); 199 internal delegate void GetAABBFn(IntPtr geom, out AABB aabb);
199 200
200 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 201 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
201 public delegate ColliderFn GetColliderFnFn(int num); 202 internal delegate ColliderFn GetColliderFnFn(int num);
202 203
203 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 204 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
204 public delegate void GeomDtorFn(IntPtr o); 205 internal delegate void GeomDtorFn(IntPtr o);
205 206
206 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 207 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
207 public delegate dReal HeightfieldGetHeight(IntPtr p_user_data, int x, int z); 208 internal delegate dReal HeightfieldGetHeight(IntPtr p_user_data, int x, int z);
208 209
209 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 210 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
210 public delegate dReal OSTerrainGetHeight(IntPtr p_user_data, int x, int z); 211 internal delegate dReal OSTerrainGetHeight(IntPtr p_user_data, int x, int z);
211 212
212 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 213 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
213 public delegate void NearCallback(IntPtr data, IntPtr geom1, IntPtr geom2); 214 internal delegate void NearCallback(IntPtr data, IntPtr geom1, IntPtr geom2);
214 215
215 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 216 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
216 public delegate int TriCallback(IntPtr trimesh, IntPtr refObject, int triangleIndex); 217 internal delegate int TriCallback(IntPtr trimesh, IntPtr refObject, int triangleIndex);
217 218
218 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 219 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
219 public delegate int TriArrayCallback(IntPtr trimesh, IntPtr refObject, int[] triangleIndex, int triCount); 220 internal delegate int TriArrayCallback(IntPtr trimesh, IntPtr refObject, int[] triangleIndex, int triCount);
220 221
221 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 222 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
222 public delegate int TriRayCallback(IntPtr trimesh, IntPtr ray, int triangleIndex, dReal u, dReal v); 223 internal delegate int TriRayCallback(IntPtr trimesh, IntPtr ray, int triangleIndex, dReal u, dReal v);
223 224
224 #endregion 225 #endregion
225 226
226 #region Structs 227 #region Structs
227 228
228 [StructLayout(LayoutKind.Sequential)] 229 [StructLayout(LayoutKind.Sequential)]
229 public struct AABB 230 internal struct AABB
230 { 231 {
231 public dReal MinX, MaxX; 232 internal dReal MinX, MaxX;
232 public dReal MinY, MaxY; 233 internal dReal MinY, MaxY;
233 public dReal MinZ, MaxZ; 234 internal dReal MinZ, MaxZ;
234 } 235 }
235 236
236 237
237 [StructLayout(LayoutKind.Sequential)] 238 [StructLayout(LayoutKind.Sequential)]
238 public struct Contact 239 internal struct Contact
239 { 240 {
240 public SurfaceParameters surface; 241 internal SurfaceParameters surface;
241 public ContactGeom geom; 242 internal ContactGeom geom;
242 public Vector3 fdir1; 243 internal Vector3 fdir1;
243 public static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(Contact)); 244 internal static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(Contact));
244 } 245 }
245 246
246 247
247 [StructLayout(LayoutKind.Sequential)] 248 [StructLayout(LayoutKind.Sequential)]
248 public struct ContactGeom 249 internal struct ContactGeom
249 { 250 {
250 251
251 public Vector3 pos; 252 internal Vector3 pos;
252 public Vector3 normal; 253 internal Vector3 normal;
253 public dReal depth; 254 internal dReal depth;
254 public IntPtr g1; 255 internal IntPtr g1;
255 public IntPtr g2; 256 internal IntPtr g2;
256 public int side1; 257 internal int side1;
257 public int side2; 258 internal int side2;
258 public static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(ContactGeom)); 259 internal static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(ContactGeom));
259 } 260 }
260 261
261 [StructLayout(LayoutKind.Sequential)] 262 [StructLayout(LayoutKind.Sequential)]
262 public struct GeomClass 263 internal struct GeomClass
263 { 264 {
264 public int bytes; 265 internal int bytes;
265 public GetColliderFnFn collider; 266 internal GetColliderFnFn collider;
266 public GetAABBFn aabb; 267 internal GetAABBFn aabb;
267 public AABBTestFn aabb_test; 268 internal AABBTestFn aabb_test;
268 public GeomDtorFn dtor; 269 internal GeomDtorFn dtor;
269 } 270 }
270 271
271 272
272 [StructLayout(LayoutKind.Sequential)] 273 [StructLayout(LayoutKind.Sequential)]
273 public struct JointFeedback 274 internal struct JointFeedback
274 { 275 {
275 public Vector3 f1; 276 internal Vector3 f1;
276 public Vector3 t1; 277 internal Vector3 t1;
277 public Vector3 f2; 278 internal Vector3 f2;
278 public Vector3 t2; 279 internal Vector3 t2;
279 } 280 }
280 281
281 282
282 [StructLayout(LayoutKind.Sequential)] 283 [StructLayout(LayoutKind.Sequential)]
283 public struct Mass 284 internal struct Mass
284 { 285 {
285 public dReal mass; 286 internal dReal mass;
286 public Vector4 c; 287 internal Vector4 c;
287 public Matrix3 I; 288 internal Matrix3 I;
288 } 289 }
289 290
290 291
291 [StructLayout(LayoutKind.Sequential)] 292 [StructLayout(LayoutKind.Sequential)]
292 public struct Matrix3 293 internal struct Matrix3
293 { 294 {
294 public Matrix3(dReal m00, dReal m10, dReal m20, dReal m01, dReal m11, dReal m21, dReal m02, dReal m12, dReal m22) 295 internal Matrix3(dReal m00, dReal m10, dReal m20, dReal m01, dReal m11, dReal m21, dReal m02, dReal m12, dReal m22)
295 { 296 {
296 M00 = m00; M10 = m10; M20 = m20; _m30 = 0.0f; 297 M00 = m00; M10 = m10; M20 = m20; _m30 = 0.0f;
297 M01 = m01; M11 = m11; M21 = m21; _m31 = 0.0f; 298 M01 = m01; M11 = m11; M21 = m21; _m31 = 0.0f;
298 M02 = m02; M12 = m12; M22 = m22; _m32 = 0.0f; 299 M02 = m02; M12 = m12; M22 = m22; _m32 = 0.0f;
299 } 300 }
300 public dReal M00, M10, M20; 301 internal dReal M00, M10, M20;
301 private dReal _m30; 302 private dReal _m30;
302 public dReal M01, M11, M21; 303 internal dReal M01, M11, M21;
303 private dReal _m31; 304 private dReal _m31;
304 public dReal M02, M12, M22; 305 internal dReal M02, M12, M22;
305 private dReal _m32; 306 private dReal _m32;
306 } 307 }
307 308
308 [StructLayout(LayoutKind.Sequential)] 309 [StructLayout(LayoutKind.Sequential)]
309 public struct Matrix4 310 internal struct Matrix4
310 { 311 {
311 public Matrix4(dReal m00, dReal m10, dReal m20, dReal m30, 312 internal Matrix4(dReal m00, dReal m10, dReal m20, dReal m30,
312 dReal m01, dReal m11, dReal m21, dReal m31, 313 dReal m01, dReal m11, dReal m21, dReal m31,
313 dReal m02, dReal m12, dReal m22, dReal m32, 314 dReal m02, dReal m12, dReal m22, dReal m32,
314 dReal m03, dReal m13, dReal m23, dReal m33) 315 dReal m03, dReal m13, dReal m23, dReal m33)
@@ -318,312 +319,312 @@ namespace OdeAPI
318 M02 = m02; M12 = m12; M22 = m22; M32 = m32; 319 M02 = m02; M12 = m12; M22 = m22; M32 = m32;
319 M03 = m03; M13 = m13; M23 = m23; M33 = m33; 320 M03 = m03; M13 = m13; M23 = m23; M33 = m33;
320 } 321 }
321 public dReal M00, M10, M20, M30; 322 internal dReal M00, M10, M20, M30;
322 public dReal M01, M11, M21, M31; 323 internal dReal M01, M11, M21, M31;
323 public dReal M02, M12, M22, M32; 324 internal dReal M02, M12, M22, M32;
324 public dReal M03, M13, M23, M33; 325 internal dReal M03, M13, M23, M33;
325 } 326 }
326 327
327 [StructLayout(LayoutKind.Sequential)] 328 [StructLayout(LayoutKind.Sequential)]
328 public struct Quaternion 329 internal struct Quaternion
329 { 330 {
330 public dReal W, X, Y, Z; 331 internal dReal W, X, Y, Z;
331 } 332 }
332 333
333 334
334 [StructLayout(LayoutKind.Sequential)] 335 [StructLayout(LayoutKind.Sequential)]
335 public struct SurfaceParameters 336 internal struct SurfaceParameters
336 { 337 {
337 public ContactFlags mode; 338 internal ContactFlags mode;
338 public dReal mu; 339 internal dReal mu;
339 public dReal mu2; 340 internal dReal mu2;
340 public dReal bounce; 341 internal dReal bounce;
341 public dReal bounce_vel; 342 internal dReal bounce_vel;
342 public dReal soft_erp; 343 internal dReal soft_erp;
343 public dReal soft_cfm; 344 internal dReal soft_cfm;
344 public dReal motion1; 345 internal dReal motion1;
345 public dReal motion2; 346 internal dReal motion2;
346 public dReal motionN; 347 internal dReal motionN;
347 public dReal slip1; 348 internal dReal slip1;
348 public dReal slip2; 349 internal dReal slip2;
349 } 350 }
350 351
351 352
352 [StructLayout(LayoutKind.Sequential)] 353 [StructLayout(LayoutKind.Sequential)]
353 public struct Vector3 354 internal struct Vector3
354 { 355 {
355 public Vector3(dReal x, dReal y, dReal z) 356 internal Vector3(dReal x, dReal y, dReal z)
356 { 357 {
357 X = x; Y = y; Z = z; _w = 0.0f; 358 X = x; Y = y; Z = z; _w = 0.0f;
358 } 359 }
359 public dReal X, Y, Z; 360 internal dReal X, Y, Z;
360 private dReal _w; 361 private dReal _w;
361 } 362 }
362 363
363 364
364 [StructLayout(LayoutKind.Sequential)] 365 [StructLayout(LayoutKind.Sequential)]
365 public struct Vector4 366 internal struct Vector4
366 { 367 {
367 public Vector4(dReal x, dReal y, dReal z, dReal w) 368 internal Vector4(dReal x, dReal y, dReal z, dReal w)
368 { 369 {
369 X = x; Y = y; Z = z; W = w; 370 X = x; Y = y; Z = z; W = w;
370 } 371 }
371 public dReal X, Y, Z, W; 372 internal dReal X, Y, Z, W;
372 } 373 }
373 374
374 #endregion 375 #endregion
375 376
376 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAllocateODEDataForThread"), SuppressUnmanagedCodeSecurity] 377 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAllocateODEDataForThread"), SuppressUnmanagedCodeSecurity]
377 public static extern int AllocateODEDataForThread(uint ODEInitFlags); 378 internal static extern int AllocateODEDataForThread(uint ODEInitFlags);
378 379
379 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnected"), SuppressUnmanagedCodeSecurity] 380 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnected"), SuppressUnmanagedCodeSecurity]
380 public static extern bool AreConnected(IntPtr b1, IntPtr b2); 381 internal static extern bool AreConnected(IntPtr b1, IntPtr b2);
381 382
382 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnectedExcluding"), SuppressUnmanagedCodeSecurity] 383 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnectedExcluding"), SuppressUnmanagedCodeSecurity]
383 public static extern bool AreConnectedExcluding(IntPtr b1, IntPtr b2, JointType joint_type); 384 internal static extern bool AreConnectedExcluding(IntPtr b1, IntPtr b2, JointType joint_type);
384 385
385 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForce"), SuppressUnmanagedCodeSecurity] 386 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForce"), SuppressUnmanagedCodeSecurity]
386 public static extern void BodyAddForce(IntPtr body, dReal fx, dReal fy, dReal fz); 387 internal static extern void BodyAddForce(IntPtr body, dReal fx, dReal fy, dReal fz);
387 388
388 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtPos"), SuppressUnmanagedCodeSecurity] 389 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtPos"), SuppressUnmanagedCodeSecurity]
389 public static extern void BodyAddForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 390 internal static extern void BodyAddForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
390 391
391 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtRelPos"), SuppressUnmanagedCodeSecurity] 392 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForceAtRelPos"), SuppressUnmanagedCodeSecurity]
392 public static extern void BodyAddForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 393 internal static extern void BodyAddForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
393 394
394 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForce"), SuppressUnmanagedCodeSecurity] 395 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForce"), SuppressUnmanagedCodeSecurity]
395 public static extern void BodyAddRelForce(IntPtr body, dReal fx, dReal fy, dReal fz); 396 internal static extern void BodyAddRelForce(IntPtr body, dReal fx, dReal fy, dReal fz);
396 397
397 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtPos"), SuppressUnmanagedCodeSecurity] 398 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtPos"), SuppressUnmanagedCodeSecurity]
398 public static extern void BodyAddRelForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 399 internal static extern void BodyAddRelForceAtPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
399 400
400 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtRelPos"), SuppressUnmanagedCodeSecurity] 401 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForceAtRelPos"), SuppressUnmanagedCodeSecurity]
401 public static extern void BodyAddRelForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); 402 internal static extern void BodyAddRelForceAtRelPos(IntPtr body, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz);
402 403
403 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelTorque"), SuppressUnmanagedCodeSecurity] 404 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelTorque"), SuppressUnmanagedCodeSecurity]
404 public static extern void BodyAddRelTorque(IntPtr body, dReal fx, dReal fy, dReal fz); 405 internal static extern void BodyAddRelTorque(IntPtr body, dReal fx, dReal fy, dReal fz);
405 406
406 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddTorque"), SuppressUnmanagedCodeSecurity] 407 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddTorque"), SuppressUnmanagedCodeSecurity]
407 public static extern void BodyAddTorque(IntPtr body, dReal fx, dReal fy, dReal fz); 408 internal static extern void BodyAddTorque(IntPtr body, dReal fx, dReal fy, dReal fz);
408 409
409 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity] 410 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity]
410 public static extern void BodyCopyPosition(IntPtr body, out Vector3 pos); 411 internal static extern void BodyCopyPosition(IntPtr body, out Vector3 pos);
411 412
412 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity] 413 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity]
413 public static extern void BodyCopyPosition(IntPtr body, out dReal X); 414 internal static extern void BodyCopyPosition(IntPtr body, out dReal X);
414 415
415 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity] 416 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity]
416 public static extern void BodyCopyQuaternion(IntPtr body, out Quaternion quat); 417 internal static extern void BodyCopyQuaternion(IntPtr body, out Quaternion quat);
417 418
418 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity] 419 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity]
419 public static extern void BodyCopyQuaternion(IntPtr body, out dReal X); 420 internal static extern void BodyCopyQuaternion(IntPtr body, out dReal X);
420 421
421 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity] 422 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity]
422 public static extern void BodyCopyRotation(IntPtr body, out Matrix3 R); 423 internal static extern void BodyCopyRotation(IntPtr body, out Matrix3 R);
423 424
424 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity] 425 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity]
425 public static extern void BodyCopyRotation(IntPtr body, out dReal M00); 426 internal static extern void BodyCopyRotation(IntPtr body, out dReal M00);
426 427
427 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCreate"), SuppressUnmanagedCodeSecurity] 428 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCreate"), SuppressUnmanagedCodeSecurity]
428 public static extern IntPtr BodyiCreate(IntPtr world); 429 internal static extern IntPtr BodyiCreate(IntPtr world);
429 public static IntPtr BodyCreate(IntPtr world) 430 internal static IntPtr BodyCreate(IntPtr world)
430 { 431 {
431 NTotalBodies++; 432 NTotalBodies++;
432 return BodyiCreate(world); 433 return BodyiCreate(world);
433 } 434 }
434 435
435 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDestroy"), SuppressUnmanagedCodeSecurity] 436 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDestroy"), SuppressUnmanagedCodeSecurity]
436 public static extern void BodyiDestroy(IntPtr body); 437 internal static extern void BodyiDestroy(IntPtr body);
437 public static void BodyDestroy(IntPtr body) 438 internal static void BodyDestroy(IntPtr body)
438 { 439 {
439 NTotalBodies--; 440 NTotalBodies--;
440 BodyiDestroy(body); 441 BodyiDestroy(body);
441 } 442 }
442 443
443 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDisable"), SuppressUnmanagedCodeSecurity] 444 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDisable"), SuppressUnmanagedCodeSecurity]
444 public static extern void BodyDisable(IntPtr body); 445 internal static extern void BodyDisable(IntPtr body);
445 446
446 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyEnable"), SuppressUnmanagedCodeSecurity] 447 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyEnable"), SuppressUnmanagedCodeSecurity]
447 public static extern void BodyEnable(IntPtr body); 448 internal static extern void BodyEnable(IntPtr body);
448 449
449 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 450 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
450 public static extern dReal BodyGetAutoDisableAngularThreshold(IntPtr body); 451 internal static extern dReal BodyGetAutoDisableAngularThreshold(IntPtr body);
451 452
452 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 453 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
453 public static extern bool BodyGetAutoDisableFlag(IntPtr body); 454 internal static extern bool BodyGetAutoDisableFlag(IntPtr body);
454 455
455 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity] 456 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity]
456 public static extern void BodyGetAutoDisableDefaults(IntPtr body); 457 internal static extern void BodyGetAutoDisableDefaults(IntPtr body);
457 458
458 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 459 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
459 public static extern dReal BodyGetAutoDisableLinearThreshold(IntPtr body); 460 internal static extern dReal BodyGetAutoDisableLinearThreshold(IntPtr body);
460 461
461 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 462 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
462 public static extern int BodyGetAutoDisableSteps(IntPtr body); 463 internal static extern int BodyGetAutoDisableSteps(IntPtr body);
463 464
464 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 465 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
465 public static extern dReal BodyGetAutoDisableTime(IntPtr body); 466 internal static extern dReal BodyGetAutoDisableTime(IntPtr body);
466 467
467 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularVel"), SuppressUnmanagedCodeSecurity] 468 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularVel"), SuppressUnmanagedCodeSecurity]
468 public extern unsafe static Vector3* BodyGetAngularVelUnsafe(IntPtr body); 469 internal extern unsafe static Vector3* BodyGetAngularVelUnsafe(IntPtr body);
469 public static Vector3 BodyGetAngularVel(IntPtr body) 470 internal static Vector3 BodyGetAngularVel(IntPtr body)
470 { 471 {
471 unsafe { return *(BodyGetAngularVelUnsafe(body)); } 472 unsafe { return *(BodyGetAngularVelUnsafe(body)); }
472 } 473 }
473 474
474 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetData"), SuppressUnmanagedCodeSecurity] 475 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetData"), SuppressUnmanagedCodeSecurity]
475 public static extern IntPtr BodyGetData(IntPtr body); 476 internal static extern IntPtr BodyGetData(IntPtr body);
476 477
477 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationMode"), SuppressUnmanagedCodeSecurity] 478 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationMode"), SuppressUnmanagedCodeSecurity]
478 public static extern int BodyGetFiniteRotationMode(IntPtr body); 479 internal static extern int BodyGetFiniteRotationMode(IntPtr body);
479 480
480 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity] 481 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity]
481 public static extern void BodyGetFiniteRotationAxis(IntPtr body, out Vector3 result); 482 internal static extern void BodyGetFiniteRotationAxis(IntPtr body, out Vector3 result);
482 483
483 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetForce"), SuppressUnmanagedCodeSecurity] 484 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetForce"), SuppressUnmanagedCodeSecurity]
484 public extern unsafe static Vector3* BodyGetForceUnsafe(IntPtr body); 485 internal extern unsafe static Vector3* BodyGetForceUnsafe(IntPtr body);
485 public static Vector3 BodyGetForce(IntPtr body) 486 internal static Vector3 BodyGetForce(IntPtr body)
486 { 487 {
487 unsafe { return *(BodyGetForceUnsafe(body)); } 488 unsafe { return *(BodyGetForceUnsafe(body)); }
488 } 489 }
489 490
490 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGravityMode"), SuppressUnmanagedCodeSecurity] 491 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGravityMode"), SuppressUnmanagedCodeSecurity]
491 public static extern bool BodyGetGravityMode(IntPtr body); 492 internal static extern bool BodyGetGravityMode(IntPtr body);
492 493
493 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGyroscopicMode"), SuppressUnmanagedCodeSecurity] 494 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGyroscopicMode"), SuppressUnmanagedCodeSecurity]
494 public static extern int BodyGetGyroscopicMode(IntPtr body); 495 internal static extern int BodyGetGyroscopicMode(IntPtr body);
495 496
496 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetJoint"), SuppressUnmanagedCodeSecurity] 497 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetJoint"), SuppressUnmanagedCodeSecurity]
497 public static extern IntPtr BodyGetJoint(IntPtr body, int index); 498 internal static extern IntPtr BodyGetJoint(IntPtr body, int index);
498 499
499 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearVel"), SuppressUnmanagedCodeSecurity] 500 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearVel"), SuppressUnmanagedCodeSecurity]
500 public extern unsafe static Vector3* BodyGetLinearVelUnsafe(IntPtr body); 501 internal extern unsafe static Vector3* BodyGetLinearVelUnsafe(IntPtr body);
501 public static Vector3 BodyGetLinearVel(IntPtr body) 502 internal static Vector3 BodyGetLinearVel(IntPtr body)
502 { 503 {
503 unsafe { return *(BodyGetLinearVelUnsafe(body)); } 504 unsafe { return *(BodyGetLinearVelUnsafe(body)); }
504 } 505 }
505 506
506 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetMass"), SuppressUnmanagedCodeSecurity] 507 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetMass"), SuppressUnmanagedCodeSecurity]
507 public static extern void BodyGetMass(IntPtr body, out Mass mass); 508 internal static extern void BodyGetMass(IntPtr body, out Mass mass);
508 509
509 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNumJoints"), SuppressUnmanagedCodeSecurity] 510 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNumJoints"), SuppressUnmanagedCodeSecurity]
510 public static extern int BodyGetNumJoints(IntPtr body); 511 internal static extern int BodyGetNumJoints(IntPtr body);
511 512
512 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPointVel"), SuppressUnmanagedCodeSecurity] 513 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPointVel"), SuppressUnmanagedCodeSecurity]
513 public static extern void BodyGetPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 514 internal static extern void BodyGetPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
514 515
515 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosition"), SuppressUnmanagedCodeSecurity] 516 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosition"), SuppressUnmanagedCodeSecurity]
516 public extern unsafe static Vector3* BodyGetPositionUnsafe(IntPtr body); 517 internal extern unsafe static Vector3* BodyGetPositionUnsafe(IntPtr body);
517 public static Vector3 BodyGetPosition(IntPtr body) 518 internal static Vector3 BodyGetPosition(IntPtr body)
518 { 519 {
519 unsafe { return *(BodyGetPositionUnsafe(body)); } 520 unsafe { return *(BodyGetPositionUnsafe(body)); }
520 } 521 }
521 522
522 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosRelPoint"), SuppressUnmanagedCodeSecurity] 523 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosRelPoint"), SuppressUnmanagedCodeSecurity]
523 public static extern void BodyGetPosRelPoint(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 524 internal static extern void BodyGetPosRelPoint(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
524 525
525 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetQuaternion"), SuppressUnmanagedCodeSecurity] 526 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetQuaternion"), SuppressUnmanagedCodeSecurity]
526 public extern unsafe static Quaternion* BodyGetQuaternionUnsafe(IntPtr body); 527 internal extern unsafe static Quaternion* BodyGetQuaternionUnsafe(IntPtr body);
527 public static Quaternion BodyGetQuaternion(IntPtr body) 528 internal static Quaternion BodyGetQuaternion(IntPtr body)
528 { 529 {
529 unsafe { return *(BodyGetQuaternionUnsafe(body)); } 530 unsafe { return *(BodyGetQuaternionUnsafe(body)); }
530 } 531 }
531 532
532 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointPos"), SuppressUnmanagedCodeSecurity] 533 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointPos"), SuppressUnmanagedCodeSecurity]
533 public static extern void BodyGetRelPointPos(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 534 internal static extern void BodyGetRelPointPos(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
534 535
535 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointVel"), SuppressUnmanagedCodeSecurity] 536 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRelPointVel"), SuppressUnmanagedCodeSecurity]
536 public static extern void BodyGetRelPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 537 internal static extern void BodyGetRelPointVel(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
537 538
538 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRotation"), SuppressUnmanagedCodeSecurity] 539 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRotation"), SuppressUnmanagedCodeSecurity]
539 public extern unsafe static Matrix3* BodyGetRotationUnsafe(IntPtr body); 540 internal extern unsafe static Matrix3* BodyGetRotationUnsafe(IntPtr body);
540 public static Matrix3 BodyGetRotation(IntPtr body) 541 internal static Matrix3 BodyGetRotation(IntPtr body)
541 { 542 {
542 unsafe { return *(BodyGetRotationUnsafe(body)); } 543 unsafe { return *(BodyGetRotationUnsafe(body)); }
543 } 544 }
544 545
545 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetTorque"), SuppressUnmanagedCodeSecurity] 546 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetTorque"), SuppressUnmanagedCodeSecurity]
546 public extern unsafe static Vector3* BodyGetTorqueUnsafe(IntPtr body); 547 internal extern unsafe static Vector3* BodyGetTorqueUnsafe(IntPtr body);
547 public static Vector3 BodyGetTorque(IntPtr body) 548 internal static Vector3 BodyGetTorque(IntPtr body)
548 { 549 {
549 unsafe { return *(BodyGetTorqueUnsafe(body)); } 550 unsafe { return *(BodyGetTorqueUnsafe(body)); }
550 } 551 }
551 552
552 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetWorld"), SuppressUnmanagedCodeSecurity] 553 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetWorld"), SuppressUnmanagedCodeSecurity]
553 public static extern IntPtr BodyGetWorld(IntPtr body); 554 internal static extern IntPtr BodyGetWorld(IntPtr body);
554 555
555 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFirstGeom"), SuppressUnmanagedCodeSecurity] 556 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFirstGeom"), SuppressUnmanagedCodeSecurity]
556 public static extern IntPtr BodyGetFirstGeom(IntPtr body); 557 internal static extern IntPtr BodyGetFirstGeom(IntPtr body);
557 558
558 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNextGeom"), SuppressUnmanagedCodeSecurity] 559 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNextGeom"), SuppressUnmanagedCodeSecurity]
559 public static extern IntPtr dBodyGetNextGeom(IntPtr Geom); 560 internal static extern IntPtr dBodyGetNextGeom(IntPtr Geom);
560 561
561 562
562 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyIsEnabled"), SuppressUnmanagedCodeSecurity] 563 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyIsEnabled"), SuppressUnmanagedCodeSecurity]
563 public static extern bool BodyIsEnabled(IntPtr body); 564 internal static extern bool BodyIsEnabled(IntPtr body);
564 565
565 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularVel"), SuppressUnmanagedCodeSecurity] 566 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularVel"), SuppressUnmanagedCodeSecurity]
566 public static extern void BodySetAngularVel(IntPtr body, dReal x, dReal y, dReal z); 567 internal static extern void BodySetAngularVel(IntPtr body, dReal x, dReal y, dReal z);
567 568
568 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 569 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
569 public static extern void BodySetAutoDisableAngularThreshold(IntPtr body, dReal angular_threshold); 570 internal static extern void BodySetAutoDisableAngularThreshold(IntPtr body, dReal angular_threshold);
570 571
571 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity] 572 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity]
572 public static extern void BodySetAutoDisableDefaults(IntPtr body); 573 internal static extern void BodySetAutoDisableDefaults(IntPtr body);
573 574
574 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 575 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
575 public static extern void BodySetAutoDisableFlag(IntPtr body, bool do_auto_disable); 576 internal static extern void BodySetAutoDisableFlag(IntPtr body, bool do_auto_disable);
576 577
577 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 578 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
578 public static extern void BodySetAutoDisableLinearThreshold(IntPtr body, dReal linear_threshold); 579 internal static extern void BodySetAutoDisableLinearThreshold(IntPtr body, dReal linear_threshold);
579 580
580 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 581 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
581 public static extern void BodySetAutoDisableSteps(IntPtr body, int steps); 582 internal static extern void BodySetAutoDisableSteps(IntPtr body, int steps);
582 583
583 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 584 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
584 public static extern void BodySetAutoDisableTime(IntPtr body, dReal time); 585 internal static extern void BodySetAutoDisableTime(IntPtr body, dReal time);
585 586
586 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetData"), SuppressUnmanagedCodeSecurity] 587 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetData"), SuppressUnmanagedCodeSecurity]
587 public static extern void BodySetData(IntPtr body, IntPtr data); 588 internal static extern void BodySetData(IntPtr body, IntPtr data);
588 589
589 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationMode"), SuppressUnmanagedCodeSecurity] 590 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationMode"), SuppressUnmanagedCodeSecurity]
590 public static extern void BodySetFiniteRotationMode(IntPtr body, int mode); 591 internal static extern void BodySetFiniteRotationMode(IntPtr body, int mode);
591 592
592 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity] 593 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity]
593 public static extern void BodySetFiniteRotationAxis(IntPtr body, dReal x, dReal y, dReal z); 594 internal static extern void BodySetFiniteRotationAxis(IntPtr body, dReal x, dReal y, dReal z);
594 595
595 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDamping"), SuppressUnmanagedCodeSecurity] 596 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDamping"), SuppressUnmanagedCodeSecurity]
596 public static extern void BodySetLinearDamping(IntPtr body, dReal scale); 597 internal static extern void BodySetLinearDamping(IntPtr body, dReal scale);
597 598
598 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity] 599 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity]
599 public static extern void BodySetAngularDamping(IntPtr body, dReal scale); 600 internal static extern void BodySetAngularDamping(IntPtr body, dReal scale);
600 601
601 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDamping"), SuppressUnmanagedCodeSecurity] 602 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDamping"), SuppressUnmanagedCodeSecurity]
602 public static extern dReal BodyGetLinearDamping(IntPtr body); 603 internal static extern dReal BodyGetLinearDamping(IntPtr body);
603 604
604 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDamping"), SuppressUnmanagedCodeSecurity] 605 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDamping"), SuppressUnmanagedCodeSecurity]
605 public static extern dReal BodyGetAngularDamping(IntPtr body); 606 internal static extern dReal BodyGetAngularDamping(IntPtr body);
606 607
607 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity] 608 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity]
608 public static extern void BodySetDamping(IntPtr body, dReal linear_scale, dReal angular_scale); 609 internal static extern void BodySetDamping(IntPtr body, dReal linear_scale, dReal angular_scale);
609 610
610 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 611 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
611 public static extern void BodySetAngularDampingThreshold(IntPtr body, dReal threshold); 612 internal static extern void BodySetAngularDampingThreshold(IntPtr body, dReal threshold);
612 613
613 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 614 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
614 public static extern void BodySetLinearDampingThreshold(IntPtr body, dReal threshold); 615 internal static extern void BodySetLinearDampingThreshold(IntPtr body, dReal threshold);
615 616
616 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 617 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
617 public static extern dReal BodyGetLinearDampingThreshold(IntPtr body); 618 internal static extern dReal BodyGetLinearDampingThreshold(IntPtr body);
618 619
619 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 620 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
620 public static extern dReal BodyGetAngularDampingThreshold(IntPtr body); 621 internal static extern dReal BodyGetAngularDampingThreshold(IntPtr body);
621 622
622 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetForce"), SuppressUnmanagedCodeSecurity] 623 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetForce"), SuppressUnmanagedCodeSecurity]
623 public static extern void BodySetForce(IntPtr body, dReal x, dReal y, dReal z); 624 internal static extern void BodySetForce(IntPtr body, dReal x, dReal y, dReal z);
624 625
625 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGravityMode"), SuppressUnmanagedCodeSecurity] 626 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGravityMode"), SuppressUnmanagedCodeSecurity]
626 public static extern void BodySetGravityMode(IntPtr body, bool mode); 627 internal static extern void BodySetGravityMode(IntPtr body, bool mode);
627 628
628 /// <summary> 629 /// <summary>
629 /// Sets the Gyroscopic term status on the body specified. 630 /// Sets the Gyroscopic term status on the body specified.
@@ -631,112 +632,112 @@ namespace OdeAPI
631 /// <param name="body">Pointer to body</param> 632 /// <param name="body">Pointer to body</param>
632 /// <param name="enabled">NonZero enabled, Zero disabled</param> 633 /// <param name="enabled">NonZero enabled, Zero disabled</param>
633 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGyroscopicMode"), SuppressUnmanagedCodeSecurity] 634 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGyroscopicMode"), SuppressUnmanagedCodeSecurity]
634 public static extern void dBodySetGyroscopicMode(IntPtr body, int enabled); 635 internal static extern void dBodySetGyroscopicMode(IntPtr body, int enabled);
635 636
636 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearVel"), SuppressUnmanagedCodeSecurity] 637 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearVel"), SuppressUnmanagedCodeSecurity]
637 public static extern void BodySetLinearVel(IntPtr body, dReal x, dReal y, dReal z); 638 internal static extern void BodySetLinearVel(IntPtr body, dReal x, dReal y, dReal z);
638 639
639 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetMass"), SuppressUnmanagedCodeSecurity] 640 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetMass"), SuppressUnmanagedCodeSecurity]
640 public static extern void BodySetMass(IntPtr body, ref Mass mass); 641 internal static extern void BodySetMass(IntPtr body, ref Mass mass);
641 642
642 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetPosition"), SuppressUnmanagedCodeSecurity] 643 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetPosition"), SuppressUnmanagedCodeSecurity]
643 public static extern void BodySetPosition(IntPtr body, dReal x, dReal y, dReal z); 644 internal static extern void BodySetPosition(IntPtr body, dReal x, dReal y, dReal z);
644 645
645 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity] 646 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity]
646 public static extern void BodySetQuaternion(IntPtr body, ref Quaternion q); 647 internal static extern void BodySetQuaternion(IntPtr body, ref Quaternion q);
647 648
648 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity] 649 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity]
649 public static extern void BodySetQuaternion(IntPtr body, ref dReal w); 650 internal static extern void BodySetQuaternion(IntPtr body, ref dReal w);
650 651
651 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity] 652 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity]
652 public static extern void BodySetRotation(IntPtr body, ref Matrix3 R); 653 internal static extern void BodySetRotation(IntPtr body, ref Matrix3 R);
653 654
654 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity] 655 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity]
655 public static extern void BodySetRotation(IntPtr body, ref dReal M00); 656 internal static extern void BodySetRotation(IntPtr body, ref dReal M00);
656 657
657 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetTorque"), SuppressUnmanagedCodeSecurity] 658 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetTorque"), SuppressUnmanagedCodeSecurity]
658 public static extern void BodySetTorque(IntPtr body, dReal x, dReal y, dReal z); 659 internal static extern void BodySetTorque(IntPtr body, dReal x, dReal y, dReal z);
659 660
660 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorFromWorld"), SuppressUnmanagedCodeSecurity] 661 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorFromWorld"), SuppressUnmanagedCodeSecurity]
661 public static extern void BodyVectorFromWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 662 internal static extern void BodyVectorFromWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
662 663
663 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorToWorld"), SuppressUnmanagedCodeSecurity] 664 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyVectorToWorld"), SuppressUnmanagedCodeSecurity]
664 public static extern void BodyVectorToWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result); 665 internal static extern void BodyVectorToWorld(IntPtr body, dReal px, dReal py, dReal pz, out Vector3 result);
665 666
666 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxBox"), SuppressUnmanagedCodeSecurity] 667 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxBox"), SuppressUnmanagedCodeSecurity]
667 public static extern void BoxBox(ref Vector3 p1, ref Matrix3 R1, 668 internal static extern void BoxBox(ref Vector3 p1, ref Matrix3 R1,
668 ref Vector3 side1, ref Vector3 p2, 669 ref Vector3 side1, ref Vector3 p2,
669 ref Matrix3 R2, ref Vector3 side2, 670 ref Matrix3 R2, ref Vector3 side2,
670 ref Vector3 normal, out dReal depth, out int return_code, 671 ref Vector3 normal, out dReal depth, out int return_code,
671 int maxc, out ContactGeom contact, int skip); 672 int maxc, out ContactGeom contact, int skip);
672 673
673 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxTouchesBox"), SuppressUnmanagedCodeSecurity] 674 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxTouchesBox"), SuppressUnmanagedCodeSecurity]
674 public static extern void BoxTouchesBox(ref Vector3 _p1, ref Matrix3 R1, 675 internal static extern void BoxTouchesBox(ref Vector3 _p1, ref Matrix3 R1,
675 ref Vector3 side1, ref Vector3 _p2, 676 ref Vector3 side1, ref Vector3 _p2,
676 ref Matrix3 R2, ref Vector3 side2); 677 ref Matrix3 R2, ref Vector3 side2);
677 678
678 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCleanupODEAllDataForThread"), SuppressUnmanagedCodeSecurity] 679 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCleanupODEAllDataForThread"), SuppressUnmanagedCodeSecurity]
679 public static extern void CleanupODEAllDataForThread(); 680 internal static extern void CleanupODEAllDataForThread();
680 681
681 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dClosestLineSegmentPoints"), SuppressUnmanagedCodeSecurity] 682 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dClosestLineSegmentPoints"), SuppressUnmanagedCodeSecurity]
682 public static extern void ClosestLineSegmentPoints(ref Vector3 a1, ref Vector3 a2, 683 internal static extern void ClosestLineSegmentPoints(ref Vector3 a1, ref Vector3 a2,
683 ref Vector3 b1, ref Vector3 b2, 684 ref Vector3 b1, ref Vector3 b2,
684 ref Vector3 cp1, ref Vector3 cp2); 685 ref Vector3 cp1, ref Vector3 cp2);
685 686
686 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCloseODE"), SuppressUnmanagedCodeSecurity] 687 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCloseODE"), SuppressUnmanagedCodeSecurity]
687 public static extern void CloseODE(); 688 internal static extern void CloseODE();
688 689
689 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity] 690 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity]
690 public static extern int Collide(IntPtr o1, IntPtr o2, int flags, [In, Out] ContactGeom[] contact, int skip); 691 internal static extern int Collide(IntPtr o1, IntPtr o2, int flags, [In, Out] ContactGeom[] contact, int skip);
691 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity] 692 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCollide"), SuppressUnmanagedCodeSecurity]
692 public static extern int CollidePtr(IntPtr o1, IntPtr o2, int flags, IntPtr contactgeomarray, int skip); 693 internal static extern int CollidePtr(IntPtr o1, IntPtr o2, int flags, IntPtr contactgeomarray, int skip);
693 694
694 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dConnectingJoint"), SuppressUnmanagedCodeSecurity] 695 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dConnectingJoint"), SuppressUnmanagedCodeSecurity]
695 public static extern IntPtr ConnectingJoint(IntPtr j1, IntPtr j2); 696 internal static extern IntPtr ConnectingJoint(IntPtr j1, IntPtr j2);
696 697
697 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateBox"), SuppressUnmanagedCodeSecurity] 698 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateBox"), SuppressUnmanagedCodeSecurity]
698 public static extern IntPtr CreateiBox(IntPtr space, dReal lx, dReal ly, dReal lz); 699 internal static extern IntPtr CreateiBox(IntPtr space, dReal lx, dReal ly, dReal lz);
699 public static IntPtr CreateBox(IntPtr space, dReal lx, dReal ly, dReal lz) 700 internal static IntPtr CreateBox(IntPtr space, dReal lx, dReal ly, dReal lz)
700 { 701 {
701 NTotalGeoms++; 702 NTotalGeoms++;
702 return CreateiBox(space, lx, ly, lz); 703 return CreateiBox(space, lx, ly, lz);
703 } 704 }
704 705
705 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCapsule"), SuppressUnmanagedCodeSecurity] 706 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCapsule"), SuppressUnmanagedCodeSecurity]
706 public static extern IntPtr CreateiCapsule(IntPtr space, dReal radius, dReal length); 707 internal static extern IntPtr CreateiCapsule(IntPtr space, dReal radius, dReal length);
707 public static IntPtr CreateCapsule(IntPtr space, dReal radius, dReal length) 708 internal static IntPtr CreateCapsule(IntPtr space, dReal radius, dReal length)
708 { 709 {
709 NTotalGeoms++; 710 NTotalGeoms++;
710 return CreateiCapsule(space, radius, length); 711 return CreateiCapsule(space, radius, length);
711 } 712 }
712 713
713 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateConvex"), SuppressUnmanagedCodeSecurity] 714 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateConvex"), SuppressUnmanagedCodeSecurity]
714 public static extern IntPtr CreateiConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons); 715 internal static extern IntPtr CreateiConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons);
715 public static IntPtr CreateConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons) 716 internal static IntPtr CreateConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons)
716 { 717 {
717 NTotalGeoms++; 718 NTotalGeoms++;
718 return CreateiConvex(space, planes, planeCount, points, pointCount, polygons); 719 return CreateiConvex(space, planes, planeCount, points, pointCount, polygons);
719 } 720 }
720 721
721 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCylinder"), SuppressUnmanagedCodeSecurity] 722 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCylinder"), SuppressUnmanagedCodeSecurity]
722 public static extern IntPtr CreateiCylinder(IntPtr space, dReal radius, dReal length); 723 internal static extern IntPtr CreateiCylinder(IntPtr space, dReal radius, dReal length);
723 public static IntPtr CreateCylinder(IntPtr space, dReal radius, dReal length) 724 internal static IntPtr CreateCylinder(IntPtr space, dReal radius, dReal length)
724 { 725 {
725 NTotalGeoms++; 726 NTotalGeoms++;
726 return CreateiCylinder(space, radius, length); 727 return CreateiCylinder(space, radius, length);
727 } 728 }
728 729
729 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateHeightfield"), SuppressUnmanagedCodeSecurity] 730 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateHeightfield"), SuppressUnmanagedCodeSecurity]
730 public static extern IntPtr CreateiHeightfield(IntPtr space, IntPtr data, int bPlaceable); 731 internal static extern IntPtr CreateiHeightfield(IntPtr space, IntPtr data, int bPlaceable);
731 public static IntPtr CreateHeightfield(IntPtr space, IntPtr data, int bPlaceable) 732 internal static IntPtr CreateHeightfield(IntPtr space, IntPtr data, int bPlaceable)
732 { 733 {
733 NTotalGeoms++; 734 NTotalGeoms++;
734 return CreateiHeightfield(space, data, bPlaceable); 735 return CreateiHeightfield(space, data, bPlaceable);
735 } 736 }
736 737
737 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateOSTerrain"), SuppressUnmanagedCodeSecurity] 738 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateOSTerrain"), SuppressUnmanagedCodeSecurity]
738 public static extern IntPtr CreateiOSTerrain(IntPtr space, IntPtr data, int bPlaceable); 739 internal static extern IntPtr CreateiOSTerrain(IntPtr space, IntPtr data, int bPlaceable);
739 public static IntPtr CreateOSTerrain(IntPtr space, IntPtr data, int bPlaceable) 740 internal static IntPtr CreateOSTerrain(IntPtr space, IntPtr data, int bPlaceable)
740 { 741 {
741 NTotalGeoms++; 742 NTotalGeoms++;
742 return CreateiOSTerrain(space, data, bPlaceable); 743 return CreateiOSTerrain(space, data, bPlaceable);
@@ -747,127 +748,127 @@ namespace OdeAPI
747 748
748 749
749 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeom"), SuppressUnmanagedCodeSecurity] 750 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeom"), SuppressUnmanagedCodeSecurity]
750 public static extern IntPtr CreateiGeom(int classnum); 751 internal static extern IntPtr CreateiGeom(int classnum);
751 public static IntPtr CreateGeom(int classnum) 752 internal static IntPtr CreateGeom(int classnum)
752 { 753 {
753 NTotalGeoms++; 754 NTotalGeoms++;
754 return CreateiGeom(classnum); 755 return CreateiGeom(classnum);
755 } 756 }
756 757
757 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomClass"), SuppressUnmanagedCodeSecurity] 758 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomClass"), SuppressUnmanagedCodeSecurity]
758 public static extern int CreateGeomClass(ref GeomClass classptr); 759 internal static extern int CreateGeomClass(ref GeomClass classptr);
759 760
760 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomTransform"), SuppressUnmanagedCodeSecurity] 761 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomTransform"), SuppressUnmanagedCodeSecurity]
761 public static extern IntPtr CreateGeomTransform(IntPtr space); 762 internal static extern IntPtr CreateGeomTransform(IntPtr space);
762 763
763 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreatePlane"), SuppressUnmanagedCodeSecurity] 764 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreatePlane"), SuppressUnmanagedCodeSecurity]
764 public static extern IntPtr CreateiPlane(IntPtr space, dReal a, dReal b, dReal c, dReal d); 765 internal static extern IntPtr CreateiPlane(IntPtr space, dReal a, dReal b, dReal c, dReal d);
765 public static IntPtr CreatePlane(IntPtr space, dReal a, dReal b, dReal c, dReal d) 766 internal static IntPtr CreatePlane(IntPtr space, dReal a, dReal b, dReal c, dReal d)
766 { 767 {
767 NTotalGeoms++; 768 NTotalGeoms++;
768 return CreateiPlane(space, a, b, c, d); 769 return CreateiPlane(space, a, b, c, d);
769 } 770 }
770 771
771 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateRay"), SuppressUnmanagedCodeSecurity] 772 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateRay"), SuppressUnmanagedCodeSecurity]
772 public static extern IntPtr CreateiRay(IntPtr space, dReal length); 773 internal static extern IntPtr CreateiRay(IntPtr space, dReal length);
773 public static IntPtr CreateRay(IntPtr space, dReal length) 774 internal static IntPtr CreateRay(IntPtr space, dReal length)
774 { 775 {
775 NTotalGeoms++; 776 NTotalGeoms++;
776 return CreateiRay(space, length); 777 return CreateiRay(space, length);
777 } 778 }
778 779
779 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateSphere"), SuppressUnmanagedCodeSecurity] 780 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateSphere"), SuppressUnmanagedCodeSecurity]
780 public static extern IntPtr CreateiSphere(IntPtr space, dReal radius); 781 internal static extern IntPtr CreateiSphere(IntPtr space, dReal radius);
781 public static IntPtr CreateSphere(IntPtr space, dReal radius) 782 internal static IntPtr CreateSphere(IntPtr space, dReal radius)
782 { 783 {
783 NTotalGeoms++; 784 NTotalGeoms++;
784 return CreateiSphere(space, radius); 785 return CreateiSphere(space, radius);
785 } 786 }
786 787
787 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateTriMesh"), SuppressUnmanagedCodeSecurity] 788 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateTriMesh"), SuppressUnmanagedCodeSecurity]
788 public static extern IntPtr CreateiTriMesh(IntPtr space, IntPtr data, 789 internal static extern IntPtr CreateiTriMesh(IntPtr space, IntPtr data,
789 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback); 790 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback);
790 public static IntPtr CreateTriMesh(IntPtr space, IntPtr data, 791 internal static IntPtr CreateTriMesh(IntPtr space, IntPtr data,
791 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback) 792 TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback)
792 { 793 {
793 NTotalGeoms++; 794 NTotalGeoms++;
794 return CreateiTriMesh(space, data, callback, arrayCallback, rayCallback); 795 return CreateiTriMesh(space, data, callback, arrayCallback, rayCallback);
795 } 796 }
796 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDot"), SuppressUnmanagedCodeSecurity] 797 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDot"), SuppressUnmanagedCodeSecurity]
797 public static extern dReal Dot(ref dReal X0, ref dReal X1, int n); 798 internal static extern dReal Dot(ref dReal X0, ref dReal X1, int n);
798 799
799 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDQfromW"), SuppressUnmanagedCodeSecurity] 800 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDQfromW"), SuppressUnmanagedCodeSecurity]
800 public static extern void DQfromW(dReal[] dq, ref Vector3 w, ref Quaternion q); 801 internal static extern void DQfromW(dReal[] dq, ref Vector3 w, ref Quaternion q);
801 802
802 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorCholesky"), SuppressUnmanagedCodeSecurity] 803 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorCholesky"), SuppressUnmanagedCodeSecurity]
803 public static extern int FactorCholesky(ref dReal A00, int n); 804 internal static extern int FactorCholesky(ref dReal A00, int n);
804 805
805 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorLDLT"), SuppressUnmanagedCodeSecurity] 806 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorLDLT"), SuppressUnmanagedCodeSecurity]
806 public static extern void FactorLDLT(ref dReal A, out dReal d, int n, int nskip); 807 internal static extern void FactorLDLT(ref dReal A, out dReal d, int n, int nskip);
807 808
808 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity] 809 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity]
809 public static extern void GeomBoxGetLengths(IntPtr geom, out Vector3 len); 810 internal static extern void GeomBoxGetLengths(IntPtr geom, out Vector3 len);
810 811
811 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity] 812 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity]
812 public static extern void GeomBoxGetLengths(IntPtr geom, out dReal x); 813 internal static extern void GeomBoxGetLengths(IntPtr geom, out dReal x);
813 814
814 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxPointDepth"), SuppressUnmanagedCodeSecurity] 815 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxPointDepth"), SuppressUnmanagedCodeSecurity]
815 public static extern dReal GeomBoxPointDepth(IntPtr geom, dReal x, dReal y, dReal z); 816 internal static extern dReal GeomBoxPointDepth(IntPtr geom, dReal x, dReal y, dReal z);
816 817
817 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxSetLengths"), SuppressUnmanagedCodeSecurity] 818 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxSetLengths"), SuppressUnmanagedCodeSecurity]
818 public static extern void GeomBoxSetLengths(IntPtr geom, dReal x, dReal y, dReal z); 819 internal static extern void GeomBoxSetLengths(IntPtr geom, dReal x, dReal y, dReal z);
819 820
820 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleGetParams"), SuppressUnmanagedCodeSecurity] 821 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleGetParams"), SuppressUnmanagedCodeSecurity]
821 public static extern void GeomCapsuleGetParams(IntPtr geom, out dReal radius, out dReal length); 822 internal static extern void GeomCapsuleGetParams(IntPtr geom, out dReal radius, out dReal length);
822 823
823 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsulePointDepth"), SuppressUnmanagedCodeSecurity] 824 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsulePointDepth"), SuppressUnmanagedCodeSecurity]
824 public static extern dReal GeomCapsulePointDepth(IntPtr geom, dReal x, dReal y, dReal z); 825 internal static extern dReal GeomCapsulePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
825 826
826 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleSetParams"), SuppressUnmanagedCodeSecurity] 827 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleSetParams"), SuppressUnmanagedCodeSecurity]
827 public static extern void GeomCapsuleSetParams(IntPtr geom, dReal radius, dReal length); 828 internal static extern void GeomCapsuleSetParams(IntPtr geom, dReal radius, dReal length);
828 829
829 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomClearOffset"), SuppressUnmanagedCodeSecurity] 830 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomClearOffset"), SuppressUnmanagedCodeSecurity]
830 public static extern void GeomClearOffset(IntPtr geom); 831 internal static extern void GeomClearOffset(IntPtr geom);
831 832
832 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity] 833 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity]
833 public static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref Vector3 pos); 834 internal static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref Vector3 pos);
834 835
835 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity] 836 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity]
836 public static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref dReal X); 837 internal static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref dReal X);
837 838
838 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 839 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
839 public static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref Quaternion Q); 840 internal static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref Quaternion Q);
840 841
841 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 842 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
842 public static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref dReal X); 843 internal static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref dReal X);
843 844
844 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity] 845 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity]
845 public static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref Matrix3 R); 846 internal static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref Matrix3 R);
846 847
847 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity] 848 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity]
848 public static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref dReal M00); 849 internal static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref dReal M00);
849 850
850 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity] 851 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity]
851 public static extern void GeomCopyPosition(IntPtr geom, out Vector3 pos); 852 internal static extern void GeomCopyPosition(IntPtr geom, out Vector3 pos);
852 853
853 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity] 854 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity]
854 public static extern void GeomCopyPosition(IntPtr geom, out dReal X); 855 internal static extern void GeomCopyPosition(IntPtr geom, out dReal X);
855 856
856 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity] 857 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity]
857 public static extern void GeomCopyRotation(IntPtr geom, out Matrix3 R); 858 internal static extern void GeomCopyRotation(IntPtr geom, out Matrix3 R);
858 859
859 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity] 860 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity]
860 public static extern void GeomCopyRotation(IntPtr geom, out dReal M00); 861 internal static extern void GeomCopyRotation(IntPtr geom, out dReal M00);
861 862
862 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderGetParams"), SuppressUnmanagedCodeSecurity] 863 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderGetParams"), SuppressUnmanagedCodeSecurity]
863 public static extern void GeomCylinderGetParams(IntPtr geom, out dReal radius, out dReal length); 864 internal static extern void GeomCylinderGetParams(IntPtr geom, out dReal radius, out dReal length);
864 865
865 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderSetParams"), SuppressUnmanagedCodeSecurity] 866 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderSetParams"), SuppressUnmanagedCodeSecurity]
866 public static extern void GeomCylinderSetParams(IntPtr geom, dReal radius, dReal length); 867 internal static extern void GeomCylinderSetParams(IntPtr geom, dReal radius, dReal length);
867 868
868 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDestroy"), SuppressUnmanagedCodeSecurity] 869 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDestroy"), SuppressUnmanagedCodeSecurity]
869 public static extern void GeomiDestroy(IntPtr geom); 870 internal static extern void GeomiDestroy(IntPtr geom);
870 public static void GeomDestroy(IntPtr geom) 871 internal static void GeomDestroy(IntPtr geom)
871 { 872 {
872 NTotalGeoms--; 873 NTotalGeoms--;
873 GeomiDestroy(geom); 874 GeomiDestroy(geom);
@@ -875,64 +876,64 @@ namespace OdeAPI
875 876
876 877
877 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDisable"), SuppressUnmanagedCodeSecurity] 878 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDisable"), SuppressUnmanagedCodeSecurity]
878 public static extern void GeomDisable(IntPtr geom); 879 internal static extern void GeomDisable(IntPtr geom);
879 880
880 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomEnable"), SuppressUnmanagedCodeSecurity] 881 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomEnable"), SuppressUnmanagedCodeSecurity]
881 public static extern void GeomEnable(IntPtr geom); 882 internal static extern void GeomEnable(IntPtr geom);
882 883
883 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity] 884 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity]
884 public static extern void GeomGetAABB(IntPtr geom, out AABB aabb); 885 internal static extern void GeomGetAABB(IntPtr geom, out AABB aabb);
885 886
886 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity] 887 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity]
887 public static extern void GeomGetAABB(IntPtr geom, out dReal minX); 888 internal static extern void GeomGetAABB(IntPtr geom, out dReal minX);
888 889
889 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetBody"), SuppressUnmanagedCodeSecurity] 890 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetBody"), SuppressUnmanagedCodeSecurity]
890 public static extern IntPtr GeomGetBody(IntPtr geom); 891 internal static extern IntPtr GeomGetBody(IntPtr geom);
891 892
892 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCategoryBits"), SuppressUnmanagedCodeSecurity] 893 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCategoryBits"), SuppressUnmanagedCodeSecurity]
893 public static extern uint GeomGetCategoryBits(IntPtr geom); 894 internal static extern uint GeomGetCategoryBits(IntPtr geom);
894 895
895 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClassData"), SuppressUnmanagedCodeSecurity] 896 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClassData"), SuppressUnmanagedCodeSecurity]
896 public static extern IntPtr GeomGetClassData(IntPtr geom); 897 internal static extern IntPtr GeomGetClassData(IntPtr geom);
897 898
898 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCollideBits"), SuppressUnmanagedCodeSecurity] 899 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCollideBits"), SuppressUnmanagedCodeSecurity]
899 public static extern uint GeomGetCollideBits(IntPtr geom); 900 internal static extern uint GeomGetCollideBits(IntPtr geom);
900 901
901 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClass"), SuppressUnmanagedCodeSecurity] 902 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClass"), SuppressUnmanagedCodeSecurity]
902 public static extern GeomClassID GeomGetClass(IntPtr geom); 903 internal static extern GeomClassID GeomGetClass(IntPtr geom);
903 904
904 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetData"), SuppressUnmanagedCodeSecurity] 905 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetData"), SuppressUnmanagedCodeSecurity]
905 public static extern IntPtr GeomGetData(IntPtr geom); 906 internal static extern IntPtr GeomGetData(IntPtr geom);
906 907
907 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetPosition"), SuppressUnmanagedCodeSecurity] 908 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetPosition"), SuppressUnmanagedCodeSecurity]
908 public extern unsafe static Vector3* GeomGetOffsetPositionUnsafe(IntPtr geom); 909 internal extern unsafe static Vector3* GeomGetOffsetPositionUnsafe(IntPtr geom);
909 public static Vector3 GeomGetOffsetPosition(IntPtr geom) 910 internal static Vector3 GeomGetOffsetPosition(IntPtr geom)
910 { 911 {
911 unsafe { return *(GeomGetOffsetPositionUnsafe(geom)); } 912 unsafe { return *(GeomGetOffsetPositionUnsafe(geom)); }
912 } 913 }
913 914
914 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetRotation"), SuppressUnmanagedCodeSecurity] 915 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetRotation"), SuppressUnmanagedCodeSecurity]
915 public extern unsafe static Matrix3* GeomGetOffsetRotationUnsafe(IntPtr geom); 916 internal extern unsafe static Matrix3* GeomGetOffsetRotationUnsafe(IntPtr geom);
916 public static Matrix3 GeomGetOffsetRotation(IntPtr geom) 917 internal static Matrix3 GeomGetOffsetRotation(IntPtr geom)
917 { 918 {
918 unsafe { return *(GeomGetOffsetRotationUnsafe(geom)); } 919 unsafe { return *(GeomGetOffsetRotationUnsafe(geom)); }
919 } 920 }
920 921
921 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetPosition"), SuppressUnmanagedCodeSecurity] 922 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetPosition"), SuppressUnmanagedCodeSecurity]
922 public extern unsafe static Vector3* GeomGetPositionUnsafe(IntPtr geom); 923 internal extern unsafe static Vector3* GeomGetPositionUnsafe(IntPtr geom);
923 public static Vector3 GeomGetPosition(IntPtr geom) 924 internal static Vector3 GeomGetPosition(IntPtr geom)
924 { 925 {
925 unsafe { return *(GeomGetPositionUnsafe(geom)); } 926 unsafe { return *(GeomGetPositionUnsafe(geom)); }
926 } 927 }
927 public static OMV.Vector3 GeomGetPositionOMV(IntPtr geom) 928 internal static OMV.Vector3 GeomGetPositionOMV(IntPtr geom)
928 { 929 {
929 Vector3 vtmp = GeomGetPosition(geom); 930 Vector3 vtmp = GeomGetPosition(geom);
930 return new OMV.Vector3(vtmp.X, vtmp.Y, vtmp.Z); 931 return new OMV.Vector3(vtmp.X, vtmp.Y, vtmp.Z);
931 } 932 }
932 933
933 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity] 934 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity]
934 public static extern void GeomCopyQuaternion(IntPtr geom, out Quaternion q); 935 internal static extern void GeomCopyQuaternion(IntPtr geom, out Quaternion q);
935 public static OMV.Quaternion GeomGetQuaternionOMV(IntPtr geom) 936 internal static OMV.Quaternion GeomGetQuaternionOMV(IntPtr geom)
936 { 937 {
937 Quaternion qtmp; 938 Quaternion qtmp;
938 GeomCopyQuaternion(geom, out qtmp); 939 GeomCopyQuaternion(geom, out qtmp);
@@ -940,393 +941,393 @@ namespace OdeAPI
940 } 941 }
941 942
942 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity] 943 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity]
943 public static extern void GeomCopyQuaternion(IntPtr geom, out dReal X); 944 internal static extern void GeomCopyQuaternion(IntPtr geom, out dReal X);
944 945
945 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetRotation"), SuppressUnmanagedCodeSecurity] 946 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetRotation"), SuppressUnmanagedCodeSecurity]
946 public extern unsafe static Matrix3* GeomGetRotationUnsafe(IntPtr geom); 947 internal extern unsafe static Matrix3* GeomGetRotationUnsafe(IntPtr geom);
947 public static Matrix3 GeomGetRotation(IntPtr geom) 948 internal static Matrix3 GeomGetRotation(IntPtr geom)
948 { 949 {
949 unsafe { return *(GeomGetRotationUnsafe(geom)); } 950 unsafe { return *(GeomGetRotationUnsafe(geom)); }
950 } 951 }
951 952
952 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetSpace"), SuppressUnmanagedCodeSecurity] 953 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetSpace"), SuppressUnmanagedCodeSecurity]
953 public static extern IntPtr GeomGetSpace(IntPtr geom); 954 internal static extern IntPtr GeomGetSpace(IntPtr geom);
954 955
955 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity] 956 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity]
956 public static extern void GeomHeightfieldDataBuildByte(IntPtr d, byte[] pHeightData, int bCopyHeightData, 957 internal static extern void GeomHeightfieldDataBuildByte(IntPtr d, byte[] pHeightData, int bCopyHeightData,
957 dReal width, dReal depth, int widthSamples, int depthSamples, 958 dReal width, dReal depth, int widthSamples, int depthSamples,
958 dReal scale, dReal offset, dReal thickness, int bWrap); 959 dReal scale, dReal offset, dReal thickness, int bWrap);
959 960
960 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity] 961 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity]
961 public static extern void GeomHeightfieldDataBuildByte(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 962 internal static extern void GeomHeightfieldDataBuildByte(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
962 dReal width, dReal depth, int widthSamples, int depthSamples, 963 dReal width, dReal depth, int widthSamples, int depthSamples,
963 dReal scale, dReal offset, dReal thickness, int bWrap); 964 dReal scale, dReal offset, dReal thickness, int bWrap);
964 965
965 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildCallback"), SuppressUnmanagedCodeSecurity] 966 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildCallback"), SuppressUnmanagedCodeSecurity]
966 public static extern void GeomHeightfieldDataBuildCallback(IntPtr d, IntPtr pUserData, HeightfieldGetHeight pCallback, 967 internal static extern void GeomHeightfieldDataBuildCallback(IntPtr d, IntPtr pUserData, HeightfieldGetHeight pCallback,
967 dReal width, dReal depth, int widthSamples, int depthSamples, 968 dReal width, dReal depth, int widthSamples, int depthSamples,
968 dReal scale, dReal offset, dReal thickness, int bWrap); 969 dReal scale, dReal offset, dReal thickness, int bWrap);
969 970
970 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity] 971 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
971 public static extern void GeomHeightfieldDataBuildShort(IntPtr d, ushort[] pHeightData, int bCopyHeightData, 972 internal static extern void GeomHeightfieldDataBuildShort(IntPtr d, ushort[] pHeightData, int bCopyHeightData,
972 dReal width, dReal depth, int widthSamples, int depthSamples, 973 dReal width, dReal depth, int widthSamples, int depthSamples,
973 dReal scale, dReal offset, dReal thickness, int bWrap); 974 dReal scale, dReal offset, dReal thickness, int bWrap);
974 975
975 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity] 976 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
976 public static extern void GeomHeightfieldDataBuildShort(IntPtr d, short[] pHeightData, int bCopyHeightData, 977 internal static extern void GeomHeightfieldDataBuildShort(IntPtr d, short[] pHeightData, int bCopyHeightData,
977 dReal width, dReal depth, int widthSamples, int depthSamples, 978 dReal width, dReal depth, int widthSamples, int depthSamples,
978 dReal scale, dReal offset, dReal thickness, int bWrap); 979 dReal scale, dReal offset, dReal thickness, int bWrap);
979 980
980 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity] 981 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
981 public static extern void GeomHeightfieldDataBuildShort(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 982 internal static extern void GeomHeightfieldDataBuildShort(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
982 dReal width, dReal depth, int widthSamples, int depthSamples, 983 dReal width, dReal depth, int widthSamples, int depthSamples,
983 dReal scale, dReal offset, dReal thickness, int bWrap); 984 dReal scale, dReal offset, dReal thickness, int bWrap);
984 985
985 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity] 986 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity]
986 public static extern void GeomHeightfieldDataBuildSingle(IntPtr d, float[] pHeightData, int bCopyHeightData, 987 internal static extern void GeomHeightfieldDataBuildSingle(IntPtr d, float[] pHeightData, int bCopyHeightData,
987 dReal width, dReal depth, int widthSamples, int depthSamples, 988 dReal width, dReal depth, int widthSamples, int depthSamples,
988 dReal scale, dReal offset, dReal thickness, int bWrap); 989 dReal scale, dReal offset, dReal thickness, int bWrap);
989 990
990 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity] 991 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity]
991 public static extern void GeomHeightfieldDataBuildSingle(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 992 internal static extern void GeomHeightfieldDataBuildSingle(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
992 dReal width, dReal depth, int widthSamples, int depthSamples, 993 dReal width, dReal depth, int widthSamples, int depthSamples,
993 dReal scale, dReal offset, dReal thickness, int bWrap); 994 dReal scale, dReal offset, dReal thickness, int bWrap);
994 995
995 996
996 997
997 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity] 998 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity]
998 public static extern void GeomHeightfieldDataBuildDouble(IntPtr d, double[] pHeightData, int bCopyHeightData, 999 internal static extern void GeomHeightfieldDataBuildDouble(IntPtr d, double[] pHeightData, int bCopyHeightData,
999 dReal width, dReal depth, int widthSamples, int depthSamples, 1000 dReal width, dReal depth, int widthSamples, int depthSamples,
1000 dReal scale, dReal offset, dReal thickness, int bWrap); 1001 dReal scale, dReal offset, dReal thickness, int bWrap);
1001 1002
1002 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity] 1003 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1003 public static extern void GeomHeightfieldDataBuildDouble(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 1004 internal static extern void GeomHeightfieldDataBuildDouble(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
1004 dReal width, dReal depth, int widthSamples, int depthSamples, 1005 dReal width, dReal depth, int widthSamples, int depthSamples,
1005 dReal scale, dReal offset, dReal thickness, int bWrap); 1006 dReal scale, dReal offset, dReal thickness, int bWrap);
1006 1007
1007 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataCreate"), SuppressUnmanagedCodeSecurity] 1008 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataCreate"), SuppressUnmanagedCodeSecurity]
1008 public static extern IntPtr GeomHeightfieldDataCreate(); 1009 internal static extern IntPtr GeomHeightfieldDataCreate();
1009 1010
1010 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataDestroy"), SuppressUnmanagedCodeSecurity] 1011 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataDestroy"), SuppressUnmanagedCodeSecurity]
1011 public static extern void GeomHeightfieldDataDestroy(IntPtr d); 1012 internal static extern void GeomHeightfieldDataDestroy(IntPtr d);
1012 1013
1013 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataSetBounds"), SuppressUnmanagedCodeSecurity] 1014 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataSetBounds"), SuppressUnmanagedCodeSecurity]
1014 public static extern void GeomHeightfieldDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight); 1015 internal static extern void GeomHeightfieldDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
1015 1016
1016 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldGetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1017 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1017 public static extern IntPtr GeomHeightfieldGetHeightfieldData(IntPtr g); 1018 internal static extern IntPtr GeomHeightfieldGetHeightfieldData(IntPtr g);
1018 1019
1019 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldSetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1020 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1020 public static extern void GeomHeightfieldSetHeightfieldData(IntPtr g, IntPtr d); 1021 internal static extern void GeomHeightfieldSetHeightfieldData(IntPtr g, IntPtr d);
1021 1022
1022 1023
1023 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomUbitTerrainDataBuild"), SuppressUnmanagedCodeSecurity] 1024 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomUbitTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
1024 public static extern void GeomOSTerrainDataBuild(IntPtr d, float[] pHeightData, int bCopyHeightData, 1025 internal static extern void GeomOSTerrainDataBuild(IntPtr d, float[] pHeightData, int bCopyHeightData,
1025 dReal sampleSize, int widthSamples, int depthSamples, 1026 dReal sampleSize, int widthSamples, int depthSamples,
1026 dReal offset, dReal thickness, int bWrap); 1027 dReal offset, dReal thickness, int bWrap);
1027 1028
1028 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataBuild"), SuppressUnmanagedCodeSecurity] 1029 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
1029 public static extern void GeomOSTerrainDataBuild(IntPtr d, IntPtr pHeightData, int bCopyHeightData, 1030 internal static extern void GeomOSTerrainDataBuild(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
1030 dReal sampleSize, int widthSamples, int depthSamples, 1031 dReal sampleSize, int widthSamples, int depthSamples,
1031 dReal thickness, int bWrap); 1032 dReal thickness, int bWrap);
1032 1033
1033 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataCreate"), SuppressUnmanagedCodeSecurity] 1034 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataCreate"), SuppressUnmanagedCodeSecurity]
1034 public static extern IntPtr GeomOSTerrainDataCreate(); 1035 internal static extern IntPtr GeomOSTerrainDataCreate();
1035 1036
1036 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataDestroy"), SuppressUnmanagedCodeSecurity] 1037 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataDestroy"), SuppressUnmanagedCodeSecurity]
1037 public static extern void GeomOSTerrainDataDestroy(IntPtr d); 1038 internal static extern void GeomOSTerrainDataDestroy(IntPtr d);
1038 1039
1039 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataSetBounds"), SuppressUnmanagedCodeSecurity] 1040 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataSetBounds"), SuppressUnmanagedCodeSecurity]
1040 public static extern void GeomOSTerrainDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight); 1041 internal static extern void GeomOSTerrainDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
1041 1042
1042 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainGetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1043 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1043 public static extern IntPtr GeomOSTerrainGetHeightfieldData(IntPtr g); 1044 internal static extern IntPtr GeomOSTerrainGetHeightfieldData(IntPtr g);
1044 1045
1045 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainSetHeightfieldData"), SuppressUnmanagedCodeSecurity] 1046 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1046 public static extern void GeomOSTerrainSetHeightfieldData(IntPtr g, IntPtr d); 1047 internal static extern void GeomOSTerrainSetHeightfieldData(IntPtr g, IntPtr d);
1047 1048
1048 1049
1049 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsEnabled"), SuppressUnmanagedCodeSecurity] 1050 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsEnabled"), SuppressUnmanagedCodeSecurity]
1050 public static extern bool GeomIsEnabled(IntPtr geom); 1051 internal static extern bool GeomIsEnabled(IntPtr geom);
1051 1052
1052 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsOffset"), SuppressUnmanagedCodeSecurity] 1053 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsOffset"), SuppressUnmanagedCodeSecurity]
1053 public static extern bool GeomIsOffset(IntPtr geom); 1054 internal static extern bool GeomIsOffset(IntPtr geom);
1054 1055
1055 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsSpace"), SuppressUnmanagedCodeSecurity] 1056 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsSpace"), SuppressUnmanagedCodeSecurity]
1056 public static extern bool GeomIsSpace(IntPtr geom); 1057 internal static extern bool GeomIsSpace(IntPtr geom);
1057 1058
1058 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity] 1059 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity]
1059 public static extern void GeomPlaneGetParams(IntPtr geom, ref Vector4 result); 1060 internal static extern void GeomPlaneGetParams(IntPtr geom, ref Vector4 result);
1060 1061
1061 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity] 1062 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity]
1062 public static extern void GeomPlaneGetParams(IntPtr geom, ref dReal A); 1063 internal static extern void GeomPlaneGetParams(IntPtr geom, ref dReal A);
1063 1064
1064 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlanePointDepth"), SuppressUnmanagedCodeSecurity] 1065 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlanePointDepth"), SuppressUnmanagedCodeSecurity]
1065 public static extern dReal GeomPlanePointDepth(IntPtr geom, dReal x, dReal y, dReal z); 1066 internal static extern dReal GeomPlanePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
1066 1067
1067 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneSetParams"), SuppressUnmanagedCodeSecurity] 1068 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneSetParams"), SuppressUnmanagedCodeSecurity]
1068 public static extern void GeomPlaneSetParams(IntPtr plane, dReal a, dReal b, dReal c, dReal d); 1069 internal static extern void GeomPlaneSetParams(IntPtr plane, dReal a, dReal b, dReal c, dReal d);
1069 1070
1070 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity] 1071 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity]
1071 public static extern void GeomRayGet(IntPtr ray, ref Vector3 start, ref Vector3 dir); 1072 internal static extern void GeomRayGet(IntPtr ray, ref Vector3 start, ref Vector3 dir);
1072 1073
1073 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity] 1074 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity]
1074 public static extern void GeomRayGet(IntPtr ray, ref dReal startX, ref dReal dirX); 1075 internal static extern void GeomRayGet(IntPtr ray, ref dReal startX, ref dReal dirX);
1075 1076
1076 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetClosestHit"), SuppressUnmanagedCodeSecurity] 1077 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetClosestHit"), SuppressUnmanagedCodeSecurity]
1077 public static extern int GeomRayGetClosestHit(IntPtr ray); 1078 internal static extern int GeomRayGetClosestHit(IntPtr ray);
1078 1079
1079 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetLength"), SuppressUnmanagedCodeSecurity] 1080 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetLength"), SuppressUnmanagedCodeSecurity]
1080 public static extern dReal GeomRayGetLength(IntPtr ray); 1081 internal static extern dReal GeomRayGetLength(IntPtr ray);
1081 1082
1082 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetParams"), SuppressUnmanagedCodeSecurity] 1083 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetParams"), SuppressUnmanagedCodeSecurity]
1083 public static extern dReal GeomRayGetParams(IntPtr g, out int firstContact, out int backfaceCull); 1084 internal static extern dReal GeomRayGetParams(IntPtr g, out int firstContact, out int backfaceCull);
1084 1085
1085 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySet"), SuppressUnmanagedCodeSecurity] 1086 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySet"), SuppressUnmanagedCodeSecurity]
1086 public static extern void GeomRaySet(IntPtr ray, dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz); 1087 internal static extern void GeomRaySet(IntPtr ray, dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz);
1087 1088
1088 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetClosestHit"), SuppressUnmanagedCodeSecurity] 1089 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetClosestHit"), SuppressUnmanagedCodeSecurity]
1089 public static extern void GeomRaySetClosestHit(IntPtr ray, int closestHit); 1090 internal static extern void GeomRaySetClosestHit(IntPtr ray, int closestHit);
1090 1091
1091 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetLength"), SuppressUnmanagedCodeSecurity] 1092 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetLength"), SuppressUnmanagedCodeSecurity]
1092 public static extern void GeomRaySetLength(IntPtr ray, dReal length); 1093 internal static extern void GeomRaySetLength(IntPtr ray, dReal length);
1093 1094
1094 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetParams"), SuppressUnmanagedCodeSecurity] 1095 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetParams"), SuppressUnmanagedCodeSecurity]
1095 public static extern void GeomRaySetParams(IntPtr ray, int firstContact, int backfaceCull); 1096 internal static extern void GeomRaySetParams(IntPtr ray, int firstContact, int backfaceCull);
1096 1097
1097 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetBody"), SuppressUnmanagedCodeSecurity] 1098 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetBody"), SuppressUnmanagedCodeSecurity]
1098 public static extern void GeomSetBody(IntPtr geom, IntPtr body); 1099 internal static extern void GeomSetBody(IntPtr geom, IntPtr body);
1099 1100
1100 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCategoryBits"), SuppressUnmanagedCodeSecurity] 1101 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCategoryBits"), SuppressUnmanagedCodeSecurity]
1101 public static extern void GeomSetCategoryBits(IntPtr geom, uint bits); 1102 internal static extern void GeomSetCategoryBits(IntPtr geom, uint bits);
1102 1103
1103 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCollideBits"), SuppressUnmanagedCodeSecurity] 1104 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCollideBits"), SuppressUnmanagedCodeSecurity]
1104 public static extern void GeomSetCollideBits(IntPtr geom, uint bits); 1105 internal static extern void GeomSetCollideBits(IntPtr geom, uint bits);
1105 1106
1106 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetConvex"), SuppressUnmanagedCodeSecurity] 1107 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetConvex"), SuppressUnmanagedCodeSecurity]
1107 public static extern IntPtr GeomSetConvex(IntPtr geom, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons); 1108 internal static extern IntPtr GeomSetConvex(IntPtr geom, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons);
1108 1109
1109 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetData"), SuppressUnmanagedCodeSecurity] 1110 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetData"), SuppressUnmanagedCodeSecurity]
1110 public static extern void GeomSetData(IntPtr geom, IntPtr data); 1111 internal static extern void GeomSetData(IntPtr geom, IntPtr data);
1111 1112
1112 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetPosition"), SuppressUnmanagedCodeSecurity] 1113 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetPosition"), SuppressUnmanagedCodeSecurity]
1113 public static extern void GeomSetOffsetPosition(IntPtr geom, dReal x, dReal y, dReal z); 1114 internal static extern void GeomSetOffsetPosition(IntPtr geom, dReal x, dReal y, dReal z);
1114 1115
1115 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 1116 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
1116 public static extern void GeomSetOffsetQuaternion(IntPtr geom, ref Quaternion Q); 1117 internal static extern void GeomSetOffsetQuaternion(IntPtr geom, ref Quaternion Q);
1117 1118
1118 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity] 1119 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
1119 public static extern void GeomSetOffsetQuaternion(IntPtr geom, ref dReal X); 1120 internal static extern void GeomSetOffsetQuaternion(IntPtr geom, ref dReal X);
1120 1121
1121 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity] 1122 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity]
1122 public static extern void GeomSetOffsetRotation(IntPtr geom, ref Matrix3 R); 1123 internal static extern void GeomSetOffsetRotation(IntPtr geom, ref Matrix3 R);
1123 1124
1124 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity] 1125 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity]
1125 public static extern void GeomSetOffsetRotation(IntPtr geom, ref dReal M00); 1126 internal static extern void GeomSetOffsetRotation(IntPtr geom, ref dReal M00);
1126 1127
1127 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldPosition"), SuppressUnmanagedCodeSecurity] 1128 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldPosition"), SuppressUnmanagedCodeSecurity]
1128 public static extern void GeomSetOffsetWorldPosition(IntPtr geom, dReal x, dReal y, dReal z); 1129 internal static extern void GeomSetOffsetWorldPosition(IntPtr geom, dReal x, dReal y, dReal z);
1129 1130
1130 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity] 1131 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity]
1131 public static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref Quaternion Q); 1132 internal static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref Quaternion Q);
1132 1133
1133 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity] 1134 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity]
1134 public static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref dReal X); 1135 internal static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref dReal X);
1135 1136
1136 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity] 1137 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity]
1137 public static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref Matrix3 R); 1138 internal static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref Matrix3 R);
1138 1139
1139 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity] 1140 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity]
1140 public static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref dReal M00); 1141 internal static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref dReal M00);
1141 1142
1142 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetPosition"), SuppressUnmanagedCodeSecurity] 1143 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetPosition"), SuppressUnmanagedCodeSecurity]
1143 public static extern void GeomSetPosition(IntPtr geom, dReal x, dReal y, dReal z); 1144 internal static extern void GeomSetPosition(IntPtr geom, dReal x, dReal y, dReal z);
1144 1145
1145 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity] 1146 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity]
1146 public static extern void GeomSetQuaternion(IntPtr geom, ref Quaternion quat); 1147 internal static extern void GeomSetQuaternion(IntPtr geom, ref Quaternion quat);
1147 1148
1148 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity] 1149 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity]
1149 public static extern void GeomSetQuaternion(IntPtr geom, ref dReal w); 1150 internal static extern void GeomSetQuaternion(IntPtr geom, ref dReal w);
1150 1151
1151 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity] 1152 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity]
1152 public static extern void GeomSetRotation(IntPtr geom, ref Matrix3 R); 1153 internal static extern void GeomSetRotation(IntPtr geom, ref Matrix3 R);
1153 1154
1154 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity] 1155 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity]
1155 public static extern void GeomSetRotation(IntPtr geom, ref dReal M00); 1156 internal static extern void GeomSetRotation(IntPtr geom, ref dReal M00);
1156 1157
1157 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereGetRadius"), SuppressUnmanagedCodeSecurity] 1158 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereGetRadius"), SuppressUnmanagedCodeSecurity]
1158 public static extern dReal GeomSphereGetRadius(IntPtr geom); 1159 internal static extern dReal GeomSphereGetRadius(IntPtr geom);
1159 1160
1160 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSpherePointDepth"), SuppressUnmanagedCodeSecurity] 1161 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSpherePointDepth"), SuppressUnmanagedCodeSecurity]
1161 public static extern dReal GeomSpherePointDepth(IntPtr geom, dReal x, dReal y, dReal z); 1162 internal static extern dReal GeomSpherePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
1162 1163
1163 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereSetRadius"), SuppressUnmanagedCodeSecurity] 1164 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereSetRadius"), SuppressUnmanagedCodeSecurity]
1164 public static extern void GeomSphereSetRadius(IntPtr geom, dReal radius); 1165 internal static extern void GeomSphereSetRadius(IntPtr geom, dReal radius);
1165 1166
1166 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetCleanup"), SuppressUnmanagedCodeSecurity] 1167 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetCleanup"), SuppressUnmanagedCodeSecurity]
1167 public static extern int GeomTransformGetCleanup(IntPtr geom); 1168 internal static extern int GeomTransformGetCleanup(IntPtr geom);
1168 1169
1169 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetGeom"), SuppressUnmanagedCodeSecurity] 1170 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetGeom"), SuppressUnmanagedCodeSecurity]
1170 public static extern IntPtr GeomTransformGetGeom(IntPtr geom); 1171 internal static extern IntPtr GeomTransformGetGeom(IntPtr geom);
1171 1172
1172 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetInfo"), SuppressUnmanagedCodeSecurity] 1173 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetInfo"), SuppressUnmanagedCodeSecurity]
1173 public static extern int GeomTransformGetInfo(IntPtr geom); 1174 internal static extern int GeomTransformGetInfo(IntPtr geom);
1174 1175
1175 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetCleanup"), SuppressUnmanagedCodeSecurity] 1176 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetCleanup"), SuppressUnmanagedCodeSecurity]
1176 public static extern void GeomTransformSetCleanup(IntPtr geom, int mode); 1177 internal static extern void GeomTransformSetCleanup(IntPtr geom, int mode);
1177 1178
1178 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetGeom"), SuppressUnmanagedCodeSecurity] 1179 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetGeom"), SuppressUnmanagedCodeSecurity]
1179 public static extern void GeomTransformSetGeom(IntPtr geom, IntPtr obj); 1180 internal static extern void GeomTransformSetGeom(IntPtr geom, IntPtr obj);
1180 1181
1181 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetInfo"), SuppressUnmanagedCodeSecurity] 1182 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetInfo"), SuppressUnmanagedCodeSecurity]
1182 public static extern void GeomTransformSetInfo(IntPtr geom, int info); 1183 internal static extern void GeomTransformSetInfo(IntPtr geom, int info);
1183 1184
1184 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity] 1185 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1185 public static extern void GeomTriMeshDataBuildDouble(IntPtr d, 1186 internal static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1186 double[] vertices, int vertexStride, int vertexCount, 1187 double[] vertices, int vertexStride, int vertexCount,
1187 int[] indices, int indexCount, int triStride); 1188 int[] indices, int indexCount, int triStride);
1188 1189
1189 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity] 1190 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1190 public static extern void GeomTriMeshDataBuildDouble(IntPtr d, 1191 internal static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1191 IntPtr vertices, int vertexStride, int vertexCount, 1192 IntPtr vertices, int vertexStride, int vertexCount,
1192 IntPtr indices, int indexCount, int triStride); 1193 IntPtr indices, int indexCount, int triStride);
1193 1194
1194 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity] 1195 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity]
1195 public static extern void GeomTriMeshDataBuildDouble1(IntPtr d, 1196 internal static extern void GeomTriMeshDataBuildDouble1(IntPtr d,
1196 double[] vertices, int vertexStride, int vertexCount, 1197 double[] vertices, int vertexStride, int vertexCount,
1197 int[] indices, int indexCount, int triStride, 1198 int[] indices, int indexCount, int triStride,
1198 double[] normals); 1199 double[] normals);
1199 1200
1200 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity] 1201 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity]
1201 public static extern void GeomTriMeshDataBuildDouble(IntPtr d, 1202 internal static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1202 IntPtr vertices, int vertexStride, int vertexCount, 1203 IntPtr vertices, int vertexStride, int vertexCount,
1203 IntPtr indices, int indexCount, int triStride, 1204 IntPtr indices, int indexCount, int triStride,
1204 IntPtr normals); 1205 IntPtr normals);
1205 1206
1206 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity] 1207 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity]
1207 public static extern void GeomTriMeshDataBuildSingle(IntPtr d, 1208 internal static extern void GeomTriMeshDataBuildSingle(IntPtr d,
1208 dReal[] vertices, int vertexStride, int vertexCount, 1209 dReal[] vertices, int vertexStride, int vertexCount,
1209 int[] indices, int indexCount, int triStride); 1210 int[] indices, int indexCount, int triStride);
1210 1211
1211 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity] 1212 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity]
1212 public static extern void GeomTriMeshDataBuildSingle(IntPtr d, 1213 internal static extern void GeomTriMeshDataBuildSingle(IntPtr d,
1213 IntPtr vertices, int vertexStride, int vertexCount, 1214 IntPtr vertices, int vertexStride, int vertexCount,
1214 IntPtr indices, int indexCount, int triStride); 1215 IntPtr indices, int indexCount, int triStride);
1215 1216
1216 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity] 1217 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity]
1217 public static extern void GeomTriMeshDataBuildSingle1(IntPtr d, 1218 internal static extern void GeomTriMeshDataBuildSingle1(IntPtr d,
1218 dReal[] vertices, int vertexStride, int vertexCount, 1219 dReal[] vertices, int vertexStride, int vertexCount,
1219 int[] indices, int indexCount, int triStride, 1220 int[] indices, int indexCount, int triStride,
1220 dReal[] normals); 1221 dReal[] normals);
1221 1222
1222 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity] 1223 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity]
1223 public static extern void GeomTriMeshDataBuildSingle1(IntPtr d, 1224 internal static extern void GeomTriMeshDataBuildSingle1(IntPtr d,
1224 IntPtr vertices, int vertexStride, int vertexCount, 1225 IntPtr vertices, int vertexStride, int vertexCount,
1225 IntPtr indices, int indexCount, int triStride, 1226 IntPtr indices, int indexCount, int triStride,
1226 IntPtr normals); 1227 IntPtr normals);
1227 1228
1228 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity] 1229 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity]
1229 public static extern void GeomTriMeshDataBuildSimple(IntPtr d, 1230 internal static extern void GeomTriMeshDataBuildSimple(IntPtr d,
1230 float[] vertices, int vertexStride, int vertexCount, 1231 float[] vertices, int vertexStride, int vertexCount,
1231 int[] indices, int indexCount, int triStride); 1232 int[] indices, int indexCount, int triStride);
1232 1233
1233 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity] 1234 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity]
1234 public static extern void GeomTriMeshDataBuildSimple(IntPtr d, 1235 internal static extern void GeomTriMeshDataBuildSimple(IntPtr d,
1235 IntPtr vertices, int vertexStride, int vertexCount, 1236 IntPtr vertices, int vertexStride, int vertexCount,
1236 IntPtr indices, int indexCount, int triStride); 1237 IntPtr indices, int indexCount, int triStride);
1237 1238
1238 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity] 1239 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity]
1239 public static extern void GeomTriMeshDataBuildSimple1(IntPtr d, 1240 internal static extern void GeomTriMeshDataBuildSimple1(IntPtr d,
1240 float[] vertices, int vertexStride, int vertexCount, 1241 float[] vertices, int vertexStride, int vertexCount,
1241 int[] indices, int indexCount, int triStride, 1242 int[] indices, int indexCount, int triStride,
1242 float[] normals); 1243 float[] normals);
1243 1244
1244 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity] 1245 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity]
1245 public static extern void GeomTriMeshDataBuildSimple1(IntPtr d, 1246 internal static extern void GeomTriMeshDataBuildSimple1(IntPtr d,
1246 IntPtr vertices, int vertexStride, int vertexCount, 1247 IntPtr vertices, int vertexStride, int vertexCount,
1247 IntPtr indices, int indexCount, int triStride, 1248 IntPtr indices, int indexCount, int triStride,
1248 IntPtr normals); 1249 IntPtr normals);
1249 1250
1250 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshClearTCCache"), SuppressUnmanagedCodeSecurity] 1251 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshClearTCCache"), SuppressUnmanagedCodeSecurity]
1251 public static extern void GeomTriMeshClearTCCache(IntPtr g); 1252 internal static extern void GeomTriMeshClearTCCache(IntPtr g);
1252 1253
1253 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataCreate"), SuppressUnmanagedCodeSecurity] 1254 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataCreate"), SuppressUnmanagedCodeSecurity]
1254 public static extern IntPtr GeomTriMeshDataCreate(); 1255 internal static extern IntPtr GeomTriMeshDataCreate();
1255 1256
1256 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataDestroy"), SuppressUnmanagedCodeSecurity] 1257 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataDestroy"), SuppressUnmanagedCodeSecurity]
1257 public static extern void GeomTriMeshDataDestroy(IntPtr d); 1258 internal static extern void GeomTriMeshDataDestroy(IntPtr d);
1258 1259
1259 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataGet"), SuppressUnmanagedCodeSecurity] 1260 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataGet"), SuppressUnmanagedCodeSecurity]
1260 public static extern IntPtr GeomTriMeshDataGet(IntPtr d, int data_id); 1261 internal static extern IntPtr GeomTriMeshDataGet(IntPtr d, int data_id);
1261 1262
1262 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataPreprocess"), SuppressUnmanagedCodeSecurity] 1263 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataPreprocess"), SuppressUnmanagedCodeSecurity]
1263 public static extern void GeomTriMeshDataPreprocess(IntPtr d); 1264 internal static extern void GeomTriMeshDataPreprocess(IntPtr d);
1264 1265
1265 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataSet"), SuppressUnmanagedCodeSecurity] 1266 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataSet"), SuppressUnmanagedCodeSecurity]
1266 public static extern void GeomTriMeshDataSet(IntPtr d, int data_id, IntPtr in_data); 1267 internal static extern void GeomTriMeshDataSet(IntPtr d, int data_id, IntPtr in_data);
1267 1268
1268 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataUpdate"), SuppressUnmanagedCodeSecurity] 1269 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataUpdate"), SuppressUnmanagedCodeSecurity]
1269 public static extern void GeomTriMeshDataUpdate(IntPtr d); 1270 internal static extern void GeomTriMeshDataUpdate(IntPtr d);
1270 1271
1271 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshEnableTC"), SuppressUnmanagedCodeSecurity] 1272 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshEnableTC"), SuppressUnmanagedCodeSecurity]
1272 public static extern void GeomTriMeshEnableTC(IntPtr g, int geomClass, bool enable); 1273 internal static extern void GeomTriMeshEnableTC(IntPtr g, int geomClass, bool enable);
1273 1274
1274 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetArrayCallback"), SuppressUnmanagedCodeSecurity] 1275 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetArrayCallback"), SuppressUnmanagedCodeSecurity]
1275 public static extern TriArrayCallback GeomTriMeshGetArrayCallback(IntPtr g); 1276 internal static extern TriArrayCallback GeomTriMeshGetArrayCallback(IntPtr g);
1276 1277
1277 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetCallback"), SuppressUnmanagedCodeSecurity] 1278 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetCallback"), SuppressUnmanagedCodeSecurity]
1278 public static extern TriCallback GeomTriMeshGetCallback(IntPtr g); 1279 internal static extern TriCallback GeomTriMeshGetCallback(IntPtr g);
1279 1280
1280 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetData"), SuppressUnmanagedCodeSecurity] 1281 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetData"), SuppressUnmanagedCodeSecurity]
1281 public static extern IntPtr GeomTriMeshGetData(IntPtr g); 1282 internal static extern IntPtr GeomTriMeshGetData(IntPtr g);
1282 1283
1283 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetLastTransform"), SuppressUnmanagedCodeSecurity] 1284 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetLastTransform"), SuppressUnmanagedCodeSecurity]
1284 public extern unsafe static Matrix4* GeomTriMeshGetLastTransformUnsafe(IntPtr geom); 1285 internal extern unsafe static Matrix4* GeomTriMeshGetLastTransformUnsafe(IntPtr geom);
1285 public static Matrix4 GeomTriMeshGetLastTransform(IntPtr geom) 1286 internal static Matrix4 GeomTriMeshGetLastTransform(IntPtr geom)
1286 { 1287 {
1287 unsafe { return *(GeomTriMeshGetLastTransformUnsafe(geom)); } 1288 unsafe { return *(GeomTriMeshGetLastTransformUnsafe(geom)); }
1288 } 1289 }
1289 1290
1290 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetPoint"), SuppressUnmanagedCodeSecurity] 1291 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetPoint"), SuppressUnmanagedCodeSecurity]
1291 public extern static void GeomTriMeshGetPoint(IntPtr g, int index, dReal u, dReal v, ref Vector3 outVec); 1292 internal extern static void GeomTriMeshGetPoint(IntPtr g, int index, dReal u, dReal v, ref Vector3 outVec);
1292 1293
1293 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetRayCallback"), SuppressUnmanagedCodeSecurity] 1294 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetRayCallback"), SuppressUnmanagedCodeSecurity]
1294 public static extern TriRayCallback GeomTriMeshGetRayCallback(IntPtr g); 1295 internal static extern TriRayCallback GeomTriMeshGetRayCallback(IntPtr g);
1295 1296
1296 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangle"), SuppressUnmanagedCodeSecurity] 1297 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangle"), SuppressUnmanagedCodeSecurity]
1297 public extern static void GeomTriMeshGetTriangle(IntPtr g, int index, ref Vector3 v0, ref Vector3 v1, ref Vector3 v2); 1298 internal extern static void GeomTriMeshGetTriangle(IntPtr g, int index, ref Vector3 v0, ref Vector3 v1, ref Vector3 v2);
1298 1299
1299 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangleCount"), SuppressUnmanagedCodeSecurity] 1300 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangleCount"), SuppressUnmanagedCodeSecurity]
1300 public extern static int GeomTriMeshGetTriangleCount(IntPtr g); 1301 internal extern static int GeomTriMeshGetTriangleCount(IntPtr g);
1301 1302
1302 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriMeshDataID"), SuppressUnmanagedCodeSecurity] 1303 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriMeshDataID"), SuppressUnmanagedCodeSecurity]
1303 public static extern IntPtr GeomTriMeshGetTriMeshDataID(IntPtr g); 1304 internal static extern IntPtr GeomTriMeshGetTriMeshDataID(IntPtr g);
1304 1305
1305 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshIsTCEnabled"), SuppressUnmanagedCodeSecurity] 1306 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshIsTCEnabled"), SuppressUnmanagedCodeSecurity]
1306 public static extern bool GeomTriMeshIsTCEnabled(IntPtr g, int geomClass); 1307 internal static extern bool GeomTriMeshIsTCEnabled(IntPtr g, int geomClass);
1307 1308
1308 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetArrayCallback"), SuppressUnmanagedCodeSecurity] 1309 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetArrayCallback"), SuppressUnmanagedCodeSecurity]
1309 public static extern void GeomTriMeshSetArrayCallback(IntPtr g, TriArrayCallback arrayCallback); 1310 internal static extern void GeomTriMeshSetArrayCallback(IntPtr g, TriArrayCallback arrayCallback);
1310 1311
1311 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetCallback"), SuppressUnmanagedCodeSecurity] 1312 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetCallback"), SuppressUnmanagedCodeSecurity]
1312 public static extern void GeomTriMeshSetCallback(IntPtr g, TriCallback callback); 1313 internal static extern void GeomTriMeshSetCallback(IntPtr g, TriCallback callback);
1313 1314
1314 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetData"), SuppressUnmanagedCodeSecurity] 1315 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetData"), SuppressUnmanagedCodeSecurity]
1315 public static extern void GeomTriMeshSetData(IntPtr g, IntPtr data); 1316 internal static extern void GeomTriMeshSetData(IntPtr g, IntPtr data);
1316 1317
1317 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity] 1318 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity]
1318 public static extern void GeomTriMeshSetLastTransform(IntPtr g, ref Matrix4 last_trans); 1319 internal static extern void GeomTriMeshSetLastTransform(IntPtr g, ref Matrix4 last_trans);
1319 1320
1320 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity] 1321 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity]
1321 public static extern void GeomTriMeshSetLastTransform(IntPtr g, ref dReal M00); 1322 internal static extern void GeomTriMeshSetLastTransform(IntPtr g, ref dReal M00);
1322 1323
1323 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetRayCallback"), SuppressUnmanagedCodeSecurity] 1324 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetRayCallback"), SuppressUnmanagedCodeSecurity]
1324 public static extern void GeomTriMeshSetRayCallback(IntPtr g, TriRayCallback callback); 1325 internal static extern void GeomTriMeshSetRayCallback(IntPtr g, TriRayCallback callback);
1325 1326
1326 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGetConfiguration"), SuppressUnmanagedCodeSecurity] 1327 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGetConfiguration"), SuppressUnmanagedCodeSecurity]
1327 public static extern IntPtr iGetConfiguration(); 1328 internal static extern IntPtr iGetConfiguration();
1328 1329
1329 public static string GetConfiguration() 1330 internal static string GetConfiguration()
1330 { 1331 {
1331 IntPtr ptr = iGetConfiguration(); 1332 IntPtr ptr = iGetConfiguration();
1332 string s = Marshal.PtrToStringAnsi(ptr); 1333 string s = Marshal.PtrToStringAnsi(ptr);
@@ -1334,691 +1335,688 @@ namespace OdeAPI
1334 } 1335 }
1335 1336
1336 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceCreate"), SuppressUnmanagedCodeSecurity] 1337 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceCreate"), SuppressUnmanagedCodeSecurity]
1337 public static extern IntPtr HashSpaceCreate(IntPtr space); 1338 internal static extern IntPtr HashSpaceCreate(IntPtr space);
1338 1339
1339 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceGetLevels"), SuppressUnmanagedCodeSecurity] 1340 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceGetLevels"), SuppressUnmanagedCodeSecurity]
1340 public static extern void HashSpaceGetLevels(IntPtr space, out int minlevel, out int maxlevel); 1341 internal static extern void HashSpaceGetLevels(IntPtr space, out int minlevel, out int maxlevel);
1341 1342
1342 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceSetLevels"), SuppressUnmanagedCodeSecurity] 1343 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceSetLevels"), SuppressUnmanagedCodeSecurity]
1343 public static extern void HashSpaceSetLevels(IntPtr space, int minlevel, int maxlevel); 1344 internal static extern void HashSpaceSetLevels(IntPtr space, int minlevel, int maxlevel);
1344 1345
1345 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInfiniteAABB"), SuppressUnmanagedCodeSecurity] 1346 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInfiniteAABB"), SuppressUnmanagedCodeSecurity]
1346 public static extern void InfiniteAABB(IntPtr geom, out AABB aabb); 1347 internal static extern void InfiniteAABB(IntPtr geom, out AABB aabb);
1347 1348
1348 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE"), SuppressUnmanagedCodeSecurity] 1349 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE"), SuppressUnmanagedCodeSecurity]
1349 public static extern void InitODE(); 1350 internal static extern void InitODE();
1350 1351
1351 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE2"), SuppressUnmanagedCodeSecurity] 1352 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE2"), SuppressUnmanagedCodeSecurity]
1352 public static extern int InitODE2(uint ODEInitFlags); 1353 internal static extern int InitODE2(uint ODEInitFlags);
1353 1354
1354 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dIsPositiveDefinite"), SuppressUnmanagedCodeSecurity] 1355 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dIsPositiveDefinite"), SuppressUnmanagedCodeSecurity]
1355 public static extern int IsPositiveDefinite(ref dReal A, int n); 1356 internal static extern int IsPositiveDefinite(ref dReal A, int n);
1356 1357
1357 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInvertPDMatrix"), SuppressUnmanagedCodeSecurity] 1358 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInvertPDMatrix"), SuppressUnmanagedCodeSecurity]
1358 public static extern int InvertPDMatrix(ref dReal A, out dReal Ainv, int n); 1359 internal static extern int InvertPDMatrix(ref dReal A, out dReal Ainv, int n);
1359 1360
1360 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddAMotorTorques"), SuppressUnmanagedCodeSecurity] 1361 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddAMotorTorques"), SuppressUnmanagedCodeSecurity]
1361 public static extern void JointAddAMotorTorques(IntPtr joint, dReal torque1, dReal torque2, dReal torque3); 1362 internal static extern void JointAddAMotorTorques(IntPtr joint, dReal torque1, dReal torque2, dReal torque3);
1362 1363
1363 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHingeTorque"), SuppressUnmanagedCodeSecurity] 1364 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHingeTorque"), SuppressUnmanagedCodeSecurity]
1364 public static extern void JointAddHingeTorque(IntPtr joint, dReal torque); 1365 internal static extern void JointAddHingeTorque(IntPtr joint, dReal torque);
1365 1366
1366 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHinge2Torque"), SuppressUnmanagedCodeSecurity] 1367 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHinge2Torque"), SuppressUnmanagedCodeSecurity]
1367 public static extern void JointAddHinge2Torques(IntPtr joint, dReal torque1, dReal torque2); 1368 internal static extern void JointAddHinge2Torques(IntPtr joint, dReal torque1, dReal torque2);
1368 1369
1369 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddPRTorque"), SuppressUnmanagedCodeSecurity] 1370 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddPRTorque"), SuppressUnmanagedCodeSecurity]
1370 public static extern void JointAddPRTorque(IntPtr joint, dReal torque); 1371 internal static extern void JointAddPRTorque(IntPtr joint, dReal torque);
1371 1372
1372 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddUniversalTorque"), SuppressUnmanagedCodeSecurity] 1373 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddUniversalTorque"), SuppressUnmanagedCodeSecurity]
1373 public static extern void JointAddUniversalTorques(IntPtr joint, dReal torque1, dReal torque2); 1374 internal static extern void JointAddUniversalTorques(IntPtr joint, dReal torque1, dReal torque2);
1374 1375
1375 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddSliderForce"), SuppressUnmanagedCodeSecurity] 1376 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddSliderForce"), SuppressUnmanagedCodeSecurity]
1376 public static extern void JointAddSliderForce(IntPtr joint, dReal force); 1377 internal static extern void JointAddSliderForce(IntPtr joint, dReal force);
1377 1378
1378 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAttach"), SuppressUnmanagedCodeSecurity] 1379 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAttach"), SuppressUnmanagedCodeSecurity]
1379 public static extern void JointAttach(IntPtr joint, IntPtr body1, IntPtr body2); 1380 internal static extern void JointAttach(IntPtr joint, IntPtr body1, IntPtr body2);
1380 1381
1381 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateAMotor"), SuppressUnmanagedCodeSecurity] 1382 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateAMotor"), SuppressUnmanagedCodeSecurity]
1382 public static extern IntPtr JointCreateAMotor(IntPtr world, IntPtr group); 1383 internal static extern IntPtr JointCreateAMotor(IntPtr world, IntPtr group);
1383 1384
1384 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateBall"), SuppressUnmanagedCodeSecurity] 1385 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateBall"), SuppressUnmanagedCodeSecurity]
1385 public static extern IntPtr JointCreateBall(IntPtr world, IntPtr group); 1386 internal static extern IntPtr JointCreateBall(IntPtr world, IntPtr group);
1386 1387
1387 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity] 1388 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity]
1388 public static extern IntPtr JointCreateContact(IntPtr world, IntPtr group, ref Contact contact); 1389 internal static extern IntPtr JointCreateContact(IntPtr world, IntPtr group, ref Contact contact);
1389 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity] 1390 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity]
1390 public static extern IntPtr JointCreateContactPtr(IntPtr world, IntPtr group, IntPtr contact); 1391 internal static extern IntPtr JointCreateContactPtr(IntPtr world, IntPtr group, IntPtr contact);
1391 1392
1392 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateFixed"), SuppressUnmanagedCodeSecurity] 1393 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateFixed"), SuppressUnmanagedCodeSecurity]
1393 public static extern IntPtr JointCreateFixed(IntPtr world, IntPtr group); 1394 internal static extern IntPtr JointCreateFixed(IntPtr world, IntPtr group);
1394 1395
1395 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge"), SuppressUnmanagedCodeSecurity] 1396 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge"), SuppressUnmanagedCodeSecurity]
1396 public static extern IntPtr JointCreateHinge(IntPtr world, IntPtr group); 1397 internal static extern IntPtr JointCreateHinge(IntPtr world, IntPtr group);
1397 1398
1398 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge2"), SuppressUnmanagedCodeSecurity] 1399 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge2"), SuppressUnmanagedCodeSecurity]
1399 public static extern IntPtr JointCreateHinge2(IntPtr world, IntPtr group); 1400 internal static extern IntPtr JointCreateHinge2(IntPtr world, IntPtr group);
1400 1401
1401 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateLMotor"), SuppressUnmanagedCodeSecurity] 1402 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateLMotor"), SuppressUnmanagedCodeSecurity]
1402 public static extern IntPtr JointCreateLMotor(IntPtr world, IntPtr group); 1403 internal static extern IntPtr JointCreateLMotor(IntPtr world, IntPtr group);
1403 1404
1404 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateNull"), SuppressUnmanagedCodeSecurity] 1405 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateNull"), SuppressUnmanagedCodeSecurity]
1405 public static extern IntPtr JointCreateNull(IntPtr world, IntPtr group); 1406 internal static extern IntPtr JointCreateNull(IntPtr world, IntPtr group);
1406 1407
1407 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePR"), SuppressUnmanagedCodeSecurity] 1408 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePR"), SuppressUnmanagedCodeSecurity]
1408 public static extern IntPtr JointCreatePR(IntPtr world, IntPtr group); 1409 internal static extern IntPtr JointCreatePR(IntPtr world, IntPtr group);
1409 1410
1410 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePlane2D"), SuppressUnmanagedCodeSecurity] 1411 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePlane2D"), SuppressUnmanagedCodeSecurity]
1411 public static extern IntPtr JointCreatePlane2D(IntPtr world, IntPtr group); 1412 internal static extern IntPtr JointCreatePlane2D(IntPtr world, IntPtr group);
1412 1413
1413 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateSlider"), SuppressUnmanagedCodeSecurity] 1414 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateSlider"), SuppressUnmanagedCodeSecurity]
1414 public static extern IntPtr JointCreateSlider(IntPtr world, IntPtr group); 1415 internal static extern IntPtr JointCreateSlider(IntPtr world, IntPtr group);
1415 1416
1416 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateUniversal"), SuppressUnmanagedCodeSecurity] 1417 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateUniversal"), SuppressUnmanagedCodeSecurity]
1417 public static extern IntPtr JointCreateUniversal(IntPtr world, IntPtr group); 1418 internal static extern IntPtr JointCreateUniversal(IntPtr world, IntPtr group);
1418 1419
1419 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointDestroy"), SuppressUnmanagedCodeSecurity] 1420 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointDestroy"), SuppressUnmanagedCodeSecurity]
1420 public static extern void JointDestroy(IntPtr j); 1421 internal static extern void JointDestroy(IntPtr j);
1421 1422
1422 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngle"), SuppressUnmanagedCodeSecurity] 1423 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngle"), SuppressUnmanagedCodeSecurity]
1423 public static extern dReal JointGetAMotorAngle(IntPtr j, int anum); 1424 internal static extern dReal JointGetAMotorAngle(IntPtr j, int anum);
1424 1425
1425 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngleRate"), SuppressUnmanagedCodeSecurity] 1426 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngleRate"), SuppressUnmanagedCodeSecurity]
1426 public static extern dReal JointGetAMotorAngleRate(IntPtr j, int anum); 1427 internal static extern dReal JointGetAMotorAngleRate(IntPtr j, int anum);
1427 1428
1428 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxis"), SuppressUnmanagedCodeSecurity] 1429 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxis"), SuppressUnmanagedCodeSecurity]
1429 public static extern void JointGetAMotorAxis(IntPtr j, int anum, out Vector3 result); 1430 internal static extern void JointGetAMotorAxis(IntPtr j, int anum, out Vector3 result);
1430 1431
1431 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxisRel"), SuppressUnmanagedCodeSecurity] 1432 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxisRel"), SuppressUnmanagedCodeSecurity]
1432 public static extern int JointGetAMotorAxisRel(IntPtr j, int anum); 1433 internal static extern int JointGetAMotorAxisRel(IntPtr j, int anum);
1433 1434
1434 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorMode"), SuppressUnmanagedCodeSecurity] 1435 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorMode"), SuppressUnmanagedCodeSecurity]
1435 public static extern int JointGetAMotorMode(IntPtr j); 1436 internal static extern int JointGetAMotorMode(IntPtr j);
1436 1437
1437 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1438 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1438 public static extern int JointGetAMotorNumAxes(IntPtr j); 1439 internal static extern int JointGetAMotorNumAxes(IntPtr j);
1439 1440
1440 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorParam"), SuppressUnmanagedCodeSecurity] 1441 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorParam"), SuppressUnmanagedCodeSecurity]
1441 public static extern dReal JointGetAMotorParam(IntPtr j, int parameter); 1442 internal static extern dReal JointGetAMotorParam(IntPtr j, int parameter);
1442 1443
1443 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor"), SuppressUnmanagedCodeSecurity] 1444 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor"), SuppressUnmanagedCodeSecurity]
1444 public static extern void JointGetBallAnchor(IntPtr j, out Vector3 result); 1445 internal static extern void JointGetBallAnchor(IntPtr j, out Vector3 result);
1445 1446
1446 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor2"), SuppressUnmanagedCodeSecurity] 1447 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor2"), SuppressUnmanagedCodeSecurity]
1447 public static extern void JointGetBallAnchor2(IntPtr j, out Vector3 result); 1448 internal static extern void JointGetBallAnchor2(IntPtr j, out Vector3 result);
1448 1449
1449 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBody"), SuppressUnmanagedCodeSecurity] 1450 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBody"), SuppressUnmanagedCodeSecurity]
1450 public static extern IntPtr JointGetBody(IntPtr j); 1451 internal static extern IntPtr JointGetBody(IntPtr j);
1451 1452
1452 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetData"), SuppressUnmanagedCodeSecurity] 1453 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetData"), SuppressUnmanagedCodeSecurity]
1453 public static extern IntPtr JointGetData(IntPtr j); 1454 internal static extern IntPtr JointGetData(IntPtr j);
1454 1455
1455 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetFeedback"), SuppressUnmanagedCodeSecurity] 1456 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetFeedback"), SuppressUnmanagedCodeSecurity]
1456 public extern unsafe static JointFeedback* JointGetFeedbackUnsafe(IntPtr j); 1457 internal extern unsafe static JointFeedback* JointGetFeedbackUnsafe(IntPtr j);
1457 public static JointFeedback JointGetFeedback(IntPtr j) 1458 internal static JointFeedback JointGetFeedback(IntPtr j)
1458 { 1459 {
1459 unsafe { return *(JointGetFeedbackUnsafe(j)); } 1460 unsafe { return *(JointGetFeedbackUnsafe(j)); }
1460 } 1461 }
1461 1462
1462 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor"), SuppressUnmanagedCodeSecurity] 1463 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor"), SuppressUnmanagedCodeSecurity]
1463 public static extern void JointGetHingeAnchor(IntPtr j, out Vector3 result); 1464 internal static extern void JointGetHingeAnchor(IntPtr j, out Vector3 result);
1464 1465
1465 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngle"), SuppressUnmanagedCodeSecurity] 1466 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngle"), SuppressUnmanagedCodeSecurity]
1466 public static extern dReal JointGetHingeAngle(IntPtr j); 1467 internal static extern dReal JointGetHingeAngle(IntPtr j);
1467 1468
1468 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngleRate"), SuppressUnmanagedCodeSecurity] 1469 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngleRate"), SuppressUnmanagedCodeSecurity]
1469 public static extern dReal JointGetHingeAngleRate(IntPtr j); 1470 internal static extern dReal JointGetHingeAngleRate(IntPtr j);
1470 1471
1471 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAxis"), SuppressUnmanagedCodeSecurity] 1472 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAxis"), SuppressUnmanagedCodeSecurity]
1472 public static extern void JointGetHingeAxis(IntPtr j, out Vector3 result); 1473 internal static extern void JointGetHingeAxis(IntPtr j, out Vector3 result);
1473 1474
1474 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeParam"), SuppressUnmanagedCodeSecurity] 1475 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeParam"), SuppressUnmanagedCodeSecurity]
1475 public static extern dReal JointGetHingeParam(IntPtr j, int parameter); 1476 internal static extern dReal JointGetHingeParam(IntPtr j, int parameter);
1476 1477
1477 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1"), SuppressUnmanagedCodeSecurity] 1478 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1"), SuppressUnmanagedCodeSecurity]
1478 public static extern dReal JointGetHinge2Angle1(IntPtr j); 1479 internal static extern dReal JointGetHinge2Angle1(IntPtr j);
1479 1480
1480 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1Rate"), SuppressUnmanagedCodeSecurity] 1481 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1Rate"), SuppressUnmanagedCodeSecurity]
1481 public static extern dReal JointGetHinge2Angle1Rate(IntPtr j); 1482 internal static extern dReal JointGetHinge2Angle1Rate(IntPtr j);
1482 1483
1483 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle2Rate"), SuppressUnmanagedCodeSecurity] 1484 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle2Rate"), SuppressUnmanagedCodeSecurity]
1484 public static extern dReal JointGetHinge2Angle2Rate(IntPtr j); 1485 internal static extern dReal JointGetHinge2Angle2Rate(IntPtr j);
1485 1486
1486 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor2"), SuppressUnmanagedCodeSecurity] 1487 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor2"), SuppressUnmanagedCodeSecurity]
1487 public static extern void JointGetHingeAnchor2(IntPtr j, out Vector3 result); 1488 internal static extern void JointGetHingeAnchor2(IntPtr j, out Vector3 result);
1488 1489
1489 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor"), SuppressUnmanagedCodeSecurity] 1490 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor"), SuppressUnmanagedCodeSecurity]
1490 public static extern void JointGetHinge2Anchor(IntPtr j, out Vector3 result); 1491 internal static extern void JointGetHinge2Anchor(IntPtr j, out Vector3 result);
1491 1492
1492 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor2"), SuppressUnmanagedCodeSecurity] 1493 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor2"), SuppressUnmanagedCodeSecurity]
1493 public static extern void JointGetHinge2Anchor2(IntPtr j, out Vector3 result); 1494 internal static extern void JointGetHinge2Anchor2(IntPtr j, out Vector3 result);
1494 1495
1495 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis1"), SuppressUnmanagedCodeSecurity] 1496 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis1"), SuppressUnmanagedCodeSecurity]
1496 public static extern void JointGetHinge2Axis1(IntPtr j, out Vector3 result); 1497 internal static extern void JointGetHinge2Axis1(IntPtr j, out Vector3 result);
1497 1498
1498 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis2"), SuppressUnmanagedCodeSecurity] 1499 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis2"), SuppressUnmanagedCodeSecurity]
1499 public static extern void JointGetHinge2Axis2(IntPtr j, out Vector3 result); 1500 internal static extern void JointGetHinge2Axis2(IntPtr j, out Vector3 result);
1500 1501
1501 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Param"), SuppressUnmanagedCodeSecurity] 1502 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Param"), SuppressUnmanagedCodeSecurity]
1502 public static extern dReal JointGetHinge2Param(IntPtr j, int parameter); 1503 internal static extern dReal JointGetHinge2Param(IntPtr j, int parameter);
1503 1504
1504 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorAxis"), SuppressUnmanagedCodeSecurity] 1505 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorAxis"), SuppressUnmanagedCodeSecurity]
1505 public static extern void JointGetLMotorAxis(IntPtr j, int anum, out Vector3 result); 1506 internal static extern void JointGetLMotorAxis(IntPtr j, int anum, out Vector3 result);
1506 1507
1507 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1508 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1508 public static extern int JointGetLMotorNumAxes(IntPtr j); 1509 internal static extern int JointGetLMotorNumAxes(IntPtr j);
1509 1510
1510 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorParam"), SuppressUnmanagedCodeSecurity] 1511 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorParam"), SuppressUnmanagedCodeSecurity]
1511 public static extern dReal JointGetLMotorParam(IntPtr j, int parameter); 1512 internal static extern dReal JointGetLMotorParam(IntPtr j, int parameter);
1512 1513
1513 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAnchor"), SuppressUnmanagedCodeSecurity] 1514 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAnchor"), SuppressUnmanagedCodeSecurity]
1514 public static extern void JointGetPRAnchor(IntPtr j, out Vector3 result); 1515 internal static extern void JointGetPRAnchor(IntPtr j, out Vector3 result);
1515 1516
1516 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis1"), SuppressUnmanagedCodeSecurity] 1517 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis1"), SuppressUnmanagedCodeSecurity]
1517 public static extern void JointGetPRAxis1(IntPtr j, out Vector3 result); 1518 internal static extern void JointGetPRAxis1(IntPtr j, out Vector3 result);
1518 1519
1519 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis2"), SuppressUnmanagedCodeSecurity] 1520 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis2"), SuppressUnmanagedCodeSecurity]
1520 public static extern void JointGetPRAxis2(IntPtr j, out Vector3 result); 1521 internal static extern void JointGetPRAxis2(IntPtr j, out Vector3 result);
1521 1522
1522 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRParam"), SuppressUnmanagedCodeSecurity] 1523 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRParam"), SuppressUnmanagedCodeSecurity]
1523 public static extern dReal JointGetPRParam(IntPtr j, int parameter); 1524 internal static extern dReal JointGetPRParam(IntPtr j, int parameter);
1524 1525
1525 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPosition"), SuppressUnmanagedCodeSecurity] 1526 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPosition"), SuppressUnmanagedCodeSecurity]
1526 public static extern dReal JointGetPRPosition(IntPtr j); 1527 internal static extern dReal JointGetPRPosition(IntPtr j);
1527 1528
1528 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPositionRate"), SuppressUnmanagedCodeSecurity] 1529 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPositionRate"), SuppressUnmanagedCodeSecurity]
1529 public static extern dReal JointGetPRPositionRate(IntPtr j); 1530 internal static extern dReal JointGetPRPositionRate(IntPtr j);
1530 1531
1531 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderAxis"), SuppressUnmanagedCodeSecurity] 1532 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderAxis"), SuppressUnmanagedCodeSecurity]
1532 public static extern void JointGetSliderAxis(IntPtr j, out Vector3 result); 1533 internal static extern void JointGetSliderAxis(IntPtr j, out Vector3 result);
1533 1534
1534 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderParam"), SuppressUnmanagedCodeSecurity] 1535 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderParam"), SuppressUnmanagedCodeSecurity]
1535 public static extern dReal JointGetSliderParam(IntPtr j, int parameter); 1536 internal static extern dReal JointGetSliderParam(IntPtr j, int parameter);
1536 1537
1537 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPosition"), SuppressUnmanagedCodeSecurity] 1538 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPosition"), SuppressUnmanagedCodeSecurity]
1538 public static extern dReal JointGetSliderPosition(IntPtr j); 1539 internal static extern dReal JointGetSliderPosition(IntPtr j);
1539 1540
1540 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPositionRate"), SuppressUnmanagedCodeSecurity] 1541 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPositionRate"), SuppressUnmanagedCodeSecurity]
1541 public static extern dReal JointGetSliderPositionRate(IntPtr j); 1542 internal static extern dReal JointGetSliderPositionRate(IntPtr j);
1542 1543
1543 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetType"), SuppressUnmanagedCodeSecurity] 1544 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetType"), SuppressUnmanagedCodeSecurity]
1544 public static extern JointType JointGetType(IntPtr j); 1545 internal static extern JointType JointGetType(IntPtr j);
1545 1546
1546 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor"), SuppressUnmanagedCodeSecurity] 1547 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor"), SuppressUnmanagedCodeSecurity]
1547 public static extern void JointGetUniversalAnchor(IntPtr j, out Vector3 result); 1548 internal static extern void JointGetUniversalAnchor(IntPtr j, out Vector3 result);
1548 1549
1549 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor2"), SuppressUnmanagedCodeSecurity] 1550 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor2"), SuppressUnmanagedCodeSecurity]
1550 public static extern void JointGetUniversalAnchor2(IntPtr j, out Vector3 result); 1551 internal static extern void JointGetUniversalAnchor2(IntPtr j, out Vector3 result);
1551 1552
1552 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1"), SuppressUnmanagedCodeSecurity] 1553 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1"), SuppressUnmanagedCodeSecurity]
1553 public static extern dReal JointGetUniversalAngle1(IntPtr j); 1554 internal static extern dReal JointGetUniversalAngle1(IntPtr j);
1554 1555
1555 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1Rate"), SuppressUnmanagedCodeSecurity] 1556 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1Rate"), SuppressUnmanagedCodeSecurity]
1556 public static extern dReal JointGetUniversalAngle1Rate(IntPtr j); 1557 internal static extern dReal JointGetUniversalAngle1Rate(IntPtr j);
1557 1558
1558 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2"), SuppressUnmanagedCodeSecurity] 1559 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2"), SuppressUnmanagedCodeSecurity]
1559 public static extern dReal JointGetUniversalAngle2(IntPtr j); 1560 internal static extern dReal JointGetUniversalAngle2(IntPtr j);
1560 1561
1561 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2Rate"), SuppressUnmanagedCodeSecurity] 1562 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2Rate"), SuppressUnmanagedCodeSecurity]
1562 public static extern dReal JointGetUniversalAngle2Rate(IntPtr j); 1563 internal static extern dReal JointGetUniversalAngle2Rate(IntPtr j);
1563 1564
1564 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngles"), SuppressUnmanagedCodeSecurity] 1565 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngles"), SuppressUnmanagedCodeSecurity]
1565 public static extern void JointGetUniversalAngles(IntPtr j, out dReal angle1, out dReal angle2); 1566 internal static extern void JointGetUniversalAngles(IntPtr j, out dReal angle1, out dReal angle2);
1566 1567
1567 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis1"), SuppressUnmanagedCodeSecurity] 1568 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis1"), SuppressUnmanagedCodeSecurity]
1568 public static extern void JointGetUniversalAxis1(IntPtr j, out Vector3 result); 1569 internal static extern void JointGetUniversalAxis1(IntPtr j, out Vector3 result);
1569 1570
1570 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis2"), SuppressUnmanagedCodeSecurity] 1571 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis2"), SuppressUnmanagedCodeSecurity]
1571 public static extern void JointGetUniversalAxis2(IntPtr j, out Vector3 result); 1572 internal static extern void JointGetUniversalAxis2(IntPtr j, out Vector3 result);
1572 1573
1573 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalParam"), SuppressUnmanagedCodeSecurity] 1574 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalParam"), SuppressUnmanagedCodeSecurity]
1574 public static extern dReal JointGetUniversalParam(IntPtr j, int parameter); 1575 internal static extern dReal JointGetUniversalParam(IntPtr j, int parameter);
1575 1576
1576 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupCreate"), SuppressUnmanagedCodeSecurity] 1577 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupCreate"), SuppressUnmanagedCodeSecurity]
1577 public static extern IntPtr JointGroupCreate(int max_size); 1578 internal static extern IntPtr JointGroupCreate(int max_size);
1578 1579
1579 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupDestroy"), SuppressUnmanagedCodeSecurity] 1580 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupDestroy"), SuppressUnmanagedCodeSecurity]
1580 public static extern void JointGroupDestroy(IntPtr group); 1581 internal static extern void JointGroupDestroy(IntPtr group);
1581 1582
1582 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupEmpty"), SuppressUnmanagedCodeSecurity] 1583 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupEmpty"), SuppressUnmanagedCodeSecurity]
1583 public static extern void JointGroupEmpty(IntPtr group); 1584 internal static extern void JointGroupEmpty(IntPtr group);
1584 1585
1585 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAngle"), SuppressUnmanagedCodeSecurity] 1586 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAngle"), SuppressUnmanagedCodeSecurity]
1586 public static extern void JointSetAMotorAngle(IntPtr j, int anum, dReal angle); 1587 internal static extern void JointSetAMotorAngle(IntPtr j, int anum, dReal angle);
1587 1588
1588 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAxis"), SuppressUnmanagedCodeSecurity] 1589 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAxis"), SuppressUnmanagedCodeSecurity]
1589 public static extern void JointSetAMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z); 1590 internal static extern void JointSetAMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z);
1590 1591
1591 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorMode"), SuppressUnmanagedCodeSecurity] 1592 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorMode"), SuppressUnmanagedCodeSecurity]
1592 public static extern void JointSetAMotorMode(IntPtr j, int mode); 1593 internal static extern void JointSetAMotorMode(IntPtr j, int mode);
1593 1594
1594 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1595 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1595 public static extern void JointSetAMotorNumAxes(IntPtr group, int num); 1596 internal static extern void JointSetAMotorNumAxes(IntPtr group, int num);
1596 1597
1597 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorParam"), SuppressUnmanagedCodeSecurity] 1598 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorParam"), SuppressUnmanagedCodeSecurity]
1598 public static extern void JointSetAMotorParam(IntPtr group, int parameter, dReal value); 1599 internal static extern void JointSetAMotorParam(IntPtr group, int parameter, dReal value);
1599 1600
1600 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor"), SuppressUnmanagedCodeSecurity] 1601 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor"), SuppressUnmanagedCodeSecurity]
1601 public static extern void JointSetBallAnchor(IntPtr j, dReal x, dReal y, dReal z); 1602 internal static extern void JointSetBallAnchor(IntPtr j, dReal x, dReal y, dReal z);
1602 1603
1603 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor2"), SuppressUnmanagedCodeSecurity] 1604 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor2"), SuppressUnmanagedCodeSecurity]
1604 public static extern void JointSetBallAnchor2(IntPtr j, dReal x, dReal y, dReal z); 1605 internal static extern void JointSetBallAnchor2(IntPtr j, dReal x, dReal y, dReal z);
1605 1606
1606 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetData"), SuppressUnmanagedCodeSecurity] 1607 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetData"), SuppressUnmanagedCodeSecurity]
1607 public static extern void JointSetData(IntPtr j, IntPtr data); 1608 internal static extern void JointSetData(IntPtr j, IntPtr data);
1608 1609
1609 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFeedback"), SuppressUnmanagedCodeSecurity] 1610 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFeedback"), SuppressUnmanagedCodeSecurity]
1610 public static extern void JointSetFeedback(IntPtr j, out JointFeedback feedback); 1611 internal static extern void JointSetFeedback(IntPtr j, out JointFeedback feedback);
1611 1612
1612 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFixed"), SuppressUnmanagedCodeSecurity] 1613 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFixed"), SuppressUnmanagedCodeSecurity]
1613 public static extern void JointSetFixed(IntPtr j); 1614 internal static extern void JointSetFixed(IntPtr j);
1614 1615
1615 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchor"), SuppressUnmanagedCodeSecurity] 1616 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchor"), SuppressUnmanagedCodeSecurity]
1616 public static extern void JointSetHingeAnchor(IntPtr j, dReal x, dReal y, dReal z); 1617 internal static extern void JointSetHingeAnchor(IntPtr j, dReal x, dReal y, dReal z);
1617 1618
1618 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchorDelta"), SuppressUnmanagedCodeSecurity] 1619 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchorDelta"), SuppressUnmanagedCodeSecurity]
1619 public static extern void JointSetHingeAnchorDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az); 1620 internal static extern void JointSetHingeAnchorDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
1620 1621
1621 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAxis"), SuppressUnmanagedCodeSecurity] 1622 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAxis"), SuppressUnmanagedCodeSecurity]
1622 public static extern void JointSetHingeAxis(IntPtr j, dReal x, dReal y, dReal z); 1623 internal static extern void JointSetHingeAxis(IntPtr j, dReal x, dReal y, dReal z);
1623 1624
1624 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeParam"), SuppressUnmanagedCodeSecurity] 1625 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeParam"), SuppressUnmanagedCodeSecurity]
1625 public static extern void JointSetHingeParam(IntPtr j, int parameter, dReal value); 1626 internal static extern void JointSetHingeParam(IntPtr j, int parameter, dReal value);
1626 1627
1627 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Anchor"), SuppressUnmanagedCodeSecurity] 1628 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Anchor"), SuppressUnmanagedCodeSecurity]
1628 public static extern void JointSetHinge2Anchor(IntPtr j, dReal x, dReal y, dReal z); 1629 internal static extern void JointSetHinge2Anchor(IntPtr j, dReal x, dReal y, dReal z);
1629 1630
1630 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis1"), SuppressUnmanagedCodeSecurity] 1631 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis1"), SuppressUnmanagedCodeSecurity]
1631 public static extern void JointSetHinge2Axis1(IntPtr j, dReal x, dReal y, dReal z); 1632 internal static extern void JointSetHinge2Axis1(IntPtr j, dReal x, dReal y, dReal z);
1632 1633
1633 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis2"), SuppressUnmanagedCodeSecurity] 1634 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis2"), SuppressUnmanagedCodeSecurity]
1634 public static extern void JointSetHinge2Axis2(IntPtr j, dReal x, dReal y, dReal z); 1635 internal static extern void JointSetHinge2Axis2(IntPtr j, dReal x, dReal y, dReal z);
1635 1636
1636 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Param"), SuppressUnmanagedCodeSecurity] 1637 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Param"), SuppressUnmanagedCodeSecurity]
1637 public static extern void JointSetHinge2Param(IntPtr j, int parameter, dReal value); 1638 internal static extern void JointSetHinge2Param(IntPtr j, int parameter, dReal value);
1638 1639
1639 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorAxis"), SuppressUnmanagedCodeSecurity] 1640 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorAxis"), SuppressUnmanagedCodeSecurity]
1640 public static extern void JointSetLMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z); 1641 internal static extern void JointSetLMotorAxis(IntPtr j, int anum, int rel, dReal x, dReal y, dReal z);
1641 1642
1642 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorNumAxes"), SuppressUnmanagedCodeSecurity] 1643 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1643 public static extern void JointSetLMotorNumAxes(IntPtr j, int num); 1644 internal static extern void JointSetLMotorNumAxes(IntPtr j, int num);
1644 1645
1645 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorParam"), SuppressUnmanagedCodeSecurity] 1646 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorParam"), SuppressUnmanagedCodeSecurity]
1646 public static extern void JointSetLMotorParam(IntPtr j, int parameter, dReal value); 1647 internal static extern void JointSetLMotorParam(IntPtr j, int parameter, dReal value);
1647 1648
1648 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DAngleParam"), SuppressUnmanagedCodeSecurity] 1649 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DAngleParam"), SuppressUnmanagedCodeSecurity]
1649 public static extern void JointSetPlane2DAngleParam(IntPtr j, int parameter, dReal value); 1650 internal static extern void JointSetPlane2DAngleParam(IntPtr j, int parameter, dReal value);
1650 1651
1651 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DXParam"), SuppressUnmanagedCodeSecurity] 1652 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DXParam"), SuppressUnmanagedCodeSecurity]
1652 public static extern void JointSetPlane2DXParam(IntPtr j, int parameter, dReal value); 1653 internal static extern void JointSetPlane2DXParam(IntPtr j, int parameter, dReal value);
1653 1654
1654 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DYParam"), SuppressUnmanagedCodeSecurity] 1655 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DYParam"), SuppressUnmanagedCodeSecurity]
1655 public static extern void JointSetPlane2DYParam(IntPtr j, int parameter, dReal value); 1656 internal static extern void JointSetPlane2DYParam(IntPtr j, int parameter, dReal value);
1656 1657
1657 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAnchor"), SuppressUnmanagedCodeSecurity] 1658 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAnchor"), SuppressUnmanagedCodeSecurity]
1658 public static extern void JointSetPRAnchor(IntPtr j, dReal x, dReal y, dReal z); 1659 internal static extern void JointSetPRAnchor(IntPtr j, dReal x, dReal y, dReal z);
1659 1660
1660 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis1"), SuppressUnmanagedCodeSecurity] 1661 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis1"), SuppressUnmanagedCodeSecurity]
1661 public static extern void JointSetPRAxis1(IntPtr j, dReal x, dReal y, dReal z); 1662 internal static extern void JointSetPRAxis1(IntPtr j, dReal x, dReal y, dReal z);
1662 1663
1663 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis2"), SuppressUnmanagedCodeSecurity] 1664 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis2"), SuppressUnmanagedCodeSecurity]
1664 public static extern void JointSetPRAxis2(IntPtr j, dReal x, dReal y, dReal z); 1665 internal static extern void JointSetPRAxis2(IntPtr j, dReal x, dReal y, dReal z);
1665 1666
1666 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRParam"), SuppressUnmanagedCodeSecurity] 1667 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRParam"), SuppressUnmanagedCodeSecurity]
1667 public static extern void JointSetPRParam(IntPtr j, int parameter, dReal value); 1668 internal static extern void JointSetPRParam(IntPtr j, int parameter, dReal value);
1668 1669
1669 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxis"), SuppressUnmanagedCodeSecurity] 1670 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxis"), SuppressUnmanagedCodeSecurity]
1670 public static extern void JointSetSliderAxis(IntPtr j, dReal x, dReal y, dReal z); 1671 internal static extern void JointSetSliderAxis(IntPtr j, dReal x, dReal y, dReal z);
1671 1672
1672 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxisDelta"), SuppressUnmanagedCodeSecurity] 1673 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxisDelta"), SuppressUnmanagedCodeSecurity]
1673 public static extern void JointSetSliderAxisDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az); 1674 internal static extern void JointSetSliderAxisDelta(IntPtr j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
1674 1675
1675 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderParam"), SuppressUnmanagedCodeSecurity] 1676 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderParam"), SuppressUnmanagedCodeSecurity]
1676 public static extern void JointSetSliderParam(IntPtr j, int parameter, dReal value); 1677 internal static extern void JointSetSliderParam(IntPtr j, int parameter, dReal value);
1677 1678
1678 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAnchor"), SuppressUnmanagedCodeSecurity] 1679 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAnchor"), SuppressUnmanagedCodeSecurity]
1679 public static extern void JointSetUniversalAnchor(IntPtr j, dReal x, dReal y, dReal z); 1680 internal static extern void JointSetUniversalAnchor(IntPtr j, dReal x, dReal y, dReal z);
1680 1681
1681 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis1"), SuppressUnmanagedCodeSecurity] 1682 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis1"), SuppressUnmanagedCodeSecurity]
1682 public static extern void JointSetUniversalAxis1(IntPtr j, dReal x, dReal y, dReal z); 1683 internal static extern void JointSetUniversalAxis1(IntPtr j, dReal x, dReal y, dReal z);
1683 1684
1684 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis2"), SuppressUnmanagedCodeSecurity] 1685 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis2"), SuppressUnmanagedCodeSecurity]
1685 public static extern void JointSetUniversalAxis2(IntPtr j, dReal x, dReal y, dReal z); 1686 internal static extern void JointSetUniversalAxis2(IntPtr j, dReal x, dReal y, dReal z);
1686 1687
1687 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalParam"), SuppressUnmanagedCodeSecurity] 1688 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalParam"), SuppressUnmanagedCodeSecurity]
1688 public static extern void JointSetUniversalParam(IntPtr j, int parameter, dReal value); 1689 internal static extern void JointSetUniversalParam(IntPtr j, int parameter, dReal value);
1689 1690
1690 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dLDLTAddTL"), SuppressUnmanagedCodeSecurity] 1691 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dLDLTAddTL"), SuppressUnmanagedCodeSecurity]
1691 public static extern void LDLTAddTL(ref dReal L, ref dReal d, ref dReal a, int n, int nskip); 1692 internal static extern void LDLTAddTL(ref dReal L, ref dReal d, ref dReal a, int n, int nskip);
1692 1693
1693 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdd"), SuppressUnmanagedCodeSecurity] 1694 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdd"), SuppressUnmanagedCodeSecurity]
1694 public static extern void MassAdd(ref Mass a, ref Mass b); 1695 internal static extern void MassAdd(ref Mass a, ref Mass b);
1695 1696
1696 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdjust"), SuppressUnmanagedCodeSecurity] 1697 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdjust"), SuppressUnmanagedCodeSecurity]
1697 public static extern void MassAdjust(ref Mass m, dReal newmass); 1698 internal static extern void MassAdjust(ref Mass m, dReal newmass);
1698 1699
1699 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassCheck"), SuppressUnmanagedCodeSecurity] 1700 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassCheck"), SuppressUnmanagedCodeSecurity]
1700 public static extern bool MassCheck(ref Mass m); 1701 internal static extern bool MassCheck(ref Mass m);
1701 1702
1702 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity] 1703 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity]
1703 public static extern void MassRotate(ref Mass mass, ref Matrix3 R); 1704 internal static extern void MassRotate(ref Mass mass, ref Matrix3 R);
1704 1705
1705 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity] 1706 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity]
1706 public static extern void MassRotate(ref Mass mass, ref dReal M00); 1707 internal static extern void MassRotate(ref Mass mass, ref dReal M00);
1707 1708
1708 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBox"), SuppressUnmanagedCodeSecurity] 1709 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBox"), SuppressUnmanagedCodeSecurity]
1709 public static extern void MassSetBox(out Mass mass, dReal density, dReal lx, dReal ly, dReal lz); 1710 internal static extern void MassSetBox(out Mass mass, dReal density, dReal lx, dReal ly, dReal lz);
1710 1711
1711 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBoxTotal"), SuppressUnmanagedCodeSecurity] 1712 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetBoxTotal"), SuppressUnmanagedCodeSecurity]
1712 public static extern void MassSetBoxTotal(out Mass mass, dReal total_mass, dReal lx, dReal ly, dReal lz); 1713 internal static extern void MassSetBoxTotal(out Mass mass, dReal total_mass, dReal lx, dReal ly, dReal lz);
1713 1714
1714 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsule"), SuppressUnmanagedCodeSecurity] 1715 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsule"), SuppressUnmanagedCodeSecurity]
1715 public static extern void MassSetCapsule(out Mass mass, dReal density, int direction, dReal radius, dReal length); 1716 internal static extern void MassSetCapsule(out Mass mass, dReal density, int direction, dReal radius, dReal length);
1716 1717
1717 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsuleTotal"), SuppressUnmanagedCodeSecurity] 1718 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCapsuleTotal"), SuppressUnmanagedCodeSecurity]
1718 public static extern void MassSetCapsuleTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length); 1719 internal static extern void MassSetCapsuleTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length);
1719 1720
1720 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinder"), SuppressUnmanagedCodeSecurity] 1721 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinder"), SuppressUnmanagedCodeSecurity]
1721 public static extern void MassSetCylinder(out Mass mass, dReal density, int direction, dReal radius, dReal length); 1722 internal static extern void MassSetCylinder(out Mass mass, dReal density, int direction, dReal radius, dReal length);
1722 1723
1723 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinderTotal"), SuppressUnmanagedCodeSecurity] 1724 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetCylinderTotal"), SuppressUnmanagedCodeSecurity]
1724 public static extern void MassSetCylinderTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length); 1725 internal static extern void MassSetCylinderTotal(out Mass mass, dReal total_mass, int direction, dReal radius, dReal length);
1725 1726
1726 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetParameters"), SuppressUnmanagedCodeSecurity] 1727 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetParameters"), SuppressUnmanagedCodeSecurity]
1727 public static extern void MassSetParameters(out Mass mass, dReal themass, 1728 internal static extern void MassSetParameters(out Mass mass, dReal themass,
1728 dReal cgx, dReal cgy, dReal cgz, 1729 dReal cgx, dReal cgy, dReal cgz,
1729 dReal i11, dReal i22, dReal i33, 1730 dReal i11, dReal i22, dReal i33,
1730 dReal i12, dReal i13, dReal i23); 1731 dReal i12, dReal i13, dReal i23);
1731 1732
1732 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphere"), SuppressUnmanagedCodeSecurity] 1733 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphere"), SuppressUnmanagedCodeSecurity]
1733 public static extern void MassSetSphere(out Mass mass, dReal density, dReal radius); 1734 internal static extern void MassSetSphere(out Mass mass, dReal density, dReal radius);
1734 1735
1735 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphereTotal"), SuppressUnmanagedCodeSecurity] 1736 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphereTotal"), SuppressUnmanagedCodeSecurity]
1736 public static extern void dMassSetSphereTotal(out Mass mass, dReal total_mass, dReal radius); 1737 internal static extern void dMassSetSphereTotal(out Mass mass, dReal total_mass, dReal radius);
1737 1738
1738 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetTrimesh"), SuppressUnmanagedCodeSecurity] 1739 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetTrimesh"), SuppressUnmanagedCodeSecurity]
1739 public static extern void MassSetTrimesh(out Mass mass, dReal density, IntPtr g); 1740 internal static extern void MassSetTrimesh(out Mass mass, dReal density, IntPtr g);
1740 1741
1741 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetZero"), SuppressUnmanagedCodeSecurity] 1742 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetZero"), SuppressUnmanagedCodeSecurity]
1742 public static extern void MassSetZero(out Mass mass); 1743 internal static extern void MassSetZero(out Mass mass);
1743 1744
1744 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassTranslate"), SuppressUnmanagedCodeSecurity] 1745 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassTranslate"), SuppressUnmanagedCodeSecurity]
1745 public static extern void MassTranslate(ref Mass mass, dReal x, dReal y, dReal z); 1746 internal static extern void MassTranslate(ref Mass mass, dReal x, dReal y, dReal z);
1746 1747
1747 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity] 1748 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity]
1748 public static extern void Multiply0(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r); 1749 internal static extern void Multiply0(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r);
1749 1750
1750 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity] 1751 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply0"), SuppressUnmanagedCodeSecurity]
1751 private static extern void MultiplyiM3V3(out Vector3 vout, ref Matrix3 matrix, ref Vector3 vect,int p, int q, int r); 1752 private static extern void MultiplyiM3V3(out Vector3 vout, ref Matrix3 matrix, ref Vector3 vect,int p, int q, int r);
1752 public static void MultiplyM3V3(out Vector3 outvector, ref Matrix3 matrix, ref Vector3 invector) 1753 internal static void MultiplyM3V3(out Vector3 outvector, ref Matrix3 matrix, ref Vector3 invector)
1753 { 1754 {
1754 MultiplyiM3V3(out outvector, ref matrix, ref invector, 3, 3, 1); 1755 MultiplyiM3V3(out outvector, ref matrix, ref invector, 3, 3, 1);
1755 } 1756 }
1756 1757
1757 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply1"), SuppressUnmanagedCodeSecurity] 1758 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply1"), SuppressUnmanagedCodeSecurity]
1758 public static extern void Multiply1(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r); 1759 internal static extern void Multiply1(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r);
1759 1760
1760 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply2"), SuppressUnmanagedCodeSecurity] 1761 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMultiply2"), SuppressUnmanagedCodeSecurity]
1761 public static extern void Multiply2(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r); 1762 internal static extern void Multiply2(out dReal A00, ref dReal B00, ref dReal C00, int p, int q, int r);
1762 1763
1763 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQFromAxisAndAngle"), SuppressUnmanagedCodeSecurity] 1764 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQFromAxisAndAngle"), SuppressUnmanagedCodeSecurity]
1764 public static extern void QFromAxisAndAngle(out Quaternion q, dReal ax, dReal ay, dReal az, dReal angle); 1765 internal static extern void QFromAxisAndAngle(out Quaternion q, dReal ax, dReal ay, dReal az, dReal angle);
1765 1766
1766 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQfromR"), SuppressUnmanagedCodeSecurity] 1767 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQfromR"), SuppressUnmanagedCodeSecurity]
1767 public static extern void QfromR(out Quaternion q, ref Matrix3 R); 1768 internal static extern void QfromR(out Quaternion q, ref Matrix3 R);
1768 1769
1769 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply0"), SuppressUnmanagedCodeSecurity] 1770 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply0"), SuppressUnmanagedCodeSecurity]
1770 public static extern void QMultiply0(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1771 internal static extern void QMultiply0(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1771 1772
1772 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply1"), SuppressUnmanagedCodeSecurity] 1773 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply1"), SuppressUnmanagedCodeSecurity]
1773 public static extern void QMultiply1(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1774 internal static extern void QMultiply1(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1774 1775
1775 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply2"), SuppressUnmanagedCodeSecurity] 1776 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply2"), SuppressUnmanagedCodeSecurity]
1776 public static extern void QMultiply2(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1777 internal static extern void QMultiply2(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1777 1778
1778 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply3"), SuppressUnmanagedCodeSecurity] 1779 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply3"), SuppressUnmanagedCodeSecurity]
1779 public static extern void QMultiply3(out Quaternion qa, ref Quaternion qb, ref Quaternion qc); 1780 internal static extern void QMultiply3(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1780 1781
1781 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQSetIdentity"), SuppressUnmanagedCodeSecurity] 1782 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQSetIdentity"), SuppressUnmanagedCodeSecurity]
1782 public static extern void QSetIdentity(out Quaternion q); 1783 internal static extern void QSetIdentity(out Quaternion q);
1783 1784
1784 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity] 1785 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity]
1785 public static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref Vector3 center, ref Vector3 extents, int depth); 1786 internal static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref Vector3 center, ref Vector3 extents, int depth);
1786 1787
1787 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity] 1788 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQuadTreeSpaceCreate"), SuppressUnmanagedCodeSecurity]
1788 public static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref dReal centerX, ref dReal extentsX, int depth); 1789 internal static extern IntPtr QuadTreeSpaceCreate(IntPtr space, ref dReal centerX, ref dReal extentsX, int depth);
1789 1790
1790 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRandReal"), SuppressUnmanagedCodeSecurity] 1791 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRandReal"), SuppressUnmanagedCodeSecurity]
1791 public static extern dReal RandReal(); 1792 internal static extern dReal RandReal();
1792 1793
1793 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFrom2Axes"), SuppressUnmanagedCodeSecurity] 1794 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFrom2Axes"), SuppressUnmanagedCodeSecurity]
1794 public static extern void RFrom2Axes(out Matrix3 R, dReal ax, dReal ay, dReal az, dReal bx, dReal by, dReal bz); 1795 internal static extern void RFrom2Axes(out Matrix3 R, dReal ax, dReal ay, dReal az, dReal bx, dReal by, dReal bz);
1795 1796
1796 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromAxisAndAngle"), SuppressUnmanagedCodeSecurity] 1797 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromAxisAndAngle"), SuppressUnmanagedCodeSecurity]
1797 public static extern void RFromAxisAndAngle(out Matrix3 R, dReal x, dReal y, dReal z, dReal angle); 1798 internal static extern void RFromAxisAndAngle(out Matrix3 R, dReal x, dReal y, dReal z, dReal angle);
1798 1799
1799 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromEulerAngles"), SuppressUnmanagedCodeSecurity] 1800 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromEulerAngles"), SuppressUnmanagedCodeSecurity]
1800 public static extern void RFromEulerAngles(out Matrix3 R, dReal phi, dReal theta, dReal psi); 1801 internal static extern void RFromEulerAngles(out Matrix3 R, dReal phi, dReal theta, dReal psi);
1801 1802
1802 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRfromQ"), SuppressUnmanagedCodeSecurity] 1803 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRfromQ"), SuppressUnmanagedCodeSecurity]
1803 public static extern void RfromQ(out Matrix3 R, ref Quaternion q); 1804 internal static extern void RfromQ(out Matrix3 R, ref Quaternion q);
1804 1805
1805 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromZAxis"), SuppressUnmanagedCodeSecurity] 1806 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromZAxis"), SuppressUnmanagedCodeSecurity]
1806 public static extern void RFromZAxis(out Matrix3 R, dReal ax, dReal ay, dReal az); 1807 internal static extern void RFromZAxis(out Matrix3 R, dReal ax, dReal ay, dReal az);
1807 1808
1808 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRSetIdentity"), SuppressUnmanagedCodeSecurity] 1809 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRSetIdentity"), SuppressUnmanagedCodeSecurity]
1809 public static extern void RSetIdentity(out Matrix3 R); 1810 internal static extern void RSetIdentity(out Matrix3 R);
1810 1811
1811 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetValue"), SuppressUnmanagedCodeSecurity] 1812 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetValue"), SuppressUnmanagedCodeSecurity]
1812 public static extern void SetValue(out dReal a, int n); 1813 internal static extern void SetValue(out dReal a, int n);
1813 1814
1814 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetZero"), SuppressUnmanagedCodeSecurity] 1815 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetZero"), SuppressUnmanagedCodeSecurity]
1815 public static extern void SetZero(out dReal a, int n); 1816 internal static extern void SetZero(out dReal a, int n);
1816 1817
1817 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSimpleSpaceCreate"), SuppressUnmanagedCodeSecurity] 1818 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSimpleSpaceCreate"), SuppressUnmanagedCodeSecurity]
1818 public static extern IntPtr SimpleSpaceCreate(IntPtr space); 1819 internal static extern IntPtr SimpleSpaceCreate(IntPtr space);
1819 1820
1820 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveCholesky"), SuppressUnmanagedCodeSecurity] 1821 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveCholesky"), SuppressUnmanagedCodeSecurity]
1821 public static extern void SolveCholesky(ref dReal L, out dReal b, int n); 1822 internal static extern void SolveCholesky(ref dReal L, out dReal b, int n);
1822 1823
1823 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1"), SuppressUnmanagedCodeSecurity] 1824 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1"), SuppressUnmanagedCodeSecurity]
1824 public static extern void SolveL1(ref dReal L, out dReal b, int n, int nskip); 1825 internal static extern void SolveL1(ref dReal L, out dReal b, int n, int nskip);
1825 1826
1826 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1T"), SuppressUnmanagedCodeSecurity] 1827 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveL1T"), SuppressUnmanagedCodeSecurity]
1827 public static extern void SolveL1T(ref dReal L, out dReal b, int n, int nskip); 1828 internal static extern void SolveL1T(ref dReal L, out dReal b, int n, int nskip);
1828 1829
1829 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveLDLT"), SuppressUnmanagedCodeSecurity] 1830 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveLDLT"), SuppressUnmanagedCodeSecurity]
1830 public static extern void SolveLDLT(ref dReal L, ref dReal d, out dReal b, int n, int nskip); 1831 internal static extern void SolveLDLT(ref dReal L, ref dReal d, out dReal b, int n, int nskip);
1831 1832
1832 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceAdd"), SuppressUnmanagedCodeSecurity] 1833 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceAdd"), SuppressUnmanagedCodeSecurity]
1833 public static extern void SpaceAdd(IntPtr space, IntPtr geom); 1834 internal static extern void SpaceAdd(IntPtr space, IntPtr geom);
1834 1835
1835 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceLockQuery"), SuppressUnmanagedCodeSecurity] 1836 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceLockQuery"), SuppressUnmanagedCodeSecurity]
1836 public static extern bool SpaceLockQuery(IntPtr space); 1837 internal static extern bool SpaceLockQuery(IntPtr space);
1837 1838
1838 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceClean"), SuppressUnmanagedCodeSecurity] 1839 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceClean"), SuppressUnmanagedCodeSecurity]
1839 public static extern void SpaceClean(IntPtr space); 1840 internal static extern void SpaceClean(IntPtr space);
1840 1841
1841 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide"), SuppressUnmanagedCodeSecurity] 1842 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide"), SuppressUnmanagedCodeSecurity]
1842 public static extern void SpaceCollide(IntPtr space, IntPtr data, NearCallback callback); 1843 internal static extern void SpaceCollide(IntPtr space, IntPtr data, NearCallback callback);
1843 1844
1844 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide2"), SuppressUnmanagedCodeSecurity] 1845 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide2"), SuppressUnmanagedCodeSecurity]
1845 public static extern void SpaceCollide2(IntPtr space1, IntPtr space2, IntPtr data, NearCallback callback); 1846 internal static extern void SpaceCollide2(IntPtr space1, IntPtr space2, IntPtr data, NearCallback callback);
1846 1847
1847 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceDestroy"), SuppressUnmanagedCodeSecurity] 1848 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceDestroy"), SuppressUnmanagedCodeSecurity]
1848 public static extern void SpaceDestroy(IntPtr space); 1849 internal static extern void SpaceDestroy(IntPtr space);
1849 1850
1850 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetCleanup"), SuppressUnmanagedCodeSecurity] 1851 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetCleanup"), SuppressUnmanagedCodeSecurity]
1851 public static extern bool SpaceGetCleanup(IntPtr space); 1852 internal static extern bool SpaceGetCleanup(IntPtr space);
1852 1853
1853 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetNumGeoms"), SuppressUnmanagedCodeSecurity] 1854 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetNumGeoms"), SuppressUnmanagedCodeSecurity]
1854 public static extern int SpaceGetNumGeoms(IntPtr space); 1855 internal static extern int SpaceGetNumGeoms(IntPtr space);
1855 1856
1856 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetGeom"), SuppressUnmanagedCodeSecurity] 1857 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetGeom"), SuppressUnmanagedCodeSecurity]
1857 public static extern IntPtr SpaceGetGeom(IntPtr space, int i); 1858 internal static extern IntPtr SpaceGetGeom(IntPtr space, int i);
1858 1859
1859 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetSublevel"), SuppressUnmanagedCodeSecurity] 1860 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetSublevel"), SuppressUnmanagedCodeSecurity]
1860 public static extern int SpaceGetSublevel(IntPtr space); 1861 internal static extern int SpaceGetSublevel(IntPtr space);
1861 1862
1862 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceQuery"), SuppressUnmanagedCodeSecurity] 1863 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceQuery"), SuppressUnmanagedCodeSecurity]
1863 public static extern bool SpaceQuery(IntPtr space, IntPtr geom); 1864 internal static extern bool SpaceQuery(IntPtr space, IntPtr geom);
1864 1865
1865 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceRemove"), SuppressUnmanagedCodeSecurity] 1866 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceRemove"), SuppressUnmanagedCodeSecurity]
1866 public static extern void SpaceRemove(IntPtr space, IntPtr geom); 1867 internal static extern void SpaceRemove(IntPtr space, IntPtr geom);
1867 1868
1868 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetCleanup"), SuppressUnmanagedCodeSecurity] 1869 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetCleanup"), SuppressUnmanagedCodeSecurity]
1869 public static extern void SpaceSetCleanup(IntPtr space, bool mode); 1870 internal static extern void SpaceSetCleanup(IntPtr space, bool mode);
1870 1871
1871 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetSublevel"), SuppressUnmanagedCodeSecurity] 1872 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetSublevel"), SuppressUnmanagedCodeSecurity]
1872 public static extern void SpaceSetSublevel(IntPtr space, int sublevel); 1873 internal static extern void SpaceSetSublevel(IntPtr space, int sublevel);
1873 1874
1874 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSweepAndPruneSpaceCreate"), SuppressUnmanagedCodeSecurity] 1875 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSweepAndPruneSpaceCreate"), SuppressUnmanagedCodeSecurity]
1875 public static extern IntPtr SweepAndPruneSpaceCreate(IntPtr space, int AxisOrder); 1876 internal static extern IntPtr SweepAndPruneSpaceCreate(IntPtr space, int AxisOrder);
1876 1877
1877 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dVectorScale"), SuppressUnmanagedCodeSecurity] 1878 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dVectorScale"), SuppressUnmanagedCodeSecurity]
1878 public static extern void VectorScale(out dReal a, ref dReal d, int n); 1879 internal static extern void VectorScale(out dReal a, ref dReal d, int n);
1879 1880
1880 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldCreate"), SuppressUnmanagedCodeSecurity] 1881 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldCreate"), SuppressUnmanagedCodeSecurity]
1881 public static extern IntPtr WorldCreate(); 1882 internal static extern IntPtr WorldCreate();
1882 1883
1883 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldDestroy"), SuppressUnmanagedCodeSecurity] 1884 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldDestroy"), SuppressUnmanagedCodeSecurity]
1884 public static extern void WorldDestroy(IntPtr world); 1885 internal static extern void WorldDestroy(IntPtr world);
1885 1886
1886 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity] 1887 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity]
1887 public static extern int WorldGetAutoDisableAverageSamplesCount(IntPtr world); 1888 internal static extern int WorldGetAutoDisableAverageSamplesCount(IntPtr world);
1888 1889
1889 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 1890 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
1890 public static extern dReal WorldGetAutoDisableAngularThreshold(IntPtr world); 1891 internal static extern dReal WorldGetAutoDisableAngularThreshold(IntPtr world);
1891 1892
1892 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 1893 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
1893 public static extern bool WorldGetAutoDisableFlag(IntPtr world); 1894 internal static extern bool WorldGetAutoDisableFlag(IntPtr world);
1894 1895
1895 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 1896 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
1896 public static extern dReal WorldGetAutoDisableLinearThreshold(IntPtr world); 1897 internal static extern dReal WorldGetAutoDisableLinearThreshold(IntPtr world);
1897 1898
1898 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 1899 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
1899 public static extern int WorldGetAutoDisableSteps(IntPtr world); 1900 internal static extern int WorldGetAutoDisableSteps(IntPtr world);
1900 1901
1901 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 1902 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
1902 public static extern dReal WorldGetAutoDisableTime(IntPtr world); 1903 internal static extern dReal WorldGetAutoDisableTime(IntPtr world);
1903 1904
1904 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity] 1905 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity]
1905 public static extern int WorldGetAutoEnableDepthSF1(IntPtr world); 1906 internal static extern int WorldGetAutoEnableDepthSF1(IntPtr world);
1906 1907
1907 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetCFM"), SuppressUnmanagedCodeSecurity] 1908 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetCFM"), SuppressUnmanagedCodeSecurity]
1908 public static extern dReal WorldGetCFM(IntPtr world); 1909 internal static extern dReal WorldGetCFM(IntPtr world);
1909 1910
1910 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetERP"), SuppressUnmanagedCodeSecurity] 1911 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetERP"), SuppressUnmanagedCodeSecurity]
1911 public static extern dReal WorldGetERP(IntPtr world); 1912 internal static extern dReal WorldGetERP(IntPtr world);
1912 1913
1913 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity] 1914 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity]
1914 public static extern void WorldGetGravity(IntPtr world, out Vector3 gravity); 1915 internal static extern void WorldGetGravity(IntPtr world, out Vector3 gravity);
1915 1916
1916 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity] 1917 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity]
1917 public static extern void WorldGetGravity(IntPtr world, out dReal X); 1918 internal static extern void WorldGetGravity(IntPtr world, out dReal X);
1918 1919
1919 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity] 1920 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity]
1920 public static extern dReal WorldGetContactMaxCorrectingVel(IntPtr world); 1921 internal static extern dReal WorldGetContactMaxCorrectingVel(IntPtr world);
1921 1922
1922 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity] 1923 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity]
1923 public static extern dReal WorldGetContactSurfaceLayer(IntPtr world); 1924 internal static extern dReal WorldGetContactSurfaceLayer(IntPtr world);
1924 1925
1925 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDamping"), SuppressUnmanagedCodeSecurity] 1926 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDamping"), SuppressUnmanagedCodeSecurity]
1926 public static extern dReal WorldGetAngularDamping(IntPtr world); 1927 internal static extern dReal WorldGetAngularDamping(IntPtr world);
1927 1928
1928 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 1929 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
1929 public static extern dReal WorldGetAngularDampingThreshold(IntPtr world); 1930 internal static extern dReal WorldGetAngularDampingThreshold(IntPtr world);
1930 1931
1931 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDamping"), SuppressUnmanagedCodeSecurity] 1932 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDamping"), SuppressUnmanagedCodeSecurity]
1932 public static extern dReal WorldGetLinearDamping(IntPtr world); 1933 internal static extern dReal WorldGetLinearDamping(IntPtr world);
1933 1934
1934 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 1935 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
1935 public static extern dReal WorldGetLinearDampingThreshold(IntPtr world); 1936 internal static extern dReal WorldGetLinearDampingThreshold(IntPtr world);
1936 1937
1937 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity] 1938 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity]
1938 public static extern int WorldGetQuickStepNumIterations(IntPtr world); 1939 internal static extern int WorldGetQuickStepNumIterations(IntPtr world);
1939 1940
1940 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepW"), SuppressUnmanagedCodeSecurity] 1941 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepW"), SuppressUnmanagedCodeSecurity]
1941 public static extern dReal WorldGetQuickStepW(IntPtr world); 1942 internal static extern dReal WorldGetQuickStepW(IntPtr world);
1942 1943
1943 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity] 1944 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity]
1944 public static extern dReal WorldGetMaxAngularSpeed(IntPtr world); 1945 internal static extern dReal WorldGetMaxAngularSpeed(IntPtr world);
1945 1946
1946 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity] 1947 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity]
1947 public static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out Vector3 force); 1948 internal static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out Vector3 force);
1948 1949
1949 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity] 1950 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldImpulseToForce"), SuppressUnmanagedCodeSecurity]
1950 public static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out dReal forceX); 1951 internal static extern void WorldImpulseToForce(IntPtr world, dReal stepsize, dReal ix, dReal iy, dReal iz, out dReal forceX);
1951 1952
1952 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldQuickStep"), SuppressUnmanagedCodeSecurity] 1953 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldQuickStep"), SuppressUnmanagedCodeSecurity]
1953 public static extern void WorldQuickStep(IntPtr world, dReal stepsize); 1954 internal static extern void WorldQuickStep(IntPtr world, dReal stepsize);
1954 1955
1955 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDamping"), SuppressUnmanagedCodeSecurity] 1956 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDamping"), SuppressUnmanagedCodeSecurity]
1956 public static extern void WorldSetAngularDamping(IntPtr world, dReal scale); 1957 internal static extern void WorldSetAngularDamping(IntPtr world, dReal scale);
1957 1958
1958 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity] 1959 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
1959 public static extern void WorldSetAngularDampingThreshold(IntPtr world, dReal threshold); 1960 internal static extern void WorldSetAngularDampingThreshold(IntPtr world, dReal threshold);
1960 1961
1961 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity] 1962 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
1962 public static extern void WorldSetAutoDisableAngularThreshold(IntPtr world, dReal angular_threshold); 1963 internal static extern void WorldSetAutoDisableAngularThreshold(IntPtr world, dReal angular_threshold);
1963 1964
1964 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity] 1965 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity]
1965 public static extern void WorldSetAutoDisableAverageSamplesCount(IntPtr world, int average_samples_count); 1966 internal static extern void WorldSetAutoDisableAverageSamplesCount(IntPtr world, int average_samples_count);
1966 1967
1967 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableFlag"), SuppressUnmanagedCodeSecurity] 1968 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
1968 public static extern void WorldSetAutoDisableFlag(IntPtr world, bool do_auto_disable); 1969 internal static extern void WorldSetAutoDisableFlag(IntPtr world, bool do_auto_disable);
1969 1970
1970 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity] 1971 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
1971 public static extern void WorldSetAutoDisableLinearThreshold(IntPtr world, dReal linear_threshold); 1972 internal static extern void WorldSetAutoDisableLinearThreshold(IntPtr world, dReal linear_threshold);
1972 1973
1973 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableSteps"), SuppressUnmanagedCodeSecurity] 1974 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
1974 public static extern void WorldSetAutoDisableSteps(IntPtr world, int steps); 1975 internal static extern void WorldSetAutoDisableSteps(IntPtr world, int steps);
1975 1976
1976 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableTime"), SuppressUnmanagedCodeSecurity] 1977 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
1977 public static extern void WorldSetAutoDisableTime(IntPtr world, dReal time); 1978 internal static extern void WorldSetAutoDisableTime(IntPtr world, dReal time);
1978 1979
1979 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity] 1980 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity]
1980 public static extern void WorldSetAutoEnableDepthSF1(IntPtr world, int autoEnableDepth); 1981 internal static extern void WorldSetAutoEnableDepthSF1(IntPtr world, int autoEnableDepth);
1981 1982
1982 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetCFM"), SuppressUnmanagedCodeSecurity] 1983 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetCFM"), SuppressUnmanagedCodeSecurity]
1983 public static extern void WorldSetCFM(IntPtr world, dReal cfm); 1984 internal static extern void WorldSetCFM(IntPtr world, dReal cfm);
1984 1985
1985 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity] 1986 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity]
1986 public static extern void WorldSetContactMaxCorrectingVel(IntPtr world, dReal vel); 1987 internal static extern void WorldSetContactMaxCorrectingVel(IntPtr world, dReal vel);
1987 1988
1988 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity] 1989 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity]
1989 public static extern void WorldSetContactSurfaceLayer(IntPtr world, dReal depth); 1990 internal static extern void WorldSetContactSurfaceLayer(IntPtr world, dReal depth);
1990 1991
1991 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetDamping"), SuppressUnmanagedCodeSecurity] 1992 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetDamping"), SuppressUnmanagedCodeSecurity]
1992 public static extern void WorldSetDamping(IntPtr world, dReal linear_scale, dReal angular_scale); 1993 internal static extern void WorldSetDamping(IntPtr world, dReal linear_scale, dReal angular_scale);
1993 1994
1994 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetERP"), SuppressUnmanagedCodeSecurity] 1995 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetERP"), SuppressUnmanagedCodeSecurity]
1995 public static extern void WorldSetERP(IntPtr world, dReal erp); 1996 internal static extern void WorldSetERP(IntPtr world, dReal erp);
1996 1997
1997 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetGravity"), SuppressUnmanagedCodeSecurity] 1998 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetGravity"), SuppressUnmanagedCodeSecurity]
1998 public static extern void WorldSetGravity(IntPtr world, dReal x, dReal y, dReal z); 1999 internal static extern void WorldSetGravity(IntPtr world, dReal x, dReal y, dReal z);
1999 2000
2000 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDamping"), SuppressUnmanagedCodeSecurity] 2001 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDamping"), SuppressUnmanagedCodeSecurity]
2001 public static extern void WorldSetLinearDamping(IntPtr world, dReal scale); 2002 internal static extern void WorldSetLinearDamping(IntPtr world, dReal scale);
2002 2003
2003 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity] 2004 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
2004 public static extern void WorldSetLinearDampingThreshold(IntPtr world, dReal threshold); 2005 internal static extern void WorldSetLinearDampingThreshold(IntPtr world, dReal threshold);
2005 2006
2006 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity] 2007 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity]
2007 public static extern void WorldSetQuickStepNumIterations(IntPtr world, int num); 2008 internal static extern void WorldSetQuickStepNumIterations(IntPtr world, int num);
2008 2009
2009 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepW"), SuppressUnmanagedCodeSecurity] 2010 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepW"), SuppressUnmanagedCodeSecurity]
2010 public static extern void WorldSetQuickStepW(IntPtr world, dReal over_relaxation); 2011 internal static extern void WorldSetQuickStepW(IntPtr world, dReal over_relaxation);
2011 2012
2012 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity] 2013 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity]
2013 public static extern void WorldSetMaxAngularSpeed(IntPtr world, dReal max_speed); 2014 internal static extern void WorldSetMaxAngularSpeed(IntPtr world, dReal max_speed);
2014 2015
2015 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStep"), SuppressUnmanagedCodeSecurity] 2016 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStep"), SuppressUnmanagedCodeSecurity]
2016 public static extern void WorldStep(IntPtr world, dReal stepsize); 2017 internal static extern void WorldStep(IntPtr world, dReal stepsize);
2017 2018
2018 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStepFast1"), SuppressUnmanagedCodeSecurity] 2019 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStepFast1"), SuppressUnmanagedCodeSecurity]
2019 public static extern void WorldStepFast1(IntPtr world, dReal stepsize, int maxiterations); 2020 internal static extern void WorldStepFast1(IntPtr world, dReal stepsize, int maxiterations);
2020
2021 [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldExportDIF"), SuppressUnmanagedCodeSecurity]
2022 public static extern void WorldExportDIF(IntPtr world, string filename, bool append, string prefix);
2023 } 2021 }
2024} 2022}
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs
index 0e46471..60cc549 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs
@@ -32,7 +32,6 @@ using System;
32using System.Collections.Generic; 32using System.Collections.Generic;
33using System.Reflection; 33using System.Reflection;
34using OpenMetaverse; 34using OpenMetaverse;
35using OdeAPI;
36using OpenSim.Framework; 35using OpenSim.Framework;
37using OpenSim.Region.PhysicsModules.SharedBase; 36using OpenSim.Region.PhysicsModules.SharedBase;
38using log4net; 37using log4net;
@@ -43,7 +42,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
43 /// Various properties that ODE uses for AMotors but isn't exposed in ODE.NET so we must define them ourselves. 42 /// Various properties that ODE uses for AMotors but isn't exposed in ODE.NET so we must define them ourselves.
44 /// </summary> 43 /// </summary>
45 44
46 public enum dParam : int 45 public enum dParam:int
47 { 46 {
48 LowStop = 0, 47 LowStop = 0,
49 HiStop = 1, 48 HiStop = 1,
@@ -68,7 +67,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
68 StopCFM3 = 8 + 512 67 StopCFM3 = 8 + 512
69 } 68 }
70 69
71 public class OdeCharacter : PhysicsActor 70 public class OdeCharacter:PhysicsActor
72 { 71 {
73 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 72 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
74 73
@@ -122,7 +121,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
122 121
123 private bool m_freemove = false; 122 private bool m_freemove = false;
124 123
125// private string m_name = String.Empty; 124 // private string m_name = String.Empty;
126 // other filter control 125 // other filter control
127 int m_colliderfilter = 0; 126 int m_colliderfilter = 0;
128 int m_colliderGroundfilter = 0; 127 int m_colliderGroundfilter = 0;
@@ -144,7 +143,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
144 143
145 public IntPtr Amotor = IntPtr.Zero; 144 public IntPtr Amotor = IntPtr.Zero;
146 145
147 public d.Mass ShellMass; 146 internal SafeNativeMethods.Mass ShellMass;
148 147
149 public int m_eventsubscription = 0; 148 public int m_eventsubscription = 0;
150 private int m_cureventsubscription = 0; 149 private int m_cureventsubscription = 0;
@@ -165,7 +164,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
165 private float m_targetHoverHeight; 164 private float m_targetHoverHeight;
166 165
167 166
168 public OdeCharacter(uint localID, String avName, ODEScene parent_scene, Vector3 pos, Vector3 pSize, float pfeetOffset, float density, float walk_divisor, float rundivisor) 167 public OdeCharacter(uint localID,String avName,ODEScene parent_scene,Vector3 pos,Vector3 pSize,float pfeetOffset,float density,float walk_divisor,float rundivisor)
169 { 168 {
170 m_uuid = UUID.Random(); 169 m_uuid = UUID.Random();
171 m_localID = localID; 170 m_localID = localID;
@@ -174,21 +173,21 @@ namespace OpenSim.Region.PhysicsModule.ubOde
174 timeStep = parent_scene.ODE_STEPSIZE; 173 timeStep = parent_scene.ODE_STEPSIZE;
175 invtimeStep = 1 / timeStep; 174 invtimeStep = 1 / timeStep;
176 175
177 if (pos.IsFinite()) 176 if(pos.IsFinite())
178 { 177 {
179 if (pos.Z > 99999f) 178 if(pos.Z > 99999f)
180 { 179 {
181 pos.Z = parent_scene.GetTerrainHeightAtXY(127, 127) + 5; 180 pos.Z = parent_scene.GetTerrainHeightAtXY(127,127) + 5;
182 } 181 }
183 if (pos.Z < -100f) // shouldn't this be 0 ? 182 if(pos.Z < -100f) // shouldn't this be 0 ?
184 { 183 {
185 pos.Z = parent_scene.GetTerrainHeightAtXY(127, 127) + 5; 184 pos.Z = parent_scene.GetTerrainHeightAtXY(127,127) + 5;
186 } 185 }
187 _position = pos; 186 _position = pos;
188 } 187 }
189 else 188 else
190 { 189 {
191 _position = new Vector3(((float)m_parent_scene.WorldExtents.X * 0.5f), ((float)m_parent_scene.WorldExtents.Y * 0.5f), parent_scene.GetTerrainHeightAtXY(128f, 128f) + 10f); 190 _position = new Vector3(((float)m_parent_scene.WorldExtents.X * 0.5f),((float)m_parent_scene.WorldExtents.Y * 0.5f),parent_scene.GetTerrainHeightAtXY(128f,128f) + 10f);
192 m_log.Warn("[PHYSICS]: Got NaN Position on Character Create"); 191 m_log.Warn("[PHYSICS]: Got NaN Position on Character Create");
193 } 192 }
194 193
@@ -216,7 +215,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
216 walkDivisor = walk_divisor; 215 walkDivisor = walk_divisor;
217 runDivisor = rundivisor; 216 runDivisor = rundivisor;
218 217
219 m_mass = m_density * m_size.X * m_size.Y * m_size.Z; ; // sure we have a default 218 m_mass = m_density * m_size.X * m_size.Y * m_size.Z;
219 ; // sure we have a default
220 220
221 PID_D = basePID_D * m_mass * invtimeStep; 221 PID_D = basePID_D * m_mass * invtimeStep;
222 PID_P = basePID_P * m_mass * invtimeStep; 222 PID_P = basePID_P * m_mass * invtimeStep;
@@ -225,13 +225,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde
225 225
226 Name = avName; 226 Name = avName;
227 227
228 AddChange(changes.Add, null); 228 AddChange(changes.Add,null);
229 } 229 }
230 230
231 public override int PhysicsActorType 231 public override int PhysicsActorType
232 { 232 {
233 get { return (int)ActorTypes.Agent; } 233 get
234 set { return; } 234 {
235 return (int)ActorTypes.Agent;
236 }
237 set
238 {
239 return;
240 }
235 } 241 }
236 242
237 public override void getContactData(ref ContactData cdata) 243 public override void getContactData(ref ContactData cdata)
@@ -241,68 +247,116 @@ namespace OpenSim.Region.PhysicsModule.ubOde
241 cdata.softcolide = false; 247 cdata.softcolide = false;
242 } 248 }
243 249
244 public override bool Building { get; set; } 250 public override bool Building
251 {
252 get; set;
253 }
245 254
246 /// <summary> 255 /// <summary>
247 /// If this is set, the avatar will move faster 256 /// If this is set, the avatar will move faster
248 /// </summary> 257 /// </summary>
249 public override bool SetAlwaysRun 258 public override bool SetAlwaysRun
250 { 259 {
251 get { return m_alwaysRun; } 260 get
252 set { m_alwaysRun = value; } 261 {
262 return m_alwaysRun;
263 }
264 set
265 {
266 m_alwaysRun = value;
267 }
253 } 268 }
254 269
255 public override uint LocalID 270 public override uint LocalID
256 { 271 {
257 get { return m_localID; } 272 get
258 set { m_localID = value; } 273 {
274 return m_localID;
275 }
276 set
277 {
278 m_localID = value;
279 }
259 } 280 }
260 281
261 public override PhysicsActor ParentActor 282 public override PhysicsActor ParentActor
262 { 283 {
263 get { return (PhysicsActor)this; } 284 get
285 {
286 return (PhysicsActor)this;
287 }
264 } 288 }
265 289
266 public override bool Grabbed 290 public override bool Grabbed
267 { 291 {
268 set { return; } 292 set
293 {
294 return;
295 }
269 } 296 }
270 297
271 public override bool Selected 298 public override bool Selected
272 { 299 {
273 set { return; } 300 set
301 {
302 return;
303 }
274 } 304 }
275 305
276 public override float Buoyancy 306 public override float Buoyancy
277 { 307 {
278 get { return m_buoyancy; } 308 get
279 set { m_buoyancy = value; } 309 {
310 return m_buoyancy;
311 }
312 set
313 {
314 m_buoyancy = value;
315 }
280 } 316 }
281 317
282 public override bool FloatOnWater 318 public override bool FloatOnWater
283 { 319 {
284 set { return; } 320 set
321 {
322 return;
323 }
285 } 324 }
286 325
287 public override bool IsPhysical 326 public override bool IsPhysical
288 { 327 {
289 get { return m_isPhysical; } 328 get
290 set { return; } 329 {
330 return m_isPhysical;
331 }
332 set
333 {
334 return;
335 }
291 } 336 }
292 337
293 public override bool ThrottleUpdates 338 public override bool ThrottleUpdates
294 { 339 {
295 get { return false; } 340 get
296 set { return; } 341 {
342 return false;
343 }
344 set
345 {
346 return;
347 }
297 } 348 }
298 349
299 public override bool Flying 350 public override bool Flying
300 { 351 {
301 get { return m_flying; } 352 get
353 {
354 return m_flying;
355 }
302 set 356 set
303 { 357 {
304 m_flying = value; 358 m_flying = value;
305// m_log.DebugFormat("[PHYSICS]: Set OdeCharacter Flying to {0}", flying); 359 // m_log.DebugFormat("[PHYSICS]: Set OdeCharacter Flying to {0}", flying);
306 } 360 }
307 } 361 }
308 362
@@ -312,23 +366,26 @@ namespace OpenSim.Region.PhysicsModule.ubOde
312 /// </summary> 366 /// </summary>
313 public override bool IsColliding 367 public override bool IsColliding
314 { 368 {
315 get { return (m_iscolliding || m_iscollidingGround); } 369 get
370 {
371 return (m_iscolliding || m_iscollidingGround);
372 }
316 set 373 set
317 { 374 {
318 if (value) 375 if(value)
319 { 376 {
320 m_colliderfilter += 3; 377 m_colliderfilter += 3;
321 if (m_colliderfilter > 3) 378 if(m_colliderfilter > 3)
322 m_colliderfilter = 3; 379 m_colliderfilter = 3;
323 } 380 }
324 else 381 else
325 { 382 {
326 m_colliderfilter--; 383 m_colliderfilter--;
327 if (m_colliderfilter < 0) 384 if(m_colliderfilter < 0)
328 m_colliderfilter = 0; 385 m_colliderfilter = 0;
329 } 386 }
330 387
331 if (m_colliderfilter == 0) 388 if(m_colliderfilter == 0)
332 m_iscolliding = false; 389 m_iscolliding = false;
333 else 390 else
334 { 391 {
@@ -344,28 +401,31 @@ namespace OpenSim.Region.PhysicsModule.ubOde
344 /// </summary> 401 /// </summary>
345 public override bool CollidingGround 402 public override bool CollidingGround
346 { 403 {
347 get { return m_iscollidingGround; } 404 get
405 {
406 return m_iscollidingGround;
407 }
348 set 408 set
349 { 409 {
350/* we now control this 410 /* we now control this
351 if (value) 411 if (value)
352 { 412 {
353 m_colliderGroundfilter += 2; 413 m_colliderGroundfilter += 2;
354 if (m_colliderGroundfilter > 2) 414 if (m_colliderGroundfilter > 2)
355 m_colliderGroundfilter = 2; 415 m_colliderGroundfilter = 2;
356 } 416 }
357 else 417 else
358 { 418 {
359 m_colliderGroundfilter--; 419 m_colliderGroundfilter--;
360 if (m_colliderGroundfilter < 0) 420 if (m_colliderGroundfilter < 0)
361 m_colliderGroundfilter = 0; 421 m_colliderGroundfilter = 0;
362 } 422 }
363 423
364 if (m_colliderGroundfilter == 0) 424 if (m_colliderGroundfilter == 0)
365 m_iscollidingGround = false; 425 m_iscollidingGround = false;
366 else 426 else
367 m_iscollidingGround = true; 427 m_iscollidingGround = true;
368 */ 428 */
369 } 429 }
370 430
371 } 431 }
@@ -375,31 +435,34 @@ namespace OpenSim.Region.PhysicsModule.ubOde
375 /// </summary> 435 /// </summary>
376 public override bool CollidingObj 436 public override bool CollidingObj
377 { 437 {
378 get { return m_iscollidingObj; } 438 get
439 {
440 return m_iscollidingObj;
441 }
379 set 442 set
380 { 443 {
381 // Ubit filter this also 444 // Ubit filter this also
382 if (value) 445 if(value)
383 { 446 {
384 m_colliderObjectfilter += 2; 447 m_colliderObjectfilter += 2;
385 if (m_colliderObjectfilter > 2) 448 if(m_colliderObjectfilter > 2)
386 m_colliderObjectfilter = 2; 449 m_colliderObjectfilter = 2;
387 } 450 }
388 else 451 else
389 { 452 {
390 m_colliderObjectfilter--; 453 m_colliderObjectfilter--;
391 if (m_colliderObjectfilter < 0) 454 if(m_colliderObjectfilter < 0)
392 m_colliderObjectfilter = 0; 455 m_colliderObjectfilter = 0;
393 } 456 }
394 457
395 if (m_colliderObjectfilter == 0) 458 if(m_colliderObjectfilter == 0)
396 m_iscollidingObj = false; 459 m_iscollidingObj = false;
397 else 460 else
398 m_iscollidingObj = true; 461 m_iscollidingObj = true;
399 462
400// m_iscollidingObj = value; 463 // m_iscollidingObj = value;
401 464
402 if (m_iscollidingObj) 465 if(m_iscollidingObj)
403 m_pidControllerActive = false; 466 m_pidControllerActive = false;
404 else 467 else
405 m_pidControllerActive = true; 468 m_pidControllerActive = true;
@@ -418,7 +481,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
418 481
419 public override bool Stopped 482 public override bool Stopped
420 { 483 {
421 get { return _zeroFlag; } 484 get
485 {
486 return _zeroFlag;
487 }
422 } 488 }
423 489
424 /// <summary> 490 /// <summary>
@@ -428,20 +494,23 @@ namespace OpenSim.Region.PhysicsModule.ubOde
428 /// </summary> 494 /// </summary>
429 public override Vector3 Position 495 public override Vector3 Position
430 { 496 {
431 get { return _position; } 497 get
498 {
499 return _position;
500 }
432 set 501 set
433 { 502 {
434 if (value.IsFinite()) 503 if(value.IsFinite())
435 { 504 {
436 if (value.Z > 9999999f) 505 if(value.Z > 9999999f)
437 { 506 {
438 value.Z = m_parent_scene.GetTerrainHeightAtXY(127, 127) + 5; 507 value.Z = m_parent_scene.GetTerrainHeightAtXY(127,127) + 5;
439 } 508 }
440 if (value.Z < -100f) 509 if(value.Z < -100f)
441 { 510 {
442 value.Z = m_parent_scene.GetTerrainHeightAtXY(127, 127) + 5; 511 value.Z = m_parent_scene.GetTerrainHeightAtXY(127,127) + 5;
443 } 512 }
444 AddChange(changes.Position, value); 513 AddChange(changes.Position,value);
445 } 514 }
446 else 515 else
447 { 516 {
@@ -452,8 +521,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde
452 521
453 public override Vector3 RotationalVelocity 522 public override Vector3 RotationalVelocity
454 { 523 {
455 get { return m_rotationalVelocity; } 524 get
456 set { m_rotationalVelocity = value; } 525 {
526 return m_rotationalVelocity;
527 }
528 set
529 {
530 m_rotationalVelocity = value;
531 }
457 } 532 }
458 533
459 /// <summary> 534 /// <summary>
@@ -468,7 +543,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
468 } 543 }
469 set 544 set
470 { 545 {
471 if (value.IsFinite()) 546 if(value.IsFinite())
472 { 547 {
473 if(value.X <0.01f) 548 if(value.X <0.01f)
474 value.X = 0.01f; 549 value.X = 0.01f;
@@ -477,7 +552,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
477 if(value.Z <0.01f) 552 if(value.Z <0.01f)
478 value.Z = 0.01f; 553 value.Z = 0.01f;
479 554
480 AddChange(changes.Size, value); 555 AddChange(changes.Size,value);
481 } 556 }
482 else 557 else
483 { 558 {
@@ -486,21 +561,21 @@ namespace OpenSim.Region.PhysicsModule.ubOde
486 } 561 }
487 } 562 }
488 563
489 public override void setAvatarSize(Vector3 size, float feetOffset) 564 public override void setAvatarSize(Vector3 size,float feetOffset)
490 { 565 {
491 if (size.IsFinite()) 566 if(size.IsFinite())
492 { 567 {
493 if (size.X < 0.01f) 568 if(size.X < 0.01f)
494 size.X = 0.01f; 569 size.X = 0.01f;
495 if (size.Y < 0.01f) 570 if(size.Y < 0.01f)
496 size.Y = 0.01f; 571 size.Y = 0.01f;
497 if (size.Z < 0.01f) 572 if(size.Z < 0.01f)
498 size.Z = 0.01f; 573 size.Z = 0.01f;
499 574
500 strAvatarSize st = new strAvatarSize(); 575 strAvatarSize st = new strAvatarSize();
501 st.size = size; 576 st.size = size;
502 st.offset = feetOffset; 577 st.offset = feetOffset;
503 AddChange(changes.AvatarSize, st); 578 AddChange(changes.AvatarSize,st);
504 } 579 }
505 else 580 else
506 { 581 {
@@ -545,32 +620,44 @@ namespace OpenSim.Region.PhysicsModule.ubOde
545 620
546 public override Vector3 Force 621 public override Vector3 Force
547 { 622 {
548 get { return _target_velocity; } 623 get
549 set { return; } 624 {
625 return _target_velocity;
626 }
627 set
628 {
629 return;
630 }
550 } 631 }
551 632
552 public override int VehicleType 633 public override int VehicleType
553 { 634 {
554 get { return 0; } 635 get
555 set { return; } 636 {
637 return 0;
638 }
639 set
640 {
641 return;
642 }
556 } 643 }
557 644
558 public override void VehicleFloatParam(int param, float value) 645 public override void VehicleFloatParam(int param,float value)
559 { 646 {
560 647
561 } 648 }
562 649
563 public override void VehicleVectorParam(int param, Vector3 value) 650 public override void VehicleVectorParam(int param,Vector3 value)
564 { 651 {
565 652
566 } 653 }
567 654
568 public override void VehicleRotationParam(int param, Quaternion rotation) 655 public override void VehicleRotationParam(int param,Quaternion rotation)
569 { 656 {
570 657
571 } 658 }
572 659
573 public override void VehicleFlags(int param, bool remove) 660 public override void VehicleFlags(int param,bool remove)
574 { 661 {
575 662
576 } 663 }
@@ -600,7 +687,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
600 687
601 public override PrimitiveBaseShape Shape 688 public override PrimitiveBaseShape Shape
602 { 689 {
603 set { return; } 690 set
691 {
692 return;
693 }
604 } 694 }
605 695
606 public override Vector3 rootVelocity 696 public override Vector3 rootVelocity
@@ -619,9 +709,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
619 } 709 }
620 set 710 set
621 { 711 {
622 if (value.IsFinite()) 712 if(value.IsFinite())
623 { 713 {
624 AddChange(changes.Velocity, value); 714 AddChange(changes.Velocity,value);
625 } 715 }
626 else 716 else
627 { 717 {
@@ -638,9 +728,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
638 } 728 }
639 set 729 set
640 { 730 {
641 if (value.IsFinite()) 731 if(value.IsFinite())
642 { 732 {
643 AddChange(changes.TargetVelocity, value); 733 AddChange(changes.TargetVelocity,value);
644 } 734 }
645 else 735 else
646 { 736 {
@@ -651,38 +741,62 @@ namespace OpenSim.Region.PhysicsModule.ubOde
651 741
652 public override Vector3 Torque 742 public override Vector3 Torque
653 { 743 {
654 get { return Vector3.Zero; } 744 get
655 set { return; } 745 {
746 return Vector3.Zero;
747 }
748 set
749 {
750 return;
751 }
656 } 752 }
657 753
658 public override float CollisionScore 754 public override float CollisionScore
659 { 755 {
660 get { return 0f; } 756 get
661 set { } 757 {
758 return 0f;
759 }
760 set
761 {
762 }
662 } 763 }
663 764
664 public override bool Kinematic 765 public override bool Kinematic
665 { 766 {
666 get { return false; } 767 get
667 set { } 768 {
769 return false;
770 }
771 set
772 {
773 }
668 } 774 }
669 775
670 public override Quaternion Orientation 776 public override Quaternion Orientation
671 { 777 {
672 get { return m_orientation; } 778 get
779 {
780 return m_orientation;
781 }
673 set 782 set
674 { 783 {
675// fakeori = value; 784 // fakeori = value;
676// givefakeori++; 785 // givefakeori++;
677 value.Normalize(); 786 value.Normalize();
678 AddChange(changes.Orientation, value); 787 AddChange(changes.Orientation,value);
679 } 788 }
680 } 789 }
681 790
682 public override Vector3 Acceleration 791 public override Vector3 Acceleration
683 { 792 {
684 get { return _acceleration; } 793 get
685 set { } 794 {
795 return _acceleration;
796 }
797 set
798 {
799 }
686 } 800 }
687 801
688 public void SetAcceleration(Vector3 accel) 802 public void SetAcceleration(Vector3 accel)
@@ -696,17 +810,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
696 /// The PID controller takes this target velocity and tries to make it a reality 810 /// The PID controller takes this target velocity and tries to make it a reality
697 /// </summary> 811 /// </summary>
698 /// <param name="force"></param> 812 /// <param name="force"></param>
699 public override void AddForce(Vector3 force, bool pushforce) 813 public override void AddForce(Vector3 force,bool pushforce)
700 { 814 {
701 if (force.IsFinite()) 815 if(force.IsFinite())
702 { 816 {
703 if (pushforce) 817 if(pushforce)
704 { 818 {
705 AddChange(changes.Force, force * m_density / (m_parent_scene.ODE_STEPSIZE * 28f)); 819 AddChange(changes.Force,force * m_density / (m_parent_scene.ODE_STEPSIZE * 28f));
706 } 820 }
707 else 821 else
708 { 822 {
709 AddChange(changes.TargetVelocity, force); 823 AddChange(changes.TargetVelocity,force);
710 } 824 }
711 } 825 }
712 else 826 else
@@ -716,19 +830,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde
716 //m_lastUpdateSent = false; 830 //m_lastUpdateSent = false;
717 } 831 }
718 832
719 public override void AddAngularForce(Vector3 force, bool pushforce) 833 public override void AddAngularForce(Vector3 force,bool pushforce)
720 { 834 {
721 835
722 } 836 }
723 837
724 public override void SetMomentum(Vector3 momentum) 838 public override void SetMomentum(Vector3 momentum)
725 { 839 {
726 if (momentum.IsFinite()) 840 if(momentum.IsFinite())
727 AddChange(changes.Momentum, momentum); 841 AddChange(changes.Momentum,momentum);
728 } 842 }
729 843
730 844
731 private void AvatarGeomAndBodyCreation(float npositionX, float npositionY, float npositionZ) 845 private void AvatarGeomAndBodyCreation(float npositionX,float npositionY,float npositionZ)
732 { 846 {
733 // sizes one day should came from visual parameters 847 // sizes one day should came from visual parameters
734 float sx = m_size.X; 848 float sx = m_size.X;
@@ -739,7 +853,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
739 boneOff = bot + 0.3f; 853 boneOff = bot + 0.3f;
740 854
741 float feetsz = sz * 0.45f; 855 float feetsz = sz * 0.45f;
742 if (feetsz > 0.6f) 856 if(feetsz > 0.6f)
743 feetsz = 0.6f; 857 feetsz = 0.6f;
744 858
745 feetOff = bot + feetsz; 859 feetOff = bot + feetsz;
@@ -751,29 +865,28 @@ namespace OpenSim.Region.PhysicsModule.ubOde
751 865
752 m_parent_scene.waitForSpaceUnlock(m_parent_scene.CharsSpace); 866 m_parent_scene.waitForSpaceUnlock(m_parent_scene.CharsSpace);
753 867
754 collider = d.HashSpaceCreate(m_parent_scene.CharsSpace); 868 collider = SafeNativeMethods.SimpleSpaceCreate(m_parent_scene.CharsSpace);
755 d.HashSpaceSetLevels(collider, -4, 3); 869 SafeNativeMethods.SpaceSetSublevel(collider,3);
756 d.SpaceSetSublevel(collider, 3); 870 SafeNativeMethods.SpaceSetCleanup(collider,false);
757 d.SpaceSetCleanup(collider, false); 871 SafeNativeMethods.GeomSetCategoryBits(collider,(uint)m_collisionCategories);
758 d.GeomSetCategoryBits(collider, (uint)m_collisionCategories); 872 SafeNativeMethods.GeomSetCollideBits(collider,(uint)m_collisionFlags);
759 d.GeomSetCollideBits(collider, (uint)m_collisionFlags);
760 873
761 float r = m_size.X; 874 float r = m_size.X;
762 if (m_size.Y > r) 875 if(m_size.Y > r)
763 r = m_size.Y; 876 r = m_size.Y;
764 float l = m_size.Z - r; 877 float l = m_size.Z - r;
765 r *= 0.5f; 878 r *= 0.5f;
766 879
767 capsule = d.CreateCapsule(collider, r, l); 880 capsule = SafeNativeMethods.CreateCapsule(collider,r,l);
768 881
769 m_mass = m_density * m_size.X * m_size.Y * m_size.Z; // update mass 882 m_mass = m_density * m_size.X * m_size.Y * m_size.Z; // update mass
770 883
771 d.MassSetBoxTotal(out ShellMass, m_mass, m_size.X, m_size.Y, m_size.Z); 884 SafeNativeMethods.MassSetBoxTotal(out ShellMass,m_mass,m_size.X,m_size.Y,m_size.Z);
772 885
773 PID_D = basePID_D * m_mass / m_parent_scene.ODE_STEPSIZE; 886 PID_D = basePID_D * m_mass / m_parent_scene.ODE_STEPSIZE;
774 PID_P = basePID_P * m_mass / m_parent_scene.ODE_STEPSIZE; 887 PID_P = basePID_P * m_mass / m_parent_scene.ODE_STEPSIZE;
775 888
776 Body = d.BodyCreate(m_parent_scene.world); 889 Body = SafeNativeMethods.BodyCreate(m_parent_scene.world);
777 890
778 _zeroFlag = false; 891 _zeroFlag = false;
779 m_pidControllerActive = true; 892 m_pidControllerActive = true;
@@ -781,53 +894,53 @@ namespace OpenSim.Region.PhysicsModule.ubOde
781 894
782 _velocity = Vector3.Zero; 895 _velocity = Vector3.Zero;
783 896
784 d.BodySetAutoDisableFlag(Body, false); 897 SafeNativeMethods.BodySetAutoDisableFlag(Body,false);
785 d.BodySetPosition(Body, npositionX, npositionY, npositionZ); 898 SafeNativeMethods.BodySetPosition(Body,npositionX,npositionY,npositionZ);
786 899
787 _position.X = npositionX; 900 _position.X = npositionX;
788 _position.Y = npositionY; 901 _position.Y = npositionY;
789 _position.Z = npositionZ; 902 _position.Z = npositionZ;
790 903
791 d.BodySetMass(Body, ref ShellMass); 904 SafeNativeMethods.BodySetMass(Body,ref ShellMass);
792 d.GeomSetBody(capsule, Body); 905 SafeNativeMethods.GeomSetBody(capsule,Body);
793 906
794 // The purpose of the AMotor here is to keep the avatar's physical 907 // The purpose of the AMotor here is to keep the avatar's physical
795 // surrogate from rotating while moving 908 // surrogate from rotating while moving
796 Amotor = d.JointCreateAMotor(m_parent_scene.world, IntPtr.Zero); 909 Amotor = SafeNativeMethods.JointCreateAMotor(m_parent_scene.world,IntPtr.Zero);
797 d.JointAttach(Amotor, Body, IntPtr.Zero); 910 SafeNativeMethods.JointAttach(Amotor,Body,IntPtr.Zero);
798 911
799 d.JointSetAMotorMode(Amotor, 0); 912 SafeNativeMethods.JointSetAMotorMode(Amotor,0);
800 d.JointSetAMotorNumAxes(Amotor, 3); 913 SafeNativeMethods.JointSetAMotorNumAxes(Amotor,3);
801 d.JointSetAMotorAxis(Amotor, 0, 0, 1, 0, 0); 914 SafeNativeMethods.JointSetAMotorAxis(Amotor,0,0,1,0,0);
802 d.JointSetAMotorAxis(Amotor, 1, 0, 0, 1, 0); 915 SafeNativeMethods.JointSetAMotorAxis(Amotor,1,0,0,1,0);
803 d.JointSetAMotorAxis(Amotor, 2, 0, 0, 0, 1); 916 SafeNativeMethods.JointSetAMotorAxis(Amotor,2,0,0,0,1);
804 917
805 d.JointSetAMotorAngle(Amotor, 0, 0); 918 SafeNativeMethods.JointSetAMotorAngle(Amotor,0,0);
806 d.JointSetAMotorAngle(Amotor, 1, 0); 919 SafeNativeMethods.JointSetAMotorAngle(Amotor,1,0);
807 d.JointSetAMotorAngle(Amotor, 2, 0); 920 SafeNativeMethods.JointSetAMotorAngle(Amotor,2,0);
808 921
809 d.JointSetAMotorParam(Amotor, (int)dParam.StopCFM, 0f); // make it HARD 922 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.StopCFM,0f); // make it HARD
810 d.JointSetAMotorParam(Amotor, (int)dParam.StopCFM2, 0f); 923 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.StopCFM2,0f);
811 d.JointSetAMotorParam(Amotor, (int)dParam.StopCFM3, 0f); 924 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.StopCFM3,0f);
812 d.JointSetAMotorParam(Amotor, (int)dParam.StopERP, 0.8f); 925 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.StopERP,0.8f);
813 d.JointSetAMotorParam(Amotor, (int)dParam.StopERP2, 0.8f); 926 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.StopERP2,0.8f);
814 d.JointSetAMotorParam(Amotor, (int)dParam.StopERP3, 0.8f); 927 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.StopERP3,0.8f);
815 928
816 // These lowstops and high stops are effectively (no wiggle room) 929 // These lowstops and high stops are effectively (no wiggle room)
817 d.JointSetAMotorParam(Amotor, (int)dParam.LowStop, -1e-5f); 930 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.LowStop,-1e-5f);
818 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop, 1e-5f); 931 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.HiStop,1e-5f);
819 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, -1e-5f); 932 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.LoStop2,-1e-5f);
820 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, 1e-5f); 933 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.HiStop2,1e-5f);
821 d.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, -1e-5f); 934 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.LoStop3,-1e-5f);
822 d.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 1e-5f); 935 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.HiStop3,1e-5f);
823 936
824 d.JointSetAMotorParam(Amotor, (int)d.JointParam.Vel, 0); 937 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)SafeNativeMethods.JointParam.Vel,0);
825 d.JointSetAMotorParam(Amotor, (int)d.JointParam.Vel2, 0); 938 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)SafeNativeMethods.JointParam.Vel2,0);
826 d.JointSetAMotorParam(Amotor, (int)d.JointParam.Vel3, 0); 939 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)SafeNativeMethods.JointParam.Vel3,0);
827 940
828 d.JointSetAMotorParam(Amotor, (int)dParam.FMax, 5e8f); 941 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.FMax,5e8f);
829 d.JointSetAMotorParam(Amotor, (int)dParam.FMax2, 5e8f); 942 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.FMax2,5e8f);
830 d.JointSetAMotorParam(Amotor, (int)dParam.FMax3, 5e8f); 943 SafeNativeMethods.JointSetAMotorParam(Amotor,(int)dParam.FMax3,5e8f);
831 } 944 }
832 945
833 /// <summary> 946 /// <summary>
@@ -836,38 +949,38 @@ namespace OpenSim.Region.PhysicsModule.ubOde
836 private void AvatarGeomAndBodyDestroy() 949 private void AvatarGeomAndBodyDestroy()
837 { 950 {
838 // Kill the Amotor 951 // Kill the Amotor
839 if (Amotor != IntPtr.Zero) 952 if(Amotor != IntPtr.Zero)
840 { 953 {
841 d.JointDestroy(Amotor); 954 SafeNativeMethods.JointDestroy(Amotor);
842 Amotor = IntPtr.Zero; 955 Amotor = IntPtr.Zero;
843 } 956 }
844 957
845 if (Body != IntPtr.Zero) 958 if(Body != IntPtr.Zero)
846 { 959 {
847 //kill the body 960 //kill the body
848 d.BodyDestroy(Body); 961 SafeNativeMethods.BodyDestroy(Body);
849 Body = IntPtr.Zero; 962 Body = IntPtr.Zero;
850 } 963 }
851 964
852 //kill the Geoms 965 //kill the Geoms
853 if (capsule != IntPtr.Zero) 966 if(capsule != IntPtr.Zero)
854 { 967 {
855 m_parent_scene.actor_name_map.Remove(capsule); 968 m_parent_scene.actor_name_map.Remove(capsule);
856 m_parent_scene.waitForSpaceUnlock(collider); 969 m_parent_scene.waitForSpaceUnlock(collider);
857 d.GeomDestroy(capsule); 970 SafeNativeMethods.GeomDestroy(capsule);
858 capsule = IntPtr.Zero; 971 capsule = IntPtr.Zero;
859 } 972 }
860 973
861 if (collider != IntPtr.Zero) 974 if(collider != IntPtr.Zero)
862 { 975 {
863 d.SpaceDestroy(collider); 976 SafeNativeMethods.SpaceDestroy(collider);
864 collider = IntPtr.Zero; 977 collider = IntPtr.Zero;
865 } 978 }
866 979
867 } 980 }
868 981
869 //in place 2D rotation around Z assuming rot is normalised and is a rotation around Z 982 //in place 2D rotation around Z assuming rot is normalised and is a rotation around Z
870 public void RotateXYonZ(ref float x, ref float y, ref Quaternion rot) 983 public void RotateXYonZ(ref float x,ref float y,ref Quaternion rot)
871 { 984 {
872 float sin = 2.0f * rot.Z * rot.W; 985 float sin = 2.0f * rot.Z * rot.W;
873 float cos = rot.W * rot.W - rot.Z * rot.Z; 986 float cos = rot.W * rot.W - rot.Z * rot.Z;
@@ -876,22 +989,22 @@ namespace OpenSim.Region.PhysicsModule.ubOde
876 x = tx * cos - y * sin; 989 x = tx * cos - y * sin;
877 y = tx * sin + y * cos; 990 y = tx * sin + y * cos;
878 } 991 }
879 public void RotateXYonZ(ref float x, ref float y, ref float sin, ref float cos) 992 public void RotateXYonZ(ref float x,ref float y,ref float sin,ref float cos)
880 { 993 {
881 float tx = x; 994 float tx = x;
882 x = tx * cos - y * sin; 995 x = tx * cos - y * sin;
883 y = tx * sin + y * cos; 996 y = tx * sin + y * cos;
884 } 997 }
885 public void invRotateXYonZ(ref float x, ref float y, ref float sin, ref float cos) 998 public void invRotateXYonZ(ref float x,ref float y,ref float sin,ref float cos)
886 { 999 {
887 float tx = x; 1000 float tx = x;
888 x = tx * cos + y * sin; 1001 x = tx * cos + y * sin;
889 y = -tx * sin + y * cos; 1002 y = -tx * sin + y * cos;
890 } 1003 }
891 1004
892 public void invRotateXYonZ(ref float x, ref float y, ref Quaternion rot) 1005 public void invRotateXYonZ(ref float x,ref float y,ref Quaternion rot)
893 { 1006 {
894 float sin = - 2.0f * rot.Z * rot.W; 1007 float sin = -2.0f * rot.Z * rot.W;
895 float cos = rot.W * rot.W - rot.Z * rot.Z; 1008 float cos = rot.W * rot.W - rot.Z * rot.Z;
896 float tx = x; 1009 float tx = x;
897 1010
@@ -899,13 +1012,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
899 y = tx * sin + y * cos; 1012 y = tx * sin + y * cos;
900 } 1013 }
901 1014
902 public bool Collide(IntPtr me, IntPtr other, bool reverse, ref d.ContactGeom contact, 1015 internal bool Collide(IntPtr me,IntPtr other,bool reverse,ref SafeNativeMethods.ContactGeom contact,
903 ref d.ContactGeom altContact , ref bool useAltcontact, ref bool feetcollision) 1016 ref SafeNativeMethods.ContactGeom altContact,ref bool useAltcontact,ref bool feetcollision)
904 { 1017 {
905 feetcollision = false; 1018 feetcollision = false;
906 useAltcontact = false; 1019 useAltcontact = false;
907 1020
908 if (me == capsule) 1021 if(me == capsule)
909 { 1022 {
910 Vector3 offset; 1023 Vector3 offset;
911 1024
@@ -915,25 +1028,25 @@ namespace OpenSim.Region.PhysicsModule.ubOde
915 offset.X = contact.pos.X - _position.X; 1028 offset.X = contact.pos.X - _position.X;
916 offset.Y = contact.pos.Y - _position.Y; 1029 offset.Y = contact.pos.Y - _position.Y;
917 1030
918 d.GeomClassID gtype = d.GeomGetClass(other); 1031 SafeNativeMethods.GeomClassID gtype = SafeNativeMethods.GeomGetClass(other);
919 if (gtype == d.GeomClassID.CapsuleClass) 1032 if(gtype == SafeNativeMethods.GeomClassID.CapsuleClass)
920 { 1033 {
921 Vector3 roff = offset * Quaternion.Inverse(m_orientation2D); 1034 Vector3 roff = offset * Quaternion.Inverse(m_orientation2D);
922 float r = roff.X *roff.X / AvaAvaSizeXsq; 1035 float r = roff.X *roff.X / AvaAvaSizeXsq;
923 r += (roff.Y * roff.Y) / AvaAvaSizeYsq; 1036 r += (roff.Y * roff.Y) / AvaAvaSizeYsq;
924 if (r > 1.0f) 1037 if(r > 1.0f)
925 return false; 1038 return false;
926 1039
927 float dp = 1.0f -(float)Math.Sqrt((double)r); 1040 float dp = 1.0f -(float)Math.Sqrt((double)r);
928 if (dp > 0.05f) 1041 if(dp > 0.05f)
929 dp = 0.05f; 1042 dp = 0.05f;
930 1043
931 contact.depth = dp; 1044 contact.depth = dp;
932 1045
933 if (offset.Z < 0) 1046 if(offset.Z < 0)
934 { 1047 {
935 feetcollision = true; 1048 feetcollision = true;
936 if (h < boneOff) 1049 if(h < boneOff)
937 { 1050 {
938 m_collideNormal.X = contact.normal.X; 1051 m_collideNormal.X = contact.normal.X;
939 m_collideNormal.Y = contact.normal.Y; 1052 m_collideNormal.Y = contact.normal.Y;
@@ -944,18 +1057,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
944 return true; 1057 return true;
945 } 1058 }
946 1059
947 if (gtype == d.GeomClassID.SphereClass && d.GeomGetBody(other) != IntPtr.Zero) 1060 if(gtype == SafeNativeMethods.GeomClassID.SphereClass && SafeNativeMethods.GeomGetBody(other) != IntPtr.Zero)
948 { 1061 {
949 if(d.GeomSphereGetRadius(other) < 0.5) 1062 if(SafeNativeMethods.GeomSphereGetRadius(other) < 0.5)
950 return true; 1063 return true;
951 } 1064 }
952 1065
953 if (offset.Z > 0 || contact.normal.Z > 0.35f) 1066 if(offset.Z > 0 || contact.normal.Z > 0.35f)
954 { 1067 {
955 if (offset.Z <= 0) 1068 if(offset.Z <= 0)
956 { 1069 {
957 feetcollision = true; 1070 feetcollision = true;
958 if (h < boneOff) 1071 if(h < boneOff)
959 { 1072 {
960 m_collideNormal.X = contact.normal.X; 1073 m_collideNormal.X = contact.normal.X;
961 m_collideNormal.Y = contact.normal.Y; 1074 m_collideNormal.Y = contact.normal.Y;
@@ -970,7 +1083,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
970 return true; 1083 return true;
971 1084
972 feetcollision = true; 1085 feetcollision = true;
973 if (h < boneOff) 1086 if(h < boneOff)
974 { 1087 {
975 m_collideNormal.X = contact.normal.X; 1088 m_collideNormal.X = contact.normal.X;
976 m_collideNormal.Y = contact.normal.Y; 1089 m_collideNormal.Y = contact.normal.Y;
@@ -990,18 +1103,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
990 t = Math.Abs(t); 1103 t = Math.Abs(t);
991 if(t > 1e-6) 1104 if(t > 1e-6)
992 { 1105 {
993 tdp /= t; 1106 tdp /= t;
994 tdp *= contact.normal.X; 1107 tdp *= contact.normal.X;
995 } 1108 }
996 else 1109 else
997 tdp *= 10; 1110 tdp *= 10;
998 1111
999 if (tdp > 0.25f) 1112 if(tdp > 0.25f)
1000 tdp = 0.25f; 1113 tdp = 0.25f;
1001 1114
1002 altContact.depth = tdp; 1115 altContact.depth = tdp;
1003 1116
1004 if (reverse) 1117 if(reverse)
1005 { 1118 {
1006 altContact.normal.X = offset.X; 1119 altContact.normal.X = offset.X;
1007 altContact.normal.Y = offset.Y; 1120 altContact.normal.Y = offset.Y;
@@ -1025,28 +1138,28 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1025 /// <param name="timeStep"></param> 1138 /// <param name="timeStep"></param>
1026 public void Move(List<OdeCharacter> defects) 1139 public void Move(List<OdeCharacter> defects)
1027 { 1140 {
1028 if (Body == IntPtr.Zero) 1141 if(Body == IntPtr.Zero)
1029 return; 1142 return;
1030 1143
1031 d.Vector3 dtmp = d.BodyGetPosition(Body); 1144 SafeNativeMethods.Vector3 dtmp = SafeNativeMethods.BodyGetPosition(Body);
1032 Vector3 localpos = new Vector3(dtmp.X, dtmp.Y, dtmp.Z); 1145 Vector3 localpos = new Vector3(dtmp.X,dtmp.Y,dtmp.Z);
1033 1146
1034 // the Amotor still lets avatar rotation to drift during colisions 1147 // the Amotor still lets avatar rotation to drift during colisions
1035 // so force it back to identity 1148 // so force it back to identity
1036 1149
1037 d.Quaternion qtmp; 1150 SafeNativeMethods.Quaternion qtmp;
1038 qtmp.W = m_orientation2D.W; 1151 qtmp.W = m_orientation2D.W;
1039 qtmp.X = m_orientation2D.X; 1152 qtmp.X = m_orientation2D.X;
1040 qtmp.Y = m_orientation2D.Y; 1153 qtmp.Y = m_orientation2D.Y;
1041 qtmp.Z = m_orientation2D.Z; 1154 qtmp.Z = m_orientation2D.Z;
1042 d.BodySetQuaternion(Body, ref qtmp); 1155 SafeNativeMethods.BodySetQuaternion(Body,ref qtmp);
1043 1156
1044 if (m_pidControllerActive == false) 1157 if(m_pidControllerActive == false)
1045 { 1158 {
1046 _zeroPosition = localpos; 1159 _zeroPosition = localpos;
1047 } 1160 }
1048 1161
1049 if (!localpos.IsFinite()) 1162 if(!localpos.IsFinite())
1050 { 1163 {
1051 m_log.Warn("[PHYSICS]: Avatar Position is non-finite!"); 1164 m_log.Warn("[PHYSICS]: Avatar Position is non-finite!");
1052 defects.Add(this); 1165 defects.Add(this);
@@ -1059,44 +1172,44 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1059 1172
1060 // check outbounds forcing to be in world 1173 // check outbounds forcing to be in world
1061 bool fixbody = false; 1174 bool fixbody = false;
1062 if (localpos.X < 0.0f) 1175 if(localpos.X < 0.0f)
1063 { 1176 {
1064 fixbody = true; 1177 fixbody = true;
1065 localpos.X = 0.1f; 1178 localpos.X = 0.1f;
1066 } 1179 }
1067 else if (localpos.X > m_parent_scene.WorldExtents.X - 0.1f) 1180 else if(localpos.X > m_parent_scene.WorldExtents.X - 0.1f)
1068 { 1181 {
1069 fixbody = true; 1182 fixbody = true;
1070 localpos.X = m_parent_scene.WorldExtents.X - 0.1f; 1183 localpos.X = m_parent_scene.WorldExtents.X - 0.1f;
1071 } 1184 }
1072 if (localpos.Y < 0.0f) 1185 if(localpos.Y < 0.0f)
1073 { 1186 {
1074 fixbody = true; 1187 fixbody = true;
1075 localpos.Y = 0.1f; 1188 localpos.Y = 0.1f;
1076 } 1189 }
1077 else if (localpos.Y > m_parent_scene.WorldExtents.Y - 0.1) 1190 else if(localpos.Y > m_parent_scene.WorldExtents.Y - 0.1)
1078 { 1191 {
1079 fixbody = true; 1192 fixbody = true;
1080 localpos.Y = m_parent_scene.WorldExtents.Y - 0.1f; 1193 localpos.Y = m_parent_scene.WorldExtents.Y - 0.1f;
1081 } 1194 }
1082 if (fixbody) 1195 if(fixbody)
1083 { 1196 {
1084 m_freemove = false; 1197 m_freemove = false;
1085 d.BodySetPosition(Body, localpos.X, localpos.Y, localpos.Z); 1198 SafeNativeMethods.BodySetPosition(Body,localpos.X,localpos.Y,localpos.Z);
1086 } 1199 }
1087 1200
1088 float breakfactor; 1201 float breakfactor;
1089 1202
1090 Vector3 vec = Vector3.Zero; 1203 Vector3 vec = Vector3.Zero;
1091 dtmp = d.BodyGetLinearVel(Body); 1204 dtmp = SafeNativeMethods.BodyGetLinearVel(Body);
1092 Vector3 vel = new Vector3(dtmp.X, dtmp.Y, dtmp.Z); 1205 Vector3 vel = new Vector3(dtmp.X,dtmp.Y,dtmp.Z);
1093 float velLengthSquared = vel.LengthSquared(); 1206 float velLengthSquared = vel.LengthSquared();
1094 1207
1095 Vector3 ctz = _target_velocity; 1208 Vector3 ctz = _target_velocity;
1096 1209
1097 float movementdivisor = 1f; 1210 float movementdivisor = 1f;
1098 //Ubit change divisions into multiplications below 1211 //Ubit change divisions into multiplications below
1099 if (!m_alwaysRun) 1212 if(!m_alwaysRun)
1100 movementdivisor = 1 / walkDivisor; 1213 movementdivisor = 1 / walkDivisor;
1101 else 1214 else
1102 movementdivisor = 1 / runDivisor; 1215 movementdivisor = 1 / runDivisor;
@@ -1107,25 +1220,25 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1107 //****************************************** 1220 //******************************************
1108 // colide with land 1221 // colide with land
1109 1222
1110 d.AABB aabb; 1223 SafeNativeMethods.AABB aabb;
1111// d.GeomGetAABB(feetbox, out aabb); 1224 // d.GeomGetAABB(feetbox, out aabb);
1112 d.GeomGetAABB(capsule, out aabb); 1225 SafeNativeMethods.GeomGetAABB(capsule,out aabb);
1113 float chrminZ = aabb.MinZ; // move up a bit 1226 float chrminZ = aabb.MinZ; // move up a bit
1114 Vector3 posch = localpos; 1227 Vector3 posch = localpos;
1115 1228
1116 float ftmp; 1229 float ftmp;
1117 1230
1118 if (m_flying) 1231 if(m_flying)
1119 { 1232 {
1120 ftmp = timeStep; 1233 ftmp = timeStep;
1121 posch.X += vel.X * ftmp; 1234 posch.X += vel.X * ftmp;
1122 posch.Y += vel.Y * ftmp; 1235 posch.Y += vel.Y * ftmp;
1123 } 1236 }
1124 1237
1125 float terrainheight = m_parent_scene.GetTerrainHeightAtXY(posch.X, posch.Y); 1238 float terrainheight = m_parent_scene.GetTerrainHeightAtXY(posch.X,posch.Y);
1126 if (chrminZ < terrainheight) 1239 if(chrminZ < terrainheight)
1127 { 1240 {
1128 if (ctz.Z < 0) 1241 if(ctz.Z < 0)
1129 ctz.Z = 0; 1242 ctz.Z = 0;
1130 1243
1131 if(!m_haveLastFallVel) 1244 if(!m_haveLastFallVel)
@@ -1134,12 +1247,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1134 m_haveLastFallVel = true; 1247 m_haveLastFallVel = true;
1135 } 1248 }
1136 1249
1137 Vector3 n = m_parent_scene.GetTerrainNormalAtXY(posch.X, posch.Y); 1250 Vector3 n = m_parent_scene.GetTerrainNormalAtXY(posch.X,posch.Y);
1138 float depth = terrainheight - chrminZ; 1251 float depth = terrainheight - chrminZ;
1139 1252
1140 vec.Z = depth * PID_P * 50; 1253 vec.Z = depth * PID_P * 50;
1141 1254
1142 if (!m_flying) 1255 if(!m_flying)
1143 { 1256 {
1144 vec.Z += -vel.Z * PID_D; 1257 vec.Z += -vel.Z * PID_D;
1145 if(n.Z < 0.4f) 1258 if(n.Z < 0.4f)
@@ -1155,19 +1268,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1155 n.X = 0f; 1268 n.X = 0f;
1156 n.Y = 0f; 1269 n.Y = 0f;
1157 n.Z = 1.0f; 1270 n.Z = 1.0f;
1158 } 1271 }
1159 } 1272 }
1160 } 1273 }
1161 1274
1162 if (depth < 0.2f) 1275 if(depth < 0.2f)
1163 { 1276 {
1164 m_colliderGroundfilter++; 1277 m_colliderGroundfilter++;
1165 if (m_colliderGroundfilter > 2) 1278 if(m_colliderGroundfilter > 2)
1166 { 1279 {
1167 m_iscolliding = true; 1280 m_iscolliding = true;
1168 m_colliderfilter = 2; 1281 m_colliderfilter = 2;
1169 1282
1170 if (m_colliderGroundfilter > 10) 1283 if(m_colliderGroundfilter > 10)
1171 { 1284 {
1172 m_colliderGroundfilter = 10; 1285 m_colliderGroundfilter = 10;
1173 m_freemove = false; 1286 m_freemove = false;
@@ -1187,19 +1300,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1187 contact.SurfaceNormal.X = -n.X; 1300 contact.SurfaceNormal.X = -n.X;
1188 contact.SurfaceNormal.Y = -n.Y; 1301 contact.SurfaceNormal.Y = -n.Y;
1189 contact.SurfaceNormal.Z = -n.Z; 1302 contact.SurfaceNormal.Z = -n.Z;
1190 contact.RelativeSpeed = Vector3.Dot(m_lastFallVel, n); 1303 contact.RelativeSpeed = Vector3.Dot(m_lastFallVel,n);
1191 contact.CharacterFeet = true; 1304 contact.CharacterFeet = true;
1192 AddCollisionEvent(0, contact); 1305 AddCollisionEvent(0,contact);
1193 m_lastFallVel = vel; 1306 m_lastFallVel = vel;
1194 1307
1195// vec.Z *= 0.5f; 1308 // vec.Z *= 0.5f;
1196 } 1309 }
1197 } 1310 }
1198 1311
1199 else 1312 else
1200 { 1313 {
1201 m_colliderGroundfilter -= 5; 1314 m_colliderGroundfilter -= 5;
1202 if (m_colliderGroundfilter <= 0) 1315 if(m_colliderGroundfilter <= 0)
1203 { 1316 {
1204 m_colliderGroundfilter = 0; 1317 m_colliderGroundfilter = 0;
1205 m_iscollidingGround = false; 1318 m_iscollidingGround = false;
@@ -1210,7 +1323,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1210 { 1323 {
1211 m_haveLastFallVel = false; 1324 m_haveLastFallVel = false;
1212 m_colliderGroundfilter -= 5; 1325 m_colliderGroundfilter -= 5;
1213 if (m_colliderGroundfilter <= 0) 1326 if(m_colliderGroundfilter <= 0)
1214 { 1327 {
1215 m_colliderGroundfilter = 0; 1328 m_colliderGroundfilter = 0;
1216 m_iscollidingGround = false; 1329 m_iscollidingGround = false;
@@ -1219,11 +1332,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1219 1332
1220 bool hoverPIDActive = false; 1333 bool hoverPIDActive = false;
1221 1334
1222 if (m_useHoverPID && m_PIDHoverTau != 0 && m_PIDHoverHeight != 0) 1335 if(m_useHoverPID && m_PIDHoverTau != 0 && m_PIDHoverHeight != 0)
1223 { 1336 {
1224 hoverPIDActive = true; 1337 hoverPIDActive = true;
1225 1338
1226 switch (m_PIDHoverType) 1339 switch(m_PIDHoverType)
1227 { 1340 {
1228 case PIDHoverType.Ground: 1341 case PIDHoverType.Ground:
1229 m_targetHoverHeight = terrainheight + m_PIDHoverHeight; 1342 m_targetHoverHeight = terrainheight + m_PIDHoverHeight;
@@ -1231,20 +1344,20 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1231 1344
1232 case PIDHoverType.GroundAndWater: 1345 case PIDHoverType.GroundAndWater:
1233 float waterHeight = m_parent_scene.GetWaterLevel(); 1346 float waterHeight = m_parent_scene.GetWaterLevel();
1234 if (terrainheight > waterHeight) 1347 if(terrainheight > waterHeight)
1235 m_targetHoverHeight = terrainheight + m_PIDHoverHeight; 1348 m_targetHoverHeight = terrainheight + m_PIDHoverHeight;
1236 else 1349 else
1237 m_targetHoverHeight = waterHeight + m_PIDHoverHeight; 1350 m_targetHoverHeight = waterHeight + m_PIDHoverHeight;
1238 break; 1351 break;
1239 } // end switch (m_PIDHoverType) 1352 } // end switch (m_PIDHoverType)
1240 1353
1241 // don't go underground 1354 // don't go underground
1242 if (m_targetHoverHeight > terrainheight + 0.5f * (aabb.MaxZ - aabb.MinZ)) 1355 if(m_targetHoverHeight > terrainheight + 0.5f * (aabb.MaxZ - aabb.MinZ))
1243 { 1356 {
1244 float fz = (m_targetHoverHeight - localpos.Z); 1357 float fz = (m_targetHoverHeight - localpos.Z);
1245 1358
1246 // if error is zero, use position control; otherwise, velocity control 1359 // if error is zero, use position control; otherwise, velocity control
1247 if (Math.Abs(fz) < 0.01f) 1360 if(Math.Abs(fz) < 0.01f)
1248 { 1361 {
1249 ctz.Z = 0; 1362 ctz.Z = 0;
1250 } 1363 }
@@ -1254,9 +1367,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1254 fz /= m_PIDHoverTau; 1367 fz /= m_PIDHoverTau;
1255 1368
1256 float tmp = Math.Abs(fz); 1369 float tmp = Math.Abs(fz);
1257 if (tmp > 50) 1370 if(tmp > 50)
1258 fz = 50 * Math.Sign(fz); 1371 fz = 50 * Math.Sign(fz);
1259 else if (tmp < 0.1) 1372 else if(tmp < 0.1)
1260 fz = 0.1f * Math.Sign(fz); 1373 fz = 0.1f * Math.Sign(fz);
1261 1374
1262 ctz.Z = fz; 1375 ctz.Z = fz;
@@ -1265,43 +1378,43 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1265 } 1378 }
1266 1379
1267 //****************************************** 1380 //******************************************
1268 if (!m_iscolliding) 1381 if(!m_iscolliding)
1269 m_collideNormal.Z = 0; 1382 m_collideNormal.Z = 0;
1270 1383
1271 bool tviszero = (ctz.X == 0.0f && ctz.Y == 0.0f && ctz.Z == 0.0f); 1384 bool tviszero = (ctz.X == 0.0f && ctz.Y == 0.0f && ctz.Z == 0.0f);
1272 1385
1273 if (!tviszero) 1386 if(!tviszero)
1274 { 1387 {
1275 m_freemove = false; 1388 m_freemove = false;
1276 1389
1277 // movement relative to surface if moving on it 1390 // movement relative to surface if moving on it
1278 // dont disturbe vertical movement, ie jumps 1391 // dont disturbe vertical movement, ie jumps
1279 if (m_iscolliding && !m_flying && ctz.Z == 0 && m_collideNormal.Z > 0.2f && m_collideNormal.Z < 0.94f) 1392 if(m_iscolliding && !m_flying && ctz.Z == 0 && m_collideNormal.Z > 0.2f && m_collideNormal.Z < 0.94f)
1280 { 1393 {
1281 float p = ctz.X * m_collideNormal.X + ctz.Y * m_collideNormal.Y; 1394 float p = ctz.X * m_collideNormal.X + ctz.Y * m_collideNormal.Y;
1282 ctz.X *= (float)Math.Sqrt(1 - m_collideNormal.X * m_collideNormal.X); 1395 ctz.X *= (float)Math.Sqrt(1 - m_collideNormal.X * m_collideNormal.X);
1283 ctz.Y *= (float)Math.Sqrt(1 - m_collideNormal.Y * m_collideNormal.Y); 1396 ctz.Y *= (float)Math.Sqrt(1 - m_collideNormal.Y * m_collideNormal.Y);
1284 ctz.Z -= p; 1397 ctz.Z -= p;
1285 if (ctz.Z < 0) 1398 if(ctz.Z < 0)
1286 ctz.Z *= 2; 1399 ctz.Z *= 2;
1287 1400
1288 } 1401 }
1289 1402
1290 } 1403 }
1291 1404
1292 if (!m_freemove) 1405 if(!m_freemove)
1293 { 1406 {
1294 1407
1295 // if velocity is zero, use position control; otherwise, velocity control 1408 // if velocity is zero, use position control; otherwise, velocity control
1296 if (tviszero && m_iscolliding && !m_flying) 1409 if(tviszero && m_iscolliding && !m_flying)
1297 { 1410 {
1298 // keep track of where we stopped. No more slippin' & slidin' 1411 // keep track of where we stopped. No more slippin' & slidin'
1299 if (!_zeroFlag) 1412 if(!_zeroFlag)
1300 { 1413 {
1301 _zeroFlag = true; 1414 _zeroFlag = true;
1302 _zeroPosition = localpos; 1415 _zeroPosition = localpos;
1303 } 1416 }
1304 if (m_pidControllerActive) 1417 if(m_pidControllerActive)
1305 { 1418 {
1306 // We only want to deactivate the PID Controller if we think we want to have our surrogate 1419 // We only want to deactivate the PID Controller if we think we want to have our surrogate
1307 // react to the physics scene by moving it's position. 1420 // react to the physics scene by moving it's position.
@@ -1314,12 +1427,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1314 vec.Z += -vel.Z * PID_D + (_zeroPosition.Z - localpos.Z) * PID_P; 1427 vec.Z += -vel.Z * PID_D + (_zeroPosition.Z - localpos.Z) * PID_P;
1315 else 1428 else
1316 vec.Z += (-vel.Z * PID_D + (_zeroPosition.Z - localpos.Z) * PID_P) * 0.2f; 1429 vec.Z += (-vel.Z * PID_D + (_zeroPosition.Z - localpos.Z) * PID_P) * 0.2f;
1317/* 1430 /*
1318 if (flying) 1431 if (flying)
1319 { 1432 {
1320 vec.Z += -vel.Z * PID_D + (_zeroPosition.Z - localpos.Z) * PID_P; 1433 vec.Z += -vel.Z * PID_D + (_zeroPosition.Z - localpos.Z) * PID_P;
1321 } 1434 }
1322*/ 1435 */
1323 } 1436 }
1324 //PidStatus = true; 1437 //PidStatus = true;
1325 } 1438 }
@@ -1328,12 +1441,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1328 m_pidControllerActive = true; 1441 m_pidControllerActive = true;
1329 _zeroFlag = false; 1442 _zeroFlag = false;
1330 1443
1331 if (m_iscolliding) 1444 if(m_iscolliding)
1332 { 1445 {
1333 if (!m_flying) 1446 if(!m_flying)
1334 { 1447 {
1335 // we are on a surface 1448 // we are on a surface
1336 if (ctz.Z > 0f) 1449 if(ctz.Z > 0f)
1337 { 1450 {
1338 // moving up or JUMPING 1451 // moving up or JUMPING
1339 vec.Z += (ctz.Z - vel.Z) * PID_D * 2f; 1452 vec.Z += (ctz.Z - vel.Z) * PID_D * 2f;
@@ -1343,9 +1456,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1343 else 1456 else
1344 { 1457 {
1345 // we are moving down on a surface 1458 // we are moving down on a surface
1346 if (ctz.Z == 0) 1459 if(ctz.Z == 0)
1347 { 1460 {
1348 if (vel.Z > 0) 1461 if(vel.Z > 0)
1349 vec.Z -= vel.Z * PID_D * 2f; 1462 vec.Z -= vel.Z * PID_D * 2f;
1350 vec.X += (ctz.X - vel.X) * (PID_D); 1463 vec.X += (ctz.X - vel.X) * (PID_D);
1351 vec.Y += (ctz.Y - vel.Y) * (PID_D); 1464 vec.Y += (ctz.Y - vel.Y) * (PID_D);
@@ -1353,15 +1466,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1353 // intencionally going down 1466 // intencionally going down
1354 else 1467 else
1355 { 1468 {
1356 if (ctz.Z < vel.Z) 1469 if(ctz.Z < vel.Z)
1357 vec.Z += (ctz.Z - vel.Z) * PID_D; 1470 vec.Z += (ctz.Z - vel.Z) * PID_D;
1358 else 1471 else
1359 { 1472 {
1360 } 1473 }
1361 1474
1362 if (Math.Abs(ctz.X) > Math.Abs(vel.X)) 1475 if(Math.Abs(ctz.X) > Math.Abs(vel.X))
1363 vec.X += (ctz.X - vel.X) * (PID_D); 1476 vec.X += (ctz.X - vel.X) * (PID_D);
1364 if (Math.Abs(ctz.Y) > Math.Abs(vel.Y)) 1477 if(Math.Abs(ctz.Y) > Math.Abs(vel.Y))
1365 vec.Y += (ctz.Y - vel.Y) * (PID_D); 1478 vec.Y += (ctz.Y - vel.Y) * (PID_D);
1366 } 1479 }
1367 } 1480 }
@@ -1378,7 +1491,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1378 } 1491 }
1379 else // ie not colliding 1492 else // ie not colliding
1380 { 1493 {
1381 if (m_flying || hoverPIDActive) //(!m_iscolliding && flying) 1494 if(m_flying || hoverPIDActive) //(!m_iscolliding && flying)
1382 { 1495 {
1383 // we're in mid air suspended 1496 // we're in mid air suspended
1384 vec.X += (ctz.X - vel.X) * (PID_D); 1497 vec.X += (ctz.X - vel.X) * (PID_D);
@@ -1395,13 +1508,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1395 vec.X += (ctz.X - vel.X) * PID_D * 0.833f; 1508 vec.X += (ctz.X - vel.X) * PID_D * 0.833f;
1396 vec.Y += (ctz.Y - vel.Y) * PID_D * 0.833f; 1509 vec.Y += (ctz.Y - vel.Y) * PID_D * 0.833f;
1397 // hack for breaking on fall 1510 // hack for breaking on fall
1398 if (ctz.Z == -9999f) 1511 if(ctz.Z == -9999f)
1399 vec.Z += -vel.Z * PID_D - m_parent_scene.gravityz * m_mass; 1512 vec.Z += -vel.Z * PID_D - m_parent_scene.gravityz * m_mass;
1400 } 1513 }
1401 } 1514 }
1402 } 1515 }
1403 1516
1404 if (velLengthSquared > 2500.0f) // 50m/s apply breaks 1517 if(velLengthSquared > 2500.0f) // 50m/s apply breaks
1405 { 1518 {
1406 breakfactor = 0.16f * m_mass; 1519 breakfactor = 0.16f * m_mass;
1407 vec.X -= breakfactor * vel.X; 1520 vec.X -= breakfactor * vel.X;
@@ -1414,13 +1527,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1414 breakfactor = m_mass; 1527 breakfactor = m_mass;
1415 vec.X -= breakfactor * vel.X; 1528 vec.X -= breakfactor * vel.X;
1416 vec.Y -= breakfactor * vel.Y; 1529 vec.Y -= breakfactor * vel.Y;
1417 if (m_flying) 1530 if(m_flying)
1418 vec.Z -= 0.5f * breakfactor * vel.Z; 1531 vec.Z -= 0.5f * breakfactor * vel.Z;
1419 else 1532 else
1420 vec.Z -= .16f* m_mass * vel.Z; 1533 vec.Z -= .16f* m_mass * vel.Z;
1421 } 1534 }
1422 1535
1423 if (m_flying || hoverPIDActive) 1536 if(m_flying || hoverPIDActive)
1424 { 1537 {
1425 vec.Z -= m_parent_scene.gravityz * m_mass; 1538 vec.Z -= m_parent_scene.gravityz * m_mass;
1426 1539
@@ -1429,18 +1542,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1429 //Added for auto fly height. Kitto Flora 1542 //Added for auto fly height. Kitto Flora
1430 float target_altitude = terrainheight + MinimumGroundFlightOffset; 1543 float target_altitude = terrainheight + MinimumGroundFlightOffset;
1431 1544
1432 if (localpos.Z < target_altitude) 1545 if(localpos.Z < target_altitude)
1433 { 1546 {
1434 vec.Z += (target_altitude - localpos.Z) * PID_P * 5.0f; 1547 vec.Z += (target_altitude - localpos.Z) * PID_P * 5.0f;
1435 } 1548 }
1436 // end add Kitto Flora 1549 // end add Kitto Flora
1437 } 1550 }
1438 } 1551 }
1439 1552
1440 if (vec.IsFinite()) 1553 if(vec.IsFinite())
1441 { 1554 {
1442 if (vec.X != 0 || vec.Y !=0 || vec.Z !=0) 1555 if(vec.X != 0 || vec.Y !=0 || vec.Z !=0)
1443 d.BodyAddForce(Body, vec.X, vec.Y, vec.Z); 1556 SafeNativeMethods.BodyAddForce(Body,vec.X,vec.Y,vec.Z);
1444 } 1557 }
1445 else 1558 else
1446 { 1559 {
@@ -1457,7 +1570,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1457 // _position = localpos; 1570 // _position = localpos;
1458 _position = localpos; 1571 _position = localpos;
1459 1572
1460 if (_zeroFlag) 1573 if(_zeroFlag)
1461 { 1574 {
1462 _velocity = Vector3.Zero; 1575 _velocity = Vector3.Zero;
1463 _acceleration = Vector3.Zero; 1576 _acceleration = Vector3.Zero;
@@ -1465,12 +1578,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1465 } 1578 }
1466 else 1579 else
1467 { 1580 {
1468 Vector3 a =_velocity; // previus velocity 1581 Vector3 a = _velocity; // previus velocity
1469 SetSmooth(ref _velocity, ref vel, 2); 1582 SetSmooth(ref _velocity,ref vel,2);
1470 a = (_velocity - a) * invtimeStep; 1583 a = (_velocity - a) * invtimeStep;
1471 SetSmooth(ref _acceleration, ref a, 2); 1584 SetSmooth(ref _acceleration,ref a,2);
1472 1585
1473 dtmp = d.BodyGetAngularVel(Body); 1586 dtmp = SafeNativeMethods.BodyGetAngularVel(Body);
1474 m_rotationalVelocity.X = 0f; 1587 m_rotationalVelocity.X = 0f;
1475 m_rotationalVelocity.Y = 0f; 1588 m_rotationalVelocity.Y = 0f;
1476 m_rotationalVelocity.Z = dtmp.Z; 1589 m_rotationalVelocity.Z = dtmp.Z;
@@ -1478,30 +1591,30 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1478 } 1591 }
1479 } 1592 }
1480 1593
1481 public void round(ref Vector3 v, int digits) 1594 public void round(ref Vector3 v,int digits)
1482 { 1595 {
1483 v.X = (float)Math.Round(v.X, digits); 1596 v.X = (float)Math.Round(v.X,digits);
1484 v.Y = (float)Math.Round(v.Y, digits); 1597 v.Y = (float)Math.Round(v.Y,digits);
1485 v.Z = (float)Math.Round(v.Z, digits); 1598 v.Z = (float)Math.Round(v.Z,digits);
1486 } 1599 }
1487 1600
1488 public void SetSmooth(ref Vector3 dst, ref Vector3 value) 1601 public void SetSmooth(ref Vector3 dst,ref Vector3 value)
1489 { 1602 {
1490 dst.X = 0.1f * dst.X + 0.9f * value.X; 1603 dst.X = 0.1f * dst.X + 0.9f * value.X;
1491 dst.Y = 0.1f * dst.Y + 0.9f * value.Y; 1604 dst.Y = 0.1f * dst.Y + 0.9f * value.Y;
1492 dst.Z = 0.1f * dst.Z + 0.9f * value.Z; 1605 dst.Z = 0.1f * dst.Z + 0.9f * value.Z;
1493 } 1606 }
1494 1607
1495 public void SetSmooth(ref Vector3 dst, ref Vector3 value, int rounddigits) 1608 public void SetSmooth(ref Vector3 dst,ref Vector3 value,int rounddigits)
1496 { 1609 {
1497 dst.X = 0.4f * dst.X + 0.6f * value.X; 1610 dst.X = 0.4f * dst.X + 0.6f * value.X;
1498 dst.X = (float)Math.Round(dst.X, rounddigits); 1611 dst.X = (float)Math.Round(dst.X,rounddigits);
1499 1612
1500 dst.Y = 0.4f * dst.Y + 0.6f * value.Y; 1613 dst.Y = 0.4f * dst.Y + 0.6f * value.Y;
1501 dst.Y = (float)Math.Round(dst.Y, rounddigits); 1614 dst.Y = (float)Math.Round(dst.Y,rounddigits);
1502 1615
1503 dst.Z = 0.4f * dst.Z + 0.6f * value.Z; 1616 dst.Z = 0.4f * dst.Z + 0.6f * value.Z;
1504 dst.Z = (float)Math.Round(dst.Z, rounddigits); 1617 dst.Z = (float)Math.Round(dst.Z,rounddigits);
1505 } 1618 }
1506 1619
1507 1620
@@ -1516,8 +1629,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1516 { 1629 {
1517 return; 1630 return;
1518 1631
1519// if (Body == IntPtr.Zero) 1632 // if (Body == IntPtr.Zero)
1520// return; 1633 // return;
1521 1634
1522 } 1635 }
1523 1636
@@ -1526,16 +1639,38 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1526 /// </summary> 1639 /// </summary>
1527 public void Destroy() 1640 public void Destroy()
1528 { 1641 {
1529 AddChange(changes.Remove, null); 1642 AddChange(changes.Remove,null);
1530 } 1643 }
1531 1644
1532 public override void CrossingFailure() 1645 public override void CrossingFailure()
1533 { 1646 {
1534 } 1647 }
1535 1648
1536 public override Vector3 PIDTarget { set { return; } } 1649 public override Vector3 PIDTarget
1537 public override bool PIDActive {get {return m_pidControllerActive;} set { return; } } 1650 {
1538 public override float PIDTau { set { return; } } 1651 set
1652 {
1653 return;
1654 }
1655 }
1656 public override bool PIDActive
1657 {
1658 get
1659 {
1660 return m_pidControllerActive;
1661 }
1662 set
1663 {
1664 return;
1665 }
1666 }
1667 public override float PIDTau
1668 {
1669 set
1670 {
1671 return;
1672 }
1673 }
1539 1674
1540 public override float PIDHoverHeight 1675 public override float PIDHoverHeight
1541 { 1676 {
@@ -1548,11 +1683,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1548 { 1683 {
1549 get 1684 get
1550 { 1685 {
1551 return m_useHoverPID; 1686 return m_useHoverPID;
1552 } 1687 }
1553 set 1688 set
1554 { 1689 {
1555 AddChange(changes.PIDHoverActive, value); 1690 AddChange(changes.PIDHoverActive,value);
1556 } 1691 }
1557 } 1692 }
1558 1693
@@ -1568,26 +1703,50 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1568 { 1703 {
1569 set 1704 set
1570 { 1705 {
1571 float tmp =0; 1706 float tmp = 0;
1572 if (value > 0) 1707 if(value > 0)
1573 { 1708 {
1574 float mint = (0.05f > timeStep ? 0.05f : timeStep); 1709 float mint = (0.05f > timeStep ? 0.05f : timeStep);
1575 if (value < mint) 1710 if(value < mint)
1576 tmp = mint; 1711 tmp = mint;
1577 else 1712 else
1578 tmp = value; 1713 tmp = value;
1579 } 1714 }
1580 AddChange(changes.PIDHoverTau, tmp); 1715 AddChange(changes.PIDHoverTau,tmp);
1581 } 1716 }
1582 } 1717 }
1583 1718
1584 public override Quaternion APIDTarget { set { return; } } 1719 public override Quaternion APIDTarget
1720 {
1721 set
1722 {
1723 return;
1724 }
1725 }
1585 1726
1586 public override bool APIDActive { set { return; } } 1727 public override bool APIDActive
1728 {
1729 set
1730 {
1731 return;
1732 }
1733 }
1587 1734
1588 public override float APIDStrength { set { return; } } 1735 public override float APIDStrength
1736 {
1737 set
1738 {
1739 return;
1740 }
1741 }
1589 1742
1590 public override float APIDDamping { set { return; } } 1743 public override float APIDDamping
1744 {
1745 set
1746 {
1747 return;
1748 }
1749 }
1591 1750
1592 public override void SubscribeEvents(int ms) 1751 public override void SubscribeEvents(int ms)
1593 { 1752 {
@@ -1605,34 +1764,34 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1605 CollisionEventsThisFrame.Clear(); 1764 CollisionEventsThisFrame.Clear();
1606 } 1765 }
1607 1766
1608 public override void AddCollisionEvent(uint CollidedWith, ContactPoint contact) 1767 public override void AddCollisionEvent(uint CollidedWith,ContactPoint contact)
1609 { 1768 {
1610 lock(CollisionEventsThisFrame) 1769 lock(CollisionEventsThisFrame)
1611 CollisionEventsThisFrame.AddCollider(CollidedWith, contact); 1770 CollisionEventsThisFrame.AddCollider(CollidedWith,contact);
1612 m_parent_scene.AddCollisionEventReporting(this); 1771 m_parent_scene.AddCollisionEventReporting(this);
1613 } 1772 }
1614 1773
1615 public void SendCollisions(int timestep) 1774 public void SendCollisions(int timestep)
1616 { 1775 {
1617 if (m_cureventsubscription < 50000) 1776 if(m_cureventsubscription < 50000)
1618 m_cureventsubscription += timestep; 1777 m_cureventsubscription += timestep;
1619 1778
1620 if (m_cureventsubscription < m_eventsubscription) 1779 if(m_cureventsubscription < m_eventsubscription)
1621 return; 1780 return;
1622 1781
1623 lock(CollisionEventsThisFrame) 1782 lock(CollisionEventsThisFrame)
1624 { 1783 {
1625 int ncolisions = CollisionEventsThisFrame.m_objCollisionList.Count; 1784 int ncolisions = CollisionEventsThisFrame.m_objCollisionList.Count;
1626 1785
1627 if (!SentEmptyCollisionsEvent || ncolisions > 0) 1786 if(!SentEmptyCollisionsEvent || ncolisions > 0)
1628 { 1787 {
1629 base.SendCollisionUpdate(CollisionEventsThisFrame); 1788 base.SendCollisionUpdate(CollisionEventsThisFrame);
1630 m_cureventsubscription = 0; 1789 m_cureventsubscription = 0;
1631 1790
1632 if (ncolisions == 0) 1791 if(ncolisions == 0)
1633 { 1792 {
1634 SentEmptyCollisionsEvent = true; 1793 SentEmptyCollisionsEvent = true;
1635 // _parent_scene.RemoveCollisionEventReporting(this); 1794 // _parent_scene.RemoveCollisionEventReporting(this);
1636 } 1795 }
1637 else 1796 else
1638 { 1797 {
@@ -1645,20 +1804,20 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1645 1804
1646 public override bool SubscribedEvents() 1805 public override bool SubscribedEvents()
1647 { 1806 {
1648 if (m_eventsubscription > 0) 1807 if(m_eventsubscription > 0)
1649 return true; 1808 return true;
1650 return false; 1809 return false;
1651 } 1810 }
1652 1811
1653 private void changePhysicsStatus(bool NewStatus) 1812 private void changePhysicsStatus(bool NewStatus)
1654 { 1813 {
1655 if (NewStatus != m_isPhysical) 1814 if(NewStatus != m_isPhysical)
1656 { 1815 {
1657 if (NewStatus) 1816 if(NewStatus)
1658 { 1817 {
1659 AvatarGeomAndBodyDestroy(); 1818 AvatarGeomAndBodyDestroy();
1660 1819
1661 AvatarGeomAndBodyCreation(_position.X, _position.Y, _position.Z); 1820 AvatarGeomAndBodyCreation(_position.X,_position.Y,_position.Z);
1662 1821
1663 m_parent_scene.actor_name_map[collider] = (PhysicsActor)this; 1822 m_parent_scene.actor_name_map[collider] = (PhysicsActor)this;
1664 m_parent_scene.actor_name_map[capsule] = (PhysicsActor)this; 1823 m_parent_scene.actor_name_map[capsule] = (PhysicsActor)this;
@@ -1698,20 +1857,20 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1698 1857
1699 private void changeSize(Vector3 pSize) 1858 private void changeSize(Vector3 pSize)
1700 { 1859 {
1701 if (pSize.IsFinite()) 1860 if(pSize.IsFinite())
1702 { 1861 {
1703 // for now only look to Z changes since viewers also don't change X and Y 1862 // for now only look to Z changes since viewers also don't change X and Y
1704 if (pSize.Z != m_size.Z) 1863 if(pSize.Z != m_size.Z)
1705 { 1864 {
1706 AvatarGeomAndBodyDestroy(); 1865 AvatarGeomAndBodyDestroy();
1707 1866
1708 float oldsz = m_size.Z; 1867 float oldsz = m_size.Z;
1709 m_size = pSize; 1868 m_size = pSize;
1710 1869
1711 AvatarGeomAndBodyCreation(_position.X, _position.Y, 1870 AvatarGeomAndBodyCreation(_position.X,_position.Y,
1712 _position.Z + (m_size.Z - oldsz) * 0.5f); 1871 _position.Z + (m_size.Z - oldsz) * 0.5f);
1713 1872
1714// Velocity = Vector3.Zero; 1873 // Velocity = Vector3.Zero;
1715 m_targetVelocity = Vector3.Zero; 1874 m_targetVelocity = Vector3.Zero;
1716 1875
1717 m_parent_scene.actor_name_map[collider] = (PhysicsActor)this; 1876 m_parent_scene.actor_name_map[collider] = (PhysicsActor)this;
@@ -1726,18 +1885,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1726 } 1885 }
1727 } 1886 }
1728 1887
1729 private void changePosition( Vector3 newPos) 1888 private void changePosition(Vector3 newPos)
1730 { 1889 {
1731 if (Body != IntPtr.Zero) 1890 if(Body != IntPtr.Zero)
1732 d.BodySetPosition(Body, newPos.X, newPos.Y, newPos.Z); 1891 SafeNativeMethods.BodySetPosition(Body,newPos.X,newPos.Y,newPos.Z);
1733 _position = newPos; 1892 _position = newPos;
1734 m_freemove = false; 1893 m_freemove = false;
1735 m_pidControllerActive = true; 1894 m_pidControllerActive = true;
1736 } 1895 }
1737 1896
1738 private void changeOrientation(Quaternion newOri) 1897 private void changeOrientation(Quaternion newOri)
1739 { 1898 {
1740 if (m_orientation != newOri) 1899 if(m_orientation != newOri)
1741 { 1900 {
1742 m_orientation = newOri; // keep a copy for core use 1901 m_orientation = newOri; // keep a copy for core use
1743 // but only use rotations around Z 1902 // but only use rotations around Z
@@ -1746,7 +1905,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1746 m_orientation2D.Z = newOri.Z; 1905 m_orientation2D.Z = newOri.Z;
1747 1906
1748 float t = m_orientation2D.W * m_orientation2D.W + m_orientation2D.Z * m_orientation2D.Z; 1907 float t = m_orientation2D.W * m_orientation2D.W + m_orientation2D.Z * m_orientation2D.Z;
1749 if (t > 0) 1908 if(t > 0)
1750 { 1909 {
1751 t = 1.0f / (float)Math.Sqrt(t); 1910 t = 1.0f / (float)Math.Sqrt(t);
1752 m_orientation2D.W *= t; 1911 m_orientation2D.W *= t;
@@ -1760,12 +1919,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1760 m_orientation2D.Y = 0f; 1919 m_orientation2D.Y = 0f;
1761 m_orientation2D.X = 0f; 1920 m_orientation2D.X = 0f;
1762 1921
1763 d.Quaternion myrot = new d.Quaternion(); 1922 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
1764 myrot.X = m_orientation2D.X; 1923 myrot.X = m_orientation2D.X;
1765 myrot.Y = m_orientation2D.Y; 1924 myrot.Y = m_orientation2D.Y;
1766 myrot.Z = m_orientation2D.Z; 1925 myrot.Z = m_orientation2D.Z;
1767 myrot.W = m_orientation2D.W; 1926 myrot.W = m_orientation2D.W;
1768 d.BodySetQuaternion(Body, ref myrot); 1927 SafeNativeMethods.BodySetQuaternion(Body,ref myrot);
1769 } 1928 }
1770 } 1929 }
1771 1930
@@ -1774,8 +1933,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1774 _velocity = newVel; 1933 _velocity = newVel;
1775 setFreeMove(); 1934 setFreeMove();
1776 1935
1777 if (Body != IntPtr.Zero) 1936 if(Body != IntPtr.Zero)
1778 d.BodySetLinearVel(Body, newVel.X, newVel.Y, newVel.Z); 1937 SafeNativeMethods.BodySetLinearVel(Body,newVel.X,newVel.Y,newVel.Z);
1779 } 1938 }
1780 1939
1781 private void changeTargetVelocity(Vector3 newVel) 1940 private void changeTargetVelocity(Vector3 newVel)
@@ -1842,10 +2001,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1842 { 2001 {
1843 setFreeMove(); 2002 setFreeMove();
1844 2003
1845 if (Body != IntPtr.Zero) 2004 if(Body != IntPtr.Zero)
1846 { 2005 {
1847 if (newForce.X != 0f || newForce.Y != 0f || newForce.Z != 0) 2006 if(newForce.X != 0f || newForce.Y != 0f || newForce.Z != 0)
1848 d.BodyAddForce(Body, newForce.X, newForce.Y, newForce.Z); 2007 SafeNativeMethods.BodyAddForce(Body,newForce.X,newForce.Y,newForce.Z);
1849 } 2008 }
1850 } 2009 }
1851 2010
@@ -1855,15 +2014,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1855 _velocity = newmomentum; 2014 _velocity = newmomentum;
1856 setFreeMove(); 2015 setFreeMove();
1857 2016
1858 if (Body != IntPtr.Zero) 2017 if(Body != IntPtr.Zero)
1859 d.BodySetLinearVel(Body, newmomentum.X, newmomentum.Y, newmomentum.Z); 2018 SafeNativeMethods.BodySetLinearVel(Body,newmomentum.X,newmomentum.Y,newmomentum.Z);
1860 } 2019 }
1861 2020
1862 private void changePIDHoverHeight(float val) 2021 private void changePIDHoverHeight(float val)
1863 { 2022 {
1864 m_PIDHoverHeight = val; 2023 m_PIDHoverHeight = val;
1865 if (val == 0) 2024 if(val == 0)
1866 m_useHoverPID = false; 2025 m_useHoverPID = false;
1867 } 2026 }
1868 2027
1869 private void changePIDHoverType(PIDHoverType type) 2028 private void changePIDHoverType(PIDHoverType type)
@@ -1885,15 +2044,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1885 { 2044 {
1886 } 2045 }
1887 2046
1888 public bool DoAChange(changes what, object arg) 2047 public bool DoAChange(changes what,object arg)
1889 { 2048 {
1890 if (collider == IntPtr.Zero && what != changes.Add && what != changes.Remove) 2049 if(collider == IntPtr.Zero && what != changes.Add && what != changes.Remove)
1891 { 2050 {
1892 return false; 2051 return false;
1893 } 2052 }
1894 2053
1895 // nasty switch 2054 // nasty switch
1896 switch (what) 2055 switch(what)
1897 { 2056 {
1898 case changes.Add: 2057 case changes.Add:
1899 changeAdd(); 2058 changeAdd();
@@ -1981,35 +2140,35 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1981 changePIDHoverActive((bool)arg); 2140 changePIDHoverActive((bool)arg);
1982 break; 2141 break;
1983 2142
1984/* not in use for now 2143 /* not in use for now
1985 case changes.Shape: 2144 case changes.Shape:
1986 changeShape((PrimitiveBaseShape)arg); 2145 changeShape((PrimitiveBaseShape)arg);
1987 break; 2146 break;
1988 2147
1989 case changes.CollidesWater: 2148 case changes.CollidesWater:
1990 changeFloatOnWater((bool)arg); 2149 changeFloatOnWater((bool)arg);
1991 break; 2150 break;
1992 2151
1993 case changes.VolumeDtc: 2152 case changes.VolumeDtc:
1994 changeVolumedetetion((bool)arg); 2153 changeVolumedetetion((bool)arg);
1995 break; 2154 break;
1996 2155
1997 case changes.Physical: 2156 case changes.Physical:
1998 changePhysicsStatus((bool)arg); 2157 changePhysicsStatus((bool)arg);
1999 break; 2158 break;
2000 2159
2001 case changes.Selected: 2160 case changes.Selected:
2002 changeSelectedStatus((bool)arg); 2161 changeSelectedStatus((bool)arg);
2003 break; 2162 break;
2004 2163
2005 case changes.disabled: 2164 case changes.disabled:
2006 changeDisable((bool)arg); 2165 changeDisable((bool)arg);
2007 break; 2166 break;
2008 2167
2009 case changes.building: 2168 case changes.building:
2010 changeBuilding((bool)arg); 2169 changeBuilding((bool)arg);
2011 break; 2170 break;
2012*/ 2171 */
2013 case changes.Null: 2172 case changes.Null:
2014 donullchange(); 2173 donullchange();
2015 break; 2174 break;
@@ -2021,9 +2180,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2021 return false; 2180 return false;
2022 } 2181 }
2023 2182
2024 public void AddChange(changes what, object arg) 2183 public void AddChange(changes what,object arg)
2025 { 2184 {
2026 m_parent_scene.AddChange((PhysicsActor)this, what, arg); 2185 m_parent_scene.AddChange((PhysicsActor)this,what,arg);
2027 } 2186 }
2028 2187
2029 private struct strAvatarSize 2188 private struct strAvatarSize
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEDynamics.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEDynamics.cs
index ce10065..23b1192 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEDynamics.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEDynamics.cs
@@ -41,13 +41,7 @@
41// Extensive change Ubit 2012 41// Extensive change Ubit 2012
42 42
43using System; 43using System;
44using System.Collections.Generic;
45using System.Reflection;
46using System.Runtime.InteropServices;
47using log4net;
48using OpenMetaverse; 44using OpenMetaverse;
49using OdeAPI;
50using OpenSim.Framework;
51using OpenSim.Region.PhysicsModules.SharedBase; 45using OpenSim.Region.PhysicsModules.SharedBase;
52 46
53namespace OpenSim.Region.PhysicsModule.ubOde 47namespace OpenSim.Region.PhysicsModule.ubOde
@@ -342,9 +336,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
342 m_amEfect = 1.0f ; // turn it on 336 m_amEfect = 1.0f ; // turn it on
343 m_amDecay = 1.0f - 1.0f / m_angularMotorDecayTimescale; 337 m_amDecay = 1.0f - 1.0f / m_angularMotorDecayTimescale;
344 338
345 if (rootPrim.Body != IntPtr.Zero && !d.BodyIsEnabled(rootPrim.Body) 339 if (rootPrim.Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(rootPrim.Body)
346 && !rootPrim.m_isSelected && !rootPrim.m_disabled) 340 && !rootPrim.m_isSelected && !rootPrim.m_disabled)
347 d.BodyEnable(rootPrim.Body); 341 SafeNativeMethods.BodyEnable(rootPrim.Body);
348 342
349 break; 343 break;
350 case Vehicle.LINEAR_FRICTION_TIMESCALE: 344 case Vehicle.LINEAR_FRICTION_TIMESCALE:
@@ -361,9 +355,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
361 m_lmEfect = 1.0f; // turn it on 355 m_lmEfect = 1.0f; // turn it on
362 356
363 m_ffactor = 0.0f; 357 m_ffactor = 0.0f;
364 if (rootPrim.Body != IntPtr.Zero && !d.BodyIsEnabled(rootPrim.Body) 358 if (rootPrim.Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(rootPrim.Body)
365 && !rootPrim.m_isSelected && !rootPrim.m_disabled) 359 && !rootPrim.m_isSelected && !rootPrim.m_disabled)
366 d.BodyEnable(rootPrim.Body); 360 SafeNativeMethods.BodyEnable(rootPrim.Body);
367 break; 361 break;
368 case Vehicle.LINEAR_MOTOR_OFFSET: 362 case Vehicle.LINEAR_MOTOR_OFFSET:
369 m_linearMotorOffset = new Vector3(pValue, pValue, pValue); 363 m_linearMotorOffset = new Vector3(pValue, pValue, pValue);
@@ -399,9 +393,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
399 m_amEfect = 1.0f; // turn it on 393 m_amEfect = 1.0f; // turn it on
400 m_amDecay = 1.0f - 1.0f / m_angularMotorDecayTimescale; 394 m_amDecay = 1.0f - 1.0f / m_angularMotorDecayTimescale;
401 395
402 if (rootPrim.Body != IntPtr.Zero && !d.BodyIsEnabled(rootPrim.Body) 396 if (rootPrim.Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(rootPrim.Body)
403 && !rootPrim.m_isSelected && !rootPrim.m_disabled) 397 && !rootPrim.m_isSelected && !rootPrim.m_disabled)
404 d.BodyEnable(rootPrim.Body); 398 SafeNativeMethods.BodyEnable(rootPrim.Body);
405 break; 399 break;
406 case Vehicle.LINEAR_FRICTION_TIMESCALE: 400 case Vehicle.LINEAR_FRICTION_TIMESCALE:
407 if (pValue.X < m_timestep) pValue.X = m_timestep; 401 if (pValue.X < m_timestep) pValue.X = m_timestep;
@@ -419,9 +413,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
419 m_lmDecay = 1.0f - 1.0f / m_linearMotorDecayTimescale; 413 m_lmDecay = 1.0f - 1.0f / m_linearMotorDecayTimescale;
420 414
421 m_ffactor = 0.0f; 415 m_ffactor = 0.0f;
422 if (rootPrim.Body != IntPtr.Zero && !d.BodyIsEnabled(rootPrim.Body) 416 if (rootPrim.Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(rootPrim.Body)
423 && !rootPrim.m_isSelected && !rootPrim.m_disabled) 417 && !rootPrim.m_isSelected && !rootPrim.m_disabled)
424 d.BodyEnable(rootPrim.Body); 418 SafeNativeMethods.BodyEnable(rootPrim.Body);
425 break; 419 break;
426 case Vehicle.LINEAR_MOTOR_OFFSET: 420 case Vehicle.LINEAR_MOTOR_OFFSET:
427 m_linearMotorOffset = new Vector3(pValue.X, pValue.Y, pValue.Z); 421 m_linearMotorOffset = new Vector3(pValue.X, pValue.Y, pValue.Z);
@@ -772,30 +766,30 @@ namespace OpenSim.Region.PhysicsModule.ubOde
772 { 766 {
773 IntPtr Body = rootPrim.Body; 767 IntPtr Body = rootPrim.Body;
774 768
775 d.Mass dmass; 769 SafeNativeMethods.Mass dmass;
776 d.BodyGetMass(Body, out dmass); 770 SafeNativeMethods.BodyGetMass(Body, out dmass);
777 771
778 d.Quaternion rot = d.BodyGetQuaternion(Body); 772 SafeNativeMethods.Quaternion rot = SafeNativeMethods.BodyGetQuaternion(Body);
779 Quaternion objrotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object 773 Quaternion objrotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object
780 Quaternion rotq = objrotq; // rotq = rotation of object 774 Quaternion rotq = objrotq; // rotq = rotation of object
781 rotq *= m_referenceFrame; // rotq is now rotation in vehicle reference frame 775 rotq *= m_referenceFrame; // rotq is now rotation in vehicle reference frame
782 Quaternion irotq = Quaternion.Inverse(rotq); 776 Quaternion irotq = Quaternion.Inverse(rotq);
783 777
784 d.Vector3 dvtmp; 778 SafeNativeMethods.Vector3 dvtmp;
785 Vector3 tmpV; 779 Vector3 tmpV;
786 Vector3 curVel; // velocity in world 780 Vector3 curVel; // velocity in world
787 Vector3 curAngVel; // angular velocity in world 781 Vector3 curAngVel; // angular velocity in world
788 Vector3 force = Vector3.Zero; // actually linear aceleration until mult by mass in world frame 782 Vector3 force = Vector3.Zero; // actually linear aceleration until mult by mass in world frame
789 Vector3 torque = Vector3.Zero;// actually angular aceleration until mult by Inertia in vehicle frame 783 Vector3 torque = Vector3.Zero;// actually angular aceleration until mult by Inertia in vehicle frame
790 d.Vector3 dtorque = new d.Vector3(); 784 SafeNativeMethods.Vector3 dtorque = new SafeNativeMethods.Vector3();
791 785
792 dvtmp = d.BodyGetLinearVel(Body); 786 dvtmp = SafeNativeMethods.BodyGetLinearVel(Body);
793 curVel.X = dvtmp.X; 787 curVel.X = dvtmp.X;
794 curVel.Y = dvtmp.Y; 788 curVel.Y = dvtmp.Y;
795 curVel.Z = dvtmp.Z; 789 curVel.Z = dvtmp.Z;
796 Vector3 curLocalVel = curVel * irotq; // current velocity in local 790 Vector3 curLocalVel = curVel * irotq; // current velocity in local
797 791
798 dvtmp = d.BodyGetAngularVel(Body); 792 dvtmp = SafeNativeMethods.BodyGetAngularVel(Body);
799 curAngVel.X = dvtmp.X; 793 curAngVel.X = dvtmp.X;
800 curAngVel.Y = dvtmp.Y; 794 curAngVel.Y = dvtmp.Y;
801 curAngVel.Z = dvtmp.Z; 795 curAngVel.Z = dvtmp.Z;
@@ -839,7 +833,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
839 { 833 {
840 // have offset, do it now 834 // have offset, do it now
841 tmpV *= dmass.mass; 835 tmpV *= dmass.mass;
842 d.BodyAddForceAtRelPos(Body, tmpV.X, tmpV.Y, tmpV.Z, m_linearMotorOffset.X, m_linearMotorOffset.Y, m_linearMotorOffset.Z); 836 SafeNativeMethods.BodyAddForceAtRelPos(Body, tmpV.X, tmpV.Y, tmpV.Z, m_linearMotorOffset.X, m_linearMotorOffset.Y, m_linearMotorOffset.Z);
843 } 837 }
844 else 838 else
845 { 839 {
@@ -862,7 +856,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
862 if (m_VhoverTimescale < 300 && rootPrim.prim_geom != IntPtr.Zero) 856 if (m_VhoverTimescale < 300 && rootPrim.prim_geom != IntPtr.Zero)
863 { 857 {
864 // d.Vector3 pos = d.BodyGetPosition(Body); 858 // d.Vector3 pos = d.BodyGetPosition(Body);
865 d.Vector3 pos = d.GeomGetPosition(rootPrim.prim_geom); 859 SafeNativeMethods.Vector3 pos = SafeNativeMethods.GeomGetPosition(rootPrim.prim_geom);
866 pos.Z -= 0.21f; // minor offset that seems to be always there in sl 860 pos.Z -= 0.21f; // minor offset that seems to be always there in sl
867 861
868 float t = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y); 862 float t = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y);
@@ -1181,7 +1175,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1181 1175
1182 if (force.X != 0 || force.Y != 0 || force.Z != 0) 1176 if (force.X != 0 || force.Y != 0 || force.Z != 0)
1183 { 1177 {
1184 d.BodyAddForce(Body, force.X, force.Y, force.Z); 1178 SafeNativeMethods.BodyAddForce(Body, force.X, force.Y, force.Z);
1185 } 1179 }
1186 1180
1187 if (torque.X != 0 || torque.Y != 0 || torque.Z != 0) 1181 if (torque.X != 0 || torque.Y != 0 || torque.Z != 0)
@@ -1191,15 +1185,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1191 dtorque.Y = torque.Y; 1185 dtorque.Y = torque.Y;
1192 dtorque.Z = torque.Z; 1186 dtorque.Z = torque.Z;
1193 1187
1194 d.MultiplyM3V3(out dvtmp, ref dmass.I, ref dtorque); 1188 SafeNativeMethods.MultiplyM3V3(out dvtmp, ref dmass.I, ref dtorque);
1195 d.BodyAddRelTorque(Body, dvtmp.X, dvtmp.Y, dvtmp.Z); // add torque in object frame 1189 SafeNativeMethods.BodyAddRelTorque(Body, dvtmp.X, dvtmp.Y, dvtmp.Z); // add torque in object frame
1196 } 1190 }
1197 1191
1198 torque = rootPrim.m_torque; 1192 torque = rootPrim.m_torque;
1199 torque += rootPrim.m_angularForceacc; 1193 torque += rootPrim.m_angularForceacc;
1200 rootPrim.m_angularForceacc = Vector3.Zero; 1194 rootPrim.m_angularForceacc = Vector3.Zero;
1201 if (torque.X != 0 || torque.Y != 0 || torque.Z != 0) 1195 if (torque.X != 0 || torque.Y != 0 || torque.Z != 0)
1202 d.BodyAddTorque(Body,torque.X, torque.Y, torque.Z); 1196 SafeNativeMethods.BodyAddTorque(Body,torque.X, torque.Y, torque.Z);
1203 } 1197 }
1204 } 1198 }
1205} 1199}
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
index 5465035..bdfbe3d 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
@@ -3,15 +3,10 @@
3 */ 3 */
4 4
5using System; 5using System;
6using System.Collections.Concurrent;
6using System.Threading; 7using System.Threading;
7using System.Collections.Generic;
8using System.IO;
9using System.Reflection;
10using System.Runtime.InteropServices;
11using System.Text;
12using OpenSim.Framework; 8using OpenSim.Framework;
13using OpenSim.Region.PhysicsModules.SharedBase; 9using OpenSim.Region.PhysicsModules.SharedBase;
14using OdeAPI;
15using log4net; 10using log4net;
16using Nini.Config; 11using Nini.Config;
17using OpenMetaverse; 12using OpenMetaverse;
@@ -79,7 +74,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
79 public float MeshSculptphysicalLOD = 32; 74 public float MeshSculptphysicalLOD = 32;
80 public float MinSizeToMeshmerize = 0.1f; 75 public float MinSizeToMeshmerize = 0.1f;
81 76
82 private OpenSim.Framework.BlockingQueue<ODEPhysRepData> workQueue = new OpenSim.Framework.BlockingQueue<ODEPhysRepData>(); 77 private BlockingCollection<ODEPhysRepData> workQueue = new BlockingCollection<ODEPhysRepData>();
83 private bool m_running; 78 private bool m_running;
84 79
85 private Thread m_thread; 80 private Thread m_thread;
@@ -106,10 +101,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
106 private void DoWork() 101 private void DoWork()
107 { 102 {
108 m_mesher.ExpireFileCache(); 103 m_mesher.ExpireFileCache();
104 ODEPhysRepData nextRep;
109 105
110 while(m_running) 106 while(m_running)
111 { 107 {
112 ODEPhysRepData nextRep = workQueue.Dequeue(); 108 workQueue.TryTake(out nextRep, -1);
113 if(!m_running) 109 if(!m_running)
114 return; 110 return;
115 if (nextRep == null) 111 if (nextRep == null)
@@ -138,7 +134,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
138 try 134 try
139 { 135 {
140 m_thread.Abort(); 136 m_thread.Abort();
141 workQueue.Clear(); 137 // workQueue.Dispose();
142 } 138 }
143 catch 139 catch
144 { 140 {
@@ -195,7 +191,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
195 repData.meshState = MeshState.loadingAsset; 191 repData.meshState = MeshState.loadingAsset;
196 192
197 repData.comand = meshWorkerCmnds.getmesh; 193 repData.comand = meshWorkerCmnds.getmesh;
198 workQueue.Enqueue(repData); 194 workQueue.Add(repData);
199 } 195 }
200 } 196 }
201 197
@@ -241,7 +237,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
241 if (needsMeshing(repData)) // no need for pbs now? 237 if (needsMeshing(repData)) // no need for pbs now?
242 { 238 {
243 repData.comand = meshWorkerCmnds.changefull; 239 repData.comand = meshWorkerCmnds.changefull;
244 workQueue.Enqueue(repData); 240 workQueue.Add(repData);
245 } 241 }
246 } 242 }
247 else 243 else
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEModule.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEModule.cs
index 4cb1736..90560fd 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEModule.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEModule.cs
@@ -4,7 +4,6 @@ using System.Reflection;
4using log4net; 4using log4net;
5using Nini.Config; 5using Nini.Config;
6using Mono.Addins; 6using Mono.Addins;
7using OdeAPI;
8using OpenSim.Framework; 7using OpenSim.Framework;
9using OpenSim.Region.Framework.Scenes; 8using OpenSim.Region.Framework.Scenes;
10using OpenSim.Region.Framework.Interfaces; 9using OpenSim.Region.Framework.Interfaces;
@@ -53,9 +52,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
53 if (Util.IsWindows()) 52 if (Util.IsWindows())
54 Util.LoadArchSpecificWindowsDll("ode.dll"); 53 Util.LoadArchSpecificWindowsDll("ode.dll");
55 54
56 d.InitODE(); 55 SafeNativeMethods.InitODE();
57 56
58 string ode_config = d.GetConfiguration(); 57 string ode_config = SafeNativeMethods.GetConfiguration();
59 if (ode_config != null && ode_config != "") 58 if (ode_config != null && ode_config != "")
60 { 59 {
61 m_log.InfoFormat("[ubODE] ode library configuration: {0}", ode_config); 60 m_log.InfoFormat("[ubODE] ode library configuration: {0}", ode_config);
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs
index aa208e2..4e18522 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs
@@ -44,11 +44,8 @@
44using System; 44using System;
45using System.Collections.Generic; 45using System.Collections.Generic;
46using System.Reflection; 46using System.Reflection;
47using System.Runtime.InteropServices;
48using System.Threading;
49using log4net; 47using log4net;
50using OpenMetaverse; 48using OpenMetaverse;
51using OdeAPI;
52using OpenSim.Framework; 49using OpenSim.Framework;
53using OpenSim.Region.PhysicsModules.SharedBase; 50using OpenSim.Region.PhysicsModules.SharedBase;
54 51
@@ -182,7 +179,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
182 private float m_physCost; 179 private float m_physCost;
183 private float m_streamCost; 180 private float m_streamCost;
184 181
185 public d.Mass primdMass; // prim inertia information on it's own referencial 182 internal SafeNativeMethods.Mass primdMass; // prim inertia information on it's own referencial
186 private PhysicsInertiaData m_InertiaOverride; 183 private PhysicsInertiaData m_InertiaOverride;
187 float primMass; // prim own mass 184 float primMass; // prim own mass
188 float primVolume; // prim own volume; 185 float primVolume; // prim own volume;
@@ -196,8 +193,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
196 193
197 private int m_eventsubscription; 194 private int m_eventsubscription;
198 private int m_cureventsubscription; 195 private int m_cureventsubscription;
199 private CollisionEventUpdate CollisionEventsThisFrame = null; 196 private CollisionEventUpdate CollisionEvents = null;
200 private CollisionEventUpdate CollisionVDTCEventsThisFrame = null; 197 private CollisionEventUpdate CollisionVDTCEvents = null;
201 private bool SentEmptyCollisionsEvent; 198 private bool SentEmptyCollisionsEvent;
202 199
203 public volatile bool childPrim; 200 public volatile bool childPrim;
@@ -489,7 +486,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
489 // double buffering 486 // double buffering
490 if(m_fakeInertiaOverride != null) 487 if(m_fakeInertiaOverride != null)
491 { 488 {
492 d.Mass objdmass = new d.Mass(); 489 SafeNativeMethods.Mass objdmass = new SafeNativeMethods.Mass();
493 objdmass.I.M00 = m_fakeInertiaOverride.Inertia.X; 490 objdmass.I.M00 = m_fakeInertiaOverride.Inertia.X;
494 objdmass.I.M11 = m_fakeInertiaOverride.Inertia.Y; 491 objdmass.I.M11 = m_fakeInertiaOverride.Inertia.Y;
495 objdmass.I.M22 = m_fakeInertiaOverride.Inertia.Z; 492 objdmass.I.M22 = m_fakeInertiaOverride.Inertia.Z;
@@ -498,15 +495,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde
498 495
499 if(Math.Abs(m_fakeInertiaOverride.InertiaRotation.W) < 0.999) 496 if(Math.Abs(m_fakeInertiaOverride.InertiaRotation.W) < 0.999)
500 { 497 {
501 d.Matrix3 inertiarotmat = new d.Matrix3(); 498 SafeNativeMethods.Matrix3 inertiarotmat = new SafeNativeMethods.Matrix3();
502 d.Quaternion inertiarot = new d.Quaternion(); 499 SafeNativeMethods.Quaternion inertiarot = new SafeNativeMethods.Quaternion();
503 500
504 inertiarot.X = m_fakeInertiaOverride.InertiaRotation.X; 501 inertiarot.X = m_fakeInertiaOverride.InertiaRotation.X;
505 inertiarot.Y = m_fakeInertiaOverride.InertiaRotation.Y; 502 inertiarot.Y = m_fakeInertiaOverride.InertiaRotation.Y;
506 inertiarot.Z = m_fakeInertiaOverride.InertiaRotation.Z; 503 inertiarot.Z = m_fakeInertiaOverride.InertiaRotation.Z;
507 inertiarot.W = m_fakeInertiaOverride.InertiaRotation.W; 504 inertiarot.W = m_fakeInertiaOverride.InertiaRotation.W;
508 d.RfromQ(out inertiarotmat, ref inertiarot); 505 SafeNativeMethods.RfromQ(out inertiarotmat, ref inertiarot);
509 d.MassRotate(ref objdmass, ref inertiarotmat); 506 SafeNativeMethods.MassRotate(ref objdmass, ref inertiarotmat);
510 } 507 }
511 508
512 inertia.TotalMass = m_fakeInertiaOverride.TotalMass; 509 inertia.TotalMass = m_fakeInertiaOverride.TotalMass;
@@ -530,13 +527,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
530 return inertia; 527 return inertia;
531 } 528 }
532 529
533 d.Vector3 dtmp; 530 SafeNativeMethods.Vector3 dtmp;
534 d.Mass m = new d.Mass(); 531 SafeNativeMethods.Mass m = new SafeNativeMethods.Mass();
535 lock(_parent_scene.OdeLock) 532 lock(_parent_scene.OdeLock)
536 { 533 {
537 d.AllocateODEDataForThread(0); 534 SafeNativeMethods.AllocateODEDataForThread(0);
538 dtmp = d.GeomGetOffsetPosition(prim_geom); 535 dtmp = SafeNativeMethods.GeomGetOffsetPosition(prim_geom);
539 d.BodyGetMass(Body, out m); 536 SafeNativeMethods.BodyGetMass(Body, out m);
540 } 537 }
541 538
542 Vector3 cm = new Vector3(-dtmp.X, -dtmp.Y, -dtmp.Z); 539 Vector3 cm = new Vector3(-dtmp.X, -dtmp.Y, -dtmp.Z);
@@ -572,18 +569,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
572 { 569 {
573 lock (_parent_scene.OdeLock) 570 lock (_parent_scene.OdeLock)
574 { 571 {
575 d.AllocateODEDataForThread(0); 572 SafeNativeMethods.AllocateODEDataForThread(0);
576 573
577 d.Vector3 dtmp; 574 SafeNativeMethods.Vector3 dtmp;
578 if (!childPrim && Body != IntPtr.Zero) 575 if (!childPrim && Body != IntPtr.Zero)
579 { 576 {
580 dtmp = d.BodyGetPosition(Body); 577 dtmp = SafeNativeMethods.BodyGetPosition(Body);
581 return new Vector3(dtmp.X, dtmp.Y, dtmp.Z); 578 return new Vector3(dtmp.X, dtmp.Y, dtmp.Z);
582 } 579 }
583 else if (prim_geom != IntPtr.Zero) 580 else if (prim_geom != IntPtr.Zero)
584 { 581 {
585 d.Quaternion dq; 582 SafeNativeMethods.Quaternion dq;
586 d.GeomCopyQuaternion(prim_geom, out dq); 583 SafeNativeMethods.GeomCopyQuaternion(prim_geom, out dq);
587 Quaternion q; 584 Quaternion q;
588 q.X = dq.X; 585 q.X = dq.X;
589 q.Y = dq.Y; 586 q.Y = dq.Y;
@@ -591,7 +588,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
591 q.W = dq.W; 588 q.W = dq.W;
592 589
593 Vector3 Ptot = m_OBBOffset * q; 590 Vector3 Ptot = m_OBBOffset * q;
594 dtmp = d.GeomGetPosition(prim_geom); 591 dtmp = SafeNativeMethods.GeomGetPosition(prim_geom);
595 Ptot.X += dtmp.X; 592 Ptot.X += dtmp.X;
596 Ptot.Y += dtmp.Y; 593 Ptot.Y += dtmp.Y;
597 Ptot.Z += dtmp.Z; 594 Ptot.Z += dtmp.Z;
@@ -997,16 +994,16 @@ namespace OpenSim.Region.PhysicsModule.ubOde
997 _velocity.Y = 0; 994 _velocity.Y = 0;
998 _velocity.Z = 0; 995 _velocity.Z = 0;
999 996
1000 d.AllocateODEDataForThread(0); 997 SafeNativeMethods.AllocateODEDataForThread(0);
1001 998
1002 m_lastVelocity = _velocity; 999 m_lastVelocity = _velocity;
1003 if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) 1000 if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE)
1004 m_vehicle.Stop(); 1001 m_vehicle.Stop();
1005 1002
1006 if(Body != IntPtr.Zero) 1003 if(Body != IntPtr.Zero)
1007 d.BodySetLinearVel(Body, 0, 0, 0); // stop it 1004 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0); // stop it
1008 if (prim_geom != IntPtr.Zero) 1005 if (prim_geom != IntPtr.Zero)
1009 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 1006 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
1010 1007
1011 m_outbounds = false; 1008 m_outbounds = false;
1012 changeDisable(false); 1009 changeDisable(false);
@@ -1027,24 +1024,24 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1027 m_lastposition = _position; 1024 m_lastposition = _position;
1028 m_lastorientation = _orientation; 1025 m_lastorientation = _orientation;
1029 1026
1030 d.AllocateODEDataForThread(0); 1027 SafeNativeMethods.AllocateODEDataForThread(0);
1031 if(Body != IntPtr.Zero) 1028 if(Body != IntPtr.Zero)
1032 { 1029 {
1033 d.Vector3 dtmp = d.BodyGetAngularVel(Body); 1030 SafeNativeMethods.Vector3 dtmp = SafeNativeMethods.BodyGetAngularVel(Body);
1034 m_rotationalVelocity.X = dtmp.X; 1031 m_rotationalVelocity.X = dtmp.X;
1035 m_rotationalVelocity.Y = dtmp.Y; 1032 m_rotationalVelocity.Y = dtmp.Y;
1036 m_rotationalVelocity.Z = dtmp.Z; 1033 m_rotationalVelocity.Z = dtmp.Z;
1037 1034
1038 dtmp = d.BodyGetLinearVel(Body); 1035 dtmp = SafeNativeMethods.BodyGetLinearVel(Body);
1039 _velocity.X = dtmp.X; 1036 _velocity.X = dtmp.X;
1040 _velocity.Y = dtmp.Y; 1037 _velocity.Y = dtmp.Y;
1041 _velocity.Z = dtmp.Z; 1038 _velocity.Z = dtmp.Z;
1042 1039
1043 d.BodySetLinearVel(Body, 0, 0, 0); // stop it 1040 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0); // stop it
1044 d.BodySetAngularVel(Body, 0, 0, 0); 1041 SafeNativeMethods.BodySetAngularVel(Body, 0, 0, 0);
1045 } 1042 }
1046 if(prim_geom != IntPtr.Zero) 1043 if(prim_geom != IntPtr.Zero)
1047 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 1044 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
1048 disableBodySoft(); // stop collisions 1045 disableBodySoft(); // stop collisions
1049 UnSubscribeEvents(); 1046 UnSubscribeEvents();
1050 } 1047 }
@@ -1138,24 +1135,24 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1138 { 1135 {
1139 m_eventsubscription = ms; 1136 m_eventsubscription = ms;
1140 m_cureventsubscription = 0; 1137 m_cureventsubscription = 0;
1141 if (CollisionEventsThisFrame == null) 1138 if (CollisionEvents == null)
1142 CollisionEventsThisFrame = new CollisionEventUpdate(); 1139 CollisionEvents = new CollisionEventUpdate();
1143 if (CollisionVDTCEventsThisFrame == null) 1140 if (CollisionVDTCEvents == null)
1144 CollisionVDTCEventsThisFrame = new CollisionEventUpdate(); 1141 CollisionVDTCEvents = new CollisionEventUpdate();
1145 SentEmptyCollisionsEvent = false; 1142 SentEmptyCollisionsEvent = false;
1146 } 1143 }
1147 1144
1148 public override void UnSubscribeEvents() 1145 public override void UnSubscribeEvents()
1149 { 1146 {
1150 if (CollisionVDTCEventsThisFrame != null) 1147 if (CollisionVDTCEvents != null)
1151 { 1148 {
1152 CollisionVDTCEventsThisFrame.Clear(); 1149 CollisionVDTCEvents.Clear();
1153 CollisionVDTCEventsThisFrame = null; 1150 CollisionVDTCEvents = null;
1154 } 1151 }
1155 if (CollisionEventsThisFrame != null) 1152 if (CollisionEvents != null)
1156 { 1153 {
1157 CollisionEventsThisFrame.Clear(); 1154 CollisionEvents.Clear();
1158 CollisionEventsThisFrame = null; 1155 CollisionEvents = null;
1159 } 1156 }
1160 m_eventsubscription = 0; 1157 m_eventsubscription = 0;
1161 _parent_scene.RemoveCollisionEventReporting(this); 1158 _parent_scene.RemoveCollisionEventReporting(this);
@@ -1163,27 +1160,27 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1163 1160
1164 public override void AddCollisionEvent(uint CollidedWith, ContactPoint contact) 1161 public override void AddCollisionEvent(uint CollidedWith, ContactPoint contact)
1165 { 1162 {
1166 if (CollisionEventsThisFrame == null) 1163 if (CollisionEvents == null)
1167 CollisionEventsThisFrame = new CollisionEventUpdate(); 1164 CollisionEvents = new CollisionEventUpdate();
1168 1165
1169 CollisionEventsThisFrame.AddCollider(CollidedWith, contact); 1166 CollisionEvents.AddCollider(CollidedWith, contact);
1170 _parent_scene.AddCollisionEventReporting(this); 1167 _parent_scene.AddCollisionEventReporting(this);
1171 } 1168 }
1172 1169
1173 public override void AddVDTCCollisionEvent(uint CollidedWith, ContactPoint contact) 1170 public override void AddVDTCCollisionEvent(uint CollidedWith, ContactPoint contact)
1174 { 1171 {
1175 if (CollisionVDTCEventsThisFrame == null) 1172 if (CollisionVDTCEvents == null)
1176 CollisionVDTCEventsThisFrame = new CollisionEventUpdate(); 1173 CollisionVDTCEvents = new CollisionEventUpdate();
1177 1174
1178 CollisionVDTCEventsThisFrame.AddCollider(CollidedWith, contact); 1175 CollisionVDTCEvents.AddCollider(CollidedWith, contact);
1179 _parent_scene.AddCollisionEventReporting(this); 1176 _parent_scene.AddCollisionEventReporting(this);
1180 } 1177 }
1181 1178
1182 internal void SleeperAddCollisionEvents() 1179 internal void SleeperAddCollisionEvents()
1183 { 1180 {
1184 if(CollisionEventsThisFrame != null && CollisionEventsThisFrame.m_objCollisionList.Count != 0) 1181 if(CollisionEvents != null && CollisionEvents.m_objCollisionList.Count != 0)
1185 { 1182 {
1186 foreach(KeyValuePair<uint,ContactPoint> kvp in CollisionEventsThisFrame.m_objCollisionList) 1183 foreach(KeyValuePair<uint,ContactPoint> kvp in CollisionEvents.m_objCollisionList)
1187 { 1184 {
1188 if(kvp.Key == 0) 1185 if(kvp.Key == 0)
1189 continue; 1186 continue;
@@ -1196,9 +1193,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1196 other.AddCollisionEvent(ParentActor.LocalID,cp); 1193 other.AddCollisionEvent(ParentActor.LocalID,cp);
1197 } 1194 }
1198 } 1195 }
1199 if(CollisionVDTCEventsThisFrame != null && CollisionVDTCEventsThisFrame.m_objCollisionList.Count != 0) 1196 if(CollisionVDTCEvents != null && CollisionVDTCEvents.m_objCollisionList.Count != 0)
1200 { 1197 {
1201 foreach(KeyValuePair<uint,ContactPoint> kvp in CollisionVDTCEventsThisFrame.m_objCollisionList) 1198 foreach(KeyValuePair<uint,ContactPoint> kvp in CollisionVDTCEvents.m_objCollisionList)
1202 { 1199 {
1203 OdePrim other = _parent_scene.getPrim(kvp.Key); 1200 OdePrim other = _parent_scene.getPrim(kvp.Key);
1204 if(other == null) 1201 if(other == null)
@@ -1213,8 +1210,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1213 1210
1214 internal void clearSleeperCollisions() 1211 internal void clearSleeperCollisions()
1215 { 1212 {
1216 if(CollisionVDTCEventsThisFrame != null && CollisionVDTCEventsThisFrame.Count >0 ) 1213 if(CollisionVDTCEvents != null && CollisionVDTCEvents.Count >0 )
1217 CollisionVDTCEventsThisFrame.Clear(); 1214 CollisionVDTCEvents.Clear();
1218 } 1215 }
1219 1216
1220 public void SendCollisions(int timestep) 1217 public void SendCollisions(int timestep)
@@ -1226,14 +1223,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1226 if (m_cureventsubscription < m_eventsubscription) 1223 if (m_cureventsubscription < m_eventsubscription)
1227 return; 1224 return;
1228 1225
1229 if (CollisionEventsThisFrame == null) 1226 if (CollisionEvents == null)
1230 return; 1227 return;
1231 1228
1232 int ncolisions = CollisionEventsThisFrame.m_objCollisionList.Count; 1229 int ncolisions = CollisionEvents.m_objCollisionList.Count;
1233 1230
1234 if (!SentEmptyCollisionsEvent || ncolisions > 0) 1231 if (!SentEmptyCollisionsEvent || ncolisions > 0)
1235 { 1232 {
1236 base.SendCollisionUpdate(CollisionEventsThisFrame); 1233 base.SendCollisionUpdate(CollisionEvents);
1237 m_cureventsubscription = 0; 1234 m_cureventsubscription = 0;
1238 1235
1239 if (ncolisions == 0) 1236 if (ncolisions == 0)
@@ -1241,10 +1238,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1241 SentEmptyCollisionsEvent = true; 1238 SentEmptyCollisionsEvent = true;
1242// _parent_scene.RemoveCollisionEventReporting(this); 1239// _parent_scene.RemoveCollisionEventReporting(this);
1243 } 1240 }
1244 else if(Body == IntPtr.Zero || (d.BodyIsEnabled(Body) && m_bodydisablecontrol >= 0 )) 1241 else if(Body == IntPtr.Zero || (SafeNativeMethods.BodyIsEnabled(Body) && m_bodydisablecontrol >= 0 ))
1245 { 1242 {
1246 SentEmptyCollisionsEvent = false; 1243 SentEmptyCollisionsEvent = false;
1247 CollisionEventsThisFrame.Clear(); 1244 CollisionEvents.Clear();
1248 } 1245 }
1249 } 1246 }
1250 } 1247 }
@@ -1450,16 +1447,16 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1450 { 1447 {
1451 if (prm.m_NoColide) 1448 if (prm.m_NoColide)
1452 { 1449 {
1453 d.GeomSetCategoryBits(prm.prim_geom, 0); 1450 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, 0);
1454 if (m_isphysical) 1451 if (m_isphysical)
1455 d.GeomSetCollideBits(prm.prim_geom, (int)CollisionCategories.Land); 1452 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, (int)CollisionCategories.Land);
1456 else 1453 else
1457 d.GeomSetCollideBits(prm.prim_geom, 0); 1454 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, 0);
1458 } 1455 }
1459 else 1456 else
1460 { 1457 {
1461 d.GeomSetCategoryBits(prm.prim_geom, (uint)prm.m_collisionCategories); 1458 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, (uint)prm.m_collisionCategories);
1462 d.GeomSetCollideBits(prm.prim_geom, (uint)prm.m_collisionFlags); 1459 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, (uint)prm.m_collisionFlags);
1463 } 1460 }
1464 } 1461 }
1465 } 1462 }
@@ -1467,22 +1464,22 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1467 1464
1468 if (m_NoColide) 1465 if (m_NoColide)
1469 { 1466 {
1470 d.GeomSetCategoryBits(prim_geom, 0); 1467 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
1471 d.GeomSetCollideBits(prim_geom, (uint)CollisionCategories.Land); 1468 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)CollisionCategories.Land);
1472 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero) 1469 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero)
1473 { 1470 {
1474 d.GeomSetCategoryBits(collide_geom, 0); 1471 SafeNativeMethods.GeomSetCategoryBits(collide_geom, 0);
1475 d.GeomSetCollideBits(collide_geom, (uint)CollisionCategories.Land); 1472 SafeNativeMethods.GeomSetCollideBits(collide_geom, (uint)CollisionCategories.Land);
1476 } 1473 }
1477 } 1474 }
1478 else 1475 else
1479 { 1476 {
1480 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 1477 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
1481 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 1478 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
1482 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero) 1479 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero)
1483 { 1480 {
1484 d.GeomSetCategoryBits(collide_geom, (uint)m_collisionCategories); 1481 SafeNativeMethods.GeomSetCategoryBits(collide_geom, (uint)m_collisionCategories);
1485 d.GeomSetCollideBits(collide_geom, (uint)m_collisionFlags); 1482 SafeNativeMethods.GeomSetCollideBits(collide_geom, (uint)m_collisionFlags);
1486 } 1483 }
1487 } 1484 }
1488 } 1485 }
@@ -1495,7 +1492,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1495 1492
1496 if (Amotor != IntPtr.Zero) 1493 if (Amotor != IntPtr.Zero)
1497 { 1494 {
1498 d.JointDestroy(Amotor); 1495 SafeNativeMethods.JointDestroy(Amotor);
1499 Amotor = IntPtr.Zero; 1496 Amotor = IntPtr.Zero;
1500 } 1497 }
1501 1498
@@ -1522,19 +1519,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1522 if(axisnum == 0) 1519 if(axisnum == 0)
1523 return; 1520 return;
1524 // stop it 1521 // stop it
1525 d.BodySetTorque(Body, 0, 0, 0); 1522 SafeNativeMethods.BodySetTorque(Body, 0, 0, 0);
1526 d.BodySetAngularVel(Body, 0, 0, 0); 1523 SafeNativeMethods.BodySetAngularVel(Body, 0, 0, 0);
1527 1524
1528 Amotor = d.JointCreateAMotor(_parent_scene.world, IntPtr.Zero); 1525 Amotor = SafeNativeMethods.JointCreateAMotor(_parent_scene.world, IntPtr.Zero);
1529 d.JointAttach(Amotor, Body, IntPtr.Zero); 1526 SafeNativeMethods.JointAttach(Amotor, Body, IntPtr.Zero);
1530 1527
1531 d.JointSetAMotorMode(Amotor, 0); 1528 SafeNativeMethods.JointSetAMotorMode(Amotor, 0);
1532 1529
1533 d.JointSetAMotorNumAxes(Amotor, axisnum); 1530 SafeNativeMethods.JointSetAMotorNumAxes(Amotor, axisnum);
1534 1531
1535 // get current orientation to lock 1532 // get current orientation to lock
1536 1533
1537 d.Quaternion dcur = d.BodyGetQuaternion(Body); 1534 SafeNativeMethods.Quaternion dcur = SafeNativeMethods.BodyGetQuaternion(Body);
1538 Quaternion curr; // crap convertion between identical things 1535 Quaternion curr; // crap convertion between identical things
1539 curr.X = dcur.X; 1536 curr.X = dcur.X;
1540 curr.Y = dcur.Y; 1537 curr.Y = dcur.Y;
@@ -1547,17 +1544,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1547 if (axisX) 1544 if (axisX)
1548 { 1545 {
1549 ax = (new Vector3(1, 0, 0)) * curr; // rotate world X to current local X 1546 ax = (new Vector3(1, 0, 0)) * curr; // rotate world X to current local X
1550 d.JointSetAMotorAxis(Amotor, 0, 0, ax.X, ax.Y, ax.Z); 1547 SafeNativeMethods.JointSetAMotorAxis(Amotor, 0, 0, ax.X, ax.Y, ax.Z);
1551 d.JointSetAMotorAngle(Amotor, 0, 0); 1548 SafeNativeMethods.JointSetAMotorAngle(Amotor, 0, 0);
1552 d.JointSetAMotorParam(Amotor, (int)d.JointParam.LoStop, 0f); 1549 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.LoStop, 0f);
1553 d.JointSetAMotorParam(Amotor, (int)d.JointParam.HiStop, 0f); 1550 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.HiStop, 0f);
1554 d.JointSetAMotorParam(Amotor, (int)d.JointParam.Vel, 0); 1551 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.Vel, 0);
1555 d.JointSetAMotorParam(Amotor, (int)d.JointParam.FudgeFactor, 0.0001f); 1552 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.FudgeFactor, 0.0001f);
1556 d.JointSetAMotorParam(Amotor, (int)d.JointParam.Bounce, 0f); 1553 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.Bounce, 0f);
1557 d.JointSetAMotorParam(Amotor, (int)d.JointParam.CFM, 0f); 1554 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.CFM, 0f);
1558 d.JointSetAMotorParam(Amotor, (int)d.JointParam.FMax, 5e8f); 1555 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.FMax, 5e8f);
1559 d.JointSetAMotorParam(Amotor, (int)d.JointParam.StopCFM, 0f); 1556 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.StopCFM, 0f);
1560 d.JointSetAMotorParam(Amotor, (int)d.JointParam.StopERP, 0.8f); 1557 SafeNativeMethods.JointSetAMotorParam(Amotor, (int)SafeNativeMethods.JointParam.StopERP, 0.8f);
1561 i++; 1558 i++;
1562 j = 256; // move to next axis set 1559 j = 256; // move to next axis set
1563 } 1560 }
@@ -1565,17 +1562,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1565 if (axisY) 1562 if (axisY)
1566 { 1563 {
1567 ax = (new Vector3(0, 1, 0)) * curr; 1564 ax = (new Vector3(0, 1, 0)) * curr;
1568 d.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z); 1565 SafeNativeMethods.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z);
1569 d.JointSetAMotorAngle(Amotor, i, 0); 1566 SafeNativeMethods.JointSetAMotorAngle(Amotor, i, 0);
1570 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.LoStop, 0f); 1567 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.LoStop, 0f);
1571 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.HiStop, 0f); 1568 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.HiStop, 0f);
1572 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Vel, 0); 1569 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Vel, 0);
1573 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FudgeFactor, 0.0001f); 1570 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FudgeFactor, 0.0001f);
1574 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Bounce, 0f); 1571 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Bounce, 0f);
1575 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.CFM, 0f); 1572 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.CFM, 0f);
1576 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FMax, 5e8f); 1573 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FMax, 5e8f);
1577 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopCFM, 0f); 1574 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopCFM, 0f);
1578 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopERP, 0.8f); 1575 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopERP, 0.8f);
1579 i++; 1576 i++;
1580 j += 256; 1577 j += 256;
1581 } 1578 }
@@ -1583,17 +1580,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1583 if (axisZ) 1580 if (axisZ)
1584 { 1581 {
1585 ax = (new Vector3(0, 0, 1)) * curr; 1582 ax = (new Vector3(0, 0, 1)) * curr;
1586 d.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z); 1583 SafeNativeMethods.JointSetAMotorAxis(Amotor, i, 0, ax.X, ax.Y, ax.Z);
1587 d.JointSetAMotorAngle(Amotor, i, 0); 1584 SafeNativeMethods.JointSetAMotorAngle(Amotor, i, 0);
1588 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.LoStop, 0f); 1585 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.LoStop, 0f);
1589 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.HiStop, 0f); 1586 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.HiStop, 0f);
1590 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Vel, 0); 1587 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Vel, 0);
1591 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FudgeFactor, 0.0001f); 1588 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FudgeFactor, 0.0001f);
1592 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.Bounce, 0f); 1589 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.Bounce, 0f);
1593 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.CFM, 0f); 1590 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.CFM, 0f);
1594 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.FMax, 5e8f); 1591 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.FMax, 5e8f);
1595 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopCFM, 0f); 1592 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopCFM, 0f);
1596 d.JointSetAMotorParam(Amotor, j + (int)d.JointParam.StopERP, 0.8f); 1593 SafeNativeMethods.JointSetAMotorParam(Amotor, j + (int)SafeNativeMethods.JointParam.StopERP, 0.8f);
1597 } 1594 }
1598 } 1595 }
1599 1596
@@ -1607,21 +1604,21 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1607 1604
1608 if (m_NoColide) 1605 if (m_NoColide)
1609 { 1606 {
1610 d.GeomSetCategoryBits(prim_geom, 0); 1607 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
1611 if (m_isphysical) 1608 if (m_isphysical)
1612 { 1609 {
1613 d.GeomSetCollideBits(prim_geom, (uint)CollisionCategories.Land); 1610 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)CollisionCategories.Land);
1614 } 1611 }
1615 else 1612 else
1616 { 1613 {
1617 d.GeomSetCollideBits(prim_geom, 0); 1614 SafeNativeMethods.GeomSetCollideBits(prim_geom, 0);
1618 d.GeomDisable(prim_geom); 1615 SafeNativeMethods.GeomDisable(prim_geom);
1619 } 1616 }
1620 } 1617 }
1621 else 1618 else
1622 { 1619 {
1623 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 1620 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
1624 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 1621 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
1625 } 1622 }
1626 1623
1627 UpdatePrimBodyData(); 1624 UpdatePrimBodyData();
@@ -1689,12 +1686,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1689 1686
1690 try 1687 try
1691 { 1688 {
1692 _triMeshData = d.GeomTriMeshDataCreate(); 1689 _triMeshData = SafeNativeMethods.GeomTriMeshDataCreate();
1693 1690
1694 d.GeomTriMeshDataBuildSimple(_triMeshData, vertices, vertexStride, vertexCount, indices, indexCount, triStride); 1691 SafeNativeMethods.GeomTriMeshDataBuildSimple(_triMeshData, vertices, vertexStride, vertexCount, indices, indexCount, triStride);
1695 d.GeomTriMeshDataPreprocess(_triMeshData); 1692 SafeNativeMethods.GeomTriMeshDataPreprocess(_triMeshData);
1696 1693
1697 geo = d.CreateTriMesh(m_targetSpace, _triMeshData, null, null, null); 1694 geo = SafeNativeMethods.CreateTriMesh(m_targetSpace, _triMeshData, null, null, null);
1698 } 1695 }
1699 1696
1700 catch (Exception e) 1697 catch (Exception e)
@@ -1704,7 +1701,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1704 { 1701 {
1705 try 1702 try
1706 { 1703 {
1707 d.GeomTriMeshDataDestroy(_triMeshData); 1704 SafeNativeMethods.GeomTriMeshDataDestroy(_triMeshData);
1708 } 1705 }
1709 catch 1706 catch
1710 { 1707 {
@@ -1760,7 +1757,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1760 { // it's a sphere 1757 { // it's a sphere
1761 try 1758 try
1762 { 1759 {
1763 geo = d.CreateSphere(m_targetSpace, _size.X * 0.5f); 1760 geo = SafeNativeMethods.CreateSphere(m_targetSpace, _size.X * 0.5f);
1764 } 1761 }
1765 catch (Exception e) 1762 catch (Exception e)
1766 { 1763 {
@@ -1772,7 +1769,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1772 {// do it as a box 1769 {// do it as a box
1773 try 1770 try
1774 { 1771 {
1775 geo = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z); 1772 geo = SafeNativeMethods.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
1776 } 1773 }
1777 catch (Exception e) 1774 catch (Exception e)
1778 { 1775 {
@@ -1794,10 +1791,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1794 1791
1795 try 1792 try
1796 { 1793 {
1797 d.GeomDestroy(prim_geom); 1794 SafeNativeMethods.GeomDestroy(prim_geom);
1798 if (_triMeshData != IntPtr.Zero) 1795 if (_triMeshData != IntPtr.Zero)
1799 { 1796 {
1800 d.GeomTriMeshDataDestroy(_triMeshData); 1797 SafeNativeMethods.GeomTriMeshDataDestroy(_triMeshData);
1801 _triMeshData = IntPtr.Zero; 1798 _triMeshData = IntPtr.Zero;
1802 } 1799 }
1803 } 1800 }
@@ -1832,7 +1829,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1832 // should only be called for non physical prims unless they are becoming non physical 1829 // should only be called for non physical prims unless they are becoming non physical
1833 private void SetInStaticSpace(OdePrim prim) 1830 private void SetInStaticSpace(OdePrim prim)
1834 { 1831 {
1835 IntPtr targetSpace = _parent_scene.MoveGeomToStaticSpace(prim.prim_geom, prim._position, prim.m_targetSpace); 1832 IntPtr targetSpace = _parent_scene.MoveGeomToStaticSpace(prim.prim_geom, prim.m_targetSpace);
1836 prim.m_targetSpace = targetSpace; 1833 prim.m_targetSpace = targetSpace;
1837 collide_geom = IntPtr.Zero; 1834 collide_geom = IntPtr.Zero;
1838 } 1835 }
@@ -1848,8 +1845,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1848 ApplyCollisionCatFlags(); 1845 ApplyCollisionCatFlags();
1849 1846
1850 _zeroFlag = true; 1847 _zeroFlag = true;
1851 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 1848 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
1852 d.BodyEnable(Body); 1849 SafeNativeMethods.BodyEnable(Body);
1853 } 1850 }
1854 } 1851 }
1855 resetCollisionAccounting(); 1852 resetCollisionAccounting();
@@ -1868,7 +1865,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1868 m_collisionCategories = 0; 1865 m_collisionCategories = 0;
1869 m_collisionFlags = 0; 1866 m_collisionFlags = 0;
1870 ApplyCollisionCatFlags(); 1867 ApplyCollisionCatFlags();
1871 d.BodyDisable(Body); 1868 SafeNativeMethods.BodyDisable(Body);
1872 } 1869 }
1873 } 1870 }
1874 } 1871 }
@@ -1896,41 +1893,41 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1896 m_log.Warn("[PHYSICS]: MakeBody called having a body"); 1893 m_log.Warn("[PHYSICS]: MakeBody called having a body");
1897 } 1894 }
1898 1895
1899 if (d.GeomGetBody(prim_geom) != IntPtr.Zero) 1896 if (SafeNativeMethods.GeomGetBody(prim_geom) != IntPtr.Zero)
1900 { 1897 {
1901 d.GeomSetBody(prim_geom, IntPtr.Zero); 1898 SafeNativeMethods.GeomSetBody(prim_geom, IntPtr.Zero);
1902 m_log.Warn("[PHYSICS]: MakeBody root geom already had a body"); 1899 m_log.Warn("[PHYSICS]: MakeBody root geom already had a body");
1903 } 1900 }
1904 1901
1905 bool noInertiaOverride = (m_InertiaOverride == null); 1902 bool noInertiaOverride = (m_InertiaOverride == null);
1906 1903
1907 Body = d.BodyCreate(_parent_scene.world); 1904 Body = SafeNativeMethods.BodyCreate(_parent_scene.world);
1908 1905
1909 d.Matrix3 mymat = new d.Matrix3(); 1906 SafeNativeMethods.Matrix3 mymat = new SafeNativeMethods.Matrix3();
1910 d.Quaternion myrot = new d.Quaternion(); 1907 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
1911 d.Mass objdmass = new d.Mass { }; 1908 SafeNativeMethods.Mass objdmass = new SafeNativeMethods.Mass { };
1912 1909
1913 myrot.X = _orientation.X; 1910 myrot.X = _orientation.X;
1914 myrot.Y = _orientation.Y; 1911 myrot.Y = _orientation.Y;
1915 myrot.Z = _orientation.Z; 1912 myrot.Z = _orientation.Z;
1916 myrot.W = _orientation.W; 1913 myrot.W = _orientation.W;
1917 d.RfromQ(out mymat, ref myrot); 1914 SafeNativeMethods.RfromQ(out mymat, ref myrot);
1918 1915
1919 // set the body rotation 1916 // set the body rotation
1920 d.BodySetRotation(Body, ref mymat); 1917 SafeNativeMethods.BodySetRotation(Body, ref mymat);
1921 1918
1922 if(noInertiaOverride) 1919 if(noInertiaOverride)
1923 { 1920 {
1924 objdmass = primdMass; 1921 objdmass = primdMass;
1925 d.MassRotate(ref objdmass, ref mymat); 1922 SafeNativeMethods.MassRotate(ref objdmass, ref mymat);
1926 } 1923 }
1927 1924
1928 // recompute full object inertia if needed 1925 // recompute full object inertia if needed
1929 if (childrenPrim.Count > 0) 1926 if (childrenPrim.Count > 0)
1930 { 1927 {
1931 d.Matrix3 mat = new d.Matrix3(); 1928 SafeNativeMethods.Matrix3 mat = new SafeNativeMethods.Matrix3();
1932 d.Quaternion quat = new d.Quaternion(); 1929 SafeNativeMethods.Quaternion quat = new SafeNativeMethods.Quaternion();
1933 d.Mass tmpdmass = new d.Mass { }; 1930 SafeNativeMethods.Mass tmpdmass = new SafeNativeMethods.Mass { };
1934 Vector3 rcm; 1931 Vector3 rcm;
1935 1932
1936 rcm.X = _position.X; 1933 rcm.X = _position.X;
@@ -1951,70 +1948,70 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1951 quat.Y = prm._orientation.Y; 1948 quat.Y = prm._orientation.Y;
1952 quat.Z = prm._orientation.Z; 1949 quat.Z = prm._orientation.Z;
1953 quat.W = prm._orientation.W; 1950 quat.W = prm._orientation.W;
1954 d.RfromQ(out mat, ref quat); 1951 SafeNativeMethods.RfromQ(out mat, ref quat);
1955 1952
1956 // fix prim colision cats 1953 // fix prim colision cats
1957 1954
1958 if (d.GeomGetBody(prm.prim_geom) != IntPtr.Zero) 1955 if (SafeNativeMethods.GeomGetBody(prm.prim_geom) != IntPtr.Zero)
1959 { 1956 {
1960 d.GeomSetBody(prm.prim_geom, IntPtr.Zero); 1957 SafeNativeMethods.GeomSetBody(prm.prim_geom, IntPtr.Zero);
1961 m_log.Warn("[PHYSICS]: MakeBody child geom already had a body"); 1958 m_log.Warn("[PHYSICS]: MakeBody child geom already had a body");
1962 } 1959 }
1963 1960
1964 d.GeomClearOffset(prm.prim_geom); 1961 SafeNativeMethods.GeomClearOffset(prm.prim_geom);
1965 d.GeomSetBody(prm.prim_geom, Body); 1962 SafeNativeMethods.GeomSetBody(prm.prim_geom, Body);
1966 prm.Body = Body; 1963 prm.Body = Body;
1967 d.GeomSetOffsetWorldRotation(prm.prim_geom, ref mat); // set relative rotation 1964 SafeNativeMethods.GeomSetOffsetWorldRotation(prm.prim_geom, ref mat); // set relative rotation
1968 1965
1969 if(noInertiaOverride) 1966 if(noInertiaOverride)
1970 { 1967 {
1971 tmpdmass = prm.primdMass; 1968 tmpdmass = prm.primdMass;
1972 1969
1973 d.MassRotate(ref tmpdmass, ref mat); 1970 SafeNativeMethods.MassRotate(ref tmpdmass, ref mat);
1974 Vector3 ppos = prm._position; 1971 Vector3 ppos = prm._position;
1975 ppos.X -= rcm.X; 1972 ppos.X -= rcm.X;
1976 ppos.Y -= rcm.Y; 1973 ppos.Y -= rcm.Y;
1977 ppos.Z -= rcm.Z; 1974 ppos.Z -= rcm.Z;
1978 // refer inertia to root prim center of mass position 1975 // refer inertia to root prim center of mass position
1979 d.MassTranslate(ref tmpdmass, 1976 SafeNativeMethods.MassTranslate(ref tmpdmass,
1980 ppos.X, 1977 ppos.X,
1981 ppos.Y, 1978 ppos.Y,
1982 ppos.Z); 1979 ppos.Z);
1983 1980
1984 d.MassAdd(ref objdmass, ref tmpdmass); // add to total object inertia 1981 SafeNativeMethods.MassAdd(ref objdmass, ref tmpdmass); // add to total object inertia
1985 } 1982 }
1986 } 1983 }
1987 } 1984 }
1988 } 1985 }
1989 1986
1990 d.GeomClearOffset(prim_geom); // make sure we don't have a hidden offset 1987 SafeNativeMethods.GeomClearOffset(prim_geom); // make sure we don't have a hidden offset
1991 // associate root geom with body 1988 // associate root geom with body
1992 d.GeomSetBody(prim_geom, Body); 1989 SafeNativeMethods.GeomSetBody(prim_geom, Body);
1993 1990
1994 if(noInertiaOverride) 1991 if(noInertiaOverride)
1995 d.BodySetPosition(Body, _position.X + objdmass.c.X, _position.Y + objdmass.c.Y, _position.Z + objdmass.c.Z); 1992 SafeNativeMethods.BodySetPosition(Body, _position.X + objdmass.c.X, _position.Y + objdmass.c.Y, _position.Z + objdmass.c.Z);
1996 else 1993 else
1997 { 1994 {
1998 Vector3 ncm = m_InertiaOverride.CenterOfMass * _orientation; 1995 Vector3 ncm = m_InertiaOverride.CenterOfMass * _orientation;
1999 d.BodySetPosition(Body, 1996 SafeNativeMethods.BodySetPosition(Body,
2000 _position.X + ncm.X, 1997 _position.X + ncm.X,
2001 _position.Y + ncm.Y, 1998 _position.Y + ncm.Y,
2002 _position.Z + ncm.Z); 1999 _position.Z + ncm.Z);
2003 } 2000 }
2004 2001
2005 d.GeomSetOffsetWorldPosition(prim_geom, _position.X, _position.Y, _position.Z); 2002 SafeNativeMethods.GeomSetOffsetWorldPosition(prim_geom, _position.X, _position.Y, _position.Z);
2006 2003
2007 if(noInertiaOverride) 2004 if(noInertiaOverride)
2008 { 2005 {
2009 d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body 2006 SafeNativeMethods.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body
2010 myrot.X = -myrot.X; 2007 myrot.X = -myrot.X;
2011 myrot.Y = -myrot.Y; 2008 myrot.Y = -myrot.Y;
2012 myrot.Z = -myrot.Z; 2009 myrot.Z = -myrot.Z;
2013 2010
2014 d.RfromQ(out mymat, ref myrot); 2011 SafeNativeMethods.RfromQ(out mymat, ref myrot);
2015 d.MassRotate(ref objdmass, ref mymat); 2012 SafeNativeMethods.MassRotate(ref objdmass, ref mymat);
2016 2013
2017 d.BodySetMass(Body, ref objdmass); 2014 SafeNativeMethods.BodySetMass(Body, ref objdmass);
2018 m_mass = objdmass.mass; 2015 m_mass = objdmass.mass;
2019 } 2016 }
2020 else 2017 else
@@ -2031,35 +2028,35 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2031 2028
2032 if(Math.Abs(m_InertiaOverride.InertiaRotation.W) < 0.999) 2029 if(Math.Abs(m_InertiaOverride.InertiaRotation.W) < 0.999)
2033 { 2030 {
2034 d.Matrix3 inertiarotmat = new d.Matrix3(); 2031 SafeNativeMethods.Matrix3 inertiarotmat = new SafeNativeMethods.Matrix3();
2035 d.Quaternion inertiarot = new d.Quaternion(); 2032 SafeNativeMethods.Quaternion inertiarot = new SafeNativeMethods.Quaternion();
2036 2033
2037 inertiarot.X = m_InertiaOverride.InertiaRotation.X; 2034 inertiarot.X = m_InertiaOverride.InertiaRotation.X;
2038 inertiarot.Y = m_InertiaOverride.InertiaRotation.Y; 2035 inertiarot.Y = m_InertiaOverride.InertiaRotation.Y;
2039 inertiarot.Z = m_InertiaOverride.InertiaRotation.Z; 2036 inertiarot.Z = m_InertiaOverride.InertiaRotation.Z;
2040 inertiarot.W = m_InertiaOverride.InertiaRotation.W; 2037 inertiarot.W = m_InertiaOverride.InertiaRotation.W;
2041 d.RfromQ(out inertiarotmat, ref inertiarot); 2038 SafeNativeMethods.RfromQ(out inertiarotmat, ref inertiarot);
2042 d.MassRotate(ref objdmass, ref inertiarotmat); 2039 SafeNativeMethods.MassRotate(ref objdmass, ref inertiarotmat);
2043 } 2040 }
2044 d.BodySetMass(Body, ref objdmass); 2041 SafeNativeMethods.BodySetMass(Body, ref objdmass);
2045 2042
2046 m_mass = objdmass.mass; 2043 m_mass = objdmass.mass;
2047 } 2044 }
2048 2045
2049 // disconnect from world gravity so we can apply buoyancy 2046 // disconnect from world gravity so we can apply buoyancy
2050 d.BodySetGravityMode(Body, false); 2047 SafeNativeMethods.BodySetGravityMode(Body, false);
2051 2048
2052 d.BodySetAutoDisableFlag(Body, true); 2049 SafeNativeMethods.BodySetAutoDisableFlag(Body, true);
2053 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 2050 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
2054 d.BodySetAutoDisableAngularThreshold(Body, 0.05f); 2051 SafeNativeMethods.BodySetAutoDisableAngularThreshold(Body, 0.05f);
2055 d.BodySetAutoDisableLinearThreshold(Body, 0.05f); 2052 SafeNativeMethods.BodySetAutoDisableLinearThreshold(Body, 0.05f);
2056 d.BodySetDamping(Body, .004f, .001f); 2053 SafeNativeMethods.BodySetDamping(Body, .004f, .001f);
2057 2054
2058 if (m_targetSpace != IntPtr.Zero) 2055 if (m_targetSpace != IntPtr.Zero)
2059 { 2056 {
2060 _parent_scene.waitForSpaceUnlock(m_targetSpace); 2057 _parent_scene.waitForSpaceUnlock(m_targetSpace);
2061 if (d.SpaceQuery(m_targetSpace, prim_geom)) 2058 if (SafeNativeMethods.SpaceQuery(m_targetSpace, prim_geom))
2062 d.SpaceRemove(m_targetSpace, prim_geom); 2059 SafeNativeMethods.SpaceRemove(m_targetSpace, prim_geom);
2063 } 2060 }
2064 2061
2065 if (childrenPrim.Count == 0) 2062 if (childrenPrim.Count == 0)
@@ -2069,21 +2066,23 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2069 } 2066 }
2070 else 2067 else
2071 { 2068 {
2072 m_targetSpace = d.HashSpaceCreate(_parent_scene.ActiveSpace); 2069 m_targetSpace = SafeNativeMethods.SimpleSpaceCreate(_parent_scene.ActiveSpace);
2073 d.HashSpaceSetLevels(m_targetSpace, -2, 8); 2070 SafeNativeMethods.SpaceSetSublevel(m_targetSpace, 3);
2074 d.SpaceSetSublevel(m_targetSpace, 3); 2071 SafeNativeMethods.SpaceSetCleanup(m_targetSpace, false);
2075 d.SpaceSetCleanup(m_targetSpace, false);
2076 2072
2077 d.GeomSetCategoryBits(m_targetSpace, (uint)(CollisionCategories.Space | 2073 SafeNativeMethods.GeomSetCategoryBits(m_targetSpace, (uint)(CollisionCategories.Space |
2078 CollisionCategories.Geom | 2074 CollisionCategories.Geom |
2079 CollisionCategories.Phantom | 2075 CollisionCategories.Phantom |
2080 CollisionCategories.VolumeDtc 2076 CollisionCategories.VolumeDtc
2081 )); 2077 ));
2082 d.GeomSetCollideBits(m_targetSpace, 0); 2078 SafeNativeMethods.GeomSetCollideBits(m_targetSpace, 0);
2083 collide_geom = m_targetSpace; 2079 collide_geom = m_targetSpace;
2084 } 2080 }
2085 2081
2086 d.SpaceAdd(m_targetSpace, prim_geom); 2082 if (SafeNativeMethods.SpaceQuery(m_targetSpace, prim_geom))
2083 m_log.Debug("[PRIM]: parent already in target space");
2084 else
2085 SafeNativeMethods.SpaceAdd(m_targetSpace, prim_geom);
2087 2086
2088 if (m_delaySelect) 2087 if (m_delaySelect)
2089 { 2088 {
@@ -2102,22 +2101,27 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2102 { 2101 {
2103 foreach (OdePrim prm in childrenPrim) 2102 foreach (OdePrim prm in childrenPrim)
2104 { 2103 {
2105 if (prm.prim_geom == IntPtr.Zero) 2104 IntPtr prmgeom = prm.prim_geom;
2105 if (prmgeom == IntPtr.Zero)
2106 continue; 2106 continue;
2107 2107
2108 Vector3 ppos = prm._position; 2108 Vector3 ppos = prm._position;
2109 d.GeomSetOffsetWorldPosition(prm.prim_geom, ppos.X, ppos.Y, ppos.Z); // set relative position 2109 SafeNativeMethods.GeomSetOffsetWorldPosition(prm.prim_geom, ppos.X, ppos.Y, ppos.Z); // set relative position
2110 2110
2111 if (prm.m_targetSpace != m_targetSpace) 2111 IntPtr prmspace = prm.m_targetSpace;
2112 if (prmspace != m_targetSpace)
2112 { 2113 {
2113 if (prm.m_targetSpace != IntPtr.Zero) 2114 if (prmspace != IntPtr.Zero)
2114 { 2115 {
2115 _parent_scene.waitForSpaceUnlock(prm.m_targetSpace); 2116 _parent_scene.waitForSpaceUnlock(prmspace);
2116 if (d.SpaceQuery(prm.m_targetSpace, prm.prim_geom)) 2117 if (SafeNativeMethods.SpaceQuery(prmspace, prmgeom))
2117 d.SpaceRemove(prm.m_targetSpace, prm.prim_geom); 2118 SafeNativeMethods.SpaceRemove(prmspace, prmgeom);
2118 } 2119 }
2119 prm.m_targetSpace = m_targetSpace; 2120 prm.m_targetSpace = m_targetSpace;
2120 d.SpaceAdd(m_targetSpace, prm.prim_geom); 2121 if (SafeNativeMethods.SpaceQuery(m_targetSpace, prmgeom))
2122 m_log.Debug("[PRIM]: child already in target space");
2123 else
2124 SafeNativeMethods.SpaceAdd(m_targetSpace, prmgeom);
2121 } 2125 }
2122 2126
2123 prm.m_collisionscore = 0; 2127 prm.m_collisionscore = 0;
@@ -2137,13 +2141,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2137 2141
2138 if (m_isSelected || m_disabled) 2142 if (m_isSelected || m_disabled)
2139 { 2143 {
2140 d.BodyDisable(Body); 2144 SafeNativeMethods.BodyDisable(Body);
2141 _zeroFlag = true; 2145 _zeroFlag = true;
2142 } 2146 }
2143 else 2147 else
2144 { 2148 {
2145 d.BodySetAngularVel(Body, m_rotationalVelocity.X, m_rotationalVelocity.Y, m_rotationalVelocity.Z); 2149 SafeNativeMethods.BodySetAngularVel(Body, m_rotationalVelocity.X, m_rotationalVelocity.Y, m_rotationalVelocity.Z);
2146 d.BodySetLinearVel(Body, _velocity.X, _velocity.Y, _velocity.Z); 2150 SafeNativeMethods.BodySetLinearVel(Body, _velocity.X, _velocity.Y, _velocity.Z);
2147 2151
2148 _zeroFlag = false; 2152 _zeroFlag = false;
2149 m_bodydisablecontrol = 0; 2153 m_bodydisablecontrol = 0;
@@ -2176,16 +2180,16 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2176 { 2180 {
2177 if (m_NoColide) 2181 if (m_NoColide)
2178 { 2182 {
2179 d.GeomSetCategoryBits(prim_geom, 0); 2183 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
2180 d.GeomSetCollideBits(prim_geom, 0); 2184 SafeNativeMethods.GeomSetCollideBits(prim_geom, 0);
2181 } 2185 }
2182 else 2186 else
2183 { 2187 {
2184 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 2188 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
2185 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 2189 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
2186 } 2190 }
2187 UpdateDataFromGeom(); 2191 UpdateDataFromGeom();
2188 d.GeomSetBody(prim_geom, IntPtr.Zero); 2192 SafeNativeMethods.GeomSetBody(prim_geom, IntPtr.Zero);
2189 SetInStaticSpace(this); 2193 SetInStaticSpace(this);
2190 } 2194 }
2191 2195
@@ -2212,13 +2216,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2212 { 2216 {
2213 if (prm.m_NoColide) 2217 if (prm.m_NoColide)
2214 { 2218 {
2215 d.GeomSetCategoryBits(prm.prim_geom, 0); 2219 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, 0);
2216 d.GeomSetCollideBits(prm.prim_geom, 0); 2220 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, 0);
2217 } 2221 }
2218 else 2222 else
2219 { 2223 {
2220 d.GeomSetCategoryBits(prm.prim_geom, (uint)prm.m_collisionCategories); 2224 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, (uint)prm.m_collisionCategories);
2221 d.GeomSetCollideBits(prm.prim_geom, (uint)prm.m_collisionFlags); 2225 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, (uint)prm.m_collisionFlags);
2222 } 2226 }
2223 prm.UpdateDataFromGeom(); 2227 prm.UpdateDataFromGeom();
2224 SetInStaticSpace(prm); 2228 SetInStaticSpace(prm);
@@ -2230,11 +2234,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2230 } 2234 }
2231 if (Amotor != IntPtr.Zero) 2235 if (Amotor != IntPtr.Zero)
2232 { 2236 {
2233 d.JointDestroy(Amotor); 2237 SafeNativeMethods.JointDestroy(Amotor);
2234 Amotor = IntPtr.Zero; 2238 Amotor = IntPtr.Zero;
2235 } 2239 }
2236 _parent_scene.remActiveGroup(this); 2240 _parent_scene.remActiveGroup(this);
2237 d.BodyDestroy(Body); 2241 SafeNativeMethods.BodyDestroy(Body);
2238 } 2242 }
2239 Body = IntPtr.Zero; 2243 Body = IntPtr.Zero;
2240 } 2244 }
@@ -2244,30 +2248,30 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2244 2248
2245 private void FixInertia(Vector3 NewPos,Quaternion newrot) 2249 private void FixInertia(Vector3 NewPos,Quaternion newrot)
2246 { 2250 {
2247 d.Matrix3 mat = new d.Matrix3(); 2251 SafeNativeMethods.Matrix3 mat = new SafeNativeMethods.Matrix3();
2248 d.Quaternion quat = new d.Quaternion(); 2252 SafeNativeMethods.Quaternion quat = new SafeNativeMethods.Quaternion();
2249 2253
2250 d.Mass tmpdmass = new d.Mass { }; 2254 SafeNativeMethods.Mass tmpdmass = new SafeNativeMethods.Mass { };
2251 d.Mass objdmass = new d.Mass { }; 2255 SafeNativeMethods.Mass objdmass = new SafeNativeMethods.Mass { };
2252 2256
2253 d.BodyGetMass(Body, out tmpdmass); 2257 SafeNativeMethods.BodyGetMass(Body, out tmpdmass);
2254 objdmass = tmpdmass; 2258 objdmass = tmpdmass;
2255 2259
2256 d.Vector3 dobjpos; 2260 SafeNativeMethods.Vector3 dobjpos;
2257 d.Vector3 thispos; 2261 SafeNativeMethods.Vector3 thispos;
2258 2262
2259 // get current object position and rotation 2263 // get current object position and rotation
2260 dobjpos = d.BodyGetPosition(Body); 2264 dobjpos = SafeNativeMethods.BodyGetPosition(Body);
2261 2265
2262 // get prim own inertia in its local frame 2266 // get prim own inertia in its local frame
2263 tmpdmass = primdMass; 2267 tmpdmass = primdMass;
2264 2268
2265 // transform to object frame 2269 // transform to object frame
2266 mat = d.GeomGetOffsetRotation(prim_geom); 2270 mat = SafeNativeMethods.GeomGetOffsetRotation(prim_geom);
2267 d.MassRotate(ref tmpdmass, ref mat); 2271 SafeNativeMethods.MassRotate(ref tmpdmass, ref mat);
2268 2272
2269 thispos = d.GeomGetOffsetPosition(prim_geom); 2273 thispos = SafeNativeMethods.GeomGetOffsetPosition(prim_geom);
2270 d.MassTranslate(ref tmpdmass, 2274 SafeNativeMethods.MassTranslate(ref tmpdmass,
2271 thispos.X, 2275 thispos.X,
2272 thispos.Y, 2276 thispos.Y,
2273 thispos.Z); 2277 thispos.Z);
@@ -2280,66 +2284,66 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2280 2284
2281 // update to new position and orientation 2285 // update to new position and orientation
2282 _position = NewPos; 2286 _position = NewPos;
2283 d.GeomSetOffsetWorldPosition(prim_geom, NewPos.X, NewPos.Y, NewPos.Z); 2287 SafeNativeMethods.GeomSetOffsetWorldPosition(prim_geom, NewPos.X, NewPos.Y, NewPos.Z);
2284 _orientation = newrot; 2288 _orientation = newrot;
2285 quat.X = newrot.X; 2289 quat.X = newrot.X;
2286 quat.Y = newrot.Y; 2290 quat.Y = newrot.Y;
2287 quat.Z = newrot.Z; 2291 quat.Z = newrot.Z;
2288 quat.W = newrot.W; 2292 quat.W = newrot.W;
2289 d.GeomSetOffsetWorldQuaternion(prim_geom, ref quat); 2293 SafeNativeMethods.GeomSetOffsetWorldQuaternion(prim_geom, ref quat);
2290 2294
2291 mat = d.GeomGetOffsetRotation(prim_geom); 2295 mat = SafeNativeMethods.GeomGetOffsetRotation(prim_geom);
2292 d.MassRotate(ref tmpdmass, ref mat); 2296 SafeNativeMethods.MassRotate(ref tmpdmass, ref mat);
2293 2297
2294 thispos = d.GeomGetOffsetPosition(prim_geom); 2298 thispos = SafeNativeMethods.GeomGetOffsetPosition(prim_geom);
2295 d.MassTranslate(ref tmpdmass, 2299 SafeNativeMethods.MassTranslate(ref tmpdmass,
2296 thispos.X, 2300 thispos.X,
2297 thispos.Y, 2301 thispos.Y,
2298 thispos.Z); 2302 thispos.Z);
2299 2303
2300 d.MassAdd(ref objdmass, ref tmpdmass); 2304 SafeNativeMethods.MassAdd(ref objdmass, ref tmpdmass);
2301 2305
2302 // fix all positions 2306 // fix all positions
2303 IntPtr g = d.BodyGetFirstGeom(Body); 2307 IntPtr g = SafeNativeMethods.BodyGetFirstGeom(Body);
2304 while (g != IntPtr.Zero) 2308 while (g != IntPtr.Zero)
2305 { 2309 {
2306 thispos = d.GeomGetOffsetPosition(g); 2310 thispos = SafeNativeMethods.GeomGetOffsetPosition(g);
2307 thispos.X -= objdmass.c.X; 2311 thispos.X -= objdmass.c.X;
2308 thispos.Y -= objdmass.c.Y; 2312 thispos.Y -= objdmass.c.Y;
2309 thispos.Z -= objdmass.c.Z; 2313 thispos.Z -= objdmass.c.Z;
2310 d.GeomSetOffsetPosition(g, thispos.X, thispos.Y, thispos.Z); 2314 SafeNativeMethods.GeomSetOffsetPosition(g, thispos.X, thispos.Y, thispos.Z);
2311 g = d.dBodyGetNextGeom(g); 2315 g = SafeNativeMethods.dBodyGetNextGeom(g);
2312 } 2316 }
2313 d.BodyVectorToWorld(Body,objdmass.c.X, objdmass.c.Y, objdmass.c.Z,out thispos); 2317 SafeNativeMethods.BodyVectorToWorld(Body,objdmass.c.X, objdmass.c.Y, objdmass.c.Z,out thispos);
2314 2318
2315 d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); 2319 SafeNativeMethods.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z);
2316 d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body 2320 SafeNativeMethods.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body
2317 d.BodySetMass(Body, ref objdmass); 2321 SafeNativeMethods.BodySetMass(Body, ref objdmass);
2318 m_mass = objdmass.mass; 2322 m_mass = objdmass.mass;
2319 } 2323 }
2320 2324
2321 private void FixInertia(Vector3 NewPos) 2325 private void FixInertia(Vector3 NewPos)
2322 { 2326 {
2323 d.Matrix3 primmat = new d.Matrix3(); 2327 SafeNativeMethods.Matrix3 primmat = new SafeNativeMethods.Matrix3();
2324 d.Mass tmpdmass = new d.Mass { }; 2328 SafeNativeMethods.Mass tmpdmass = new SafeNativeMethods.Mass { };
2325 d.Mass objdmass = new d.Mass { }; 2329 SafeNativeMethods.Mass objdmass = new SafeNativeMethods.Mass { };
2326 d.Mass primmass = new d.Mass { }; 2330 SafeNativeMethods.Mass primmass = new SafeNativeMethods.Mass { };
2327 2331
2328 d.Vector3 dobjpos; 2332 SafeNativeMethods.Vector3 dobjpos;
2329 d.Vector3 thispos; 2333 SafeNativeMethods.Vector3 thispos;
2330 2334
2331 d.BodyGetMass(Body, out objdmass); 2335 SafeNativeMethods.BodyGetMass(Body, out objdmass);
2332 2336
2333 // get prim own inertia in its local frame 2337 // get prim own inertia in its local frame
2334 primmass = primdMass; 2338 primmass = primdMass;
2335 // transform to object frame 2339 // transform to object frame
2336 primmat = d.GeomGetOffsetRotation(prim_geom); 2340 primmat = SafeNativeMethods.GeomGetOffsetRotation(prim_geom);
2337 d.MassRotate(ref primmass, ref primmat); 2341 SafeNativeMethods.MassRotate(ref primmass, ref primmat);
2338 2342
2339 tmpdmass = primmass; 2343 tmpdmass = primmass;
2340 2344
2341 thispos = d.GeomGetOffsetPosition(prim_geom); 2345 thispos = SafeNativeMethods.GeomGetOffsetPosition(prim_geom);
2342 d.MassTranslate(ref tmpdmass, 2346 SafeNativeMethods.MassTranslate(ref tmpdmass,
2343 thispos.X, 2347 thispos.X,
2344 thispos.Y, 2348 thispos.Y,
2345 thispos.Z); 2349 thispos.Z);
@@ -2349,58 +2353,58 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2349 2353
2350 // update to new position 2354 // update to new position
2351 _position = NewPos; 2355 _position = NewPos;
2352 d.GeomSetOffsetWorldPosition(prim_geom, NewPos.X, NewPos.Y, NewPos.Z); 2356 SafeNativeMethods.GeomSetOffsetWorldPosition(prim_geom, NewPos.X, NewPos.Y, NewPos.Z);
2353 2357
2354 thispos = d.GeomGetOffsetPosition(prim_geom); 2358 thispos = SafeNativeMethods.GeomGetOffsetPosition(prim_geom);
2355 d.MassTranslate(ref primmass, 2359 SafeNativeMethods.MassTranslate(ref primmass,
2356 thispos.X, 2360 thispos.X,
2357 thispos.Y, 2361 thispos.Y,
2358 thispos.Z); 2362 thispos.Z);
2359 2363
2360 d.MassAdd(ref objdmass, ref primmass); 2364 SafeNativeMethods.MassAdd(ref objdmass, ref primmass);
2361 2365
2362 // fix all positions 2366 // fix all positions
2363 IntPtr g = d.BodyGetFirstGeom(Body); 2367 IntPtr g = SafeNativeMethods.BodyGetFirstGeom(Body);
2364 while (g != IntPtr.Zero) 2368 while (g != IntPtr.Zero)
2365 { 2369 {
2366 thispos = d.GeomGetOffsetPosition(g); 2370 thispos = SafeNativeMethods.GeomGetOffsetPosition(g);
2367 thispos.X -= objdmass.c.X; 2371 thispos.X -= objdmass.c.X;
2368 thispos.Y -= objdmass.c.Y; 2372 thispos.Y -= objdmass.c.Y;
2369 thispos.Z -= objdmass.c.Z; 2373 thispos.Z -= objdmass.c.Z;
2370 d.GeomSetOffsetPosition(g, thispos.X, thispos.Y, thispos.Z); 2374 SafeNativeMethods.GeomSetOffsetPosition(g, thispos.X, thispos.Y, thispos.Z);
2371 g = d.dBodyGetNextGeom(g); 2375 g = SafeNativeMethods.dBodyGetNextGeom(g);
2372 } 2376 }
2373 2377
2374 d.BodyVectorToWorld(Body, objdmass.c.X, objdmass.c.Y, objdmass.c.Z, out thispos); 2378 SafeNativeMethods.BodyVectorToWorld(Body, objdmass.c.X, objdmass.c.Y, objdmass.c.Z, out thispos);
2375 2379
2376 // get current object position and rotation 2380 // get current object position and rotation
2377 dobjpos = d.BodyGetPosition(Body); 2381 dobjpos = SafeNativeMethods.BodyGetPosition(Body);
2378 2382
2379 d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); 2383 SafeNativeMethods.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z);
2380 d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body 2384 SafeNativeMethods.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body
2381 d.BodySetMass(Body, ref objdmass); 2385 SafeNativeMethods.BodySetMass(Body, ref objdmass);
2382 m_mass = objdmass.mass; 2386 m_mass = objdmass.mass;
2383 } 2387 }
2384 2388
2385 private void FixInertia(Quaternion newrot) 2389 private void FixInertia(Quaternion newrot)
2386 { 2390 {
2387 d.Matrix3 mat = new d.Matrix3(); 2391 SafeNativeMethods.Matrix3 mat = new SafeNativeMethods.Matrix3();
2388 d.Quaternion quat = new d.Quaternion(); 2392 SafeNativeMethods.Quaternion quat = new SafeNativeMethods.Quaternion();
2389 2393
2390 d.Mass tmpdmass = new d.Mass { }; 2394 SafeNativeMethods.Mass tmpdmass = new SafeNativeMethods.Mass { };
2391 d.Mass objdmass = new d.Mass { }; 2395 SafeNativeMethods.Mass objdmass = new SafeNativeMethods.Mass { };
2392 d.Vector3 dobjpos; 2396 SafeNativeMethods.Vector3 dobjpos;
2393 d.Vector3 thispos; 2397 SafeNativeMethods.Vector3 thispos;
2394 2398
2395 d.BodyGetMass(Body, out objdmass); 2399 SafeNativeMethods.BodyGetMass(Body, out objdmass);
2396 2400
2397 // get prim own inertia in its local frame 2401 // get prim own inertia in its local frame
2398 tmpdmass = primdMass; 2402 tmpdmass = primdMass;
2399 mat = d.GeomGetOffsetRotation(prim_geom); 2403 mat = SafeNativeMethods.GeomGetOffsetRotation(prim_geom);
2400 d.MassRotate(ref tmpdmass, ref mat); 2404 SafeNativeMethods.MassRotate(ref tmpdmass, ref mat);
2401 // transform to object frame 2405 // transform to object frame
2402 thispos = d.GeomGetOffsetPosition(prim_geom); 2406 thispos = SafeNativeMethods.GeomGetOffsetPosition(prim_geom);
2403 d.MassTranslate(ref tmpdmass, 2407 SafeNativeMethods.MassTranslate(ref tmpdmass,
2404 thispos.X, 2408 thispos.X,
2405 thispos.Y, 2409 thispos.Y,
2406 thispos.Z); 2410 thispos.Z);
@@ -2414,37 +2418,37 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2414 quat.Y = newrot.Y; 2418 quat.Y = newrot.Y;
2415 quat.Z = newrot.Z; 2419 quat.Z = newrot.Z;
2416 quat.W = newrot.W; 2420 quat.W = newrot.W;
2417 d.GeomSetOffsetWorldQuaternion(prim_geom, ref quat); 2421 SafeNativeMethods.GeomSetOffsetWorldQuaternion(prim_geom, ref quat);
2418 2422
2419 tmpdmass = primdMass; 2423 tmpdmass = primdMass;
2420 mat = d.GeomGetOffsetRotation(prim_geom); 2424 mat = SafeNativeMethods.GeomGetOffsetRotation(prim_geom);
2421 d.MassRotate(ref tmpdmass, ref mat); 2425 SafeNativeMethods.MassRotate(ref tmpdmass, ref mat);
2422 d.MassTranslate(ref tmpdmass, 2426 SafeNativeMethods.MassTranslate(ref tmpdmass,
2423 thispos.X, 2427 thispos.X,
2424 thispos.Y, 2428 thispos.Y,
2425 thispos.Z); 2429 thispos.Z);
2426 2430
2427 d.MassAdd(ref objdmass, ref tmpdmass); 2431 SafeNativeMethods.MassAdd(ref objdmass, ref tmpdmass);
2428 2432
2429 // fix all positions 2433 // fix all positions
2430 IntPtr g = d.BodyGetFirstGeom(Body); 2434 IntPtr g = SafeNativeMethods.BodyGetFirstGeom(Body);
2431 while (g != IntPtr.Zero) 2435 while (g != IntPtr.Zero)
2432 { 2436 {
2433 thispos = d.GeomGetOffsetPosition(g); 2437 thispos = SafeNativeMethods.GeomGetOffsetPosition(g);
2434 thispos.X -= objdmass.c.X; 2438 thispos.X -= objdmass.c.X;
2435 thispos.Y -= objdmass.c.Y; 2439 thispos.Y -= objdmass.c.Y;
2436 thispos.Z -= objdmass.c.Z; 2440 thispos.Z -= objdmass.c.Z;
2437 d.GeomSetOffsetPosition(g, thispos.X, thispos.Y, thispos.Z); 2441 SafeNativeMethods.GeomSetOffsetPosition(g, thispos.X, thispos.Y, thispos.Z);
2438 g = d.dBodyGetNextGeom(g); 2442 g = SafeNativeMethods.dBodyGetNextGeom(g);
2439 } 2443 }
2440 2444
2441 d.BodyVectorToWorld(Body, objdmass.c.X, objdmass.c.Y, objdmass.c.Z, out thispos); 2445 SafeNativeMethods.BodyVectorToWorld(Body, objdmass.c.X, objdmass.c.Y, objdmass.c.Z, out thispos);
2442 // get current object position and rotation 2446 // get current object position and rotation
2443 dobjpos = d.BodyGetPosition(Body); 2447 dobjpos = SafeNativeMethods.BodyGetPosition(Body);
2444 2448
2445 d.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z); 2449 SafeNativeMethods.BodySetPosition(Body, dobjpos.X + thispos.X, dobjpos.Y + thispos.Y, dobjpos.Z + thispos.Z);
2446 d.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body 2450 SafeNativeMethods.MassTranslate(ref objdmass, -objdmass.c.X, -objdmass.c.Y, -objdmass.c.Z); // ode wants inertia at center of body
2447 d.BodySetMass(Body, ref objdmass); 2451 SafeNativeMethods.BodySetMass(Body, ref objdmass);
2448 m_mass = objdmass.mass; 2452 m_mass = objdmass.mass;
2449 } 2453 }
2450 2454
@@ -2462,9 +2466,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2462 2466
2463 m_mass = primMass; // just in case 2467 m_mass = primMass; // just in case
2464 2468
2465 d.MassSetBoxTotal(out primdMass, primMass, 2.0f * m_OBB.X, 2.0f * m_OBB.Y, 2.0f * m_OBB.Z); 2469 SafeNativeMethods.MassSetBoxTotal(out primdMass, primMass, 2.0f * m_OBB.X, 2.0f * m_OBB.Y, 2.0f * m_OBB.Z);
2466 2470
2467 d.MassTranslate(ref primdMass, 2471 SafeNativeMethods.MassTranslate(ref primdMass,
2468 m_OBBOffset.X, 2472 m_OBBOffset.X,
2469 m_OBBOffset.Y, 2473 m_OBBOffset.Y,
2470 m_OBBOffset.Z); 2474 m_OBBOffset.Z);
@@ -2519,7 +2523,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2519 if (prm.Body != IntPtr.Zero) 2523 if (prm.Body != IntPtr.Zero)
2520 { 2524 {
2521 if (prm.prim_geom != IntPtr.Zero) 2525 if (prm.prim_geom != IntPtr.Zero)
2522 d.GeomSetBody(prm.prim_geom, IntPtr.Zero); 2526 SafeNativeMethods.GeomSetBody(prm.prim_geom, IntPtr.Zero);
2523 if (prm.Body != prim.Body) 2527 if (prm.Body != prim.Body)
2524 prm.DestroyBody(); // don't loose bodies around 2528 prm.DestroyBody(); // don't loose bodies around
2525 prm.Body = IntPtr.Zero; 2529 prm.Body = IntPtr.Zero;
@@ -2536,7 +2540,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2536 if (prim.Body != IntPtr.Zero) 2540 if (prim.Body != IntPtr.Zero)
2537 { 2541 {
2538 if (prim.prim_geom != IntPtr.Zero) 2542 if (prim.prim_geom != IntPtr.Zero)
2539 d.GeomSetBody(prim.prim_geom, IntPtr.Zero); 2543 SafeNativeMethods.GeomSetBody(prim.prim_geom, IntPtr.Zero);
2540 prim.DestroyBody(); // don't loose bodies around 2544 prim.DestroyBody(); // don't loose bodies around
2541 prim.Body = IntPtr.Zero; 2545 prim.Body = IntPtr.Zero;
2542 } 2546 }
@@ -2561,8 +2565,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2561 { 2565 {
2562 if (prim_geom != IntPtr.Zero) 2566 if (prim_geom != IntPtr.Zero)
2563 { 2567 {
2564 d.Quaternion qtmp; 2568 SafeNativeMethods.Quaternion qtmp;
2565 d.GeomCopyQuaternion(prim_geom, out qtmp); 2569 SafeNativeMethods.GeomCopyQuaternion(prim_geom, out qtmp);
2566 _orientation.X = qtmp.X; 2570 _orientation.X = qtmp.X;
2567 _orientation.Y = qtmp.Y; 2571 _orientation.Y = qtmp.Y;
2568 _orientation.Z = qtmp.Z; 2572 _orientation.Z = qtmp.Z;
@@ -2576,7 +2580,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2576*/ 2580*/
2577 _orientation.Normalize(); 2581 _orientation.Normalize();
2578 2582
2579 d.Vector3 lpos = d.GeomGetPosition(prim_geom); 2583 SafeNativeMethods.Vector3 lpos = SafeNativeMethods.GeomGetPosition(prim_geom);
2580 _position.X = lpos.X; 2584 _position.X = lpos.X;
2581 _position.Y = lpos.Y; 2585 _position.Y = lpos.Y;
2582 _position.Z = lpos.Z; 2586 _position.Z = lpos.Z;
@@ -2705,7 +2709,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2705 { 2709 {
2706 if (Amotor != IntPtr.Zero) 2710 if (Amotor != IntPtr.Zero)
2707 { 2711 {
2708 d.JointDestroy(Amotor); 2712 SafeNativeMethods.JointDestroy(Amotor);
2709 Amotor = IntPtr.Zero; 2713 Amotor = IntPtr.Zero;
2710 } 2714 }
2711 } 2715 }
@@ -2762,10 +2766,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2762 2766
2763 if (Body != IntPtr.Zero) 2767 if (Body != IntPtr.Zero)
2764 { 2768 {
2765 d.BodySetForce(Body, 0f, 0f, 0f); 2769 SafeNativeMethods.BodySetForce(Body, 0f, 0f, 0f);
2766 d.BodySetTorque(Body, 0f, 0f, 0f); 2770 SafeNativeMethods.BodySetTorque(Body, 0f, 0f, 0f);
2767 d.BodySetLinearVel(Body, 0f, 0f, 0f); 2771 SafeNativeMethods.BodySetLinearVel(Body, 0f, 0f, 0f);
2768 d.BodySetAngularVel(Body, 0f, 0f, 0f); 2772 SafeNativeMethods.BodySetAngularVel(Body, 0f, 0f, 0f);
2769 } 2773 }
2770 } 2774 }
2771 2775
@@ -2827,7 +2831,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2827 if (newval) 2831 if (newval)
2828 { 2832 {
2829 if (!childPrim && Body != IntPtr.Zero) 2833 if (!childPrim && Body != IntPtr.Zero)
2830 d.BodyDisable(Body); 2834 SafeNativeMethods.BodyDisable(Body);
2831 2835
2832 if (m_delaySelect || m_isphysical) 2836 if (m_delaySelect || m_isphysical)
2833 { 2837 {
@@ -2846,13 +2850,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2846 2850
2847 if (prm.m_NoColide) 2851 if (prm.m_NoColide)
2848 { 2852 {
2849 d.GeomSetCategoryBits(prm.prim_geom, 0); 2853 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, 0);
2850 d.GeomSetCollideBits(prm.prim_geom, 0); 2854 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, 0);
2851 } 2855 }
2852 else 2856 else
2853 { 2857 {
2854 d.GeomSetCategoryBits(prm.prim_geom, (uint)m_collisionCategories); 2858 SafeNativeMethods.GeomSetCategoryBits(prm.prim_geom, (uint)m_collisionCategories);
2855 d.GeomSetCollideBits(prm.prim_geom, (uint)m_collisionFlags); 2859 SafeNativeMethods.GeomSetCollideBits(prm.prim_geom, (uint)m_collisionFlags);
2856 } 2860 }
2857 } 2861 }
2858 prm.m_delaySelect = false; 2862 prm.m_delaySelect = false;
@@ -2866,23 +2870,23 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2866 { 2870 {
2867 if (m_NoColide) 2871 if (m_NoColide)
2868 { 2872 {
2869 d.GeomSetCategoryBits(prim_geom, 0); 2873 SafeNativeMethods.GeomSetCategoryBits(prim_geom, 0);
2870 d.GeomSetCollideBits(prim_geom, 0); 2874 SafeNativeMethods.GeomSetCollideBits(prim_geom, 0);
2871 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero) 2875 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero)
2872 { 2876 {
2873 d.GeomSetCategoryBits(collide_geom, 0); 2877 SafeNativeMethods.GeomSetCategoryBits(collide_geom, 0);
2874 d.GeomSetCollideBits(collide_geom, 0); 2878 SafeNativeMethods.GeomSetCollideBits(collide_geom, 0);
2875 } 2879 }
2876 2880
2877 } 2881 }
2878 else 2882 else
2879 { 2883 {
2880 d.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories); 2884 SafeNativeMethods.GeomSetCategoryBits(prim_geom, (uint)m_collisionCategories);
2881 d.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags); 2885 SafeNativeMethods.GeomSetCollideBits(prim_geom, (uint)m_collisionFlags);
2882 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero) 2886 if (collide_geom != prim_geom && collide_geom != IntPtr.Zero)
2883 { 2887 {
2884 d.GeomSetCategoryBits(collide_geom, (uint)m_collisionCategories); 2888 SafeNativeMethods.GeomSetCategoryBits(collide_geom, (uint)m_collisionCategories);
2885 d.GeomSetCollideBits(collide_geom, (uint)m_collisionFlags); 2889 SafeNativeMethods.GeomSetCollideBits(collide_geom, (uint)m_collisionFlags);
2886 } 2890 }
2887 } 2891 }
2888 } 2892 }
@@ -2901,8 +2905,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2901 if (Body != IntPtr.Zero && !m_disabled) 2905 if (Body != IntPtr.Zero && !m_disabled)
2902 { 2906 {
2903 _zeroFlag = true; 2907 _zeroFlag = true;
2904 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 2908 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
2905 d.BodyEnable(Body); 2909 SafeNativeMethods.BodyEnable(Body);
2906 } 2910 }
2907 } 2911 }
2908// else if (_parent != null) 2912// else if (_parent != null)
@@ -2932,11 +2936,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2932 else if (m_forcePosOrRotation && _position != newPos && Body != IntPtr.Zero) 2936 else if (m_forcePosOrRotation && _position != newPos && Body != IntPtr.Zero)
2933 { 2937 {
2934 FixInertia(newPos); 2938 FixInertia(newPos);
2935 if (!d.BodyIsEnabled(Body)) 2939 if (!SafeNativeMethods.BodyIsEnabled(Body))
2936 { 2940 {
2937 _zeroFlag = true; 2941 _zeroFlag = true;
2938 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 2942 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
2939 d.BodyEnable(Body); 2943 SafeNativeMethods.BodyEnable(Body);
2940 } 2944 }
2941 } 2945 }
2942 } 2946 }
@@ -2944,14 +2948,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2944 { 2948 {
2945 if (_position != newPos) 2949 if (_position != newPos)
2946 { 2950 {
2947 d.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z); 2951 SafeNativeMethods.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z);
2948 _position = newPos; 2952 _position = newPos;
2949 } 2953 }
2950 if (Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) 2954 if (Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(Body))
2951 { 2955 {
2952 _zeroFlag = true; 2956 _zeroFlag = true;
2953 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 2957 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
2954 d.BodyEnable(Body); 2958 SafeNativeMethods.BodyEnable(Body);
2955 } 2959 }
2956 } 2960 }
2957 } 2961 }
@@ -2961,10 +2965,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2961 { 2965 {
2962 if (newPos != _position) 2966 if (newPos != _position)
2963 { 2967 {
2964 d.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z); 2968 SafeNativeMethods.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z);
2965 _position = newPos; 2969 _position = newPos;
2966 2970
2967 m_targetSpace = _parent_scene.MoveGeomToStaticSpace(prim_geom, _position, m_targetSpace); 2971 m_targetSpace = _parent_scene.MoveGeomToStaticSpace(prim_geom, m_targetSpace);
2968 } 2972 }
2969 } 2973 }
2970 } 2974 }
@@ -2999,12 +3003,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2999 { 3003 {
3000 if (newOri != _orientation) 3004 if (newOri != _orientation)
3001 { 3005 {
3002 d.Quaternion myrot = new d.Quaternion(); 3006 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
3003 myrot.X = newOri.X; 3007 myrot.X = newOri.X;
3004 myrot.Y = newOri.Y; 3008 myrot.Y = newOri.Y;
3005 myrot.Z = newOri.Z; 3009 myrot.Z = newOri.Z;
3006 myrot.W = newOri.W; 3010 myrot.W = newOri.W;
3007 d.GeomSetQuaternion(prim_geom, ref myrot); 3011 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
3008 _orientation = newOri; 3012 _orientation = newOri;
3009 3013
3010 if (Body != IntPtr.Zero) 3014 if (Body != IntPtr.Zero)
@@ -3013,11 +3017,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3013 createAMotor(m_angularlocks); 3017 createAMotor(m_angularlocks);
3014 } 3018 }
3015 } 3019 }
3016 if (Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) 3020 if (Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(Body))
3017 { 3021 {
3018 _zeroFlag = true; 3022 _zeroFlag = true;
3019 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3023 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3020 d.BodyEnable(Body); 3024 SafeNativeMethods.BodyEnable(Body);
3021 } 3025 }
3022 } 3026 }
3023 } 3027 }
@@ -3027,12 +3031,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3027 { 3031 {
3028 if (newOri != _orientation) 3032 if (newOri != _orientation)
3029 { 3033 {
3030 d.Quaternion myrot = new d.Quaternion(); 3034 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
3031 myrot.X = newOri.X; 3035 myrot.X = newOri.X;
3032 myrot.Y = newOri.Y; 3036 myrot.Y = newOri.Y;
3033 myrot.Z = newOri.Z; 3037 myrot.Z = newOri.Z;
3034 myrot.W = newOri.W; 3038 myrot.W = newOri.W;
3035 d.GeomSetQuaternion(prim_geom, ref myrot); 3039 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
3036 _orientation = newOri; 3040 _orientation = newOri;
3037 } 3041 }
3038 } 3042 }
@@ -3057,26 +3061,26 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3057 { 3061 {
3058 if (newOri != _orientation) 3062 if (newOri != _orientation)
3059 { 3063 {
3060 d.Quaternion myrot = new d.Quaternion(); 3064 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
3061 myrot.X = newOri.X; 3065 myrot.X = newOri.X;
3062 myrot.Y = newOri.Y; 3066 myrot.Y = newOri.Y;
3063 myrot.Z = newOri.Z; 3067 myrot.Z = newOri.Z;
3064 myrot.W = newOri.W; 3068 myrot.W = newOri.W;
3065 d.GeomSetQuaternion(prim_geom, ref myrot); 3069 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
3066 _orientation = newOri; 3070 _orientation = newOri;
3067 if (Body != IntPtr.Zero && m_angularlocks != 0) 3071 if (Body != IntPtr.Zero && m_angularlocks != 0)
3068 createAMotor(m_angularlocks); 3072 createAMotor(m_angularlocks);
3069 } 3073 }
3070 if (_position != newPos) 3074 if (_position != newPos)
3071 { 3075 {
3072 d.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z); 3076 SafeNativeMethods.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z);
3073 _position = newPos; 3077 _position = newPos;
3074 } 3078 }
3075 if (Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) 3079 if (Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(Body))
3076 { 3080 {
3077 _zeroFlag = true; 3081 _zeroFlag = true;
3078 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3082 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3079 d.BodyEnable(Body); 3083 SafeNativeMethods.BodyEnable(Body);
3080 } 3084 }
3081 } 3085 }
3082 } 3086 }
@@ -3089,21 +3093,21 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3089 { 3093 {
3090 if (newOri != _orientation) 3094 if (newOri != _orientation)
3091 { 3095 {
3092 d.Quaternion myrot = new d.Quaternion(); 3096 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
3093 myrot.X = newOri.X; 3097 myrot.X = newOri.X;
3094 myrot.Y = newOri.Y; 3098 myrot.Y = newOri.Y;
3095 myrot.Z = newOri.Z; 3099 myrot.Z = newOri.Z;
3096 myrot.W = newOri.W; 3100 myrot.W = newOri.W;
3097 d.GeomSetQuaternion(prim_geom, ref myrot); 3101 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
3098 _orientation = newOri; 3102 _orientation = newOri;
3099 } 3103 }
3100 3104
3101 if (newPos != _position) 3105 if (newPos != _position)
3102 { 3106 {
3103 d.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z); 3107 SafeNativeMethods.GeomSetPosition(prim_geom, newPos.X, newPos.Y, newPos.Z);
3104 _position = newPos; 3108 _position = newPos;
3105 3109
3106 m_targetSpace = _parent_scene.MoveGeomToStaticSpace(prim_geom, _position, m_targetSpace); 3110 m_targetSpace = _parent_scene.MoveGeomToStaticSpace(prim_geom, m_targetSpace);
3107 } 3111 }
3108 } 3112 }
3109 } 3113 }
@@ -3184,13 +3188,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3184 3188
3185 if (prim_geom != IntPtr.Zero) 3189 if (prim_geom != IntPtr.Zero)
3186 { 3190 {
3187 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 3191 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
3188 d.Quaternion myrot = new d.Quaternion(); 3192 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
3189 myrot.X = _orientation.X; 3193 myrot.X = _orientation.X;
3190 myrot.Y = _orientation.Y; 3194 myrot.Y = _orientation.Y;
3191 myrot.Z = _orientation.Z; 3195 myrot.Z = _orientation.Z;
3192 myrot.W = _orientation.W; 3196 myrot.W = _orientation.W;
3193 d.GeomSetQuaternion(prim_geom, ref myrot); 3197 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
3194 } 3198 }
3195 3199
3196 if (!m_isphysical) 3200 if (!m_isphysical)
@@ -3260,13 +3264,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3260 3264
3261 if (prim_geom != IntPtr.Zero) 3265 if (prim_geom != IntPtr.Zero)
3262 { 3266 {
3263 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 3267 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
3264 d.Quaternion myrot = new d.Quaternion(); 3268 SafeNativeMethods.Quaternion myrot = new SafeNativeMethods.Quaternion();
3265 myrot.X = _orientation.X; 3269 myrot.X = _orientation.X;
3266 myrot.Y = _orientation.Y; 3270 myrot.Y = _orientation.Y;
3267 myrot.Z = _orientation.Z; 3271 myrot.Z = _orientation.Z;
3268 myrot.W = _orientation.W; 3272 myrot.W = _orientation.W;
3269 d.GeomSetQuaternion(prim_geom, ref myrot); 3273 SafeNativeMethods.GeomSetQuaternion(prim_geom, ref myrot);
3270 } 3274 }
3271 3275
3272 if (m_isphysical) 3276 if (m_isphysical)
@@ -3317,10 +3321,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3317 { 3321 {
3318 if (m_disabled) 3322 if (m_disabled)
3319 enableBodySoft(); 3323 enableBodySoft();
3320 else if (!d.BodyIsEnabled(Body)) 3324 else if (!SafeNativeMethods.BodyIsEnabled(Body))
3321 { 3325 {
3322 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3326 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3323 d.BodyEnable(Body); 3327 SafeNativeMethods.BodyEnable(Body);
3324 } 3328 }
3325 } 3329 }
3326 m_torque = newtorque; 3330 m_torque = newtorque;
@@ -3330,10 +3334,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3330 private void changeForce(Vector3 force) 3334 private void changeForce(Vector3 force)
3331 { 3335 {
3332 m_force = force; 3336 m_force = force;
3333 if (!m_isSelected && !m_outbounds && Body != IntPtr.Zero && !d.BodyIsEnabled(Body)) 3337 if (!m_isSelected && !m_outbounds && Body != IntPtr.Zero && !SafeNativeMethods.BodyIsEnabled(Body))
3334 { 3338 {
3335 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3339 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3336 d.BodyEnable(Body); 3340 SafeNativeMethods.BodyEnable(Body);
3337 } 3341 }
3338 } 3342 }
3339 3343
@@ -3349,10 +3353,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3349 { 3353 {
3350 if (m_disabled) 3354 if (m_disabled)
3351 enableBodySoft(); 3355 enableBodySoft();
3352 else if (!d.BodyIsEnabled(Body)) 3356 else if (!SafeNativeMethods.BodyIsEnabled(Body))
3353 { 3357 {
3354 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3358 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3355 d.BodyEnable(Body); 3359 SafeNativeMethods.BodyEnable(Body);
3356 } 3360 }
3357 } 3361 }
3358 } 3362 }
@@ -3372,10 +3376,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3372 { 3376 {
3373 if (m_disabled) 3377 if (m_disabled)
3374 enableBodySoft(); 3378 enableBodySoft();
3375 else if (!d.BodyIsEnabled(Body)) 3379 else if (!SafeNativeMethods.BodyIsEnabled(Body))
3376 { 3380 {
3377 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3381 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3378 d.BodyEnable(Body); 3382 SafeNativeMethods.BodyEnable(Body);
3379 } 3383 }
3380 } 3384 }
3381 } 3385 }
@@ -3398,12 +3402,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3398 { 3402 {
3399 if (m_disabled) 3403 if (m_disabled)
3400 enableBodySoft(); 3404 enableBodySoft();
3401 else if (!d.BodyIsEnabled(Body)) 3405 else if (!SafeNativeMethods.BodyIsEnabled(Body))
3402 { 3406 {
3403 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3407 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3404 d.BodyEnable(Body); 3408 SafeNativeMethods.BodyEnable(Body);
3405 } 3409 }
3406 d.BodySetLinearVel(Body, newVel.X, newVel.Y, newVel.Z); 3410 SafeNativeMethods.BodySetLinearVel(Body, newVel.X, newVel.Y, newVel.Z);
3407 } 3411 }
3408 //resetCollisionAccounting(); 3412 //resetCollisionAccounting();
3409 } 3413 }
@@ -3425,12 +3429,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3425 { 3429 {
3426 if (m_disabled) 3430 if (m_disabled)
3427 enableBodySoft(); 3431 enableBodySoft();
3428 else if (!d.BodyIsEnabled(Body)) 3432 else if (!SafeNativeMethods.BodyIsEnabled(Body))
3429 { 3433 {
3430 d.BodySetAutoDisableSteps(Body, m_body_autodisable_frames); 3434 SafeNativeMethods.BodySetAutoDisableSteps(Body, m_body_autodisable_frames);
3431 d.BodyEnable(Body); 3435 SafeNativeMethods.BodyEnable(Body);
3432 } 3436 }
3433 d.BodySetAngularVel(Body, newAngVel.X, newAngVel.Y, newAngVel.Z); 3437 SafeNativeMethods.BodySetAngularVel(Body, newAngVel.X, newAngVel.Y, newAngVel.Z);
3434 } 3438 }
3435 //resetCollisionAccounting(); 3439 //resetCollisionAccounting();
3436 } 3440 }
@@ -3581,7 +3585,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3581 if (!childPrim && m_isphysical && Body != IntPtr.Zero && 3585 if (!childPrim && m_isphysical && Body != IntPtr.Zero &&
3582 !m_disabled && !m_isSelected && !m_building && !m_outbounds) 3586 !m_disabled && !m_isSelected && !m_building && !m_outbounds)
3583 { 3587 {
3584 if (!d.BodyIsEnabled(Body)) 3588 if (!SafeNativeMethods.BodyIsEnabled(Body))
3585 { 3589 {
3586 // let vehicles sleep 3590 // let vehicles sleep
3587 if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) 3591 if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE)
@@ -3591,18 +3595,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3591 return; 3595 return;
3592 3596
3593 // clear residuals 3597 // clear residuals
3594 d.BodySetAngularVel(Body,0f,0f,0f); 3598 SafeNativeMethods.BodySetAngularVel(Body,0f,0f,0f);
3595 d.BodySetLinearVel(Body,0f,0f,0f); 3599 SafeNativeMethods.BodySetLinearVel(Body,0f,0f,0f);
3596 _zeroFlag = true; 3600 _zeroFlag = true;
3597 d.BodySetAutoDisableSteps(Body, 1); 3601 SafeNativeMethods.BodySetAutoDisableSteps(Body, 1);
3598 d.BodyEnable(Body); 3602 SafeNativeMethods.BodyEnable(Body);
3599 m_bodydisablecontrol = -3; 3603 m_bodydisablecontrol = -3;
3600 } 3604 }
3601 3605
3602 if(m_bodydisablecontrol < 0) 3606 if(m_bodydisablecontrol < 0)
3603 m_bodydisablecontrol++; 3607 m_bodydisablecontrol++;
3604 3608
3605 d.Vector3 lpos = d.GeomGetPosition(prim_geom); // root position that is seem by rest of simulator 3609 SafeNativeMethods.Vector3 lpos = SafeNativeMethods.GeomGetPosition(prim_geom); // root position that is seem by rest of simulator
3606 3610
3607 if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) 3611 if (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE)
3608 { 3612 {
@@ -3629,8 +3633,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3629 3633
3630 if (_target_velocity.ApproxEquals(Vector3.Zero, 0.02f)) 3634 if (_target_velocity.ApproxEquals(Vector3.Zero, 0.02f))
3631 { 3635 {
3632 d.BodySetPosition(Body, m_PIDTarget.X, m_PIDTarget.Y, m_PIDTarget.Z); 3636 SafeNativeMethods.BodySetPosition(Body, m_PIDTarget.X, m_PIDTarget.Y, m_PIDTarget.Z);
3633 d.BodySetLinearVel(Body, 0, 0, 0); 3637 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0);
3634 return; 3638 return;
3635 } 3639 }
3636 else 3640 else
@@ -3653,7 +3657,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3653 _target_velocity *= tmp; 3657 _target_velocity *= tmp;
3654 } 3658 }
3655 3659
3656 d.Vector3 vel = d.BodyGetLinearVel(Body); 3660 SafeNativeMethods.Vector3 vel = SafeNativeMethods.BodyGetLinearVel(Body);
3657 fx = (_target_velocity.X - vel.X) * m_invTimeStep; 3661 fx = (_target_velocity.X - vel.X) * m_invTimeStep;
3658 fy = (_target_velocity.Y - vel.Y) * m_invTimeStep; 3662 fy = (_target_velocity.Y - vel.Y) * m_invTimeStep;
3659 fz = (_target_velocity.Z - vel.Z) * m_invTimeStep; 3663 fz = (_target_velocity.Z - vel.Z) * m_invTimeStep;
@@ -3689,15 +3693,15 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3689 3693
3690 if (m_targetHoverHeight > m_groundHeight || m_isVolumeDetect) 3694 if (m_targetHoverHeight > m_groundHeight || m_isVolumeDetect)
3691 { 3695 {
3692 d.Vector3 vel = d.BodyGetLinearVel(Body); 3696 SafeNativeMethods.Vector3 vel = SafeNativeMethods.BodyGetLinearVel(Body);
3693 3697
3694 fz = (m_targetHoverHeight - lpos.Z); 3698 fz = (m_targetHoverHeight - lpos.Z);
3695 3699
3696 // if error is zero, use position control; otherwise, velocity control 3700 // if error is zero, use position control; otherwise, velocity control
3697 if (Math.Abs(fz) < 0.01f) 3701 if (Math.Abs(fz) < 0.01f)
3698 { 3702 {
3699 d.BodySetPosition(Body, lpos.X, lpos.Y, m_targetHoverHeight); 3703 SafeNativeMethods.BodySetPosition(Body, lpos.X, lpos.Y, m_targetHoverHeight);
3700 d.BodySetLinearVel(Body, vel.X, vel.Y, 0); 3704 SafeNativeMethods.BodySetLinearVel(Body, vel.X, vel.Y, 0);
3701 } 3705 }
3702 else 3706 else
3703 { 3707 {
@@ -3740,7 +3744,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3740 //m_log.Info("[OBJPID]: X:" + fx.ToString() + " Y:" + fy.ToString() + " Z:" + fz.ToString()); 3744 //m_log.Info("[OBJPID]: X:" + fx.ToString() + " Y:" + fy.ToString() + " Z:" + fz.ToString());
3741 if (fx != 0 || fy != 0 || fz != 0) 3745 if (fx != 0 || fy != 0 || fz != 0)
3742 { 3746 {
3743 d.BodyAddForce(Body, fx, fy, fz); 3747 SafeNativeMethods.BodyAddForce(Body, fx, fy, fz);
3744 //Console.WriteLine("AddForce " + fx + "," + fy + "," + fz); 3748 //Console.WriteLine("AddForce " + fx + "," + fy + "," + fz);
3745 } 3749 }
3746 3750
@@ -3751,7 +3755,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3751 m_angularForceacc = Vector3.Zero; 3755 m_angularForceacc = Vector3.Zero;
3752 if (trq.X != 0 || trq.Y != 0 || trq.Z != 0) 3756 if (trq.X != 0 || trq.Y != 0 || trq.Z != 0)
3753 { 3757 {
3754 d.BodyAddTorque(Body, trq.X, trq.Y, trq.Z); 3758 SafeNativeMethods.BodyAddTorque(Body, trq.X, trq.Y, trq.Z);
3755 } 3759 }
3756 } 3760 }
3757 else 3761 else
@@ -3770,12 +3774,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3770 if(m_bodydisablecontrol < 0) 3774 if(m_bodydisablecontrol < 0)
3771 return; 3775 return;
3772 3776
3773 bool bodyenabled = d.BodyIsEnabled(Body); 3777 bool bodyenabled = SafeNativeMethods.BodyIsEnabled(Body);
3774 if (bodyenabled || !_zeroFlag) 3778 if (bodyenabled || !_zeroFlag)
3775 { 3779 {
3776 bool lastZeroFlag = _zeroFlag; 3780 bool lastZeroFlag = _zeroFlag;
3777 3781
3778 d.Vector3 lpos = d.GeomGetPosition(prim_geom); 3782 SafeNativeMethods.Vector3 lpos = SafeNativeMethods.GeomGetPosition(prim_geom);
3779 3783
3780 // check outside region 3784 // check outside region
3781 if (lpos.Z < -100 || lpos.Z > 100000f) 3785 if (lpos.Z < -100 || lpos.Z > 100000f)
@@ -3794,9 +3798,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3794 m_rotationalVelocity.Y = 0; 3798 m_rotationalVelocity.Y = 0;
3795 m_rotationalVelocity.Z = 0; 3799 m_rotationalVelocity.Z = 0;
3796 3800
3797 d.BodySetLinearVel(Body, 0, 0, 0); // stop it 3801 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0); // stop it
3798 d.BodySetAngularVel(Body, 0, 0, 0); // stop it 3802 SafeNativeMethods.BodySetAngularVel(Body, 0, 0, 0); // stop it
3799 d.BodySetPosition(Body, lpos.X, lpos.Y, lpos.Z); // put it somewhere 3803 SafeNativeMethods.BodySetPosition(Body, lpos.X, lpos.Y, lpos.Z); // put it somewhere
3800 m_lastposition = _position; 3804 m_lastposition = _position;
3801 m_lastorientation = _orientation; 3805 m_lastorientation = _orientation;
3802 3806
@@ -3836,19 +3840,19 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3836 m_lastposition = _position; 3840 m_lastposition = _position;
3837 m_lastorientation = _orientation; 3841 m_lastorientation = _orientation;
3838 3842
3839 d.Vector3 dtmp = d.BodyGetAngularVel(Body); 3843 SafeNativeMethods.Vector3 dtmp = SafeNativeMethods.BodyGetAngularVel(Body);
3840 m_rotationalVelocity.X = dtmp.X; 3844 m_rotationalVelocity.X = dtmp.X;
3841 m_rotationalVelocity.Y = dtmp.Y; 3845 m_rotationalVelocity.Y = dtmp.Y;
3842 m_rotationalVelocity.Z = dtmp.Z; 3846 m_rotationalVelocity.Z = dtmp.Z;
3843 3847
3844 dtmp = d.BodyGetLinearVel(Body); 3848 dtmp = SafeNativeMethods.BodyGetLinearVel(Body);
3845 _velocity.X = dtmp.X; 3849 _velocity.X = dtmp.X;
3846 _velocity.Y = dtmp.Y; 3850 _velocity.Y = dtmp.Y;
3847 _velocity.Z = dtmp.Z; 3851 _velocity.Z = dtmp.Z;
3848 3852
3849 d.BodySetLinearVel(Body, 0, 0, 0); // stop it 3853 SafeNativeMethods.BodySetLinearVel(Body, 0, 0, 0); // stop it
3850 d.BodySetAngularVel(Body, 0, 0, 0); 3854 SafeNativeMethods.BodySetAngularVel(Body, 0, 0, 0);
3851 d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z); 3855 SafeNativeMethods.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
3852 disableBodySoft(); // stop collisions 3856 disableBodySoft(); // stop collisions
3853 UnSubscribeEvents(); 3857 UnSubscribeEvents();
3854 3858
@@ -3856,8 +3860,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3856 return; 3860 return;
3857 } 3861 }
3858 3862
3859 d.Quaternion ori; 3863 SafeNativeMethods.Quaternion ori;
3860 d.GeomCopyQuaternion(prim_geom, out ori); 3864 SafeNativeMethods.GeomCopyQuaternion(prim_geom, out ori);
3861 3865
3862 // decide if moving 3866 // decide if moving
3863 // use positions since this are integrated quantities 3867 // use positions since this are integrated quantities
@@ -3918,7 +3922,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3918 } 3922 }
3919 else 3923 else
3920 { 3924 {
3921 d.Vector3 vel = d.BodyGetLinearVel(Body); 3925 SafeNativeMethods.Vector3 vel = SafeNativeMethods.BodyGetLinearVel(Body);
3922 3926
3923 m_acceleration = _velocity; 3927 m_acceleration = _velocity;
3924 3928
@@ -3945,7 +3949,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3945 m_acceleration = Vector3.Zero; 3949 m_acceleration = Vector3.Zero;
3946 } 3950 }
3947 3951
3948 vel = d.BodyGetAngularVel(Body); 3952 vel = SafeNativeMethods.BodyGetAngularVel(Body);
3949 if ((Math.Abs(vel.X) < 0.0001) && 3953 if ((Math.Abs(vel.X) < 0.0001) &&
3950 (Math.Abs(vel.Y) < 0.0001) && 3954 (Math.Abs(vel.Y) < 0.0001) &&
3951 (Math.Abs(vel.Z) < 0.0001) 3955 (Math.Abs(vel.Z) < 0.0001)
@@ -3991,7 +3995,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
3991 return true; 3995 return true;
3992 } 3996 }
3993 3997
3994 internal static void DMassSubPartFromObj(ref d.Mass part, ref d.Mass theobj) 3998 internal static void DMassSubPartFromObj(ref SafeNativeMethods.Mass part, ref SafeNativeMethods.Mass theobj)
3995 { 3999 {
3996 // assumes object center of mass is zero 4000 // assumes object center of mass is zero
3997 float smass = part.mass; 4001 float smass = part.mass;
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODERayCastRequestManager.cs b/OpenSim/Region/PhysicsModules/ubOde/ODERayCastRequestManager.cs
index f671722..2e3a197 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODERayCastRequestManager.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODERayCastRequestManager.cs
@@ -29,10 +29,8 @@ using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection; 30using System.Reflection;
31using System.Runtime.InteropServices; 31using System.Runtime.InteropServices;
32using System.Text;
33using OpenSim.Framework; 32using OpenSim.Framework;
34using OpenSim.Region.PhysicsModules.SharedBase; 33using OpenSim.Region.PhysicsModules.SharedBase;
35using OdeAPI;
36using log4net; 34using log4net;
37using OpenMetaverse; 35using OpenMetaverse;
38 36
@@ -67,7 +65,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
67 /// <summary> 65 /// <summary>
68 /// ODE near callback delegate 66 /// ODE near callback delegate
69 /// </summary> 67 /// </summary>
70 private d.NearCallback nearCallback; 68 private SafeNativeMethods.NearCallback nearCallback;
71 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 69 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
72 private List<ContactResult> m_contactResults = new List<ContactResult>(); 70 private List<ContactResult> m_contactResults = new List<ContactResult>();
73 private RayFilterFlags CurrentRayFilter; 71 private RayFilterFlags CurrentRayFilter;
@@ -77,14 +75,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde
77 { 75 {
78 m_scene = pScene; 76 m_scene = pScene;
79 nearCallback = near; 77 nearCallback = near;
80 ray = d.CreateRay(IntPtr.Zero, 1.0f); 78 ray = SafeNativeMethods.CreateRay(IntPtr.Zero, 1.0f);
81 d.GeomSetCategoryBits(ray, 0); 79 SafeNativeMethods.GeomSetCategoryBits(ray, 0);
82 Box = d.CreateBox(IntPtr.Zero, 1.0f, 1.0f, 1.0f); 80 Box = SafeNativeMethods.CreateBox(IntPtr.Zero, 1.0f, 1.0f, 1.0f);
83 d.GeomSetCategoryBits(Box, 0); 81 SafeNativeMethods.GeomSetCategoryBits(Box, 0);
84 Sphere = d.CreateSphere(IntPtr.Zero,1.0f); 82 Sphere = SafeNativeMethods.CreateSphere(IntPtr.Zero,1.0f);
85 d.GeomSetCategoryBits(Sphere, 0); 83 SafeNativeMethods.GeomSetCategoryBits(Sphere, 0);
86 Plane = d.CreatePlane(IntPtr.Zero, 0f,0f,1f,1f); 84 Plane = SafeNativeMethods.CreatePlane(IntPtr.Zero, 0f,0f,1f,1f);
87 d.GeomSetCategoryBits(Sphere, 0); 85 SafeNativeMethods.GeomSetCategoryBits(Sphere, 0);
88 } 86 }
89 87
90 public void QueueRequest(ODERayRequest req) 88 public void QueueRequest(ODERayRequest req)
@@ -152,29 +150,29 @@ namespace OpenSim.Region.PhysicsModule.ubOde
152 { 150 {
153 if (CollisionContactGeomsPerTest > 80) 151 if (CollisionContactGeomsPerTest > 80)
154 CollisionContactGeomsPerTest = 80; 152 CollisionContactGeomsPerTest = 80;
155 d.GeomBoxSetLengths(Box, req.Normal.X, req.Normal.Y, req.Normal.Z); 153 SafeNativeMethods.GeomBoxSetLengths(Box, req.Normal.X, req.Normal.Y, req.Normal.Z);
156 d.GeomSetPosition(Box, req.Origin.X, req.Origin.Y, req.Origin.Z); 154 SafeNativeMethods.GeomSetPosition(Box, req.Origin.X, req.Origin.Y, req.Origin.Z);
157 d.Quaternion qtmp; 155 SafeNativeMethods.Quaternion qtmp;
158 qtmp.X = req.orientation.X; 156 qtmp.X = req.orientation.X;
159 qtmp.Y = req.orientation.Y; 157 qtmp.Y = req.orientation.Y;
160 qtmp.Z = req.orientation.Z; 158 qtmp.Z = req.orientation.Z;
161 qtmp.W = req.orientation.W; 159 qtmp.W = req.orientation.W;
162 d.GeomSetQuaternion(Box, ref qtmp); 160 SafeNativeMethods.GeomSetQuaternion(Box, ref qtmp);
163 } 161 }
164 else if (req.callbackMethod is ProbeSphereCallback) 162 else if (req.callbackMethod is ProbeSphereCallback)
165 { 163 {
166 if (CollisionContactGeomsPerTest > 80) 164 if (CollisionContactGeomsPerTest > 80)
167 CollisionContactGeomsPerTest = 80; 165 CollisionContactGeomsPerTest = 80;
168 166
169 d.GeomSphereSetRadius(Sphere, req.length); 167 SafeNativeMethods.GeomSphereSetRadius(Sphere, req.length);
170 d.GeomSetPosition(Sphere, req.Origin.X, req.Origin.Y, req.Origin.Z); 168 SafeNativeMethods.GeomSetPosition(Sphere, req.Origin.X, req.Origin.Y, req.Origin.Z);
171 } 169 }
172 else if (req.callbackMethod is ProbePlaneCallback) 170 else if (req.callbackMethod is ProbePlaneCallback)
173 { 171 {
174 if (CollisionContactGeomsPerTest > 80) 172 if (CollisionContactGeomsPerTest > 80)
175 CollisionContactGeomsPerTest = 80; 173 CollisionContactGeomsPerTest = 80;
176 174
177 d.GeomPlaneSetParams(Plane, req.Normal.X, req.Normal.Y, req.Normal.Z, req.length); 175 SafeNativeMethods.GeomPlaneSetParams(Plane, req.Normal.X, req.Normal.Y, req.Normal.Z, req.length);
178 } 176 }
179 177
180 else 178 else
@@ -182,24 +180,24 @@ namespace OpenSim.Region.PhysicsModule.ubOde
182 if (CollisionContactGeomsPerTest > 25) 180 if (CollisionContactGeomsPerTest > 25)
183 CollisionContactGeomsPerTest = 25; 181 CollisionContactGeomsPerTest = 25;
184 182
185 d.GeomRaySetLength(ray, req.length); 183 SafeNativeMethods.GeomRaySetLength(ray, req.length);
186 d.GeomRaySet(ray, req.Origin.X, req.Origin.Y, req.Origin.Z, req.Normal.X, req.Normal.Y, req.Normal.Z); 184 SafeNativeMethods.GeomRaySet(ray, req.Origin.X, req.Origin.Y, req.Origin.Z, req.Normal.X, req.Normal.Y, req.Normal.Z);
187 d.GeomRaySetParams(ray, 0, backfacecull); 185 SafeNativeMethods.GeomRaySetParams(ray, 0, backfacecull);
188 186
189 if (req.callbackMethod is RaycastCallback) 187 if (req.callbackMethod is RaycastCallback)
190 { 188 {
191 // if we only want one get only one per Collision pair saving memory 189 // if we only want one get only one per Collision pair saving memory
192 CurrentRayFilter |= RayFilterFlags.ClosestHit; 190 CurrentRayFilter |= RayFilterFlags.ClosestHit;
193 d.GeomRaySetClosestHit(ray, 1); 191 SafeNativeMethods.GeomRaySetClosestHit(ray, 1);
194 } 192 }
195 else 193 else
196 d.GeomRaySetClosestHit(ray, closestHit); 194 SafeNativeMethods.GeomRaySetClosestHit(ray, closestHit);
197 } 195 }
198 196
199 if ((CurrentRayFilter & RayFilterFlags.ContactsUnImportant) != 0) 197 if ((CurrentRayFilter & RayFilterFlags.ContactsUnImportant) != 0)
200 unchecked 198 unchecked
201 { 199 {
202 CollisionContactGeomsPerTest |= (int)d.CONTACTS_UNIMPORTANT; 200 CollisionContactGeomsPerTest |= (int)SafeNativeMethods.CONTACTS_UNIMPORTANT;
203 } 201 }
204 202
205 if (geom == IntPtr.Zero) 203 if (geom == IntPtr.Zero)
@@ -224,27 +222,27 @@ namespace OpenSim.Region.PhysicsModule.ubOde
224 if (req.callbackMethod is ProbeBoxCallback) 222 if (req.callbackMethod is ProbeBoxCallback)
225 { 223 {
226 catflags |= CollisionCategories.Space; 224 catflags |= CollisionCategories.Space;
227 d.GeomSetCollideBits(Box, (uint)catflags); 225 SafeNativeMethods.GeomSetCollideBits(Box, (uint)catflags);
228 d.GeomSetCategoryBits(Box, (uint)catflags); 226 SafeNativeMethods.GeomSetCategoryBits(Box, (uint)catflags);
229 doProbe(req, Box); 227 doProbe(req, Box);
230 } 228 }
231 else if (req.callbackMethod is ProbeSphereCallback) 229 else if (req.callbackMethod is ProbeSphereCallback)
232 { 230 {
233 catflags |= CollisionCategories.Space; 231 catflags |= CollisionCategories.Space;
234 d.GeomSetCollideBits(Sphere, (uint)catflags); 232 SafeNativeMethods.GeomSetCollideBits(Sphere, (uint)catflags);
235 d.GeomSetCategoryBits(Sphere, (uint)catflags); 233 SafeNativeMethods.GeomSetCategoryBits(Sphere, (uint)catflags);
236 doProbe(req, Sphere); 234 doProbe(req, Sphere);
237 } 235 }
238 else if (req.callbackMethod is ProbePlaneCallback) 236 else if (req.callbackMethod is ProbePlaneCallback)
239 { 237 {
240 catflags |= CollisionCategories.Space; 238 catflags |= CollisionCategories.Space;
241 d.GeomSetCollideBits(Plane, (uint)catflags); 239 SafeNativeMethods.GeomSetCollideBits(Plane, (uint)catflags);
242 d.GeomSetCategoryBits(Plane, (uint)catflags); 240 SafeNativeMethods.GeomSetCategoryBits(Plane, (uint)catflags);
243 doPlane(req,IntPtr.Zero); 241 doPlane(req,IntPtr.Zero);
244 } 242 }
245 else 243 else
246 { 244 {
247 d.GeomSetCollideBits(ray, (uint)catflags); 245 SafeNativeMethods.GeomSetCollideBits(ray, (uint)catflags);
248 doSpaceRay(req); 246 doSpaceRay(req);
249 } 247 }
250 } 248 }
@@ -255,12 +253,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
255 253
256 if (req.callbackMethod is ProbePlaneCallback) 254 if (req.callbackMethod is ProbePlaneCallback)
257 { 255 {
258 d.GeomSetCollideBits(Plane, (uint)CollisionCategories.All); 256 SafeNativeMethods.GeomSetCollideBits(Plane, (uint)CollisionCategories.All);
259 doPlane(req,geom); 257 doPlane(req,geom);
260 } 258 }
261 else 259 else
262 { 260 {
263 d.GeomSetCollideBits(ray, (uint)CollisionCategories.All); 261 SafeNativeMethods.GeomSetCollideBits(ray, (uint)CollisionCategories.All);
264 doGeomRay(req,geom); 262 doGeomRay(req,geom);
265 } 263 }
266 } 264 }
@@ -307,11 +305,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
307 // Collide tests 305 // Collide tests
308 if ((CurrentRayFilter & FilterActiveSpace) != 0) 306 if ((CurrentRayFilter & FilterActiveSpace) != 0)
309 { 307 {
310 d.SpaceCollide2(ray, m_scene.ActiveSpace, IntPtr.Zero, nearCallback); 308 SafeNativeMethods.SpaceCollide2(ray, m_scene.ActiveSpace, IntPtr.Zero, nearCallback);
311 d.SpaceCollide2(ray, m_scene.CharsSpace, IntPtr.Zero, nearCallback); 309 SafeNativeMethods.SpaceCollide2(ray, m_scene.CharsSpace, IntPtr.Zero, nearCallback);
312 } 310 }
313 if ((CurrentRayFilter & FilterStaticSpace) != 0 && (m_contactResults.Count < CurrentMaxCount)) 311 if ((CurrentRayFilter & FilterStaticSpace) != 0 && (m_contactResults.Count < CurrentMaxCount))
314 d.SpaceCollide2(ray, m_scene.StaticSpace, IntPtr.Zero, nearCallback); 312 SafeNativeMethods.SpaceCollide2(ray, m_scene.StaticSpace, IntPtr.Zero, nearCallback);
315 if ((CurrentRayFilter & RayFilterFlags.land) != 0 && (m_contactResults.Count < CurrentMaxCount)) 313 if ((CurrentRayFilter & RayFilterFlags.land) != 0 && (m_contactResults.Count < CurrentMaxCount))
316 { 314 {
317 // current ode land to ray collisions is very bad 315 // current ode land to ray collisions is very bad
@@ -324,11 +322,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
324 { 322 {
325 float tmp2 = req.length * req.length - tmp + 2500; 323 float tmp2 = req.length * req.length - tmp + 2500;
326 tmp2 = (float)Math.Sqrt(tmp2); 324 tmp2 = (float)Math.Sqrt(tmp2);
327 d.GeomRaySetLength(ray, tmp2); 325 SafeNativeMethods.GeomRaySetLength(ray, tmp2);
328 } 326 }
329 327
330 } 328 }
331 d.SpaceCollide2(ray, m_scene.GroundSpace, IntPtr.Zero, nearCallback); 329 SafeNativeMethods.SpaceCollide2(ray, m_scene.GroundSpace, IntPtr.Zero, nearCallback);
332 } 330 }
333 331
334 if (req.callbackMethod is RaycastCallback) 332 if (req.callbackMethod is RaycastCallback)
@@ -377,13 +375,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
377 // Collide tests 375 // Collide tests
378 if ((CurrentRayFilter & FilterActiveSpace) != 0) 376 if ((CurrentRayFilter & FilterActiveSpace) != 0)
379 { 377 {
380 d.SpaceCollide2(probe, m_scene.ActiveSpace, IntPtr.Zero, nearCallback); 378 SafeNativeMethods.SpaceCollide2(probe, m_scene.ActiveSpace, IntPtr.Zero, nearCallback);
381 d.SpaceCollide2(probe, m_scene.CharsSpace, IntPtr.Zero, nearCallback); 379 SafeNativeMethods.SpaceCollide2(probe, m_scene.CharsSpace, IntPtr.Zero, nearCallback);
382 } 380 }
383 if ((CurrentRayFilter & FilterStaticSpace) != 0 && (m_contactResults.Count < CurrentMaxCount)) 381 if ((CurrentRayFilter & FilterStaticSpace) != 0 && (m_contactResults.Count < CurrentMaxCount))
384 d.SpaceCollide2(probe, m_scene.StaticSpace, IntPtr.Zero, nearCallback); 382 SafeNativeMethods.SpaceCollide2(probe, m_scene.StaticSpace, IntPtr.Zero, nearCallback);
385 if ((CurrentRayFilter & RayFilterFlags.land) != 0 && (m_contactResults.Count < CurrentMaxCount)) 383 if ((CurrentRayFilter & RayFilterFlags.land) != 0 && (m_contactResults.Count < CurrentMaxCount))
386 d.SpaceCollide2(probe, m_scene.GroundSpace, IntPtr.Zero, nearCallback); 384 SafeNativeMethods.SpaceCollide2(probe, m_scene.GroundSpace, IntPtr.Zero, nearCallback);
387 385
388 List<ContactResult> cresult = new List<ContactResult>(m_contactResults.Count); 386 List<ContactResult> cresult = new List<ContactResult>(m_contactResults.Count);
389 lock (m_PendingRequests) 387 lock (m_PendingRequests)
@@ -404,17 +402,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
404 { 402 {
405 if ((CurrentRayFilter & FilterActiveSpace) != 0) 403 if ((CurrentRayFilter & FilterActiveSpace) != 0)
406 { 404 {
407 d.SpaceCollide2(Plane, m_scene.ActiveSpace, IntPtr.Zero, nearCallback); 405 SafeNativeMethods.SpaceCollide2(Plane, m_scene.ActiveSpace, IntPtr.Zero, nearCallback);
408 d.SpaceCollide2(Plane, m_scene.CharsSpace, IntPtr.Zero, nearCallback); 406 SafeNativeMethods.SpaceCollide2(Plane, m_scene.CharsSpace, IntPtr.Zero, nearCallback);
409 } 407 }
410 if ((CurrentRayFilter & FilterStaticSpace) != 0 && (m_contactResults.Count < CurrentMaxCount)) 408 if ((CurrentRayFilter & FilterStaticSpace) != 0 && (m_contactResults.Count < CurrentMaxCount))
411 d.SpaceCollide2(Plane, m_scene.StaticSpace, IntPtr.Zero, nearCallback); 409 SafeNativeMethods.SpaceCollide2(Plane, m_scene.StaticSpace, IntPtr.Zero, nearCallback);
412 if ((CurrentRayFilter & RayFilterFlags.land) != 0 && (m_contactResults.Count < CurrentMaxCount)) 410 if ((CurrentRayFilter & RayFilterFlags.land) != 0 && (m_contactResults.Count < CurrentMaxCount))
413 d.SpaceCollide2(Plane, m_scene.GroundSpace, IntPtr.Zero, nearCallback); 411 SafeNativeMethods.SpaceCollide2(Plane, m_scene.GroundSpace, IntPtr.Zero, nearCallback);
414 } 412 }
415 else 413 else
416 { 414 {
417 d.SpaceCollide2(Plane, geom, IntPtr.Zero, nearCallback); 415 SafeNativeMethods.SpaceCollide2(Plane, geom, IntPtr.Zero, nearCallback);
418 } 416 }
419 417
420 List<ContactResult> cresult = new List<ContactResult>(m_contactResults.Count); 418 List<ContactResult> cresult = new List<ContactResult>(m_contactResults.Count);
@@ -434,7 +432,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
434 private void doGeomRay(ODERayRequest req, IntPtr geom) 432 private void doGeomRay(ODERayRequest req, IntPtr geom)
435 { 433 {
436 // Collide test 434 // Collide test
437 d.SpaceCollide2(ray, geom, IntPtr.Zero, nearCallback); // still do this to have full AABB pre test 435 SafeNativeMethods.SpaceCollide2(ray, geom, IntPtr.Zero, nearCallback); // still do this to have full AABB pre test
438 436
439 if (req.callbackMethod is RaycastCallback) 437 if (req.callbackMethod is RaycastCallback)
440 { 438 {
@@ -478,14 +476,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde
478 } 476 }
479 } 477 }
480 478
481 private bool GetCurContactGeom(int index, ref d.ContactGeom newcontactgeom) 479 private bool GetCurContactGeom(int index, ref SafeNativeMethods.ContactGeom newcontactgeom)
482 { 480 {
483 IntPtr ContactgeomsArray = m_scene.ContactgeomsArray; 481 IntPtr ContactgeomsArray = m_scene.ContactgeomsArray;
484 if (ContactgeomsArray == IntPtr.Zero || index >= CollisionContactGeomsPerTest) 482 if (ContactgeomsArray == IntPtr.Zero || index >= CollisionContactGeomsPerTest)
485 return false; 483 return false;
486 484
487 IntPtr contactptr = new IntPtr(ContactgeomsArray.ToInt64() + (Int64)(index * d.ContactGeom.unmanagedSizeOf)); 485 IntPtr contactptr = new IntPtr(ContactgeomsArray.ToInt64() + (Int64)(index * SafeNativeMethods.ContactGeom.unmanagedSizeOf));
488 newcontactgeom = (d.ContactGeom)Marshal.PtrToStructure(contactptr, typeof(d.ContactGeom)); 486 newcontactgeom = (SafeNativeMethods.ContactGeom)Marshal.PtrToStructure(contactptr, typeof(SafeNativeMethods.ContactGeom));
489 return true; 487 return true;
490 } 488 }
491 489
@@ -498,11 +496,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
498 if (m_contactResults.Count >= CurrentMaxCount) 496 if (m_contactResults.Count >= CurrentMaxCount)
499 return; 497 return;
500 498
501 if (d.GeomIsSpace(g2)) 499 if (SafeNativeMethods.GeomIsSpace(g2))
502 { 500 {
503 try 501 try
504 { 502 {
505 d.SpaceCollide2(g1, g2, IntPtr.Zero, nearCallback); 503 SafeNativeMethods.SpaceCollide2(g1, g2, IntPtr.Zero, nearCallback);
506 } 504 }
507 catch (Exception e) 505 catch (Exception e)
508 { 506 {
@@ -514,7 +512,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
514 int count = 0; 512 int count = 0;
515 try 513 try
516 { 514 {
517 count = d.CollidePtr(g1, g2, CollisionContactGeomsPerTest, m_scene.ContactgeomsArray, d.ContactGeom.unmanagedSizeOf); 515 count = SafeNativeMethods.CollidePtr(g1, g2, CollisionContactGeomsPerTest, m_scene.ContactgeomsArray, SafeNativeMethods.ContactGeom.unmanagedSizeOf);
518 } 516 }
519 catch (Exception e) 517 catch (Exception e)
520 { 518 {
@@ -586,7 +584,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
586 break; 584 break;
587 } 585 }
588 586
589 d.ContactGeom curcontact = new d.ContactGeom(); 587 SafeNativeMethods.ContactGeom curcontact = new SafeNativeMethods.ContactGeom();
590 588
591 // closestHit for now only works for meshs, so must do it for others 589 // closestHit for now only works for meshs, so must do it for others
592 if ((CurrentRayFilter & RayFilterFlags.ClosestHit) == 0) 590 if ((CurrentRayFilter & RayFilterFlags.ClosestHit) == 0)
@@ -654,22 +652,22 @@ namespace OpenSim.Region.PhysicsModule.ubOde
654 m_scene = null; 652 m_scene = null;
655 if (ray != IntPtr.Zero) 653 if (ray != IntPtr.Zero)
656 { 654 {
657 d.GeomDestroy(ray); 655 SafeNativeMethods.GeomDestroy(ray);
658 ray = IntPtr.Zero; 656 ray = IntPtr.Zero;
659 } 657 }
660 if (Box != IntPtr.Zero) 658 if (Box != IntPtr.Zero)
661 { 659 {
662 d.GeomDestroy(Box); 660 SafeNativeMethods.GeomDestroy(Box);
663 Box = IntPtr.Zero; 661 Box = IntPtr.Zero;
664 } 662 }
665 if (Sphere != IntPtr.Zero) 663 if (Sphere != IntPtr.Zero)
666 { 664 {
667 d.GeomDestroy(Sphere); 665 SafeNativeMethods.GeomDestroy(Sphere);
668 Sphere = IntPtr.Zero; 666 Sphere = IntPtr.Zero;
669 } 667 }
670 if (Plane != IntPtr.Zero) 668 if (Plane != IntPtr.Zero)
671 { 669 {
672 d.GeomDestroy(Plane); 670 SafeNativeMethods.GeomDestroy(Plane);
673 Plane = IntPtr.Zero; 671 Plane = IntPtr.Zero;
674 } 672 }
675 } 673 }
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs
index 004ee7f..0003085 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs
@@ -34,15 +34,10 @@ using System.Linq;
34using System.Reflection; 34using System.Reflection;
35using System.Runtime.InteropServices; 35using System.Runtime.InteropServices;
36using System.Threading; 36using System.Threading;
37using System.IO;
38using System.Diagnostics;
39using log4net; 37using log4net;
40using Nini.Config; 38using Nini.Config;
41using Mono.Addins;
42using OdeAPI;
43using OpenSim.Framework; 39using OpenSim.Framework;
44using OpenSim.Region.Framework.Scenes; 40using OpenSim.Region.Framework.Scenes;
45using OpenSim.Region.Framework.Interfaces;
46using OpenSim.Region.PhysicsModules.SharedBase; 41using OpenSim.Region.PhysicsModules.SharedBase;
47using OpenMetaverse; 42using OpenMetaverse;
48 43
@@ -179,12 +174,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
179 174
180// const d.ContactFlags comumContactFlags = d.ContactFlags.SoftERP | d.ContactFlags.SoftCFM |d.ContactFlags.Approx1 | d.ContactFlags.Bounce; 175// const d.ContactFlags comumContactFlags = d.ContactFlags.SoftERP | d.ContactFlags.SoftCFM |d.ContactFlags.Approx1 | d.ContactFlags.Bounce;
181 176
182 const d.ContactFlags comumContactFlags = d.ContactFlags.Bounce | d.ContactFlags.Approx1 | d.ContactFlags.Slip1 | d.ContactFlags.Slip2; 177// const d.ContactFlags comumContactFlags = d.ContactFlags.Bounce | d.ContactFlags.Approx1 | d.ContactFlags.Slip1 | d.ContactFlags.Slip2;
178 const SafeNativeMethods.ContactFlags comumContactFlags = SafeNativeMethods.ContactFlags.Bounce | SafeNativeMethods.ContactFlags.Approx1;
183 const float comumContactERP = 0.75f; 179 const float comumContactERP = 0.75f;
184 const float comumContactCFM = 0.0001f; 180 const float comumContactCFM = 0.0001f;
185 const float comumContactSLIP = 0f; 181 const float comumContactSLIP = 0f;
186 182
187 float frictionMovementMult = 0.8f; 183// float frictionMovementMult = 0.2f;
188 184
189 float TerrainBounce = 0.001f; 185 float TerrainBounce = 0.001f;
190 float TerrainFriction = 0.3f; 186 float TerrainFriction = 0.3f;
@@ -200,7 +196,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
200 public float ODE_STEPSIZE = 0.020f; 196 public float ODE_STEPSIZE = 0.020f;
201 public float HalfOdeStep = 0.01f; 197 public float HalfOdeStep = 0.01f;
202 public int odetimestepMS = 20; // rounded 198 public int odetimestepMS = 20; // rounded
203 private float metersInSpace = 25.6f;
204 private float m_timeDilation = 1.0f; 199 private float m_timeDilation = 1.0f;
205 200
206 private double m_lastframe; 201 private double m_lastframe;
@@ -228,7 +223,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
228 223
229 public int bodyFramesAutoDisable = 5; 224 public int bodyFramesAutoDisable = 5;
230 225
231 private d.NearCallback nearCallback; 226 private SafeNativeMethods.NearCallback nearCallback;
232 227
233 private Dictionary<uint,OdePrim> _prims = new Dictionary<uint,OdePrim>(); 228 private Dictionary<uint,OdePrim> _prims = new Dictionary<uint,OdePrim>();
234 private HashSet<OdeCharacter> _characters = new HashSet<OdeCharacter>(); 229 private HashSet<OdeCharacter> _characters = new HashSet<OdeCharacter>();
@@ -251,7 +246,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
251 private int contactsPerCollision = 80; 246 private int contactsPerCollision = 80;
252 internal IntPtr ContactgeomsArray = IntPtr.Zero; 247 internal IntPtr ContactgeomsArray = IntPtr.Zero;
253 private IntPtr GlobalContactsArray = IntPtr.Zero; 248 private IntPtr GlobalContactsArray = IntPtr.Zero;
254 private d.Contact SharedTmpcontact = new d.Contact(); 249 private SafeNativeMethods.Contact SharedTmpcontact = new SafeNativeMethods.Contact();
255 250
256 const int maxContactsbeforedeath = 6000; 251 const int maxContactsbeforedeath = 6000;
257 private volatile int m_global_contactcount = 0; 252 private volatile int m_global_contactcount = 0;
@@ -283,16 +278,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
283 public IntPtr StaticSpace; // space for the static things around 278 public IntPtr StaticSpace; // space for the static things around
284 public IntPtr GroundSpace; // space for ground 279 public IntPtr GroundSpace; // space for ground
285 280
286 // some speedup variables
287 private int spaceGridMaxX;
288 private int spaceGridMaxY;
289 private float spacesPerMeterX;
290 private float spacesPerMeterY;
291
292 // split static geometry collision into a grid as before
293 private IntPtr[,] staticPrimspace;
294 private IntPtr[] staticPrimspaceOffRegion;
295
296 public Object OdeLock; 281 public Object OdeLock;
297 public static Object SimulationLock; 282 public static Object SimulationLock;
298 283
@@ -366,7 +351,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
366 /// </summary> 351 /// </summary>
367 private void Initialization() 352 private void Initialization()
368 { 353 {
369 d.AllocateODEDataForThread(~0U); 354 SafeNativeMethods.AllocateODEDataForThread(~0U);
370 355
371 SimulationLock = new Object(); 356 SimulationLock = new Object();
372 357
@@ -384,14 +369,24 @@ namespace OpenSim.Region.PhysicsModule.ubOde
384 // Create the world and the first space 369 // Create the world and the first space
385 try 370 try
386 { 371 {
387 world = d.WorldCreate(); 372 world = SafeNativeMethods.WorldCreate();
388 TopSpace = d.HashSpaceCreate(IntPtr.Zero); 373 TopSpace = SafeNativeMethods.SimpleSpaceCreate(IntPtr.Zero);
389 374 ActiveSpace = SafeNativeMethods.SimpleSpaceCreate(TopSpace);
390 // now the major subspaces 375 CharsSpace = SafeNativeMethods.SimpleSpaceCreate(TopSpace);
391 ActiveSpace = d.HashSpaceCreate(TopSpace); 376 GroundSpace = SafeNativeMethods.SimpleSpaceCreate(TopSpace);
392 CharsSpace = d.HashSpaceCreate(TopSpace); 377 float sx = WorldExtents.X + 16;
393 StaticSpace = d.HashSpaceCreate(TopSpace); 378 float sy = WorldExtents.Y + 16;
394 GroundSpace = d.HashSpaceCreate(TopSpace); 379 SafeNativeMethods.Vector3 ex =new SafeNativeMethods.Vector3(sx, sy, 0);
380 SafeNativeMethods.Vector3 px =new SafeNativeMethods.Vector3(sx * 0.5f, sx * 0.5f, 0);
381 if(sx < sy)
382 sx = sy;
383 sx = (float)Math.Log(sx) * 1.442695f + 0.5f;
384 int dp = (int)sx - 2;
385 if(dp > 8)
386 dp = 8;
387 else if(dp < 4)
388 dp = 4;
389 StaticSpace = SafeNativeMethods.QuadTreeSpaceCreate(TopSpace, ref px, ref ex, dp);
395 } 390 }
396 catch 391 catch
397 { 392 {
@@ -399,54 +394,48 @@ namespace OpenSim.Region.PhysicsModule.ubOde
399 // i did! 394 // i did!
400 } 395 }
401 396
402 d.HashSpaceSetLevels(TopSpace, -5, 12);
403 d.HashSpaceSetLevels(ActiveSpace, -5, 10);
404 d.HashSpaceSetLevels(CharsSpace, -4, 3);
405 d.HashSpaceSetLevels(StaticSpace, -5, 12);
406 d.HashSpaceSetLevels(GroundSpace, 0, 8);
407
408 // demote to second level 397 // demote to second level
409 d.SpaceSetSublevel(ActiveSpace, 1); 398 SafeNativeMethods.SpaceSetSublevel(ActiveSpace, 1);
410 d.SpaceSetSublevel(CharsSpace, 1); 399 SafeNativeMethods.SpaceSetSublevel(CharsSpace, 1);
411 d.SpaceSetSublevel(StaticSpace, 1); 400 SafeNativeMethods.SpaceSetSublevel(StaticSpace, 1);
412 d.SpaceSetSublevel(GroundSpace, 1); 401 SafeNativeMethods.SpaceSetSublevel(GroundSpace, 1);
413 402
414 d.GeomSetCategoryBits(ActiveSpace, (uint)(CollisionCategories.Space | 403 SafeNativeMethods.GeomSetCategoryBits(ActiveSpace, (uint)(CollisionCategories.Space |
415 CollisionCategories.Geom | 404 CollisionCategories.Geom |
416 CollisionCategories.Character | 405 CollisionCategories.Character |
417 CollisionCategories.Phantom | 406 CollisionCategories.Phantom |
418 CollisionCategories.VolumeDtc 407 CollisionCategories.VolumeDtc
419 )); 408 ));
420 d.GeomSetCollideBits(ActiveSpace, (uint)(CollisionCategories.Space | 409 SafeNativeMethods.GeomSetCollideBits(ActiveSpace, (uint)(CollisionCategories.Space |
421 CollisionCategories.Geom | 410 CollisionCategories.Geom |
422 CollisionCategories.Character | 411 CollisionCategories.Character |
423 CollisionCategories.Phantom | 412 CollisionCategories.Phantom |
424 CollisionCategories.VolumeDtc 413 CollisionCategories.VolumeDtc
425 )); 414 ));
426 d.GeomSetCategoryBits(CharsSpace, (uint)(CollisionCategories.Space | 415 SafeNativeMethods.GeomSetCategoryBits(CharsSpace, (uint)(CollisionCategories.Space |
427 CollisionCategories.Geom | 416 CollisionCategories.Geom |
428 CollisionCategories.Character | 417 CollisionCategories.Character |
429 CollisionCategories.Phantom | 418 CollisionCategories.Phantom |
430 CollisionCategories.VolumeDtc 419 CollisionCategories.VolumeDtc
431 )); 420 ));
432 d.GeomSetCollideBits(CharsSpace, 0); 421 SafeNativeMethods.GeomSetCollideBits(CharsSpace, 0);
433 422
434 d.GeomSetCategoryBits(StaticSpace, (uint)(CollisionCategories.Space | 423 SafeNativeMethods.GeomSetCategoryBits(StaticSpace, (uint)(CollisionCategories.Space |
435 CollisionCategories.Geom | 424 CollisionCategories.Geom |
436 // CollisionCategories.Land | 425 // CollisionCategories.Land |
437 // CollisionCategories.Water | 426 // CollisionCategories.Water |
438 CollisionCategories.Phantom | 427 CollisionCategories.Phantom |
439 CollisionCategories.VolumeDtc 428 CollisionCategories.VolumeDtc
440 )); 429 ));
441 d.GeomSetCollideBits(StaticSpace, 0); 430 SafeNativeMethods.GeomSetCollideBits(StaticSpace, 0);
442 431
443 d.GeomSetCategoryBits(GroundSpace, (uint)(CollisionCategories.Land)); 432 SafeNativeMethods.GeomSetCategoryBits(GroundSpace, (uint)(CollisionCategories.Land));
444 d.GeomSetCollideBits(GroundSpace, 0); 433 SafeNativeMethods.GeomSetCollideBits(GroundSpace, 0);
445 434
446 contactgroup = d.JointGroupCreate(maxContactsbeforedeath + 1); 435 contactgroup = SafeNativeMethods.JointGroupCreate(maxContactsbeforedeath + 1);
447 //contactgroup 436 //contactgroup
448 437
449 d.WorldSetAutoDisableFlag(world, false); 438 SafeNativeMethods.WorldSetAutoDisableFlag(world, false);
450 } 439 }
451 440
452 441
@@ -468,8 +457,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
468 gravityy = physicsconfig.GetFloat("world_gravityy", gravityy); 457 gravityy = physicsconfig.GetFloat("world_gravityy", gravityy);
469 gravityz = physicsconfig.GetFloat("world_gravityz", gravityz); 458 gravityz = physicsconfig.GetFloat("world_gravityz", gravityz);
470 459
471 metersInSpace = physicsconfig.GetFloat("meters_in_small_space", metersInSpace);
472
473 // contactsurfacelayer = physicsconfig.GetFloat("world_contact_surface_layer", contactsurfacelayer); 460 // contactsurfacelayer = physicsconfig.GetFloat("world_contact_surface_layer", contactsurfacelayer);
474 461
475 ODE_STEPSIZE = physicsconfig.GetFloat("world_stepsize", ODE_STEPSIZE); 462 ODE_STEPSIZE = physicsconfig.GetFloat("world_stepsize", ODE_STEPSIZE);
@@ -498,27 +485,27 @@ namespace OpenSim.Region.PhysicsModule.ubOde
498 maximumAngularVelocity = 0.49f * heartbeat *(float)Math.PI; 485 maximumAngularVelocity = 0.49f * heartbeat *(float)Math.PI;
499 maxAngVelocitySQ = maximumAngularVelocity * maximumAngularVelocity; 486 maxAngVelocitySQ = maximumAngularVelocity * maximumAngularVelocity;
500 487
501 d.WorldSetCFM(world, comumContactCFM); 488 SafeNativeMethods.WorldSetCFM(world, comumContactCFM);
502 d.WorldSetERP(world, comumContactERP); 489 SafeNativeMethods.WorldSetERP(world, comumContactERP);
503 490
504 d.WorldSetGravity(world, gravityx, gravityy, gravityz); 491 SafeNativeMethods.WorldSetGravity(world, gravityx, gravityy, gravityz);
505 492
506 d.WorldSetLinearDamping(world, 0.001f); 493 SafeNativeMethods.WorldSetLinearDamping(world, 0.001f);
507 d.WorldSetAngularDamping(world, 0.002f); 494 SafeNativeMethods.WorldSetAngularDamping(world, 0.002f);
508 d.WorldSetAngularDampingThreshold(world, 0f); 495 SafeNativeMethods.WorldSetAngularDampingThreshold(world, 0f);
509 d.WorldSetLinearDampingThreshold(world, 0f); 496 SafeNativeMethods.WorldSetLinearDampingThreshold(world, 0f);
510 d.WorldSetMaxAngularSpeed(world, maximumAngularVelocity); 497 SafeNativeMethods.WorldSetMaxAngularSpeed(world, maximumAngularVelocity);
511 498
512 d.WorldSetQuickStepNumIterations(world, m_physicsiterations); 499 SafeNativeMethods.WorldSetQuickStepNumIterations(world, m_physicsiterations);
513 500
514 d.WorldSetContactSurfaceLayer(world, contactsurfacelayer); 501 SafeNativeMethods.WorldSetContactSurfaceLayer(world, contactsurfacelayer);
515 d.WorldSetContactMaxCorrectingVel(world, 60.0f); 502 SafeNativeMethods.WorldSetContactMaxCorrectingVel(world, 60.0f);
516 503
517 HalfOdeStep = ODE_STEPSIZE * 0.5f; 504 HalfOdeStep = ODE_STEPSIZE * 0.5f;
518 odetimestepMS = (int)(1000.0f * ODE_STEPSIZE + 0.5f); 505 odetimestepMS = (int)(1000.0f * ODE_STEPSIZE + 0.5f);
519 506
520 ContactgeomsArray = Marshal.AllocHGlobal(contactsPerCollision * d.ContactGeom.unmanagedSizeOf); 507 ContactgeomsArray = Marshal.AllocHGlobal(contactsPerCollision * SafeNativeMethods.ContactGeom.unmanagedSizeOf);
521 GlobalContactsArray = Marshal.AllocHGlobal((maxContactsbeforedeath + 100) * d.Contact.unmanagedSizeOf); 508 GlobalContactsArray = Marshal.AllocHGlobal((maxContactsbeforedeath + 100) * SafeNativeMethods.Contact.unmanagedSizeOf);
522 509
523 SharedTmpcontact.geom.g1 = IntPtr.Zero; 510 SharedTmpcontact.geom.g1 = IntPtr.Zero;
524 SharedTmpcontact.geom.g2 = IntPtr.Zero; 511 SharedTmpcontact.geom.g2 = IntPtr.Zero;
@@ -559,76 +546,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
559 m_materialContactsData[(int)Material.light].mu = 0.0f; 546 m_materialContactsData[(int)Material.light].mu = 0.0f;
560 m_materialContactsData[(int)Material.light].bounce = 0.0f; 547 m_materialContactsData[(int)Material.light].bounce = 0.0f;
561 548
562
563 spacesPerMeterX = 1.0f / metersInSpace;
564 spacesPerMeterY = spacesPerMeterX;
565 spaceGridMaxX = (int)(WorldExtents.X * spacesPerMeterX);
566 spaceGridMaxY = (int)(WorldExtents.Y * spacesPerMeterY);
567
568 if (spaceGridMaxX > 24)
569 {
570 spaceGridMaxX = 24;
571 spacesPerMeterX = spaceGridMaxX / WorldExtents.X;
572 }
573
574 if (spaceGridMaxY > 24)
575 {
576 spaceGridMaxY = 24;
577 spacesPerMeterY = spaceGridMaxY / WorldExtents.Y;
578 }
579
580 staticPrimspace = new IntPtr[spaceGridMaxX, spaceGridMaxY];
581
582 // create all spaces now
583 int i, j;
584 IntPtr newspace;
585
586 for (i = 0; i < spaceGridMaxX; i++)
587 for (j = 0; j < spaceGridMaxY; j++)
588 {
589 newspace = d.HashSpaceCreate(StaticSpace);
590 d.GeomSetCategoryBits(newspace, (int)CollisionCategories.Space);
591 waitForSpaceUnlock(newspace);
592 d.SpaceSetSublevel(newspace, 2);
593 d.HashSpaceSetLevels(newspace, -2, 8);
594 d.GeomSetCategoryBits(newspace, (uint)(CollisionCategories.Space |
595 CollisionCategories.Geom |
596 CollisionCategories.Land |
597 CollisionCategories.Water |
598 CollisionCategories.Phantom |
599 CollisionCategories.VolumeDtc
600 ));
601 d.GeomSetCollideBits(newspace, 0);
602
603 staticPrimspace[i, j] = newspace;
604 }
605
606 // let this now be index limit
607 spaceGridMaxX--;
608 spaceGridMaxY--;
609
610 // create 4 off world spaces (x<0,x>max,y<0,y>max)
611 staticPrimspaceOffRegion = new IntPtr[4];
612
613 for (i = 0; i < 4; i++)
614 {
615 newspace = d.HashSpaceCreate(StaticSpace);
616 d.GeomSetCategoryBits(newspace, (int)CollisionCategories.Space);
617 waitForSpaceUnlock(newspace);
618 d.SpaceSetSublevel(newspace, 2);
619 d.HashSpaceSetLevels(newspace, -2, 8);
620 d.GeomSetCategoryBits(newspace, (uint)(CollisionCategories.Space |
621 CollisionCategories.Geom |
622 CollisionCategories.Land |
623 CollisionCategories.Water |
624 CollisionCategories.Phantom |
625 CollisionCategories.VolumeDtc
626 ));
627 d.GeomSetCollideBits(newspace, 0);
628
629 staticPrimspaceOffRegion[i] = newspace;
630 }
631
632 m_lastframe = Util.GetTimeStamp(); 549 m_lastframe = Util.GetTimeStamp();
633 m_lastMeshExpire = m_lastframe; 550 m_lastMeshExpire = m_lastframe;
634 step_time = -1; 551 step_time = -1;
@@ -643,7 +560,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
643 #region Collision Detection 560 #region Collision Detection
644 561
645 // sets a global contact for a joint for contactgeom , and base contact description) 562 // sets a global contact for a joint for contactgeom , and base contact description)
646 private IntPtr CreateContacJoint(ref d.ContactGeom contactGeom,bool smooth) 563 private IntPtr CreateContacJoint(ref SafeNativeMethods.ContactGeom contactGeom,bool smooth)
647 { 564 {
648 if (m_global_contactcount >= maxContactsbeforedeath) 565 if (m_global_contactcount >= maxContactsbeforedeath)
649 return IntPtr.Zero; 566 return IntPtr.Zero;
@@ -656,18 +573,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
656 SharedTmpcontact.geom.pos = contactGeom.pos; 573 SharedTmpcontact.geom.pos = contactGeom.pos;
657 SharedTmpcontact.geom.normal = contactGeom.normal; 574 SharedTmpcontact.geom.normal = contactGeom.normal;
658 575
659 IntPtr contact = new IntPtr(GlobalContactsArray.ToInt64() + (Int64)(m_global_contactcount * d.Contact.unmanagedSizeOf)); 576 IntPtr contact = new IntPtr(GlobalContactsArray.ToInt64() + (Int64)(m_global_contactcount * SafeNativeMethods.Contact.unmanagedSizeOf));
660 Marshal.StructureToPtr(SharedTmpcontact, contact, true); 577 Marshal.StructureToPtr(SharedTmpcontact, contact, true);
661 return d.JointCreateContactPtr(world, contactgroup, contact); 578 return SafeNativeMethods.JointCreateContactPtr(world, contactgroup, contact);
662 } 579 }
663 580
664 private bool GetCurContactGeom(int index, ref d.ContactGeom newcontactgeom) 581 private bool GetCurContactGeom(int index, ref SafeNativeMethods.ContactGeom newcontactgeom)
665 { 582 {
666 if (ContactgeomsArray == IntPtr.Zero || index >= contactsPerCollision) 583 if (ContactgeomsArray == IntPtr.Zero || index >= contactsPerCollision)
667 return false; 584 return false;
668 585
669 IntPtr contactptr = new IntPtr(ContactgeomsArray.ToInt64() + (Int64)(index * d.ContactGeom.unmanagedSizeOf)); 586 IntPtr contactptr = new IntPtr(ContactgeomsArray.ToInt64() + (Int64)(index * SafeNativeMethods.ContactGeom.unmanagedSizeOf));
670 newcontactgeom = (d.ContactGeom)Marshal.PtrToStructure(contactptr, typeof(d.ContactGeom)); 587 newcontactgeom = (SafeNativeMethods.ContactGeom)Marshal.PtrToStructure(contactptr, typeof(SafeNativeMethods.ContactGeom));
671 return true; 588 return true;
672 } 589 }
673 590
@@ -692,14 +609,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde
692 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero) 609 if (g1 == IntPtr.Zero || g2 == IntPtr.Zero)
693 return; 610 return;
694 611
695 if (d.GeomIsSpace(g1) || d.GeomIsSpace(g2)) 612 if (SafeNativeMethods.GeomIsSpace(g1) || SafeNativeMethods.GeomIsSpace(g2))
696 { 613 {
697 // We'll be calling near recursivly if one 614 // We'll be calling near recursivly if one
698 // of them is a space to find all of the 615 // of them is a space to find all of the
699 // contact points in the space 616 // contact points in the space
700 try 617 try
701 { 618 {
702 d.SpaceCollide2(g1, g2, IntPtr.Zero, nearCallback); 619 SafeNativeMethods.SpaceCollide2(g1, g2, IntPtr.Zero, nearCallback);
703 } 620 }
704 catch (AccessViolationException) 621 catch (AccessViolationException)
705 { 622 {
@@ -714,8 +631,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
714 631
715 // get geom bodies to check if we already a joint contact 632 // get geom bodies to check if we already a joint contact
716 // guess this shouldn't happen now 633 // guess this shouldn't happen now
717 IntPtr b1 = d.GeomGetBody(g1); 634 IntPtr b1 = SafeNativeMethods.GeomGetBody(g1);
718 IntPtr b2 = d.GeomGetBody(g2); 635 IntPtr b2 = SafeNativeMethods.GeomGetBody(g2);
719 636
720 // d.GeomClassID id = d.GeomGetClass(g1); 637 // d.GeomClassID id = d.GeomGetClass(g1);
721 638
@@ -757,19 +674,18 @@ namespace OpenSim.Region.PhysicsModule.ubOde
757 // 674 //
758 */ 675 */
759 676
760 677 if (SafeNativeMethods.GeomGetCategoryBits(g1) == (uint)CollisionCategories.VolumeDtc ||
761 if (d.GeomGetCategoryBits(g1) == (uint)CollisionCategories.VolumeDtc || 678 SafeNativeMethods.GeomGetCategoryBits(g2) == (uint)CollisionCategories.VolumeDtc)
762 d.GeomGetCategoryBits(g2) == (uint)CollisionCategories.VolumeDtc)
763 { 679 {
764 int cflags; 680 int cflags;
765 unchecked 681 unchecked
766 { 682 {
767 cflags = (int)(1 | d.CONTACTS_UNIMPORTANT); 683 cflags = (int)(1 | SafeNativeMethods.CONTACTS_UNIMPORTANT);
768 } 684 }
769 count = d.CollidePtr(g1, g2, cflags, ContactgeomsArray, d.ContactGeom.unmanagedSizeOf); 685 count = SafeNativeMethods.CollidePtr(g1, g2, cflags, ContactgeomsArray, SafeNativeMethods.ContactGeom.unmanagedSizeOf);
770 } 686 }
771 else 687 else
772 count = d.CollidePtr(g1, g2, (contactsPerCollision & 0xffff), ContactgeomsArray, d.ContactGeom.unmanagedSizeOf); 688 count = SafeNativeMethods.CollidePtr(g1, g2, (contactsPerCollision & 0xffff), ContactgeomsArray, SafeNativeMethods.ContactGeom.unmanagedSizeOf);
773 } 689 }
774 catch (SEHException) 690 catch (SEHException)
775 { 691 {
@@ -805,7 +721,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
805 721
806 722
807 // get first contact 723 // get first contact
808 d.ContactGeom curContact = new d.ContactGeom(); 724 SafeNativeMethods.ContactGeom curContact = new SafeNativeMethods.ContactGeom();
809 725
810 if (!GetCurContactGeom(0, ref curContact)) 726 if (!GetCurContactGeom(0, ref curContact))
811 return; 727 return;
@@ -866,9 +782,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
866 break; 782 break;
867 783
868 case (int)ActorTypes.Prim: 784 case (int)ActorTypes.Prim:
869 Vector3 relV = p1.rootVelocity - p2.rootVelocity; 785// Vector3 relV = p1.rootVelocity - p2.rootVelocity;
870 float relVlenSQ = relV.LengthSquared(); 786// float relVlenSQ = relV.LengthSquared();
871 if (relVlenSQ > 0.0001f) 787// if (relVlenSQ > 0.0001f)
872 { 788 {
873 p1.CollidingObj = true; 789 p1.CollidingObj = true;
874 p2.CollidingObj = true; 790 p2.CollidingObj = true;
@@ -878,11 +794,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
878 bounce = contactdata1.bounce * contactdata2.bounce; 794 bounce = contactdata1.bounce * contactdata2.bounce;
879 mu = (float)Math.Sqrt(contactdata1.mu * contactdata2.mu); 795 mu = (float)Math.Sqrt(contactdata1.mu * contactdata2.mu);
880 796
881 if (relVlenSQ > 0.01f) 797// if (relVlenSQ > 0.01f)
882 mu *= frictionMovementMult; 798// mu *= frictionMovementMult;
883 799
884 if(d.GeomGetClass(g2) == d.GeomClassID.TriMeshClass && 800 if(SafeNativeMethods.GeomGetClass(g2) == SafeNativeMethods.GeomClassID.TriMeshClass &&
885 d.GeomGetClass(g1) == d.GeomClassID.TriMeshClass) 801 SafeNativeMethods.GeomGetClass(g1) == SafeNativeMethods.GeomClassID.TriMeshClass)
886 smoothMesh = true; 802 smoothMesh = true;
887 break; 803 break;
888 804
@@ -891,12 +807,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
891 bounce = contactdata1.bounce * TerrainBounce; 807 bounce = contactdata1.bounce * TerrainBounce;
892 mu = (float)Math.Sqrt(contactdata1.mu * TerrainFriction); 808 mu = (float)Math.Sqrt(contactdata1.mu * TerrainFriction);
893 809
894 Vector3 v1 = p1.rootVelocity; 810// Vector3 v1 = p1.rootVelocity;
895 if (Math.Abs(v1.X) > 0.1f || Math.Abs(v1.Y) > 0.1f) 811// if (Math.Abs(v1.X) > 0.1f || Math.Abs(v1.Y) > 0.1f)
896 mu *= frictionMovementMult; 812// mu *= frictionMovementMult;
897 p1.CollidingGround = true; 813 p1.CollidingGround = true;
898 814
899 if(d.GeomGetClass(g1) == d.GeomClassID.TriMeshClass) 815 if(SafeNativeMethods.GeomGetClass(g1) == SafeNativeMethods.GeomClassID.TriMeshClass)
900 smoothMesh = true; 816 smoothMesh = true;
901 break; 817 break;
902 818
@@ -918,11 +834,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
918 834
919// if (curContact.side1 > 0) // should be 2 ? 835// if (curContact.side1 > 0) // should be 2 ?
920// IgnoreNegSides = true; 836// IgnoreNegSides = true;
921 Vector3 v2 = p2.rootVelocity; 837// Vector3 v2 = p2.rootVelocity;
922 if (Math.Abs(v2.X) > 0.1f || Math.Abs(v2.Y) > 0.1f) 838// if (Math.Abs(v2.X) > 0.1f || Math.Abs(v2.Y) > 0.1f)
923 mu *= frictionMovementMult; 839// mu *= frictionMovementMult;
924 840
925 if(d.GeomGetClass(g2) == d.GeomClassID.TriMeshClass) 841 if(SafeNativeMethods.GeomGetClass(g2) == SafeNativeMethods.GeomClassID.TriMeshClass)
926 smoothMesh = true; 842 smoothMesh = true;
927 } 843 }
928 else 844 else
@@ -952,7 +868,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
952 SharedTmpcontact.surface.mu = mu; 868 SharedTmpcontact.surface.mu = mu;
953 SharedTmpcontact.surface.bounce = bounce; 869 SharedTmpcontact.surface.bounce = bounce;
954 870
955 d.ContactGeom altContact = new d.ContactGeom(); 871 SafeNativeMethods.ContactGeom altContact = new SafeNativeMethods.ContactGeom();
956 bool useAltcontact; 872 bool useAltcontact;
957 bool noskip; 873 bool noskip;
958 874
@@ -1004,7 +920,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1004 if (Joint == IntPtr.Zero) 920 if (Joint == IntPtr.Zero)
1005 break; 921 break;
1006 922
1007 d.JointAttach(Joint, b1, b2); 923 SafeNativeMethods.JointAttach(Joint, b1, b2);
1008 924
1009 ncontacts++; 925 ncontacts++;
1010 926
@@ -1152,12 +1068,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1152 continue; 1068 continue;
1153 1069
1154 // do colisions with static space 1070 // do colisions with static space
1155 d.SpaceCollide2(chr.collider, StaticSpace, IntPtr.Zero, nearCallback); 1071 SafeNativeMethods.SpaceCollide2(chr.collider, StaticSpace, IntPtr.Zero, nearCallback);
1156 1072
1157 // no coll with gnd 1073 // no coll with gnd
1158 } 1074 }
1159 // chars with chars 1075 // chars with chars
1160 d.SpaceCollide(CharsSpace, IntPtr.Zero, nearCallback); 1076 SafeNativeMethods.SpaceCollide(CharsSpace, IntPtr.Zero, nearCallback);
1161 1077
1162 } 1078 }
1163 catch (AccessViolationException) 1079 catch (AccessViolationException)
@@ -1173,7 +1089,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1173 { 1089 {
1174 aprim.CollisionScore = 0; 1090 aprim.CollisionScore = 0;
1175 aprim.IsColliding = false; 1091 aprim.IsColliding = false;
1176 if(!aprim.m_outbounds && d.BodyIsEnabled(aprim.Body)) 1092 if(!aprim.m_outbounds && SafeNativeMethods.BodyIsEnabled(aprim.Body))
1177 aprim.clearSleeperCollisions(); 1093 aprim.clearSleeperCollisions();
1178 } 1094 }
1179 } 1095 }
@@ -1184,11 +1100,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1184 { 1100 {
1185 foreach (OdePrim aprim in _activegroups) 1101 foreach (OdePrim aprim in _activegroups)
1186 { 1102 {
1187 if(!aprim.m_outbounds && d.BodyIsEnabled(aprim.Body) && 1103 if(!aprim.m_outbounds && SafeNativeMethods.BodyIsEnabled(aprim.Body) &&
1188 aprim.collide_geom != IntPtr.Zero) 1104 aprim.collide_geom != IntPtr.Zero)
1189 { 1105 {
1190 d.SpaceCollide2(StaticSpace, aprim.collide_geom, IntPtr.Zero, nearCallback); 1106 SafeNativeMethods.SpaceCollide2(StaticSpace, aprim.collide_geom, IntPtr.Zero, nearCallback);
1191 d.SpaceCollide2(GroundSpace, aprim.collide_geom, IntPtr.Zero, nearCallback); 1107 SafeNativeMethods.SpaceCollide2(GroundSpace, aprim.collide_geom, IntPtr.Zero, nearCallback);
1192 } 1108 }
1193 } 1109 }
1194 } 1110 }
@@ -1201,7 +1117,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1201 // colide active amoung them 1117 // colide active amoung them
1202 try 1118 try
1203 { 1119 {
1204 d.SpaceCollide(ActiveSpace, IntPtr.Zero, nearCallback); 1120 SafeNativeMethods.SpaceCollide(ActiveSpace, IntPtr.Zero, nearCallback);
1205 } 1121 }
1206 catch (Exception e) 1122 catch (Exception e)
1207 { 1123 {
@@ -1211,7 +1127,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1211 // and with chars 1127 // and with chars
1212 try 1128 try
1213 { 1129 {
1214 d.SpaceCollide2(CharsSpace,ActiveSpace, IntPtr.Zero, nearCallback); 1130 SafeNativeMethods.SpaceCollide2(CharsSpace,ActiveSpace, IntPtr.Zero, nearCallback);
1215 } 1131 }
1216 catch (Exception e) 1132 catch (Exception e)
1217 { 1133 {
@@ -1306,9 +1222,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1306 public override void RemoveAvatar(PhysicsActor actor) 1222 public override void RemoveAvatar(PhysicsActor actor)
1307 { 1223 {
1308 //m_log.Debug("[PHYSICS]:ODELOCK"); 1224 //m_log.Debug("[PHYSICS]:ODELOCK");
1225 if (world == IntPtr.Zero)
1226 return;
1227
1309 lock (OdeLock) 1228 lock (OdeLock)
1310 { 1229 {
1311 d.AllocateODEDataForThread(0); 1230 SafeNativeMethods.AllocateODEDataForThread(0);
1312 ((OdeCharacter) actor).Destroy(); 1231 ((OdeCharacter) actor).Destroy();
1313 } 1232 }
1314 } 1233 }
@@ -1460,39 +1379,35 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1460 1379
1461 /// <summary> 1380 /// <summary>
1462 /// Called when a static prim moves or becomes static 1381 /// Called when a static prim moves or becomes static
1463 /// Places the prim in a space one the static sub-spaces grid 1382 /// Places the prim in a space one the static space
1464 /// </summary> 1383 /// </summary>
1465 /// <param name="geom">the pointer to the geom that moved</param> 1384 /// <param name="geom">the pointer to the geom that moved</param>
1466 /// <param name="pos">the position that the geom moved to</param>
1467 /// <param name="currentspace">a pointer to the space it was in before it was moved.</param> 1385 /// <param name="currentspace">a pointer to the space it was in before it was moved.</param>
1468 /// <returns>a pointer to the new space it's in</returns> 1386 /// <returns>a pointer to the new space it's in</returns>
1469 public IntPtr MoveGeomToStaticSpace(IntPtr geom, Vector3 pos, IntPtr currentspace) 1387 public IntPtr MoveGeomToStaticSpace(IntPtr geom, IntPtr currentspace)
1470 { 1388 {
1471 // moves a prim into another static sub-space or from another space into a static sub-space 1389 // moves a prim into static sub-space
1472 1390
1473 // Called ODEPrim so 1391 // Called ODEPrim so
1474 // it's already in locked space. 1392 // it's already in locked space.
1475 1393
1476 if (geom == IntPtr.Zero) // shouldn't happen 1394 if (geom == IntPtr.Zero) // shouldn't happen
1477 return IntPtr.Zero; 1395 return IntPtr.Zero;
1478 1396
1479 // get the static sub-space for current position 1397 if (StaticSpace == currentspace) // if we are there all done
1480 IntPtr newspace = calculateSpaceForGeom(pos); 1398 return StaticSpace;
1481
1482 if (newspace == currentspace) // if we are there all done
1483 return newspace;
1484 1399
1485 // else remove it from its current space 1400 // else remove it from its current space
1486 if (currentspace != IntPtr.Zero && d.SpaceQuery(currentspace, geom)) 1401 if (currentspace != IntPtr.Zero && SafeNativeMethods.SpaceQuery(currentspace, geom))
1487 { 1402 {
1488 if (d.GeomIsSpace(currentspace)) 1403 if (SafeNativeMethods.GeomIsSpace(currentspace))
1489 { 1404 {
1490 waitForSpaceUnlock(currentspace); 1405 waitForSpaceUnlock(currentspace);
1491 d.SpaceRemove(currentspace, geom); 1406 SafeNativeMethods.SpaceRemove(currentspace, geom);
1492 1407
1493 if (d.SpaceGetSublevel(currentspace) > 2 && d.SpaceGetNumGeoms(currentspace) == 0) 1408 if (SafeNativeMethods.SpaceGetSublevel(currentspace) > 2 && SafeNativeMethods.SpaceGetNumGeoms(currentspace) == 0)
1494 { 1409 {
1495 d.SpaceDestroy(currentspace); 1410 SafeNativeMethods.SpaceDestroy(currentspace);
1496 } 1411 }
1497 } 1412 }
1498 else 1413 else
@@ -1501,59 +1416,33 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1501 " Geom:" + geom); 1416 " Geom:" + geom);
1502 } 1417 }
1503 } 1418 }
1504 else // odd currentspace is null or doesn't contain the geom? lets try the geom ideia of current space 1419 else
1505 { 1420 {
1506 currentspace = d.GeomGetSpace(geom); 1421 currentspace = SafeNativeMethods.GeomGetSpace(geom);
1507 if (currentspace != IntPtr.Zero) 1422 if (currentspace != IntPtr.Zero)
1508 { 1423 {
1509 if (d.GeomIsSpace(currentspace)) 1424 if (SafeNativeMethods.GeomIsSpace(currentspace))
1510 { 1425 {
1511 waitForSpaceUnlock(currentspace); 1426 waitForSpaceUnlock(currentspace);
1512 d.SpaceRemove(currentspace, geom); 1427 SafeNativeMethods.SpaceRemove(currentspace, geom);
1513 1428
1514 if (d.SpaceGetSublevel(currentspace) > 2 && d.SpaceGetNumGeoms(currentspace) == 0) 1429 if (SafeNativeMethods.SpaceGetSublevel(currentspace) > 2 && SafeNativeMethods.SpaceGetNumGeoms(currentspace) == 0)
1515 { 1430 {
1516 d.SpaceDestroy(currentspace); 1431 SafeNativeMethods.SpaceDestroy(currentspace);
1517 } 1432 }
1518
1519 } 1433 }
1520 } 1434 }
1521 } 1435 }
1522 1436
1523 // put the geom in the newspace 1437 // put the geom in the newspace
1524 waitForSpaceUnlock(newspace); 1438 waitForSpaceUnlock(StaticSpace);
1525 d.SpaceAdd(newspace, geom); 1439 if(SafeNativeMethods.SpaceQuery(StaticSpace, geom))
1526 1440 m_log.Info("[Physics]: 'MoveGeomToStaticSpace' geom already in static space:" + geom);
1527 // let caller know this newspace 1441 else
1528 return newspace; 1442 SafeNativeMethods.SpaceAdd(StaticSpace, geom);
1529 }
1530
1531 /// <summary>
1532 /// Calculates the space the prim should be in by its position
1533 /// </summary>
1534 /// <param name="pos"></param>
1535 /// <returns>a pointer to the space. This could be a new space or reused space.</returns>
1536 public IntPtr calculateSpaceForGeom(Vector3 pos)
1537 {
1538 int x, y;
1539
1540 if (pos.X < 0)
1541 return staticPrimspaceOffRegion[0];
1542
1543 if (pos.Y < 0)
1544 return staticPrimspaceOffRegion[2];
1545
1546 x = (int)(pos.X * spacesPerMeterX);
1547 if (x > spaceGridMaxX)
1548 return staticPrimspaceOffRegion[1];
1549
1550 y = (int)(pos.Y * spacesPerMeterY);
1551 if (y > spaceGridMaxY)
1552 return staticPrimspaceOffRegion[3];
1553 1443
1554 return staticPrimspace[x, y]; 1444 return StaticSpace;
1555 } 1445 }
1556
1557 #endregion 1446 #endregion
1558 1447
1559 1448
@@ -1592,7 +1481,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1592 return; 1481 return;
1593 } 1482 }
1594 1483
1595 d.AllocateODEDataForThread(~0U); 1484 SafeNativeMethods.AllocateODEDataForThread(~0U);
1596 1485
1597 ODEchangeitem item; 1486 ODEchangeitem item;
1598 1487
@@ -1641,6 +1530,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1641 /// <returns></returns> 1530 /// <returns></returns>
1642 public override float Simulate(float reqTimeStep) 1531 public override float Simulate(float reqTimeStep)
1643 { 1532 {
1533 if (world == IntPtr.Zero)
1534 return 0;
1535
1644 double now = Util.GetTimeStamp(); 1536 double now = Util.GetTimeStamp();
1645 double timeStep = now - m_lastframe; 1537 double timeStep = now - m_lastframe;
1646 m_lastframe = now; 1538 m_lastframe = now;
@@ -1679,11 +1571,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1679 double maxChangestime = (int)(reqTimeStep * 500f); // half the time 1571 double maxChangestime = (int)(reqTimeStep * 500f); // half the time
1680 double maxLoopTime = (int)(reqTimeStep * 1200f); // 1.2 the time 1572 double maxLoopTime = (int)(reqTimeStep * 1200f); // 1.2 the time
1681 1573
1682// double collisionTime = 0; 1574/*
1683// double qstepTIme = 0; 1575 double collisionTime = 0;
1684// double tmpTime = 0; 1576 double qstepTIme = 0;
1685 1577 double tmpTime = 0;
1686 d.AllocateODEDataForThread(~0U); 1578 double changestot = 0;
1579 double collisonRepo = 0;
1580 double updatesTime = 0;
1581 double moveTime = 0;
1582 double rayTime = 0;
1583*/
1584 SafeNativeMethods.AllocateODEDataForThread(~0U);
1687 1585
1688 if (ChangesQueue.Count > 0) 1586 if (ChangesQueue.Count > 0)
1689 { 1587 {
@@ -1719,6 +1617,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1719 m_global_contactcount = 0; 1617 m_global_contactcount = 0;
1720 1618
1721 1619
1620// tmpTime = Util.GetTimeStampMS();
1621
1722 // Move characters 1622 // Move characters
1723 lock (_characters) 1623 lock (_characters)
1724 { 1624 {
@@ -1746,13 +1646,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1746 aprim.Move(); 1646 aprim.Move();
1747 } 1647 }
1748 } 1648 }
1649// moveTime += Util.GetTimeStampMS() - tmpTime;
1749 1650
1651// tmpTime = Util.GetTimeStampMS();
1750 m_rayCastManager.ProcessQueuedRequests(); 1652 m_rayCastManager.ProcessQueuedRequests();
1653// rayTime += Util.GetTimeStampMS() - tmpTime;
1751 1654
1752// tmpTime = Util.GetTimeStampMS(); 1655// tmpTime = Util.GetTimeStampMS();
1753 collision_optimized(); 1656 collision_optimized();
1754// collisionTime += Util.GetTimeStampMS() - tmpTime; 1657// collisionTime += Util.GetTimeStampMS() - tmpTime;
1755 1658
1659// tmpTime = Util.GetTimeStampMS();
1756 lock(_collisionEventPrimRemove) 1660 lock(_collisionEventPrimRemove)
1757 { 1661 {
1758 foreach (PhysicsActor obj in _collisionEventPrimRemove) 1662 foreach (PhysicsActor obj in _collisionEventPrimRemove)
@@ -1781,7 +1685,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1781 pobj.SendCollisions((int)(odetimestepMS)); 1685 pobj.SendCollisions((int)(odetimestepMS));
1782 if(pobj.Body != IntPtr.Zero && !pobj.m_isSelected && 1686 if(pobj.Body != IntPtr.Zero && !pobj.m_isSelected &&
1783 !pobj.m_disabled && !pobj.m_building && 1687 !pobj.m_disabled && !pobj.m_building &&
1784 !d.BodyIsEnabled(pobj.Body)) 1688 !SafeNativeMethods.BodyIsEnabled(pobj.Body))
1785 sleepers.Add(pobj); 1689 sleepers.Add(pobj);
1786 } 1690 }
1787 break; 1691 break;
@@ -1791,11 +1695,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1791 foreach(OdePrim prm in sleepers) 1695 foreach(OdePrim prm in sleepers)
1792 prm.SleeperAddCollisionEvents(); 1696 prm.SleeperAddCollisionEvents();
1793 sleepers.Clear(); 1697 sleepers.Clear();
1698// collisonRepo += Util.GetTimeStampMS() - tmpTime;
1699
1794 1700
1795 // do a ode simulation step 1701 // do a ode simulation step
1796// tmpTime = Util.GetTimeStampMS(); 1702// tmpTime = Util.GetTimeStampMS();
1797 d.WorldQuickStep(world, ODE_STEPSIZE); 1703 SafeNativeMethods.WorldQuickStep(world, ODE_STEPSIZE);
1798 d.JointGroupEmpty(contactgroup); 1704 SafeNativeMethods.JointGroupEmpty(contactgroup);
1799// qstepTIme += Util.GetTimeStampMS() - tmpTime; 1705// qstepTIme += Util.GetTimeStampMS() - tmpTime;
1800 1706
1801 // update managed ideia of physical data and do updates to core 1707 // update managed ideia of physical data and do updates to core
@@ -1814,7 +1720,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1814 } 1720 }
1815 } 1721 }
1816 */ 1722 */
1817 1723// tmpTime = Util.GetTimeStampMS();
1818 lock (_activegroups) 1724 lock (_activegroups)
1819 { 1725 {
1820 { 1726 {
@@ -1827,6 +1733,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1827 } 1733 }
1828 } 1734 }
1829 } 1735 }
1736// updatesTime += Util.GetTimeStampMS() - tmpTime;
1830 } 1737 }
1831 catch (Exception e) 1738 catch (Exception e)
1832 { 1739 {
@@ -1834,10 +1741,12 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1834// ode.dunlock(world); 1741// ode.dunlock(world);
1835 } 1742 }
1836 1743
1744
1837 step_time -= ODE_STEPSIZE; 1745 step_time -= ODE_STEPSIZE;
1838 nodeframes++; 1746 nodeframes++;
1839 1747
1840 looptimeMS = Util.GetTimeStampMS() - loopstartMS; 1748 looptimeMS = Util.GetTimeStampMS() - loopstartMS;
1749
1841 if (looptimeMS > maxLoopTime) 1750 if (looptimeMS > maxLoopTime)
1842 break; 1751 break;
1843 } 1752 }
@@ -1854,9 +1763,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1854 _badCharacter.Clear(); 1763 _badCharacter.Clear();
1855 } 1764 }
1856 } 1765 }
1857
1858// information block for in debug breakpoint only
1859/* 1766/*
1767// information block for in debug breakpoint only
1768
1860 int ntopactivegeoms = d.SpaceGetNumGeoms(ActiveSpace); 1769 int ntopactivegeoms = d.SpaceGetNumGeoms(ActiveSpace);
1861 int ntopstaticgeoms = d.SpaceGetNumGeoms(StaticSpace); 1770 int ntopstaticgeoms = d.SpaceGetNumGeoms(StaticSpace);
1862 int ngroundgeoms = d.SpaceGetNumGeoms(GroundSpace); 1771 int ngroundgeoms = d.SpaceGetNumGeoms(GroundSpace);
@@ -1898,33 +1807,23 @@ namespace OpenSim.Region.PhysicsModule.ubOde
1898 int nbodies = d.NTotalBodies; 1807 int nbodies = d.NTotalBodies;
1899 int ngeoms = d.NTotalGeoms; 1808 int ngeoms = d.NTotalGeoms;
1900*/ 1809*/
1810
1901/* 1811/*
1902 looptimeMS /= nodeframes; 1812 looptimeMS /= nodeframes;
1903 if(looptimeMS > 0.080) 1813 collisionTime /= nodeframes;
1904 { 1814 qstepTIme /= nodeframes;
1905 collisionTime /= nodeframes; 1815 changestot /= nodeframes;
1906 qstepTIme /= nodeframes; 1816 collisonRepo /= nodeframes;
1907 } 1817 updatesTime /= nodeframes;
1908*/ 1818 moveTime /= nodeframes;
1909 // Finished with all sim stepping. If requested, dump world state to file for debugging. 1819 rayTime /= nodeframes;
1910 // TODO: This call to the export function is already inside lock (OdeLock) - but is an extra lock needed? 1820
1911 // TODO: This overwrites all dump files in-place. Should this be a growing logfile, or separate snapshots? 1821 if(looptimeMS > .05)
1912 if (physics_logging && (physics_logging_interval > 0) && (framecount % physics_logging_interval == 0))
1913 { 1822 {
1914 string fname = "state-" + world.ToString() + ".DIF"; // give each physics world a separate filename
1915 string prefix = "world" + world.ToString(); // prefix for variable names in exported .DIF file
1916 1823
1917 if (physics_logging_append_existing_logfile)
1918 {
1919 string header = "-------------- START OF PHYSICS FRAME " + framecount.ToString() + " --------------";
1920 TextWriter fwriter = File.AppendText(fname);
1921 fwriter.WriteLine(header);
1922 fwriter.Close();
1923 }
1924 1824
1925 d.WorldExportDIF(world, fname, physics_logging_append_existing_logfile, prefix);
1926 } 1825 }
1927 1826*/
1928 fps = (float)nodeframes * ODE_STEPSIZE / reqTimeStep; 1827 fps = (float)nodeframes * ODE_STEPSIZE / reqTimeStep;
1929 1828
1930 if(step_time < HalfOdeStep) 1829 if(step_time < HalfOdeStep)
@@ -2285,35 +2184,35 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2285 2184
2286 lock (OdeLock) 2185 lock (OdeLock)
2287 { 2186 {
2288 d.AllocateODEDataForThread(~0U); 2187 SafeNativeMethods.AllocateODEDataForThread(~0U);
2289 2188
2290 if (TerrainGeom != IntPtr.Zero) 2189 if (TerrainGeom != IntPtr.Zero)
2291 { 2190 {
2292 actor_name_map.Remove(TerrainGeom); 2191 actor_name_map.Remove(TerrainGeom);
2293 d.GeomDestroy(TerrainGeom); 2192 SafeNativeMethods.GeomDestroy(TerrainGeom);
2294 2193
2295 } 2194 }
2296 2195
2297 if (TerrainHeightFieldHeightsHandler.IsAllocated) 2196 if (TerrainHeightFieldHeightsHandler.IsAllocated)
2298 TerrainHeightFieldHeightsHandler.Free(); 2197 TerrainHeightFieldHeightsHandler.Free();
2299 2198
2300 IntPtr HeightmapData = d.GeomHeightfieldDataCreate(); 2199 IntPtr HeightmapData = SafeNativeMethods.GeomHeightfieldDataCreate();
2301 2200
2302 TerrainHeightFieldHeightsHandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned); 2201 TerrainHeightFieldHeightsHandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned);
2303 2202
2304 d.GeomHeightfieldDataBuildSingle(HeightmapData, TerrainHeightFieldHeightsHandler.AddrOfPinnedObject(), 0, 2203 SafeNativeMethods.GeomHeightfieldDataBuildSingle(HeightmapData, TerrainHeightFieldHeightsHandler.AddrOfPinnedObject(), 0,
2305 heightmapHeight, heightmapWidth , 2204 heightmapHeight, heightmapWidth ,
2306 (int)heightmapHeightSamples, (int)heightmapWidthSamples, scale, 2205 (int)heightmapHeightSamples, (int)heightmapWidthSamples, scale,
2307 offset, thickness, wrap); 2206 offset, thickness, wrap);
2308 2207
2309 d.GeomHeightfieldDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1); 2208 SafeNativeMethods.GeomHeightfieldDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1);
2310 2209
2311 TerrainGeom = d.CreateHeightfield(GroundSpace, HeightmapData, 1); 2210 TerrainGeom = SafeNativeMethods.CreateHeightfield(GroundSpace, HeightmapData, 1);
2312 2211
2313 if (TerrainGeom != IntPtr.Zero) 2212 if (TerrainGeom != IntPtr.Zero)
2314 { 2213 {
2315 d.GeomSetCategoryBits(TerrainGeom, (uint)(CollisionCategories.Land)); 2214 SafeNativeMethods.GeomSetCategoryBits(TerrainGeom, (uint)(CollisionCategories.Land));
2316 d.GeomSetCollideBits(TerrainGeom, 0); 2215 SafeNativeMethods.GeomSetCollideBits(TerrainGeom, 0);
2317 2216
2318 PhysicsActor pa = new NullPhysicsActor(); 2217 PhysicsActor pa = new NullPhysicsActor();
2319 pa.Name = "Terrain"; 2218 pa.Name = "Terrain";
@@ -2322,14 +2221,14 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2322 2221
2323// geom_name_map[GroundGeom] = "Terrain"; 2222// geom_name_map[GroundGeom] = "Terrain";
2324 2223
2325 d.Quaternion q = new d.Quaternion(); 2224 SafeNativeMethods.Quaternion q = new SafeNativeMethods.Quaternion();
2326 q.X = 0.5f; 2225 q.X = 0.5f;
2327 q.Y = 0.5f; 2226 q.Y = 0.5f;
2328 q.Z = 0.5f; 2227 q.Z = 0.5f;
2329 q.W = 0.5f; 2228 q.W = 0.5f;
2330 2229
2331 d.GeomSetQuaternion(TerrainGeom, ref q); 2230 SafeNativeMethods.GeomSetQuaternion(TerrainGeom, ref q);
2332 d.GeomSetPosition(TerrainGeom, m_regionWidth * 0.5f, m_regionHeight * 0.5f, 0.0f); 2231 SafeNativeMethods.GeomSetPosition(TerrainGeom, m_regionWidth * 0.5f, m_regionHeight * 0.5f, 0.0f);
2333 TerrainHeightFieldHeight = _heightmap; 2232 TerrainHeightFieldHeight = _heightmap;
2334 } 2233 }
2335 else 2234 else
@@ -2397,7 +2296,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2397 if (TerrainGeom != IntPtr.Zero) 2296 if (TerrainGeom != IntPtr.Zero)
2398 { 2297 {
2399 actor_name_map.Remove(TerrainGeom); 2298 actor_name_map.Remove(TerrainGeom);
2400 d.GeomDestroy(TerrainGeom); 2299 SafeNativeMethods.GeomDestroy(TerrainGeom);
2401 } 2300 }
2402 2301
2403 if (TerrainHeightFieldHeightsHandler.IsAllocated) 2302 if (TerrainHeightFieldHeightsHandler.IsAllocated)
@@ -2405,7 +2304,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2405 2304
2406 TerrainHeightFieldHeight = null; 2305 TerrainHeightFieldHeight = null;
2407 2306
2408 IntPtr HeightmapData = d.GeomOSTerrainDataCreate(); 2307 IntPtr HeightmapData = SafeNativeMethods.GeomOSTerrainDataCreate();
2409 2308
2410 const int wrap = 0; 2309 const int wrap = 0;
2411 float thickness = hfmin; 2310 float thickness = hfmin;
@@ -2414,16 +2313,16 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2414 2313
2415 TerrainHeightFieldHeightsHandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned); 2314 TerrainHeightFieldHeightsHandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned);
2416 2315
2417 d.GeomOSTerrainDataBuild(HeightmapData, TerrainHeightFieldHeightsHandler.AddrOfPinnedObject(), 0, 1.0f, 2316 SafeNativeMethods.GeomOSTerrainDataBuild(HeightmapData, TerrainHeightFieldHeightsHandler.AddrOfPinnedObject(), 0, 1.0f,
2418 (int)heightmapWidthSamples, (int)heightmapHeightSamples, 2317 (int)heightmapWidthSamples, (int)heightmapHeightSamples,
2419 thickness, wrap); 2318 thickness, wrap);
2420 2319
2421// d.GeomOSTerrainDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1); 2320// d.GeomOSTerrainDataSetBounds(HeightmapData, hfmin - 1, hfmax + 1);
2422 TerrainGeom = d.CreateOSTerrain(GroundSpace, HeightmapData, 1); 2321 TerrainGeom = SafeNativeMethods.CreateOSTerrain(GroundSpace, HeightmapData, 1);
2423 if (TerrainGeom != IntPtr.Zero) 2322 if (TerrainGeom != IntPtr.Zero)
2424 { 2323 {
2425 d.GeomSetCategoryBits(TerrainGeom, (uint)(CollisionCategories.Land)); 2324 SafeNativeMethods.GeomSetCategoryBits(TerrainGeom, (uint)(CollisionCategories.Land));
2426 d.GeomSetCollideBits(TerrainGeom, 0); 2325 SafeNativeMethods.GeomSetCollideBits(TerrainGeom, 0);
2427 2326
2428 PhysicsActor pa = new NullPhysicsActor(); 2327 PhysicsActor pa = new NullPhysicsActor();
2429 pa.Name = "Terrain"; 2328 pa.Name = "Terrain";
@@ -2432,7 +2331,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2432 2331
2433// geom_name_map[GroundGeom] = "Terrain"; 2332// geom_name_map[GroundGeom] = "Terrain";
2434 2333
2435 d.GeomSetPosition(TerrainGeom, m_regionWidth * 0.5f, m_regionHeight * 0.5f, 0.0f); 2334 SafeNativeMethods.GeomSetPosition(TerrainGeom, m_regionWidth * 0.5f, m_regionHeight * 0.5f, 0.0f);
2436 TerrainHeightFieldHeight = _heightmap; 2335 TerrainHeightFieldHeight = _heightmap;
2437 } 2336 }
2438 else 2337 else
@@ -2462,7 +2361,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2462 if (world == IntPtr.Zero) 2361 if (world == IntPtr.Zero)
2463 return; 2362 return;
2464 2363
2465 d.AllocateODEDataForThread(~0U); 2364 SafeNativeMethods.AllocateODEDataForThread(~0U);
2466 2365
2467 if (m_meshWorker != null) 2366 if (m_meshWorker != null)
2468 m_meshWorker.Stop(); 2367 m_meshWorker.Stop();
@@ -2496,7 +2395,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2496 ch.DoAChange(changes.Remove, null); 2395 ch.DoAChange(changes.Remove, null);
2497 2396
2498 if (TerrainGeom != IntPtr.Zero) 2397 if (TerrainGeom != IntPtr.Zero)
2499 d.GeomDestroy(TerrainGeom); 2398 SafeNativeMethods.GeomDestroy(TerrainGeom);
2500 TerrainGeom = IntPtr.Zero; 2399 TerrainGeom = IntPtr.Zero;
2501 2400
2502 if (TerrainHeightFieldHeightsHandler.IsAllocated) 2401 if (TerrainHeightFieldHeightsHandler.IsAllocated)
@@ -2515,7 +2414,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
2515 GlobalContactsArray = IntPtr.Zero; 2414 GlobalContactsArray = IntPtr.Zero;
2516 } 2415 }
2517 2416
2518 d.WorldDestroy(world); 2417 SafeNativeMethods.WorldDestroy(world);
2519 world = IntPtr.Zero; 2418 world = IntPtr.Zero;
2520 //d.CloseODE(); 2419 //d.CloseODE();
2521 } 2420 }
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODESitAvatar.cs b/OpenSim/Region/PhysicsModules/ubOde/ODESitAvatar.cs
index 214205d..f882e6c 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODESitAvatar.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODESitAvatar.cs
@@ -27,13 +27,7 @@
27// Ubit Umarov 2012 27// Ubit Umarov 2012
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection;
31using System.Runtime.InteropServices;
32using System.Text;
33using OpenSim.Framework;
34using OpenSim.Region.PhysicsModules.SharedBase; 30using OpenSim.Region.PhysicsModules.SharedBase;
35using OdeAPI;
36using log4net;
37using OpenMetaverse; 31using OpenMetaverse;
38 32
39namespace OpenSim.Region.PhysicsModule.ubOde 33namespace OpenSim.Region.PhysicsModule.ubOde
@@ -78,8 +72,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde
78 72
79 IntPtr geom = ((OdePrim)actor).prim_geom; 73 IntPtr geom = ((OdePrim)actor).prim_geom;
80 74
81 Vector3 geopos = d.GeomGetPositionOMV(geom); 75 Vector3 geopos = SafeNativeMethods.GeomGetPositionOMV(geom);
82 Quaternion geomOri = d.GeomGetQuaternionOMV(geom); 76 Quaternion geomOri = SafeNativeMethods.GeomGetQuaternionOMV(geom);
83 77
84// Vector3 geopos = actor.Position; 78// Vector3 geopos = actor.Position;
85// Quaternion geomOri = actor.Orientation; 79// Quaternion geomOri = actor.Orientation;
@@ -123,11 +117,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
123 117
124 offset = rayResults[0].Pos - geopos; 118 offset = rayResults[0].Pos - geopos;
125 119
126 d.GeomClassID geoclass = d.GeomGetClass(geom); 120 SafeNativeMethods.GeomClassID geoclass = SafeNativeMethods.GeomGetClass(geom);
127 121
128 if (geoclass == d.GeomClassID.SphereClass) 122 if (geoclass == SafeNativeMethods.GeomClassID.SphereClass)
129 { 123 {
130 float r = d.GeomSphereGetRadius(geom); 124 float r = SafeNativeMethods.GeomSphereGetRadius(geom);
131 125
132 offset.Normalize(); 126 offset.Normalize();
133 offset *= r; 127 offset *= r;
diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
index 032d4ed..dddec86 100644
--- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
+++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
@@ -1383,7 +1383,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
1383 { 1383 {
1384 File.Delete(filename); 1384 File.Delete(filename);
1385 } 1385 }
1386 catch (IOException e) 1386 catch (IOException)
1387 { 1387 {
1388 m_log.ErrorFormat( 1388 m_log.ErrorFormat(
1389 "[MESH CACHE]: Failed to delete file {0}",filename); 1389 "[MESH CACHE]: Failed to delete file {0}",filename);
@@ -1589,14 +1589,12 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
1589 f = new Face(k,l,m); 1589 f = new Face(k,l,m);
1590 newfaces.Add(f); 1590 newfaces.Add(f);
1591 } 1591 }
1592 return true;
1593 } 1592 }
1594 catch 1593 catch
1595 { 1594 {
1596
1597 return false; 1595 return false;
1598 } 1596 }
1599 return false; 1597 return true;
1600 } 1598 }
1601 } 1599 }
1602} 1600}