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