BUILDING REQUIREMENTS:
-----------------------

-> Bullet2(*)					(-lBulletWorldImporter -lBulletFileLoader -lOpenGLSupport -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath)
-> HACD (by Khaled Mamou) current SVN version	(the version commonly found in Bullet/Extra/HACD does not work for this demo AFAIR)
-> freeglut					(on Linux it's -lGLUT, on Windows it's required)

Please be sure to compile the libraries above before proceeding.

------------------------
HOW TO COMPILE THE DEMO:
------------------------
There are two files:

Hinge2VehicleDemoLinux.pro for Qt Creator (tested on Linux)
Hinge2VehicleDemoMingw.cbp for CodeBlocks (tested on Linux too, but for Win32)

These two files won't work out of the box and must be edited and arranged a bit before compiling.

It shouldn't be too difficult to create a Visual C++ project too (opening the two files above with a text editor might help).


(*)
--------------------------
BT_USE_DOUBLE_PRECISION
--------------------------
Both Bullet2 and this demo can be compiled with the definition BT_USE_DOUBLE_PRECISION.
This seems to affect only how easily the train can go out of the railway tracks:
from my tests it's better to use BT_USE_DOUBLE_PRECISION on Linux and single precision
(the default) on Windows.

--------------------------
BT_USE_FREEGLUT
--------------------------
-lOpenGLSupport and this demo should be compiled using BT_USE_FREEGLUT (although I guess that
-lOpenGLSupport might work without this definition as well).

--------------------------
SIDE NOTES:
--------------------------
The code included in the OpenGLEx subfolder extends -lOpenGLSupport, and can be reused in other projects (it does NOT depend on HACD or VHACD).
The .obj models are decomposed at init time.
The railway tracks are calculated at init time (the number of trains and of train wagons can be changed through some
macros in the source code).
In real applications, raycast vehicles are usually a better choice (for sure for cars and trucks).

---------------------------
POSSIBLE IMPROVEMENTS:
---------------------------
As I wrote in "btWheelShapes.h", it's possible to use as a wheel shape a simple cylinder with an extended collision margin.
This is both high quality ad efficient. Fell free to modify the code and test this solution.

----------
LICENSE:
----------
The same as Bullet itself.
I created the files in the media folder myself: feel free to use them for any purpose too.


Have fun!
Flix.


