// ********************************************************************************************************************
Newton Game Dynamic 2.0

- still pending refactor graphics system.
- still pending complete animation.
- still pending post drive animation adaptation.
- still pending complete raycast car
- still pending complete mutibody car
- still pending global scaling.
- still pending using -ipx flag to build adress indemenden bunary in linux.
- still pending add the funtuin to get teh global matrial of a contct joint even when no contact are generated (for triggers).
- still pending add teh ability to make tire aoutside teh contact joint for a car.
- check Gianluca post about Inertia http://www.newtondynamics.com/forum/viewtopic.php?f=9&t=4687
- add the ability to add a body to the tire http://www.newtongamedynamics.com/forum/viewtopic.php?f=12&t=4537&sid=e334a66825adf35614e9f1a64ccf423f
- add -D_REENTRANT and -lpthread in order to build the samples (ubuntu 7.10 gcc 4.1.3). 

- fixed custom joint in SDK demos had improper limits and parameters. 
- fixed vehicle were not frozen when leaving the world box 
- fixed collision tree optimized bug, sometime creating estrange polygon on collision mesh like quake BSP.
- fixed collision between convex objects with ratio over 10000 to one were causing memory over run of the stack.
- fixed collision tree malfunction when adding polygons with multiple face IDs.
- fixed contact calculation were filtered out if closer than 0.034 units, now they are filtered if they are closer than 0.0001 units
- improved contact calculation for continue collision now generating better contacts set.
- improved calculation of buoyancy forces, (up to to 10 time faster).
- improved convex hull construction much faster and robust.
- improved Compound collision are now duplicated automatically, so tey application can use then just like the are shared objects.
- improved convex hull will return NULL if the function fail to build the Mesh. applications must check for this result
- improved NewtonContactsProcess is now call one per collidgin pairs, teh application can use GetFirstContacGet/GetNxstContact ro operate ont contacts
- function NewtonAddBodyImpulse is changed to NewtonBodyAddImpulse.
- function NewtonConvexCollisionSetUserID is changed to NewtonCollisionSetUserID.
- function NewtonConvexCollisionGetUserID is changed to NewtonCollisionGetUserID.

- function collback NewtonContactBegin is changed to NewtonOnAABBOverlap
- function NewtonBodyGetSleepingState is changed to NewtonBodyGetSleepState
- function NewtonBodyGetAutoFreeze is changed to NewtonBodyGetAutoSleep
- function NewtonBodySetAutoFreeze is changed to NewtonBodySetAutoSleep
- function NewtonTreeCollisionSetUserCallback is changed to NewtonStaticCollisionSetDebugCallback 

- function NewtonWorldFreezeBody is changed to NewtonBodyGetFreezeState
- function NewtonWorldUnfreezeBody is changed to NewtonBodySetFreezeState
- function NewtonGetBodyCount is changed to NewtonWorldGetBodyCount

- function callback (*NewtonBallCallBack) now passes  the tiemstep as argument
- function callback (*NewtonUserBilateralCallBack) now passes  the tiemstep as argument
- function callback (*NewtonApplyForceAndTorque) now passes  the tiemstep as argument
- function callback (*NewtonContactsProcess) now passes the colliding bodies and  tiemstep as argument
- function callback (*NewtonContactEnd) now passes  the colliding bodies as arguments

