源码分享站 - 分享有用的

DLL2PAS Delphi据DLL自动生成PAS 展示 ODEImport.pas源代码

返回 下载DLL2PAS Delphi据DLL自动生成PAS: 单独下载ODEImport.pas源代码 - 下载整个DLL2PAS Delphi据DLL自动生成PAS源代码 - 类型:.pas文件
  1. UNIT ODE;
  2. INTERFACE
  3. USES Classes, DLLLoader;
  4.  
  5.   TdReal = single;
  6.   PdReal = ^TdReal;
  7.  
  8.   // Pointers to internal ODE structures. These I haven't been able to reproduce
  9.   // in delphi, they're C++ classes.
  10.   TODEID = cardinal;
  11.   TdJointID = TODEID;
  12.   TdJointGroupID = TODEID;
  13.  
  14.   TdRealArray = array[0..15] of TdReal;
  15.   PdRealArray = ^TdRealArray;
  16.  
  17.   // typedef dReal dVector3[4];
  18.   // Q: Why isn't TdVector3 = array[0..2] of TdReal?
  19.   // A: Because of SIMD alignment.
  20.   TdVector3 = array[0..3] of TdReal;
  21.   PdVector3 = ^TdVector3;
  22. //download by http://www.bvbsoft.com
  23.   // typedef dReal dVector4[4];
  24.   TdVector4 = array[0..3] of TdReal;
  25.   PdVector4 = ^TdVector4;
  26.  
  27.   // typedef dReal dMatrix3[4*3];
  28.   TdMatrix3 = array[0..4*3-1] of TdReal;
  29.   PdMatrix3 = ^TdMatrix3;
  30.  
  31.   TdMatrix3_As3x4 = array[0..2, 0..3] of TdReal;
  32.   PdMatrix3_As3x4 = ^TdMatrix3_As3x4;
  33.  
  34.   // typedef dReal dMatrix4[4*4];
  35.   TdMatrix4 = array[0..4*4-1] of TdReal;
  36.   PdMatrix4 = ^TdMatrix4;
  37.  
  38.   // typedef dReal dMatrix6[8*6];
  39.   TdMatrix6 = array[0..8*6-1] of TdReal;
  40.   PdMatrix6 = ^TdMatrix6;
  41.  
  42.   // typedef dReal dQuaternion[4];
  43.   TdQuaternion = TdVector4;//array[0..3] of TdReal;
  44.   PdQuaternion = ^TdQuaternion;
  45.  
  46.   // No typedef for AABB
  47.   TdAABB = array[0..5] of TdReal;
  48.  
  49. (* Change: New Type added, syntax enforcement *)
  50.   TBodyFlags = Integer;
  51.  
  52. (* These consts now have defined types *)
  53. const
  54.   dxBodyFlagFiniteRotation: TBodyFlags = 1;               // use finite rotations
  55.   dxBodyFlagFiniteRotationAxis: TBodyFlags = 2; // use finite rotations only along axis
  56.   dxBodyDisabled: TBodyFlags = 4;                                 // body is disabled
  57.   dxBodyNoGravity: TBodyFlags = 8;              // body is not influenced by gravity
  58.  
  59. type
  60.   TdMass = record
  61.     mass : TdReal; // total mass of the rigid body
  62.     c : TdVector4; // center of gravity position in body frame (x,y,z)
  63.     I : TdMatrix3; // 3x3 inertia tensor in body frame, about POR
  64.   end;
  65.   PdMass = ^TdMass;
  66.  
  67.   PdxWorld = ^TdxWorld;
  68.  
  69.   PdObject = ^TdObject;
  70.   PPdObject = ^PdObject;
  71.   TdObject = record
  72.     World     : PdxWorld;  // world this object is in
  73.     next      : PdObject;       // next object of this type in list
  74.     tome      : PPdObject;      // pointer to previous object's next ptr
  75.     userdata  : pointer;                // user settable data
  76.     tag       : integer;                // used by dynamics algorithms
  77.   end;
  78.  
  79.   PdxBody = ^TdxBody;
  80.   TdxBody = record
  81.     BaseObject : TdObject;
  82.  
  83.     {$ifdef cSINGLE}
  84.     Padding : byte;
  85.     {$endif}
  86.  
  87.     firstjoint : TdJointID;     // list of attached joints
  88.     flags : integer;                      // some dxBodyFlagXXX flags
  89.     mass : TdMass;                          // mass parameters about POR
  90.     invI : TdMatrix3 ;            // inverse of mass.I
  91.     invMass : TdReal;               // 1 / mass.mass
  92.     pos : TdVector3;                      // position of POR (point of reference)
  93.     q : TdQuaternion;               // orientation quaternion
  94.     R : TdMatrix3;                          // rotation matrix, always corresponds to q
  95.     lvel,avel : TdVector3;      // linear and angular velocity of POR
  96.     facc,tacc : TdVector3 ;     // force and torque accululators
  97.     finite_rot_axis : TdVector3 ;       // finite rotation axis, unit length or 0=none
  98.   end;
  99.  
  100.   TBodyList = class(TList)
  101.   private
  102.     function GetItems(i: integer): PdxBody;
  103.     procedure SetItems(i: integer; const Value: PdxBody);
  104.   public
  105.     property Items[i : integer] : PdxBody read GetItems write SetItems; default;
  106.     procedure DeleteAllBodies;
  107.   end;
  108.  
  109.   TdxWorld = record //(TdBase)
  110.     firstbody : PdxBody;                // body linked list
  111.     firstjoint : TdJointID;     // joint linked list
  112.     nb,nj : integer;                      // number of bodies and joints in lists
  113.     gravity : TdVector3;                // gravity vector (m/s/s)
  114.     global_erp : TdReal;                // global error reduction parameter
  115.     global_cfm : TdReal;                // global costraint force mixing parameter
  116.   end;
  117.  
  118.   TdJointFeedback = record
  119.     f1 : TdVector3;       // force that joint applies to body 1
  120.     t1 : TdVector3;       // torque that joint applies to body 1
  121.     f2 : TdVector3;       // force that joint applies to body 2
  122.     t2 : TdVector3;       // torque that joint applies to body 2
  123.   end;
  124.  
  125.   PTdJointFeedback = ^TdJointFeedback;
  126.  
  127.   TdErrorType =
  128.     (d_ERR_UNKNOWN,
  129.      d_ERR_IASSERT,
  130.      d_ERR_UASSERT,
  131.      d_ERR_LCP { = 3//});
  132.  
  133.   TdJointTypeNumbers =
  134.     (dJointTypeNone,            // or "unknown"
  135.     dJointTypeBall,
  136.     dJointTypeHinge,
  137.     dJointTypeSlider,
  138.     dJointTypeContact,
  139.     dJointTypeHinge2,
  140.     dJointTypeFixed,
  141.     dJointTypeNull,
  142.     dJointTypeAMotor,
  143.     dJointTypePlane2D);
  144.  
  145.   TdAngularMotorModeNumbers =
  146.     (dAMotorUser,
  147.      dAMotorEuler);
  148.  
  149. (* Change: New Type added, syntax enforcement *)
  150.   type
  151.     TJointFlag = Integer;
  152.  
  153. (* These consts now have defined types *)
  154.   const
  155.     dJOINT_INGROUP: TJointFlag = 1;
  156.     dJOINT_REVERSE: TJointFlag = 2;
  157.     dJOINT_TWOBODIES: TJointFlag = 4;
  158.  
  159.   // Space constants
  160.   const
  161.     TYPE_SIMPLE = $bad;
  162.     TYPE_HASH = $babe;
  163.  
  164. //  TdContactType = (
  165. (* Change: New Type added, syntax enforcement *)
  166.   type
  167.     TdContactType = Integer;
  168.  
  169. (* These consts now have defined types *)
  170.   const
  171.     dContactMu2: TdContactType              = $0001;
  172.     dContactFDir1: TdContactType                = $0002;
  173.     dContactBounce: TdContactType       = $0004;
  174.     dContactSoftERP: TdContactType      = $0008;
  175.     dContactSoftCFM: TdContactType      = $0010;
  176.     dContactMotion1: TdContactType      = $0020;
  177.     dContactMotion2: TdContactType        = $0040;
  178.     dContactSlip1: TdContactType                  = $0080;
  179.     dContactSlip2: TdContactType                  = $0100;
  180.  
  181.     dContactApprox0: TdContactType        = $00000;
  182.     dContactApprox1_1: TdContactType    = $1000;
  183.     dContactApprox1_2: TdContactType    = $2000;
  184.     dContactApprox1: TdContactType        = $3000;
  185.  
  186. const
  187.   TRIMESH_FACE_NORMALS = 0;
  188.   TRIMESH_LAST_TRANSFORMATION = 1;
  189.  
  190. type
  191.   TdSurfaceParameters = record
  192.     // must always be defined
  193.     mode : cardinal;
  194.     mu : TdReal;
  195.  
  196.     // only defined if the corresponding flag is set in mode
  197.     mu2,
  198.     bounce,
  199.     bounce_vel,
  200.     soft_erp,
  201.     soft_cfm,
  202.     motion1,motion2,
  203.     slip1,slip2 : TdReal
  204.   end;
  205.  
  206.   PdxGeom = ^TdxGeom;
  207.  
  208.   TdContactGeom = record
  209.     pos : TdVector3;
  210.     normal : TdVector3;
  211.     depth : TdReal;
  212.     g1,g2 : PdxGeom;
  213.   end;
  214.  
  215.   PdContactGeom = ^TdContactGeom;
  216.  
  217.   TdContact = record
  218.     surface : TdSurfaceParameters;
  219.     geom : TdContactGeom;
  220.     fdir1 : TdVector3;
  221.   end;
  222.   PdContact = ^TdContact;
  223.  
  224.   // Collission callback structure
  225.   TdNearCallback = procedure(data : pointer; o1, o2 : PdxGeom); cdecl;
  226.  
  227.   TdColliderFn = function(o1, o2 : PdxGeom; flags : Integer;
  228.                   contact : PdContactGeom; skip : Integer) : Integer; cdecl;
  229.   TdGetColliderFnFn = function(num : Integer) : TdColliderFn; cdecl;
  230.   TdGetAABBFn = procedure(g : PdxGeom; var aabb : TdAABB); cdecl;
  231.   TdGeomDtorFn = procedure(o : PdxGeom); cdecl;
  232.   TdAABBTestFn = function(o1, o2 : PdxGeom; const aabb2 : TdAABB) : Integer; cdecl;
  233.  
  234.   TdGeomClass = record
  235.     bytes : integer;                 // extra storage size
  236.     collider : TdGetColliderFnFn;    // collider function
  237.     aabb : TdGetAABBFn;       // bounding box function
  238.     aabb_test : TdAABBTestFn; // aabb tester, can be 0 for none
  239.     dtor : TdGeomDtorFn;      // destructor, can be 0 for none
  240.   end;
  241.  
  242.   PdGeomClass = ^TdGeomClass;
  243.  
  244.   TdxGeomClass = record
  245.     collider : TdGetColliderFnFn;    // collider function
  246.     aabb : TdGetAABBFn;              // bounding box function
  247.     aabb_test : TdAABBTestFn;        // aabb tester, can be 0 for none
  248.     dtor  : TdGeomDtorFn;             // destructor, can be 0 for none
  249.     num   : integer;             // class number
  250.     size  : integer;            // total size of object, including extra data area
  251.   end;
  252.  
  253.   PdxGeomClass = ^TdxGeomClass;
  254.  
  255.   TdxPosR = record
  256.     pos : TdVector3;
  257.     R : TdMatrix3;
  258.   end;
  259.  
  260.   TdxSpace = record
  261.     _Garbage : integer;
  262. // * Explaining _Garbage *
  263. // That member first appears in the TdxSpace record.  This is
  264. // because the dxSpace struct declares its functions as virtual.  Since the
  265. // class (a struct in C++ is considered a public class) now contains virtual
  266. // functions (functions in dxBase are not virtual), it needs a vtable to know
  267. // what functions to call in what class.  Visual C++ places the pointer to the
  268. // vtable at offset 0, which is what your _Garbage field caters for.
  269. //
  270. // Steve 'Sly' Williams
  271.  
  272.     SpaceType : integer;
  273.   end;
  274.  
  275.   PdxSpace = ^TdxSpace;
  276.  
  277.   TdRealHugeArray = array[0..65535] of TdReal;
  278.   PdRealHugeArray = ^TdRealHugeArray;
  279.  
  280.   // Tri-list collider
  281.   TdIntegerArray = array[0..65535] of Integer;
  282.   PdIntegerArray = ^TdIntegerArray;
  283.  
  284.   TdVector3Array = array[0..65535] of TdVector3;
  285.   PdVector3Array = ^TdVector3Array;
  286.  
  287.   TdxTriMeshData = record
  288.     unknown : byte; //
  289.   end;
  290.  
  291.   PdxTriMeshData = ^TdxTriMeshData;
  292.  
  293.   // Copies settings from TdxSpace, beacause pascal doeasn't do inheritance
  294.   // for records
  295.   TdxSimpleSpace = record
  296.     _Garbage : integer; // I don't know where this comes from!
  297.     SpaceType : integer;
  298.     First : PdxGeom;
  299.   end;
  300.  
  301.   PdxSimpleSpace = ^TdxSimpleSpace;
  302.  
  303.   // Copies settings from TdxSpace, beacause pascal doeasn't do inheritance
  304.   // for records
  305.   TdxHashSpace = record
  306.     _Garbage : integer; // I don't know where this comes from!
  307.     SpaceType : integer;
  308.     First : PdxGeom;
  309.     global_minlevel : integer;
  310.     global_maxlevel : integer;
  311.   end;
  312.  
  313.   PdxHashSpace = ^TdxHashSpace;
  314.  
  315.   TdGeomSpaceData = record
  316.     next : PdxGeom;
  317.   end;
  318.  
  319.   TdxGeom = record // a dGeomID is a pointer to this
  320.     _class : PdxGeomClass;      // class of this object
  321.  
  322.     {$ifdef cSINGLE}
  323.     Padding : array [0..4] of byte;
  324.     {$else}
  325.     Padding : array [0..2] of pointer;
  326.     {$endif}
  327.  
  328.     data : pointer;             // user data pointer
  329.     Body : PdxBody ;            // dynamics body associated with this object (if any)
  330.     Pos : PdVector3;            // pointer to object's position vector
  331.     R : PdMatrix3;              // pointer to object's rotation matrix
  332.     spaceid : PdxSpace; // the space this object is in
  333.     space : TdGeomSpaceData ;   // reserved for use by space this object is in
  334.     space_aabb : PdReal;        // ptr to aabb array held by dSpaceCollide() fn
  335.     // class-specific data follows here, with proper alignment.
  336.   end;
  337.  
  338.   TGeomList = class(TList)
  339.   private
  340.     function GetItems(i: integer): PdxGeom;
  341.     procedure SetItems(i: integer; const Value: PdxGeom);
  342.   public
  343.     property Items[i : integer] : PdxGeom read GetItems write SetItems; default;
  344.     procedure DeleteAllGeoms(DeleteDataAsObject : boolean=false);
  345.   end;
  346.  
  347.  
  348. //  TJointParams = (
  349.     // parameters for limits and motors
  350. (* Change: New Type added, sintax enforcement *)
  351.   type
  352.     TJointParams = Integer;
  353.  
  354. (* These consts now have defined types *)
  355.   const
  356.     _priv_dParamLoStop  = 0;
  357.     _priv_dParamLoStop2 = $100;
  358.     _priv_dParamLoStop3 = $200;
  359.   const
  360.     dParamLoStop: TJointParams = _priv_dParamLoStop;
  361.     dParamHiStop: TJointParams = _priv_dParamLoStop + 1;
  362.     dParamVel: TJointParams = _priv_dParamLoStop + 2;
  363.     dParamFMax: TJointParams = _priv_dParamLoStop + 3;
  364.     dParamFudgeFactor: TJointParams = _priv_dParamLoStop + 4;
  365.     dParamBounce: TJointParams = _priv_dParamLoStop + 5;
  366.     dParamCFM: TJointParams = _priv_dParamLoStop + 6;
  367.     dParamStopERP: TJointParams = _priv_dParamLoStop + 7;
  368.     dParamStopCFM: TJointParams = _priv_dParamLoStop + 8;
  369.     // parameters for suspension
  370.     dParamSuspensionERP: TJointParams = _priv_dParamLoStop + 9;
  371.     dParamSuspensionCFM: TJointParams = _priv_dParamLoStop + 10;
  372.  
  373.     // SECOND AXEL
  374.     // parameters for limits and motors
  375.     dParamLoStop2: TJointParams = _priv_dParamLoStop2;
  376.     dParamHiStop2: TJointParams = _priv_dParamLoStop2 + 1;
  377.     dParamVel2: TJointParams = _priv_dParamLoStop2 + 2;
  378.     dParamFMax2: TJointParams = _priv_dParamLoStop2 + 3;
  379.     dParamFudgeFactor2: TJointParams = _priv_dParamLoStop2 + 4;
  380.     dParamBounce2: TJointParams = _priv_dParamLoStop2 + 5;
  381.     dParamCFM2: TJointParams = _priv_dParamLoStop2 + 6;
  382.     dParamStopERP2: TJointParams = _priv_dParamLoStop2 + 7;
  383.     dParamStopCFM2: TJointParams = _priv_dParamLoStop2 + 8;
  384.     // parameters for suspension
  385.     dParamSuspensionERP2: TJointParams = _priv_dParamLoStop2 + 9;
  386.     dParamSuspensionCFM2: TJointParams = _priv_dParamLoStop2 + 10;
  387.  
  388.     // THIRD AXEL
  389.     // parameters for limits and motors
  390.     dParamLoStop3: TJointParams = _priv_dParamLoStop3;
  391.     dParamHiStop3: TJointParams = _priv_dParamLoStop3 + 1;
  392.     dParamVel3: TJointParams = _priv_dParamLoStop3 + 2;
  393.     dParamFMax3: TJointParams = _priv_dParamLoStop3 + 3;
  394.     dParamFudgeFactor3: TJointParams = _priv_dParamLoStop3 + 4;
  395.     dParamBounce3: TJointParams = _priv_dParamLoStop3 + 5;
  396.     dParamCFM3: TJointParams = _priv_dParamLoStop3 + 6;
  397.     dParamStopERP3: TJointParams = _priv_dParamLoStop3 + 7;
  398.     dParamStopCFM3: TJointParams = _priv_dParamLoStop3 + 8;
  399.     // parameters for suspension
  400.     dParamSuspensionERP3: TJointParams = _priv_dParamLoStop3 + 9;
  401.     dParamSuspensionCFM3: TJointParams = _priv_dParamLoStop3 + 10;
  402.  
  403.     // AGAIN!
  404.     // dParamGroup * 2 + dParamBounce = dParamBounce2
  405.     dParamGroup: TJointParams = $100;
  406.  
  407.  
  408.   // ***************************************************************************
  409.   // ***************************************************************************
  410.   // ***** WORLD
  411.  
  412.   //----- dWorld -----
  413.  
  414. var
  415.   dWorldCreate: function: PdxWorld; cdecl;
  416.   dWorldDestroy: procedure(const World: PdxWorld); cdecl;
  417.   dWorldGetCFM: function(const World: PdxWorld):  TdReal; cdecl;
  418.   dWorldGetERP: function(const World: PdxWorld):  TdReal; cdecl;
  419.   dWorldGetGravity: procedure(const World: PdxWorld; var gravity: TdVector3); cdecl;
  420.   dWorldImpulseToForce: procedure(const World: PdxWorld; const stepsize, ix, iy, iz: TdReal; var force: TdVector3); cdecl;
  421.   dWorldSetCFM: procedure(const World: PdxWorld; cfm: TdReal); cdecl;
  422.   dWorldSetERP: procedure(const World: PdxWorld; erp: TdReal); cdecl;
  423.   dWorldSetGravity: procedure(const World: PdxWorld; const x, y, z: TdReal); cdecl;
  424.   dWorldSetContactMaxCorrectingVel: procedure(const World: PdxWorld; const vel: TdReal); cdecl;
  425.   dWorldGetContactMaxCorrectingVel: function(const World: PdxWorld):  TdReal; cdecl;
  426.   dWorldSetContactSurfaceLayer: procedure(const World: PdxWorld; const depth: TdReal); cdecl;
  427.   dWorldGetContactSurfaceLayer: function(const World: PdxWorld):  TdReal; cdecl;
  428.  
  429.   // Step
  430.   dWorldStep: procedure(const World: PdxWorld; const stepsize: TdReal); cdecl;
  431.   // QuickStep
  432.   dWorldQuickStep: procedure(const World: PdxWorld; const stepsize: TdReal); cdecl;
  433.   dWorldSetQuickStepNumIterations: procedure(const World: PdxWorld; const num: integer); cdecl;
  434.   dWorldGetQuickStepNumIterations: function(const World: PdxWorld):  integer; cdecl;
  435.   dWorldSetQuickStepW: procedure(const World: PdxWorld; const param: TdReal); cdecl;
  436.   dWorldGetQuickStepW: function(const World: PdxWorld):  TdReal; cdecl;
  437.   // Stepfast
  438.   dWorldStepFast1: procedure(const World: PdxWorld; const stepsize: TdReal; const iterations: Integer); cdecl;
  439.   dWorldSetAutoEnableDepthSF1: procedure(const World: PdxWorld; autodepth: Integer); cdecl;
  440.   dWorldGetAutoEnableDepthSF1: function(const World: PdxWorld):  Integer; cdecl;
  441.   dCloseODE: procedure; cdecl;
  442.  
  443.   //----- dBody -----
  444.   dBodyAddForce: procedure(const Body: PdxBody; const fx, fy, fz: TdReal); cdecl;
  445.   dBodyAddForceAtPos: procedure(const Body: PdxBody; const fx, fy, fz, px, py, pz: TdReal); cdecl;
  446.   dBodyAddForceAtRelPos: procedure(const Body: PdxBody; const fx, fy, fz, px, py, pz: TdReal); cdecl;
  447.   dBodyAddRelForce: procedure(const Body: PdxBody; const fx, fy, fz: TdReal); cdecl;
  448.   dBodyAddRelForceAtPos: procedure(const Body: PdxBody; const fx, fy, fz, px, py, pz: TdReal); cdecl;
  449.   dBodyAddRelForceAtRelPos: procedure(const Body: PdxBody; const fx, fy, fz, px, py, pz: TdReal); cdecl;
  450.   dBodyAddRelTorque: procedure(const Body: PdxBody; const fx, fy, fz: TdReal); cdecl;
  451.   dBodyAddTorque: procedure(const Body: PdxBody; const fx, fy, fz: TdReal); cdecl;
  452.  
  453.   dBodyCreate: function(const World: PdxWorld):  PdxBody; cdecl;
  454.   dBodyDestroy: procedure(const Body: PdxBody); cdecl;
  455.   dBodyDisable: procedure(const Body: PdxBody); cdecl;
  456.   dBodyEnable: procedure(const Body: PdxBody); cdecl;
  457.   dBodyGetAngularVel: function(const Body: PdxBody):  PdVector3; cdecl;
  458.   dBodyGetFiniteRotationAxis: procedure(const Body: PdxBody; var result: TdVector3); cdecl;
  459.   dBodyGetFiniteRotationMode: function(const Body: PdxBody):  Integer; cdecl;
  460.   dBodyGetForce: function(const Body: PdxBody):  PdVector3; cdecl;
  461.   dBodyGetGravityMode: function(const Body: PdxBody):  Integer; cdecl;
  462.   dBodyGetJoint: function(const Body: PdxBody; const index: Integer):  TdJointID; cdecl;
  463.   dBodyGetLinearVel: function(const Body: PdxBody):  PdVector3; cdecl;
  464.   dBodyGetMass: procedure(const Body: PdxBody; var mass: TdMass); cdecl;
  465.   dBodyGetNumJoints: function(const Body: PdxBody):  Integer; cdecl;
  466.   dBodyGetPointVel: procedure(const Body: PdxBody; const px, py, pz: TdReal; var result: TdVector3); cdecl;
  467.   dBodyGetPosRelPoint: procedure(const Body: PdxBody; const px, py, pz: TdReal; var result: TdVector3); cdecl;
  468.   dBodyGetPosition: function(const Body: PdxBody):  PdVector3; cdecl;
  469.   dBodyGetQuaternion: function(const Body: PdxBody):  PdQuaternion; cdecl;
  470.   dBodyGetRelPointPos: procedure(const Body: PdxBody; const px, py, pz: TdReal; var result: TdVector3); cdecl;
  471.   dBodyGetRelPointVel: procedure(const Body: PdxBody; const px, py, pz: TdReal; var result: TdVector3); cdecl;
  472.   dBodyGetRotation: function(const Body: PdxBody):  PdMatrix3; cdecl;
  473.   dBodyGetTorque: function(const Body: PdxBody):  PdVector3; cdecl;
  474.   dBodyIsEnabled: function(const Body: PdxBody):  Integer; cdecl;
  475.   dBodySetAngularVel: procedure(const Body: PdxBody; const x, y, z: TdReal); cdecl;
  476.   dBodySetFiniteRotationAxis: procedure(const Body: PdxBody; const x, y, z: TdReal); cdecl;
  477.   dBodySetFiniteRotationMode: procedure(const Body: PdxBody; const mode: Integer); cdecl;
  478.   dBodySetForce: procedure(const Body: PdxBody; const x, y, z: TdReal); cdecl;
  479.   dBodySetGravityMode: procedure(const Body: PdxBody; const mode: Integer); cdecl;
  480.   dBodySetLinearVel: procedure(const Body: PdxBody; const x, y, z: TdReal); cdecl;
  481.   dBodySetMass: procedure(const Body: PdxBody; const mass: PdMass); cdecl;
  482.   dBodySetPosition: procedure(const Body: PdxBody; const x, y, z: TdReal); cdecl;
  483.   dBodySetQuaternion: procedure(const Body: PdxBody; const q: TdQuaternion); cdecl;
  484.   dBodySetRotation: procedure(const Body: PdxBody; const R: TdMatrix3); cdecl;
  485.   dBodySetTorque: procedure(const Body: PdxBody; const x, y, z: TdReal); cdecl;
  486.   dBodyVectorFromWorld: procedure(const Body: PdxBody; const px, py, pz: TdReal; var result: TdVector3); cdecl;
  487.   dBodyVectorToWorld: procedure(const Body: PdxBody; const px, py, pz: TdReal; var result: TdVector3); cdecl;
  488.   dBodySetData: procedure(const Body: PdxBody; data : pointer); cdecl;
  489.   dBodyGetData: function(const Body: PdxBody):  pointer; cdecl;
  490.  
  491.   //----- dJoint -----
  492.   dJointAttach: procedure(const dJointID : TdJointID; const body1, body2: PdxBody); cdecl;
  493.   dJointCreateAMotor: function(const World : PdxWorld; dJointGroupID : TdJointGroupID):  TdJointID; cdecl;
  494.   dJointCreateBall: function(const World : PdxWorld; dJointGroupID : TdJointGroupID):  TdJointID; cdecl;
  495.   dJointCreateContact: function(const World : PdxWorld; dJointGroupID : TdJointGroupID; const dContact: PdContact):  TdJointID; cdecl;
  496.  
  497.   dJointCreateFixed: function(const World : PdxWorld; dJointGroupID : TdJointGroupID):  TdJointID; cdecl;
  498.   dJointCreateHinge: function(const World : PdxWorld; dJointGroupID : TdJointGroupID):  TdJointID; cdecl;
  499.   dJointCreateHinge2: function(const World : PdxWorld; dJointGroupID : TdJointGroupID):  TdJointID; cdecl;
  500.   dJointCreateSlider: function(const World : PdxWorld; dJointGroupID : TdJointGroupID):  TdJointID; cdecl;
  501.   dJointCreateUniversal: function(const World : PdxWorld; dJointGroupID : TdJointGroupID):  TdJointID; cdecl;
  502.   dJointDestroy: procedure(const dJointID : TdJointID); cdecl;
  503.   dJointGetAMotorAngle: function(const dJointID : TdJointID; const anum: Integer):  TdReal; cdecl;
  504.   dJointGetAMotorAngleRate: function(const dJointID : TdJointID; const anum: Integer):  TdReal; cdecl;
  505.   dJointGetAMotorAxis: procedure(const dJointID : TdJointID; const anum: Integer; var result: TdVector3); cdecl;
  506.   dJointGetAMotorAxisRel: function(const dJointID : TdJointID; const anum: Integer):  Integer; cdecl;
  507.   dJointGetAMotorMode: function(const dJointID : TdJointID):  Integer; cdecl;
  508.   dJointGetAMotorNumAxes: function(const dJointID : TdJointID):  Integer; cdecl;
  509.   dJointGetAMotorParam: function(const dJointID : TdJointID; const parameter: TJointParams):  TdReal; cdecl;
  510.   dJointGetBallAnchor: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  511.   dJointGetBallAnchor2: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  512.   dJointGetBody: function(const dJointID : TdJointID; const index: Integer):  PdxBody; cdecl;
  513.   dJointGetHinge2Anchor: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  514.   dJointGetHinge2Anchor2: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  515.   dJointGetHinge2Angle1: function(const dJointID : TdJointID):  TdReal; cdecl;
  516.   dJointGetHinge2Angle1Rate: function(const dJointID : TdJointID):  TdReal; cdecl;
  517.   dJointGetHinge2Angle2Rate: function(const dJointID : TdJointID):  TdReal; cdecl;
  518.   dJointGetHinge2Axis1: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  519.   dJointGetHinge2Axis2: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  520.   dJointGetHinge2Param: function(const dJointID : TdJointID; const parameter: TJointParams):  TdReal; cdecl;
  521.   dJointGetHingeAnchor: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  522.   dJointGetHingeAnchor2: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  523.   dJointGetHingeAngle: function(const dJointID : TdJointID):  TdReal; cdecl;
  524.   dJointGetHingeAngleRate: function(const dJointID : TdJointID):  TdReal; cdecl;
  525.   dJointGetHingeAxis: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  526.   dJointGetHingeParam: function(const dJointID : TdJointID; const parameter: TJointParams):  TdReal; cdecl;
  527.   dJointGetSliderAxis: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  528.   dJointGetSliderParam: function(const dJointID : TdJointID; const parameter: TJointParams):  TdReal; cdecl;
  529.   dJointGetSliderPosition: function(const dJointID : TdJointID):  TdReal; cdecl;
  530.   dJointGetSliderPositionRate: function(const dJointID : TdJointID):  TdReal; cdecl;
  531.   dJointGetType: function(const dJointID : TdJointID):  Integer; cdecl;
  532.   dJointGetUniversalAnchor: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  533.   dJointGetUniversalAnchor2: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  534.   dJointGetUniversalAxis1: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  535.   dJointGetUniversalAxis2: procedure(const dJointID : TdJointID; var result: TdVector3); cdecl;
  536.   dJointGetUniversalParam: function(const dJointID : TdJointID; const parameter: TJointParams):  TdReal; cdecl;
  537.   dJointGetUniversalAngle1: function(const dJointID : TdJointID):  TdReal; cdecl;
  538.   dJointGetUniversalAngle2: function(const dJointID : TdJointID):  TdReal; cdecl;
  539.   dJointGetUniversalAngle1Rate: function(const dJointID : TdJointID):  TdReal; cdecl;
  540.   dJointGetUniversalAngle2Rate: function(const dJointID : TdJointID):  TdReal; cdecl;
  541.   dJointGroupCreate: function(const max_size: Integer):  TdJointGroupID; cdecl;
  542.   dJointGroupDestroy: procedure(const dJointGroupID : TdJointGroupID); cdecl;
  543.   dJointGroupEmpty: procedure(const dJointGroupID : TdJointGroupID); cdecl;
  544.   dJointSetAMotorAngle: procedure(const dJointID : TdJointID; const anum: Integer; const angle: TdReal); cdecl;
  545.   dJointSetAMotorAxis: procedure(const dJointID : TdJointID; const anum, rel: Integer; const x, y, z: TdReal); cdecl;
  546.   dJointSetAMotorMode: procedure(const dJointID : TdJointID; const mode: TdAngularMotorModeNumbers); cdecl;
  547.   dJointSetAMotorNumAxes: procedure(const dJointID : TdJointID; const num: Integer); cdecl;
  548.   dJointSetAMotorParam: procedure(const dJointID : TdJointID; const parameter: TJointParams; const value: TdReal); cdecl;
  549.   dJointSetBallAnchor: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  550.   dJointSetFixed: procedure(const dJointID : TdJointID); cdecl;
  551.   dJointSetHinge2Anchor: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  552.   dJointSetHinge2Axis1: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  553.   dJointSetHinge2Axis2: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  554.   dJointSetHinge2Param: procedure(const dJointID : TdJointID; const parameter: TJointParams; const value: TdReal); cdecl;
  555.   dJointSetHingeAnchor: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  556.   dJointSetHingeAxis: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  557.   dJointSetHingeParam: procedure(const dJointID : TdJointID; const parameter: TJointParams; const value: TdReal); cdecl;
  558.   dJointSetSliderAxis: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  559.   dJointSetSliderParam: procedure(const dJointID : TdJointID; const parameter: TJointParams; const value: TdReal); cdecl;
  560.   dJointSetUniversalAnchor: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  561.   dJointSetUniversalAxis1: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  562.   dJointSetUniversalAxis2: procedure(const dJointID : TdJointID; const x, y, z: TdReal); cdecl;
  563.   dJointSetUniversalParam: procedure(const dJointID : TdJointID; const parameter: TJointParams; const value: TdReal); cdecl;
  564.   dJointGetData: function(const dJointID : TdJointID):  pointer; cdecl;
  565.   dJointSetData: procedure(const dJointID : TdJointID; data : Pointer); cdecl;
  566.   dJointAddAMotorTorques: procedure(const dJointID : TdJointID; torque1, torque2, torque3: TdReal); cdecl;
  567.   dJointAddHinge2Torques: procedure(const dJointID : TdJointID; torque1, torque2: TdReal); cdecl;
  568.   dJointAddHingeTorque: procedure(const dJointID : TdJointID; torque: TdReal); cdecl;
  569.   dJointAddSliderForce: procedure(const dJointID : TdJointID; force: TdReal); cdecl;
  570.   dJointAddUniversalTorques: procedure(const dJointID : TdJointID; torque1, torque2: TdReal); cdecl;
  571.  
  572.   // callback routines for feedback of joints
  573.   dJointSetFeedback: procedure(const dJointID : TdJointID; Feedback : PTdJointFeedback); cdecl;
  574.   dJointGetFeedback: function(const dJointID : TdJointID):  PTdJointFeedback; cdecl;
  575. //  dJointCorrectHinge2: procedure(const dJointID : TdJointID); cdecl;
  576.  
  577.   //* Auto-disable functions */
  578.   dWorldGetAutoDisableLinearThreshold: function(const World: PdxWorld):  TdReal; cdecl;
  579.   dWorldSetAutoDisableLinearThreshold: procedure(const World: PdxWorld; linThreshold: TdReal); cdecl;
  580.   dWorldGetAutoDisableAngularThreshold: function(const World: PdxWorld):  TdReal; cdecl;
  581.   dWorldSetAutoDisableAngularThreshold: procedure(const World: PdxWorld; angThreshold: TdReal); cdecl;
  582.   dWorldGetAutoDisableSteps: function(const World: PdxWorld):  Integer; cdecl;
  583.   dWorldSetAutoDisableSteps: procedure(const World: PdxWorld; steps: Integer); cdecl;
  584.   dWorldGetAutoDisableTime: function(const World: PdxWorld):  TdReal; cdecl;
  585.   dWorldSetAutoDisableTime: procedure(const World: PdxWorld; time: TdReal); cdecl;
  586.   dWorldGetAutoDisableFlag: function(const World: PdxWorld):  Integer; cdecl;
  587.   dWorldSetAutoDisableFlag: procedure(const World: PdxWorld; do_auto_disable: Integer); cdecl;
  588.  
  589.   dBodyGetAutoDisableLinearThreshold: function(const Body: PdxBody):  TdReal; cdecl;
  590.   dBodySetAutoDisableLinearThreshold: procedure(const Body: PdxBody; linThreshold: TdReal); cdecl;
  591.   dBodyGetAutoDisableAngularThreshold: function(const Body: PdxBody):  TdReal; cdecl;
  592.   dBodySetAutoDisableAngularThreshold: procedure(const Body: PdxBody; angThreshold: TdReal); cdecl;
  593.   dBodyGetAutoDisableSteps: function(const Body: PdxBody):  Integer; cdecl;
  594.   dBodySetAutoDisableSteps: procedure(const Body: PdxBody; steps: Integer); cdecl;
  595.   dBodyGetAutoDisableTime: function(const Body: PdxBody):  TdReal; cdecl;
  596.   dBodySetAutoDisableTime: procedure(const Body: PdxBody; time: TdReal); cdecl;
  597.   dBodyGetAutoDisableFlag: function(const Body: PdxBody):  Integer; cdecl;
  598.   dBodySetAutoDisableFlag: procedure(const Body: PdxBody; do_auto_disable: Integer); cdecl;
  599.   dBodySetAutoDisableDefaults: procedure(const Body: PdxBody); cdecl;
  600.  
  601.   //----- dGeom -----
  602.   dGeomBoxGetLengths: procedure(const Geom : PdxGeom; var result: TdVector3); cdecl;
  603.   dGeomBoxSetLengths: procedure(const Geom : PdxGeom; const lx, ly, lz: TdReal); cdecl;
  604.   dGeomCCylinderGetParams: procedure(const Geom : PdxGeom; var radius, length: TdReal); cdecl;
  605.   dGeomCCylinderSetParams: procedure(const Geom : PdxGeom; const radius, length: TdReal); cdecl;
  606.   dGeomDestroy: procedure(const Geom : PdxGeom); cdecl;
  607.   dGeomGetAABB: procedure(const Geom : PdxGeom; var aabb: TdAABB); cdecl;
  608.   dGeomGetBody: function(const Geom : PdxGeom):  PdxBody; cdecl;
  609.   dGeomGetClass: function(const Geom : PdxGeom):  Integer; cdecl;
  610.   dGeomGetPosition: function(const Geom : PdxGeom):  PdVector3; cdecl;
  611.   dGeomGetRotation: function(const Geom : PdxGeom):  PdMatrix3; cdecl;
  612.   dGeomGetQuaternion: procedure(const Geom : PdxGeom; var result: TdQuaternion); cdecl;
  613.   dGeomGetSpace: function(const Geom : PdxGeom):  PdxSpace; cdecl;
  614.  
  615.   dGeomPlaneGetParams: procedure(const Geom : PdxGeom; var result: TdVector4); cdecl;
  616.   dGeomPlaneSetParams: procedure(const Geom : PdxGeom; const a, b, c, d: TdReal); cdecl;
  617.   dGeomSetBody: procedure(const Geom : PdxGeom; Body: PdxBody); cdecl;
  618.   dGeomSetPosition: procedure(const Geom : PdxGeom; const x, y, z: TdReal); cdecl;
  619.   dGeomSetRotation: procedure(const Geom : PdxGeom; const R: TdMatrix3); cdecl;
  620.   dGeomSetQuaternion: procedure(const Geom : PdxGeom; const TdQuaternion); cdecl;
  621.  
  622.   dGeomSphereGetRadius: function(const Geom : PdxGeom):  TdReal; cdecl;
  623.   dGeomSphereSetRadius: procedure(const Geom : PdxGeom; const radius: TdReal); cdecl;
  624.   dGeomTransformGetCleanup: function(const Geom : PdxGeom):  Integer; cdecl;
  625.   dGeomTransformGetGeom: function(const Geom : PdxGeom):  PdxGeom; cdecl;
  626.   dGeomTransformSetCleanup: procedure(const Geom : PdxGeom; const mode: Integer); cdecl;
  627.   dGeomTransformSetGeom: procedure(const Geom, obj: PdxGeom); cdecl;
  628.   dGeomSetData: procedure(const Geom : PdxGeom; data : pointer); cdecl;
  629.   dGeomGetData: function(const Geom : PdxGeom):  pointer; cdecl;
  630.   dGeomTransformSetInfo: procedure(const Geom : PdxGeom; mode : integer); cdecl;
  631.   dGeomTransformGetInfo: function(const Geom : PdxGeom):  integer; cdecl;
  632.  
  633.   dGeomIsSpace: function(const Geom : PdxGeom):  integer; cdecl;
  634.   dGeomSetCategoryBits: procedure(const Geom : PdxGeom; bits : Cardinal); cdecl;
  635.   dGeomSetCollideBits: procedure(const Geom : PdxGeom; bits : Cardinal); cdecl;
  636.   dGeomGetCategoryBits: function(const Geom : PdxGeom):  cardinal; cdecl;
  637.   dGeomGetCollideBits: function(const Geom : PdxGeom):  cardinal; cdecl;
  638.   dGeomEnable: procedure(const Geom : PdxGeom); cdecl;
  639.   dGeomDisable: procedure(const Geom : PdxGeom); cdecl;
  640.   dGeomIsEnabled: function(const Geom : PdxGeom):  integer; cdecl;
  641.  
  642.   dGeomSpherePointDepth: function(const Geom : PdxGeom; const x,y,z : TdReal):  TdReal; cdecl;
  643.   dGeomBoxPointDepth: function(const Geom : PdxGeom; const x,y,z : TdReal):  TdReal; cdecl;
  644.   dGeomPlanePointDepth: function(const Geom : PdxGeom; const x,y,z : TdReal):  TdReal; cdecl;
  645.   dGeomCCylinderPointDepth: function(const Geom : PdxGeom; const x,y,z : TdReal):  TdReal; cdecl;
  646.  
  647.   // A strange fix, so the class ids can be updated
  648.   // ***************
  649.   function dCreateSphere(const Space : PdxSpace; const radius: TdReal): PdxGeom; cdecl;
  650.   function dCreateBox(const Space : PdxSpace; const lx, ly, lz: TdReal): PdxGeom; cdecl;
  651.   function dCreatePlane(const Space : PdxSpace; const a, b, c, d: TdReal): PdxGeom; cdecl;
  652.   function dCreateCCylinder(const Space : PdxSpace; const radius, length: TdReal): PdxGeom; cdecl;
  653.   function dCreateRay(const Space : PdxSpace; length: TdReal) : PdxGeom; cdecl;
  654.   function dCreateGeomTransform(const Space : PdxSpace): PdxGeom; cdecl;
  655.   function dCreateTriMesh(const Space : PdxSpace; Data: PdxTriMeshData; Callback, ArrayCallback, RayCallback: Pointer): PdxGeom; cdecl;
  656.  
  657.  
  658. var
  659.   EXT_dCreateSphere: function(const Space : PdxSpace; const radius: TdReal):  PdxGeom; cdecl;
  660.   EXT_dCreateBox: function(const Space : PdxSpace; const lx, ly, lz: TdReal):  PdxGeom; cdecl;
  661.   EXT_dCreatePlane: function(const Space : PdxSpace; const a, b, c, d: TdReal):  PdxGeom; cdecl;
  662.   EXT_dCreateCCylinder: function(const Space : PdxSpace; const radius, length: TdReal):  PdxGeom; cdecl;
  663.   EXT_dCreateRay: function(const Space : PdxSpace; length : TdReal):  PdxGeom; cdecl;
  664.   EXT_dCreateGeomTransform: function(const Space : PdxSpace):  PdxGeom; cdecl;
  665.   EXT_dCreateTriMesh: function(const Space : PdxSpace; Data: PdxTriMeshData; Callback, ArrayCallback, RayCallback: Pointer):  PdxGeom; cdecl;
  666.   // ***************
  667.  
  668.   //dRay
  669.   dGeomRaySetLength: procedure(const Geom : PdxGeom; length: TdReal); cdecl;
  670.   dGeomRayGetLength: function(const Geom : PdxGeom):  TdReal; cdecl;
  671.   dGeomRaySetClosestHit: procedure(const Geom : PdxGeom; closestHit: Integer); cdecl;
  672.   dGeomRayGetClosestHit: function(const Geom : PdxGeom):  Integer; cdecl;
  673.   dGeomRaySet: procedure(const Geom : PdxGeom; px, py, pz, dx, dy, dz: TdReal); cdecl;
  674.   dGeomRayGet: procedure(const Geom : PdxGeom; var start, dir: TdVector3); cdecl;
  675.  
  676.   dCreateGeomClass: function(const classptr : TdGeomClass):  Integer; cdecl;
  677.   dGeomGetClassData: function(o : PdxGeom):  Pointer; cdecl;
  678.   dCreateGeom: function(classnum : Integer):  PdxGeom; cdecl;
  679.  
  680.   //----- dTrilistCollider -----
  681.   dGeomTriMeshDataBuildSimple: procedure(g: PdxTriMeshData; Vertices: PdVector3Array; VertexCount: Integer; Indices: PdIntegerArray; IndexCount: Integer); cdecl;
  682.   dGeomTriMeshDataBuildDouble: procedure(g: PdxTriMeshData; Vertices: PdVector3Array; VertexStride, VertexCount: Integer; Indices: PdIntegerArray; IndexCount, TriStride: Integer); cdecl;
  683.   dGeomTriMeshDataBuildSingle: procedure(g: PdxTriMeshData; Vertices: PdVector3Array; VertexStride, VertexCount: Integer; Indices: PdIntegerArray; IndexCount, TriStride: Integer); cdecl;
  684.   dGeomTriMeshDataCreate: function: PdxTriMeshData; cdecl;
  685.   dGeomTriMeshDataDestroy: procedure(g: PdxTriMeshData); cdecl;
  686.   dGeomTriMeshGetTriangle: procedure(g: PdxGeom; Index: Integer; v0, v1, v2: PdVector3); cdecl;
  687.   dGeomTriMeshGetPoint: procedure(g: PdxGeom; Index: Integer; u, v: TdReal; result: TdVector3); cdecl;
  688.   dGeomTriMeshClearTCCache: procedure(g: PdxGeom); cdecl;
  689.   dGeomTriMeshEnableTC: procedure(g: PdxGeom; geomClass, enable: Integer); cdecl;
  690.   dGeomTriMeshIsTCEnabled: function(g: PdxGeom; geomClass: Integer):  Integer; cdecl;
  691.   dGeomTriMeshGetArrayCallback: function(g: PdxGeom):  Pointer; cdecl;
  692.   dGeomTriMeshGetCallback: function(g: PdxGeom):  Pointer; cdecl;
  693.   dGeomTriMeshGetRayCallback: function(g: PdxGeom):  Pointer; cdecl;
  694.   dGeomTriMeshSetArrayCallback: procedure(g: PdxGeom; ArrayCallback: Pointer); cdecl;
  695.   dGeomTriMeshSetCallback: procedure(g: PdxGeom; Callback: Pointer); cdecl;
  696.   dGeomTriMeshSetRayCallback: procedure(g: PdxGeom; RayCallback: Pointer); cdecl;
  697.   dGeomTriMeshSetData: procedure(g: PdxGeom; Data: PdxTriMeshData); cdecl;
  698.  
  699.   {MethodVariables}
  700.  
  701.   //----- dSpace -----
  702.   dSpaceAdd: procedure(const Space : PdxSpace; const Geom : PdxGeom); cdecl;
  703.   dSpaceDestroy: procedure(const Space: PdxSpace); cdecl;
  704.   dSpaceClean: procedure(const Space : PdxSpace); cdecl;
  705.   dSpaceQuery: function(const Space : PdxSpace; const Geom : PdxGeom):  Integer; cdecl;
  706.   dSpaceRemove: procedure(const Space : PdxSpace; const Geom : PdxGeom); cdecl;
  707.   dSimpleSpaceCreate: function(Space : PdxSpace):  PdxSpace; cdecl;
  708.   dHashSpaceCreate: function(Space : PdxSpace):  PdxSpace; cdecl;
  709.   dQuadTreeSpaceCreate: function(const Space : PdxSpace; const Center, Extents : TdVector3; const Depth : Integer):  PdxSpace; cdecl;
  710.   dHashSpaceSetLevels: procedure(const Space: PdxSpace; const minlevel, maxlevel: Integer); cdecl;
  711.   dHashSpaceGetLevels: procedure(const Space: PdxSpace; var minlevel, maxlevel: Integer); cdecl;
  712.   dInfiniteAABB: procedure(geom : PdxGeom; var aabb : TdAABB); cdecl;
  713.   dSpaceGetNumGeoms: function(const Space: PdxSpace):  integer; cdecl;
  714.   dSpaceGetGeom: function(const Space: PdxSpace; const i: Integer):  PdxGeom; cdecl;
  715.  
  716.   dSpaceSetCleanup: procedure(space : PdxSpace; const mode : integer); cdecl;
  717.   dSpaceGetCleanup: function(Space : PdxSpace):  integer; cdecl;
  718.  
  719.   //----- dMass -----
  720.   dMassAdd: procedure(var a,b : TdMass); cdecl;
  721.   dMassAdjust: procedure(var m: TdMass; newmass: TdReal); cdecl;
  722.   dMassRotate: procedure(var m: TdMass; var R: TdMatrix3); cdecl;
  723.   dMassSetBox: procedure(var m: TdMass; density, lx, ly, lz: TdReal); cdecl;
  724.   dMassSetBoxTotal: procedure(var m: TdMass; total_mass, lx, ly, lz: TdReal); cdecl;
  725.   dMassSetCylinder: procedure(var m: TdMass; density: TdReal; direction: Integer; radius, length: TdReal); cdecl;
  726.   dMassSetCylinderTotal: procedure(var m: TdMass; total_mass: TdReal; direction: Integer; radius, length: TdReal); cdecl;
  727.   dMassSetCappedCylinder: procedure(var m: TdMass; density: TdReal; direction: Integer; radius, length: TdReal); cdecl;
  728.   dMassSetCappedCylinderTotal: procedure(var m: TdMass; total_mass: TdReal; direction: Integer; radius, length: TdReal); cdecl;
  729.   dMassSetParameters: procedure(var m: TdMass; themass, cgx, cgy, cgz, I11, I22, I33, I12, I13, I23: TdReal); cdecl;
  730.   dMassSetSphere: procedure(var m: TdMass; density, radius: TdReal); cdecl;
  731.   dMassSetSphereTotal: procedure(var m: TdMass; total_mass, radius: TdReal); cdecl;
  732.   dMassSetZero: procedure(var m: TdMass); cdecl;
  733.   dMassTranslate: procedure(var m: TdMass; x, y, z: TdReal); cdecl;
  734.   procedure dMassSetCone(var m : TdMass; const density, radius, length : TdReal); cdecl;
  735.  
  736.   //----- Rotation.h -----
  737.  
  738. var
  739.   dQFromAxisAndAngle: procedure(var q : TdQuaternion; const ax, ay ,az, angle : TdReal); cdecl;
  740.   dRFromAxisAndAngle: procedure(var R : TdMatrix3; const ax, ay ,az, angle : TdReal); cdecl;
  741.   dRSetIdentity: procedure(var R : TdMatrix3); cdecl;
  742.   dQSetIdentity: procedure(var Q : TdQuaternion); cdecl;
  743.   dRFromEulerAngles: procedure(var R : TdMatrix3; const phi, theta, psi : TdReal); cdecl;
  744.   dRFrom2Axes: procedure(var R: TdMatrix3; const ax, ay, az, bx, by, bz : TdReal); cdecl;
  745.   dRFromZAxis: procedure(var R: TdMatrix3; const ax, ay, az : TdReal); cdecl;
  746.  
  747.   dMultiply0: procedure(const A : PdReal; const B, C : PdReal; p, q, r : integer); cdecl;
  748.   dMultiply1: procedure(const A : PdReal; const B, C : PdReal; p, q, r : integer); cdecl;
  749.   dMultiply2: procedure(const A : PdReal; const B, C : PdReal; p, q, r : integer); cdecl;
  750.   dQMultiply0: procedure(var qa: TdQuaternion; const qb, qc: TdQuaternion); cdecl;
  751.   dQMultiply1: procedure(var qa: TdQuaternion; const qb, qc: TdQuaternion); cdecl;
  752.   dQMultiply2: procedure(var qa: TdQuaternion; const qb, qc: TdQuaternion); cdecl;
  753.   dQMultiply3: procedure(var qa: TdQuaternion; const qb, qc: TdQuaternion); cdecl;
  754.   dRfromQ: procedure(var R : TdMatrix3; const q : TdQuaternion); cdecl;
  755.   dQfromR: procedure(var q : TdQuaternion; const R : TdMatrix3); cdecl;
  756.   dDQfromW: procedure(var dq : TdVector4; const w : TdVector3; const q: TdQuaternion); cdecl;
  757.  
  758.   //----- Math -----
  759.   dNormalize3: procedure(var a : TdVector3); cdecl;
  760.   dNormalize4: procedure(var a : TdVector4); cdecl;
  761.  
  762.   //----- Misc -----
  763.   dClosestLineSegmentPoints: procedure(const a1, a2, b1, b2 : TdVector3; var cp1, cp2 : TdVector3); cdecl;
  764.  
  765.   dBoxTouchesBox: function(const _p1 : TdVector3; const R1 : TdMatrix3; const side1 : TdVector3; const _p2 : TdVector3; const R2 : TdMatrix3; const side2 : TdVector3):  integer; cdecl;
  766.  
  767.   dMaxDifference: function(A, B : PdReal; n, m : integer):  TdReal; cdecl;
  768.   dMakeRandomVector: procedure(var n1 : TdVector3; a : integer; f : TdReal); cdecl;
  769.   dAreConnected: function(a, b : PdxBody):  integer; cdecl;
  770.   dAreConnectedExcluding: function(a, b : PdxBody; joint_type : TdJointTypeNumbers):  integer; cdecl;
  771.  
  772.   dCollide: function(o1, o2 : PdxGeom; flags : integer; var Contact : TdContactGeom; Skip : integer):  integer; cdecl;
  773.   dSpaceCollide: procedure(const Space : PdxSpace; data : pointer; callback : TdNearCallback); cdecl;
  774.   dSpaceCollide2: procedure(o1, o2 : PdxGeom; data : pointer; callback : TdNearCallback); cdecl;
  775.   dMakeRandomMatrix: procedure(A : PdRealArray; n, m : integer; range :  TdReal); cdecl;
  776.   dClearUpperTriangle: procedure(A : PdRealArray; n : integer); cdecl;
  777.   //function dMaxDifferenceLowerTriangle (A : PdRealArray;  var B : TdReal;  n : integer) : TdReal; cdecl; external {$IFDEF __GPC__}name 'dMaxDifferenceLowerTriangle'{$ELSE} ODEDLL{$ENDIF __GPC__};
  778.  
  779.   dRandGetSeed: function: Cardinal; cdecl;
  780.   dRandSetSeed: procedure(const s: Cardinal); cdecl;
  781.   dRandInt: function(const n: Integer):  Integer; cdecl;
  782.   dRandReal: function: TdReal; cdecl;
  783.   // return 1 if the random number generator is working.
  784.   dTestRand: function: Integer; cdecl;
  785.  
  786.   dTestMatrixComparison: procedure; cdecl;
  787.   dTestSolveLCP: procedure; cdecl;
  788.  
  789.  
  790. var
  791.   // These must be set up, so I catch the first time a user creates a new
  792.   // object and ask what the class number became. Very fancy... They should
  793.   // be exported from the dll, but how does one export integers from dlls?
  794.   dSphereClass : integer=-1;
  795.   dBoxClass : integer=-1;
  796.   dCCylinderClass : integer=-1;
  797.   dGeomTransformClass : integer=-1;
  798.   dPlaneClass : integer=-1;
  799.   dRayClass : integer=-1;
  800.   dGeomTransformGroupClass : integer=-1;
  801.   dTriMeshClass : integer=-1;
  802.  
  803.  
  804. Implementation
  805.  
  806.  
  807. function dCreateSphere(const Space : PdxSpace; const radius: TdReal): PdxGeom; cdecl;
  808. begin
  809.   result := EXT_dCreateSphere(Space, radius);
  810.   if dSphereClass=-1 then
  811.     dSphereClass := dGeomGetClass(result);
  812. end;
  813.  
  814. function dCreateBox(const Space : PdxSpace; const lx, ly, lz: TdReal): PdxGeom; cdecl;
  815. begin
  816.   result := EXT_dCreateBox(Space, lx, ly, lz);
  817.   if dBoxClass=-1 then
  818.     dBoxClass := dGeomGetClass(result);
  819. end;
  820.  
  821. function dCreatePlane(const Space : PdxSpace; const a, b, c, d: TdReal): PdxGeom; cdecl;
  822. begin
  823.   result := EXT_dCreatePlane(Space, a, b, c, d);
  824.   if dPlaneClass=-1 then
  825.     dPlaneClass := dGeomGetClass(result);
  826. end;
  827.  
  828. function dCreateCCylinder(const Space : PdxSpace; const radius, length: TdReal): PdxGeom; cdecl;
  829. begin
  830.   result := EXT_dCreateCCylinder(Space, radius, length);
  831.   if dCCylinderClass=-1 then
  832.     dCCylinderClass := dGeomGetClass(result);
  833. end;
  834.  
  835. procedure dMassSetCone(var m : TdMass; const density, radius, length : TdReal); cdecl;
  836. var
  837.   ms, Rsqr, Lsqr,
  838.   Ixx, Iyy, Izz : TdReal;
  839. begin
  840.   // Calculate Mass
  841.   Rsqr:=radius*radius;
  842.   Lsqr:=length*length;
  843.   ms:=Pi*Rsqr*length*density/3;
  844.  
  845.   // Calculate Mass Moments of Inertia about the Centroid
  846.   Ixx:=0.15*ms*Rsqr+0.0375*ms*Lsqr;
  847.   Iyy:=0.15*ms*Rsqr+0.0375*ms*Lsqr;
  848.   Izz:=0.3*ms*Rsqr;
  849.  
  850.   // Set the ODE Mass parameters
  851.   with m do begin
  852.     mass:=ms;
  853.     c[0]:=0; c[1]:=0; c[2]:=0.25*length;
  854.     I[0]:=Ixx; I[1]:=0;   I[2]:=0;    I[4]:=0;
  855.     I[4]:=0;   I[5]:=Iyy; I[6]:=0;    I[7]:=0;
  856.     I[8]:=0;   I[9]:=0;   I[10]:=Izz; I[11]:=0;
  857.   end;
  858. end;
  859.  
  860. function dCreateGeomTransform(const Space : PdxSpace): PdxGeom; cdecl;
  861. begin
  862.   result := EXT_dCreateGeomTransform(Space);
  863.   if dGeomTransformClass=-1 then
  864.     dGeomTransformClass := dGeomGetClass(result);
  865. end;
  866.  
  867. function dCreateCylinder(const Space : PdxSpace; r, lz : TdReal) : PdxGeom; cdecl;
  868. begin
  869.   result := EXT_dCreateCylinder(Space, r, lz);
  870.   if dCylinderClass=-1 then
  871.     dCylinderClass := dGeomGetClass(result);
  872. end;
  873.  
  874. function dCreateRay(const Space : PdxSpace; length : TdReal) : PdxGeom; cdecl;
  875. begin
  876.   result := EXT_dCreateRay(Space, length);
  877.   if dRayClass=-1 then
  878.     dRayClass := dGeomGetClass(result);
  879. end;
  880.  
  881. function dCreateTriMesh(const Space : PdxSpace; Data: PdxTriMeshData; Callback, ArrayCallback, RayCallback: Pointer): PdxGeom; cdecl;
  882. begin
  883.   result := EXT_dCreateTriMesh(Space, Data, Callback, ArrayCallback, RayCallback);
  884.   if dTriMeshClass=-1 then
  885.     dTriMeshClass := dGeomGetClass(result);
  886. end;
  887.  
  888. function InitODE(ADllName : PChar) : boolean;
  889. begin
  890.   if ADllName = '' then
  891.     ADllName := ODEDLL;
  892.  
  893.   IsODEInitialized := LoadModule( vODEHandle, ADllName );
  894.   result := IsODEInitialized;
  895.  
  896.   if IsODEInitialized then
  897.   begin
  898.   // These lines are auto-created
  899.   dWorldCreate := GetModuleSymbol( vODEHandle, 'dWorldCreate' );
  900.   dWorldDestroy := GetModuleSymbol( vODEHandle, 'dWorldDestroy' );
  901.   dWorldGetCFM := GetModuleSymbol( vODEHandle, 'dWorldGetCFM' );
  902.   dWorldGetERP := GetModuleSymbol( vODEHandle, 'dWorldGetERP' );
  903.   dWorldGetGravity := GetModuleSymbol( vODEHandle, 'dWorldGetGravity' );
  904.   dWorldImpulseToForce := GetModuleSymbol( vODEHandle, 'dWorldImpulseToForce' );
  905.   dWorldSetCFM := GetModuleSymbol( vODEHandle, 'dWorldSetCFM' );
  906.   dWorldSetERP := GetModuleSymbol( vODEHandle, 'dWorldSetERP' );
  907.   dWorldSetGravity := GetModuleSymbol( vODEHandle, 'dWorldSetGravity' );
  908.   dWorldSetContactMaxCorrectingVel := GetModuleSymbol( vODEHandle, 'dWorldSetContactMaxCorrectingVel' );
  909.   dWorldGetContactMaxCorrectingVel := GetModuleSymbol( vODEHandle, 'dWorldGetContactMaxCorrectingVel' );
  910.   dWorldSetContactSurfaceLayer := GetModuleSymbol( vODEHandle, 'dWorldSetContactSurfaceLayer' );
  911.   dWorldGetContactSurfaceLayer := GetModuleSymbol( vODEHandle, 'dWorldGetContactSurfaceLayer' );
  912.   dWorldStep := GetModuleSymbol( vODEHandle, 'dWorldStep' );
  913.   dWorldQuickStep := GetModuleSymbol( vODEHandle, 'dWorldQuickStep' );
  914.   dWorldSetQuickStepNumIterations := GetModuleSymbol( vODEHandle, 'dWorldSetQuickStepNumIterations' );
  915.   dWorldGetQuickStepNumIterations := GetModuleSymbol( vODEHandle, 'dWorldGetQuickStepNumIterations' );
  916.   dWorldSetQuickStepW := GetModuleSymbol( vODEHandle, 'dWorldSetQuickStepW' );
  917.   dWorldGetQuickStepW := GetModuleSymbol( vODEHandle, 'dWorldGetQuickStepW' );
  918.   dWorldStepFast1 := GetModuleSymbol( vODEHandle, 'dWorldStepFast1' );
  919.   dWorldSetAutoEnableDepthSF1 := GetModuleSymbol( vODEHandle, 'dWorldSetAutoEnableDepthSF1' );
  920.   dWorldGetAutoEnableDepthSF1 := GetModuleSymbol( vODEHandle, 'dWorldGetAutoEnableDepthSF1' );
  921.   dCloseODE := GetModuleSymbol( vODEHandle, 'dCloseODE' );
  922.   dBodyAddForce := GetModuleSymbol( vODEHandle, 'dBodyAddForce' );
  923.   dBodyAddForceAtPos := GetModuleSymbol( vODEHandle, 'dBodyAddForceAtPos' );
  924.   dBodyAddForceAtRelPos := GetModuleSymbol( vODEHandle, 'dBodyAddForceAtRelPos' );
  925.   dBodyAddRelForce := GetModuleSymbol( vODEHandle, 'dBodyAddRelForce' );
  926.   dBodyAddRelForceAtPos := GetModuleSymbol( vODEHandle, 'dBodyAddRelForceAtPos' );
  927.   dBodyAddRelForceAtRelPos := GetModuleSymbol( vODEHandle, 'dBodyAddRelForceAtRelPos' );
  928.   dBodyAddRelTorque := GetModuleSymbol( vODEHandle, 'dBodyAddRelTorque' );
  929.   dBodyAddTorque := GetModuleSymbol( vODEHandle, 'dBodyAddTorque' );
  930.   dBodyCreate := GetModuleSymbol( vODEHandle, 'dBodyCreate' );
  931.   dBodyDestroy := GetModuleSymbol( vODEHandle, 'dBodyDestroy' );
  932.   dBodyDisable := GetModuleSymbol( vODEHandle, 'dBodyDisable' );
  933.   dBodyEnable := GetModuleSymbol( vODEHandle, 'dBodyEnable' );
  934.   dBodyGetAngularVel := GetModuleSymbol( vODEHandle, 'dBodyGetAngularVel' );
  935.   dBodyGetFiniteRotationAxis := GetModuleSymbol( vODEHandle, 'dBodyGetFiniteRotationAxis' );
  936.   dBodyGetFiniteRotationMode := GetModuleSymbol( vODEHandle, 'dBodyGetFiniteRotationMode' );
  937.   dBodyGetForce := GetModuleSymbol( vODEHandle, 'dBodyGetForce' );
  938.   dBodyGetGravityMode := GetModuleSymbol( vODEHandle, 'dBodyGetGravityMode' );
  939.   dBodyGetJoint := GetModuleSymbol( vODEHandle, 'dBodyGetJoint' );
  940.   dBodyGetLinearVel := GetModuleSymbol( vODEHandle, 'dBodyGetLinearVel' );
  941.   dBodyGetMass := GetModuleSymbol( vODEHandle, 'dBodyGetMass' );
  942.   dBodyGetNumJoints := GetModuleSymbol( vODEHandle, 'dBodyGetNumJoints' );
  943.   dBodyGetPointVel := GetModuleSymbol( vODEHandle, 'dBodyGetPointVel' );
  944.   dBodyGetPosRelPoint := GetModuleSymbol( vODEHandle, 'dBodyGetPosRelPoint' );
  945.   dBodyGetPosition := GetModuleSymbol( vODEHandle, 'dBodyGetPosition' );
  946.   dBodyGetQuaternion := GetModuleSymbol( vODEHandle, 'dBodyGetQuaternion' );
  947.   dBodyGetRelPointPos := GetModuleSymbol( vODEHandle, 'dBodyGetRelPointPos' );
  948.   dBodyGetRelPointVel := GetModuleSymbol( vODEHandle, 'dBodyGetRelPointVel' );
  949.   dBodyGetRotation := GetModuleSymbol( vODEHandle, 'dBodyGetRotation' );
  950.   dBodyGetTorque := GetModuleSymbol( vODEHandle, 'dBodyGetTorque' );
  951.   dBodyIsEnabled := GetModuleSymbol( vODEHandle, 'dBodyIsEnabled' );
  952.   dBodySetAngularVel := GetModuleSymbol( vODEHandle, 'dBodySetAngularVel' );
  953.   dBodySetFiniteRotationAxis := GetModuleSymbol( vODEHandle, 'dBodySetFiniteRotationAxis' );
  954.   dBodySetFiniteRotationMode := GetModuleSymbol( vODEHandle, 'dBodySetFiniteRotationMode' );
  955.   dBodySetForce := GetModuleSymbol( vODEHandle, 'dBodySetForce' );
  956.   dBodySetGravityMode := GetModuleSymbol( vODEHandle, 'dBodySetGravityMode' );
  957.   dBodySetLinearVel := GetModuleSymbol( vODEHandle, 'dBodySetLinearVel' );
  958.   dBodySetMass := GetModuleSymbol( vODEHandle, 'dBodySetMass' );
  959.   dBodySetPosition := GetModuleSymbol( vODEHandle, 'dBodySetPosition' );
  960.   dBodySetQuaternion := GetModuleSymbol( vODEHandle, 'dBodySetQuaternion' );
  961.   dBodySetRotation := GetModuleSymbol( vODEHandle, 'dBodySetRotation' );
  962.   dBodySetTorque := GetModuleSymbol( vODEHandle, 'dBodySetTorque' );
  963.   dBodyVectorFromWorld := GetModuleSymbol( vODEHandle, 'dBodyVectorFromWorld' );
  964.   dBodyVectorToWorld := GetModuleSymbol( vODEHandle, 'dBodyVectorToWorld' );
  965.   dBodySetData := GetModuleSymbol( vODEHandle, 'dBodySetData' );
  966.   dBodyGetData := GetModuleSymbol( vODEHandle, 'dBodyGetData' );
  967.   dJointAttach := GetModuleSymbol( vODEHandle, 'dJointAttach' );
  968.   dJointCreateAMotor := GetModuleSymbol( vODEHandle, 'dJointCreateAMotor' );
  969.   dJointCreateBall := GetModuleSymbol( vODEHandle, 'dJointCreateBall' );
  970.   dJointCreateContact := GetModuleSymbol( vODEHandle, 'dJointCreateContact' );
  971.   dJointCreateFixed := GetModuleSymbol( vODEHandle, 'dJointCreateFixed' );
  972.   dJointCreateHinge := GetModuleSymbol( vODEHandle, 'dJointCreateHinge' );
  973.   dJointCreateHinge2 := GetModuleSymbol( vODEHandle, 'dJointCreateHinge2' );
  974.   dJointCreateSlider := GetModuleSymbol( vODEHandle, 'dJointCreateSlider' );
  975.   dJointCreateUniversal := GetModuleSymbol( vODEHandle, 'dJointCreateUniversal' );
  976. //  dJointCreatePlane2D := GetModuleSymbol( vODEHandle, 'dJointCreatePlane2D' );
  977.   dJointDestroy := GetModuleSymbol( vODEHandle, 'dJointDestroy' );
  978.   dJointGetAMotorAngle := GetModuleSymbol( vODEHandle, 'dJointGetAMotorAngle' );
  979.   dJointGetAMotorAngleRate := GetModuleSymbol( vODEHandle, 'dJointGetAMotorAngleRate' );
  980.   dJointGetAMotorAxis := GetModuleSymbol( vODEHandle, 'dJointGetAMotorAxis' );
  981.   dJointGetAMotorAxisRel := GetModuleSymbol( vODEHandle, 'dJointGetAMotorAxisRel' );
  982.   dJointGetAMotorMode := GetModuleSymbol( vODEHandle, 'dJointGetAMotorMode' );
  983.   dJointGetAMotorNumAxes := GetModuleSymbol( vODEHandle, 'dJointGetAMotorNumAxes' );
  984.   dJointGetAMotorParam := GetModuleSymbol( vODEHandle, 'dJointGetAMotorParam' );
  985.   dJointGetBallAnchor := GetModuleSymbol( vODEHandle, 'dJointGetBallAnchor' );
  986.   dJointGetBallAnchor2 := GetModuleSymbol( vODEHandle, 'dJointGetBallAnchor2' );
  987.   dJointGetBody := GetModuleSymbol( vODEHandle, 'dJointGetBody' );
  988.   dJointGetHinge2Anchor := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Anchor' );
  989.   dJointGetHinge2Anchor2 := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Anchor2' );
  990.   dJointGetHinge2Angle1 := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Angle1' );
  991.   dJointGetHinge2Angle1Rate := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Angle1Rate' );
  992.   dJointGetHinge2Angle2Rate := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Angle2Rate' );
  993.   dJointGetHinge2Axis1 := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Axis1' );
  994.   dJointGetHinge2Axis2 := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Axis2' );
  995.   dJointGetHinge2Param := GetModuleSymbol( vODEHandle, 'dJointGetHinge2Param' );
  996.   dJointGetHingeAnchor := GetModuleSymbol( vODEHandle, 'dJointGetHingeAnchor' );
  997.   dJointGetHingeAnchor2 := GetModuleSymbol( vODEHandle, 'dJointGetHingeAnchor2' );
  998.   dJointGetHingeAngle := GetModuleSymbol( vODEHandle, 'dJointGetHingeAngle' );
  999.   dJointGetHingeAngleRate := GetModuleSymbol( vODEHandle, 'dJointGetHingeAngleRate' );
  1000.   dJointGetHingeAxis := GetModuleSymbol( vODEHandle, 'dJointGetHingeAxis' );
  1001.   dJointGetHingeParam := GetModuleSymbol( vODEHandle, 'dJointGetHingeParam' );
  1002.   dJointGetSliderAxis := GetModuleSymbol( vODEHandle, 'dJointGetSliderAxis' );
  1003.   dJointGetSliderParam := GetModuleSymbol( vODEHandle, 'dJointGetSliderParam' );
  1004.   dJointGetSliderPosition := GetModuleSymbol( vODEHandle, 'dJointGetSliderPosition' );
  1005.   dJointGetSliderPositionRate := GetModuleSymbol( vODEHandle, 'dJointGetSliderPositionRate' );
  1006.   dJointGetType := GetModuleSymbol( vODEHandle, 'dJointGetType' );
  1007.   dJointGetUniversalAnchor := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAnchor' );
  1008.   dJointGetUniversalAnchor2 := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAnchor2' );
  1009.   dJointGetUniversalAxis1 := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAxis1' );
  1010.   dJointGetUniversalAxis2 := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAxis2' );
  1011.   dJointGetUniversalParam := GetModuleSymbol( vODEHandle, 'dJointGetUniversalParam' );
  1012.   dJointGetUniversalAngle1 := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAngle1' );
  1013.   dJointGetUniversalAngle2 := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAngle2' );
  1014.   dJointGetUniversalAngle1Rate := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAngle1Rate' );
  1015.   dJointGetUniversalAngle2Rate := GetModuleSymbol( vODEHandle, 'dJointGetUniversalAngle2Rate' );
  1016.   dJointGroupCreate := GetModuleSymbol( vODEHandle, 'dJointGroupCreate' );
  1017.   dJointGroupDestroy := GetModuleSymbol( vODEHandle, 'dJointGroupDestroy' );
  1018.   dJointGroupEmpty := GetModuleSymbol( vODEHandle, 'dJointGroupEmpty' );
  1019.   dJointSetAMotorAngle := GetModuleSymbol( vODEHandle, 'dJointSetAMotorAngle' );
  1020.   dJointSetAMotorAxis := GetModuleSymbol( vODEHandle, 'dJointSetAMotorAxis' );
  1021.   dJointSetAMotorMode := GetModuleSymbol( vODEHandle, 'dJointSetAMotorMode' );
  1022.   dJointSetAMotorNumAxes := GetModuleSymbol( vODEHandle, 'dJointSetAMotorNumAxes' );
  1023.   dJointSetAMotorParam := GetModuleSymbol( vODEHandle, 'dJointSetAMotorParam' );
  1024.   dJointSetBallAnchor := GetModuleSymbol( vODEHandle, 'dJointSetBallAnchor' );
  1025.   dJointSetFixed := GetModuleSymbol( vODEHandle, 'dJointSetFixed' );
  1026.   dJointSetHinge2Anchor := GetModuleSymbol( vODEHandle, 'dJointSetHinge2Anchor' );
  1027.   dJointSetHinge2Axis1 := GetModuleSymbol( vODEHandle, 'dJointSetHinge2Axis1' );
  1028.   dJointSetHinge2Axis2 := GetModuleSymbol( vODEHandle, 'dJointSetHinge2Axis2' );
  1029.   dJointSetHinge2Param := GetModuleSymbol( vODEHandle, 'dJointSetHinge2Param' );
  1030.   dJointSetHingeAnchor := GetModuleSymbol( vODEHandle, 'dJointSetHingeAnchor' );
  1031.   dJointSetHingeAxis := GetModuleSymbol( vODEHandle, 'dJointSetHingeAxis' );
  1032.   dJointSetHingeParam := GetModuleSymbol( vODEHandle, 'dJointSetHingeParam' );
  1033.   dJointSetSliderAxis := GetModuleSymbol( vODEHandle, 'dJointSetSliderAxis' );
  1034.   dJointSetSliderParam := GetModuleSymbol( vODEHandle, 'dJointSetSliderParam' );
  1035.   dJointSetUniversalAnchor := GetModuleSymbol( vODEHandle, 'dJointSetUniversalAnchor' );
  1036.   dJointSetUniversalAxis1 := GetModuleSymbol( vODEHandle, 'dJointSetUniversalAxis1' );
  1037.   dJointSetUniversalAxis2 := GetModuleSymbol( vODEHandle, 'dJointSetUniversalAxis2' );
  1038.   dJointSetUniversalParam := GetModuleSymbol( vODEHandle, 'dJointSetUniversalParam' );
  1039.   dJointGetData := GetModuleSymbol( vODEHandle, 'dJointGetData' );
  1040.   dJointSetData := GetModuleSymbol( vODEHandle, 'dJointSetData' );
  1041.   dJointAddAMotorTorques := GetModuleSymbol( vODEHandle, 'dJointAddAMotorTorques' );
  1042.   dJointAddHinge2Torques := GetModuleSymbol( vODEHandle, 'dJointAddHinge2Torques' );
  1043.   dJointAddHingeTorque := GetModuleSymbol( vODEHandle, 'dJointAddHingeTorque' );
  1044.   dJointAddSliderForce := GetModuleSymbol( vODEHandle, 'dJointAddSliderForce' );
  1045.   dJointAddUniversalTorques := GetModuleSymbol( vODEHandle, 'dJointAddUniversalTorques' );
  1046.   dJointSetFeedback := GetModuleSymbol( vODEHandle, 'dJointSetFeedback' );
  1047.   dJointGetFeedback := GetModuleSymbol( vODEHandle, 'dJointGetFeedback' );
  1048.   dWorldGetAutoDisableLinearThreshold := GetModuleSymbol( vODEHandle, 'dWorldGetAutoDisableLinearThreshold' );
  1049.   dWorldSetAutoDisableLinearThreshold := GetModuleSymbol( vODEHandle, 'dWorldSetAutoDisableLinearThreshold' );
  1050.   dWorldGetAutoDisableAngularThreshold := GetModuleSymbol( vODEHandle, 'dWorldGetAutoDisableAngularThreshold' );
  1051.   dWorldSetAutoDisableAngularThreshold := GetModuleSymbol( vODEHandle, 'dWorldSetAutoDisableAngularThreshold' );
  1052.   dWorldGetAutoDisableSteps := GetModuleSymbol( vODEHandle, 'dWorldGetAutoDisableSteps' );
  1053.   dWorldSetAutoDisableSteps := GetModuleSymbol( vODEHandle, 'dWorldSetAutoDisableSteps' );
  1054.   dWorldGetAutoDisableTime := GetModuleSymbol( vODEHandle, 'dWorldGetAutoDisableTime' );
  1055.   dWorldSetAutoDisableTime := GetModuleSymbol( vODEHandle, 'dWorldSetAutoDisableTime' );
  1056.   dWorldGetAutoDisableFlag := GetModuleSymbol( vODEHandle, 'dWorldGetAutoDisableFlag' );
  1057.   dWorldSetAutoDisableFlag := GetModuleSymbol( vODEHandle, 'dWorldSetAutoDisableFlag' );
  1058.   dBodyGetAutoDisableLinearThreshold := GetModuleSymbol( vODEHandle, 'dBodyGetAutoDisableLinearThreshold' );
  1059.   dBodySetAutoDisableLinearThreshold := GetModuleSymbol( vODEHandle, 'dBodySetAutoDisableLinearThreshold' );
  1060.   dBodyGetAutoDisableAngularThreshold := GetModuleSymbol( vODEHandle, 'dBodyGetAutoDisableAngularThreshold' );
  1061.   dBodySetAutoDisableAngularThreshold := GetModuleSymbol( vODEHandle, 'dBodySetAutoDisableAngularThreshold' );
  1062.   dBodyGetAutoDisableSteps := GetModuleSymbol( vODEHandle, 'dBodyGetAutoDisableSteps' );
  1063.   dBodySetAutoDisableSteps := GetModuleSymbol( vODEHandle, 'dBodySetAutoDisableSteps' );
  1064.   dBodyGetAutoDisableTime := GetModuleSymbol( vODEHandle, 'dBodyGetAutoDisableTime' );
  1065.   dBodySetAutoDisableTime := GetModuleSymbol( vODEHandle, 'dBodySetAutoDisableTime' );
  1066.   dBodyGetAutoDisableFlag := GetModuleSymbol( vODEHandle, 'dBodyGetAutoDisableFlag' );
  1067.   dBodySetAutoDisableFlag := GetModuleSymbol( vODEHandle, 'dBodySetAutoDisableFlag' );
  1068.   dBodySetAutoDisableDefaults := GetModuleSymbol( vODEHandle, 'dBodySetAutoDisableDefaults' );
  1069.   dGeomBoxGetLengths := GetModuleSymbol( vODEHandle, 'dGeomBoxGetLengths' );
  1070.   dGeomBoxSetLengths := GetModuleSymbol( vODEHandle, 'dGeomBoxSetLengths' );
  1071.   dGeomCCylinderGetParams := GetModuleSymbol( vODEHandle, 'dGeomCCylinderGetParams' );
  1072.   dGeomCCylinderSetParams := GetModuleSymbol( vODEHandle, 'dGeomCCylinderSetParams' );
  1073.   dGeomDestroy := GetModuleSymbol( vODEHandle, 'dGeomDestroy' );
  1074.   dGeomGetAABB := GetModuleSymbol( vODEHandle, 'dGeomGetAABB' );
  1075.   dGeomGetBody := GetModuleSymbol( vODEHandle, 'dGeomGetBody' );
  1076.   dGeomGetClass := GetModuleSymbol( vODEHandle, 'dGeomGetClass' );
  1077.   dGeomGetPosition := GetModuleSymbol( vODEHandle, 'dGeomGetPosition' );
  1078.   dGeomGetRotation := GetModuleSymbol( vODEHandle, 'dGeomGetRotation' );
  1079.   dGeomGetQuaternion := GetModuleSymbol( vODEHandle, 'dGeomGetQuaternion' );
  1080.   dGeomGetSpace := GetModuleSymbol( vODEHandle, 'dGeomGetSpace' );
  1081.   dGeomPlaneGetParams := GetModuleSymbol( vODEHandle, 'dGeomPlaneGetParams' );
  1082.   dGeomPlaneSetParams := GetModuleSymbol( vODEHandle, 'dGeomPlaneSetParams' );
  1083.   dGeomSetBody := GetModuleSymbol( vODEHandle, 'dGeomSetBody' );
  1084.   dGeomSetPosition := GetModuleSymbol( vODEHandle, 'dGeomSetPosition' );
  1085.   dGeomSetRotation := GetModuleSymbol( vODEHandle, 'dGeomSetRotation' );
  1086.   dGeomSetQuaternion := GetModuleSymbol( vODEHandle, 'dGeomSetQuaternion' );
  1087.   dGeomSphereGetRadius := GetModuleSymbol( vODEHandle, 'dGeomSphereGetRadius' );
  1088.   dGeomSphereSetRadius := GetModuleSymbol( vODEHandle, 'dGeomSphereSetRadius' );
  1089.   dGeomTransformGetCleanup := GetModuleSymbol( vODEHandle, 'dGeomTransformGetCleanup' );
  1090.   dGeomTransformGetGeom := GetModuleSymbol( vODEHandle, 'dGeomTransformGetGeom' );
  1091.   dGeomTransformSetCleanup := GetModuleSymbol( vODEHandle, 'dGeomTransformSetCleanup' );
  1092.   dGeomTransformSetGeom := GetModuleSymbol( vODEHandle, 'dGeomTransformSetGeom' );
  1093.   dGeomSetData := GetModuleSymbol( vODEHandle, 'dGeomSetData' );
  1094.   dGeomGetData := GetModuleSymbol( vODEHandle, 'dGeomGetData' );
  1095.   dGeomTransformSetInfo := GetModuleSymbol( vODEHandle, 'dGeomTransformSetInfo' );
  1096.   dGeomTransformGetInfo := GetModuleSymbol( vODEHandle, 'dGeomTransformGetInfo' );
  1097.   dGeomIsSpace := GetModuleSymbol( vODEHandle, 'dGeomIsSpace' );
  1098.   dGeomSetCategoryBits := GetModuleSymbol( vODEHandle, 'dGeomSetCategoryBits' );
  1099.   dGeomSetCollideBits := GetModuleSymbol( vODEHandle, 'dGeomSetCollideBits' );
  1100.   dGeomGetCategoryBits := GetModuleSymbol( vODEHandle, 'dGeomGetCategoryBits' );
  1101.   dGeomGetCollideBits := GetModuleSymbol( vODEHandle, 'dGeomGetCollideBits' );
  1102.   dGeomEnable := GetModuleSymbol( vODEHandle, 'dGeomEnable' );
  1103.   dGeomDisable := GetModuleSymbol( vODEHandle, 'dGeomDisable' );
  1104.   dGeomIsEnabled := GetModuleSymbol( vODEHandle, 'dGeomIsEnabled' );
  1105.   dGeomSpherePointDepth := GetModuleSymbol( vODEHandle, 'dGeomSpherePointDepth' );
  1106.   dGeomBoxPointDepth := GetModuleSymbol( vODEHandle, 'dGeomBoxPointDepth' );
  1107.   dGeomPlanePointDepth := GetModuleSymbol( vODEHandle, 'dGeomPlanePointDepth' );
  1108.   dGeomCCylinderPointDepth := GetModuleSymbol( vODEHandle, 'dGeomCCylinderPointDepth' );
  1109.   EXT_dCreateSphere := GetModuleSymbol( vODEHandle, 'dCreateSphere' );
  1110.   EXT_dCreateBox := GetModuleSymbol( vODEHandle, 'dCreateBox' );
  1111.   EXT_dCreatePlane := GetModuleSymbol( vODEHandle, 'dCreatePlane' );
  1112.   EXT_dCreateCCylinder := GetModuleSymbol( vODEHandle, 'dCreateCCylinder' );
  1113.   EXT_dCreateRay := GetModuleSymbol( vODEHandle, 'dCreateRay' );
  1114.   EXT_dCreateGeomTransform := GetModuleSymbol( vODEHandle, 'dCreateGeomTransform' );
  1115.   EXT_dCreateTriMesh := GetModuleSymbol( vODEHandle, 'dCreateTriMesh' );
  1116.   dGeomRaySetLength := GetModuleSymbol( vODEHandle, 'dGeomRaySetLength' );
  1117.   dGeomRayGetLength := GetModuleSymbol( vODEHandle, 'dGeomRayGetLength' );
  1118.   dGeomRaySetClosestHit := GetModuleSymbol( vODEHandle, 'dGeomRaySetClosestHit' );
  1119.   dGeomRayGetClosestHit := GetModuleSymbol( vODEHandle, 'dGeomRayGetClosestHit' );
  1120.   dGeomRaySet := GetModuleSymbol( vODEHandle, 'dGeomRaySet' );
  1121.   dGeomRayGet := GetModuleSymbol( vODEHandle, 'dGeomRayGet' );
  1122.   dCreateGeomClass := GetModuleSymbol( vODEHandle, 'dCreateGeomClass' );
  1123.   dGeomGetClassData := GetModuleSymbol( vODEHandle, 'dGeomGetClassData' );
  1124.   dCreateGeom := GetModuleSymbol( vODEHandle, 'dCreateGeom' );
  1125.   dGeomTriMeshDataBuildSimple := GetModuleSymbol( vODEHandle, 'dGeomTriMeshDataBuildSimple' );
  1126.   dGeomTriMeshDataBuildDouble := GetModuleSymbol( vODEHandle, 'dGeomTriMeshDataBuildDouble' );
  1127.   dGeomTriMeshDataBuildSingle := GetModuleSymbol( vODEHandle, 'dGeomTriMeshDataBuildSingle' );
  1128.   dGeomTriMeshDataCreate := GetModuleSymbol( vODEHandle, 'dGeomTriMeshDataCreate' );
  1129.   dGeomTriMeshDataDestroy := GetModuleSymbol( vODEHandle, 'dGeomTriMeshDataDestroy' );
  1130.   dGeomTriMeshGetTriangle := GetModuleSymbol( vODEHandle, 'dGeomTriMeshGetTriangle' );
  1131.   dGeomTriMeshGetPoint := GetModuleSymbol( vODEHandle, 'dGeomTriMeshGetPoint' );
  1132.   dGeomTriMeshClearTCCache := GetModuleSymbol( vODEHandle, 'dGeomTriMeshClearTCCache' );
  1133.   dGeomTriMeshEnableTC := GetModuleSymbol( vODEHandle, 'dGeomTriMeshEnableTC' );
  1134.   dGeomTriMeshIsTCEnabled := GetModuleSymbol( vODEHandle, 'dGeomTriMeshIsTCEnabled' );
  1135.   dGeomTriMeshGetArrayCallback := GetModuleSymbol( vODEHandle, 'dGeomTriMeshGetArrayCallback' );
  1136.   dGeomTriMeshGetCallback := GetModuleSymbol( vODEHandle, 'dGeomTriMeshGetCallback' );
  1137.   dGeomTriMeshGetRayCallback := GetModuleSymbol( vODEHandle, 'dGeomTriMeshGetRayCallback' );
  1138.   dGeomTriMeshSetArrayCallback := GetModuleSymbol( vODEHandle, 'dGeomTriMeshSetArrayCallback' );
  1139.   dGeomTriMeshSetCallback := GetModuleSymbol( vODEHandle, 'dGeomTriMeshSetCallback' );
  1140.   dGeomTriMeshSetRayCallback := GetModuleSymbol( vODEHandle, 'dGeomTriMeshSetRayCallback' );
  1141.   dGeomTriMeshSetData := GetModuleSymbol( vODEHandle, 'dGeomTriMeshSetData' );
  1142.   dSpaceAdd := GetModuleSymbol( vODEHandle, 'dSpaceAdd' );
  1143.   dSpaceDestroy := GetModuleSymbol( vODEHandle, 'dSpaceDestroy' );
  1144.   dSpaceClean := GetModuleSymbol( vODEHandle, 'dSpaceClean' );
  1145.   dSpaceQuery := GetModuleSymbol( vODEHandle, 'dSpaceQuery' );
  1146.   dSpaceRemove := GetModuleSymbol( vODEHandle, 'dSpaceRemove' );
  1147.   dSimpleSpaceCreate := GetModuleSymbol( vODEHandle, 'dSimpleSpaceCreate' );
  1148.   dHashSpaceCreate := GetModuleSymbol( vODEHandle, 'dHashSpaceCreate' );
  1149.   dQuadTreeSpaceCreate := GetModuleSymbol( vODEHandle, 'dQuadTreeSpaceCreate' );
  1150.   dHashSpaceSetLevels := GetModuleSymbol( vODEHandle, 'dHashSpaceSetLevels' );
  1151.   dHashSpaceGetLevels := GetModuleSymbol( vODEHandle, 'dHashSpaceGetLevels' );
  1152.   dInfiniteAABB := GetModuleSymbol( vODEHandle, 'dInfiniteAABB' );
  1153.   dSpaceGetNumGeoms := GetModuleSymbol( vODEHandle, 'dSpaceGetNumGeoms' );
  1154.   dSpaceGetGeom := GetModuleSymbol( vODEHandle, 'dSpaceGetGeom' );
  1155.   dSpaceSetCleanup := GetModuleSymbol( vODEHandle, 'dSpaceSetCleanup' );
  1156.   dSpaceGetCleanup := GetModuleSymbol( vODEHandle, 'dSpaceGetCleanup' );
  1157.   dMassAdd := GetModuleSymbol( vODEHandle, 'dMassAdd' );
  1158.   dMassAdjust := GetModuleSymbol( vODEHandle, 'dMassAdjust' );
  1159.   dMassRotate := GetModuleSymbol( vODEHandle, 'dMassRotate' );
  1160.   dMassSetBox := GetModuleSymbol( vODEHandle, 'dMassSetBox' );
  1161.   dMassSetBoxTotal := GetModuleSymbol( vODEHandle, 'dMassSetBoxTotal' );
  1162.   dMassSetCylinder := GetModuleSymbol( vODEHandle, 'dMassSetCylinder' );
  1163.   dMassSetCylinderTotal := GetModuleSymbol( vODEHandle, 'dMassSetCylinderTotal' );
  1164.   dMassSetCappedCylinder := GetModuleSymbol( vODEHandle, 'dMassSetCappedCylinder' );
  1165.   dMassSetCappedCylinderTotal := GetModuleSymbol( vODEHandle, 'dMassSetCappedCylinderTotal' );
  1166.   dMassSetParameters := GetModuleSymbol( vODEHandle, 'dMassSetParameters' );
  1167.   dMassSetSphere := GetModuleSymbol( vODEHandle, 'dMassSetSphere' );
  1168.   dMassSetSphereTotal := GetModuleSymbol( vODEHandle, 'dMassSetSphereTotal' );
  1169.   dMassSetZero := GetModuleSymbol( vODEHandle, 'dMassSetZero' );
  1170.   dMassTranslate := GetModuleSymbol( vODEHandle, 'dMassTranslate' );
  1171.   dQFromAxisAndAngle := GetModuleSymbol( vODEHandle, 'dQFromAxisAndAngle' );
  1172.   dRFromAxisAndAngle := GetModuleSymbol( vODEHandle, 'dRFromAxisAndAngle' );
  1173.   dRSetIdentity := GetModuleSymbol( vODEHandle, 'dRSetIdentity' );
  1174.   dQSetIdentity := GetModuleSymbol( vODEHandle, 'dQSetIdentity' );
  1175.   dRFromEulerAngles := GetModuleSymbol( vODEHandle, 'dRFromEulerAngles' );
  1176.   dRFrom2Axes := GetModuleSymbol( vODEHandle, 'dRFrom2Axes' );
  1177.   dRFromZAxis := GetModuleSymbol( vODEHandle, 'dRFromZAxis' );
  1178.   dMultiply0 := GetModuleSymbol( vODEHandle, 'dMultiply0' );
  1179.   dMultiply1 := GetModuleSymbol( vODEHandle, 'dMultiply1' );
  1180.   dMultiply2 := GetModuleSymbol( vODEHandle, 'dMultiply2' );
  1181.   dQMultiply0 := GetModuleSymbol( vODEHandle, 'dQMultiply0' );
  1182.   dQMultiply1 := GetModuleSymbol( vODEHandle, 'dQMultiply1' );
  1183.   dQMultiply2 := GetModuleSymbol( vODEHandle, 'dQMultiply2' );
  1184.   dQMultiply3 := GetModuleSymbol( vODEHandle, 'dQMultiply3' );
  1185.   dRfromQ := GetModuleSymbol( vODEHandle, 'dRfromQ' );
  1186.   dQfromR := GetModuleSymbol( vODEHandle, 'dQfromR' );
  1187.   dDQfromW := GetModuleSymbol( vODEHandle, 'dDQfromW' );
  1188.   dNormalize3 := GetModuleSymbol( vODEHandle, 'dNormalize3' );
  1189.   dNormalize4 := GetModuleSymbol( vODEHandle, 'dNormalize4' );
  1190.   dClosestLineSegmentPoints := GetModuleSymbol( vODEHandle, 'dClosestLineSegmentPoints' );
  1191.   dBoxTouchesBox := GetModuleSymbol( vODEHandle, 'dBoxTouchesBox' );
  1192.   dMaxDifference := GetModuleSymbol( vODEHandle, 'dMaxDifference' );
  1193.   dMakeRandomVector := GetModuleSymbol( vODEHandle, 'dMakeRandomVector' );
  1194.   dAreConnected := GetModuleSymbol( vODEHandle, 'dAreConnected' );
  1195.   dAreConnectedExcluding := GetModuleSymbol( vODEHandle, 'dAreConnectedExcluding' );
  1196.   dCollide := GetModuleSymbol( vODEHandle, 'dCollide' );
  1197.   dSpaceCollide := GetModuleSymbol( vODEHandle, 'dSpaceCollide' );
  1198.   dSpaceCollide2 := GetModuleSymbol( vODEHandle, 'dSpaceCollide2' );
  1199.   dMakeRandomMatrix := GetModuleSymbol( vODEHandle, 'dMakeRandomMatrix' );
  1200.   dClearUpperTriangle := GetModuleSymbol( vODEHandle, 'dClearUpperTriangle' );
  1201.   dRandGetSeed := GetModuleSymbol( vODEHandle, 'dRandGetSeed' );
  1202.   dRandSetSeed := GetModuleSymbol( vODEHandle, 'dRandSetSeed' );
  1203.   dRandInt := GetModuleSymbol( vODEHandle, 'dRandInt' );
  1204.   dRandReal := GetModuleSymbol( vODEHandle, 'dRandReal' );
  1205.   dTestRand := GetModuleSymbol( vODEHandle, 'dTestRand' );
  1206.   dTestMatrixComparison := GetModuleSymbol( vODEHandle, 'dTestMatrixComparison' );
  1207.   dTestSolveLCP := GetModuleSymbol( vODEHandle, 'dTestSolveLCP' );
  1208.  
  1209.   end;
  1210. end;
  1211.  
单独下载 单独下载ODEImport.pas源码 - 下载整个DLL2PAS Delphi据DLL自动生成PAS源程序
相关源码/软件:
Delphi代码提交网页搜索 - Delphi代码提交网页搜索,直接控制百度、谷歌网页搜索。在Delphi窗体中的文字提交到网页原文本... 2012-02-18
Delphi利用ZPL II 打印条形码的例子 - Delphi斑马机打印,利用ZPL II 控制命令打印条形码的例子,可以打印中英文,数字,条码。在写... 2012-02-18
Delphi单机版业务考试系统 - Delphi + Access单机版的业务考试系统,具有以下功能:  1. 题库自动导入功能... 2012-02-18
Delphi开发的MSSQL管理工具源码 - Delphi开发的MSSQL管理工具源码,通过此工具可以对MSSQL进行绿色化控制,用纯Delphi... 2012-02-18
Delphi凌志汽车美容会员卡管理软件 - 凌志汽车美容会员卡软件v4.0 完整Delphi源代码.Delphi7+ADO+access架构,免... 2012-02-18
Delphi写的客运路单出票程序 - 基于Delphi的客运路单出票程序 通过车辆报班,前台售票后,提取一个车次当天的站内收入情况,并打印... 2012-02-18
Delphi触摸看板程序源代码 - Delphi触摸看板程序源代码 2012-02-18
Delphi换肤源码,不使用任何换肤控件 - delphi换肤入门实例,不使用任何换肤控件实现界面的按钮换肤。 2012-02-18
Delphi超市销售终端pos钱箱控制程序 - pos钱箱控制程序,是一个Delphi写的超市终端POS机控制程序,钱箱连接端口为COM口,在终端界... 2012-02-18
华为cmpp协议短信网关Delphi源码 - 华为cmpp协议短信网关Delphi源码,编译时若忽略控件的话,可以正常编译,但某些功能可能无法使用... 2012-02-18
Android项目源码简约的仿小米计算器 - 本项目是一个仿小米计算器的安卓项目源码不过只有基本的加减乘除计算功能,不能进行更复杂的科学计算。 2016-07-26
Android项目源码古诗词app应用源码 - 本项目是一个古诗词的app应用源码,后台使用的是基于thinkphp自己开发的webservice接... 2016-07-26
Android例子源码省市区3级联动菜单和数据库 - 本项目是一个省市区三级联动的小例子源码,有PopWindow和Fragment两种显示方式,自带全国... 2016-07-26
Android项目源码记事本+闹钟+定制情景模式 - 本项目是一个安卓记事本+闹钟设置+情景模式设置结合的安卓应用源码,应用比较适合横屏使用不适合竖屏使用... 2016-07-26
Android项目源码非常简洁的RockLite音乐播放器 - 本项目是一个老外写的非常简洁的音乐播放器项目源码,安装后会自动扫描过滤设备上的音乐文件并生成文件列表... 2016-07-26
Android例子源码高仿58城市列表CityList - 本项目是一个仿58同城城市列表特效,按a-z字母排序,支持触摸查找。核心功能借助第三方的pinyin... 2016-07-26
Android例子源码仿QQ5.0侧滑菜单 - 本项目是一个高仿QQ左侧菜单的小例子源码,主要使用了第三方的nineoldandroids类库实现 2016-07-26
Android例子源码给view加红色数字提醒角标 - 本项目是一个给view添加红色数字标签的小例子源码,这个开源项目提供了一种简便的方式,能够在运行期对... 2016-07-26
Android项目源码基于SQlite的学生管理系统 - 本项目是一个基于安卓的学生管理系统项目源码,除了可以学习sqlite和布局啥用没有,适合新手学习。项... 2016-07-26
Android项目源码QQ登录语音合成桌面控件天气预报 - 本项目是一个基于安卓的天气预报项目源码,实现了QQ登录,widget桌面控件,语音播报天气,定位当前... 2016-07-26

 返回顶部