Advertisement
Guest User

newton.pas

a guest
Mar 31st, 2017
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 89.27 KB | None | 0 0
  1. {                                                                            
  2.  Newton Game Dynamics Header Translation (Delphi/FreePascal)                  
  3.   Newton Version 3.14
  4.   Generated by NewtonDoc on 31/03/2017 16:17:44  
  5.  
  6.  
  7. ********************************************************************************
  8. *                                                                              *
  9. * Copyright (c) <2003-2016> <Julio Jerez, Newton Game Dynamics>                *
  10. *                                                                              *
  11. * This software is provided 'as-is', without any express or implied            *
  12. * warranty. In no event will the authors be held liable for any damages        *
  13. * arising from the use of this software.                                       *
  14. *                                                                              *
  15. * Permission is granted to anyone to use this software for any purpose,        *
  16. * including commercial applications, and to alter it and redistribute it       *
  17. * freely, subject to the following restrictions:                               *
  18. *                                                                              *
  19. * 1. The origin of this software must not be misrepresented; you must not      *
  20. * claim that you wrote the original software. If you use this software         *
  21. * in a product, an acknowledgment in the product documentation would be        *
  22. * appreciated but is not required.                                             *
  23. *                                                                              *
  24. * 2. Altered source versions must be plainly marked as such, and must not be   *
  25. * misrepresented as being the original software.                               *
  26. *                                                                              *
  27. * 3. This notice may not be removed or altered from any source distribution.   *
  28. *                                                                              *
  29. ********************************************************************************
  30. }
  31.  
  32. unit Newton;
  33.  
  34. {== Local Defines ==
  35.   __NONDELPHI__            - Enables compatiblity with compilers other than Delphi.
  36.                              Note that pascaldefines.inc and newtonpascal.inc
  37.                              are protected under the Mozilla Public License.
  38.  
  39.  == Conditionals ==
  40.  Declare the Following in Projects->Options->Conditionals to enable them:
  41.   __USE_DOUBLE_PRECISION__ - Toggles Double Precision. DLL used must match this setting.
  42.  
  43.  == Local Defines ==}
  44.  //{$DEFINE __NONDELPHI__}
  45.  
  46.  
  47.  
  48. {$IFDEF __NONDELPHI__}
  49.  {$I pascaldefines.inc}
  50. {$ENDIF}
  51.  
  52. interface
  53.  
  54. {$IFDEF __NONDELPHI__}
  55.  {$I newtonpascal.inc}
  56. {$ELSE}
  57.  const
  58.  {$IFDEF __USE_DOUBLE_PRECISION__}
  59.   NEWTON_API = 'newtond.dll';
  60.  {$ELSE}
  61.   NEWTON_API = 'newton.dll';
  62.  {$ENDIF}
  63. {$ENDIF}
  64.  
  65.  NEWTON_MAJOR_VERSION = 3;
  66.  NEWTON_MINOR_VERSION = 14;
  67.  NEWTON_BROADPHASE_DEFAULT = 0;
  68.  NEWTON_BROADPHASE_PERSINTENT = 1;
  69.  NEWTON_DYNAMIC_BODY = 0;
  70.  NEWTON_KINEMATIC_BODY = 1;
  71.  SERIALIZE_ID_SPHERE = 0;
  72.  SERIALIZE_ID_CAPSULE = 1;
  73.  SERIALIZE_ID_CYLINDER = 2;
  74.  SERIALIZE_ID_CHAMFERCYLINDER = 3;
  75.  SERIALIZE_ID_BOX = 4;
  76.  SERIALIZE_ID_CONE = 5;
  77.  SERIALIZE_ID_CONVEXHULL = 6;
  78.  SERIALIZE_ID_NULL = 7;
  79.  SERIALIZE_ID_COMPOUND = 8;
  80.  SERIALIZE_ID_TREE = 9;
  81.  SERIALIZE_ID_HEIGHTFIELD = 10;
  82.  SERIALIZE_ID_CLOTH_PATCH = 11;
  83.  SERIALIZE_ID_DEFORMABLE_SOLID = 12;
  84.  SERIALIZE_ID_USERMESH = 13;
  85.  SERIALIZE_ID_SCENE = 14;
  86.  SERIALIZE_ID_FRACTURED_COMPOUND = 15;
  87.  
  88. type
  89. {$IFDEF __USE_DOUBLE_PRECISION__}
  90.  dFloat                       = Double;
  91. {$ELSE}
  92.  dFloat                       = Single;
  93. {$ENDIF}
  94.  dFloat64                     = Double;
  95.  dLong                        = Int64;
  96.  
  97.  PdFloat                      = ^dFloat;
  98.  PdFloat64                    = ^dFloat64;
  99.  PdLong                       = ^dLong;
  100.  
  101.  NewtonMesh                   = ^Pointer;
  102.  NewtonBody                   = ^Pointer;
  103.  NewtonWorld                  = ^Pointer;
  104.  NewtonJoint                  = ^Pointer;
  105.  NewtonMaterial               = ^Pointer;
  106.  NewtonCollision              = ^Pointer;
  107. // NewtonSceneProxy           = ^Pointer;
  108.  //NewtonSkeletonContainer      = ^Pointer;
  109.  NewtonDeformableMeshSegment  = ^Pointer;
  110.  NewtonFracturedCompoundMeshPart = ^Pointer;
  111.  
  112.  NewtonSerializeHandle        = ^Pointer;
  113.  NewtonMeshHandle             = ^Pointer;
  114.  NewtonMeshVertex             = ^Pointer;
  115.  NewtonMeshPoint              = ^Pointer;
  116.  NewtonMeshEdge               = ^Pointer;
  117.  NewtonMeshFace               = ^Pointer;
  118.  NewtonListener               = ^Pointer;
  119.  
  120.  TNewtonBoxParam = Packed Record
  121.   m_x,
  122.   m_y,
  123.   m_z                    : dFloat;
  124.  end;
  125.  
  126.  TNewtonSphereParam = Packed Record
  127.   m_radio                : dFloat;
  128.  end;
  129.  
  130.  TNewtonCylinderParam = Packed Record
  131.   m_radio,
  132.   m_height               : dFloat;
  133.  end;
  134.  
  135.  TNewtonCapsuleParam = Packed Record
  136.   m_radio,
  137.   m_height               : dFloat;
  138.  end;
  139.  
  140.  TNewtonConeParam = Packed Record
  141.   m_radio,
  142.   m_height               : dFloat;
  143.  end;
  144.  
  145.  TNewtonTaperedCapsuleParam = Packed Record
  146.   m_radio0,
  147.   m_radio1,
  148.   m_height               : dFloat;
  149.  end;
  150.  
  151.  
  152.  TNewtonTaperedCylinderParam = Packed Record
  153.   m_radio0,
  154.   m_radio1,
  155.   m_height               : dFloat;
  156.  end;
  157.  
  158.  TNewtonChamferCylinderParam = Packed Record
  159.   m_radio,
  160.   m_height               : dFloat;
  161.  end;
  162.  
  163.  TNewtonConvexHullParam = Packed Record
  164.   m_vertexCount,
  165.   m_vertexStrideInBytes,
  166.   m_faceCount            : Integer;
  167.   m_vertex               : PdFloat;
  168.  end;
  169.  
  170.  
  171.  TNewtonCompoundCollisionParam = Packed Record
  172.   m_chidrenCount         : Integer;
  173.  end;
  174.  
  175.  
  176.  TNewtonCollisionTreeParam = Packed Record
  177.   m_vertexCount,
  178.   m_indexCount           : Integer;
  179.  end;
  180.  
  181.  TNewtonDeformableMeshParam = Packed Record
  182.   m_vertexCount,
  183.   m_triangleCount,
  184.   m_vertexStrideInBytes  : Integer;
  185.   m_indexList            : PWord;
  186.   m_vertexList           : PdFloat;
  187.  end;
  188.  
  189.  
  190.  TNewtonHeightFieldCollisionParam = Packed Record
  191.   m_width,
  192.   m_height,
  193.   m_gridsDiagonals,
  194.   m_elevationDataType     : Integer;// 0 = 32 bit floats, 1 = unsigned 16 bit integers
  195.   m_verticalScale         : dFloat;
  196.   m_horizonalScale_x : dFloat;
  197.   m_horizonalScale_z : dFloat;
  198.   m_horizonalDisplacementScale_x : dFloat;
  199.   m_horizonalDisplacementScale_z : dFloat;
  200.   m_vertialElevation      : Pointer;
  201.   m_horizotalDisplacement : PSmallInt;
  202.   m_atributes             : PShortInt;
  203.  end;
  204.  
  205.  TNewtonSceneCollisionParam = Packed Record
  206.   m_childrenProxyCount   : Integer;
  207.  end;
  208.  
  209.  TNewtonCollisionNullParam = packed record
  210.  end;
  211.  
  212.  NewtonCollisionInfoRecord = ^TNewtonCollisionInfoRecord;
  213.  TNewtonCollisionInfoRecord = Packed Record
  214.   m_offsetMatrix         : Array [0..3,0..3] of dFloat;
  215.   m_collisionType,    // tag id to identify the collision primitive
  216.   m_collisionUserID      : Integer;
  217.  
  218.   case Integer of
  219.        SERIALIZE_ID_SPHERE           : (sdSphere             : TNewtonSphereParam);
  220.        SERIALIZE_ID_CAPSULE          : (sdCapsule            : TNewtonCapsuleParam);
  221.        SERIALIZE_ID_CYLINDER         : (sdCylinder           : TNewtonCylinderParam);
  222.        SERIALIZE_ID_CHAMFERCYLINDER  : (sdChamferCylinder    : TNewtonChamferCylinderParam);
  223.        SERIALIZE_ID_BOX              : (sdBox                : TNewtonBoxParam);
  224.        SERIALIZE_ID_CONE             : (sdCone               : TNewtonConeParam);
  225.        SERIALIZE_ID_CONVEXHULL       : (sdConvexHull         : TNewtonConvexHullParam);
  226.        SERIALIZE_ID_NULL             : (sdNull               : TNewtonCollisionNullParam);
  227.        SERIALIZE_ID_COMPOUND         : (sdCompound           : TNewtonCompoundCollisionParam);
  228.        SERIALIZE_ID_TREE             : (sdTree               : TNewtonCollisionTreeParam);
  229.        SERIALIZE_ID_HEIGHTFIELD      : (sdHeightField        : TNewtonHeightFieldCollisionParam);
  230.        SERIALIZE_ID_DEFORMABLE_SOLID : (sdDeformableMesh     : TNewtonDeformableMeshParam);
  231.        SERIALIZE_ID_USERMESH         : (sdUserMesh           : Array[0..63] of dFloat);
  232.        SERIALIZE_ID_SCENE            : (sdSceneCollision     : TNewtonSceneCollisionParam);
  233.   end;
  234.  
  235.  NewtonJointRecord = ^TNewtonJointRecord;
  236.  TNewtonJointRecord = Packed Record
  237.   m_attachmenMatrix_0    : Array [0..3,0..3] of dFloat;
  238.   m_attachmenMatrix_1    : Array [0..3,0..3] of dFloat;
  239.   m_minLinearDof         : Array [0..2] of dFloat;
  240.   m_maxLinearDof         : Array [0..2] of dFloat;
  241.   m_minAngularDof        : Array [0..2] of dFloat;
  242.   m_maxAngularDof        : Array [0..2] of dFloat;
  243.   m_attachBody_0         : NewtonBody;
  244.   m_attachBody_1         : NewtonBody;
  245.   m_extraParameters      : Array [0..63] of dFloat;
  246.   m_bodiesCollisionOn    : Integer;
  247.   m_descriptionType      : Array [0..127] of ShortInt;
  248.  end;
  249.  
  250.  NewtonUserMeshCollisionCollideDesc = ^TNewtonUserMeshCollisionCollideDesc;
  251.  TNewtonUserMeshCollisionCollideDesc = Packed Record
  252.   m_boxP0,                                              // lower bounding box of intersection query in local space
  253.   m_boxP1,                                              // upper bounding box of intersection query in local space
  254.   m_m_boxDistanceTravel  : Array [0..3] of dFloat;      // max distance that box bpxP0 and boxP1 can travel on this timestep, used this for continue collision mode.
  255.                                                         // used this for continue collision mode
  256.   m_threadNumber,                                       // current thread executing this query
  257.   m_faceCount,                                          // the application should set here how many polygons intersect the query box
  258.   m_vertexStrideInBytes  : Integer;                     // the application should set here the size of each vertex
  259.   m_skinThickness        : dFloat;                      // this is the minimum skin separation specified by the material between these two colliding shapes
  260.   m_userData             : Pointer;                     // user data passed to the collision geometry at creation time
  261.  
  262.   m_objBody,                                            // pointer to the colliding body
  263.   m_polySoupBody         : NewtonBody;                  // pointer to the rigid body owner of this collision tree
  264.   m_objCollision,                                       // collision shape of the colliding body, (no necessarily the collision of m_objBody)
  265.   m_polySoupCollision    : NewtonCollision;             // collision shape of teh collsion tree, (no necessarily the collision of m_polySoupBody)
  266.  
  267.   m_vertex               : PdFloat;                     // the application should set here the pointer to the global vertex of the mesh.
  268.   m_faceIndexCount,                                     // the application should set here the pointer to the vertex count of each face.
  269.   m_faceVertexIndex      : PInteger;                    // the application should set here the pointer index array for each vertex on a face.
  270.                                                         // the format of a face is I0, I1, I2, I3, ..., M, N, E0, E1, E2, ..., A
  271.                                                         // I0, I1, I2, .. are the indices to the vertex, relative to m_vertex pointer
  272.                                                         // M is the index to the material sub shape id
  273.                                                         // N in the index to the vertex normal relative to m_vertex pointer
  274.                                                         // E0, E1, E2, ... are the indices of the the face normal that is shared to that face edge, when the edge does not share a face normal then the edge index is set to index N, which the index to the face normal
  275.                                                         // A is and estimate of the largest diagonal of the face, this used internally as a hint to improve floating point accuracy and algorithm performance.
  276.  end;
  277.  
  278.  NewtonWorldConvexCastReturnInfo = ^TNewtonWorldConvexCastReturnInfo;
  279.  TNewtonWorldConvexCastReturnInfo = Packed Record
  280.   m_point,                                              // collision point in global space
  281.   m_normal{,                                             // surface normal at collision point in global space
  282.   m_normalOnHitPoint}     : Array [0..3] of dFloat;      // surface normal at the surface of the hit body,
  283.                                                         // is the same as the normal calculated by a ray cast hitting the body at the hit point
  284.   m_contactID            : Integer;                     // collision ID at contact point
  285.   m_hitBody              : NewtonBody;                  // body hit at contact point
  286.   m_penetration          : dFloat;                      // contact penetration at collision point
  287.  end;
  288.  
  289.  NewtonUserMeshCollisionRayHitDesc = ^TNewtonUserMeshCollisionRayHitDesc;
  290.  TNewtonUserMeshCollisionRayHitDesc = Packed Record
  291.   m_p0,                                                 // ray origin in collision local space
  292.   m_p1,                                                 // ray destination in collision local space
  293.   m_normalOut            : Array [0..3] of dFloat;      // copy here the normal at the ray intersection
  294.   m_userIdOut            : dLong;                       // copy here a user defined id for further feedback
  295.   m_userData             : Pointer;                     // user data passed to the collision geometry at creation time
  296.  end;
  297.  
  298.  NewtonHingeSliderUpdateDesc = ^TNewtonHingeSliderUpdateDesc;
  299.  TNewtonHingeSliderUpdateDesc = Packed Record
  300.   m_accel,
  301.   m_minFriction,
  302.   m_maxFriction,
  303.   m_timestep             : dFloat;
  304.  end;
  305.  
  306.  NewtonUserContactPoint = ^TNewtonUserContactPoint;
  307.  TNewtonUserContactPoint = Packed Record
  308.   m_point,
  309.   m_normal               : Array [0..3] of dFloat;
  310.   m_shapeId0             : dLong;
  311.   m_shapeId1             : dLong;
  312.   m_penetration          : dFloat;
  313.   m_unused               : Array [0..2] of Integer;
  314.  end;
  315.  
  316.  // data structure for interfacing with NewtonMesh
  317.  NewtonMeshDoubleData = ^TNewtonMeshDoubleData;
  318.  TNewtonMeshDoubleData = Packed Record
  319.   m_data          : PdFloat64;
  320.   m_indexList     : PInteger;
  321.   m_strideInBytes : Integer;
  322.  end;
  323.  
  324.  NewtonMeshFloatData = ^TNewtonMeshFloatData;
  325.  TNewtonMeshFloatData = Packed Record
  326.   m_data          : PdFloat;
  327.   m_indexList     : PInteger;
  328.   m_strideInBytes : Integer;
  329.  end;
  330.  
  331.  NewtonMeshVertexFormat = ^TNewtonMeshVertexFormat;
  332.  TNewtonMeshVertexFormat = Packed Record
  333.   int m_faceCount : Integer;
  334.   m_faceIndexCount : PInteger;
  335.   m_faceMaterial : PInteger;
  336.   m_vertex : NewtonMeshDoubleData;
  337.   m_normal : NewtonMeshFloatData;
  338.   m_binormal : NewtonMeshFloatData;
  339.   m_uv0 : NewtonMeshFloatData;
  340.   m_uv1 : NewtonMeshFloatData;
  341.   m_vertexColor : NewtonMeshFloatData;
  342.  end;
  343.  
  344.  // Newton callback functions
  345.  NewtonAllocMemory                          = ^TNewtonAllocMemory;
  346.  TNewtonAllocMemory                          = function (sizeInBytes : Integer) : Pointer;
  347.  NewtonFreeMemory                           = ^TNewtonFreeMemory;
  348.  TNewtonFreeMemory                           = procedure (ptr : Pointer; sizeInBytes : Integer);
  349.  
  350.  NewtonWorldDestructorCallback              = ^TNewtonWorldDestructorCallback;
  351.  TNewtonWorldDestructorCallback              = procedure (const World : NewtonWorld);
  352.  
  353.  NewtonWorldListenerBodyDestroyCallback          = ^TNewtonWorldListenerBodyDestroyCallback;
  354.  TNewtonWorldListenerBodyDestroyCallback          = procedure (const World : NewtonWorld; listenerUserData : Pointer; body : NewtonBody);
  355.  
  356.  NewtonWorldUpdateListenerCallback          = ^TNewtonWorldUpdateListenerCallback;
  357.  TNewtonWorldUpdateListenerCallback          = procedure (const World : NewtonWorld; listenerUserData : Pointer; timestep : dFloat);
  358.  NewtonWorldDestroyListenerCallback         = ^TNewtonWorldDestroyListenerCallback;
  359.  TNewtonWorldDestroyListenerCallback         = procedure (const World : NewtonWorld; listenerUserData : Pointer);
  360.  
  361.  NewtonGetTimeInMicrosencondsCallback                = ^TNewtonGetTimeInMicrosencondsCallback;
  362.  TNewtonGetTimeInMicrosencondsCallback               = function () : dLong;
  363.  
  364.  NewtonSerializeCallback                    = ^TNewtonSerializeCallback;
  365.  TNewtonSerializeCallback                    = procedure (Handle : NewtonSerializeHandle; const buffer : Pointer; size : Integer);
  366.  NewtonDeserializeCallback                  = ^TNewtonDeserializeCallback;
  367.  TNewtonDeserializeCallback                  = procedure (Handle : NewtonSerializeHandle; buffer : Pointer; size : Integer);
  368.  
  369.  NewtonOnBodySerializationCallback          = ^TNewtonOnBodySerializationCallback;
  370.  TNewtonOnBodySerializationCallback          = procedure (body : NewtonBody; userData : Pointer; Callback : NewtonSerializeCallback; Handle : NewtonSerializeHandle);
  371.  NewtonOnBodyDeserializationCallback        = ^TNewtonOnBodyDeserializationCallback;
  372.  TNewtonOnBodyDeserializationCallback        = procedure (body : NewtonBody; userData : Pointer; Callback : NewtonDeserializeCallback; Handle : NewtonSerializeHandle);
  373.  
  374.  NewtonOnJointSerializationCallback         = ^TNewtonOnJointSerializationCallback;
  375.  TNewtonOnJointSerializationCallback         = procedure (joint : NewtonJoint; funct : NewtonSerializeCallback; serializeHandle : NewtonSerializeHandle);
  376.  
  377.  NewtonOnJointDeserializationCallback       = ^TNewtonOnJointDeserializationCallback;
  378.  TNewtonOnJointDeserializationCallback       = procedure (body0 : NewtonBody; body1 : NewtonBody; funct : NewtonDeserializeCallback; serializeHandle : NewtonSerializeHandle);
  379.  
  380.  NewtonOnUserCollisionSerializationCallback = ^TNewtonOnUserCollisionSerializationCallback;
  381.  TNewtonOnUserCollisionSerializationCallback = procedure (userData : Pointer; Callback : NewtonSerializeCallback; Handle : NewtonSerializeHandle);
  382.  
  383.  
  384.  // user collision callbacks
  385.  NewtonUserMeshCollisionDestroyCallback     = ^TNewtonUserMeshCollisionDestroyCallback;
  386.  TNewtonUserMeshCollisionDestroyCallback     = procedure (userData : Pointer);
  387.  NewtonUserMeshCollisionRayHitCallback      = ^TNewtonUserMeshCollisionRayHitCallback;
  388.  TNewtonUserMeshCollisionRayHitCallback      = function (lineDescData : NewtonUserMeshCollisionRayHitDesc) : dFloat;
  389.  NewtonUserMeshCollisionGetCollisionInfo    = ^TNewtonUserMeshCollisionGetCollisionInfo;
  390.  TNewtonUserMeshCollisionGetCollisionInfo    = procedure (userData : Pointer; infoRecord : NewtonCollisionInfoRecord);
  391.  NewtonUserMeshCollisionAABBTest            = ^TNewtonUserMeshCollisionAABBTest;
  392.  TNewtonUserMeshCollisionAABBTest            = function (userData : Pointer; const boxP0,boxP1 : PdFloat) : Integer;
  393.  NewtonUserMeshCollisionGetFacesInAABB      = ^TNewtonUserMeshCollisionGetFacesInAABB;
  394.  TNewtonUserMeshCollisionGetFacesInAABB      = function (userData : Pointer; const p0 : PdFloat; const p1 : PdFloat;
  395.                                                         const vertexArray : PdFloat; vertexCount : PInteger;
  396.                                                         vertexStrideInBytes : PInteger; const indexList : PInteger;
  397.                                                         maxIndexCount : Integer; const userDataList : PInteger) : Integer;
  398.  
  399.  NewtonUserMeshCollisionCollideCallback     = ^TNewtonUserMeshCollisionCollideCallback;
  400.  TNewtonUserMeshCollisionCollideCallback     = procedure (collideDescData : NewtonUserMeshCollisionCollideDesc; continueCollisionHandle : Pointer);
  401.  
  402.  NewtonTreeCollisionFaceCallback            = ^TNewtonTreeCollisionFaceCallback;
  403.  TNewtonTreeCollisionFaceCallback            = function (context : Pointer; polygon : PdFloat; strideInBytes : Integer; indexArray : PInteger; indexCount : Integer) : Integer;
  404.  
  405.  NewtonCollisionTreeRayCastCallback         = ^TNewtonCollisionTreeRayCastCallback;
  406.  TNewtonCollisionTreeRayCastCallback         = function (const body : NewtonBody; const treeCollision : NewtonCollision;
  407.                                                         interception : dFloat; normal : PdFloat; faceID : Integer;
  408.                                                         userData : Pointer) : dFloat;
  409.  NewtonHeightFieldRayCastCallback           = ^TNewtonHeightFieldRayCastCallback;
  410.  TNewtonHeightFieldRayCastCallback           = function (const body : NewtonBody; const heightFieldCollision : NewtonCollision;
  411.                                                         interception : dFloat; row, col : Integer; normal : PdFloat;
  412.                                                         faceID : Integer; userData : Pointer) : dFloat;
  413.  
  414.  NewtonCollisionCopyConstructionCallback    = ^TNewtonCollisionCopyConstructionCallback;
  415.  TNewtonCollisionCopyConstructionCallback    = procedure (newtonWorld : NewtonWorld; collision : NewtonCollision; sourceCollision : NewtonCollision);
  416.  
  417.  NewtonCollisionDestructorCallback          = ^TNewtonCollisionDestructorCallback;
  418.  TNewtonCollisionDestructorCallback          = procedure (newtonWorld : NewtonWorld; collision : NewtonCollision);
  419.  
  420.  // collision tree call back (obsoleted no recommended)
  421.  NewtonTreeCollisionCallback                = ^TNewtonTreeCollisionCallback;
  422.  TNewtonTreeCollisionCallback                = procedure (const bodyWithTreeCollision : NewtonBody; const body : NewtonBody;
  423.                                                          faceID : Integer; vertexCount : Integer; const vertexArray : PdFloat;
  424.                                                          vertexStrideInBytes : Integer);
  425.  
  426.  NewtonBodyDestructor                       = ^TNewtonBodyDestructor;
  427.  TNewtonBodyDestructor                       = procedure (const body : NewtonBody);
  428.  NewtonApplyForceAndTorque                  = ^TNewtonApplyForceAndTorque;
  429.  TNewtonApplyForceAndTorque                  = procedure (const body : NewtonBody; timestep : dFloat; threadIndex : Integer);
  430.  NewtonSetTransform                         = ^TNewtonSetTransform;
  431.  TNewtonSetTransform                         = procedure (const body : NewtonBody; const matrix : PdFloat; threadIndex : Integer);
  432.  
  433.  NewtonIslandUpdate                         = ^TNewtonIslandUpdate;
  434.  TNewtonIslandUpdate                         = function (const world : NewtonWorld; islandHandle : Pointer; bodyCount : Integer) : Integer;
  435.  
  436.  NewtonFractureCompoundCollisionOnEmitCompoundFractured   = ^TNewtonFractureCompoundCollisionOnEmitCompoundFractured;
  437.  TNewtonFractureCompoundCollisionOnEmitCompoundFractured   = procedure (fracturedBody : NewtonBody);
  438.  
  439.  NewtonFractureCompoundCollisionOnEmitChunk   = ^TNewtonFractureCompoundCollisionOnEmitChunk;
  440.  TNewtonFractureCompoundCollisionOnEmitChunk   = procedure (chunkBody : NewtonBody; fracturexChunkMesh : NewtonFracturedCompoundMeshPart; fracturedCompountCollision : NewtonCollision);
  441.  
  442.  NewtonFractureCompoundCollisionReconstructMainMeshCallBack   = ^TNewtonFractureCompoundCollisionReconstructMainMeshCallBack;
  443.  TNewtonFractureCompoundCollisionReconstructMainMeshCallBack   = procedure (body : NewtonBody; mainMesh : NewtonFracturedCompoundMeshPart; fracturedCompountCollision : NewtonCollision);
  444.  
  445.  NewtonWorldRayPrefilterCallback            = ^TNewtonWorldRayPrefilterCallback;
  446.  TNewtonWorldRayPrefilterCallback            = function (const body : NewtonBody; collision : NewtonCollision; userData : Pointer) : Cardinal;
  447.  NewtonWorldRayFilterCallback               = ^TNewtonWorldRayFilterCallback;
  448.  TNewtonWorldRayFilterCallback               = function (const body : NewtonBody; const shapeHit : NewtonCollision; const hitContact : PDFloat; const hitNormal : PdFloat; collisionID : dLong;
  449.                                                         userData : Pointer; intersectParam : dFloat) : dFloat;
  450.  
  451.  NewtonContactsProcess                      = ^TNewtonContactsProcess;
  452.  TNewtonContactsProcess                      = procedure (const contact : NewtonJoint; timestep : dFloat; threadIndex : Integer);
  453.  
  454.  NewtonOnAABBOverlap                        = ^TNewtonOnAABBOverlap;
  455.  TNewtonOnAABBOverlap                        = function (const material : NewtonMaterial; const body0 : NewtonBody; const body1 : NewtonBody;
  456.                                                         threadIndex : Integer) : Integer;
  457.  
  458.  NewtonOnCompoundSubCollisionAABBOverlap    = ^TNewtonOnCompoundSubCollisionAABBOverlap;
  459.  TNewtonOnCompoundSubCollisionAABBOverlap    = function (const material : NewtonMaterial; body0 : NewtonBody; collisionNode0 : Pointer; body1 : NewtonBody; collisionNode1 : Pointer; threadIndex : Integer) : Integer;
  460.  
  461.  NewtonOnContactGeneration                  = ^TNewtonOnContactGeneration;
  462.  TNewtonOnContactGeneration                  = function (const material : NewtonMaterial; body0 : NewtonBody; collision0 : Pointer; body1 : NewtonBody; collision1 : Pointer; contactBuffer : NewtonUserContactPoint; maxCount : Integer; threadIndex : Integer) : Integer;
  463.  
  464.  NewtonBodyIterator                         = ^TNewtonBodyIterator;
  465.  TNewtonBodyIterator                         = function (const body : NewtonBody; userData : Pointer) : Integer;
  466.  NewtonJointIterator                        = ^TNewtonJointIterator;
  467.  TNewtonJointIterator                        = procedure (const joint : NewtonJoint; userData : Pointer);
  468.  NewtonCollisionIterator                    = ^TNewtonCollisionIterator;
  469.  TNewtonCollisionIterator                    = procedure (userData : Pointer; vertexCount : Integer; const faceArray : PdFloat; faceId : Integer);
  470.  
  471.  NewtonBallCallback                         = ^TNewtonBallCallback;
  472.  TNewtonBallCallback                        = procedure (const ball : NewtonJoint; timestep : dFloat);
  473.  NewtonHingeCallback                        = ^TNewtonHingeCallback;
  474.  TNewtonHingeCallback                       = function (const hinge : NewtonJoint; desc : NewtonHingeSliderUpdateDesc) : Cardinal;
  475.  NewtonSliderCallback                       = ^TNewtonSliderCallback;
  476.  TNewtonSliderCallback                      = function (const slider : NewtonJoint; desc : NewtonHingeSliderUpdateDesc) : Cardinal;
  477.  NewtonUniversalCallback                    = ^TNewtonUniversalCallback;
  478.  TNewtonUniversalCallback                   = function (const universal : NewtonJoint; desc : NewtonHingeSliderUpdateDesc) : Cardinal;
  479.  NewtonCorkscrewCallback                    = ^TNewtonCorkscrewCallback;
  480.  TNewtonCorkscrewCallback                   = function (const corkscrew : NewtonJoint; desc : NewtonHingeSliderUpdateDesc) : Cardinal;
  481.  
  482.  NewtonUserBilateralCallback                = ^TNewtonUserBilateralCallback;
  483.  TNewtonUserBilateralCallback               = procedure (const userJoint : NewtonJoint; timestep : dFloat; threadIndex : Integer);
  484.  NewtonUserBilateralGetInfoCallback         = ^TNewtonUserBilateralGetInfoCallback;
  485.  TNewtonUserBilateralGetInfoCallback        = procedure (const userJoint : NewtonJoint; info : NewtonJointRecord);
  486.  
  487.  NewtonConstraintDestructor                 = ^TNewtonConstraintDestructor;
  488.  TNewtonConstraintDestructor                = procedure (const me : NewtonJoint);
  489.  
  490.  NewtonJobTask                              = ^TNewtonJobTask;
  491.  TNewtonJobTask                             = procedure (world : NewtonWorld; userData : Pointer; threadIndex : Integer);
  492.  
  493.  NewtonReportProgress                       = ^TNewtonReportProgress;
  494.  TNewtonReportProgress                      = function (progressNormalzedPercent : dFloat; userData : Pointer) : Integer;
  495.  
  496.  
  497. function NewtonWorldGetVersion() : Integer; cdecl; external NEWTON_API;
  498. function NewtonWorldFloatSize() : Integer; cdecl; external NEWTON_API;
  499. function NewtonGetMemoryUsed() : Integer; cdecl; external NEWTON_API;
  500. procedure NewtonSetMemorySystem(malloc : NewtonAllocMemory; free : NewtonFreeMemory); cdecl; external NEWTON_API;
  501. function NewtonCreate() : NewtonWorld; cdecl; external NEWTON_API;
  502. function NewtonCreateEx(stackSizeInMegabytes : Integer) : NewtonWorld; cdecl; external NEWTON_API;
  503. procedure NewtonDestroy(newtonWorld : NewtonWorld); cdecl; external NEWTON_API;
  504. procedure NewtonDestroyAllBodies(newtonWorld : NewtonWorld); cdecl; external NEWTON_API;
  505. function NewtonAlloc(sizeInBytes : Integer) : Pointer; cdecl; external NEWTON_API;
  506. procedure NewtonFree(ptr : Pointer); cdecl; external NEWTON_API;
  507. function NewtonGetStackSize(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  508. procedure NewtonSetStackSize(newtonWorld : NewtonWorld; size : Integer); cdecl; external NEWTON_API;
  509. function NewtonEnumerateDevices(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  510. function NewtonGetCurrentDevice(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  511. procedure NewtonSetCurrentDevice(newtonWorld : NewtonWorld; deviceIndex : Integer); cdecl; external NEWTON_API;
  512. procedure NewtonGetDeviceString(newtonWorld : NewtonWorld; deviceIndex : Integer; vendorString : Pchar; maxSize : Integer); cdecl; external NEWTON_API;
  513. function NewtonGetContactMergeTolerance(newtonWorld : NewtonWorld) : dFloat; cdecl; external NEWTON_API;
  514. procedure NewtonSetContactMergeTolerance(newtonWorld : NewtonWorld; tolerance : dFloat); cdecl; external NEWTON_API;
  515. procedure NewtonInvalidateCache(newtonWorld : NewtonWorld); cdecl; external NEWTON_API;
  516. procedure NewtonSetSolverModel(newtonWorld : NewtonWorld; model : Integer); cdecl; external NEWTON_API;
  517. function NewtonGetSolverModel(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  518. procedure NewtonSetSolverConvergenceQuality(newtonWorld : NewtonWorld; lowOrHigh : Integer); cdecl; external NEWTON_API;
  519. function NewtonGetSolverConvergenceQuality(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  520. procedure NewtonSetMultiThreadSolverOnSingleIsland(newtonWorld : NewtonWorld; mode : Integer); cdecl; external NEWTON_API;
  521. function NewtonGetMultiThreadSolverOnSingleIsland(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  522. procedure NewtonSetPerformanceClock(newtonWorld : NewtonWorld; callback : NewtonGetTimeInMicrosencondsCallback); cdecl; external NEWTON_API;
  523. function NewtonGetBroadphaseAlgorithm(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  524. procedure NewtonSelectBroadphaseAlgorithm(newtonWorld : NewtonWorld; algorithmType : Integer); cdecl; external NEWTON_API;
  525. procedure NewtonUpdate(newtonWorld : NewtonWorld; timestep : dFloat); cdecl; external NEWTON_API;
  526. procedure NewtonUpdateAsync(newtonWorld : NewtonWorld; timestep : dFloat); cdecl; external NEWTON_API;
  527. procedure NewtonWaitForUpdateToFinish(newtonWorld : NewtonWorld); cdecl; external NEWTON_API;
  528. function NewtonGetNumberOfSubsteps(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  529. procedure NewtonSetNumberOfSubsteps(newtonWorld : NewtonWorld; subSteps : Integer); cdecl; external NEWTON_API;
  530. function NewtonGetLastUpdateTime(newtonWorld : NewtonWorld) : dFloat; cdecl; external NEWTON_API;
  531. procedure NewtonSerializeToFile(newtonWorld : NewtonWorld; filename : Pchar; bodyCallback : NewtonOnBodySerializationCallback; bodyUserData : Pointer); cdecl; external NEWTON_API;
  532. procedure NewtonDeserializeFromFile(newtonWorld : NewtonWorld; filename : Pchar; bodyCallback : NewtonOnBodyDeserializationCallback; bodyUserData : Pointer); cdecl; external NEWTON_API;
  533. function NewtonFindSerializedBody(newtonWorld : NewtonWorld; bodySerializedID : Integer) : NewtonBody; cdecl; external NEWTON_API;
  534. procedure NewtonSetJointSerializationCallbacks(newtonWorld : NewtonWorld; serializeJoint : NewtonOnJointSerializationCallback; deserializeJoint : NewtonOnJointDeserializationCallback); cdecl; external NEWTON_API;
  535. procedure NewtonGetJointSerializationCallbacks(newtonWorld : NewtonWorld; serializeJoint : NewtonOnJointSerializationCallback; deserializeJoint : NewtonOnJointDeserializationCallback); cdecl; external NEWTON_API;
  536. procedure NewtonWorldCriticalSectionLock(newtonWorld : NewtonWorld; threadIndex : Integer); cdecl; external NEWTON_API;
  537. procedure NewtonWorldCriticalSectionUnlock(newtonWorld : NewtonWorld); cdecl; external NEWTON_API;
  538. procedure NewtonSetThreadsCount(newtonWorld : NewtonWorld; threads : Integer); cdecl; external NEWTON_API;
  539. function NewtonGetThreadsCount(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  540. function NewtonGetMaxThreadsCount(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  541. procedure NewtonDispachThreadJob(newtonWorld : NewtonWorld; task : NewtonJobTask; usedData : Pointer); cdecl; external NEWTON_API;
  542. procedure NewtonSyncThreadJobs(newtonWorld : NewtonWorld); cdecl; external NEWTON_API;
  543. function NewtonAtomicAdd(ptr : PInteger; value : Integer) : Integer; cdecl; external NEWTON_API;
  544. function NewtonAtomicSwap(ptr : PInteger; value : Integer) : Integer; cdecl; external NEWTON_API;
  545. procedure NewtonYield(); cdecl; external NEWTON_API;
  546. procedure NewtonSetIslandUpdateEvent(newtonWorld : NewtonWorld; islandUpdate : NewtonIslandUpdate); cdecl; external NEWTON_API;
  547. procedure NewtonWorldForEachJointDo(newtonWorld : NewtonWorld; callback : NewtonJointIterator; userData : Pointer); cdecl; external NEWTON_API;
  548. procedure NewtonWorldForEachBodyInAABBDo(newtonWorld : NewtonWorld; p0 : PdFloat; p1 : PdFloat; callback : NewtonBodyIterator; userData : Pointer); cdecl; external NEWTON_API;
  549. procedure NewtonWorldSetUserData(newtonWorld : NewtonWorld; userData : Pointer); cdecl; external NEWTON_API;
  550. function NewtonWorldGetUserData(newtonWorld : NewtonWorld) : Pointer; cdecl; external NEWTON_API;
  551. function NewtonWorldGetListenerUserData(newtonWorld : NewtonWorld; listener : Pointer) : Pointer; cdecl; external NEWTON_API;
  552. function NewtonWorldListenerGetBodyDestroyCallback(newtonWorld : NewtonWorld; listener : Pointer) : NewtonWorldListenerBodyDestroyCallback; cdecl; external NEWTON_API;
  553. procedure NewtonWorldListenerSetBodyDestroyCallback(newtonWorld : NewtonWorld; listener : Pointer; bodyDestroyCallback : NewtonWorldListenerBodyDestroyCallback); cdecl; external NEWTON_API;
  554. function NewtonWorldGetPreListener(newtonWorld : NewtonWorld; nameId : Pchar) : Pointer; cdecl; external NEWTON_API;
  555. function NewtonWorldAddPreListener(newtonWorld : NewtonWorld; nameId : Pchar; listenerUserData : Pointer; update : NewtonWorldUpdateListenerCallback; destroy : NewtonWorldDestroyListenerCallback) : Pointer; cdecl; external NEWTON_API;
  556. function NewtonWorldGetPostListener(newtonWorld : NewtonWorld; nameId : Pchar) : Pointer; cdecl; external NEWTON_API;
  557. function NewtonWorldAddPostListener(newtonWorld : NewtonWorld; nameId : Pchar; listenerUserData : Pointer; update : NewtonWorldUpdateListenerCallback; destroy : NewtonWorldDestroyListenerCallback) : Pointer; cdecl; external NEWTON_API;
  558. procedure NewtonWorldSetDestructorCallback(newtonWorld : NewtonWorld; _destructor : NewtonWorldDestructorCallback); cdecl; external NEWTON_API;
  559. function NewtonWorldGetDestructorCallback(newtonWorld : NewtonWorld) : NewtonWorldDestructorCallback; cdecl; external NEWTON_API;
  560. procedure NewtonWorldSetCollisionConstructorDestructorCallback(newtonWorld : NewtonWorld; _constructor : NewtonCollisionCopyConstructionCallback; _destructor : NewtonCollisionDestructorCallback); cdecl; external NEWTON_API;
  561. procedure NewtonWorldRayCast(newtonWorld : NewtonWorld; p0 : PdFloat; p1 : PdFloat; filter : NewtonWorldRayFilterCallback; userData : Pointer; prefilter : NewtonWorldRayPrefilterCallback; threadIndex : Integer); cdecl; external NEWTON_API;
  562. function NewtonWorldConvexCast(newtonWorld : NewtonWorld; matrix : PdFloat; target : PdFloat; shape : NewtonCollision; param : PdFloat; userData : Pointer; prefilter : NewtonWorldRayPrefilterCallback; info : NewtonWorldConvexCastReturnInfo; maxContactsCount : Integer; threadIndex : Integer) : Integer; cdecl; external NEWTON_API;
  563. function NewtonWorldCollide(newtonWorld : NewtonWorld; matrix : PdFloat; shape : NewtonCollision; userData : Pointer; prefilter : NewtonWorldRayPrefilterCallback; info : NewtonWorldConvexCastReturnInfo; maxContactsCount : Integer; threadIndex : Integer) : Integer; cdecl; external NEWTON_API;
  564. function NewtonWorldGetBodyCount(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  565. function NewtonWorldGetConstraintCount(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  566. function NewtonIslandGetBody(island : Pointer; bodyIndex : Integer) : NewtonBody; cdecl; external NEWTON_API;
  567. procedure NewtonIslandGetBodyAABB(island : Pointer; bodyIndex : Integer; p0 : PdFloat; p1 : PdFloat); cdecl; external NEWTON_API;
  568. function NewtonMaterialCreateGroupID(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  569. function NewtonMaterialGetDefaultGroupID(newtonWorld : NewtonWorld) : Integer; cdecl; external NEWTON_API;
  570. procedure NewtonMaterialDestroyAllGroupID(newtonWorld : NewtonWorld); cdecl; external NEWTON_API;
  571. function NewtonMaterialGetUserData(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer) : Pointer; cdecl; external NEWTON_API;
  572. procedure NewtonMaterialSetSurfaceThickness(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; thickness : dFloat); cdecl; external NEWTON_API;
  573. procedure NewtonMaterialSetCallbackUserData(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; userData : Pointer); cdecl; external NEWTON_API;
  574. procedure NewtonMaterialSetContactGenerationCallback(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; contactGeneration : NewtonOnContactGeneration); cdecl; external NEWTON_API;
  575. procedure NewtonMaterialSetCompoundCollisionCallback(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; compoundAabbOverlap : NewtonOnCompoundSubCollisionAABBOverlap); cdecl; external NEWTON_API;
  576. procedure NewtonMaterialSetCollisionCallback(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; aabbOverlap : NewtonOnAABBOverlap; process : NewtonContactsProcess); cdecl; external NEWTON_API;
  577. procedure NewtonMaterialSetDefaultSoftness(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; value : dFloat); cdecl; external NEWTON_API;
  578. procedure NewtonMaterialSetDefaultElasticity(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; elasticCoef : dFloat); cdecl; external NEWTON_API;
  579. procedure NewtonMaterialSetDefaultCollidable(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; state : Integer); cdecl; external NEWTON_API;
  580. procedure NewtonMaterialSetDefaultFriction(newtonWorld : NewtonWorld; id0 : Integer; id1 : Integer; staticFriction : dFloat; kineticFriction : dFloat); cdecl; external NEWTON_API;
  581. function NewtonWorldGetFirstMaterial(newtonWorld : NewtonWorld) : NewtonMaterial; cdecl; external NEWTON_API;
  582. function NewtonWorldGetNextMaterial(newtonWorld : NewtonWorld; material : NewtonMaterial) : NewtonMaterial; cdecl; external NEWTON_API;
  583. function NewtonWorldGetFirstBody(newtonWorld : NewtonWorld) : NewtonBody; cdecl; external NEWTON_API;
  584. function NewtonWorldGetNextBody(newtonWorld : NewtonWorld; curBody : NewtonBody) : NewtonBody; cdecl; external NEWTON_API;
  585. function NewtonMaterialGetMaterialPairUserData(material : NewtonMaterial) : Pointer; cdecl; external NEWTON_API;
  586. function NewtonMaterialGetContactFaceAttribute(material : NewtonMaterial) : Cardinal; cdecl; external NEWTON_API;
  587. function NewtonMaterialGetBodyCollidingShape(material : NewtonMaterial; body : NewtonBody) : NewtonCollision; cdecl; external NEWTON_API;
  588. function NewtonMaterialGetContactNormalSpeed(material : NewtonMaterial) : dFloat; cdecl; external NEWTON_API;
  589. procedure NewtonMaterialGetContactForce(material : NewtonMaterial; body : NewtonBody; force : PdFloat); cdecl; external NEWTON_API;
  590. procedure NewtonMaterialGetContactPositionAndNormal(material : NewtonMaterial; body : NewtonBody; posit : PdFloat; normal : PdFloat); cdecl; external NEWTON_API;
  591. procedure NewtonMaterialGetContactTangentDirections(material : NewtonMaterial; body : NewtonBody; dir0 : PdFloat; dir1 : PdFloat); cdecl; external NEWTON_API;
  592. function NewtonMaterialGetContactTangentSpeed(material : NewtonMaterial; index : Integer) : dFloat; cdecl; external NEWTON_API;
  593. function NewtonMaterialGetContactMaxNormalImpact(material : NewtonMaterial) : dFloat; cdecl; external NEWTON_API;
  594. function NewtonMaterialGetContactMaxTangentImpact(material : NewtonMaterial; index : Integer) : dFloat; cdecl; external NEWTON_API;
  595. function NewtonMaterialGetContactPenetration(material : NewtonMaterial) : dFloat; cdecl; external NEWTON_API;
  596. procedure NewtonMaterialSetContactSoftness(material : NewtonMaterial; softness : dFloat); cdecl; external NEWTON_API;
  597. procedure NewtonMaterialSetContactElasticity(material : NewtonMaterial; restitution : dFloat); cdecl; external NEWTON_API;
  598. procedure NewtonMaterialSetContactFrictionState(material : NewtonMaterial; state : Integer; index : Integer); cdecl; external NEWTON_API;
  599. procedure NewtonMaterialSetContactFrictionCoef(material : NewtonMaterial; staticFrictionCoef : dFloat; kineticFrictionCoef : dFloat; index : Integer); cdecl; external NEWTON_API;
  600. procedure NewtonMaterialSetContactNormalAcceleration(material : NewtonMaterial; accel : dFloat); cdecl; external NEWTON_API;
  601. procedure NewtonMaterialSetContactNormalDirection(material : NewtonMaterial; directionVector : PdFloat); cdecl; external NEWTON_API;
  602. procedure NewtonMaterialSetContactPosition(material : NewtonMaterial; position : PdFloat); cdecl; external NEWTON_API;
  603. procedure NewtonMaterialSetContactTangentFriction(material : NewtonMaterial; friction : dFloat; index : Integer); cdecl; external NEWTON_API;
  604. procedure NewtonMaterialSetContactTangentAcceleration(material : NewtonMaterial; accel : dFloat; index : Integer); cdecl; external NEWTON_API;
  605. procedure NewtonMaterialContactRotateTangentDirections(material : NewtonMaterial; directionVector : PdFloat); cdecl; external NEWTON_API;
  606. function NewtonCreateNull(newtonWorld : NewtonWorld) : NewtonCollision; cdecl; external NEWTON_API;
  607. function NewtonCreateSphere(newtonWorld : NewtonWorld; radius : dFloat; shapeID : Integer; offsetMatrix : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  608. function NewtonCreateBox(newtonWorld : NewtonWorld; dx : dFloat; dy : dFloat; dz : dFloat; shapeID : Integer; offsetMatrix : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  609. function NewtonCreateCone(newtonWorld : NewtonWorld; radius : dFloat; height : dFloat; shapeID : Integer; offsetMatrix : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  610. function NewtonCreateCapsule(newtonWorld : NewtonWorld; radius0 : dFloat; radius1 : dFloat; height : dFloat; shapeID : Integer; offsetMatrix : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  611. function NewtonCreateCylinder(newtonWorld : NewtonWorld; radio0 : dFloat; radio1 : dFloat; height : dFloat; shapeID : Integer; offsetMatrix : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  612. function NewtonCreateChamferCylinder(newtonWorld : NewtonWorld; radius : dFloat; height : dFloat; shapeID : Integer; offsetMatrix : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  613. function NewtonCreateConvexHull(newtonWorld : NewtonWorld; count : Integer; vertexCloud : PdFloat; strideInBytes : Integer; tolerance : dFloat; shapeID : Integer; offsetMatrix : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  614. function NewtonCreateConvexHullFromMesh(newtonWorld : NewtonWorld; mesh : NewtonMesh; tolerance : dFloat; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  615. function NewtonCollisionGetMode(convexCollision : NewtonCollision) : Integer; cdecl; external NEWTON_API;
  616. procedure NewtonCollisionSetMode(convexCollision : NewtonCollision; mode : Integer); cdecl; external NEWTON_API;
  617. function NewtonConvexHullGetFaceIndices(convexHullCollision : NewtonCollision; face : Integer; faceIndices : PInteger) : Integer; cdecl; external NEWTON_API;
  618. function NewtonConvexHullGetVertexData(convexHullCollision : NewtonCollision; vertexData : PdFloat; strideInBytes : PInteger) : Integer; cdecl; external NEWTON_API;
  619. function NewtonConvexCollisionCalculateVolume(convexCollision : NewtonCollision) : dFloat; cdecl; external NEWTON_API;
  620. procedure NewtonConvexCollisionCalculateInertialMatrix(convexCollision : NewtonCollision; inertia : PdFloat; origin : PdFloat); cdecl; external NEWTON_API;
  621. procedure NewtonConvexCollisionCalculateBuoyancyAcceleration(convexCollision : NewtonCollision; matrix : PdFloat; shapeOrigin : PdFloat; gravityVector : PdFloat; fluidPlane : PdFloat; fluidDensity : dFloat; fluidViscosity : dFloat; accel : PdFloat; alpha : PdFloat); cdecl; external NEWTON_API;
  622. function NewtonCollisionDataPointer(convexCollision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  623. function NewtonCreateCompoundCollision(newtonWorld : NewtonWorld; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  624. function NewtonCreateCompoundCollisionFromMesh(newtonWorld : NewtonWorld; mesh : NewtonMesh; hullTolerance : dFloat; shapeID : Integer; subShapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  625. procedure NewtonCompoundCollisionBeginAddRemove(compoundCollision : NewtonCollision); cdecl; external NEWTON_API;
  626. function NewtonCompoundCollisionAddSubCollision(compoundCollision : NewtonCollision; convexCollision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  627. procedure NewtonCompoundCollisionRemoveSubCollision(compoundCollision : NewtonCollision; collisionNode : Pointer); cdecl; external NEWTON_API;
  628. procedure NewtonCompoundCollisionRemoveSubCollisionByIndex(compoundCollision : NewtonCollision; nodeIndex : Integer); cdecl; external NEWTON_API;
  629. procedure NewtonCompoundCollisionSetSubCollisionMatrix(compoundCollision : NewtonCollision; collisionNode : Pointer; matrix : PdFloat); cdecl; external NEWTON_API;
  630. procedure NewtonCompoundCollisionEndAddRemove(compoundCollision : NewtonCollision); cdecl; external NEWTON_API;
  631. function NewtonCompoundCollisionGetFirstNode(compoundCollision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  632. function NewtonCompoundCollisionGetNextNode(compoundCollision : NewtonCollision; collisionNode : Pointer) : Pointer; cdecl; external NEWTON_API;
  633. function NewtonCompoundCollisionGetNodeByIndex(compoundCollision : NewtonCollision; index : Integer) : Pointer; cdecl; external NEWTON_API;
  634. function NewtonCompoundCollisionGetNodeIndex(compoundCollision : NewtonCollision; collisionNode : Pointer) : Integer; cdecl; external NEWTON_API;
  635. function NewtonCompoundCollisionGetCollisionFromNode(compoundCollision : NewtonCollision; collisionNode : Pointer) : NewtonCollision; cdecl; external NEWTON_API;
  636. function NewtonCreateFracturedCompoundCollision(newtonWorld : NewtonWorld; solidMesh : NewtonMesh; shapeID : Integer; fracturePhysicsMaterialID : Integer; pointcloudCount : Integer; vertexCloud : PdFloat; strideInBytes : Integer; materialID : Integer; textureMatrix : PdFloat; regenerateMainMeshCallback : NewtonFractureCompoundCollisionReconstructMainMeshCallBack; emitFracturedCompound : NewtonFractureCompoundCollisionOnEmitCompoundFractured; emitFracfuredChunk : NewtonFractureCompoundCollisionOnEmitChunk) : NewtonCollision; cdecl; external NEWTON_API;
  637. function NewtonFracturedCompoundPlaneClip(fracturedCompound : NewtonCollision; plane : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  638. procedure NewtonFracturedCompoundSetCallbacks(fracturedCompound : NewtonCollision; regenerateMainMeshCallback : NewtonFractureCompoundCollisionReconstructMainMeshCallBack; emitFracturedCompound : NewtonFractureCompoundCollisionOnEmitCompoundFractured; emitFracfuredChunk : NewtonFractureCompoundCollisionOnEmitChunk); cdecl; external NEWTON_API;
  639. function NewtonFracturedCompoundIsNodeFreeToDetach(fracturedCompound : NewtonCollision; collisionNode : Pointer) : Integer; cdecl; external NEWTON_API;
  640. function NewtonFracturedCompoundNeighborNodeList(fracturedCompound : NewtonCollision; collisionNode : Pointer; list : Pointer; maxCount : Integer) : Integer; cdecl; external NEWTON_API;
  641. function NewtonFracturedCompoundGetMainMesh(fracturedCompound : NewtonCollision) : NewtonFracturedCompoundMeshPart; cdecl; external NEWTON_API;
  642. function NewtonFracturedCompoundGetFirstSubMesh(fracturedCompound : NewtonCollision) : NewtonFracturedCompoundMeshPart; cdecl; external NEWTON_API;
  643. function NewtonFracturedCompoundGetNextSubMesh(fracturedCompound : NewtonCollision; subMesh : NewtonFracturedCompoundMeshPart) : NewtonFracturedCompoundMeshPart; cdecl; external NEWTON_API;
  644. function NewtonFracturedCompoundCollisionGetVertexCount(fracturedCompound : NewtonCollision; meshOwner : NewtonFracturedCompoundMeshPart) : Integer; cdecl; external NEWTON_API;
  645. function NewtonFracturedCompoundCollisionGetVertexPositions(fracturedCompound : NewtonCollision; meshOwner : NewtonFracturedCompoundMeshPart) : PdFloat; cdecl; external NEWTON_API;
  646. function NewtonFracturedCompoundCollisionGetVertexNormals(fracturedCompound : NewtonCollision; meshOwner : NewtonFracturedCompoundMeshPart) : PdFloat; cdecl; external NEWTON_API;
  647. function NewtonFracturedCompoundCollisionGetVertexUVs(fracturedCompound : NewtonCollision; meshOwner : NewtonFracturedCompoundMeshPart) : PdFloat; cdecl; external NEWTON_API;
  648. function NewtonFracturedCompoundMeshPartGetIndexStream(fracturedCompound : NewtonCollision; meshOwner : NewtonFracturedCompoundMeshPart; segment : Pointer; index : PInteger) : Integer; cdecl; external NEWTON_API;
  649. function NewtonFracturedCompoundMeshPartGetFirstSegment(fractureCompoundMeshPart : NewtonFracturedCompoundMeshPart) : Pointer; cdecl; external NEWTON_API;
  650. function NewtonFracturedCompoundMeshPartGetNextSegment(fractureCompoundMeshSegment : Pointer) : Pointer; cdecl; external NEWTON_API;
  651. function NewtonFracturedCompoundMeshPartGetMaterial(fractureCompoundMeshSegment : Pointer) : Integer; cdecl; external NEWTON_API;
  652. function NewtonFracturedCompoundMeshPartGetIndexCount(fractureCompoundMeshSegment : Pointer) : Integer; cdecl; external NEWTON_API;
  653. function NewtonCreateSceneCollision(newtonWorld : NewtonWorld; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  654. procedure NewtonSceneCollisionBeginAddRemove(sceneCollision : NewtonCollision); cdecl; external NEWTON_API;
  655. function NewtonSceneCollisionAddSubCollision(sceneCollision : NewtonCollision; collision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  656. procedure NewtonSceneCollisionRemoveSubCollision(compoundCollision : NewtonCollision; collisionNode : Pointer); cdecl; external NEWTON_API;
  657. procedure NewtonSceneCollisionRemoveSubCollisionByIndex(sceneCollision : NewtonCollision; nodeIndex : Integer); cdecl; external NEWTON_API;
  658. procedure NewtonSceneCollisionSetSubCollisionMatrix(sceneCollision : NewtonCollision; collisionNode : Pointer; matrix : PdFloat); cdecl; external NEWTON_API;
  659. procedure NewtonSceneCollisionEndAddRemove(sceneCollision : NewtonCollision); cdecl; external NEWTON_API;
  660. function NewtonSceneCollisionGetFirstNode(sceneCollision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  661. function NewtonSceneCollisionGetNextNode(sceneCollision : NewtonCollision; collisionNode : Pointer) : Pointer; cdecl; external NEWTON_API;
  662. function NewtonSceneCollisionGetNodeByIndex(sceneCollision : NewtonCollision; index : Integer) : Pointer; cdecl; external NEWTON_API;
  663. function NewtonSceneCollisionGetNodeIndex(sceneCollision : NewtonCollision; collisionNode : Pointer) : Integer; cdecl; external NEWTON_API;
  664. function NewtonSceneCollisionGetCollisionFromNode(sceneCollision : NewtonCollision; collisionNode : Pointer) : NewtonCollision; cdecl; external NEWTON_API;
  665. function NewtonCreateUserMeshCollision(newtonWorld : NewtonWorld; minBox : PdFloat; maxBox : PdFloat; userData : Pointer; collideCallback : NewtonUserMeshCollisionCollideCallback; rayHitCallback : NewtonUserMeshCollisionRayHitCallback; destroyCallback : NewtonUserMeshCollisionDestroyCallback; getInfoCallback : NewtonUserMeshCollisionGetCollisionInfo; getLocalAABBCallback : NewtonUserMeshCollisionAABBTest; facesInAABBCallback : NewtonUserMeshCollisionGetFacesInAABB; serializeCallback : NewtonOnUserCollisionSerializationCallback; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  666. function NewtonUserMeshCollisionContinuousOverlapTest(collideDescData : NewtonUserMeshCollisionCollideDesc; continueCollisionHandle : Pointer; minAabb : PdFloat; maxAabb : PdFloat) : Integer; cdecl; external NEWTON_API;
  667. function NewtonCreateCollisionFromSerialization(newtonWorld : NewtonWorld; deserializeFunction : NewtonDeserializeCallback; serializeHandle : Pointer) : NewtonCollision; cdecl; external NEWTON_API;
  668. procedure NewtonCollisionSerialize(newtonWorld : NewtonWorld; collision : NewtonCollision; serializeFunction : NewtonSerializeCallback; serializeHandle : Pointer); cdecl; external NEWTON_API;
  669. procedure NewtonCollisionGetInfo(collision : NewtonCollision; collisionInfo : NewtonCollisionInfoRecord); cdecl; external NEWTON_API;
  670. function NewtonCreateHeightFieldCollision(newtonWorld : NewtonWorld; width : Integer; height : Integer; gridsDiagonals : Integer; elevationdatType : Integer; elevationMap : Pointer; attributeMap : Pchar; verticalScale : dFloat; horizontalScale_x : dFloat; horizontalScale_z : dFloat; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  671. procedure NewtonHeightFieldSetUserRayCastCallback(heightfieldCollision : NewtonCollision; rayHitCallback : NewtonHeightFieldRayCastCallback); cdecl; external NEWTON_API;
  672. procedure NewtonHeightFieldSetHorizontalDisplacement(heightfieldCollision : NewtonCollision; horizontalMap : Pword; scale : dFloat); cdecl; external NEWTON_API;
  673. function NewtonCreateTreeCollision(newtonWorld : NewtonWorld; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  674. function NewtonCreateTreeCollisionFromMesh(newtonWorld : NewtonWorld; mesh : NewtonMesh; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  675. procedure NewtonTreeCollisionSetUserRayCastCallback(treeCollision : NewtonCollision; rayHitCallback : NewtonCollisionTreeRayCastCallback); cdecl; external NEWTON_API;
  676. procedure NewtonTreeCollisionBeginBuild(treeCollision : NewtonCollision); cdecl; external NEWTON_API;
  677. procedure NewtonTreeCollisionAddFace(treeCollision : NewtonCollision; vertexCount : Integer; vertexPtr : PdFloat; strideInBytes : Integer; faceAttribute : Integer); cdecl; external NEWTON_API;
  678. procedure NewtonTreeCollisionEndBuild(treeCollision : NewtonCollision; optimize : Integer); cdecl; external NEWTON_API;
  679. function NewtonTreeCollisionGetFaceAttribute(treeCollision : NewtonCollision; faceIndexArray : PInteger; indexCount : Integer) : Integer; cdecl; external NEWTON_API;
  680. procedure NewtonTreeCollisionSetFaceAttribute(treeCollision : NewtonCollision; faceIndexArray : PInteger; indexCount : Integer; attribute : Integer); cdecl; external NEWTON_API;
  681. procedure NewtonTreeCollisionForEachFace(treeCollision : NewtonCollision; forEachFaceCallback : NewtonTreeCollisionFaceCallback; context : Pointer); cdecl; external NEWTON_API;
  682. function NewtonTreeCollisionGetVertexListTriangleListInAABB(treeCollision : NewtonCollision; p0 : PdFloat; p1 : PdFloat; vertexArray : PdFloat; vertexCount : PInteger; vertexStrideInBytes : PInteger; indexList : PInteger; maxIndexCount : Integer; faceAttribute : PInteger) : Integer; cdecl; external NEWTON_API;
  683. procedure NewtonStaticCollisionSetDebugCallback(staticCollision : NewtonCollision; userCallback : NewtonTreeCollisionCallback); cdecl; external NEWTON_API;
  684. function NewtonCollisionCreateInstance(collision : NewtonCollision) : NewtonCollision; cdecl; external NEWTON_API;
  685. function NewtonCollisionGetType(collision : NewtonCollision) : Integer; cdecl; external NEWTON_API;
  686. function NewtonCollisionIsConvexShape(collision : NewtonCollision) : Integer; cdecl; external NEWTON_API;
  687. function NewtonCollisionIsStaticShape(collision : NewtonCollision) : Integer; cdecl; external NEWTON_API;
  688. procedure NewtonCollisionSetUserData(collision : NewtonCollision; userData : Pointer); cdecl; external NEWTON_API;
  689. function NewtonCollisionGetUserData(collision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  690. procedure NewtonCollisionSetUserData1(collision : NewtonCollision; userData : Pointer); cdecl; external NEWTON_API;
  691. function NewtonCollisionGetUserData1(collision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  692. procedure NewtonCollisionSetUserID(collision : NewtonCollision; id : Cardinal); cdecl; external NEWTON_API;
  693. function NewtonCollisionGetUserID(collision : NewtonCollision) : Cardinal; cdecl; external NEWTON_API;
  694. function NewtonCollisionGetSubCollisionHandle(collision : NewtonCollision) : Pointer; cdecl; external NEWTON_API;
  695. function NewtonCollisionGetParentInstance(collision : NewtonCollision) : NewtonCollision; cdecl; external NEWTON_API;
  696. procedure NewtonCollisionSetMatrix(collision : NewtonCollision; matrix : PdFloat); cdecl; external NEWTON_API;
  697. procedure NewtonCollisionGetMatrix(collision : NewtonCollision; matrix : PdFloat); cdecl; external NEWTON_API;
  698. procedure NewtonCollisionSetScale(collision : NewtonCollision; scaleX : dFloat; scaleY : dFloat; scaleZ : dFloat); cdecl; external NEWTON_API;
  699. procedure NewtonCollisionGetScale(collision : NewtonCollision; scaleX : PdFloat; scaleY : PdFloat; scaleZ : PdFloat); cdecl; external NEWTON_API;
  700. procedure NewtonDestroyCollision(collision : NewtonCollision); cdecl; external NEWTON_API;
  701. function NewtonCollisionIntersectionTest(newtonWorld : NewtonWorld; collisionA : NewtonCollision; matrixA : PdFloat; collisionB : NewtonCollision; matrixB : PdFloat; threadIndex : Integer) : Integer; cdecl; external NEWTON_API;
  702. function NewtonCollisionPointDistance(newtonWorld : NewtonWorld; point : PdFloat; collision : NewtonCollision; matrix : PdFloat; contact : PdFloat; normal : PdFloat; threadIndex : Integer) : Integer; cdecl; external NEWTON_API;
  703. function NewtonCollisionClosestPoint(newtonWorld : NewtonWorld; collisionA : NewtonCollision; matrixA : PdFloat; collisionB : NewtonCollision; matrixB : PdFloat; contactA : PdFloat; contactB : PdFloat; normalAB : PdFloat; threadIndex : Integer) : Integer; cdecl; external NEWTON_API;
  704. function NewtonCollisionCollide(newtonWorld : NewtonWorld; maxSize : Integer; collisionA : NewtonCollision; matrixA : PdFloat; collisionB : NewtonCollision; matrixB : PdFloat; contacts : PdFloat; normals : PdFloat; penetration : PdFloat; attributeA : PdLong; attributeB : PdLong; threadIndex : Integer) : Integer; cdecl; external NEWTON_API;
  705. function NewtonCollisionCollideContinue(newtonWorld : NewtonWorld; maxSize : Integer; timestep : dFloat; collisionA : NewtonCollision; matrixA : PdFloat; velocA : PdFloat; omegaA : PdFloat; collisionB : NewtonCollision; matrixB : PdFloat; velocB : PdFloat; omegaB : PdFloat; timeOfImpact : PdFloat; contacts : PdFloat; normals : PdFloat; penetration : PdFloat; attributeA : PdLong; attributeB : PdLong; threadIndex : Integer) : Integer; cdecl; external NEWTON_API;
  706. procedure NewtonCollisionSupportVertex(collision : NewtonCollision; dir : PdFloat; vertex : PdFloat); cdecl; external NEWTON_API;
  707. function NewtonCollisionRayCast(collision : NewtonCollision; p0 : PdFloat; p1 : PdFloat; normal : PdFloat; attribute : PdLong) : dFloat; cdecl; external NEWTON_API;
  708. procedure NewtonCollisionCalculateAABB(collision : NewtonCollision; matrix : PdFloat; p0 : PdFloat; p1 : PdFloat); cdecl; external NEWTON_API;
  709. procedure NewtonCollisionForEachPolygonDo(collision : NewtonCollision; matrix : PdFloat; callback : NewtonCollisionIterator; userData : Pointer); cdecl; external NEWTON_API;
  710. function NewtonCollisionAggregateCreate(world : NewtonWorld) : Pointer; cdecl; external NEWTON_API;
  711. procedure NewtonCollisionAggregateDestroy(aggregate : Pointer); cdecl; external NEWTON_API;
  712. procedure NewtonCollisionAggregateAddBody(aggregate : Pointer; body : NewtonBody); cdecl; external NEWTON_API;
  713. procedure NewtonCollisionAggregateRemoveBody(aggregate : Pointer; body : NewtonBody); cdecl; external NEWTON_API;
  714. function NewtonCollisionAggregateGetSelfCollision(aggregate : Pointer) : Integer; cdecl; external NEWTON_API;
  715. procedure NewtonCollisionAggregateSetSelfCollision(aggregate : Pointer; state : Integer); cdecl; external NEWTON_API;
  716. procedure NewtonSetEulerAngle(eulersAngles : PdFloat; matrix : PdFloat); cdecl; external NEWTON_API;
  717. procedure NewtonGetEulerAngle(matrix : PdFloat; eulersAngles0 : PdFloat; eulersAngles1 : PdFloat); cdecl; external NEWTON_API;
  718. function NewtonCalculateSpringDamperAcceleration(dt : dFloat; ks : dFloat; x : dFloat; kd : dFloat; s : dFloat) : dFloat; cdecl; external NEWTON_API;
  719. function NewtonCreateDynamicBody(newtonWorld : NewtonWorld; collision : NewtonCollision; matrix : PdFloat) : NewtonBody; cdecl; external NEWTON_API;
  720. function NewtonCreateKinematicBody(newtonWorld : NewtonWorld; collision : NewtonCollision; matrix : PdFloat) : NewtonBody; cdecl; external NEWTON_API;
  721. procedure NewtonDestroyBody(body : NewtonBody); cdecl; external NEWTON_API;
  722. function NewtonBodyGetSimulationState(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  723. procedure NewtonBodySetSimulationState(bodyPtr : NewtonBody; state : Integer); cdecl; external NEWTON_API;
  724. function NewtonBodyGetType(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  725. function NewtonBodyGetCollidable(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  726. procedure NewtonBodySetCollidable(body : NewtonBody; collidableState : Integer); cdecl; external NEWTON_API;
  727. procedure NewtonBodyAddForce(body : NewtonBody; force : PdFloat); cdecl; external NEWTON_API;
  728. procedure NewtonBodyAddTorque(body : NewtonBody; torque : PdFloat); cdecl; external NEWTON_API;
  729. procedure NewtonBodyCalculateInverseDynamicsForce(body : NewtonBody; timestep : dFloat; desiredVeloc : PdFloat; forceOut : PdFloat); cdecl; external NEWTON_API;
  730. procedure NewtonBodySetCentreOfMass(body : NewtonBody; com : PdFloat); cdecl; external NEWTON_API;
  731. procedure NewtonBodySetMassMatrix(body : NewtonBody; mass : dFloat; Ixx : dFloat; Iyy : dFloat; Izz : dFloat); cdecl; external NEWTON_API;
  732. procedure NewtonBodySetFullMassMatrix(body : NewtonBody; mass : dFloat; inertiaMatrix : PdFloat); cdecl; external NEWTON_API;
  733. procedure NewtonBodySetMassProperties(body : NewtonBody; mass : dFloat; collision : NewtonCollision); cdecl; external NEWTON_API;
  734. procedure NewtonBodySetMatrix(body : NewtonBody; matrix : PdFloat); cdecl; external NEWTON_API;
  735. procedure NewtonBodySetMatrixNoSleep(body : NewtonBody; matrix : PdFloat); cdecl; external NEWTON_API;
  736. procedure NewtonBodySetMatrixRecursive(body : NewtonBody; matrix : PdFloat); cdecl; external NEWTON_API;
  737. procedure NewtonBodySetMaterialGroupID(body : NewtonBody; id : Integer); cdecl; external NEWTON_API;
  738. procedure NewtonBodySetContinuousCollisionMode(body : NewtonBody; state : Cardinal); cdecl; external NEWTON_API;
  739. procedure NewtonBodySetJointRecursiveCollision(body : NewtonBody; state : Cardinal); cdecl; external NEWTON_API;
  740. procedure NewtonBodySetOmega(body : NewtonBody; omega : PdFloat); cdecl; external NEWTON_API;
  741. procedure NewtonBodySetOmegaNoSleep(body : NewtonBody; omega : PdFloat); cdecl; external NEWTON_API;
  742. procedure NewtonBodySetVelocity(body : NewtonBody; velocity : PdFloat); cdecl; external NEWTON_API;
  743. procedure NewtonBodySetVelocityNoSleep(body : NewtonBody; velocity : PdFloat); cdecl; external NEWTON_API;
  744. procedure NewtonBodySetForce(body : NewtonBody; force : PdFloat); cdecl; external NEWTON_API;
  745. procedure NewtonBodySetTorque(body : NewtonBody; torque : PdFloat); cdecl; external NEWTON_API;
  746. procedure NewtonBodySetLinearDamping(body : NewtonBody; linearDamp : dFloat); cdecl; external NEWTON_API;
  747. procedure NewtonBodySetAngularDamping(body : NewtonBody; angularDamp : PdFloat); cdecl; external NEWTON_API;
  748. procedure NewtonBodySetCollision(body : NewtonBody; collision : NewtonCollision); cdecl; external NEWTON_API;
  749. procedure NewtonBodySetCollisionScale(body : NewtonBody; scaleX : dFloat; scaleY : dFloat; scaleZ : dFloat); cdecl; external NEWTON_API;
  750. function NewtonBodyGetMaxRotationPerStep(body : NewtonBody) : dFloat; cdecl; external NEWTON_API;
  751. procedure NewtonBodySetMaxRotationPerStep(body : NewtonBody; angleInRadians : dFloat); cdecl; external NEWTON_API;
  752. function NewtonBodyGetSleepState(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  753. procedure NewtonBodySetSleepState(body : NewtonBody; state : Integer); cdecl; external NEWTON_API;
  754. function NewtonBodyGetAutoSleep(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  755. procedure NewtonBodySetAutoSleep(body : NewtonBody; state : Integer); cdecl; external NEWTON_API;
  756. function NewtonBodyGetFreezeState(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  757. procedure NewtonBodySetFreezeState(body : NewtonBody; state : Integer); cdecl; external NEWTON_API;
  758. procedure NewtonBodySetDestructorCallback(body : NewtonBody; callback : NewtonBodyDestructor); cdecl; external NEWTON_API;
  759. function NewtonBodyGetDestructorCallback(body : NewtonBody) : NewtonBodyDestructor; cdecl; external NEWTON_API;
  760. procedure NewtonBodySetTransformCallback(body : NewtonBody; callback : NewtonSetTransform); cdecl; external NEWTON_API;
  761. function NewtonBodyGetTransformCallback(body : NewtonBody) : NewtonSetTransform; cdecl; external NEWTON_API;
  762. procedure NewtonBodySetForceAndTorqueCallback(body : NewtonBody; callback : NewtonApplyForceAndTorque); cdecl; external NEWTON_API;
  763. function NewtonBodyGetForceAndTorqueCallback(body : NewtonBody) : NewtonApplyForceAndTorque; cdecl; external NEWTON_API;
  764. function NewtonBodyGetID(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  765. procedure NewtonBodySetUserData(body : NewtonBody; userData : Pointer); cdecl; external NEWTON_API;
  766. function NewtonBodyGetUserData(body : NewtonBody) : Pointer; cdecl; external NEWTON_API;
  767. function NewtonBodyGetWorld(body : NewtonBody) : NewtonWorld; cdecl; external NEWTON_API;
  768. function NewtonBodyGetCollision(body : NewtonBody) : NewtonCollision; cdecl; external NEWTON_API;
  769. function NewtonBodyGetMaterialGroupID(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  770. function NewtonBodyGetSerializedID(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  771. function NewtonBodyGetContinuousCollisionMode(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  772. function NewtonBodyGetJointRecursiveCollision(body : NewtonBody) : Integer; cdecl; external NEWTON_API;
  773. procedure NewtonBodyGetPosition(body : NewtonBody; pos : PdFloat); cdecl; external NEWTON_API;
  774. procedure NewtonBodyGetMatrix(body : NewtonBody; matrix : PdFloat); cdecl; external NEWTON_API;
  775. procedure NewtonBodyGetRotation(body : NewtonBody; rotation : PdFloat); cdecl; external NEWTON_API;
  776. procedure NewtonBodyGetMass(body : NewtonBody; mass : PdFloat; Ixx : PdFloat; Iyy : PdFloat; Izz : PdFloat); cdecl; external NEWTON_API;
  777. procedure NewtonBodyGetInvMass(body : NewtonBody; invMass : PdFloat; invIxx : PdFloat; invIyy : PdFloat; invIzz : PdFloat); cdecl; external NEWTON_API;
  778. procedure NewtonBodyGetInertiaMatrix(body : NewtonBody; inertiaMatrix : PdFloat); cdecl; external NEWTON_API;
  779. procedure NewtonBodyGetInvInertiaMatrix(body : NewtonBody; invInertiaMatrix : PdFloat); cdecl; external NEWTON_API;
  780. procedure NewtonBodyGetOmega(body : NewtonBody; vector : PdFloat); cdecl; external NEWTON_API;
  781. procedure NewtonBodyGetVelocity(body : NewtonBody; vector : PdFloat); cdecl; external NEWTON_API;
  782. procedure NewtonBodyGetForce(body : NewtonBody; vector : PdFloat); cdecl; external NEWTON_API;
  783. procedure NewtonBodyGetTorque(body : NewtonBody; vector : PdFloat); cdecl; external NEWTON_API;
  784. procedure NewtonBodyGetCentreOfMass(body : NewtonBody; com : PdFloat); cdecl; external NEWTON_API;
  785. procedure NewtonBodyGetPointVelocity(body : NewtonBody; point : PdFloat; velocOut : PdFloat); cdecl; external NEWTON_API;
  786. procedure NewtonBodyApplyImpulsePair(body : NewtonBody; linearImpulse : PdFloat; angularImpulse : PdFloat; timestep : dFloat); cdecl; external NEWTON_API;
  787. procedure NewtonBodyAddImpulse(body : NewtonBody; pointDeltaVeloc : PdFloat; pointPosit : PdFloat; timestep : dFloat); cdecl; external NEWTON_API;
  788. procedure NewtonBodyApplyImpulseArray(body : NewtonBody; impuleCount : Integer; strideInByte : Integer; impulseArray : PdFloat; pointArray : PdFloat; timestep : dFloat); cdecl; external NEWTON_API;
  789. procedure NewtonBodyIntegrateVelocity(body : NewtonBody; timestep : dFloat); cdecl; external NEWTON_API;
  790. function NewtonBodyGetLinearDamping(body : NewtonBody) : dFloat; cdecl; external NEWTON_API;
  791. procedure NewtonBodyGetAngularDamping(body : NewtonBody; vector : PdFloat); cdecl; external NEWTON_API;
  792. procedure NewtonBodyGetAABB(body : NewtonBody; p0 : PdFloat; p1 : PdFloat); cdecl; external NEWTON_API;
  793. function NewtonBodyGetFirstJoint(body : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  794. function NewtonBodyGetNextJoint(body : NewtonBody; joint : NewtonJoint) : NewtonJoint; cdecl; external NEWTON_API;
  795. function NewtonBodyGetFirstContactJoint(body : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  796. function NewtonBodyGetNextContactJoint(body : NewtonBody; contactJoint : NewtonJoint) : NewtonJoint; cdecl; external NEWTON_API;
  797. function NewtonContactJointGetFirstContact(contactJoint : NewtonJoint) : Pointer; cdecl; external NEWTON_API;
  798. function NewtonContactJointGetNextContact(contactJoint : NewtonJoint; contact : Pointer) : Pointer; cdecl; external NEWTON_API;
  799. function NewtonContactJointGetContactCount(contactJoint : NewtonJoint) : Integer; cdecl; external NEWTON_API;
  800. procedure NewtonContactJointRemoveContact(contactJoint : NewtonJoint; contact : Pointer); cdecl; external NEWTON_API;
  801. function NewtonContactJointGetClosestDistance(contactJoint : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  802. function NewtonContactGetMaterial(contact : Pointer) : NewtonMaterial; cdecl; external NEWTON_API;
  803. function NewtonContactGetCollision0(contact : Pointer) : NewtonCollision; cdecl; external NEWTON_API;
  804. function NewtonContactGetCollision1(contact : Pointer) : NewtonCollision; cdecl; external NEWTON_API;
  805. function NewtonContactGetCollisionID0(contact : Pointer) : Pointer; cdecl; external NEWTON_API;
  806. function NewtonContactGetCollisionID1(contact : Pointer) : Pointer; cdecl; external NEWTON_API;
  807. function NewtonJointGetUserData(joint : NewtonJoint) : Pointer; cdecl; external NEWTON_API;
  808. procedure NewtonJointSetUserData(joint : NewtonJoint; userData : Pointer); cdecl; external NEWTON_API;
  809. function NewtonJointGetBody0(joint : NewtonJoint) : NewtonBody; cdecl; external NEWTON_API;
  810. function NewtonJointGetBody1(joint : NewtonJoint) : NewtonBody; cdecl; external NEWTON_API;
  811. procedure NewtonJointGetInfo(joint : NewtonJoint; info : NewtonJointRecord); cdecl; external NEWTON_API;
  812. function NewtonJointGetCollisionState(joint : NewtonJoint) : Integer; cdecl; external NEWTON_API;
  813. procedure NewtonJointSetCollisionState(joint : NewtonJoint; state : Integer); cdecl; external NEWTON_API;
  814. function NewtonJointGetStiffness(joint : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  815. procedure NewtonJointSetStiffness(joint : NewtonJoint; state : dFloat); cdecl; external NEWTON_API;
  816. procedure NewtonDestroyJoint(newtonWorld : NewtonWorld; joint : NewtonJoint); cdecl; external NEWTON_API;
  817. procedure NewtonJointSetDestructor(joint : NewtonJoint; _destructor : NewtonConstraintDestructor); cdecl; external NEWTON_API;
  818. function NewtonJointIsActive(joint : NewtonJoint) : Integer; cdecl; external NEWTON_API;
  819. function NewtonCreateMassSpringDamperSystem(newtonWorld : NewtonWorld; shapeID : Integer; points : PdFloat; pointCount : Integer; strideInBytes : Integer; pointMass : PdFloat; links : PInteger; linksCount : Integer; linksSpring : PdFloat; linksDamper : PdFloat) : NewtonCollision; cdecl; external NEWTON_API;
  820. function NewtonCreateDeformableSolid(newtonWorld : NewtonWorld; mesh : NewtonMesh; shapeID : Integer) : NewtonCollision; cdecl; external NEWTON_API;
  821. function NewtonDeformableMeshGetParticleCount(deformableMesh : NewtonCollision) : Integer; cdecl; external NEWTON_API;
  822. function NewtonDeformableMeshGetParticleStrideInBytes(deformableMesh : NewtonCollision) : Integer; cdecl; external NEWTON_API;
  823. function NewtonDeformableMeshGetParticleArray(deformableMesh : NewtonCollision) : PdFloat; cdecl; external NEWTON_API;
  824. function NewtonConstraintCreateBall(newtonWorld : NewtonWorld; pivotPoint : PdFloat; childBody : NewtonBody; parentBody : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  825. procedure NewtonBallSetUserCallback(ball : NewtonJoint; callback : NewtonBallCallback); cdecl; external NEWTON_API;
  826. procedure NewtonBallGetJointAngle(ball : NewtonJoint; angle : PdFloat); cdecl; external NEWTON_API;
  827. procedure NewtonBallGetJointOmega(ball : NewtonJoint; omega : PdFloat); cdecl; external NEWTON_API;
  828. procedure NewtonBallGetJointForce(ball : NewtonJoint; force : PdFloat); cdecl; external NEWTON_API;
  829. procedure NewtonBallSetConeLimits(ball : NewtonJoint; pin : PdFloat; maxConeAngle : dFloat; maxTwistAngle : dFloat); cdecl; external NEWTON_API;
  830. function NewtonConstraintCreateHinge(newtonWorld : NewtonWorld; pivotPoint : PdFloat; pinDir : PdFloat; childBody : NewtonBody; parentBody : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  831. procedure NewtonHingeSetUserCallback(hinge : NewtonJoint; callback : NewtonHingeCallback); cdecl; external NEWTON_API;
  832. function NewtonHingeGetJointAngle(hinge : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  833. function NewtonHingeGetJointOmega(hinge : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  834. procedure NewtonHingeGetJointForce(hinge : NewtonJoint; force : PdFloat); cdecl; external NEWTON_API;
  835. function NewtonHingeCalculateStopAlpha(hinge : NewtonJoint; desc : NewtonHingeSliderUpdateDesc; angle : dFloat) : dFloat; cdecl; external NEWTON_API;
  836. function NewtonConstraintCreateSlider(newtonWorld : NewtonWorld; pivotPoint : PdFloat; pinDir : PdFloat; childBody : NewtonBody; parentBody : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  837. procedure NewtonSliderSetUserCallback(slider : NewtonJoint; callback : NewtonSliderCallback); cdecl; external NEWTON_API;
  838. function NewtonSliderGetJointPosit(slider : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  839. function NewtonSliderGetJointVeloc(slider : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  840. procedure NewtonSliderGetJointForce(slider : NewtonJoint; force : PdFloat); cdecl; external NEWTON_API;
  841. function NewtonSliderCalculateStopAccel(slider : NewtonJoint; desc : NewtonHingeSliderUpdateDesc; position : dFloat) : dFloat; cdecl; external NEWTON_API;
  842. function NewtonConstraintCreateCorkscrew(newtonWorld : NewtonWorld; pivotPoint : PdFloat; pinDir : PdFloat; childBody : NewtonBody; parentBody : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  843. procedure NewtonCorkscrewSetUserCallback(corkscrew : NewtonJoint; callback : NewtonCorkscrewCallback); cdecl; external NEWTON_API;
  844. function NewtonCorkscrewGetJointPosit(corkscrew : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  845. function NewtonCorkscrewGetJointAngle(corkscrew : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  846. function NewtonCorkscrewGetJointVeloc(corkscrew : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  847. function NewtonCorkscrewGetJointOmega(corkscrew : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  848. procedure NewtonCorkscrewGetJointForce(corkscrew : NewtonJoint; force : PdFloat); cdecl; external NEWTON_API;
  849. function NewtonCorkscrewCalculateStopAlpha(corkscrew : NewtonJoint; desc : NewtonHingeSliderUpdateDesc; angle : dFloat) : dFloat; cdecl; external NEWTON_API;
  850. function NewtonCorkscrewCalculateStopAccel(corkscrew : NewtonJoint; desc : NewtonHingeSliderUpdateDesc; position : dFloat) : dFloat; cdecl; external NEWTON_API;
  851. function NewtonConstraintCreateUniversal(newtonWorld : NewtonWorld; pivotPoint : PdFloat; pinDir0 : PdFloat; pinDir1 : PdFloat; childBody : NewtonBody; parentBody : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  852. procedure NewtonUniversalSetUserCallback(universal : NewtonJoint; callback : NewtonUniversalCallback); cdecl; external NEWTON_API;
  853. function NewtonUniversalGetJointAngle0(universal : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  854. function NewtonUniversalGetJointAngle1(universal : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  855. function NewtonUniversalGetJointOmega0(universal : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  856. function NewtonUniversalGetJointOmega1(universal : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  857. procedure NewtonUniversalGetJointForce(universal : NewtonJoint; force : PdFloat); cdecl; external NEWTON_API;
  858. function NewtonUniversalCalculateStopAlpha0(universal : NewtonJoint; desc : NewtonHingeSliderUpdateDesc; angle : dFloat) : dFloat; cdecl; external NEWTON_API;
  859. function NewtonUniversalCalculateStopAlpha1(universal : NewtonJoint; desc : NewtonHingeSliderUpdateDesc; angle : dFloat) : dFloat; cdecl; external NEWTON_API;
  860. function NewtonConstraintCreateUpVector(newtonWorld : NewtonWorld; pinDir : PdFloat; body : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  861. procedure NewtonUpVectorGetPin(upVector : NewtonJoint; pin : PdFloat); cdecl; external NEWTON_API;
  862. procedure NewtonUpVectorSetPin(upVector : NewtonJoint; pin : PdFloat); cdecl; external NEWTON_API;
  863. function NewtonConstraintCreateUserJoint(newtonWorld : NewtonWorld; maxDOF : Integer; callback : NewtonUserBilateralCallback; getInfo : NewtonUserBilateralGetInfoCallback; childBody : NewtonBody; parentBody : NewtonBody) : NewtonJoint; cdecl; external NEWTON_API;
  864. function NewtonUserJointGetSolverModel(joint : NewtonJoint) : Integer; cdecl; external NEWTON_API;
  865. procedure NewtonUserJointSetSolverModel(joint : NewtonJoint; model : Integer); cdecl; external NEWTON_API;
  866. procedure NewtonUserJointSetFeedbackCollectorCallback(joint : NewtonJoint; getFeedback : NewtonUserBilateralCallback); cdecl; external NEWTON_API;
  867. procedure NewtonUserJointAddLinearRow(joint : NewtonJoint; pivot0 : PdFloat; pivot1 : PdFloat; dir : PdFloat); cdecl; external NEWTON_API;
  868. procedure NewtonUserJointAddAngularRow(joint : NewtonJoint; relativeAngle : dFloat; dir : PdFloat); cdecl; external NEWTON_API;
  869. procedure NewtonUserJointAddGeneralRow(joint : NewtonJoint; jacobian0 : PdFloat; jacobian1 : PdFloat); cdecl; external NEWTON_API;
  870. procedure NewtonUserJointSetRowMinimumFriction(joint : NewtonJoint; friction : dFloat); cdecl; external NEWTON_API;
  871. procedure NewtonUserJointSetRowMaximumFriction(joint : NewtonJoint; friction : dFloat); cdecl; external NEWTON_API;
  872. function NewtonUserCalculateRowZeroAccelaration(joint : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  873. function NewtonUserJointGetRowAcceleration(joint : NewtonJoint) : dFloat; cdecl; external NEWTON_API;
  874. procedure NewtonUserJointSetRowAcceleration(joint : NewtonJoint; acceleration : dFloat); cdecl; external NEWTON_API;
  875. procedure NewtonUserJointSetRowSpringDamperAcceleration(joint : NewtonJoint; rowStiffness : dFloat; spring : dFloat; damper : dFloat); cdecl; external NEWTON_API;
  876. procedure NewtonUserJointSetRowStiffness(joint : NewtonJoint; stiffness : dFloat); cdecl; external NEWTON_API;
  877. function NewtonUserJoinRowsCount(joint : NewtonJoint) : Integer; cdecl; external NEWTON_API;
  878. procedure NewtonUserJointGetGeneralRow(joint : NewtonJoint; index : Integer; jacobian0 : PdFloat; jacobian1 : PdFloat); cdecl; external NEWTON_API;
  879. function NewtonUserJointGetRowForce(joint : NewtonJoint; row : Integer) : dFloat; cdecl; external NEWTON_API;
  880. function NewtonMeshCreate(newtonWorld : NewtonWorld) : NewtonMesh; cdecl; external NEWTON_API;
  881. function NewtonMeshCreateFromMesh(mesh : NewtonMesh) : NewtonMesh; cdecl; external NEWTON_API;
  882. function NewtonMeshCreateFromCollision(collision : NewtonCollision) : NewtonMesh; cdecl; external NEWTON_API;
  883. function NewtonMeshCreateTetrahedraIsoSurface(mesh : NewtonMesh) : NewtonMesh; cdecl; external NEWTON_API;
  884. function NewtonMeshCreateConvexHull(newtonWorld : NewtonWorld; pointCount : Integer; vertexCloud : PdFloat; strideInBytes : Integer; tolerance : dFloat) : NewtonMesh; cdecl; external NEWTON_API;
  885. function NewtonMeshCreateVoronoiConvexDecomposition(newtonWorld : NewtonWorld; pointCount : Integer; vertexCloud : PdFloat; strideInBytes : Integer; materialID : Integer; textureMatrix : PdFloat) : NewtonMesh; cdecl; external NEWTON_API;
  886. function NewtonMeshCreateFromSerialization(newtonWorld : NewtonWorld; deserializeFunction : NewtonDeserializeCallback; serializeHandle : Pointer) : NewtonMesh; cdecl; external NEWTON_API;
  887. procedure NewtonMeshDestroy(mesh : NewtonMesh); cdecl; external NEWTON_API;
  888. procedure NewtonMeshSerialize(mesh : NewtonMesh; serializeFunction : NewtonSerializeCallback; serializeHandle : Pointer); cdecl; external NEWTON_API;
  889. procedure NewtonMeshSaveOFF(mesh : NewtonMesh; filename : Pchar); cdecl; external NEWTON_API;
  890. function NewtonMeshLoadOFF(newtonWorld : NewtonWorld; filename : Pchar) : NewtonMesh; cdecl; external NEWTON_API;
  891. function NewtonMeshLoadTetrahedraMesh(newtonWorld : NewtonWorld; filename : Pchar) : NewtonMesh; cdecl; external NEWTON_API;
  892. procedure NewtonMeshApplyTransform(mesh : NewtonMesh; matrix : PdFloat); cdecl; external NEWTON_API;
  893. procedure NewtonMeshCalculateOOBB(mesh : NewtonMesh; matrix : PdFloat; x : PdFloat; y : PdFloat; z : PdFloat); cdecl; external NEWTON_API;
  894. procedure NewtonMeshCalculateVertexNormals(mesh : NewtonMesh; angleInRadians : dFloat); cdecl; external NEWTON_API;
  895. procedure NewtonMeshApplySphericalMapping(mesh : NewtonMesh; material : Integer); cdecl; external NEWTON_API;
  896. procedure NewtonMeshApplyCylindricalMapping(mesh : NewtonMesh; cylinderMaterial : Integer; capMaterial : Integer); cdecl; external NEWTON_API;
  897. procedure NewtonMeshApplyBoxMapping(mesh : NewtonMesh; frontMaterial : Integer; sideMaterial : Integer; topMaterial : Integer); cdecl; external NEWTON_API;
  898. procedure NewtonMeshApplyAngleBasedMapping(mesh : NewtonMesh; material : Integer; reportPrograssCallback : NewtonReportProgress; reportPrgressUserData : Pointer); cdecl; external NEWTON_API;
  899. procedure NewtonCreateTetrahedraLinearBlendSkinWeightsChannel(tetrahedraMesh : NewtonMesh; skinMesh : NewtonMesh); cdecl; external NEWTON_API;
  900. procedure NewtonMeshOptimize(mesh : NewtonMesh); cdecl; external NEWTON_API;
  901. procedure NewtonMeshOptimizePoints(mesh : NewtonMesh); cdecl; external NEWTON_API;
  902. procedure NewtonMeshOptimizeVertex(mesh : NewtonMesh); cdecl; external NEWTON_API;
  903. function NewtonMeshIsOpenMesh(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  904. procedure NewtonMeshFixTJoints(mesh : NewtonMesh); cdecl; external NEWTON_API;
  905. procedure NewtonMeshPolygonize(mesh : NewtonMesh); cdecl; external NEWTON_API;
  906. procedure NewtonMeshTriangulate(mesh : NewtonMesh); cdecl; external NEWTON_API;
  907. function NewtonMeshUnion(mesh : NewtonMesh; clipper : NewtonMesh; clipperMatrix : PdFloat) : NewtonMesh; cdecl; external NEWTON_API;
  908. function NewtonMeshDifference(mesh : NewtonMesh; clipper : NewtonMesh; clipperMatrix : PdFloat) : NewtonMesh; cdecl; external NEWTON_API;
  909. function NewtonMeshIntersection(mesh : NewtonMesh; clipper : NewtonMesh; clipperMatrix : PdFloat) : NewtonMesh; cdecl; external NEWTON_API;
  910. procedure NewtonMeshClip(mesh : NewtonMesh; clipper : NewtonMesh; clipperMatrix : PdFloat; topMesh : NewtonMesh; bottomMesh : NewtonMesh); cdecl; external NEWTON_API;
  911. function NewtonMeshConvexMeshIntersection(mesh : NewtonMesh; convexMesh : NewtonMesh) : NewtonMesh; cdecl; external NEWTON_API;
  912. function NewtonMeshSimplify(mesh : NewtonMesh; maxVertexCount : Integer; reportPrograssCallback : NewtonReportProgress; reportPrgressUserData : Pointer) : NewtonMesh; cdecl; external NEWTON_API;
  913. function NewtonMeshApproximateConvexDecomposition(mesh : NewtonMesh; maxConcavity : dFloat; backFaceDistanceFactor : dFloat; maxCount : Integer; maxVertexPerHull : Integer; reportProgressCallback : NewtonReportProgress; reportProgressUserData : Pointer) : NewtonMesh; cdecl; external NEWTON_API;
  914. procedure NewtonRemoveUnusedVertices(mesh : NewtonMesh; vertexRemapTable : PInteger); cdecl; external NEWTON_API;
  915. procedure NewtonMeshBeginBuild(mesh : NewtonMesh); cdecl; external NEWTON_API;
  916. procedure NewtonMeshBeginFace(mesh : NewtonMesh); cdecl; external NEWTON_API;
  917. procedure NewtonMeshAddPoint(mesh : NewtonMesh; x : dFloat64; y : dFloat64; z : dFloat64); cdecl; external NEWTON_API;
  918. procedure NewtonMeshAddLayer(mesh : NewtonMesh; layerIndex : Integer); cdecl; external NEWTON_API;
  919. procedure NewtonMeshAddMaterial(mesh : NewtonMesh; materialIndex : Integer); cdecl; external NEWTON_API;
  920. procedure NewtonMeshAddNormal(mesh : NewtonMesh; x : dFloat; y : dFloat; z : dFloat); cdecl; external NEWTON_API;
  921. procedure NewtonMeshAddBinormal(mesh : NewtonMesh; x : dFloat; y : dFloat; z : dFloat); cdecl; external NEWTON_API;
  922. procedure NewtonMeshAddUV0(mesh : NewtonMesh; u : dFloat; v : dFloat); cdecl; external NEWTON_API;
  923. procedure NewtonMeshAddUV1(mesh : NewtonMesh; u : dFloat; v : dFloat); cdecl; external NEWTON_API;
  924. procedure NewtonMeshEndFace(mesh : NewtonMesh); cdecl; external NEWTON_API;
  925. procedure NewtonMeshEndBuild(mesh : NewtonMesh); cdecl; external NEWTON_API;
  926. procedure NewtonMeshClearVertexFormat(format : NewtonMeshVertexFormat); cdecl; external NEWTON_API;
  927. procedure NewtonMeshBuildFromVertexListIndexList(mesh : NewtonMesh; format : NewtonMeshVertexFormat); cdecl; external NEWTON_API;
  928. function NewtonMeshGetPointCount(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  929. function NewtonMeshGetIndexToVertexMap(mesh : NewtonMesh) : PInteger; cdecl; external NEWTON_API;
  930. function NewtonMeshGetVertexWeights(mesh : NewtonMesh; vertexIndex : Integer; weightIndex : PInteger; weightFactor : PdFloat) : Integer; cdecl; external NEWTON_API;
  931. procedure NewtonMeshGetVertexDoubleChannel(mesh : NewtonMesh; vertexStrideInByte : Integer; outBuffer : PdFloat64); cdecl; external NEWTON_API;
  932. procedure NewtonMeshGetVertexChannel(mesh : NewtonMesh; vertexStrideInByte : Integer; outBuffer : PdFloat); cdecl; external NEWTON_API;
  933. procedure NewtonMeshGetNormalChannel(mesh : NewtonMesh; vertexStrideInByte : Integer; outBuffer : PdFloat); cdecl; external NEWTON_API;
  934. procedure NewtonMeshGetBinormalChannel(mesh : NewtonMesh; vertexStrideInByte : Integer; outBuffer : PdFloat); cdecl; external NEWTON_API;
  935. procedure NewtonMeshGetUV0Channel(mesh : NewtonMesh; vertexStrideInByte : Integer; outBuffer : PdFloat); cdecl; external NEWTON_API;
  936. procedure NewtonMeshGetUV1Channel(mesh : NewtonMesh; vertexStrideInByte : Integer; outBuffer : PdFloat); cdecl; external NEWTON_API;
  937. procedure NewtonMeshGetVertexColorChannel(mesh : NewtonMesh; vertexStrideInByte : Integer; outBuffer : PdFloat); cdecl; external NEWTON_API;
  938. function NewtonMeshHasNormalChannel(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  939. function NewtonMeshHasBinormalChannel(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  940. function NewtonMeshHasUV0Channel(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  941. function NewtonMeshHasUV1Channel(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  942. function NewtonMeshHasVertexColorChannel(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  943. function NewtonMeshBeginHandle(mesh : NewtonMesh) : Pointer; cdecl; external NEWTON_API;
  944. procedure NewtonMeshEndHandle(mesh : NewtonMesh; handle : Pointer); cdecl; external NEWTON_API;
  945. function NewtonMeshFirstMaterial(mesh : NewtonMesh; handle : Pointer) : Integer; cdecl; external NEWTON_API;
  946. function NewtonMeshNextMaterial(mesh : NewtonMesh; handle : Pointer; materialId : Integer) : Integer; cdecl; external NEWTON_API;
  947. function NewtonMeshMaterialGetMaterial(mesh : NewtonMesh; handle : Pointer; materialId : Integer) : Integer; cdecl; external NEWTON_API;
  948. function NewtonMeshMaterialGetIndexCount(mesh : NewtonMesh; handle : Pointer; materialId : Integer) : Integer; cdecl; external NEWTON_API;
  949. procedure NewtonMeshMaterialGetIndexStream(mesh : NewtonMesh; handle : Pointer; materialId : Integer; index : PInteger); cdecl; external NEWTON_API;
  950. procedure NewtonMeshMaterialGetIndexStreamShort(mesh : NewtonMesh; handle : Pointer; materialId : Integer; index : PSmallint); cdecl; external NEWTON_API;
  951. function NewtonMeshCreateFirstSingleSegment(mesh : NewtonMesh) : NewtonMesh; cdecl; external NEWTON_API;
  952. function NewtonMeshCreateNextSingleSegment(mesh : NewtonMesh; segment : NewtonMesh) : NewtonMesh; cdecl; external NEWTON_API;
  953. function NewtonMeshCreateFirstLayer(mesh : NewtonMesh) : NewtonMesh; cdecl; external NEWTON_API;
  954. function NewtonMeshCreateNextLayer(mesh : NewtonMesh; segment : NewtonMesh) : NewtonMesh; cdecl; external NEWTON_API;
  955. function NewtonMeshGetTotalFaceCount(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  956. function NewtonMeshGetTotalIndexCount(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  957. procedure NewtonMeshGetFaces(mesh : NewtonMesh; faceIndexCount : PInteger; faceMaterial : PInteger; faceIndices : Pointer); cdecl; external NEWTON_API;
  958. function NewtonMeshGetVertexCount(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  959. function NewtonMeshGetVertexStrideInByte(mesh : NewtonMesh) : Integer; cdecl; external NEWTON_API;
  960. function NewtonMeshGetVertexArray(mesh : NewtonMesh) : PdFloat64; cdecl; external NEWTON_API;
  961. function NewtonMeshGetFirstVertex(mesh : NewtonMesh) : Pointer; cdecl; external NEWTON_API;
  962. function NewtonMeshGetNextVertex(mesh : NewtonMesh; vertex : Pointer) : Pointer; cdecl; external NEWTON_API;
  963. function NewtonMeshGetVertexIndex(mesh : NewtonMesh; vertex : Pointer) : Integer; cdecl; external NEWTON_API;
  964. function NewtonMeshGetFirstPoint(mesh : NewtonMesh) : Pointer; cdecl; external NEWTON_API;
  965. function NewtonMeshGetNextPoint(mesh : NewtonMesh; point : Pointer) : Pointer; cdecl; external NEWTON_API;
  966. function NewtonMeshGetPointIndex(mesh : NewtonMesh; point : Pointer) : Integer; cdecl; external NEWTON_API;
  967. function NewtonMeshGetVertexIndexFromPoint(mesh : NewtonMesh; point : Pointer) : Integer; cdecl; external NEWTON_API;
  968. function NewtonMeshGetFirstEdge(mesh : NewtonMesh) : Pointer; cdecl; external NEWTON_API;
  969. function NewtonMeshGetNextEdge(mesh : NewtonMesh; edge : Pointer) : Pointer; cdecl; external NEWTON_API;
  970. procedure NewtonMeshGetEdgeIndices(mesh : NewtonMesh; edge : Pointer; v0 : PInteger; v1 : PInteger); cdecl; external NEWTON_API;
  971. function NewtonMeshGetFirstFace(mesh : NewtonMesh) : Pointer; cdecl; external NEWTON_API;
  972. function NewtonMeshGetNextFace(mesh : NewtonMesh; face : Pointer) : Pointer; cdecl; external NEWTON_API;
  973. function NewtonMeshIsFaceOpen(mesh : NewtonMesh; face : Pointer) : Integer; cdecl; external NEWTON_API;
  974. function NewtonMeshGetFaceMaterial(mesh : NewtonMesh; face : Pointer) : Integer; cdecl; external NEWTON_API;
  975. function NewtonMeshGetFaceIndexCount(mesh : NewtonMesh; face : Pointer) : Integer; cdecl; external NEWTON_API;
  976. procedure NewtonMeshGetFaceIndices(mesh : NewtonMesh; face : Pointer; indices : PInteger); cdecl; external NEWTON_API;
  977. procedure NewtonMeshGetFacePointIndices(mesh : NewtonMesh; face : Pointer; indices : PInteger); cdecl; external NEWTON_API;
  978. procedure NewtonMeshCalculateFaceNormal(mesh : NewtonMesh; face : Pointer; normal : PdFloat64); cdecl; external NEWTON_API;
  979. procedure NewtonMeshSetFaceMaterial(mesh : NewtonMesh; face : Pointer; matId : Integer); cdecl; external NEWTON_API;
  980.  
  981.  
  982. implementation
  983.  
  984. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement