OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
ODEApi.cs
Go to the documentation of this file.
1 /*
2  * based on:
3  * Ode.NET - .NET bindings for ODE
4  * Jason Perkins (starkos@industriousone.com)
5  * Licensed under the New BSD
6  * Part of the OpenDynamicsEngine
7 Open Dynamics Engine
8 Copyright (c) 2001-2007, Russell L. Smith.
9 All rights reserved.
10 
11 Redistribution and use in source and binary forms, with or without
12 modification, are permitted provided that the following conditions
13 are met:
14 
15 Redistributions of source code must retain the above copyright notice,
16 this list of conditions and the following disclaimer.
17 
18 Redistributions in binary form must reproduce the above copyright notice,
19 this list of conditions and the following disclaimer in the documentation
20 and/or other materials provided with the distribution.
21 
22 Neither the names of ODE's copyright owner nor the names of its
23 contributors may be used to endorse or promote products derived from
24 this software without specific prior written permission.
25 
26 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
32 TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37  *
38  * changes by opensim team;
39  * changes by Aurora team http://www.aurora-sim.org/
40  * changes by Ubit Umarov
41  */
42 
43 using System;
44 using System.Runtime.InteropServices;
45 using System.Security;
46 using OMV = OpenMetaverse;
47 namespace OdeAPI
48 {
49 //#if dDOUBLE
50 // don't see much use in double precision with time steps of 20ms and 10 iterations used on opensim
51 // at least we save same memory and memory access time, FPU performance on intel usually is similar
52 // using dReal = System.Double;
53 //#else
54  using dReal = System.Single;
55 //#endif
56 
57  public static class d
58  {
59  public static dReal Infinity = dReal.MaxValue;
60  public static int NTotalBodies = 0;
61  public static int NTotalGeoms = 0;
62 
63  public const uint CONTACTS_UNIMPORTANT = 0x80000000;
64 
65  #region Flags and Enumerations
66 
67  [Flags]
68  public enum AllocateODEDataFlags : uint
69  {
70  BasicData = 0,
71  CollisionData = 0x00000001,
72  All = ~0u
73  }
74 
75  [Flags]
76  public enum IniteODEFlags : uint
77  {
78  dInitFlagManualThreadCleanup = 0x00000001
79  }
80 
81  [Flags]
82  public enum ContactFlags : int
83  {
84  Mu2 = 0x001,
85  FDir1 = 0x002,
86  Bounce = 0x004,
87  SoftERP = 0x008,
88  SoftCFM = 0x010,
89  Motion1 = 0x020,
90  Motion2 = 0x040,
91  MotionN = 0x080,
92  Slip1 = 0x100,
93  Slip2 = 0x200,
94  Approx0 = 0x0000,
95  Approx1_1 = 0x1000,
96  Approx1_2 = 0x2000,
97  Approx1 = 0x3000
98  }
99 
100  public enum GeomClassID : int
101  {
102  SphereClass,
103  BoxClass,
104  CapsuleClass,
105  CylinderClass,
106  PlaneClass,
107  RayClass,
108  ConvexClass,
109  GeomTransformClass,
110  TriMeshClass,
111  HeightfieldClass,
112  FirstSpaceClass,
113  SimpleSpaceClass = FirstSpaceClass,
114  HashSpaceClass,
115  QuadTreeSpaceClass,
116  LastSpaceClass = QuadTreeSpaceClass,
117  ubtTerrainClass,
118  FirstUserClass,
119  LastUserClass = FirstUserClass + MaxUserClasses - 1,
120  NumClasses,
121  MaxUserClasses = 5
122  }
123 
124  public enum JointType : int
125  {
126  None,
127  Ball,
128  Hinge,
129  Slider,
130  Contact,
131  Universal,
132  Hinge2,
133  Fixed,
134  Null,
135  AMotor,
136  LMotor,
137  Plane2D
138  }
139 
140  public enum JointParam : int
141  {
142  LoStop,
143  HiStop,
144  Vel,
145  FMax,
146  FudgeFactor,
147  Bounce,
148  CFM,
149  StopERP,
150  StopCFM,
151  SuspensionERP,
152  SuspensionCFM,
153  LoStop2 = 256,
154  HiStop2,
155  Vel2,
156  FMax2,
157  FudgeFactor2,
158  Bounce2,
159  CFM2,
160  StopERP2,
161  StopCFM2,
162  SuspensionERP2,
163  SuspensionCFM2,
164  LoStop3 = 512,
165  HiStop3,
166  Vel3,
167  FMax3,
168  FudgeFactor3,
169  Bounce3,
170  CFM3,
171  StopERP3,
172  StopCFM3,
173  SuspensionERP3,
174  SuspensionCFM3
175  }
176 
177  public enum dSweepAndPruneAxis : int
178  {
179  XYZ = ((0)|(1<<2)|(2<<4)),
180  XZY = ((0)|(2<<2)|(1<<4)),
181  YXZ = ((1)|(0<<2)|(2<<4)),
182  YZX = ((1)|(2<<2)|(0<<4)),
183  ZXY = ((2)|(0<<2)|(1<<4)),
184  ZYX = ((2)|(1<<2)|(0<<4))
185  }
186 
187  #endregion
188 
189  #region Callbacks
190 
191  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
192  public delegate int AABBTestFn(IntPtr o1, IntPtr o2, ref AABB aabb);
193 
194  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
195  public delegate int ColliderFn(IntPtr o1, IntPtr o2, int flags, out ContactGeom contact, int skip);
196 
197  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
198  public delegate void GetAABBFn(IntPtr geom, out AABB aabb);
199 
200  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
201  public delegate ColliderFn GetColliderFnFn(int num);
202 
203  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
204  public delegate void GeomDtorFn(IntPtr o);
205 
206  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
207  public delegate dReal HeightfieldGetHeight(IntPtr p_user_data, int x, int z);
208 
209  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
210  public delegate dReal OSTerrainGetHeight(IntPtr p_user_data, int x, int z);
211 
212  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
213  public delegate void NearCallback(IntPtr data, IntPtr geom1, IntPtr geom2);
214 
215  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
216  public delegate int TriCallback(IntPtr trimesh, IntPtr refObject, int triangleIndex);
217 
218  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
219  public delegate int TriArrayCallback(IntPtr trimesh, IntPtr refObject, int[] triangleIndex, int triCount);
220 
221  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
222  public delegate int TriRayCallback(IntPtr trimesh, IntPtr ray, int triangleIndex, dReal u, dReal v);
223 
224  #endregion
225 
226  #region Structs
227 
228  [StructLayout(LayoutKind.Sequential)]
229  public struct AABB
230  {
231  public dReal MinX, MaxX;
232  public dReal MinY, MaxY;
233  public dReal MinZ, MaxZ;
234  }
235 
236 
237  [StructLayout(LayoutKind.Sequential)]
238  public struct Contact
239  {
242  public Vector3 fdir1;
243  public static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(Contact));
244  }
245 
246 
247  [StructLayout(LayoutKind.Sequential)]
248  public struct ContactGeom
249  {
250 
251  public Vector3 pos;
252  public Vector3 normal;
253  public dReal depth;
254  public IntPtr g1;
255  public IntPtr g2;
256  public int side1;
257  public int side2;
258  public static readonly int unmanagedSizeOf = Marshal.SizeOf(typeof(ContactGeom));
259  }
260 
261  [StructLayout(LayoutKind.Sequential)]
262  public struct GeomClass
263  {
264  public int bytes;
265  public GetColliderFnFn collider;
266  public GetAABBFn aabb;
267  public AABBTestFn aabb_test;
268  public GeomDtorFn dtor;
269  }
270 
271 
272  [StructLayout(LayoutKind.Sequential)]
273  public struct JointFeedback
274  {
275  public Vector3 f1;
276  public Vector3 t1;
277  public Vector3 f2;
278  public Vector3 t2;
279  }
280 
281 
282  [StructLayout(LayoutKind.Sequential)]
283  public struct Mass
284  {
285  public dReal mass;
286  public Vector4 c;
287  public Matrix3 I;
288  }
289 
290 
291  [StructLayout(LayoutKind.Sequential)]
292  public struct Matrix3
293  {
294  public Matrix3(dReal m00, dReal m10, dReal m20, dReal m01, dReal m11, dReal m21, dReal m02, dReal m12, dReal m22)
295  {
296  M00 = m00; M10 = m10; M20 = m20; _m30 = 0.0f;
297  M01 = m01; M11 = m11; M21 = m21; _m31 = 0.0f;
298  M02 = m02; M12 = m12; M22 = m22; _m32 = 0.0f;
299  }
300  public dReal M00, M10, M20;
301  private dReal _m30;
302  public dReal M01, M11, M21;
303  private dReal _m31;
304  public dReal M02, M12, M22;
305  private dReal _m32;
306  }
307 
308  [StructLayout(LayoutKind.Sequential)]
309  public struct Matrix4
310  {
311  public Matrix4(dReal m00, dReal m10, dReal m20, dReal m30,
312  dReal m01, dReal m11, dReal m21, dReal m31,
313  dReal m02, dReal m12, dReal m22, dReal m32,
314  dReal m03, dReal m13, dReal m23, dReal m33)
315  {
316  M00 = m00; M10 = m10; M20 = m20; M30 = m30;
317  M01 = m01; M11 = m11; M21 = m21; M31 = m31;
318  M02 = m02; M12 = m12; M22 = m22; M32 = m32;
319  M03 = m03; M13 = m13; M23 = m23; M33 = m33;
320  }
321  public dReal M00, M10, M20, M30;
322  public dReal M01, M11, M21, M31;
323  public dReal M02, M12, M22, M32;
324  public dReal M03, M13, M23, M33;
325  }
326 
327  [StructLayout(LayoutKind.Sequential)]
328  public struct Quaternion
329  {
330  public dReal W, X, Y, Z;
331  }
332 
333 
334  [StructLayout(LayoutKind.Sequential)]
335  public struct SurfaceParameters
336  {
337  public ContactFlags mode;
338  public dReal mu;
339  public dReal mu2;
340  public dReal bounce;
342  public dReal soft_erp;
343  public dReal soft_cfm;
344  public dReal motion1;
345  public dReal motion2;
346  public dReal motionN;
347  public dReal slip1;
348  public dReal slip2;
349  }
350 
351 
352  [StructLayout(LayoutKind.Sequential)]
353  public struct Vector3
354  {
355  public Vector3(dReal x, dReal y, dReal z)
356  {
357  X = x; Y = y; Z = z; _w = 0.0f;
358  }
359  public dReal X, Y, Z;
360  private dReal _w;
361  }
362 
363 
364  [StructLayout(LayoutKind.Sequential)]
365  public struct Vector4
366  {
367  public Vector4(dReal x, dReal y, dReal z, dReal w)
368  {
369  X = x; Y = y; Z = z; W = w;
370  }
371  public dReal X, Y, Z, W;
372  }
373 
374  #endregion
375 
376  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAllocateODEDataForThread"), SuppressUnmanagedCodeSecurity]
377  public static extern int AllocateODEDataForThread(uint ODEInitFlags);
378 
379  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnected"), SuppressUnmanagedCodeSecurity]
380  public static extern bool AreConnected(IntPtr b1, IntPtr b2);
381 
382  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dAreConnectedExcluding"), SuppressUnmanagedCodeSecurity]
383  public static extern bool AreConnectedExcluding(IntPtr b1, IntPtr b2, JointType joint_type);
384 
385  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddForce"), SuppressUnmanagedCodeSecurity]
386  public static extern void BodyAddForce(IntPtr body, dReal fx, dReal fy, dReal fz);
387 
388  [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 
391  [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 
394  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelForce"), SuppressUnmanagedCodeSecurity]
395  public static extern void BodyAddRelForce(IntPtr body, dReal fx, dReal fy, dReal fz);
396 
397  [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 
400  [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 
403  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddRelTorque"), SuppressUnmanagedCodeSecurity]
404  public static extern void BodyAddRelTorque(IntPtr body, dReal fx, dReal fy, dReal fz);
405 
406  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyAddTorque"), SuppressUnmanagedCodeSecurity]
407  public static extern void BodyAddTorque(IntPtr body, dReal fx, dReal fy, dReal fz);
408 
409  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity]
410  public static extern void BodyCopyPosition(IntPtr body, out Vector3 pos);
411 
412  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyPosition"), SuppressUnmanagedCodeSecurity]
413  public static extern void BodyCopyPosition(IntPtr body, out dReal X);
414 
415  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity]
416  public static extern void BodyCopyQuaternion(IntPtr body, out Quaternion quat);
417 
418  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyQuaternion"), SuppressUnmanagedCodeSecurity]
419  public static extern void BodyCopyQuaternion(IntPtr body, out dReal X);
420 
421  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity]
422  public static extern void BodyCopyRotation(IntPtr body, out Matrix3 R);
423 
424  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCopyRotation"), SuppressUnmanagedCodeSecurity]
425  public static extern void BodyCopyRotation(IntPtr body, out dReal M00);
426 
427  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyCreate"), SuppressUnmanagedCodeSecurity]
428  public static extern IntPtr BodyiCreate(IntPtr world);
429  public static IntPtr BodyCreate(IntPtr world)
430  {
431  NTotalBodies++;
432  return BodyiCreate(world);
433  }
434 
435  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDestroy"), SuppressUnmanagedCodeSecurity]
436  public static extern void BodyiDestroy(IntPtr body);
437  public static void BodyDestroy(IntPtr body)
438  {
439  NTotalBodies--;
440  BodyiDestroy(body);
441  }
442 
443  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyDisable"), SuppressUnmanagedCodeSecurity]
444  public static extern void BodyDisable(IntPtr body);
445 
446  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyEnable"), SuppressUnmanagedCodeSecurity]
447  public static extern void BodyEnable(IntPtr body);
448 
449  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
450  public static extern dReal BodyGetAutoDisableAngularThreshold(IntPtr body);
451 
452  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
453  public static extern bool BodyGetAutoDisableFlag(IntPtr body);
454 
455  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity]
456  public static extern void BodyGetAutoDisableDefaults(IntPtr body);
457 
458  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
459  public static extern dReal BodyGetAutoDisableLinearThreshold(IntPtr body);
460 
461  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
462  public static extern int BodyGetAutoDisableSteps(IntPtr body);
463 
464  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
465  public static extern dReal BodyGetAutoDisableTime(IntPtr body);
466 
467  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularVel"), SuppressUnmanagedCodeSecurity]
468  public extern unsafe static Vector3* BodyGetAngularVelUnsafe(IntPtr body);
469  public static Vector3 BodyGetAngularVel(IntPtr body)
470  {
471  unsafe { return *(BodyGetAngularVelUnsafe(body)); }
472  }
473 
474  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetData"), SuppressUnmanagedCodeSecurity]
475  public static extern IntPtr BodyGetData(IntPtr body);
476 
477  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationMode"), SuppressUnmanagedCodeSecurity]
478  public static extern int BodyGetFiniteRotationMode(IntPtr body);
479 
480  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity]
481  public static extern void BodyGetFiniteRotationAxis(IntPtr body, out Vector3 result);
482 
483  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetForce"), SuppressUnmanagedCodeSecurity]
484  public extern unsafe static Vector3* BodyGetForceUnsafe(IntPtr body);
485  public static Vector3 BodyGetForce(IntPtr body)
486  {
487  unsafe { return *(BodyGetForceUnsafe(body)); }
488  }
489 
490  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGravityMode"), SuppressUnmanagedCodeSecurity]
491  public static extern bool BodyGetGravityMode(IntPtr body);
492 
493  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetGyroscopicMode"), SuppressUnmanagedCodeSecurity]
494  public static extern int BodyGetGyroscopicMode(IntPtr body);
495 
496  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetJoint"), SuppressUnmanagedCodeSecurity]
497  public static extern IntPtr BodyGetJoint(IntPtr body, int index);
498 
499  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearVel"), SuppressUnmanagedCodeSecurity]
500  public extern unsafe static Vector3* BodyGetLinearVelUnsafe(IntPtr body);
501  public static Vector3 BodyGetLinearVel(IntPtr body)
502  {
503  unsafe { return *(BodyGetLinearVelUnsafe(body)); }
504  }
505 
506  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetMass"), SuppressUnmanagedCodeSecurity]
507  public static extern void BodyGetMass(IntPtr body, out Mass mass);
508 
509  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNumJoints"), SuppressUnmanagedCodeSecurity]
510  public static extern int BodyGetNumJoints(IntPtr body);
511 
512  [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 
515  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetPosition"), SuppressUnmanagedCodeSecurity]
516  public extern unsafe static Vector3* BodyGetPositionUnsafe(IntPtr body);
517  public static Vector3 BodyGetPosition(IntPtr body)
518  {
519  unsafe { return *(BodyGetPositionUnsafe(body)); }
520  }
521 
522  [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 
525  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetQuaternion"), SuppressUnmanagedCodeSecurity]
526  public extern unsafe static Quaternion* BodyGetQuaternionUnsafe(IntPtr body);
527  public static Quaternion BodyGetQuaternion(IntPtr body)
528  {
529  unsafe { return *(BodyGetQuaternionUnsafe(body)); }
530  }
531 
532  [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 
535  [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 
538  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetRotation"), SuppressUnmanagedCodeSecurity]
539  public extern unsafe static Matrix3* BodyGetRotationUnsafe(IntPtr body);
540  public static Matrix3 BodyGetRotation(IntPtr body)
541  {
542  unsafe { return *(BodyGetRotationUnsafe(body)); }
543  }
544 
545  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetTorque"), SuppressUnmanagedCodeSecurity]
546  public extern unsafe static Vector3* BodyGetTorqueUnsafe(IntPtr body);
547  public static Vector3 BodyGetTorque(IntPtr body)
548  {
549  unsafe { return *(BodyGetTorqueUnsafe(body)); }
550  }
551 
552  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetWorld"), SuppressUnmanagedCodeSecurity]
553  public static extern IntPtr BodyGetWorld(IntPtr body);
554 
555  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetFirstGeom"), SuppressUnmanagedCodeSecurity]
556  public static extern IntPtr BodyGetFirstGeom(IntPtr body);
557 
558  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetNextGeom"), SuppressUnmanagedCodeSecurity]
559  public static extern IntPtr dBodyGetNextGeom(IntPtr Geom);
560 
561 
562  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyIsEnabled"), SuppressUnmanagedCodeSecurity]
563  public static extern bool BodyIsEnabled(IntPtr body);
564 
565  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularVel"), SuppressUnmanagedCodeSecurity]
566  public static extern void BodySetAngularVel(IntPtr body, dReal x, dReal y, dReal z);
567 
568  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
569  public static extern void BodySetAutoDisableAngularThreshold(IntPtr body, dReal angular_threshold);
570 
571  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableDefaults"), SuppressUnmanagedCodeSecurity]
572  public static extern void BodySetAutoDisableDefaults(IntPtr body);
573 
574  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
575  public static extern void BodySetAutoDisableFlag(IntPtr body, bool do_auto_disable);
576 
577  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
578  public static extern void BodySetAutoDisableLinearThreshold(IntPtr body, dReal linear_threshold);
579 
580  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
581  public static extern void BodySetAutoDisableSteps(IntPtr body, int steps);
582 
583  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
584  public static extern void BodySetAutoDisableTime(IntPtr body, dReal time);
585 
586  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetData"), SuppressUnmanagedCodeSecurity]
587  public static extern void BodySetData(IntPtr body, IntPtr data);
588 
589  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationMode"), SuppressUnmanagedCodeSecurity]
590  public static extern void BodySetFiniteRotationMode(IntPtr body, int mode);
591 
592  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetFiniteRotationAxis"), SuppressUnmanagedCodeSecurity]
593  public static extern void BodySetFiniteRotationAxis(IntPtr body, dReal x, dReal y, dReal z);
594 
595  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDamping"), SuppressUnmanagedCodeSecurity]
596  public static extern void BodySetLinearDamping(IntPtr body, dReal scale);
597 
598  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity]
599  public static extern void BodySetAngularDamping(IntPtr body, dReal scale);
600 
601  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDamping"), SuppressUnmanagedCodeSecurity]
602  public static extern dReal BodyGetLinearDamping(IntPtr body);
603 
604  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDamping"), SuppressUnmanagedCodeSecurity]
605  public static extern dReal BodyGetAngularDamping(IntPtr body);
606 
607  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDamping"), SuppressUnmanagedCodeSecurity]
608  public static extern void BodySetDamping(IntPtr body, dReal linear_scale, dReal angular_scale);
609 
610  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
611  public static extern void BodySetAngularDampingThreshold(IntPtr body, dReal threshold);
612 
613  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
614  public static extern void BodySetLinearDampingThreshold(IntPtr body, dReal threshold);
615 
616  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
617  public static extern dReal BodyGetLinearDampingThreshold(IntPtr body);
618 
619  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodyGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
620  public static extern dReal BodyGetAngularDampingThreshold(IntPtr body);
621 
622  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetForce"), SuppressUnmanagedCodeSecurity]
623  public static extern void BodySetForce(IntPtr body, dReal x, dReal y, dReal z);
624 
625  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGravityMode"), SuppressUnmanagedCodeSecurity]
626  public static extern void BodySetGravityMode(IntPtr body, bool mode);
627 
633  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetGyroscopicMode"), SuppressUnmanagedCodeSecurity]
634  public static extern void dBodySetGyroscopicMode(IntPtr body, int enabled);
635 
636  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetLinearVel"), SuppressUnmanagedCodeSecurity]
637  public static extern void BodySetLinearVel(IntPtr body, dReal x, dReal y, dReal z);
638 
639  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetMass"), SuppressUnmanagedCodeSecurity]
640  public static extern void BodySetMass(IntPtr body, ref Mass mass);
641 
642  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetPosition"), SuppressUnmanagedCodeSecurity]
643  public static extern void BodySetPosition(IntPtr body, dReal x, dReal y, dReal z);
644 
645  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity]
646  public static extern void BodySetQuaternion(IntPtr body, ref Quaternion q);
647 
648  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetQuaternion"), SuppressUnmanagedCodeSecurity]
649  public static extern void BodySetQuaternion(IntPtr body, ref dReal w);
650 
651  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity]
652  public static extern void BodySetRotation(IntPtr body, ref Matrix3 R);
653 
654  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetRotation"), SuppressUnmanagedCodeSecurity]
655  public static extern void BodySetRotation(IntPtr body, ref dReal M00);
656 
657  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBodySetTorque"), SuppressUnmanagedCodeSecurity]
658  public static extern void BodySetTorque(IntPtr body, dReal x, dReal y, dReal z);
659 
660  [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 
663  [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 
666  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxBox"), SuppressUnmanagedCodeSecurity]
667  public static extern void BoxBox(ref Vector3 p1, ref Matrix3 R1,
668  ref Vector3 side1, ref Vector3 p2,
669  ref Matrix3 R2, ref Vector3 side2,
670  ref Vector3 normal, out dReal depth, out int return_code,
671  int maxc, out ContactGeom contact, int skip);
672 
673  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dBoxTouchesBox"), SuppressUnmanagedCodeSecurity]
674  public static extern void BoxTouchesBox(ref Vector3 _p1, ref Matrix3 R1,
675  ref Vector3 side1, ref Vector3 _p2,
676  ref Matrix3 R2, ref Vector3 side2);
677 
678  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCleanupODEAllDataForThread"), SuppressUnmanagedCodeSecurity]
679  public static extern void CleanupODEAllDataForThread();
680 
681  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dClosestLineSegmentPoints"), SuppressUnmanagedCodeSecurity]
682  public static extern void ClosestLineSegmentPoints(ref Vector3 a1, ref Vector3 a2,
683  ref Vector3 b1, ref Vector3 b2,
684  ref Vector3 cp1, ref Vector3 cp2);
685 
686  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCloseODE"), SuppressUnmanagedCodeSecurity]
687  public static extern void CloseODE();
688 
689  [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  [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 
694  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dConnectingJoint"), SuppressUnmanagedCodeSecurity]
695  public static extern IntPtr ConnectingJoint(IntPtr j1, IntPtr j2);
696 
697  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateBox"), SuppressUnmanagedCodeSecurity]
698  public 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  {
701  NTotalGeoms++;
702  return CreateiBox(space, lx, ly, lz);
703  }
704 
705  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCapsule"), SuppressUnmanagedCodeSecurity]
706  public static extern IntPtr CreateiCapsule(IntPtr space, dReal radius, dReal length);
707  public static IntPtr CreateCapsule(IntPtr space, dReal radius, dReal length)
708  {
709  NTotalGeoms++;
710  return CreateiCapsule(space, radius, length);
711  }
712 
713  [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  public static IntPtr CreateConvex(IntPtr space, dReal[] planes, int planeCount, dReal[] points, int pointCount, int[] polygons)
716  {
717  NTotalGeoms++;
718  return CreateiConvex(space, planes, planeCount, points, pointCount, polygons);
719  }
720 
721  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateCylinder"), SuppressUnmanagedCodeSecurity]
722  public static extern IntPtr CreateiCylinder(IntPtr space, dReal radius, dReal length);
723  public static IntPtr CreateCylinder(IntPtr space, dReal radius, dReal length)
724  {
725  NTotalGeoms++;
726  return CreateiCylinder(space, radius, length);
727  }
728 
729  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateHeightfield"), SuppressUnmanagedCodeSecurity]
730  public static extern IntPtr CreateiHeightfield(IntPtr space, IntPtr data, int bPlaceable);
731  public static IntPtr CreateHeightfield(IntPtr space, IntPtr data, int bPlaceable)
732  {
733  NTotalGeoms++;
734  return CreateiHeightfield(space, data, bPlaceable);
735  }
736 
737  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateOSTerrain"), SuppressUnmanagedCodeSecurity]
738  public static extern IntPtr CreateiOSTerrain(IntPtr space, IntPtr data, int bPlaceable);
739  public static IntPtr CreateOSTerrain(IntPtr space, IntPtr data, int bPlaceable)
740  {
741  NTotalGeoms++;
742  return CreateiOSTerrain(space, data, bPlaceable);
743  }
744 
745 
746 
747 
748 
749  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeom"), SuppressUnmanagedCodeSecurity]
750  public static extern IntPtr CreateiGeom(int classnum);
751  public static IntPtr CreateGeom(int classnum)
752  {
753  NTotalGeoms++;
754  return CreateiGeom(classnum);
755  }
756 
757  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomClass"), SuppressUnmanagedCodeSecurity]
758  public static extern int CreateGeomClass(ref GeomClass classptr);
759 
760  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateGeomTransform"), SuppressUnmanagedCodeSecurity]
761  public static extern IntPtr CreateGeomTransform(IntPtr space);
762 
763  [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  public static IntPtr CreatePlane(IntPtr space, dReal a, dReal b, dReal c, dReal d)
766  {
767  NTotalGeoms++;
768  return CreateiPlane(space, a, b, c, d);
769  }
770 
771  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateRay"), SuppressUnmanagedCodeSecurity]
772  public static extern IntPtr CreateiRay(IntPtr space, dReal length);
773  public static IntPtr CreateRay(IntPtr space, dReal length)
774  {
775  NTotalGeoms++;
776  return CreateiRay(space, length);
777  }
778 
779  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateSphere"), SuppressUnmanagedCodeSecurity]
780  public static extern IntPtr CreateiSphere(IntPtr space, dReal radius);
781  public static IntPtr CreateSphere(IntPtr space, dReal radius)
782  {
783  NTotalGeoms++;
784  return CreateiSphere(space, radius);
785  }
786 
787  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dCreateTriMesh"), SuppressUnmanagedCodeSecurity]
788  public static extern IntPtr CreateiTriMesh(IntPtr space, IntPtr data,
789  TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback);
790  public static IntPtr CreateTriMesh(IntPtr space, IntPtr data,
791  TriCallback callback, TriArrayCallback arrayCallback, TriRayCallback rayCallback)
792  {
793  NTotalGeoms++;
794  return CreateiTriMesh(space, data, callback, arrayCallback, rayCallback);
795  }
796  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDot"), SuppressUnmanagedCodeSecurity]
797  public static extern dReal Dot(ref dReal X0, ref dReal X1, int n);
798 
799  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dDQfromW"), SuppressUnmanagedCodeSecurity]
800  public static extern void DQfromW(dReal[] dq, ref Vector3 w, ref Quaternion q);
801 
802  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dFactorCholesky"), SuppressUnmanagedCodeSecurity]
803  public static extern int FactorCholesky(ref dReal A00, int n);
804 
805  [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 
808  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity]
809  public static extern void GeomBoxGetLengths(IntPtr geom, out Vector3 len);
810 
811  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxGetLengths"), SuppressUnmanagedCodeSecurity]
812  public static extern void GeomBoxGetLengths(IntPtr geom, out dReal x);
813 
814  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxPointDepth"), SuppressUnmanagedCodeSecurity]
815  public static extern dReal GeomBoxPointDepth(IntPtr geom, dReal x, dReal y, dReal z);
816 
817  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomBoxSetLengths"), SuppressUnmanagedCodeSecurity]
818  public static extern void GeomBoxSetLengths(IntPtr geom, dReal x, dReal y, dReal z);
819 
820  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleGetParams"), SuppressUnmanagedCodeSecurity]
821  public static extern void GeomCapsuleGetParams(IntPtr geom, out dReal radius, out dReal length);
822 
823  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsulePointDepth"), SuppressUnmanagedCodeSecurity]
824  public static extern dReal GeomCapsulePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
825 
826  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCapsuleSetParams"), SuppressUnmanagedCodeSecurity]
827  public static extern void GeomCapsuleSetParams(IntPtr geom, dReal radius, dReal length);
828 
829  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomClearOffset"), SuppressUnmanagedCodeSecurity]
830  public static extern void GeomClearOffset(IntPtr geom);
831 
832  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity]
833  public static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref Vector3 pos);
834 
835  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetPosition"), SuppressUnmanagedCodeSecurity]
836  public static extern IntPtr GeomCopyOffsetPosition(IntPtr geom, ref dReal X);
837 
838  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
839  public static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref Quaternion Q);
840 
841  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
842  public static extern void GeomCopyOffsetQuaternion(IntPtr geom, ref dReal X);
843 
844  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity]
845  public static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref Matrix3 R);
846 
847  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyOffsetRotation"), SuppressUnmanagedCodeSecurity]
848  public static extern IntPtr GeomCopyOffsetRotation(IntPtr geom, ref dReal M00);
849 
850  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity]
851  public static extern void GeomCopyPosition(IntPtr geom, out Vector3 pos);
852 
853  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyPosition"), SuppressUnmanagedCodeSecurity]
854  public static extern void GeomCopyPosition(IntPtr geom, out dReal X);
855 
856  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity]
857  public static extern void GeomCopyRotation(IntPtr geom, out Matrix3 R);
858 
859  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCopyRotation"), SuppressUnmanagedCodeSecurity]
860  public static extern void GeomCopyRotation(IntPtr geom, out dReal M00);
861 
862  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderGetParams"), SuppressUnmanagedCodeSecurity]
863  public static extern void GeomCylinderGetParams(IntPtr geom, out dReal radius, out dReal length);
864 
865  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomCylinderSetParams"), SuppressUnmanagedCodeSecurity]
866  public static extern void GeomCylinderSetParams(IntPtr geom, dReal radius, dReal length);
867 
868  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDestroy"), SuppressUnmanagedCodeSecurity]
869  public static extern void GeomiDestroy(IntPtr geom);
870  public static void GeomDestroy(IntPtr geom)
871  {
872  NTotalGeoms--;
873  GeomiDestroy(geom);
874  }
875 
876 
877  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomDisable"), SuppressUnmanagedCodeSecurity]
878  public static extern void GeomDisable(IntPtr geom);
879 
880  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomEnable"), SuppressUnmanagedCodeSecurity]
881  public static extern void GeomEnable(IntPtr geom);
882 
883  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity]
884  public static extern void GeomGetAABB(IntPtr geom, out AABB aabb);
885 
886  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetAABB"), SuppressUnmanagedCodeSecurity]
887  public static extern void GeomGetAABB(IntPtr geom, out dReal minX);
888 
889  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetBody"), SuppressUnmanagedCodeSecurity]
890  public static extern IntPtr GeomGetBody(IntPtr geom);
891 
892  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCategoryBits"), SuppressUnmanagedCodeSecurity]
893  public static extern uint GeomGetCategoryBits(IntPtr geom);
894 
895  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClassData"), SuppressUnmanagedCodeSecurity]
896  public static extern IntPtr GeomGetClassData(IntPtr geom);
897 
898  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetCollideBits"), SuppressUnmanagedCodeSecurity]
899  public static extern uint GeomGetCollideBits(IntPtr geom);
900 
901  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetClass"), SuppressUnmanagedCodeSecurity]
902  public static extern GeomClassID GeomGetClass(IntPtr geom);
903 
904  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetData"), SuppressUnmanagedCodeSecurity]
905  public static extern IntPtr GeomGetData(IntPtr geom);
906 
907  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetPosition"), SuppressUnmanagedCodeSecurity]
908  public extern unsafe static Vector3* GeomGetOffsetPositionUnsafe(IntPtr geom);
909  public static Vector3 GeomGetOffsetPosition(IntPtr geom)
910  {
911  unsafe { return *(GeomGetOffsetPositionUnsafe(geom)); }
912  }
913 
914  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetOffsetRotation"), SuppressUnmanagedCodeSecurity]
915  public extern unsafe static Matrix3* GeomGetOffsetRotationUnsafe(IntPtr geom);
916  public static Matrix3 GeomGetOffsetRotation(IntPtr geom)
917  {
918  unsafe { return *(GeomGetOffsetRotationUnsafe(geom)); }
919  }
920 
921  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetPosition"), SuppressUnmanagedCodeSecurity]
922  public extern unsafe static Vector3* GeomGetPositionUnsafe(IntPtr geom);
923  public static Vector3 GeomGetPosition(IntPtr geom)
924  {
925  unsafe { return *(GeomGetPositionUnsafe(geom)); }
926  }
927  public static OMV.Vector3 GeomGetPositionOMV(IntPtr geom)
928  {
929  Vector3 vtmp = GeomGetPosition(geom);
930  return new OMV.Vector3(vtmp.X, vtmp.Y, vtmp.Z);
931  }
932 
933  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity]
934  public static extern void GeomCopyQuaternion(IntPtr geom, out Quaternion q);
935  public static OMV.Quaternion GeomGetQuaternionOMV(IntPtr geom)
936  {
937  Quaternion qtmp;
938  GeomCopyQuaternion(geom, out qtmp);
939  return new OMV.Quaternion(qtmp.X, qtmp.Y, qtmp.Z, qtmp.W);
940  }
941 
942  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetQuaternion"), SuppressUnmanagedCodeSecurity]
943  public static extern void GeomCopyQuaternion(IntPtr geom, out dReal X);
944 
945  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetRotation"), SuppressUnmanagedCodeSecurity]
946  public extern unsafe static Matrix3* GeomGetRotationUnsafe(IntPtr geom);
947  public static Matrix3 GeomGetRotation(IntPtr geom)
948  {
949  unsafe { return *(GeomGetRotationUnsafe(geom)); }
950  }
951 
952  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomGetSpace"), SuppressUnmanagedCodeSecurity]
953  public static extern IntPtr GeomGetSpace(IntPtr geom);
954 
955  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity]
956  public static extern void GeomHeightfieldDataBuildByte(IntPtr d, byte[] pHeightData, int bCopyHeightData,
957  dReal width, dReal depth, int widthSamples, int depthSamples,
958  dReal scale, dReal offset, dReal thickness, int bWrap);
959 
960  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildByte"), SuppressUnmanagedCodeSecurity]
961  public static extern void GeomHeightfieldDataBuildByte(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
962  dReal width, dReal depth, int widthSamples, int depthSamples,
963  dReal scale, dReal offset, dReal thickness, int bWrap);
964 
965  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildCallback"), SuppressUnmanagedCodeSecurity]
966  public static extern void GeomHeightfieldDataBuildCallback(IntPtr d, IntPtr pUserData, HeightfieldGetHeight pCallback,
967  dReal width, dReal depth, int widthSamples, int depthSamples,
968  dReal scale, dReal offset, dReal thickness, int bWrap);
969 
970  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
971  public static extern void GeomHeightfieldDataBuildShort(IntPtr d, ushort[] pHeightData, int bCopyHeightData,
972  dReal width, dReal depth, int widthSamples, int depthSamples,
973  dReal scale, dReal offset, dReal thickness, int bWrap);
974 
975  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
976  public static extern void GeomHeightfieldDataBuildShort(IntPtr d, short[] pHeightData, int bCopyHeightData,
977  dReal width, dReal depth, int widthSamples, int depthSamples,
978  dReal scale, dReal offset, dReal thickness, int bWrap);
979 
980  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildShort"), SuppressUnmanagedCodeSecurity]
981  public static extern void GeomHeightfieldDataBuildShort(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
982  dReal width, dReal depth, int widthSamples, int depthSamples,
983  dReal scale, dReal offset, dReal thickness, int bWrap);
984 
985  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity]
986  public static extern void GeomHeightfieldDataBuildSingle(IntPtr d, float[] pHeightData, int bCopyHeightData,
987  dReal width, dReal depth, int widthSamples, int depthSamples,
988  dReal scale, dReal offset, dReal thickness, int bWrap);
989 
990  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildSingle"), SuppressUnmanagedCodeSecurity]
991  public static extern void GeomHeightfieldDataBuildSingle(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
992  dReal width, dReal depth, int widthSamples, int depthSamples,
993  dReal scale, dReal offset, dReal thickness, int bWrap);
994 
995 
996 
997  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity]
998  public static extern void GeomHeightfieldDataBuildDouble(IntPtr d, double[] pHeightData, int bCopyHeightData,
999  dReal width, dReal depth, int widthSamples, int depthSamples,
1000  dReal scale, dReal offset, dReal thickness, int bWrap);
1001 
1002  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1003  public static extern void GeomHeightfieldDataBuildDouble(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
1004  dReal width, dReal depth, int widthSamples, int depthSamples,
1005  dReal scale, dReal offset, dReal thickness, int bWrap);
1006 
1007  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataCreate"), SuppressUnmanagedCodeSecurity]
1008  public static extern IntPtr GeomHeightfieldDataCreate();
1009 
1010  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataDestroy"), SuppressUnmanagedCodeSecurity]
1011  public static extern void GeomHeightfieldDataDestroy(IntPtr d);
1012 
1013  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldDataSetBounds"), SuppressUnmanagedCodeSecurity]
1014  public static extern void GeomHeightfieldDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
1015 
1016  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1017  public static extern IntPtr GeomHeightfieldGetHeightfieldData(IntPtr g);
1018 
1019  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomHeightfieldSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1020  public static extern void GeomHeightfieldSetHeightfieldData(IntPtr g, IntPtr d);
1021 
1022 
1023  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomUbitTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
1024  public static extern void GeomOSTerrainDataBuild(IntPtr d, float[] pHeightData, int bCopyHeightData,
1025  dReal sampleSize, int widthSamples, int depthSamples,
1026  dReal offset, dReal thickness, int bWrap);
1027 
1028  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataBuild"), SuppressUnmanagedCodeSecurity]
1029  public static extern void GeomOSTerrainDataBuild(IntPtr d, IntPtr pHeightData, int bCopyHeightData,
1030  dReal sampleSize, int widthSamples, int depthSamples,
1031  dReal thickness, int bWrap);
1032 
1033  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataCreate"), SuppressUnmanagedCodeSecurity]
1034  public static extern IntPtr GeomOSTerrainDataCreate();
1035 
1036  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataDestroy"), SuppressUnmanagedCodeSecurity]
1037  public static extern void GeomOSTerrainDataDestroy(IntPtr d);
1038 
1039  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainDataSetBounds"), SuppressUnmanagedCodeSecurity]
1040  public static extern void GeomOSTerrainDataSetBounds(IntPtr d, dReal minHeight, dReal maxHeight);
1041 
1042  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainGetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1043  public static extern IntPtr GeomOSTerrainGetHeightfieldData(IntPtr g);
1044 
1045  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomOSTerrainSetHeightfieldData"), SuppressUnmanagedCodeSecurity]
1046  public static extern void GeomOSTerrainSetHeightfieldData(IntPtr g, IntPtr d);
1047 
1048 
1049  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsEnabled"), SuppressUnmanagedCodeSecurity]
1050  public static extern bool GeomIsEnabled(IntPtr geom);
1051 
1052  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsOffset"), SuppressUnmanagedCodeSecurity]
1053  public static extern bool GeomIsOffset(IntPtr geom);
1054 
1055  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomIsSpace"), SuppressUnmanagedCodeSecurity]
1056  public static extern bool GeomIsSpace(IntPtr geom);
1057 
1058  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity]
1059  public static extern void GeomPlaneGetParams(IntPtr geom, ref Vector4 result);
1060 
1061  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlaneGetParams"), SuppressUnmanagedCodeSecurity]
1062  public static extern void GeomPlaneGetParams(IntPtr geom, ref dReal A);
1063 
1064  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomPlanePointDepth"), SuppressUnmanagedCodeSecurity]
1065  public static extern dReal GeomPlanePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
1066 
1067  [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 
1070  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity]
1071  public static extern void GeomRayGet(IntPtr ray, ref Vector3 start, ref Vector3 dir);
1072 
1073  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGet"), SuppressUnmanagedCodeSecurity]
1074  public static extern void GeomRayGet(IntPtr ray, ref dReal startX, ref dReal dirX);
1075 
1076  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetClosestHit"), SuppressUnmanagedCodeSecurity]
1077  public static extern int GeomRayGetClosestHit(IntPtr ray);
1078 
1079  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetLength"), SuppressUnmanagedCodeSecurity]
1080  public static extern dReal GeomRayGetLength(IntPtr ray);
1081 
1082  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRayGetParams"), SuppressUnmanagedCodeSecurity]
1083  public static extern dReal GeomRayGetParams(IntPtr g, out int firstContact, out int backfaceCull);
1084 
1085  [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 
1088  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetClosestHit"), SuppressUnmanagedCodeSecurity]
1089  public static extern void GeomRaySetClosestHit(IntPtr ray, int closestHit);
1090 
1091  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetLength"), SuppressUnmanagedCodeSecurity]
1092  public static extern void GeomRaySetLength(IntPtr ray, dReal length);
1093 
1094  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomRaySetParams"), SuppressUnmanagedCodeSecurity]
1095  public static extern void GeomRaySetParams(IntPtr ray, int firstContact, int backfaceCull);
1096 
1097  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetBody"), SuppressUnmanagedCodeSecurity]
1098  public static extern void GeomSetBody(IntPtr geom, IntPtr body);
1099 
1100  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCategoryBits"), SuppressUnmanagedCodeSecurity]
1101  public static extern void GeomSetCategoryBits(IntPtr geom, uint bits);
1102 
1103  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetCollideBits"), SuppressUnmanagedCodeSecurity]
1104  public static extern void GeomSetCollideBits(IntPtr geom, uint bits);
1105 
1106  [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 
1109  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetData"), SuppressUnmanagedCodeSecurity]
1110  public static extern void GeomSetData(IntPtr geom, IntPtr data);
1111 
1112  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetPosition"), SuppressUnmanagedCodeSecurity]
1113  public static extern void GeomSetOffsetPosition(IntPtr geom, dReal x, dReal y, dReal z);
1114 
1115  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
1116  public static extern void GeomSetOffsetQuaternion(IntPtr geom, ref Quaternion Q);
1117 
1118  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetQuaternion"), SuppressUnmanagedCodeSecurity]
1119  public static extern void GeomSetOffsetQuaternion(IntPtr geom, ref dReal X);
1120 
1121  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity]
1122  public static extern void GeomSetOffsetRotation(IntPtr geom, ref Matrix3 R);
1123 
1124  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetRotation"), SuppressUnmanagedCodeSecurity]
1125  public static extern void GeomSetOffsetRotation(IntPtr geom, ref dReal M00);
1126 
1127  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldPosition"), SuppressUnmanagedCodeSecurity]
1128  public static extern void GeomSetOffsetWorldPosition(IntPtr geom, dReal x, dReal y, dReal z);
1129 
1130  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity]
1131  public static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref Quaternion Q);
1132 
1133  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldQuaternion"), SuppressUnmanagedCodeSecurity]
1134  public static extern void GeomSetOffsetWorldQuaternion(IntPtr geom, ref dReal X);
1135 
1136  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity]
1137  public static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref Matrix3 R);
1138 
1139  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetOffsetWorldRotation"), SuppressUnmanagedCodeSecurity]
1140  public static extern void GeomSetOffsetWorldRotation(IntPtr geom, ref dReal M00);
1141 
1142  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetPosition"), SuppressUnmanagedCodeSecurity]
1143  public static extern void GeomSetPosition(IntPtr geom, dReal x, dReal y, dReal z);
1144 
1145  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity]
1146  public static extern void GeomSetQuaternion(IntPtr geom, ref Quaternion quat);
1147 
1148  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetQuaternion"), SuppressUnmanagedCodeSecurity]
1149  public static extern void GeomSetQuaternion(IntPtr geom, ref dReal w);
1150 
1151  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity]
1152  public static extern void GeomSetRotation(IntPtr geom, ref Matrix3 R);
1153 
1154  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSetRotation"), SuppressUnmanagedCodeSecurity]
1155  public static extern void GeomSetRotation(IntPtr geom, ref dReal M00);
1156 
1157  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereGetRadius"), SuppressUnmanagedCodeSecurity]
1158  public static extern dReal GeomSphereGetRadius(IntPtr geom);
1159 
1160  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSpherePointDepth"), SuppressUnmanagedCodeSecurity]
1161  public static extern dReal GeomSpherePointDepth(IntPtr geom, dReal x, dReal y, dReal z);
1162 
1163  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomSphereSetRadius"), SuppressUnmanagedCodeSecurity]
1164  public static extern void GeomSphereSetRadius(IntPtr geom, dReal radius);
1165 
1166  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetCleanup"), SuppressUnmanagedCodeSecurity]
1167  public static extern int GeomTransformGetCleanup(IntPtr geom);
1168 
1169  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetGeom"), SuppressUnmanagedCodeSecurity]
1170  public static extern IntPtr GeomTransformGetGeom(IntPtr geom);
1171 
1172  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformGetInfo"), SuppressUnmanagedCodeSecurity]
1173  public static extern int GeomTransformGetInfo(IntPtr geom);
1174 
1175  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetCleanup"), SuppressUnmanagedCodeSecurity]
1176  public static extern void GeomTransformSetCleanup(IntPtr geom, int mode);
1177 
1178  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetGeom"), SuppressUnmanagedCodeSecurity]
1179  public static extern void GeomTransformSetGeom(IntPtr geom, IntPtr obj);
1180 
1181  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTransformSetInfo"), SuppressUnmanagedCodeSecurity]
1182  public static extern void GeomTransformSetInfo(IntPtr geom, int info);
1183 
1184  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1185  public static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1186  double[] vertices, int vertexStride, int vertexCount,
1187  int[] indices, int indexCount, int triStride);
1188 
1189  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble"), SuppressUnmanagedCodeSecurity]
1190  public static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1191  IntPtr vertices, int vertexStride, int vertexCount,
1192  IntPtr indices, int indexCount, int triStride);
1193 
1194  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity]
1195  public static extern void GeomTriMeshDataBuildDouble1(IntPtr d,
1196  double[] vertices, int vertexStride, int vertexCount,
1197  int[] indices, int indexCount, int triStride,
1198  double[] normals);
1199 
1200  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildDouble1"), SuppressUnmanagedCodeSecurity]
1201  public static extern void GeomTriMeshDataBuildDouble(IntPtr d,
1202  IntPtr vertices, int vertexStride, int vertexCount,
1203  IntPtr indices, int indexCount, int triStride,
1204  IntPtr normals);
1205 
1206  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity]
1207  public static extern void GeomTriMeshDataBuildSingle(IntPtr d,
1208  dReal[] vertices, int vertexStride, int vertexCount,
1209  int[] indices, int indexCount, int triStride);
1210 
1211  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple"), SuppressUnmanagedCodeSecurity]
1212  public static extern void GeomTriMeshDataBuildSingle(IntPtr d,
1213  IntPtr vertices, int vertexStride, int vertexCount,
1214  IntPtr indices, int indexCount, int triStride);
1215 
1216  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity]
1217  public static extern void GeomTriMeshDataBuildSingle1(IntPtr d,
1218  dReal[] vertices, int vertexStride, int vertexCount,
1219  int[] indices, int indexCount, int triStride,
1220  dReal[] normals);
1221 
1222  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSimple1"), SuppressUnmanagedCodeSecurity]
1223  public static extern void GeomTriMeshDataBuildSingle1(IntPtr d,
1224  IntPtr vertices, int vertexStride, int vertexCount,
1225  IntPtr indices, int indexCount, int triStride,
1226  IntPtr normals);
1227 
1228  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity]
1229  public static extern void GeomTriMeshDataBuildSimple(IntPtr d,
1230  float[] vertices, int vertexStride, int vertexCount,
1231  int[] indices, int indexCount, int triStride);
1232 
1233  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle"), SuppressUnmanagedCodeSecurity]
1234  public static extern void GeomTriMeshDataBuildSimple(IntPtr d,
1235  IntPtr vertices, int vertexStride, int vertexCount,
1236  IntPtr indices, int indexCount, int triStride);
1237 
1238  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity]
1239  public static extern void GeomTriMeshDataBuildSimple1(IntPtr d,
1240  float[] vertices, int vertexStride, int vertexCount,
1241  int[] indices, int indexCount, int triStride,
1242  float[] normals);
1243 
1244  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataBuildSingle1"), SuppressUnmanagedCodeSecurity]
1245  public static extern void GeomTriMeshDataBuildSimple1(IntPtr d,
1246  IntPtr vertices, int vertexStride, int vertexCount,
1247  IntPtr indices, int indexCount, int triStride,
1248  IntPtr normals);
1249 
1250  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshClearTCCache"), SuppressUnmanagedCodeSecurity]
1251  public static extern void GeomTriMeshClearTCCache(IntPtr g);
1252 
1253  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataCreate"), SuppressUnmanagedCodeSecurity]
1254  public static extern IntPtr GeomTriMeshDataCreate();
1255 
1256  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataDestroy"), SuppressUnmanagedCodeSecurity]
1257  public static extern void GeomTriMeshDataDestroy(IntPtr d);
1258 
1259  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataGet"), SuppressUnmanagedCodeSecurity]
1260  public static extern IntPtr GeomTriMeshDataGet(IntPtr d, int data_id);
1261 
1262  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataPreprocess"), SuppressUnmanagedCodeSecurity]
1263  public static extern void GeomTriMeshDataPreprocess(IntPtr d);
1264 
1265  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataSet"), SuppressUnmanagedCodeSecurity]
1266  public static extern void GeomTriMeshDataSet(IntPtr d, int data_id, IntPtr in_data);
1267 
1268  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshDataUpdate"), SuppressUnmanagedCodeSecurity]
1269  public static extern void GeomTriMeshDataUpdate(IntPtr d);
1270 
1271  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshEnableTC"), SuppressUnmanagedCodeSecurity]
1272  public static extern void GeomTriMeshEnableTC(IntPtr g, int geomClass, bool enable);
1273 
1274  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetArrayCallback"), SuppressUnmanagedCodeSecurity]
1275  public static extern TriArrayCallback GeomTriMeshGetArrayCallback(IntPtr g);
1276 
1277  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetCallback"), SuppressUnmanagedCodeSecurity]
1278  public static extern TriCallback GeomTriMeshGetCallback(IntPtr g);
1279 
1280  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetData"), SuppressUnmanagedCodeSecurity]
1281  public static extern IntPtr GeomTriMeshGetData(IntPtr g);
1282 
1283  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetLastTransform"), SuppressUnmanagedCodeSecurity]
1284  public extern unsafe static Matrix4* GeomTriMeshGetLastTransformUnsafe(IntPtr geom);
1285  public static Matrix4 GeomTriMeshGetLastTransform(IntPtr geom)
1286  {
1287  unsafe { return *(GeomTriMeshGetLastTransformUnsafe(geom)); }
1288  }
1289 
1290  [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 
1293  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetRayCallback"), SuppressUnmanagedCodeSecurity]
1294  public static extern TriRayCallback GeomTriMeshGetRayCallback(IntPtr g);
1295 
1296  [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 
1299  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriangleCount"), SuppressUnmanagedCodeSecurity]
1300  public extern static int GeomTriMeshGetTriangleCount(IntPtr g);
1301 
1302  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshGetTriMeshDataID"), SuppressUnmanagedCodeSecurity]
1303  public static extern IntPtr GeomTriMeshGetTriMeshDataID(IntPtr g);
1304 
1305  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshIsTCEnabled"), SuppressUnmanagedCodeSecurity]
1306  public static extern bool GeomTriMeshIsTCEnabled(IntPtr g, int geomClass);
1307 
1308  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetArrayCallback"), SuppressUnmanagedCodeSecurity]
1309  public static extern void GeomTriMeshSetArrayCallback(IntPtr g, TriArrayCallback arrayCallback);
1310 
1311  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetCallback"), SuppressUnmanagedCodeSecurity]
1312  public static extern void GeomTriMeshSetCallback(IntPtr g, TriCallback callback);
1313 
1314  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetData"), SuppressUnmanagedCodeSecurity]
1315  public static extern void GeomTriMeshSetData(IntPtr g, IntPtr data);
1316 
1317  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity]
1318  public static extern void GeomTriMeshSetLastTransform(IntPtr g, ref Matrix4 last_trans);
1319 
1320  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetLastTransform"), SuppressUnmanagedCodeSecurity]
1321  public static extern void GeomTriMeshSetLastTransform(IntPtr g, ref dReal M00);
1322 
1323  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGeomTriMeshSetRayCallback"), SuppressUnmanagedCodeSecurity]
1324  public static extern void GeomTriMeshSetRayCallback(IntPtr g, TriRayCallback callback);
1325 
1326  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dGetConfiguration"), SuppressUnmanagedCodeSecurity]
1327  public static extern IntPtr iGetConfiguration();
1328 
1329  public static string GetConfiguration()
1330  {
1331  IntPtr ptr = iGetConfiguration();
1332  string s = Marshal.PtrToStringAnsi(ptr);
1333  return s;
1334  }
1335 
1336  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceCreate"), SuppressUnmanagedCodeSecurity]
1337  public static extern IntPtr HashSpaceCreate(IntPtr space);
1338 
1339  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceGetLevels"), SuppressUnmanagedCodeSecurity]
1340  public static extern void HashSpaceGetLevels(IntPtr space, out int minlevel, out int maxlevel);
1341 
1342  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dHashSpaceSetLevels"), SuppressUnmanagedCodeSecurity]
1343  public static extern void HashSpaceSetLevels(IntPtr space, int minlevel, int maxlevel);
1344 
1345  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInfiniteAABB"), SuppressUnmanagedCodeSecurity]
1346  public static extern void InfiniteAABB(IntPtr geom, out AABB aabb);
1347 
1348  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE"), SuppressUnmanagedCodeSecurity]
1349  public static extern void InitODE();
1350 
1351  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInitODE2"), SuppressUnmanagedCodeSecurity]
1352  public static extern int InitODE2(uint ODEInitFlags);
1353 
1354  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dIsPositiveDefinite"), SuppressUnmanagedCodeSecurity]
1355  public static extern int IsPositiveDefinite(ref dReal A, int n);
1356 
1357  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dInvertPDMatrix"), SuppressUnmanagedCodeSecurity]
1358  public static extern int InvertPDMatrix(ref dReal A, out dReal Ainv, int n);
1359 
1360  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddAMotorTorques"), SuppressUnmanagedCodeSecurity]
1361  public static extern void JointAddAMotorTorques(IntPtr joint, dReal torque1, dReal torque2, dReal torque3);
1362 
1363  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHingeTorque"), SuppressUnmanagedCodeSecurity]
1364  public static extern void JointAddHingeTorque(IntPtr joint, dReal torque);
1365 
1366  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddHinge2Torque"), SuppressUnmanagedCodeSecurity]
1367  public static extern void JointAddHinge2Torques(IntPtr joint, dReal torque1, dReal torque2);
1368 
1369  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddPRTorque"), SuppressUnmanagedCodeSecurity]
1370  public static extern void JointAddPRTorque(IntPtr joint, dReal torque);
1371 
1372  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddUniversalTorque"), SuppressUnmanagedCodeSecurity]
1373  public static extern void JointAddUniversalTorques(IntPtr joint, dReal torque1, dReal torque2);
1374 
1375  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAddSliderForce"), SuppressUnmanagedCodeSecurity]
1376  public static extern void JointAddSliderForce(IntPtr joint, dReal force);
1377 
1378  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointAttach"), SuppressUnmanagedCodeSecurity]
1379  public static extern void JointAttach(IntPtr joint, IntPtr body1, IntPtr body2);
1380 
1381  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateAMotor"), SuppressUnmanagedCodeSecurity]
1382  public static extern IntPtr JointCreateAMotor(IntPtr world, IntPtr group);
1383 
1384  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateBall"), SuppressUnmanagedCodeSecurity]
1385  public static extern IntPtr JointCreateBall(IntPtr world, IntPtr group);
1386 
1387  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity]
1388  public static extern IntPtr JointCreateContact(IntPtr world, IntPtr group, ref Contact contact);
1389  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateContact"), SuppressUnmanagedCodeSecurity]
1390  public static extern IntPtr JointCreateContactPtr(IntPtr world, IntPtr group, IntPtr contact);
1391 
1392  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateFixed"), SuppressUnmanagedCodeSecurity]
1393  public static extern IntPtr JointCreateFixed(IntPtr world, IntPtr group);
1394 
1395  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge"), SuppressUnmanagedCodeSecurity]
1396  public static extern IntPtr JointCreateHinge(IntPtr world, IntPtr group);
1397 
1398  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateHinge2"), SuppressUnmanagedCodeSecurity]
1399  public static extern IntPtr JointCreateHinge2(IntPtr world, IntPtr group);
1400 
1401  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateLMotor"), SuppressUnmanagedCodeSecurity]
1402  public static extern IntPtr JointCreateLMotor(IntPtr world, IntPtr group);
1403 
1404  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateNull"), SuppressUnmanagedCodeSecurity]
1405  public static extern IntPtr JointCreateNull(IntPtr world, IntPtr group);
1406 
1407  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePR"), SuppressUnmanagedCodeSecurity]
1408  public static extern IntPtr JointCreatePR(IntPtr world, IntPtr group);
1409 
1410  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreatePlane2D"), SuppressUnmanagedCodeSecurity]
1411  public static extern IntPtr JointCreatePlane2D(IntPtr world, IntPtr group);
1412 
1413  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateSlider"), SuppressUnmanagedCodeSecurity]
1414  public static extern IntPtr JointCreateSlider(IntPtr world, IntPtr group);
1415 
1416  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointCreateUniversal"), SuppressUnmanagedCodeSecurity]
1417  public static extern IntPtr JointCreateUniversal(IntPtr world, IntPtr group);
1418 
1419  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointDestroy"), SuppressUnmanagedCodeSecurity]
1420  public static extern void JointDestroy(IntPtr j);
1421 
1422  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngle"), SuppressUnmanagedCodeSecurity]
1423  public static extern dReal JointGetAMotorAngle(IntPtr j, int anum);
1424 
1425  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAngleRate"), SuppressUnmanagedCodeSecurity]
1426  public static extern dReal JointGetAMotorAngleRate(IntPtr j, int anum);
1427 
1428  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxis"), SuppressUnmanagedCodeSecurity]
1429  public static extern void JointGetAMotorAxis(IntPtr j, int anum, out Vector3 result);
1430 
1431  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorAxisRel"), SuppressUnmanagedCodeSecurity]
1432  public static extern int JointGetAMotorAxisRel(IntPtr j, int anum);
1433 
1434  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorMode"), SuppressUnmanagedCodeSecurity]
1435  public static extern int JointGetAMotorMode(IntPtr j);
1436 
1437  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1438  public static extern int JointGetAMotorNumAxes(IntPtr j);
1439 
1440  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetAMotorParam"), SuppressUnmanagedCodeSecurity]
1441  public static extern dReal JointGetAMotorParam(IntPtr j, int parameter);
1442 
1443  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor"), SuppressUnmanagedCodeSecurity]
1444  public static extern void JointGetBallAnchor(IntPtr j, out Vector3 result);
1445 
1446  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBallAnchor2"), SuppressUnmanagedCodeSecurity]
1447  public static extern void JointGetBallAnchor2(IntPtr j, out Vector3 result);
1448 
1449  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetBody"), SuppressUnmanagedCodeSecurity]
1450  public static extern IntPtr JointGetBody(IntPtr j);
1451 
1452  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetData"), SuppressUnmanagedCodeSecurity]
1453  public static extern IntPtr JointGetData(IntPtr j);
1454 
1455  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetFeedback"), SuppressUnmanagedCodeSecurity]
1456  public extern unsafe static JointFeedback* JointGetFeedbackUnsafe(IntPtr j);
1457  public static JointFeedback JointGetFeedback(IntPtr j)
1458  {
1459  unsafe { return *(JointGetFeedbackUnsafe(j)); }
1460  }
1461 
1462  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor"), SuppressUnmanagedCodeSecurity]
1463  public static extern void JointGetHingeAnchor(IntPtr j, out Vector3 result);
1464 
1465  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngle"), SuppressUnmanagedCodeSecurity]
1466  public static extern dReal JointGetHingeAngle(IntPtr j);
1467 
1468  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAngleRate"), SuppressUnmanagedCodeSecurity]
1469  public static extern dReal JointGetHingeAngleRate(IntPtr j);
1470 
1471  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAxis"), SuppressUnmanagedCodeSecurity]
1472  public static extern void JointGetHingeAxis(IntPtr j, out Vector3 result);
1473 
1474  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeParam"), SuppressUnmanagedCodeSecurity]
1475  public static extern dReal JointGetHingeParam(IntPtr j, int parameter);
1476 
1477  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1"), SuppressUnmanagedCodeSecurity]
1478  public static extern dReal JointGetHinge2Angle1(IntPtr j);
1479 
1480  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle1Rate"), SuppressUnmanagedCodeSecurity]
1481  public static extern dReal JointGetHinge2Angle1Rate(IntPtr j);
1482 
1483  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Angle2Rate"), SuppressUnmanagedCodeSecurity]
1484  public static extern dReal JointGetHinge2Angle2Rate(IntPtr j);
1485 
1486  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHingeAnchor2"), SuppressUnmanagedCodeSecurity]
1487  public static extern void JointGetHingeAnchor2(IntPtr j, out Vector3 result);
1488 
1489  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor"), SuppressUnmanagedCodeSecurity]
1490  public static extern void JointGetHinge2Anchor(IntPtr j, out Vector3 result);
1491 
1492  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Anchor2"), SuppressUnmanagedCodeSecurity]
1493  public static extern void JointGetHinge2Anchor2(IntPtr j, out Vector3 result);
1494 
1495  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis1"), SuppressUnmanagedCodeSecurity]
1496  public static extern void JointGetHinge2Axis1(IntPtr j, out Vector3 result);
1497 
1498  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Axis2"), SuppressUnmanagedCodeSecurity]
1499  public static extern void JointGetHinge2Axis2(IntPtr j, out Vector3 result);
1500 
1501  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetHinge2Param"), SuppressUnmanagedCodeSecurity]
1502  public static extern dReal JointGetHinge2Param(IntPtr j, int parameter);
1503 
1504  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorAxis"), SuppressUnmanagedCodeSecurity]
1505  public static extern void JointGetLMotorAxis(IntPtr j, int anum, out Vector3 result);
1506 
1507  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1508  public static extern int JointGetLMotorNumAxes(IntPtr j);
1509 
1510  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetLMotorParam"), SuppressUnmanagedCodeSecurity]
1511  public static extern dReal JointGetLMotorParam(IntPtr j, int parameter);
1512 
1513  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAnchor"), SuppressUnmanagedCodeSecurity]
1514  public static extern void JointGetPRAnchor(IntPtr j, out Vector3 result);
1515 
1516  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis1"), SuppressUnmanagedCodeSecurity]
1517  public static extern void JointGetPRAxis1(IntPtr j, out Vector3 result);
1518 
1519  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRAxis2"), SuppressUnmanagedCodeSecurity]
1520  public static extern void JointGetPRAxis2(IntPtr j, out Vector3 result);
1521 
1522  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRParam"), SuppressUnmanagedCodeSecurity]
1523  public static extern dReal JointGetPRParam(IntPtr j, int parameter);
1524 
1525  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPosition"), SuppressUnmanagedCodeSecurity]
1526  public static extern dReal JointGetPRPosition(IntPtr j);
1527 
1528  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetPRPositionRate"), SuppressUnmanagedCodeSecurity]
1529  public static extern dReal JointGetPRPositionRate(IntPtr j);
1530 
1531  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderAxis"), SuppressUnmanagedCodeSecurity]
1532  public static extern void JointGetSliderAxis(IntPtr j, out Vector3 result);
1533 
1534  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderParam"), SuppressUnmanagedCodeSecurity]
1535  public static extern dReal JointGetSliderParam(IntPtr j, int parameter);
1536 
1537  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPosition"), SuppressUnmanagedCodeSecurity]
1538  public static extern dReal JointGetSliderPosition(IntPtr j);
1539 
1540  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetSliderPositionRate"), SuppressUnmanagedCodeSecurity]
1541  public static extern dReal JointGetSliderPositionRate(IntPtr j);
1542 
1543  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetType"), SuppressUnmanagedCodeSecurity]
1544  public static extern JointType JointGetType(IntPtr j);
1545 
1546  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor"), SuppressUnmanagedCodeSecurity]
1547  public static extern void JointGetUniversalAnchor(IntPtr j, out Vector3 result);
1548 
1549  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAnchor2"), SuppressUnmanagedCodeSecurity]
1550  public static extern void JointGetUniversalAnchor2(IntPtr j, out Vector3 result);
1551 
1552  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1"), SuppressUnmanagedCodeSecurity]
1553  public static extern dReal JointGetUniversalAngle1(IntPtr j);
1554 
1555  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle1Rate"), SuppressUnmanagedCodeSecurity]
1556  public static extern dReal JointGetUniversalAngle1Rate(IntPtr j);
1557 
1558  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2"), SuppressUnmanagedCodeSecurity]
1559  public static extern dReal JointGetUniversalAngle2(IntPtr j);
1560 
1561  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngle2Rate"), SuppressUnmanagedCodeSecurity]
1562  public static extern dReal JointGetUniversalAngle2Rate(IntPtr j);
1563 
1564  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAngles"), SuppressUnmanagedCodeSecurity]
1565  public static extern void JointGetUniversalAngles(IntPtr j, out dReal angle1, out dReal angle2);
1566 
1567  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis1"), SuppressUnmanagedCodeSecurity]
1568  public static extern void JointGetUniversalAxis1(IntPtr j, out Vector3 result);
1569 
1570  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalAxis2"), SuppressUnmanagedCodeSecurity]
1571  public static extern void JointGetUniversalAxis2(IntPtr j, out Vector3 result);
1572 
1573  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGetUniversalParam"), SuppressUnmanagedCodeSecurity]
1574  public static extern dReal JointGetUniversalParam(IntPtr j, int parameter);
1575 
1576  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupCreate"), SuppressUnmanagedCodeSecurity]
1577  public static extern IntPtr JointGroupCreate(int max_size);
1578 
1579  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupDestroy"), SuppressUnmanagedCodeSecurity]
1580  public static extern void JointGroupDestroy(IntPtr group);
1581 
1582  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointGroupEmpty"), SuppressUnmanagedCodeSecurity]
1583  public static extern void JointGroupEmpty(IntPtr group);
1584 
1585  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorAngle"), SuppressUnmanagedCodeSecurity]
1586  public static extern void JointSetAMotorAngle(IntPtr j, int anum, dReal angle);
1587 
1588  [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 
1591  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorMode"), SuppressUnmanagedCodeSecurity]
1592  public static extern void JointSetAMotorMode(IntPtr j, int mode);
1593 
1594  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1595  public static extern void JointSetAMotorNumAxes(IntPtr group, int num);
1596 
1597  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetAMotorParam"), SuppressUnmanagedCodeSecurity]
1598  public static extern void JointSetAMotorParam(IntPtr group, int parameter, dReal value);
1599 
1600  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor"), SuppressUnmanagedCodeSecurity]
1601  public static extern void JointSetBallAnchor(IntPtr j, dReal x, dReal y, dReal z);
1602 
1603  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetBallAnchor2"), SuppressUnmanagedCodeSecurity]
1604  public static extern void JointSetBallAnchor2(IntPtr j, dReal x, dReal y, dReal z);
1605 
1606  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetData"), SuppressUnmanagedCodeSecurity]
1607  public static extern void JointSetData(IntPtr j, IntPtr data);
1608 
1609  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFeedback"), SuppressUnmanagedCodeSecurity]
1610  public static extern void JointSetFeedback(IntPtr j, out JointFeedback feedback);
1611 
1612  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetFixed"), SuppressUnmanagedCodeSecurity]
1613  public static extern void JointSetFixed(IntPtr j);
1614 
1615  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAnchor"), SuppressUnmanagedCodeSecurity]
1616  public static extern void JointSetHingeAnchor(IntPtr j, dReal x, dReal y, dReal z);
1617 
1618  [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 
1621  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeAxis"), SuppressUnmanagedCodeSecurity]
1622  public static extern void JointSetHingeAxis(IntPtr j, dReal x, dReal y, dReal z);
1623 
1624  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHingeParam"), SuppressUnmanagedCodeSecurity]
1625  public static extern void JointSetHingeParam(IntPtr j, int parameter, dReal value);
1626 
1627  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Anchor"), SuppressUnmanagedCodeSecurity]
1628  public static extern void JointSetHinge2Anchor(IntPtr j, dReal x, dReal y, dReal z);
1629 
1630  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis1"), SuppressUnmanagedCodeSecurity]
1631  public static extern void JointSetHinge2Axis1(IntPtr j, dReal x, dReal y, dReal z);
1632 
1633  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Axis2"), SuppressUnmanagedCodeSecurity]
1634  public static extern void JointSetHinge2Axis2(IntPtr j, dReal x, dReal y, dReal z);
1635 
1636  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetHinge2Param"), SuppressUnmanagedCodeSecurity]
1637  public static extern void JointSetHinge2Param(IntPtr j, int parameter, dReal value);
1638 
1639  [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 
1642  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorNumAxes"), SuppressUnmanagedCodeSecurity]
1643  public static extern void JointSetLMotorNumAxes(IntPtr j, int num);
1644 
1645  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetLMotorParam"), SuppressUnmanagedCodeSecurity]
1646  public static extern void JointSetLMotorParam(IntPtr j, int parameter, dReal value);
1647 
1648  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DAngleParam"), SuppressUnmanagedCodeSecurity]
1649  public static extern void JointSetPlane2DAngleParam(IntPtr j, int parameter, dReal value);
1650 
1651  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DXParam"), SuppressUnmanagedCodeSecurity]
1652  public static extern void JointSetPlane2DXParam(IntPtr j, int parameter, dReal value);
1653 
1654  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPlane2DYParam"), SuppressUnmanagedCodeSecurity]
1655  public static extern void JointSetPlane2DYParam(IntPtr j, int parameter, dReal value);
1656 
1657  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAnchor"), SuppressUnmanagedCodeSecurity]
1658  public static extern void JointSetPRAnchor(IntPtr j, dReal x, dReal y, dReal z);
1659 
1660  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis1"), SuppressUnmanagedCodeSecurity]
1661  public static extern void JointSetPRAxis1(IntPtr j, dReal x, dReal y, dReal z);
1662 
1663  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRAxis2"), SuppressUnmanagedCodeSecurity]
1664  public static extern void JointSetPRAxis2(IntPtr j, dReal x, dReal y, dReal z);
1665 
1666  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetPRParam"), SuppressUnmanagedCodeSecurity]
1667  public static extern void JointSetPRParam(IntPtr j, int parameter, dReal value);
1668 
1669  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderAxis"), SuppressUnmanagedCodeSecurity]
1670  public static extern void JointSetSliderAxis(IntPtr j, dReal x, dReal y, dReal z);
1671 
1672  [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 
1675  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetSliderParam"), SuppressUnmanagedCodeSecurity]
1676  public static extern void JointSetSliderParam(IntPtr j, int parameter, dReal value);
1677 
1678  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAnchor"), SuppressUnmanagedCodeSecurity]
1679  public static extern void JointSetUniversalAnchor(IntPtr j, dReal x, dReal y, dReal z);
1680 
1681  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis1"), SuppressUnmanagedCodeSecurity]
1682  public static extern void JointSetUniversalAxis1(IntPtr j, dReal x, dReal y, dReal z);
1683 
1684  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalAxis2"), SuppressUnmanagedCodeSecurity]
1685  public static extern void JointSetUniversalAxis2(IntPtr j, dReal x, dReal y, dReal z);
1686 
1687  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dJointSetUniversalParam"), SuppressUnmanagedCodeSecurity]
1688  public static extern void JointSetUniversalParam(IntPtr j, int parameter, dReal value);
1689 
1690  [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 
1693  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdd"), SuppressUnmanagedCodeSecurity]
1694  public static extern void MassAdd(ref Mass a, ref Mass b);
1695 
1696  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassAdjust"), SuppressUnmanagedCodeSecurity]
1697  public static extern void MassAdjust(ref Mass m, dReal newmass);
1698 
1699  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassCheck"), SuppressUnmanagedCodeSecurity]
1700  public static extern bool MassCheck(ref Mass m);
1701 
1702  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity]
1703  public static extern void MassRotate(ref Mass mass, ref Matrix3 R);
1704 
1705  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassRotate"), SuppressUnmanagedCodeSecurity]
1706  public static extern void MassRotate(ref Mass mass, ref dReal M00);
1707 
1708  [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 
1711  [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 
1714  [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 
1717  [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 
1720  [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 
1723  [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 
1726  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetParameters"), SuppressUnmanagedCodeSecurity]
1727  public static extern void MassSetParameters(out Mass mass, dReal themass,
1728  dReal cgx, dReal cgy, dReal cgz,
1729  dReal i11, dReal i22, dReal i33,
1730  dReal i12, dReal i13, dReal i23);
1731 
1732  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphere"), SuppressUnmanagedCodeSecurity]
1733  public static extern void MassSetSphere(out Mass mass, dReal density, dReal radius);
1734 
1735  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetSphereTotal"), SuppressUnmanagedCodeSecurity]
1736  public static extern void dMassSetSphereTotal(out Mass mass, dReal total_mass, dReal radius);
1737 
1738  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetTrimesh"), SuppressUnmanagedCodeSecurity]
1739  public static extern void MassSetTrimesh(out Mass mass, dReal density, IntPtr g);
1740 
1741  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassSetZero"), SuppressUnmanagedCodeSecurity]
1742  public static extern void MassSetZero(out Mass mass);
1743 
1744  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dMassTranslate"), SuppressUnmanagedCodeSecurity]
1745  public static extern void MassTranslate(ref Mass mass, dReal x, dReal y, dReal z);
1746 
1747  [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 
1750  [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  public static void MultiplyM3V3(out Vector3 outvector, ref Matrix3 matrix, ref Vector3 invector)
1753  {
1754  MultiplyiM3V3(out outvector, ref matrix, ref invector, 3, 3, 1);
1755  }
1756 
1757  [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 
1760  [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 
1763  [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 
1766  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQfromR"), SuppressUnmanagedCodeSecurity]
1767  public static extern void QfromR(out Quaternion q, ref Matrix3 R);
1768 
1769  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply0"), SuppressUnmanagedCodeSecurity]
1770  public static extern void QMultiply0(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1771 
1772  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply1"), SuppressUnmanagedCodeSecurity]
1773  public static extern void QMultiply1(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1774 
1775  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply2"), SuppressUnmanagedCodeSecurity]
1776  public static extern void QMultiply2(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1777 
1778  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQMultiply3"), SuppressUnmanagedCodeSecurity]
1779  public static extern void QMultiply3(out Quaternion qa, ref Quaternion qb, ref Quaternion qc);
1780 
1781  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dQSetIdentity"), SuppressUnmanagedCodeSecurity]
1782  public static extern void QSetIdentity(out Quaternion q);
1783 
1784  [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 
1787  [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 
1790  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRandReal"), SuppressUnmanagedCodeSecurity]
1791  public static extern dReal RandReal();
1792 
1793  [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 
1796  [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 
1799  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromEulerAngles"), SuppressUnmanagedCodeSecurity]
1800  public static extern void RFromEulerAngles(out Matrix3 R, dReal phi, dReal theta, dReal psi);
1801 
1802  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRfromQ"), SuppressUnmanagedCodeSecurity]
1803  public static extern void RfromQ(out Matrix3 R, ref Quaternion q);
1804 
1805  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRFromZAxis"), SuppressUnmanagedCodeSecurity]
1806  public static extern void RFromZAxis(out Matrix3 R, dReal ax, dReal ay, dReal az);
1807 
1808  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dRSetIdentity"), SuppressUnmanagedCodeSecurity]
1809  public static extern void RSetIdentity(out Matrix3 R);
1810 
1811  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetValue"), SuppressUnmanagedCodeSecurity]
1812  public static extern void SetValue(out dReal a, int n);
1813 
1814  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSetZero"), SuppressUnmanagedCodeSecurity]
1815  public static extern void SetZero(out dReal a, int n);
1816 
1817  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSimpleSpaceCreate"), SuppressUnmanagedCodeSecurity]
1818  public static extern IntPtr SimpleSpaceCreate(IntPtr space);
1819 
1820  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSolveCholesky"), SuppressUnmanagedCodeSecurity]
1821  public static extern void SolveCholesky(ref dReal L, out dReal b, int n);
1822 
1823  [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 
1826  [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 
1829  [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 
1832  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceAdd"), SuppressUnmanagedCodeSecurity]
1833  public static extern void SpaceAdd(IntPtr space, IntPtr geom);
1834 
1835  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceLockQuery"), SuppressUnmanagedCodeSecurity]
1836  public static extern bool SpaceLockQuery(IntPtr space);
1837 
1838  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceClean"), SuppressUnmanagedCodeSecurity]
1839  public static extern void SpaceClean(IntPtr space);
1840 
1841  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide"), SuppressUnmanagedCodeSecurity]
1842  public static extern void SpaceCollide(IntPtr space, IntPtr data, NearCallback callback);
1843 
1844  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceCollide2"), SuppressUnmanagedCodeSecurity]
1845  public static extern void SpaceCollide2(IntPtr space1, IntPtr space2, IntPtr data, NearCallback callback);
1846 
1847  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceDestroy"), SuppressUnmanagedCodeSecurity]
1848  public static extern void SpaceDestroy(IntPtr space);
1849 
1850  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetCleanup"), SuppressUnmanagedCodeSecurity]
1851  public static extern bool SpaceGetCleanup(IntPtr space);
1852 
1853  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetNumGeoms"), SuppressUnmanagedCodeSecurity]
1854  public static extern int SpaceGetNumGeoms(IntPtr space);
1855 
1856  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetGeom"), SuppressUnmanagedCodeSecurity]
1857  public static extern IntPtr SpaceGetGeom(IntPtr space, int i);
1858 
1859  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceGetSublevel"), SuppressUnmanagedCodeSecurity]
1860  public static extern int SpaceGetSublevel(IntPtr space);
1861 
1862  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceQuery"), SuppressUnmanagedCodeSecurity]
1863  public static extern bool SpaceQuery(IntPtr space, IntPtr geom);
1864 
1865  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceRemove"), SuppressUnmanagedCodeSecurity]
1866  public static extern void SpaceRemove(IntPtr space, IntPtr geom);
1867 
1868  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetCleanup"), SuppressUnmanagedCodeSecurity]
1869  public static extern void SpaceSetCleanup(IntPtr space, bool mode);
1870 
1871  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSpaceSetSublevel"), SuppressUnmanagedCodeSecurity]
1872  public static extern void SpaceSetSublevel(IntPtr space, int sublevel);
1873 
1874  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dSweepAndPruneSpaceCreate"), SuppressUnmanagedCodeSecurity]
1875  public static extern IntPtr SweepAndPruneSpaceCreate(IntPtr space, int AxisOrder);
1876 
1877  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dVectorScale"), SuppressUnmanagedCodeSecurity]
1878  public static extern void VectorScale(out dReal a, ref dReal d, int n);
1879 
1880  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldCreate"), SuppressUnmanagedCodeSecurity]
1881  public static extern IntPtr WorldCreate();
1882 
1883  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldDestroy"), SuppressUnmanagedCodeSecurity]
1884  public static extern void WorldDestroy(IntPtr world);
1885 
1886  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity]
1887  public static extern int WorldGetAutoDisableAverageSamplesCount(IntPtr world);
1888 
1889  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
1890  public static extern dReal WorldGetAutoDisableAngularThreshold(IntPtr world);
1891 
1892  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
1893  public static extern bool WorldGetAutoDisableFlag(IntPtr world);
1894 
1895  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
1896  public static extern dReal WorldGetAutoDisableLinearThreshold(IntPtr world);
1897 
1898  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
1899  public static extern int WorldGetAutoDisableSteps(IntPtr world);
1900 
1901  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
1902  public static extern dReal WorldGetAutoDisableTime(IntPtr world);
1903 
1904  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity]
1905  public static extern int WorldGetAutoEnableDepthSF1(IntPtr world);
1906 
1907  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetCFM"), SuppressUnmanagedCodeSecurity]
1908  public static extern dReal WorldGetCFM(IntPtr world);
1909 
1910  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetERP"), SuppressUnmanagedCodeSecurity]
1911  public static extern dReal WorldGetERP(IntPtr world);
1912 
1913  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity]
1914  public static extern void WorldGetGravity(IntPtr world, out Vector3 gravity);
1915 
1916  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetGravity"), SuppressUnmanagedCodeSecurity]
1917  public static extern void WorldGetGravity(IntPtr world, out dReal X);
1918 
1919  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity]
1920  public static extern dReal WorldGetContactMaxCorrectingVel(IntPtr world);
1921 
1922  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity]
1923  public static extern dReal WorldGetContactSurfaceLayer(IntPtr world);
1924 
1925  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDamping"), SuppressUnmanagedCodeSecurity]
1926  public static extern dReal WorldGetAngularDamping(IntPtr world);
1927 
1928  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
1929  public static extern dReal WorldGetAngularDampingThreshold(IntPtr world);
1930 
1931  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDamping"), SuppressUnmanagedCodeSecurity]
1932  public static extern dReal WorldGetLinearDamping(IntPtr world);
1933 
1934  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
1935  public static extern dReal WorldGetLinearDampingThreshold(IntPtr world);
1936 
1937  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity]
1938  public static extern int WorldGetQuickStepNumIterations(IntPtr world);
1939 
1940  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetQuickStepW"), SuppressUnmanagedCodeSecurity]
1941  public static extern dReal WorldGetQuickStepW(IntPtr world);
1942 
1943  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldGetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity]
1944  public static extern dReal WorldGetMaxAngularSpeed(IntPtr world);
1945 
1946  [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 
1949  [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 
1952  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldQuickStep"), SuppressUnmanagedCodeSecurity]
1953  public static extern void WorldQuickStep(IntPtr world, dReal stepsize);
1954 
1955  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDamping"), SuppressUnmanagedCodeSecurity]
1956  public static extern void WorldSetAngularDamping(IntPtr world, dReal scale);
1957 
1958  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAngularDampingThreshold"), SuppressUnmanagedCodeSecurity]
1959  public static extern void WorldSetAngularDampingThreshold(IntPtr world, dReal threshold);
1960 
1961  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAngularThreshold"), SuppressUnmanagedCodeSecurity]
1962  public static extern void WorldSetAutoDisableAngularThreshold(IntPtr world, dReal angular_threshold);
1963 
1964  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableAverageSamplesCount"), SuppressUnmanagedCodeSecurity]
1965  public static extern void WorldSetAutoDisableAverageSamplesCount(IntPtr world, int average_samples_count);
1966 
1967  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableFlag"), SuppressUnmanagedCodeSecurity]
1968  public static extern void WorldSetAutoDisableFlag(IntPtr world, bool do_auto_disable);
1969 
1970  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableLinearThreshold"), SuppressUnmanagedCodeSecurity]
1971  public static extern void WorldSetAutoDisableLinearThreshold(IntPtr world, dReal linear_threshold);
1972 
1973  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableSteps"), SuppressUnmanagedCodeSecurity]
1974  public static extern void WorldSetAutoDisableSteps(IntPtr world, int steps);
1975 
1976  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoDisableTime"), SuppressUnmanagedCodeSecurity]
1977  public static extern void WorldSetAutoDisableTime(IntPtr world, dReal time);
1978 
1979  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetAutoEnableDepthSF1"), SuppressUnmanagedCodeSecurity]
1980  public static extern void WorldSetAutoEnableDepthSF1(IntPtr world, int autoEnableDepth);
1981 
1982  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetCFM"), SuppressUnmanagedCodeSecurity]
1983  public static extern void WorldSetCFM(IntPtr world, dReal cfm);
1984 
1985  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactMaxCorrectingVel"), SuppressUnmanagedCodeSecurity]
1986  public static extern void WorldSetContactMaxCorrectingVel(IntPtr world, dReal vel);
1987 
1988  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetContactSurfaceLayer"), SuppressUnmanagedCodeSecurity]
1989  public static extern void WorldSetContactSurfaceLayer(IntPtr world, dReal depth);
1990 
1991  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetDamping"), SuppressUnmanagedCodeSecurity]
1992  public static extern void WorldSetDamping(IntPtr world, dReal linear_scale, dReal angular_scale);
1993 
1994  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetERP"), SuppressUnmanagedCodeSecurity]
1995  public static extern void WorldSetERP(IntPtr world, dReal erp);
1996 
1997  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetGravity"), SuppressUnmanagedCodeSecurity]
1998  public static extern void WorldSetGravity(IntPtr world, dReal x, dReal y, dReal z);
1999 
2000  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDamping"), SuppressUnmanagedCodeSecurity]
2001  public static extern void WorldSetLinearDamping(IntPtr world, dReal scale);
2002 
2003  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetLinearDampingThreshold"), SuppressUnmanagedCodeSecurity]
2004  public static extern void WorldSetLinearDampingThreshold(IntPtr world, dReal threshold);
2005 
2006  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepNumIterations"), SuppressUnmanagedCodeSecurity]
2007  public static extern void WorldSetQuickStepNumIterations(IntPtr world, int num);
2008 
2009  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetQuickStepW"), SuppressUnmanagedCodeSecurity]
2010  public static extern void WorldSetQuickStepW(IntPtr world, dReal over_relaxation);
2011 
2012  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldSetMaxAngularSpeed"), SuppressUnmanagedCodeSecurity]
2013  public static extern void WorldSetMaxAngularSpeed(IntPtr world, dReal max_speed);
2014 
2015  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStep"), SuppressUnmanagedCodeSecurity]
2016  public static extern void WorldStep(IntPtr world, dReal stepsize);
2017 
2018  [DllImport("ode", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dWorldStepFast1"), SuppressUnmanagedCodeSecurity]
2019  public 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  }
2024 }
Matrix4(dReal m00, dReal m10, dReal m20, dReal m30, dReal m01, dReal m11, dReal m21, dReal m31, dReal m02, dReal m12, dReal m22, dReal m32, dReal m03, dReal m13, dReal m23, dReal m33)
Definition: ODEApi.cs:311
Vector3(dReal x, dReal y, dReal z)
Definition: ODEApi.cs:355
OpenMetaverse OMV
ContactGeom geom
Definition: ODEApi.cs:241
dReal MinX
Definition: ODEApi.cs:231
GetAABBFn aabb
Definition: ODEApi.cs:266
Vector4(dReal x, dReal y, dReal z, dReal w)
Definition: ODEApi.cs:367
Vector3 fdir1
Definition: ODEApi.cs:242
dReal MaxZ
Definition: ODEApi.cs:233
dReal mass
Definition: ODEApi.cs:285
dReal MaxY
Definition: ODEApi.cs:232
dReal MinZ
Definition: ODEApi.cs:233
System.Single dReal
Definition: ODEApi.cs:54
SurfaceParameters surface
Definition: ODEApi.cs:240
dReal MinY
Definition: ODEApi.cs:232
GetColliderFnFn collider
Definition: ODEApi.cs:265
Matrix3(dReal m00, dReal m10, dReal m20, dReal m01, dReal m11, dReal m21, dReal m02, dReal m12, dReal m22)
Definition: ODEApi.cs:294
AABBTestFn aabb_test
Definition: ODEApi.cs:267
static readonly int unmanagedSizeOf
Definition: ODEApi.cs:243
Vector4 c
Definition: ODEApi.cs:286
static readonly int unmanagedSizeOf
Definition: ODEApi.cs:258
dReal MaxX
Definition: ODEApi.cs:231
Matrix3 I
Definition: ODEApi.cs:287
GeomDtorFn dtor
Definition: ODEApi.cs:268