- added NewtonCreate no loneg take teh memory function as argument, 
- added NewtonSetMemorySystem to resolve creation of mutiples world conflicts for reparate application threads
- added NewtonMesh object, for special effect functionality. 
- added NewtonCreateHeightFieldCollision object as collision primitive. 
- added came is now multi cores support using the OS native multi threaded API
- added material can set distance tolerance between contact points.
- added function to read triangles in aabb  from a collision tree (vertex list index list format).
- added performance counters for profiling.
- added convex hull can pass a tolerance parameter for making a loose approximation and improve performance.
- added interface for collecting information from collision objects
- added interface for collecting information from joint objects
- added serialization and deserialization for all collision primitives.
- added linear time solver stable constraint for handling large scale game scenes
- added island update callback functionality and interface
- added function to increase reference count on a collision primitive;
- added function to read the total memory used by the engine. 
- added function to flush internal caches, useful for synchronization and replays.
- added basics ray cast car joint.
- added function to increase the reference count of a collision shape
- added function to read the force and torque accumulators from joint call back 
- added function to to calculate the sopporting vertex on convex collision shapes 
- added function callback to custom defined joints, for collecting forces calculated by the solver in the same frame.
- added function NewtonJointGetBody0 and NewtonJointGetBody1 to get the bodies conecyted by a joint
- added function NewtonCalculateSpringDamperAcceleration to help with spring system force and acceleration.
- added function NewtonBodyGetFirstJoint and NewtonBodyGetNextJoint for getting joints attached to a rigid body.
- added function NewtonBodyGetFirstContactJoint and NewtonBodyGetNextContactJoint for fast queries of teh bodies colliding with anothe body with out call back.
- added function NewtonContactJointGetFirstContact and NewtonContactJointGetNextContact for fast queries of contact form a joint contact outside teh matril callbacks.
- added function NewtonContactJointRemoveContact to be able to delete contacts for a contact joints
- added function NewtonContactGetMaterial to collect the material asigned to a contact jrom a contact joint ;
- added function NewtonUserJointSetFeedbackCollectorCallback allow for joint to read the force after the solver solution and before integration 
- added function NewtonCreateConvexHullFromMesh to create effect collision for a mesh effect.
- added function NewtonCreateCollisionCompoundFromMesh to create compound collisions from airtight coinve meshes. 
- added function NewtonBodyCalculateInverseDynamicsForce to calculate invesedymnai forces during callbacks
- added function NewtonWorldGetConstraintCount
- added function NewtonCollisionSetMaxBreakForce for setting max breaking force of a shape
- added function NewtonCollisionSetMaxBreakForce for reading max breaking force of a shape

- added CustumRayCastVehicle as custom joint
- added CustumMultibodyVehicle as custom joint
- added function NewtonWorldCriticalSectionLock/NewtonWorldCriticalSectionUnlock for executing unsafe code form call back.
- addef function NewtonWorldGetFirstMaterial/GetNextMaterial usefull for debuging and serialization
- added funtion NewtonWorldGetFirstBody/NewtonWorldGetNextBody for iteration ove the body list 
- added funtion NewtonCollisionUpdate for applications that require scene base collision system independent from dynamicss update.
- added Destructor call back to teh Newton World. 
- added Boolean Operation of NewtonMesh. 
- added Simple Convex Spahe Destruction effect. 


- removed NewtonWorldForEachBodyDo use NewtonWorldGetFirstBody/NewtonWorldGetNextBody pair
- removed NewtonContactEnd use NewtonContactsProcess
- removed NewtonMaterialSetContactStaticFrictionCoef use NewtonMaterialSetContactFrictionCoef intead
- removed NewtonMaterialSetContactKineticFrictionCoef use NewtonMaterialSetContactFrictionCoef intead
- removed interface to build in ragdoll joint, application should use CustomRagDoll instead	
- removed interface to build in vehicle joint, application shoulf use CustomMultibodyVehicle or CustomRayCastVehicle instead
- removed NewtonGetTimeStep instead applicataton should use tieme step pass in callback 
- removed NewtonMaterialGetCurrentTimestep instead applicataton should use tieme step pass in callback 
- removed NewtonGetActiveBodiesCount
- removed NewtonBodyForEachPolygonDo, and replaced with NewtonCollisionForEachPolygonDo
- removed NewtonMaterialDisableContact 
- removed NewtonTreeCollisionSerialize 
- removed NewtonCreateTreeCollisionFromSerialization
- removed NewtonGetActiveConstraintsCount as it can be added as external force in the callback
- removed NewtonBodyGetGyroscopicForcesMode as it can be applied for the force and torque callback
- removed NewtonBodySetAutoactiveCallback as it can be added as external force in the callback
- removed NewtonBodyCoriolisForcesMode as it can be added as external force in the callback
- removed NewtonBodySetAutoFreeze as it can be controlled form the force callback
- removed NewtonBodySetFreezeTreshold as it can be also control for the force call back
- removed NewtonBodyGetSleepingState
- removed NewtonBodyGetAutoFreeze
- removed NewtonBodyGetFreezeTreshold
- reimplement character controller(now veleocity based and simpler to used)
- removed NewtonCollisionSetUserID now the collision ID is part of the shape creation parameters for single convex primtives

 

// ********************************************************************************************************************
Newton Game Dynamic 1.53


- fixed documentation on function NewtonBodySetMatrixRecursive, now agree with header file description.
- fixed function NewtonBodyGetForce now returns correct net force applied by the solver to the body.
- fixed function NewtonBodyGetTorque now returns correct net torque applied by the solver to the body.
- fixed separate collision with compound collision was not working correctly.
- fixed collision tree faces are single sided for ray casting and also for contact points.
- fixed spherical surfaced objects do not jumps when crossing across share edge of collision tree adjacent faces.
- fixed vehicle joint no longer explode due to tires spinning out of control
  when the vehicle was airborne and continue torque was applied to tires.
  tire max speed is clamped at 500 m/s per second on idle. 
- fixed sphere and polygon edge contacts were rejected when contact was exactly over the edge
  now contacts on edge are included as valid. 
- fixed NewtonConvexCollisionCalculateInertialMatrix on compound collision aggregates was using 
  a matrix from a last update instead of the normal primitive offset.
- fixed contact point between sphere collision were calculated incorrectly, they could cause big 
  misbehavior on games likes pool. (special thanks to user LtJax, for reporting the bug privatively) 
- Improvement tree collision is not longer based on Bounding Boxes hierarchies for polygon queries, 
  a proprietary faster algorithm with smaller data structure is used instead. 
- API change function NewtonWorldRayCast now take an extra prefilter parameter for smarter and faster filtering.
- SDK ray cast now show normals and ray at ray hit position on static geometries.
- Added Linux build now recognize SSE instruction set if present in eh system.
- Added Mac build now works with universal binary, it also make use of altivec and SEE, if present in the system
- Mac build is compatible with G3/G4/G5 running OS10
- modification linear and angular damping, are clamped between 0.0 and 1.0 (allowing for not damping forces in simulations).



// ********************************************************************************************************************
Newton Game Dynamic 1.52

-license has been modified to include the specific engine release.
-license clause specifying the Newton logo should be on any splash screen has been change to say the logo should be on any credit screen.
-changed lower limit of mass to be considered static body form 0.01 to 0.001
-slight overall engine optimization be replacing some of the standard math function with custom inline versions.
-fixed SetMinimunFrameRate now clamp fps between 60 and 1000 frame per second. 
-fixed convex hull prototype did not have const argument in front of input arguments.
-fixed documentation on NewtonBodyGetSleepingState and NewtonBodyGetAutoFreeze was incorrect.
-fixed buoyancy force calculation now works with transform modifiers. 
-added function NewtonWorldForEachBodyInAABBDo


// ********************************************************************************************************************
Newton Game Dynamic 1.51

-Fixed vehicles tires friction was too weak.
-Fixed Vehicle collision with other dynamic bodies was too hard.
-Fixed ray cast normal in some primitives were inconsistent or un-rotated.
-Fixed debug display of convex modifier with non identity matrix offset were displaying incorrectly.
-Fixed setting center of mass after the body matrix was not shifting the initial matrix position of the body.
-Fixed continues collision was ignoring collision objects that where touching but not colliding. Allowing for fast moving body pass trough each other’s. 
-Fixed trivial rejection of convex primitives incorrectly rejecting collision with large flat convex polygon, leading to tire lost of traction.
-Fixed bug skipping clean contact generation across flat polygons between collision tree and convex primitives.
-Added marking of flat and concave edges on user defined meshes (see height field tutorial)
-Removed compiler option /Gs10000000 from visual studio (crash in some windows system).
-Removed Virtual memory used because horrendous vs8 does not handle virtual memory correctly.
 (this may low down the collision tree generation of windows systems)


// ********************************************************************************************************************
Newton Game Dynamic 1.5

