Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ode/ode-0.9/contrib/Ode.NET/Ode/Ode.cs @ 216

Last change on this file since 216 was 216, checked in by mathiask, 17 years ago

[Physik] add ode-0.9

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