- Improvement simple vehicle joint has been redesigned for easy implementation.
- Improvement optimized contact calculation for, capsules, cylinders and cones.
- Improvement tree optimizer now generates nicer optimized convex polygonal meshes.
- Improvement bilateral joints constraint are much more stable and less prompt to blow up.
- Improvement collision tree filter contact across coplanar and concave faces. 
- Improvement implemented new unique algorithm for contact selection, now does not have upper bound in contacts calculation.
- Fixed bug ray cast on convex hulls geometry is pixel accurate now.
- Fixed bug unstable contact point calculation for capsules collision.
- Fixed bug ray cast on boxes on rare occasion producing wrong intersection.
- Fixed collision tree optimizer much faster at building optimized collision.   
- Fixed bug crash when adding NULL collision geometry to a compound aggregates.
- Fixed bug convex hull on point clouds of 4 vertices not longer crash the engine.
- Fixed bug ray casting on all collision geometries not longer is one frame behind.
- Fixed bug debug displayed collision primitive were rendered one frame behind the update.
- Fixed bug in collision tree optimizer adding multiple triangle layers when multiple ID where used.
- Fixed bug in convex collision primitives not been cached properly (very important for memory saving)
- Fixed bug with ray cast occasionally missing collision when called from outside of a Newton Update call.
- Fixed random crash bug due to pointers alias between the solver and the collision system charing the same memory buffer.  
- Fixed collision tree optimizer not longer run out of memory for reasonable size memory meshes (2 million triangles or larger)  
- API all dll version are now mutithreaded.
- API vehicle joint function NewtonVehicleBalanceTires has been deprecated.
- API change function NewtonWorldCollide is changed to NewtonCollisionCollide.
- API change function NewtonWorldCollide is changed to NewtonCollisionCollide.
- API change function tire ID are pointers instead of unsigned integers.
- API change function Buoyancy callback function now report the collision ID of the current geometry
- API change function NewtonCreateConvexHull not longer take a matrix offset as parameter.
- API change function NewtonConvexCollisionCalculateVolume is changed to NewtonConvexCollisionCalculateVolume
- New feature added calculation of the closest point and separating vector from a point to convex geometries.
- New feature added calculation of the closest point and separating vector between two convex geometries.
- New feature the ability to offset the center of mass of a rigid body.
- New feature custom joint now can act like spring/damper system.
- New feature custom joint Jacobian matrix is fully exposed to the application.
- New feature implementation of continue collision base of translational speed.
- New feature added function to calculate inertia matrix of a convex collision objects.


// ********************************************************************************************************************
Newton Game Dynamic 1.32a

- engine is ported to Linux on PC
- create Unix make files for all SDK tutorials
- all SDK tutorial are converted to use GLUT, instead of specialized OS calls.
 

// ********************************************************************************************************************
Newton Game Dynamic 1.32

- made SDK compatible with Win32 and Mac OS X 
- added single and double precision library. (pc only for now)
  for double precision mode the app should define __USE_DOUBLE_PRECISION__ 
  before including Newton.h, and also link to any of the double precision libraries.
- fixed bug when calculating isotropic friction correction.
- fixed strange bug that made joints and contacts acting too soft.
- fixed crash bug on collision tree with degenerated triangles (slivers).
- significant improvement of collision tree builder optimizer, now much faster.
- refactoring all tutorials samples code (added the tool box some utility functions)
- remove the P4 optimization option from the compiler, library should now work on celerons.
- fixed crash bug when calculating over 128 contacts between a convex primitive and a tree mesh.
- added the dry rolling friction to the custom joint library, good for ball games like pool, or pinballs etc.


// ********************************************************************************************************************
Newton Game Dynamic beta 1.31

- improved character controller. 
- improved coulomb kinetic friction model.
- added support for user defined custom joints.
- added global adaptive coulomb friction model.
- re-arranged sample tutorials to add the custom joint library.
- fixed ray casting cone primitives now return the correct intersection.
- added solver configuration mode, allowing for speed vs accuracy setups.
- fixed access violation crash bug when building very small convex hulls.
- fixed collision tree modifier now inhered collision ID from the child geometry.
- fixed collision primitive ray cast now return the correct normal at the intersection point
- reduced minimum viscous damping coefficient on rigid body from 0,1 to 1.0e-4, default still 0.1
- fixed bug with collision tree allowing them to act like dynamics body if non zero mass was assigned.
- fixed Collision bug. When the origin of sphere was inside a box collision returned not contact points.
- fixed un-initialized Jacobian when setting angular constraint row on bodies attached to world by joints.
- replaced vehicle tires integrator from RK2 to implicit, this allow for more tight and easier to setup suspensions.
- fixed bug with slider and corkscrew joint jacobian using the wrong direction vector, causing the objects to wobble.
- fixed ray cast with collision tree sometime reporting false collision when a ray was close to a very small polygon.


// ********************************************************************************************************************
Newton Game Dynamic beta 1.30

- lots of more features
- vehicle joint 
- added library version.
- improve character controller (in progress)
- added more implicit collision primitives
- added collision primitive deformation matrix
- added arbitrary convex hull collision primitive
- Rag doll joint now can take an arbitrary collision primitive
- added continues collision mode for high speed objects (in progress)
- fixed spurious crash bug in collision tree optimizer
- added ray cast function 
- function add impulse no longer take the world as argument
- function callback onbodyLeaveworld does not take the world as argument
- fixed bug in utility callback tracking bodies actives in the scene
- several internal bug fixes.
- move to visual studio net 2003
- To link with libraries you will need to declare _NEWTON_USE_LIB before you include newton.h in your project
- if you are linking visual with VS 6. You will need to declare the following in any of you C or C++ modules
	#if (_MSC_VER >= 1300) 
		//VC7 or later, building with pre-VC7 runtime libraries
		//defined by VC6 C libs
		extern "C" long _ftol (double); 
		extern "C" long _ftol2( double dblSource ) 
		{ 
			return _ftol( dblSource ); 
		}
	#endif

// ********************************************************************************************************************
Newton Game Dynamic beta 1.23

- fixed bug with up vector joint in some case producing random crashes  
- added notify application when a body is about to be activate or deactivated
- fixed another bug in collision tree causing to drop face is some cases
- fixed camera stouter one frame behind the player in all tutorials.    

// ********************************************************************************************************************
Newton Game Dynamic beta 1.22

- Fixed Collision tree optimizer crash when large mesh with lot of non manifold faces
- Improve dynamics solver much faster especially when handling large pile of objects 
- Increase max number objects in a single pile to 512, from 256 (use about 200k more of memory, no performance degradation)
- Combined common joint functionality in to generic function (collision state, user data, destruction)
- Added up vector constraint, this is useful to control first and third person characters.
- Added corkscrew constraint.
- Added collision tree tutorial A
- Added material tutorial
- Added up character tutorial using vector (advance tutorial
- Added using joints tutorial 
- Improved existing tutorials
- Fixed bug on existing tutorials that was causing bodies to spin the wrong direction making it looks like the physics solution was inaccurate


// ********************************************************************************************************************
Newton Game Dynamic beta 1.21

- Fixed engine hangs in a infinite loop when calling NewtonDestroBody
- Fixed pointer to a vector of 3 dgFloat32 know can be literally an array of tree floats and not the first three element of a 4d vector


// ********************************************************************************************************************
Newton Game Dynamic beta 1.20

-Fixed bodies can be destroy from any call back or at any time
-Fixed joints can be destroy from any call back or at any time
-Remove DX9 tutorials and replaced with open gl tutorial
-Added Joints can disable collision of the linked bodies
-Added Bodies can disable collision with other bodies in the same chain or hierarchy 
-Added Body iterator function for debugging and for other application purpose
-Added Collision Iterator function for debugging and other purpose
-Added context parameter to the buoyancy force call back
-Added Inertia tensor is clipped to between the interval [0.01 * mass - 100.0 * mass], 
 this prevent extreme Coriolis forces behavior that could lead to explosion.	
-Added full ball and socket joint with user feedback
-Added full hinge joint with user feedback
-Added full slider joint with user feedback
-Added full Rag doll constraint 



// ********************************************************************************************************************
Newton Game Dynamic beta 1.10

-Remove time limit from beta (this is still a beta version, no responsible for malfunction functions if you use it in an final project)
-Fixed bug in optimize Collision tree. When there were too many degenerated faces.
-Fixed bug in optimize Collision tree. When the surface does not conform a manifold (like Quake3 BSPs)
-Fixed bug: filter polygon with zero area before passing then to tree collision

// ********************************************************************************************************************
Newton Game Dynamic beta 1.00

This is a beta demo of Newton Game dynamics. the simulation runs for 10 minutes of is launch and the it shut down.
This is done in order to prevent user for trying to uses an incomplete product in a final product.
This time limit will be removed for the beta in the final release.

-Fixed jitter bug on non Intel CPU
-Fixed jitter on slow CPU
-Better function documentation
-Fixed bug when passing zero mass to a rigid body


Enjoy
Newton



