From dc491936a24b58b218028ebbdc2c87e89e34820f Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Mon, 12 May 2014 16:12:01 -0700 Subject: [PATCH] rename ObsoleteDemos back to Demos fix some relative path issues for loading assets --- CMakeLists.txt | 32 +- .../AllBulletDemos/CMakeLists.txt | 0 .../AllBulletDemos/DemoEntries.cpp | 0 .../AllBulletDemos/DemoEntries.h | 0 .../AllBulletDemos/Main.cpp | 0 .../AllBulletDemos/Makefile.am | 0 .../BasicDemo/BasicDemo.cpp | 0 .../BasicDemo/BasicDemo.h | 0 .../BasicDemo/CMakeLists.txt | 0 .../BasicDemo/Makefile.am | 0 .../BasicDemo/Win32BasicDemo.cpp | 0 {ObsoleteDemos => Demos}/BasicDemo/main.cpp | 0 .../Benchmarks/BenchmarkDemo.cpp | 0 .../Benchmarks/BenchmarkDemo.h | 0 .../Benchmarks/CMakeLists.txt | 0 {ObsoleteDemos => Demos}/Benchmarks/Taru.mdl | 0 .../Benchmarks/Win32BenchmarkDemo.cpp | 0 .../Benchmarks/landscape.mdl | 0 {ObsoleteDemos => Demos}/Benchmarks/main.cpp | 0 .../Benchmarks/premake4.lua | 0 .../Box2dDemo/Box2dDemo.cpp | 0 .../Box2dDemo/Box2dDemo.h | 0 .../Box2dDemo/CMakeLists.txt | 0 .../Box2dDemo/Win32Box2dDemo.cpp | 0 {ObsoleteDemos => Demos}/Box2dDemo/main.cpp | 0 .../BspDemo/BspConverter.cpp | 0 .../BspDemo/BspConverter.h | 0 {ObsoleteDemos => Demos}/BspDemo/BspDemo.bsp | Bin {ObsoleteDemos => Demos}/BspDemo/BspDemo.cpp | 62 +- {ObsoleteDemos => Demos}/BspDemo/BspDemo.h | 0 .../BspDemo/BspLoader.cpp | 0 {ObsoleteDemos => Demos}/BspDemo/BspLoader.h | 0 .../BspDemo/CMakeLists.txt | 4 +- {ObsoleteDemos => Demos}/BspDemo/main.cpp | 0 .../BulletDinoDemo/BulletDino.c | 0 .../BulletDinoDemo/CMakeLists.txt | 0 .../BulletXmlImportDemo.cpp | 58 +- .../BulletXmlImportDemo/BulletXmlImportDemo.h | 0 .../BulletXmlImportDemo/CMakeLists.txt | 0 .../Win32BulletXmlImportDemo.cpp | 0 .../BulletXmlImportDemo/bullet_basic.xml | 0 .../BulletXmlImportDemo/bulletser.xml | 0 .../BulletXmlImportDemo/main.cpp | 0 {ObsoleteDemos => Demos}/CMakeLists.txt | 6 +- .../CcdPhysicsDemo/CMakeLists.txt | 0 .../CcdPhysicsDemo/CcdPhysicsDemo.cpp | 0 .../CcdPhysicsDemo/CcdPhysicsDemo.h | 0 .../CcdPhysicsDemo/Makefile.am | 0 .../CcdPhysicsDemo/main.cpp | 0 .../CellSpuDemo/BasicDemo2.cpp | 0 .../CellSpuDemo/BasicDemo2.h | 0 .../CharacterDemo/CMakeLists.txt | 2 +- .../CharacterDemo/CharacterDemo.cpp | 55 +- .../CharacterDemo/CharacterDemo.h | 0 .../DynamicCharacterController.cpp | 0 .../DynamicCharacterController.h | 0 .../CharacterDemo/main.cpp | 0 .../CollisionDemo/CMakeLists.txt | 0 .../CollisionDemo/CollisionDemo.cpp | 0 .../CollisionDemo/CollisionDemo.h | 0 .../CollisionInterfaceDemo/CMakeLists.txt | 0 .../CollisionInterfaceDemo.cpp | 0 .../CollisionInterfaceDemo.h | 0 .../Win32CollisionInterfaceDemo.cpp | 0 .../CollisionInterfaceDemo/main.cpp | 0 .../ConcaveConvexcastDemo/CMakeLists.txt | 0 .../ConcaveConvexcastDemo.cpp | 0 .../ConcaveConvexcastDemo.h | 0 .../ConcaveConvexcastDemo/main.cpp | 0 .../ConcaveDemo/CMakeLists.txt | 0 .../ConcaveDemo/ConcaveDemo.h | 0 .../ConcaveDemo/ConcavePhysicsDemo.cpp | 0 {ObsoleteDemos => Demos}/ConcaveDemo/Jamfile | 0 .../ConcaveDemo/Win32ConcaveDemo.cpp | 0 {ObsoleteDemos => Demos}/ConcaveDemo/main.cpp | 0 .../ConcaveRaycastDemo/CMakeLists.txt | 0 .../ConcaveRaycastDemo/ConcaveRaycastDemo.cpp | 0 .../ConcaveRaycastDemo/ConcaveRaycastDemo.h | 0 .../ConcaveRaycastDemo/main.cpp | 0 .../ConstraintDemo/CMakeLists.txt | 0 .../ConstraintDemo/ConstraintDemo.cpp | 0 .../ConstraintDemo/ConstraintDemo.h | 0 .../ConstraintDemo/Win32ConstraintDemo.cpp | 0 .../ConstraintDemo/main.cpp | 0 .../ContinuousConvexCollision/CMakeLists.txt | 0 .../ContinuousConvexCollision.h | 0 .../ContinuousConvexCollisionDemo.cpp | 0 .../ConvexDecompositionDemo/CMakeLists.txt | 3 +- .../ConvexDecompositionDemo.cpp | 123 +- .../ConvexDecompositionDemo.h | 0 .../Win32ConvexDecompositionDemo.cpp | 0 Demos/ConvexDecompositionDemo/file.obj | 3578 +++++++++++++++++ .../ConvexDecompositionDemo/main.cpp | 0 .../testFile32Single.bullet | Bin .../ConvexHullDistance/CMakeLists.txt | 0 .../ConvexHullDistanceDemo.cpp | 0 .../DoublePrecisionDemo/CMakeLists.txt | 0 .../DoublePrecisionDemo.cpp | 0 .../DoublePrecisionDemo/DoublePrecisionDemo.h | 0 .../DynamicControlDemo/CMakeLists.txt | 0 .../DynamicControlDemo/MotorDemo.cpp | 0 .../DynamicControlDemo/MotorDemo.h | 0 .../DynamicControlDemo/main.cpp | 0 .../EPAPenDepthDemo/PenetrationTestBullet.cpp | 0 .../FeatherstoneMultiBodyDemo/CMakeLists.txt | 0 .../FeatherstoneMultiBodyDemo.cpp | 0 .../FeatherstoneMultiBodyDemo.h | 0 .../FeatherstoneMultiBodyDemo/Makefile.am | 0 .../Win32FeatherstoneMultiBodyDemo.cpp | 0 .../FeatherstoneMultiBodyDemo/main.cpp | 0 .../ForkLiftDemo/CMakeLists.txt | 0 .../ForkLiftDemo/ForkLiftDemo.cpp | 0 .../ForkLiftDemo/ForkLiftDemo.h | 0 .../ForkLiftDemo/Makefile.am | 0 .../ForkLiftDemo/main.cpp | 0 .../FractureDemo/CMakeLists.txt | 0 .../FractureDemo/FractureDemo.cpp | 0 .../FractureDemo/FractureDemo.h | 0 .../FractureDemo/Win32FractureDemo.cpp | 0 .../FractureDemo/btFractureBody.cpp | 0 .../FractureDemo/btFractureBody.h | 0 .../FractureDemo/btFractureDynamicsWorld.cpp | 0 .../FractureDemo/btFractureDynamicsWorld.h | 0 .../FractureDemo/main.cpp | 0 .../GenericJointDemo/CMakeLists.txt | 0 .../GenericJointDemo/GenericJointDemo.cpp | 0 .../GenericJointDemo/GenericJointDemo.h | 0 .../GenericJointDemo/Ragdoll.cpp | 0 .../GenericJointDemo/Ragdoll.h | 0 .../Win32GenericJointDemo.cpp | 0 .../GenericJointDemo/main.cpp | 0 .../GimpactTestDemo/BunnyMesh.h | 0 .../GimpactTestDemo/CMakeLists.txt | 0 .../GimpactTestDemo/GimpactTestDemo.cpp | 0 .../GimpactTestDemo/GimpactTestDemo.h | 0 .../GimpactTestDemo/TorusMesh.h | 0 .../GimpactTestDemo/Win32GimpactDemo.cpp | 0 .../GimpactTestDemo/main.cpp | 0 .../GjkConvexCastDemo/CMakeLists.txt | 0 .../LinearConvexCastDemo.cpp | 0 .../GjkConvexCastDemo/LinearConvexCastDemo.h | 0 .../GjkConvexCastDemo/main.cpp | 0 {ObsoleteDemos => Demos}/Glut/GL/freeglut.h | 0 .../Glut/GL/freeglut_ext.h | 0 .../Glut/GL/freeglut_std.h | 0 {ObsoleteDemos => Demos}/Glut/GL/glew.h | 0 {ObsoleteDemos => Demos}/Glut/GL/glext.h | 0 {ObsoleteDemos => Demos}/Glut/GL/glut.h | 0 {ObsoleteDemos => Demos}/Glut/GL/glxew.h | 0 {ObsoleteDemos => Demos}/Glut/GL/glxext.h | 0 {ObsoleteDemos => Demos}/Glut/GL/wglew.h | 0 {ObsoleteDemos => Demos}/Glut/GL/wglext.h | 0 {ObsoleteDemos => Demos}/Glut/btGlutInclude.h | 0 {ObsoleteDemos => Demos}/Glut/glew32s.lib | Bin {ObsoleteDemos => Demos}/Glut/glew64s.lib | Bin {ObsoleteDemos => Demos}/Glut/glut32.lib | Bin {ObsoleteDemos => Demos}/Glut/glut64.lib | Bin .../GyroscopicDemo/CMakeLists.txt | 0 .../GyroscopicDemo/GyroscopicDemo.cpp | 0 .../GyroscopicDemo/GyroscopicDemo.h | 0 .../GyroscopicDemo/Win32GyroscopicDemo.cpp | 0 .../GyroscopicDemo/main.cpp | 0 .../HelloWorld/CMakeLists.txt | 0 .../HelloWorld/HelloWorld.cpp | 0 .../HelloWorld/premake4.lua | 0 .../InternalEdgeDemo/CMakeLists.txt | 0 .../InternalEdgeDemo/InternalEdgeDemo.cpp | 0 .../InternalEdgeDemo/InternalEdgeDemo.h | 0 .../InternalEdgeDemo/Taru.mdl | 0 .../Win32InternalEdgeDemo.cpp | 0 .../InternalEdgeDemo/main.cpp | 0 .../MovingConcaveDemo/CMakeLists.txt | 0 .../MovingConcaveDemo/ConcaveDemo.h | 0 .../MovingConcaveDemo/ConcavePhysicsDemo.cpp | 0 .../MultiMaterialDemo/CMakeLists.txt | 0 .../MultiMaterialDemo/MultiMaterialDemo.cpp | 0 .../MultiMaterialDemo/MultiMaterialDemo.h | 0 .../MultiMaterialDemo/main.cpp | 0 .../MultiThreadedDemo/CMakeLists.txt | 0 .../MultiThreadedDemo/Makefile.am | 0 .../MultiThreadedDemo/MultiThreadedDemo.cpp | 0 .../MultiThreadedDemo/MultiThreadedDemo.h | 0 .../MultiThreadedDemo/main.cpp | 0 .../NativeClient/bin_html/bind.js | 0 .../NativeClient/bin_html/dragger.js | 0 .../NativeClient/bin_html/httpd.cmd | 0 .../NativeClient/bin_html/httpd.py | 0 .../NativeClient/bin_html/index.html | 0 .../NativeClient/bin_html/trackball.js | 0 .../NativeClient/bin_html/tumbler.js | 0 .../NativeClient/bin_html/tumbler.nmf | 0 .../NativeClient/bin_html/vector3.js | 0 .../NativeClient/callback.h | 0 {ObsoleteDemos => Demos}/NativeClient/cube.cc | 0 {ObsoleteDemos => Demos}/NativeClient/cube.h | 0 .../NativeClient/opengl_context.cc | 0 .../NativeClient/opengl_context.h | 0 .../NativeClient/opengl_context_ptrs.h | 0 .../NativeClient/premake4.lua | 0 .../NativeClient/scripting_bridge.cc | 0 .../NativeClient/scripting_bridge.h | 0 .../NativeClient/shader_util.cc | 0 .../NativeClient/shader_util.h | 0 .../NativeClient/transforms.cc | 0 .../NativeClient/transforms.h | 0 .../NativeClient/tumbler.cc | 0 .../NativeClient/tumbler.h | 0 .../NativeClient/tumbler_module.cc | 0 .../OpenGL/CMakeLists.txt | 0 .../OpenGL/CommandLineArguments.h | 0 .../OpenGL/DebugCastResult.h | 0 .../OpenGL/DemoApplication.cpp | 148 +- .../OpenGL/DemoApplication.h | 36 +- .../OpenGL/GLDebugDrawer.cpp | 0 .../OpenGL/GLDebugDrawer.h | 0 .../OpenGL/GLDebugFont.cpp | 0 {ObsoleteDemos => Demos}/OpenGL/GLDebugFont.h | 0 .../OpenGL/GL_DialogDynamicsWorld.cpp | 0 .../OpenGL/GL_DialogDynamicsWorld.h | 0 .../OpenGL/GL_DialogWindow.cpp | 0 .../OpenGL/GL_DialogWindow.h | 0 .../OpenGL/GL_ShapeDrawer.cpp | 0 .../OpenGL/GL_ShapeDrawer.h | 0 .../OpenGL/GL_Simplex1to4.cpp | 0 .../OpenGL/GL_Simplex1to4.h | 0 .../OpenGL/GlutDemoApplication.cpp | 0 .../OpenGL/GlutDemoApplication.h | 0 {ObsoleteDemos => Demos}/OpenGL/GlutStuff.cpp | 0 {ObsoleteDemos => Demos}/OpenGL/GlutStuff.h | 0 {ObsoleteDemos => Demos}/OpenGL/Makefile.am | 0 .../OpenGL/RenderTexture.cpp | 0 .../OpenGL/RenderTexture.h | 0 .../OpenGL/Win32AppMain.cpp | 0 .../OpenGL/Win32DemoApplication.cpp | 0 .../OpenGL/Win32DemoApplication.h | 0 {ObsoleteDemos => Demos}/OpenGL/premake4.lua | 0 {ObsoleteDemos => Demos}/OpenGL/stb_image.cpp | 0 {ObsoleteDemos => Demos}/OpenGL/stb_image.h | 0 {ObsoleteDemos => Demos}/OpenPL_Demo/CApi.cpp | 0 .../OpenPL_Demo/OpenPL_Demo.c | 0 .../RagdollDemo/CMakeLists.txt | 0 .../RagdollDemo/RagdollDemo.cpp | 0 .../RagdollDemo/RagdollDemo.h | 0 {ObsoleteDemos => Demos}/RagdollDemo/main.cpp | 0 .../RaytestDemo/CMakeLists.txt | 0 .../RaytestDemo/Makefile.am | 0 .../RaytestDemo/RaytestDemo.cpp | 0 .../RaytestDemo/RaytestDemo.h | 0 .../RaytestDemo/Win32RaytestDemo.cpp | 0 {ObsoleteDemos => Demos}/RaytestDemo/main.cpp | 0 .../Raytracer/CMakeLists.txt | 0 .../Raytracer/Raytracer.cpp | 0 .../Raytracer/Raytracer.h | 0 {ObsoleteDemos => Demos}/Raytracer/main.cpp | 0 .../RollingFrictionDemo/CMakeLists.txt | 0 .../RollingFrictionDemo/Makefile.am | 0 .../RollingFrictionDemo.cpp | 0 .../RollingFrictionDemo/RollingFrictionDemo.h | 0 .../Win32RollingFrictionDemo.cpp | 0 .../RollingFrictionDemo/main.cpp | 0 .../SerializeDemo/AMD/CMakeLists.txt | 0 .../SerializeDemo/AMD/premake4.lua | 0 .../SerializeDemo/CMakeLists.txt | 0 .../SerializeDemo/SerializeDemo.cpp | 125 +- .../SerializeDemo/SerializeDemo.h | 0 .../SerializeDemo/Win32SerializeDemo.cpp | 0 .../SerializeDemo/main.cpp | 0 .../SerializeDemo/testFile.bullet | Bin .../SerializeDemo/testFileCloth.bullet | Bin .../SimplexDemo/CMakeLists.txt | 0 .../SimplexDemo/SimplexDemo.cpp | 0 .../SimplexDemo/SimplexDemo.h | 0 .../SliderConstraintDemo/CMakeLists.txt | 0 .../SliderConstraintDemo.cpp | 0 .../SliderConstraintDemo.h | 0 .../SliderConstraintDemo/main.cpp | 0 .../SoftDemo/AMD/premake4.lua | 0 .../SoftDemo/CMakeLists.txt | 0 {ObsoleteDemos => Demos}/SoftDemo/Makefile.am | 0 .../SoftDemo/SoftDemo.cpp | 0 {ObsoleteDemos => Demos}/SoftDemo/SoftDemo.h | 0 {ObsoleteDemos => Demos}/SoftDemo/bunny.inl | 0 {ObsoleteDemos => Demos}/SoftDemo/cube.inl | 0 {ObsoleteDemos => Demos}/SoftDemo/main.cpp | 0 .../TerrainDemo/Makefile.am | 0 .../TerrainDemo/TerrainDemo.cpp | 0 .../TerrainDemo/TerrainDemo.h | 0 {ObsoleteDemos => Demos}/TerrainDemo/main.cpp | 0 .../ThreadingDemo/CMakeLists.txt | 0 .../ThreadingDemo/main.cpp | 0 .../UserCollisionAlgorithm/CMakeLists.txt | 0 .../UserCollisionAlgorithm.cpp | 0 .../UserCollisionAlgorithm.h | 0 .../VehicleDemo/CMakeLists.txt | 0 .../VehicleDemo/Makefile.am | 0 .../VehicleDemo/VehicleDemo.cpp | 0 .../VehicleDemo/VehicleDemo.h | 0 .../VehicleDemo/heightfield128x128.cpp | 0 {ObsoleteDemos => Demos}/VehicleDemo/main.cpp | 0 .../VoronoiFractureDemo/CMakeLists.txt | 0 .../VoronoiFractureDemo/Makefile.am | 0 .../VoronoiFractureDemo.cpp | 0 .../VoronoiFractureDemo/VoronoiFractureDemo.h | 0 .../Win32VoronoiFractureDemo.cpp | 0 .../VoronoiFractureDemo/main.cpp | 0 {ObsoleteDemos => Demos}/premake4.lua | 0 Demos3/CMakeLists.txt | 5 +- Demos3/ImplicitCloth/stan/Cloth.cpp | 6 +- Extras/CMakeLists.txt | 6 +- btgui/OpenGLWindow/GLInstancingRenderer.cpp | 6 +- data/testFile.bullet | Bin 73336 -> 0 bytes data/testFileFracture.bullet | Bin 183864 -> 12292 bytes 312 files changed, 3933 insertions(+), 322 deletions(-) rename {ObsoleteDemos => Demos}/AllBulletDemos/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/AllBulletDemos/DemoEntries.cpp (100%) rename {ObsoleteDemos => Demos}/AllBulletDemos/DemoEntries.h (100%) rename {ObsoleteDemos => Demos}/AllBulletDemos/Main.cpp (100%) rename {ObsoleteDemos => Demos}/AllBulletDemos/Makefile.am (100%) rename {ObsoleteDemos => Demos}/BasicDemo/BasicDemo.cpp (100%) rename {ObsoleteDemos => Demos}/BasicDemo/BasicDemo.h (100%) rename {ObsoleteDemos => Demos}/BasicDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/BasicDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/BasicDemo/Win32BasicDemo.cpp (100%) rename {ObsoleteDemos => Demos}/BasicDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/Benchmarks/BenchmarkDemo.cpp (100%) rename {ObsoleteDemos => Demos}/Benchmarks/BenchmarkDemo.h (100%) rename {ObsoleteDemos => Demos}/Benchmarks/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/Benchmarks/Taru.mdl (100%) rename {ObsoleteDemos => Demos}/Benchmarks/Win32BenchmarkDemo.cpp (100%) rename {ObsoleteDemos => Demos}/Benchmarks/landscape.mdl (100%) rename {ObsoleteDemos => Demos}/Benchmarks/main.cpp (100%) rename {ObsoleteDemos => Demos}/Benchmarks/premake4.lua (100%) rename {ObsoleteDemos => Demos}/Box2dDemo/Box2dDemo.cpp (100%) rename {ObsoleteDemos => Demos}/Box2dDemo/Box2dDemo.h (100%) rename {ObsoleteDemos => Demos}/Box2dDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/Box2dDemo/Win32Box2dDemo.cpp (100%) rename {ObsoleteDemos => Demos}/Box2dDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/BspDemo/BspConverter.cpp (100%) rename {ObsoleteDemos => Demos}/BspDemo/BspConverter.h (100%) rename {ObsoleteDemos => Demos}/BspDemo/BspDemo.bsp (100%) rename {ObsoleteDemos => Demos}/BspDemo/BspDemo.cpp (88%) rename {ObsoleteDemos => Demos}/BspDemo/BspDemo.h (100%) rename {ObsoleteDemos => Demos}/BspDemo/BspLoader.cpp (100%) rename {ObsoleteDemos => Demos}/BspDemo/BspLoader.h (100%) rename {ObsoleteDemos => Demos}/BspDemo/CMakeLists.txt (91%) rename {ObsoleteDemos => Demos}/BspDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/BulletDinoDemo/BulletDino.c (100%) rename {ObsoleteDemos => Demos}/BulletDinoDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/BulletXmlImportDemo/BulletXmlImportDemo.cpp (83%) rename {ObsoleteDemos => Demos}/BulletXmlImportDemo/BulletXmlImportDemo.h (100%) rename {ObsoleteDemos => Demos}/BulletXmlImportDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/BulletXmlImportDemo/Win32BulletXmlImportDemo.cpp (100%) rename {ObsoleteDemos => Demos}/BulletXmlImportDemo/bullet_basic.xml (100%) rename {ObsoleteDemos => Demos}/BulletXmlImportDemo/bulletser.xml (100%) rename {ObsoleteDemos => Demos}/BulletXmlImportDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/CMakeLists.txt (91%) rename {ObsoleteDemos => Demos}/CcdPhysicsDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/CcdPhysicsDemo/CcdPhysicsDemo.cpp (100%) rename {ObsoleteDemos => Demos}/CcdPhysicsDemo/CcdPhysicsDemo.h (100%) rename {ObsoleteDemos => Demos}/CcdPhysicsDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/CcdPhysicsDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/CellSpuDemo/BasicDemo2.cpp (100%) rename {ObsoleteDemos => Demos}/CellSpuDemo/BasicDemo2.h (100%) rename {ObsoleteDemos => Demos}/CharacterDemo/CMakeLists.txt (95%) rename {ObsoleteDemos => Demos}/CharacterDemo/CharacterDemo.cpp (94%) rename {ObsoleteDemos => Demos}/CharacterDemo/CharacterDemo.h (100%) rename {ObsoleteDemos => Demos}/CharacterDemo/DynamicCharacterController.cpp (100%) rename {ObsoleteDemos => Demos}/CharacterDemo/DynamicCharacterController.h (100%) rename {ObsoleteDemos => Demos}/CharacterDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/CollisionDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/CollisionDemo/CollisionDemo.cpp (100%) rename {ObsoleteDemos => Demos}/CollisionDemo/CollisionDemo.h (100%) rename {ObsoleteDemos => Demos}/CollisionInterfaceDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/CollisionInterfaceDemo/CollisionInterfaceDemo.cpp (100%) rename {ObsoleteDemos => Demos}/CollisionInterfaceDemo/CollisionInterfaceDemo.h (100%) rename {ObsoleteDemos => Demos}/CollisionInterfaceDemo/Win32CollisionInterfaceDemo.cpp (100%) rename {ObsoleteDemos => Demos}/CollisionInterfaceDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ConcaveConvexcastDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ConcaveConvexcastDemo/ConcaveConvexcastDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ConcaveConvexcastDemo/ConcaveConvexcastDemo.h (100%) rename {ObsoleteDemos => Demos}/ConcaveConvexcastDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ConcaveDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ConcaveDemo/ConcaveDemo.h (100%) rename {ObsoleteDemos => Demos}/ConcaveDemo/ConcavePhysicsDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ConcaveDemo/Jamfile (100%) rename {ObsoleteDemos => Demos}/ConcaveDemo/Win32ConcaveDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ConcaveDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ConcaveRaycastDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ConcaveRaycastDemo/ConcaveRaycastDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ConcaveRaycastDemo/ConcaveRaycastDemo.h (100%) rename {ObsoleteDemos => Demos}/ConcaveRaycastDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ConstraintDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ConstraintDemo/ConstraintDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ConstraintDemo/ConstraintDemo.h (100%) rename {ObsoleteDemos => Demos}/ConstraintDemo/Win32ConstraintDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ConstraintDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ContinuousConvexCollision/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ContinuousConvexCollision/ContinuousConvexCollision.h (100%) rename {ObsoleteDemos => Demos}/ContinuousConvexCollision/ContinuousConvexCollisionDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ConvexDecompositionDemo/CMakeLists.txt (96%) rename {ObsoleteDemos => Demos}/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp (95%) rename {ObsoleteDemos => Demos}/ConvexDecompositionDemo/ConvexDecompositionDemo.h (100%) rename {ObsoleteDemos => Demos}/ConvexDecompositionDemo/Win32ConvexDecompositionDemo.cpp (100%) create mode 100644 Demos/ConvexDecompositionDemo/file.obj rename {ObsoleteDemos => Demos}/ConvexDecompositionDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ConvexDecompositionDemo/testFile32Single.bullet (100%) rename {ObsoleteDemos => Demos}/ConvexHullDistance/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ConvexHullDistance/ConvexHullDistanceDemo.cpp (100%) rename {ObsoleteDemos => Demos}/DoublePrecisionDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/DoublePrecisionDemo/DoublePrecisionDemo.cpp (100%) rename {ObsoleteDemos => Demos}/DoublePrecisionDemo/DoublePrecisionDemo.h (100%) rename {ObsoleteDemos => Demos}/DynamicControlDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/DynamicControlDemo/MotorDemo.cpp (100%) rename {ObsoleteDemos => Demos}/DynamicControlDemo/MotorDemo.h (100%) rename {ObsoleteDemos => Demos}/DynamicControlDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/EPAPenDepthDemo/PenetrationTestBullet.cpp (100%) rename {ObsoleteDemos => Demos}/FeatherstoneMultiBodyDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.cpp (100%) rename {ObsoleteDemos => Demos}/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.h (100%) rename {ObsoleteDemos => Demos}/FeatherstoneMultiBodyDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/FeatherstoneMultiBodyDemo/Win32FeatherstoneMultiBodyDemo.cpp (100%) rename {ObsoleteDemos => Demos}/FeatherstoneMultiBodyDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ForkLiftDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ForkLiftDemo/ForkLiftDemo.cpp (100%) rename {ObsoleteDemos => Demos}/ForkLiftDemo/ForkLiftDemo.h (100%) rename {ObsoleteDemos => Demos}/ForkLiftDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/ForkLiftDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/FractureDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/FractureDemo/FractureDemo.cpp (100%) rename {ObsoleteDemos => Demos}/FractureDemo/FractureDemo.h (100%) rename {ObsoleteDemos => Demos}/FractureDemo/Win32FractureDemo.cpp (100%) rename {ObsoleteDemos => Demos}/FractureDemo/btFractureBody.cpp (100%) rename {ObsoleteDemos => Demos}/FractureDemo/btFractureBody.h (100%) rename {ObsoleteDemos => Demos}/FractureDemo/btFractureDynamicsWorld.cpp (100%) rename {ObsoleteDemos => Demos}/FractureDemo/btFractureDynamicsWorld.h (100%) rename {ObsoleteDemos => Demos}/FractureDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/GenericJointDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/GenericJointDemo/GenericJointDemo.cpp (100%) rename {ObsoleteDemos => Demos}/GenericJointDemo/GenericJointDemo.h (100%) rename {ObsoleteDemos => Demos}/GenericJointDemo/Ragdoll.cpp (100%) rename {ObsoleteDemos => Demos}/GenericJointDemo/Ragdoll.h (100%) rename {ObsoleteDemos => Demos}/GenericJointDemo/Win32GenericJointDemo.cpp (100%) rename {ObsoleteDemos => Demos}/GenericJointDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/GimpactTestDemo/BunnyMesh.h (100%) rename {ObsoleteDemos => Demos}/GimpactTestDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/GimpactTestDemo/GimpactTestDemo.cpp (100%) rename {ObsoleteDemos => Demos}/GimpactTestDemo/GimpactTestDemo.h (100%) rename {ObsoleteDemos => Demos}/GimpactTestDemo/TorusMesh.h (100%) rename {ObsoleteDemos => Demos}/GimpactTestDemo/Win32GimpactDemo.cpp (100%) rename {ObsoleteDemos => Demos}/GimpactTestDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/GjkConvexCastDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/GjkConvexCastDemo/LinearConvexCastDemo.cpp (100%) rename {ObsoleteDemos => Demos}/GjkConvexCastDemo/LinearConvexCastDemo.h (100%) rename {ObsoleteDemos => Demos}/GjkConvexCastDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/Glut/GL/freeglut.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/freeglut_ext.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/freeglut_std.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/glew.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/glext.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/glut.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/glxew.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/glxext.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/wglew.h (100%) rename {ObsoleteDemos => Demos}/Glut/GL/wglext.h (100%) rename {ObsoleteDemos => Demos}/Glut/btGlutInclude.h (100%) rename {ObsoleteDemos => Demos}/Glut/glew32s.lib (100%) rename {ObsoleteDemos => Demos}/Glut/glew64s.lib (100%) rename {ObsoleteDemos => Demos}/Glut/glut32.lib (100%) rename {ObsoleteDemos => Demos}/Glut/glut64.lib (100%) rename {ObsoleteDemos => Demos}/GyroscopicDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/GyroscopicDemo/GyroscopicDemo.cpp (100%) rename {ObsoleteDemos => Demos}/GyroscopicDemo/GyroscopicDemo.h (100%) rename {ObsoleteDemos => Demos}/GyroscopicDemo/Win32GyroscopicDemo.cpp (100%) rename {ObsoleteDemos => Demos}/GyroscopicDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/HelloWorld/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/HelloWorld/HelloWorld.cpp (100%) rename {ObsoleteDemos => Demos}/HelloWorld/premake4.lua (100%) rename {ObsoleteDemos => Demos}/InternalEdgeDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/InternalEdgeDemo/InternalEdgeDemo.cpp (100%) rename {ObsoleteDemos => Demos}/InternalEdgeDemo/InternalEdgeDemo.h (100%) rename {ObsoleteDemos => Demos}/InternalEdgeDemo/Taru.mdl (100%) rename {ObsoleteDemos => Demos}/InternalEdgeDemo/Win32InternalEdgeDemo.cpp (100%) rename {ObsoleteDemos => Demos}/InternalEdgeDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/MovingConcaveDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/MovingConcaveDemo/ConcaveDemo.h (100%) rename {ObsoleteDemos => Demos}/MovingConcaveDemo/ConcavePhysicsDemo.cpp (100%) rename {ObsoleteDemos => Demos}/MultiMaterialDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/MultiMaterialDemo/MultiMaterialDemo.cpp (100%) rename {ObsoleteDemos => Demos}/MultiMaterialDemo/MultiMaterialDemo.h (100%) rename {ObsoleteDemos => Demos}/MultiMaterialDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/MultiThreadedDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/MultiThreadedDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/MultiThreadedDemo/MultiThreadedDemo.cpp (100%) rename {ObsoleteDemos => Demos}/MultiThreadedDemo/MultiThreadedDemo.h (100%) rename {ObsoleteDemos => Demos}/MultiThreadedDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/bind.js (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/dragger.js (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/httpd.cmd (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/httpd.py (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/index.html (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/trackball.js (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/tumbler.js (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/tumbler.nmf (100%) rename {ObsoleteDemos => Demos}/NativeClient/bin_html/vector3.js (100%) rename {ObsoleteDemos => Demos}/NativeClient/callback.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/cube.cc (100%) rename {ObsoleteDemos => Demos}/NativeClient/cube.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/opengl_context.cc (100%) rename {ObsoleteDemos => Demos}/NativeClient/opengl_context.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/opengl_context_ptrs.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/premake4.lua (100%) rename {ObsoleteDemos => Demos}/NativeClient/scripting_bridge.cc (100%) rename {ObsoleteDemos => Demos}/NativeClient/scripting_bridge.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/shader_util.cc (100%) rename {ObsoleteDemos => Demos}/NativeClient/shader_util.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/transforms.cc (100%) rename {ObsoleteDemos => Demos}/NativeClient/transforms.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/tumbler.cc (100%) rename {ObsoleteDemos => Demos}/NativeClient/tumbler.h (100%) rename {ObsoleteDemos => Demos}/NativeClient/tumbler_module.cc (100%) rename {ObsoleteDemos => Demos}/OpenGL/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/OpenGL/CommandLineArguments.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/DebugCastResult.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/DemoApplication.cpp (97%) rename {ObsoleteDemos => Demos}/OpenGL/DemoApplication.h (97%) rename {ObsoleteDemos => Demos}/OpenGL/GLDebugDrawer.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GLDebugDrawer.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/GLDebugFont.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GLDebugFont.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_DialogDynamicsWorld.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_DialogDynamicsWorld.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_DialogWindow.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_DialogWindow.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_ShapeDrawer.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_ShapeDrawer.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_Simplex1to4.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GL_Simplex1to4.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/GlutDemoApplication.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GlutDemoApplication.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/GlutStuff.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/GlutStuff.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/Makefile.am (100%) rename {ObsoleteDemos => Demos}/OpenGL/RenderTexture.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/RenderTexture.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/Win32AppMain.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/Win32DemoApplication.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/Win32DemoApplication.h (100%) rename {ObsoleteDemos => Demos}/OpenGL/premake4.lua (100%) rename {ObsoleteDemos => Demos}/OpenGL/stb_image.cpp (100%) rename {ObsoleteDemos => Demos}/OpenGL/stb_image.h (100%) rename {ObsoleteDemos => Demos}/OpenPL_Demo/CApi.cpp (100%) rename {ObsoleteDemos => Demos}/OpenPL_Demo/OpenPL_Demo.c (100%) rename {ObsoleteDemos => Demos}/RagdollDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/RagdollDemo/RagdollDemo.cpp (100%) rename {ObsoleteDemos => Demos}/RagdollDemo/RagdollDemo.h (100%) rename {ObsoleteDemos => Demos}/RagdollDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/RaytestDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/RaytestDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/RaytestDemo/RaytestDemo.cpp (100%) rename {ObsoleteDemos => Demos}/RaytestDemo/RaytestDemo.h (100%) rename {ObsoleteDemos => Demos}/RaytestDemo/Win32RaytestDemo.cpp (100%) rename {ObsoleteDemos => Demos}/RaytestDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/Raytracer/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/Raytracer/Raytracer.cpp (100%) rename {ObsoleteDemos => Demos}/Raytracer/Raytracer.h (100%) rename {ObsoleteDemos => Demos}/Raytracer/main.cpp (100%) rename {ObsoleteDemos => Demos}/RollingFrictionDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/RollingFrictionDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/RollingFrictionDemo/RollingFrictionDemo.cpp (100%) rename {ObsoleteDemos => Demos}/RollingFrictionDemo/RollingFrictionDemo.h (100%) rename {ObsoleteDemos => Demos}/RollingFrictionDemo/Win32RollingFrictionDemo.cpp (100%) rename {ObsoleteDemos => Demos}/RollingFrictionDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/AMD/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/AMD/premake4.lua (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/SerializeDemo.cpp (96%) rename {ObsoleteDemos => Demos}/SerializeDemo/SerializeDemo.h (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/Win32SerializeDemo.cpp (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/testFile.bullet (100%) rename {ObsoleteDemos => Demos}/SerializeDemo/testFileCloth.bullet (100%) rename {ObsoleteDemos => Demos}/SimplexDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/SimplexDemo/SimplexDemo.cpp (100%) rename {ObsoleteDemos => Demos}/SimplexDemo/SimplexDemo.h (100%) rename {ObsoleteDemos => Demos}/SliderConstraintDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/SliderConstraintDemo/SliderConstraintDemo.cpp (100%) rename {ObsoleteDemos => Demos}/SliderConstraintDemo/SliderConstraintDemo.h (100%) rename {ObsoleteDemos => Demos}/SliderConstraintDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/SoftDemo/AMD/premake4.lua (100%) rename {ObsoleteDemos => Demos}/SoftDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/SoftDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/SoftDemo/SoftDemo.cpp (100%) rename {ObsoleteDemos => Demos}/SoftDemo/SoftDemo.h (100%) rename {ObsoleteDemos => Demos}/SoftDemo/bunny.inl (100%) rename {ObsoleteDemos => Demos}/SoftDemo/cube.inl (100%) rename {ObsoleteDemos => Demos}/SoftDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/TerrainDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/TerrainDemo/TerrainDemo.cpp (100%) rename {ObsoleteDemos => Demos}/TerrainDemo/TerrainDemo.h (100%) rename {ObsoleteDemos => Demos}/TerrainDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/ThreadingDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/ThreadingDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/UserCollisionAlgorithm/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/UserCollisionAlgorithm/UserCollisionAlgorithm.cpp (100%) rename {ObsoleteDemos => Demos}/UserCollisionAlgorithm/UserCollisionAlgorithm.h (100%) rename {ObsoleteDemos => Demos}/VehicleDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/VehicleDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/VehicleDemo/VehicleDemo.cpp (100%) rename {ObsoleteDemos => Demos}/VehicleDemo/VehicleDemo.h (100%) rename {ObsoleteDemos => Demos}/VehicleDemo/heightfield128x128.cpp (100%) rename {ObsoleteDemos => Demos}/VehicleDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/VoronoiFractureDemo/CMakeLists.txt (100%) rename {ObsoleteDemos => Demos}/VoronoiFractureDemo/Makefile.am (100%) rename {ObsoleteDemos => Demos}/VoronoiFractureDemo/VoronoiFractureDemo.cpp (100%) rename {ObsoleteDemos => Demos}/VoronoiFractureDemo/VoronoiFractureDemo.h (100%) rename {ObsoleteDemos => Demos}/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp (100%) rename {ObsoleteDemos => Demos}/VoronoiFractureDemo/main.cpp (100%) rename {ObsoleteDemos => Demos}/premake4.lua (100%) delete mode 100644 data/testFile.bullet diff --git a/CMakeLists.txt b/CMakeLists.txt index 094695ca6..ca08f5a19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,10 +44,10 @@ IF(MSVC) SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "/INCREMENTAL:NO ${replacementFlags}" ) MESSAGE("CMAKE_EXE_LINKER_FLAGS_DEBUG=${CMAKE_EXE_LINKER_FLAGS_DEBUG}") -# STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags2 ${CMAKE_EXE_LINKER_FLAGS}) -# SET(CMAKE_EXE_LINKER_FLAGS ${replacementFlag2}) -# STRING(REPLACE "INCREMENTAL:YES" "" replacementFlags3 ${CMAKE_EXTRA_LINK_FLAGS}) -# SET(CMAKE_EXTRA_LINK_FLAGS ${replacementFlag3}) + STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags2 ${CMAKE_EXE_LINKER_FLAGS}) + SET(CMAKE_EXE_LINKER_FLAGS ${replacementFlag2}) + STRING(REPLACE "INCREMENTAL:YES" "" replacementFlags3 ${CMAKE_EXTRA_LINK_FLAGS}) + SET(CMAKE_EXTRA_LINK_FLAGS ${replacementFlag3}) STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags3 ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}) @@ -188,13 +188,13 @@ IF (USE_GLUT) ADD_DEFINITIONS(-DBT_USE_FREEGLUT) IF (CMAKE_CL_64) - message("Win64 using static freeglut in ObsoleteDemos/Glut/glut64.lib") - SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/ObsoleteDemos/Glut/glut64.lib glu32.lib gdi32.lib winmm.lib user32.lib) + message("Win64 using static freeglut in Demos/Glut/glut64.lib") + SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Demos/Glut/glut64.lib glu32.lib gdi32.lib winmm.lib user32.lib) ELSE(CMAKE_CL_64) - message("Win32 using static freeglut in ObsoleteDemos/Glut/glut32.lib") - SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/ObsoleteDemos/Glut/glut32.lib glu32.lib gdi32.lib winmm.lib user32.lib) + message("Win32 using static freeglut in Demos/Glut/glut32.lib") + SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Demos/Glut/glut32.lib glu32.lib gdi32.lib winmm.lib user32.lib) ENDIF (CMAKE_CL_64) - SET(GLUT_INCLUDE_DIR ${BULLET_PHYSICS_SOURCE_DIR}/ObsoleteDemos/Glut ) + SET(GLUT_INCLUDE_DIR ${BULLET_PHYSICS_SOURCE_DIR}/Demos/Glut ) ELSE() FIND_PACKAGE(GLUT) IF (GLUT_FOUND) @@ -219,8 +219,8 @@ IF (USE_GLUT) ENDIF(USE_GLUT) - IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/ObsoleteDemos AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/ObsoleteDemos) - SUBDIRS(ObsoleteDemos) + IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/Demos AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/Demos) + SUBDIRS(Demos) ENDIF() ENDIF(BUILD_OBSOLETE_DEMOS) @@ -232,6 +232,10 @@ IF(BUILD_BULLET3_DEMOS) ENDIF() ENDIF(BUILD_BULLET3_DEMOS) +OPTION(BUILD_EXTRAS "Set when you want to build the extras" ON) +IF(BUILD_EXTRAS) + SUBDIRS(Extras) +ENDIF(BUILD_EXTRAS) #Maya Dynamica plugin is moved to http://dynamica.googlecode.com @@ -266,9 +270,9 @@ IF(INSTALL_LIBS) ENDIF(INSTALL_LIBS) #INSTALL of other files requires CMake 2.6 -#IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) -# OPTION(INSTALL_EXTRA_LIBS "Set when you want extra libraries installed" OFF) -#ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) +IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + OPTION(INSTALL_EXTRA_LIBS "Set when you want extra libraries installed" OFF) +ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) OPTION(BUILD_UNIT_TESTS "Build Unit Tests" ON) diff --git a/ObsoleteDemos/AllBulletDemos/CMakeLists.txt b/Demos/AllBulletDemos/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/AllBulletDemos/CMakeLists.txt rename to Demos/AllBulletDemos/CMakeLists.txt diff --git a/ObsoleteDemos/AllBulletDemos/DemoEntries.cpp b/Demos/AllBulletDemos/DemoEntries.cpp similarity index 100% rename from ObsoleteDemos/AllBulletDemos/DemoEntries.cpp rename to Demos/AllBulletDemos/DemoEntries.cpp diff --git a/ObsoleteDemos/AllBulletDemos/DemoEntries.h b/Demos/AllBulletDemos/DemoEntries.h similarity index 100% rename from ObsoleteDemos/AllBulletDemos/DemoEntries.h rename to Demos/AllBulletDemos/DemoEntries.h diff --git a/ObsoleteDemos/AllBulletDemos/Main.cpp b/Demos/AllBulletDemos/Main.cpp similarity index 100% rename from ObsoleteDemos/AllBulletDemos/Main.cpp rename to Demos/AllBulletDemos/Main.cpp diff --git a/ObsoleteDemos/AllBulletDemos/Makefile.am b/Demos/AllBulletDemos/Makefile.am similarity index 100% rename from ObsoleteDemos/AllBulletDemos/Makefile.am rename to Demos/AllBulletDemos/Makefile.am diff --git a/ObsoleteDemos/BasicDemo/BasicDemo.cpp b/Demos/BasicDemo/BasicDemo.cpp similarity index 100% rename from ObsoleteDemos/BasicDemo/BasicDemo.cpp rename to Demos/BasicDemo/BasicDemo.cpp diff --git a/ObsoleteDemos/BasicDemo/BasicDemo.h b/Demos/BasicDemo/BasicDemo.h similarity index 100% rename from ObsoleteDemos/BasicDemo/BasicDemo.h rename to Demos/BasicDemo/BasicDemo.h diff --git a/ObsoleteDemos/BasicDemo/CMakeLists.txt b/Demos/BasicDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/BasicDemo/CMakeLists.txt rename to Demos/BasicDemo/CMakeLists.txt diff --git a/ObsoleteDemos/BasicDemo/Makefile.am b/Demos/BasicDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/BasicDemo/Makefile.am rename to Demos/BasicDemo/Makefile.am diff --git a/ObsoleteDemos/BasicDemo/Win32BasicDemo.cpp b/Demos/BasicDemo/Win32BasicDemo.cpp similarity index 100% rename from ObsoleteDemos/BasicDemo/Win32BasicDemo.cpp rename to Demos/BasicDemo/Win32BasicDemo.cpp diff --git a/ObsoleteDemos/BasicDemo/main.cpp b/Demos/BasicDemo/main.cpp similarity index 100% rename from ObsoleteDemos/BasicDemo/main.cpp rename to Demos/BasicDemo/main.cpp diff --git a/ObsoleteDemos/Benchmarks/BenchmarkDemo.cpp b/Demos/Benchmarks/BenchmarkDemo.cpp similarity index 100% rename from ObsoleteDemos/Benchmarks/BenchmarkDemo.cpp rename to Demos/Benchmarks/BenchmarkDemo.cpp diff --git a/ObsoleteDemos/Benchmarks/BenchmarkDemo.h b/Demos/Benchmarks/BenchmarkDemo.h similarity index 100% rename from ObsoleteDemos/Benchmarks/BenchmarkDemo.h rename to Demos/Benchmarks/BenchmarkDemo.h diff --git a/ObsoleteDemos/Benchmarks/CMakeLists.txt b/Demos/Benchmarks/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/Benchmarks/CMakeLists.txt rename to Demos/Benchmarks/CMakeLists.txt diff --git a/ObsoleteDemos/Benchmarks/Taru.mdl b/Demos/Benchmarks/Taru.mdl similarity index 100% rename from ObsoleteDemos/Benchmarks/Taru.mdl rename to Demos/Benchmarks/Taru.mdl diff --git a/ObsoleteDemos/Benchmarks/Win32BenchmarkDemo.cpp b/Demos/Benchmarks/Win32BenchmarkDemo.cpp similarity index 100% rename from ObsoleteDemos/Benchmarks/Win32BenchmarkDemo.cpp rename to Demos/Benchmarks/Win32BenchmarkDemo.cpp diff --git a/ObsoleteDemos/Benchmarks/landscape.mdl b/Demos/Benchmarks/landscape.mdl similarity index 100% rename from ObsoleteDemos/Benchmarks/landscape.mdl rename to Demos/Benchmarks/landscape.mdl diff --git a/ObsoleteDemos/Benchmarks/main.cpp b/Demos/Benchmarks/main.cpp similarity index 100% rename from ObsoleteDemos/Benchmarks/main.cpp rename to Demos/Benchmarks/main.cpp diff --git a/ObsoleteDemos/Benchmarks/premake4.lua b/Demos/Benchmarks/premake4.lua similarity index 100% rename from ObsoleteDemos/Benchmarks/premake4.lua rename to Demos/Benchmarks/premake4.lua diff --git a/ObsoleteDemos/Box2dDemo/Box2dDemo.cpp b/Demos/Box2dDemo/Box2dDemo.cpp similarity index 100% rename from ObsoleteDemos/Box2dDemo/Box2dDemo.cpp rename to Demos/Box2dDemo/Box2dDemo.cpp diff --git a/ObsoleteDemos/Box2dDemo/Box2dDemo.h b/Demos/Box2dDemo/Box2dDemo.h similarity index 100% rename from ObsoleteDemos/Box2dDemo/Box2dDemo.h rename to Demos/Box2dDemo/Box2dDemo.h diff --git a/ObsoleteDemos/Box2dDemo/CMakeLists.txt b/Demos/Box2dDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/Box2dDemo/CMakeLists.txt rename to Demos/Box2dDemo/CMakeLists.txt diff --git a/ObsoleteDemos/Box2dDemo/Win32Box2dDemo.cpp b/Demos/Box2dDemo/Win32Box2dDemo.cpp similarity index 100% rename from ObsoleteDemos/Box2dDemo/Win32Box2dDemo.cpp rename to Demos/Box2dDemo/Win32Box2dDemo.cpp diff --git a/ObsoleteDemos/Box2dDemo/main.cpp b/Demos/Box2dDemo/main.cpp similarity index 100% rename from ObsoleteDemos/Box2dDemo/main.cpp rename to Demos/Box2dDemo/main.cpp diff --git a/ObsoleteDemos/BspDemo/BspConverter.cpp b/Demos/BspDemo/BspConverter.cpp similarity index 100% rename from ObsoleteDemos/BspDemo/BspConverter.cpp rename to Demos/BspDemo/BspConverter.cpp diff --git a/ObsoleteDemos/BspDemo/BspConverter.h b/Demos/BspDemo/BspConverter.h similarity index 100% rename from ObsoleteDemos/BspDemo/BspConverter.h rename to Demos/BspDemo/BspConverter.h diff --git a/ObsoleteDemos/BspDemo/BspDemo.bsp b/Demos/BspDemo/BspDemo.bsp similarity index 100% rename from ObsoleteDemos/BspDemo/BspDemo.bsp rename to Demos/BspDemo/BspDemo.bsp diff --git a/ObsoleteDemos/BspDemo/BspDemo.cpp b/Demos/BspDemo/BspDemo.cpp similarity index 88% rename from ObsoleteDemos/BspDemo/BspDemo.cpp rename to Demos/BspDemo/BspDemo.cpp index 8301eac3e..52e48eb1b 100644 --- a/ObsoleteDemos/BspDemo/BspDemo.cpp +++ b/Demos/BspDemo/BspDemo.cpp @@ -4,8 +4,8 @@ Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. @@ -60,7 +60,7 @@ public: { ///perhaps we can do something special with entities (isEntity) ///like adding a collision Triggering (as example) - + if (vertices.size() > 0) { float mass = 0.f; @@ -69,7 +69,7 @@ public: startTransform.setIdentity(); startTransform.setOrigin(btVector3(0,0,-10.f)); //this create an internal copy of the vertices - + btCollisionShape* shape = new btConvexHullShape(&(vertices[0].getX()),vertices.size()); m_demoApp->m_collisionShapes.push_back(shape); @@ -134,7 +134,7 @@ BspDemo::~BspDemo() void BspDemo::initPhysics() { const char* bspfilename = "BspDemo.bsp"; - + initPhysics(bspfilename); } @@ -144,7 +144,7 @@ void BspDemo::initPhysics(const char* bspfilename) { setTexturing(true); setShadows(false); - + m_cameraUp = btVector3(0,0,1); m_forwardAxis = 1; @@ -170,31 +170,23 @@ void BspDemo::initPhysics(const char* bspfilename) #ifdef QUAKE_BSP_IMPORTING void* memoryBuffer = 0; - - FILE* file = fopen(bspfilename,"r"); - if (!file) - { - //try again other path, - //sight... visual studio leaves the current working directory in the projectfiles folder - //instead of executable folder. who wants this default behaviour?!? - bspfilename = "../../BspDemo.bsp"; - file = fopen(bspfilename,"r"); - } - if (!file) - { - //try again other path, cmake needs 4 levels deep back... - bspfilename = "../../../../BspDemo.bsp"; - file = fopen(bspfilename,"r"); - } - if (!file) - { - //try again other path, - //sight... visual studio leaves the current working directory in the projectfiles folder - //instead of executable folder. who wants this default behaviour?!? - bspfilename = "BspDemo.bsp"; - file = fopen(bspfilename,"r"); - } + const char* filename = "BspDemo.bsp"; + + const char* prefix[]={"./","../","../../","../../../","../../../../", "BspDemo/", "Demos/BspDemo/", + "../Demos/BspDemo/","../../Demos/BspDemo/"}; + int numPrefixes = sizeof(prefix)/sizeof(const char*); + char relativeFileName[1024]; + FILE* file=0; + + for (int i=0;istepSimulation(dt); //optional but useful: debug drawing @@ -248,7 +240,7 @@ void BspDemo::clientMoveAndDisplay() void BspDemo::displayCallback(void) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); renderme(); @@ -295,7 +287,7 @@ char* makeExeToBspFilename(const char* lpCmdLine) // If we hit a null or a quote, stop copying. This will get just the first filename. if(i && (in[0] == '.') && (in[1] == 'e') && (in[2] == 'x') && (in[3] == 'e')) break; - + // If we hit a null or a quote, stop copying. This will get just the first filename. if(*in == '\0' || *in == '\"') break; @@ -316,6 +308,6 @@ char* makeExeToBspFilename(const char* lpCmdLine) *(out++) = 's'; *(out++) = 'p'; *(out++) = 0; - + return cleaned_filename; } diff --git a/ObsoleteDemos/BspDemo/BspDemo.h b/Demos/BspDemo/BspDemo.h similarity index 100% rename from ObsoleteDemos/BspDemo/BspDemo.h rename to Demos/BspDemo/BspDemo.h diff --git a/ObsoleteDemos/BspDemo/BspLoader.cpp b/Demos/BspDemo/BspLoader.cpp similarity index 100% rename from ObsoleteDemos/BspDemo/BspLoader.cpp rename to Demos/BspDemo/BspLoader.cpp diff --git a/ObsoleteDemos/BspDemo/BspLoader.h b/Demos/BspDemo/BspLoader.h similarity index 100% rename from ObsoleteDemos/BspDemo/BspLoader.h rename to Demos/BspDemo/BspLoader.h diff --git a/ObsoleteDemos/BspDemo/CMakeLists.txt b/Demos/BspDemo/CMakeLists.txt similarity index 91% rename from ObsoleteDemos/BspDemo/CMakeLists.txt rename to Demos/BspDemo/CMakeLists.txt index 0a070a541..4d201988f 100644 --- a/ObsoleteDemos/BspDemo/CMakeLists.txt +++ b/Demos/BspDemo/CMakeLists.txt @@ -35,7 +35,7 @@ IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) ADD_CUSTOM_COMMAND( TARGET AppBspPhysicsDemo POST_BUILD - COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/ObsoleteDemos/BspDemo/BspDemo.bsp ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/BspDemo/BspDemo.bsp ${CMAKE_CURRENT_BINARY_DIR} ) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) @@ -43,4 +43,4 @@ IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) SET_TARGET_PROPERTIES(AppBspPhysicsDemo PROPERTIES DEBUG_POSTFIX "_Debug") SET_TARGET_PROPERTIES(AppBspPhysicsDemo PROPERTIES MINSIZEREL_POSTFIX "_MinsizeRel") SET_TARGET_PROPERTIES(AppBspPhysicsDemo PROPERTIES RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo") -ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) \ No newline at end of file +ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) diff --git a/ObsoleteDemos/BspDemo/main.cpp b/Demos/BspDemo/main.cpp similarity index 100% rename from ObsoleteDemos/BspDemo/main.cpp rename to Demos/BspDemo/main.cpp diff --git a/ObsoleteDemos/BulletDinoDemo/BulletDino.c b/Demos/BulletDinoDemo/BulletDino.c similarity index 100% rename from ObsoleteDemos/BulletDinoDemo/BulletDino.c rename to Demos/BulletDinoDemo/BulletDino.c diff --git a/ObsoleteDemos/BulletDinoDemo/CMakeLists.txt b/Demos/BulletDinoDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/BulletDinoDemo/CMakeLists.txt rename to Demos/BulletDinoDemo/CMakeLists.txt diff --git a/ObsoleteDemos/BulletXmlImportDemo/BulletXmlImportDemo.cpp b/Demos/BulletXmlImportDemo/BulletXmlImportDemo.cpp similarity index 83% rename from ObsoleteDemos/BulletXmlImportDemo/BulletXmlImportDemo.cpp rename to Demos/BulletXmlImportDemo/BulletXmlImportDemo.cpp index 9c670a81a..e1338dbc7 100644 --- a/ObsoleteDemos/BulletXmlImportDemo/BulletXmlImportDemo.cpp +++ b/Demos/BulletXmlImportDemo/BulletXmlImportDemo.cpp @@ -4,8 +4,8 @@ Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. @@ -38,16 +38,36 @@ void BulletXmlImportDemo::initPhysics() setTexturing(true); setShadows(true); - + setupEmptyDynamicsWorld(); - + m_dynamicsWorld->setDebugDrawer(&gDebugDrawer); btBulletXmlWorldImporter* importer = new btBulletXmlWorldImporter(m_dynamicsWorld); - importer->loadFile("bullet_basic.xml"); + static const char* filename = "bullet_basic.xml"; + + const char* prefix[]={"./","../","../../","../../../","../../../../", "BulletXmlImportDemo/", "Demos/BulletXmlImportDemo/", + "../Demos/BulletXmlImportDemo/","../../Demos/BulletXmlImportDemo/"}; + int numPrefixes = sizeof(prefix)/sizeof(const char*); + char relativeFileName[1024]; + bool fileFound = false; + + for (int i=0;iloadFile(relativeFileName); // importer->loadFile("bulletser.xml"); // importer->loadFile("bullet_constraints.xml"); @@ -55,21 +75,21 @@ void BulletXmlImportDemo::initPhysics() void BulletXmlImportDemo::clientMoveAndDisplay() { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //simple dynamics world doesn't handle fixed-time-stepping float ms = getDeltaTimeMicroseconds(); - + ///step the simulation if (m_dynamicsWorld) { - + m_dynamicsWorld->stepSimulation(ms / 1000000.f); m_dynamicsWorld->debugDrawWorld(); } - - renderme(); + + renderme(); glFlush(); @@ -81,8 +101,8 @@ void BulletXmlImportDemo::clientMoveAndDisplay() void BulletXmlImportDemo::displayCallback(void) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + renderme(); @@ -105,7 +125,7 @@ void BulletXmlImportDemo::setupEmptyDynamicsWorld() btGImpactCollisionAlgorithm::registerAlgorithm(m_dispatcher); m_broadphase = new btDbvtBroadphase(); - + ///the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded) btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver; m_solver = sol; @@ -113,7 +133,7 @@ void BulletXmlImportDemo::setupEmptyDynamicsWorld() //btGImpactCollisionAlgorithm::registerAlgorithm((btCollisionDispatcher*)m_dynamicsWorld->getDispatcher()); - + } @@ -123,7 +143,7 @@ void BulletXmlImportDemo::setupEmptyDynamicsWorld() BulletXmlImportDemo::~BulletXmlImportDemo() { m_fileLoader->deleteAllData(); - delete m_fileLoader; + delete m_fileLoader; exitPhysics(); } @@ -163,16 +183,16 @@ void BulletXmlImportDemo::exitPhysics() m_collisionShapes.clear(); delete m_dynamicsWorld; - + delete m_solver; - + delete m_broadphase; - + delete m_dispatcher; delete m_collisionConfiguration; - + } diff --git a/ObsoleteDemos/BulletXmlImportDemo/BulletXmlImportDemo.h b/Demos/BulletXmlImportDemo/BulletXmlImportDemo.h similarity index 100% rename from ObsoleteDemos/BulletXmlImportDemo/BulletXmlImportDemo.h rename to Demos/BulletXmlImportDemo/BulletXmlImportDemo.h diff --git a/ObsoleteDemos/BulletXmlImportDemo/CMakeLists.txt b/Demos/BulletXmlImportDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/BulletXmlImportDemo/CMakeLists.txt rename to Demos/BulletXmlImportDemo/CMakeLists.txt diff --git a/ObsoleteDemos/BulletXmlImportDemo/Win32BulletXmlImportDemo.cpp b/Demos/BulletXmlImportDemo/Win32BulletXmlImportDemo.cpp similarity index 100% rename from ObsoleteDemos/BulletXmlImportDemo/Win32BulletXmlImportDemo.cpp rename to Demos/BulletXmlImportDemo/Win32BulletXmlImportDemo.cpp diff --git a/ObsoleteDemos/BulletXmlImportDemo/bullet_basic.xml b/Demos/BulletXmlImportDemo/bullet_basic.xml similarity index 100% rename from ObsoleteDemos/BulletXmlImportDemo/bullet_basic.xml rename to Demos/BulletXmlImportDemo/bullet_basic.xml diff --git a/ObsoleteDemos/BulletXmlImportDemo/bulletser.xml b/Demos/BulletXmlImportDemo/bulletser.xml similarity index 100% rename from ObsoleteDemos/BulletXmlImportDemo/bulletser.xml rename to Demos/BulletXmlImportDemo/bulletser.xml diff --git a/ObsoleteDemos/BulletXmlImportDemo/main.cpp b/Demos/BulletXmlImportDemo/main.cpp similarity index 100% rename from ObsoleteDemos/BulletXmlImportDemo/main.cpp rename to Demos/BulletXmlImportDemo/main.cpp diff --git a/ObsoleteDemos/CMakeLists.txt b/Demos/CMakeLists.txt similarity index 91% rename from ObsoleteDemos/CMakeLists.txt rename to Demos/CMakeLists.txt index c6d13ac9c..5c53f021e 100644 --- a/ObsoleteDemos/CMakeLists.txt +++ b/Demos/CMakeLists.txt @@ -5,9 +5,9 @@ SUBDIRS( HelloWorld ) IF (USE_GLUT) IF (GLUT_FOUND) IF(BUILD_CPU_DEMOS) -# IF(BUILD_EXTRAS) -# SUBDIRS( BulletXmlImportDemo ConcaveDemo ConstraintDemo ConvexDecompositionDemo SerializeDemo ) -# ENDIF() + IF(BUILD_EXTRAS) + SUBDIRS( BulletXmlImportDemo ConcaveDemo ConvexDecompositionDemo SerializeDemo ) + ENDIF() SET(SharedDemoSubdirs OpenGL CcdPhysicsDemo ConstraintDemo SliderConstraintDemo GenericJointDemo Raytracer diff --git a/ObsoleteDemos/CcdPhysicsDemo/CMakeLists.txt b/Demos/CcdPhysicsDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/CcdPhysicsDemo/CMakeLists.txt rename to Demos/CcdPhysicsDemo/CMakeLists.txt diff --git a/ObsoleteDemos/CcdPhysicsDemo/CcdPhysicsDemo.cpp b/Demos/CcdPhysicsDemo/CcdPhysicsDemo.cpp similarity index 100% rename from ObsoleteDemos/CcdPhysicsDemo/CcdPhysicsDemo.cpp rename to Demos/CcdPhysicsDemo/CcdPhysicsDemo.cpp diff --git a/ObsoleteDemos/CcdPhysicsDemo/CcdPhysicsDemo.h b/Demos/CcdPhysicsDemo/CcdPhysicsDemo.h similarity index 100% rename from ObsoleteDemos/CcdPhysicsDemo/CcdPhysicsDemo.h rename to Demos/CcdPhysicsDemo/CcdPhysicsDemo.h diff --git a/ObsoleteDemos/CcdPhysicsDemo/Makefile.am b/Demos/CcdPhysicsDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/CcdPhysicsDemo/Makefile.am rename to Demos/CcdPhysicsDemo/Makefile.am diff --git a/ObsoleteDemos/CcdPhysicsDemo/main.cpp b/Demos/CcdPhysicsDemo/main.cpp similarity index 100% rename from ObsoleteDemos/CcdPhysicsDemo/main.cpp rename to Demos/CcdPhysicsDemo/main.cpp diff --git a/ObsoleteDemos/CellSpuDemo/BasicDemo2.cpp b/Demos/CellSpuDemo/BasicDemo2.cpp similarity index 100% rename from ObsoleteDemos/CellSpuDemo/BasicDemo2.cpp rename to Demos/CellSpuDemo/BasicDemo2.cpp diff --git a/ObsoleteDemos/CellSpuDemo/BasicDemo2.h b/Demos/CellSpuDemo/BasicDemo2.h similarity index 100% rename from ObsoleteDemos/CellSpuDemo/BasicDemo2.h rename to Demos/CellSpuDemo/BasicDemo2.h diff --git a/ObsoleteDemos/CharacterDemo/CMakeLists.txt b/Demos/CharacterDemo/CMakeLists.txt similarity index 95% rename from ObsoleteDemos/CharacterDemo/CMakeLists.txt rename to Demos/CharacterDemo/CMakeLists.txt index 1a74ed557..9b344f8ae 100644 --- a/ObsoleteDemos/CharacterDemo/CMakeLists.txt +++ b/Demos/CharacterDemo/CMakeLists.txt @@ -46,7 +46,7 @@ IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) ADD_CUSTOM_COMMAND( TARGET AppCharacterDemo POST_BUILD - COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/ObsoleteDemos/BspDemo/BspDemo.bsp ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/BspDemo/BspDemo.bsp ${CMAKE_CURRENT_BINARY_DIR} ) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) diff --git a/ObsoleteDemos/CharacterDemo/CharacterDemo.cpp b/Demos/CharacterDemo/CharacterDemo.cpp similarity index 94% rename from ObsoleteDemos/CharacterDemo/CharacterDemo.cpp rename to Demos/CharacterDemo/CharacterDemo.cpp index d944e1309..29a544a12 100644 --- a/ObsoleteDemos/CharacterDemo/CharacterDemo.cpp +++ b/Demos/CharacterDemo/CharacterDemo.cpp @@ -69,11 +69,11 @@ void CharacterDemo::initPhysics() m_constraintSolver = new btSequentialImpulseConstraintSolver(); m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_overlappingPairCache,m_constraintSolver,m_collisionConfiguration); m_dynamicsWorld->getDispatchInfo().m_allowedCcdPenetration=0.0001f; - + #ifdef DYNAMIC_CHARACTER_CONTROLLER m_character = new DynamicCharacterController (); #else - + btTransform startTransform; startTransform.setIdentity (); //startTransform.setOrigin (btVector3(0.0, 4.0, 0.0)); @@ -101,35 +101,30 @@ void CharacterDemo::initPhysics() btTransform tr; tr.setIdentity(); - const char* bspfilename = "BspDemo.bsp"; + const char* filename = "BspDemo.bsp"; + + const char* prefix[]={"./","../","../../","../../../","../../../../", "BspDemo/", "Demos/BspDemo/", + "../Demos/BspDemo/","../../Demos/BspDemo/"}; + int numPrefixes = sizeof(prefix)/sizeof(const char*); + char relativeFileName[1024]; + FILE* file=0; + + for (int i=0;igetOverlappingPairCache()->findPair(pair.m_pProxy0,pair.m_pProxy1); if (!collisionPair) continue; @@ -217,7 +212,7 @@ void CharacterDemo::clientMoveAndDisplay() /* Character stuff &*/ if (m_character) { - + } debugDrawContacts(); @@ -265,7 +260,7 @@ void CharacterDemo::clientMoveAndDisplay() walkDirection += forwardDir; if (gBackward) - walkDirection -= forwardDir; + walkDirection -= forwardDir; m_character->setWalkDirection(walkDirection*walkSpeed); @@ -344,7 +339,7 @@ void CharacterDemo::clientResetScene() m_character->reset (m_dynamicsWorld); ///WTF m_character->warp (btVector3(10.210001,-2.0306311,16.576973)); - + } void CharacterDemo::specialKeyboardUp(int key, int x, int y) @@ -444,7 +439,7 @@ void CharacterDemo::updateCamera() m_cameraTargetPosition = characterWorldTrans.getOrigin(); m_cameraPosition = m_cameraTargetPosition + up * 10.0 + backward * 12.0; - + //use the convex sweep test to find a safe position for the camera (not blocked by static geometry) btSphereShape cameraSphere(0.2f); btTransform cameraFrom,cameraTo; @@ -452,10 +447,10 @@ void CharacterDemo::updateCamera() cameraFrom.setOrigin(characterWorldTrans.getOrigin()); cameraTo.setIdentity(); cameraTo.setOrigin(m_cameraPosition); - + btCollisionWorld::ClosestConvexResultCallback cb( characterWorldTrans.getOrigin(), cameraTo.getOrigin() ); cb.m_collisionFilterMask = btBroadphaseProxy::StaticFilter; - + m_dynamicsWorld->convexSweepTest(&cameraSphere,cameraFrom,cameraTo,cb); if (cb.hasHit()) { diff --git a/ObsoleteDemos/CharacterDemo/CharacterDemo.h b/Demos/CharacterDemo/CharacterDemo.h similarity index 100% rename from ObsoleteDemos/CharacterDemo/CharacterDemo.h rename to Demos/CharacterDemo/CharacterDemo.h diff --git a/ObsoleteDemos/CharacterDemo/DynamicCharacterController.cpp b/Demos/CharacterDemo/DynamicCharacterController.cpp similarity index 100% rename from ObsoleteDemos/CharacterDemo/DynamicCharacterController.cpp rename to Demos/CharacterDemo/DynamicCharacterController.cpp diff --git a/ObsoleteDemos/CharacterDemo/DynamicCharacterController.h b/Demos/CharacterDemo/DynamicCharacterController.h similarity index 100% rename from ObsoleteDemos/CharacterDemo/DynamicCharacterController.h rename to Demos/CharacterDemo/DynamicCharacterController.h diff --git a/ObsoleteDemos/CharacterDemo/main.cpp b/Demos/CharacterDemo/main.cpp similarity index 100% rename from ObsoleteDemos/CharacterDemo/main.cpp rename to Demos/CharacterDemo/main.cpp diff --git a/ObsoleteDemos/CollisionDemo/CMakeLists.txt b/Demos/CollisionDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/CollisionDemo/CMakeLists.txt rename to Demos/CollisionDemo/CMakeLists.txt diff --git a/ObsoleteDemos/CollisionDemo/CollisionDemo.cpp b/Demos/CollisionDemo/CollisionDemo.cpp similarity index 100% rename from ObsoleteDemos/CollisionDemo/CollisionDemo.cpp rename to Demos/CollisionDemo/CollisionDemo.cpp diff --git a/ObsoleteDemos/CollisionDemo/CollisionDemo.h b/Demos/CollisionDemo/CollisionDemo.h similarity index 100% rename from ObsoleteDemos/CollisionDemo/CollisionDemo.h rename to Demos/CollisionDemo/CollisionDemo.h diff --git a/ObsoleteDemos/CollisionInterfaceDemo/CMakeLists.txt b/Demos/CollisionInterfaceDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/CollisionInterfaceDemo/CMakeLists.txt rename to Demos/CollisionInterfaceDemo/CMakeLists.txt diff --git a/ObsoleteDemos/CollisionInterfaceDemo/CollisionInterfaceDemo.cpp b/Demos/CollisionInterfaceDemo/CollisionInterfaceDemo.cpp similarity index 100% rename from ObsoleteDemos/CollisionInterfaceDemo/CollisionInterfaceDemo.cpp rename to Demos/CollisionInterfaceDemo/CollisionInterfaceDemo.cpp diff --git a/ObsoleteDemos/CollisionInterfaceDemo/CollisionInterfaceDemo.h b/Demos/CollisionInterfaceDemo/CollisionInterfaceDemo.h similarity index 100% rename from ObsoleteDemos/CollisionInterfaceDemo/CollisionInterfaceDemo.h rename to Demos/CollisionInterfaceDemo/CollisionInterfaceDemo.h diff --git a/ObsoleteDemos/CollisionInterfaceDemo/Win32CollisionInterfaceDemo.cpp b/Demos/CollisionInterfaceDemo/Win32CollisionInterfaceDemo.cpp similarity index 100% rename from ObsoleteDemos/CollisionInterfaceDemo/Win32CollisionInterfaceDemo.cpp rename to Demos/CollisionInterfaceDemo/Win32CollisionInterfaceDemo.cpp diff --git a/ObsoleteDemos/CollisionInterfaceDemo/main.cpp b/Demos/CollisionInterfaceDemo/main.cpp similarity index 100% rename from ObsoleteDemos/CollisionInterfaceDemo/main.cpp rename to Demos/CollisionInterfaceDemo/main.cpp diff --git a/ObsoleteDemos/ConcaveConvexcastDemo/CMakeLists.txt b/Demos/ConcaveConvexcastDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ConcaveConvexcastDemo/CMakeLists.txt rename to Demos/ConcaveConvexcastDemo/CMakeLists.txt diff --git a/ObsoleteDemos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.cpp b/Demos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.cpp similarity index 100% rename from ObsoleteDemos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.cpp rename to Demos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.cpp diff --git a/ObsoleteDemos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.h b/Demos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.h similarity index 100% rename from ObsoleteDemos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.h rename to Demos/ConcaveConvexcastDemo/ConcaveConvexcastDemo.h diff --git a/ObsoleteDemos/ConcaveConvexcastDemo/main.cpp b/Demos/ConcaveConvexcastDemo/main.cpp similarity index 100% rename from ObsoleteDemos/ConcaveConvexcastDemo/main.cpp rename to Demos/ConcaveConvexcastDemo/main.cpp diff --git a/ObsoleteDemos/ConcaveDemo/CMakeLists.txt b/Demos/ConcaveDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ConcaveDemo/CMakeLists.txt rename to Demos/ConcaveDemo/CMakeLists.txt diff --git a/ObsoleteDemos/ConcaveDemo/ConcaveDemo.h b/Demos/ConcaveDemo/ConcaveDemo.h similarity index 100% rename from ObsoleteDemos/ConcaveDemo/ConcaveDemo.h rename to Demos/ConcaveDemo/ConcaveDemo.h diff --git a/ObsoleteDemos/ConcaveDemo/ConcavePhysicsDemo.cpp b/Demos/ConcaveDemo/ConcavePhysicsDemo.cpp similarity index 100% rename from ObsoleteDemos/ConcaveDemo/ConcavePhysicsDemo.cpp rename to Demos/ConcaveDemo/ConcavePhysicsDemo.cpp diff --git a/ObsoleteDemos/ConcaveDemo/Jamfile b/Demos/ConcaveDemo/Jamfile similarity index 100% rename from ObsoleteDemos/ConcaveDemo/Jamfile rename to Demos/ConcaveDemo/Jamfile diff --git a/ObsoleteDemos/ConcaveDemo/Win32ConcaveDemo.cpp b/Demos/ConcaveDemo/Win32ConcaveDemo.cpp similarity index 100% rename from ObsoleteDemos/ConcaveDemo/Win32ConcaveDemo.cpp rename to Demos/ConcaveDemo/Win32ConcaveDemo.cpp diff --git a/ObsoleteDemos/ConcaveDemo/main.cpp b/Demos/ConcaveDemo/main.cpp similarity index 100% rename from ObsoleteDemos/ConcaveDemo/main.cpp rename to Demos/ConcaveDemo/main.cpp diff --git a/ObsoleteDemos/ConcaveRaycastDemo/CMakeLists.txt b/Demos/ConcaveRaycastDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ConcaveRaycastDemo/CMakeLists.txt rename to Demos/ConcaveRaycastDemo/CMakeLists.txt diff --git a/ObsoleteDemos/ConcaveRaycastDemo/ConcaveRaycastDemo.cpp b/Demos/ConcaveRaycastDemo/ConcaveRaycastDemo.cpp similarity index 100% rename from ObsoleteDemos/ConcaveRaycastDemo/ConcaveRaycastDemo.cpp rename to Demos/ConcaveRaycastDemo/ConcaveRaycastDemo.cpp diff --git a/ObsoleteDemos/ConcaveRaycastDemo/ConcaveRaycastDemo.h b/Demos/ConcaveRaycastDemo/ConcaveRaycastDemo.h similarity index 100% rename from ObsoleteDemos/ConcaveRaycastDemo/ConcaveRaycastDemo.h rename to Demos/ConcaveRaycastDemo/ConcaveRaycastDemo.h diff --git a/ObsoleteDemos/ConcaveRaycastDemo/main.cpp b/Demos/ConcaveRaycastDemo/main.cpp similarity index 100% rename from ObsoleteDemos/ConcaveRaycastDemo/main.cpp rename to Demos/ConcaveRaycastDemo/main.cpp diff --git a/ObsoleteDemos/ConstraintDemo/CMakeLists.txt b/Demos/ConstraintDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ConstraintDemo/CMakeLists.txt rename to Demos/ConstraintDemo/CMakeLists.txt diff --git a/ObsoleteDemos/ConstraintDemo/ConstraintDemo.cpp b/Demos/ConstraintDemo/ConstraintDemo.cpp similarity index 100% rename from ObsoleteDemos/ConstraintDemo/ConstraintDemo.cpp rename to Demos/ConstraintDemo/ConstraintDemo.cpp diff --git a/ObsoleteDemos/ConstraintDemo/ConstraintDemo.h b/Demos/ConstraintDemo/ConstraintDemo.h similarity index 100% rename from ObsoleteDemos/ConstraintDemo/ConstraintDemo.h rename to Demos/ConstraintDemo/ConstraintDemo.h diff --git a/ObsoleteDemos/ConstraintDemo/Win32ConstraintDemo.cpp b/Demos/ConstraintDemo/Win32ConstraintDemo.cpp similarity index 100% rename from ObsoleteDemos/ConstraintDemo/Win32ConstraintDemo.cpp rename to Demos/ConstraintDemo/Win32ConstraintDemo.cpp diff --git a/ObsoleteDemos/ConstraintDemo/main.cpp b/Demos/ConstraintDemo/main.cpp similarity index 100% rename from ObsoleteDemos/ConstraintDemo/main.cpp rename to Demos/ConstraintDemo/main.cpp diff --git a/ObsoleteDemos/ContinuousConvexCollision/CMakeLists.txt b/Demos/ContinuousConvexCollision/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ContinuousConvexCollision/CMakeLists.txt rename to Demos/ContinuousConvexCollision/CMakeLists.txt diff --git a/ObsoleteDemos/ContinuousConvexCollision/ContinuousConvexCollision.h b/Demos/ContinuousConvexCollision/ContinuousConvexCollision.h similarity index 100% rename from ObsoleteDemos/ContinuousConvexCollision/ContinuousConvexCollision.h rename to Demos/ContinuousConvexCollision/ContinuousConvexCollision.h diff --git a/ObsoleteDemos/ContinuousConvexCollision/ContinuousConvexCollisionDemo.cpp b/Demos/ContinuousConvexCollision/ContinuousConvexCollisionDemo.cpp similarity index 100% rename from ObsoleteDemos/ContinuousConvexCollision/ContinuousConvexCollisionDemo.cpp rename to Demos/ContinuousConvexCollision/ContinuousConvexCollisionDemo.cpp diff --git a/ObsoleteDemos/ConvexDecompositionDemo/CMakeLists.txt b/Demos/ConvexDecompositionDemo/CMakeLists.txt similarity index 96% rename from ObsoleteDemos/ConvexDecompositionDemo/CMakeLists.txt rename to Demos/ConvexDecompositionDemo/CMakeLists.txt index d3cd02e13..979c792bc 100644 --- a/ObsoleteDemos/ConvexDecompositionDemo/CMakeLists.txt +++ b/Demos/ConvexDecompositionDemo/CMakeLists.txt @@ -1,3 +1,4 @@ + # This is basically the overall name of the project in Visual Studio this is the name of the Solution File @@ -53,7 +54,7 @@ IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) TARGET AppConvexDecompositionDemo POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/SerializeDemo/testFile.bullet ${CMAKE_CURRENT_BINARY_DIR}/testFile.bullet - COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/file.obj ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/ConvexDecompositionDemo/file.obj ${CMAKE_CURRENT_BINARY_DIR} ) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) diff --git a/ObsoleteDemos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp b/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp similarity index 95% rename from ObsoleteDemos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp rename to Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp index c2b9bcf87..3b081eaf9 100644 --- a/ObsoleteDemos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp +++ b/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp @@ -4,8 +4,8 @@ Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. @@ -178,23 +178,22 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) ConvexDecomposition::WavefrontObj wo; - tcount = wo.loadObj(filename); + tcount = 0; + const char* prefix[]={"./","../","../../","../../../","../../../../", "ConvexDecompositionDemo/", "Demos/ConvexDecompositionDemo/", + "../Demos/ConvexDecompositionDemo/","../../Demos/ConvexDecompositionDemo/"}; + int numPrefixes = sizeof(prefix)/sizeof(const char*); + char relativeFileName[1024]; + + for (int i=0;i m_convexShapes; @@ -220,7 +219,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) { } - + virtual void ConvexDecompResult(ConvexDecomposition::ConvexResult &result) { @@ -256,7 +255,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) btVector3 vertex(result.mHullVertices[i*3],result.mHullVertices[i*3+1],result.mHullVertices[i*3+2]); vertex *= localScaling; centroid += vertex; - + } } @@ -273,8 +272,8 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) vertices.push_back(vertex); } } - - + + if ( 1 ) { @@ -292,7 +291,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) vertex0 *= localScaling; vertex1 *= localScaling; vertex2 *= localScaling; - + vertex0 -= centroid; vertex1 -= centroid; vertex2 -= centroid; @@ -303,20 +302,20 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) index0+=mBaseCount; index1+=mBaseCount; index2+=mBaseCount; - + fprintf(mOutputFile,"f %d %d %d\r\n", index0+1, index1+1, index2+1 ); } } // float mass = 1.f; - + //this is a tools issue: due to collision margin, convex objects overlap, compensate for it here: //#define SHRINK_OBJECT_INWARDS 1 #ifdef SHRINK_OBJECT_INWARDS float collisionMargin = 0.01f; - + btAlignedObjectArray planeEquations; btGeometryUtil::getPlaneEquationsFromVertices(vertices,planeEquations); @@ -330,13 +329,13 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) btAlignedObjectArray shiftedVertices; btGeometryUtil::getVerticesFromPlaneEquations(shiftedPlaneEquations,shiftedVertices); - + btConvexHullShape* convexShape = new btConvexHullShape(&(shiftedVertices[0].getX()),shiftedVertices.size()); - + #else //SHRINK_OBJECT_INWARDS - + btConvexHullShape* convexShape = new btConvexHullShape(&(vertices[0].getX()),vertices.size()); -#endif +#endif if (sEnableSAT) convexShape->initializePolyhedralFeatures(); convexShape->setMargin(0.01f); @@ -361,7 +360,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) m_trimeshes.push_back(trimesh); btVector3 localScaling(6.f,6.f,6.f); - + int i; for ( i=0;iaddTriangle(vertex0,vertex1,vertex2); } - + btConvexShape* tmpConvexShape = new btConvexTriangleMeshShape(trimesh); - + printf("old numTriangles= %d\n",wo.mTriCount); printf("old numIndices = %d\n",wo.mTriCount*3); printf("old numVertices = %d\n",wo.mVertexCount); - + printf("reducing vertices by creating a convex hull\n"); //create a hull approximation @@ -394,18 +393,18 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) btScalar margin = tmpConvexShape->getMargin(); hull->buildHull(margin); tmpConvexShape->setUserPointer(hull); - - + + printf("new numTriangles = %d\n", hull->numTriangles ()); printf("new numIndices = %d\n", hull->numIndices ()); printf("new numVertices = %d\n", hull->numVertices ()); - + btConvexHullShape* convexShape = new btConvexHullShape(); bool updateLocalAabb = false; for (i=0;inumVertices();i++) { - convexShape->addPoint(hull->getVertexPointer()[i],updateLocalAabb); + convexShape->addPoint(hull->getVertexPointer()[i],updateLocalAabb); } convexShape->recalcLocalAabb(); @@ -419,13 +418,13 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) m_collisionShapes.push_back(convexShape); float mass = 1.f; - + btTransform startTransform; startTransform.setIdentity(); startTransform.setOrigin(btVector3(0,2,14)); localCreateRigidBody(mass, startTransform,convexShape); - + bool useQuantization = true; btCollisionShape* concaveShape = new btBvhTriangleMeshShape(trimesh,useQuantization); startTransform.setOrigin(convexDecompositionObjectOffset); @@ -434,7 +433,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) m_collisionShapes.push_back (concaveShape); } - + if (tcount) { @@ -445,11 +444,11 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) char outputFileName[512]; strcpy(outputFileName,filename); char *dot = strstr(outputFileName,"."); - if ( dot ) + if ( dot ) *dot = 0; strcat(outputFileName,"_convex.obj"); FILE* outputFile = fopen(outputFileName,"wb"); - + unsigned int depth = 5; float cpercent = 5; float ppercent = 15; @@ -479,7 +478,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) std::vector< HACD::Vec3 > points; std::vector< HACD::Vec3 > triangles; - for(int i=0; i vertex(wo.mVertices[index], wo.mVertices[index+1],wo.mVertices[index+2]); @@ -509,17 +508,17 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) bool invert = false; bool addExtraDistPoints = false; bool addNeighboursDistPoints = false; - bool addFacesPoints = false; + bool addFacesPoints = false; myHACD.SetNClusters(nClusters); // minimum number of clusters myHACD.SetNVerticesPerCH(100); // max of 100 vertices per convex-hull myHACD.SetConcavity(concavity); // maximum concavity - myHACD.SetAddExtraDistPoints(addExtraDistPoints); - myHACD.SetAddNeighboursDistPoints(addNeighboursDistPoints); - myHACD.SetAddFacesPoints(addFacesPoints); + myHACD.SetAddExtraDistPoints(addExtraDistPoints); + myHACD.SetAddNeighboursDistPoints(addNeighboursDistPoints); + myHACD.SetAddFacesPoints(addFacesPoints); myHACD.Compute(); - nClusters = myHACD.GetNClusters(); + nClusters = myHACD.GetNClusters(); myHACD.Save("output.wrl", false); @@ -529,7 +528,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) // ConvexBuilder cb(desc.mCallback); // cb.process(desc); //now create some bodies - + if (1) { btCompoundShape* compound = new btCompoundShape(); @@ -546,7 +545,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) float* vertices = new float[nPoints*3]; unsigned int* triangles = new unsigned int[nTriangles*3]; - + HACD::Vec3 * pointsCH = new HACD::Vec3[nPoints]; HACD::Vec3 * trianglesCH = new HACD::Vec3[nTriangles]; myHACD.GetCH(c, pointsCH, trianglesCH); @@ -585,7 +584,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) } /* for (int i=0;iserialize(serializer); - + FILE* f2 = fopen("testFile.bullet","wb"); fwrite(serializer->getBufferPointer(),serializer->getCurrentBufferSize(),1,f2); fclose(f2); @@ -651,17 +650,17 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) //fileLoader->loadFile("testFile64Double.bullet"); //fileLoader->loadFile("testFile64Single.bullet"); //fileLoader->loadFile("testFile32Single.bullet"); - + #endif //TEST_SERIALIZATION - + } void ConvexDecompositionDemo::clientMoveAndDisplay() { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); float dt = getDeltaTimeMicroseconds() * 0.000001f; @@ -681,7 +680,7 @@ void ConvexDecompositionDemo::clientMoveAndDisplay() void ConvexDecompositionDemo::displayCallback(void) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if (m_dynamicsWorld) @@ -749,7 +748,7 @@ void ConvexDecompositionDemo::exitPhysics() delete m_collisionConfiguration; - + } @@ -768,7 +767,7 @@ void ConvexDecompositionDemo::keyboardCallback(unsigned char key, int x, int y) { printf("SAT enabled after the next restart of the demo\n"); } else - { + { printf("SAT disabled after the next restart of the demo\n"); } } else @@ -776,4 +775,4 @@ void ConvexDecompositionDemo::keyboardCallback(unsigned char key, int x, int y) PlatformDemoApplication::keyboardCallback(key,x,y); } -} \ No newline at end of file +} diff --git a/ObsoleteDemos/ConvexDecompositionDemo/ConvexDecompositionDemo.h b/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.h similarity index 100% rename from ObsoleteDemos/ConvexDecompositionDemo/ConvexDecompositionDemo.h rename to Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.h diff --git a/ObsoleteDemos/ConvexDecompositionDemo/Win32ConvexDecompositionDemo.cpp b/Demos/ConvexDecompositionDemo/Win32ConvexDecompositionDemo.cpp similarity index 100% rename from ObsoleteDemos/ConvexDecompositionDemo/Win32ConvexDecompositionDemo.cpp rename to Demos/ConvexDecompositionDemo/Win32ConvexDecompositionDemo.cpp diff --git a/Demos/ConvexDecompositionDemo/file.obj b/Demos/ConvexDecompositionDemo/file.obj new file mode 100644 index 000000000..15047b022 --- /dev/null +++ b/Demos/ConvexDecompositionDemo/file.obj @@ -0,0 +1,3578 @@ +v 0.000118 -0.390977 -0.478607 +v 0.017389 -0.390977 -0.478271 +v 0.029547 -0.390983 -0.429828 +v 0.000118 -0.390983 -0.429848 +v 0.017389 -0.390977 -0.478271 +v 0.017389 -0.342855 -0.474044 +v 0.029547 -0.317820 -0.429577 +v 0.029547 -0.390983 -0.429828 +v 0.017389 -0.342855 -0.474044 +v 0.000118 -0.331762 -0.473074 +v 0.000118 -0.306727 -0.429520 +v 0.029547 -0.317820 -0.429577 +v -0.017152 -0.342855 -0.474044 +v -0.029311 -0.317820 -0.429577 +v -0.017152 -0.342855 -0.474044 +v -0.017152 -0.390977 -0.478271 +v -0.029311 -0.390983 -0.429828 +v -0.029311 -0.317820 -0.429577 +v -0.017152 -0.390977 -0.478271 +v -0.029311 -0.390983 -0.429828 +v 0.017389 -0.391071 -0.377731 +v 0.000118 -0.391100 -0.378066 +v 0.017389 -0.336012 -0.378305 +v 0.017389 -0.391071 -0.377731 +v 0.029547 -0.317820 -0.429577 +v 0.000118 -0.306727 -0.429520 +v 0.000118 -0.324876 -0.378305 +v 0.017389 -0.336012 -0.378305 +v 0.000118 -0.306727 -0.429520 +v -0.029311 -0.317820 -0.429577 +v -0.017152 -0.336012 -0.378305 +v 0.000118 -0.324876 -0.378305 +v -0.017152 -0.391071 -0.377731 +v -0.017152 -0.336012 -0.378305 +v -0.017152 -0.391071 -0.377731 +v 0.017389 -0.355018 -0.311310 +v 0.000118 -0.358745 -0.310312 +v 0.017389 -0.313071 -0.327714 +v 0.017389 -0.355018 -0.311310 +v 0.000118 -0.302315 -0.330597 +v 0.017389 -0.313071 -0.327714 +v -0.017152 -0.313071 -0.327714 +v 0.000118 -0.302315 -0.330597 +v -0.017152 -0.355018 -0.311310 +v -0.017152 -0.313071 -0.327714 +v -0.017152 -0.355018 -0.311310 +v 0.027414 -0.282077 -0.242925 +v 0.000118 -0.286749 -0.239005 +v 0.027414 -0.244765 -0.265699 +v 0.027414 -0.282077 -0.242925 +v 0.000118 -0.231283 -0.277012 +v 0.027414 -0.244765 -0.265699 +v -0.027178 -0.244765 -0.265699 +v 0.000118 -0.231283 -0.277012 +v -0.027178 -0.282077 -0.242925 +v -0.027178 -0.244765 -0.265699 +v -0.027178 -0.282077 -0.242925 +v 0.035601 -0.254040 -0.188841 +v 0.000118 -0.261848 -0.187464 +v 0.035601 -0.172486 -0.190596 +v 0.035601 -0.254040 -0.188841 +v 0.000118 -0.149955 -0.194569 +v 0.035601 -0.172486 -0.190596 +v -0.035364 -0.172486 -0.190596 +v 0.000118 -0.149955 -0.194569 +v -0.035364 -0.254040 -0.188841 +v -0.035364 -0.172486 -0.190596 +v -0.035364 -0.254040 -0.188841 +v 0.000118 -0.360973 -0.484897 +v 0.017389 -0.390977 -0.478271 +v 0.000118 -0.390977 -0.478607 +v 0.017389 -0.342855 -0.474044 +v 0.000118 -0.331762 -0.473074 +v -0.017152 -0.342855 -0.474044 +v -0.017152 -0.390977 -0.478271 +v 0.035601 -0.232880 -0.098411 +v 0.000118 -0.240808 -0.098411 +v 0.035601 -0.144967 -0.098411 +v 0.035601 -0.232880 -0.098411 +v 0.000118 -0.122088 -0.098411 +v 0.035601 -0.144967 -0.098411 +v -0.035364 -0.144967 -0.098411 +v 0.000118 -0.122088 -0.098411 +v -0.035364 -0.232880 -0.098411 +v -0.035364 -0.144967 -0.098411 +v -0.035364 -0.232880 -0.098411 +v 0.478607 -0.390977 0.000118 +v 0.478271 -0.390977 0.017389 +v 0.429828 -0.390983 0.029547 +v 0.429848 -0.390983 0.000118 +v 0.478271 -0.390977 0.017389 +v 0.474044 -0.342855 0.017389 +v 0.429577 -0.317820 0.029547 +v 0.429828 -0.390983 0.029547 +v 0.474044 -0.342855 0.017389 +v 0.473074 -0.331762 0.000118 +v 0.429520 -0.306727 0.000118 +v 0.429577 -0.317820 0.029547 +v 0.474044 -0.342855 -0.017152 +v 0.429577 -0.317820 -0.029311 +v 0.474044 -0.342855 -0.017152 +v 0.478271 -0.390977 -0.017152 +v 0.429828 -0.390983 -0.029311 +v 0.429577 -0.317820 -0.029311 +v 0.478271 -0.390977 -0.017152 +v 0.429828 -0.390983 -0.029311 +v 0.377731 -0.391071 0.017389 +v 0.378066 -0.391100 0.000118 +v 0.378305 -0.336012 0.017389 +v 0.377731 -0.391071 0.017389 +v 0.429577 -0.317820 0.029547 +v 0.429520 -0.306727 0.000118 +v 0.378305 -0.324876 0.000118 +v 0.378305 -0.336012 0.017389 +v 0.429520 -0.306727 0.000118 +v 0.429577 -0.317820 -0.029311 +v 0.378305 -0.336012 -0.017152 +v 0.378305 -0.324876 0.000118 +v 0.377731 -0.391071 -0.017152 +v 0.378305 -0.336012 -0.017152 +v 0.377731 -0.391071 -0.017152 +v 0.311310 -0.355018 0.017389 +v 0.310312 -0.358745 0.000118 +v 0.327714 -0.313071 0.017389 +v 0.311310 -0.355018 0.017389 +v 0.330597 -0.302315 0.000118 +v 0.327714 -0.313071 0.017389 +v 0.327714 -0.313071 -0.017152 +v 0.330597 -0.302315 0.000118 +v 0.311310 -0.355018 -0.017152 +v 0.327714 -0.313071 -0.017152 +v 0.311310 -0.355018 -0.017152 +v 0.242925 -0.282077 0.027414 +v 0.239005 -0.286749 0.000118 +v 0.265699 -0.244765 0.027414 +v 0.242925 -0.282077 0.027414 +v 0.277012 -0.231283 0.000118 +v 0.265699 -0.244765 0.027414 +v 0.265699 -0.244765 -0.027178 +v 0.277012 -0.231283 0.000118 +v 0.242925 -0.282077 -0.027178 +v 0.265699 -0.244765 -0.027178 +v 0.242925 -0.282077 -0.027178 +v 0.188841 -0.254040 0.035601 +v 0.187464 -0.261848 0.000118 +v 0.190596 -0.172486 0.035601 +v 0.188841 -0.254040 0.035601 +v 0.194569 -0.149955 0.000118 +v 0.190596 -0.172486 0.035601 +v 0.190596 -0.172486 -0.035364 +v 0.194569 -0.149955 0.000118 +v 0.188841 -0.254040 -0.035364 +v 0.190596 -0.172486 -0.035364 +v 0.188841 -0.254040 -0.035364 +v 0.484897 -0.360973 0.000118 +v 0.478271 -0.390977 0.017389 +v 0.478607 -0.390977 0.000118 +v 0.474044 -0.342855 0.017389 +v 0.473074 -0.331762 0.000118 +v 0.474044 -0.342855 -0.017152 +v 0.478271 -0.390977 -0.017152 +v 0.098411 -0.232880 0.035601 +v 0.098411 -0.240808 0.000118 +v 0.098411 -0.144967 0.035601 +v 0.098411 -0.232880 0.035601 +v 0.098411 -0.122088 0.000118 +v 0.098411 -0.144967 0.035601 +v 0.098411 -0.144967 -0.035364 +v 0.098411 -0.122088 0.000118 +v 0.098411 -0.232880 -0.035364 +v 0.098411 -0.144967 -0.035364 +v 0.098411 -0.232880 -0.035364 +v -0.000118 -0.390977 0.478607 +v -0.017389 -0.390977 0.478271 +v -0.029547 -0.390983 0.429828 +v -0.000118 -0.390983 0.429848 +v -0.017389 -0.390977 0.478271 +v -0.017389 -0.342855 0.474044 +v -0.029547 -0.317820 0.429577 +v -0.029547 -0.390983 0.429828 +v -0.017389 -0.342855 0.474044 +v -0.000118 -0.331762 0.473074 +v -0.000118 -0.306727 0.429520 +v -0.029547 -0.317820 0.429577 +v 0.017152 -0.342855 0.474044 +v 0.029310 -0.317820 0.429577 +v 0.017152 -0.342855 0.474044 +v 0.017152 -0.390977 0.478271 +v 0.029310 -0.390983 0.429828 +v 0.029310 -0.317820 0.429577 +v 0.017152 -0.390977 0.478271 +v 0.029310 -0.390983 0.429828 +v -0.017389 -0.391071 0.377731 +v -0.000118 -0.391100 0.378066 +v -0.017389 -0.336012 0.378305 +v -0.017389 -0.391071 0.377731 +v -0.029547 -0.317820 0.429577 +v -0.000118 -0.306727 0.429520 +v -0.000118 -0.324876 0.378305 +v -0.017389 -0.336012 0.378305 +v -0.000118 -0.306727 0.429520 +v 0.029310 -0.317820 0.429577 +v 0.017152 -0.336012 0.378305 +v -0.000118 -0.324876 0.378305 +v 0.017152 -0.391071 0.377731 +v 0.017152 -0.336012 0.378305 +v 0.017152 -0.391071 0.377731 +v -0.017389 -0.355018 0.311310 +v -0.000118 -0.358745 0.310312 +v -0.017389 -0.313071 0.327714 +v -0.017389 -0.355018 0.311310 +v -0.000118 -0.302315 0.330597 +v -0.017389 -0.313071 0.327714 +v 0.017152 -0.313071 0.327714 +v -0.000118 -0.302315 0.330597 +v 0.017152 -0.355018 0.311310 +v 0.017152 -0.313071 0.327714 +v 0.017152 -0.355018 0.311310 +v -0.027414 -0.282077 0.242925 +v -0.000118 -0.286749 0.239005 +v -0.027414 -0.244765 0.265699 +v -0.027414 -0.282077 0.242925 +v -0.000118 -0.231283 0.277012 +v -0.027414 -0.244765 0.265699 +v 0.027178 -0.244765 0.265699 +v -0.000118 -0.231283 0.277012 +v 0.027178 -0.282077 0.242925 +v 0.027178 -0.244765 0.265699 +v 0.027178 -0.282077 0.242925 +v -0.035601 -0.254040 0.188841 +v -0.000118 -0.261848 0.187464 +v -0.035601 -0.172486 0.190596 +v -0.035601 -0.254040 0.188841 +v -0.000118 -0.149955 0.194569 +v -0.035601 -0.172486 0.190596 +v 0.035364 -0.172486 0.190596 +v -0.000118 -0.149955 0.194569 +v 0.035364 -0.254040 0.188841 +v 0.035364 -0.172486 0.190596 +v 0.035364 -0.254040 0.188841 +v -0.000118 -0.360973 0.484897 +v -0.017389 -0.390977 0.478271 +v -0.000118 -0.390977 0.478607 +v -0.017389 -0.342855 0.474044 +v -0.000118 -0.331762 0.473074 +v 0.017152 -0.342855 0.474044 +v 0.017152 -0.390977 0.478271 +v -0.035601 -0.232880 0.098411 +v -0.000118 -0.240808 0.098411 +v -0.035601 -0.144967 0.098411 +v -0.035601 -0.232880 0.098411 +v -0.000118 -0.122088 0.098411 +v -0.035601 -0.144967 0.098411 +v 0.035364 -0.144967 0.098411 +v -0.000118 -0.122088 0.098411 +v 0.035364 -0.232880 0.098411 +v 0.035364 -0.144967 0.098411 +v 0.035364 -0.232880 0.098411 +v -0.478607 -0.390977 -0.000118 +v -0.478271 -0.390977 -0.017389 +v -0.429828 -0.390983 -0.029547 +v -0.429848 -0.390983 -0.000118 +v -0.478271 -0.390977 -0.017389 +v -0.474044 -0.342855 -0.017389 +v -0.429577 -0.317820 -0.029547 +v -0.429828 -0.390983 -0.029547 +v -0.474044 -0.342855 -0.017389 +v -0.473074 -0.331762 -0.000118 +v -0.429520 -0.306727 -0.000118 +v -0.429577 -0.317820 -0.029547 +v -0.474044 -0.342855 0.017152 +v -0.429577 -0.317820 0.029310 +v -0.474044 -0.342855 0.017152 +v -0.478271 -0.390977 0.017152 +v -0.429828 -0.390983 0.029310 +v -0.429577 -0.317820 0.029310 +v -0.478271 -0.390977 0.017152 +v -0.429828 -0.390983 0.029310 +v -0.377731 -0.391071 -0.017389 +v -0.378066 -0.391100 -0.000118 +v -0.378305 -0.336012 -0.017389 +v -0.377731 -0.391071 -0.017389 +v -0.429577 -0.317820 -0.029547 +v -0.429520 -0.306727 -0.000118 +v -0.378305 -0.324876 -0.000118 +v -0.378305 -0.336012 -0.017389 +v -0.429520 -0.306727 -0.000118 +v -0.429577 -0.317820 0.029310 +v -0.378305 -0.336012 0.017152 +v -0.378305 -0.324876 -0.000118 +v -0.377731 -0.391071 0.017152 +v -0.378305 -0.336012 0.017152 +v -0.377731 -0.391071 0.017152 +v -0.311310 -0.355018 -0.017389 +v -0.310312 -0.358745 -0.000118 +v -0.327714 -0.313071 -0.017389 +v -0.311310 -0.355018 -0.017389 +v -0.330597 -0.302315 -0.000118 +v -0.327714 -0.313071 -0.017389 +v -0.327714 -0.313071 0.017152 +v -0.330597 -0.302315 -0.000118 +v -0.311310 -0.355018 0.017152 +v -0.327714 -0.313071 0.017152 +v -0.311310 -0.355018 0.017152 +v -0.242925 -0.282077 -0.027414 +v -0.239005 -0.286749 -0.000118 +v -0.265699 -0.244765 -0.027414 +v -0.242925 -0.282077 -0.027414 +v -0.277012 -0.231283 -0.000118 +v -0.265699 -0.244765 -0.027414 +v -0.265699 -0.244765 0.027178 +v -0.277012 -0.231283 -0.000118 +v -0.242925 -0.282077 0.027178 +v -0.265699 -0.244765 0.027178 +v -0.242925 -0.282077 0.027178 +v -0.188841 -0.254040 -0.035601 +v -0.187464 -0.261848 -0.000118 +v -0.190596 -0.172486 -0.035601 +v -0.188841 -0.254040 -0.035601 +v -0.194569 -0.149955 -0.000118 +v -0.190596 -0.172486 -0.035601 +v -0.190596 -0.172486 0.035364 +v -0.194569 -0.149955 -0.000118 +v -0.188841 -0.254040 0.035364 +v -0.190596 -0.172486 0.035364 +v -0.188841 -0.254040 0.035364 +v -0.484897 -0.360973 -0.000118 +v -0.478271 -0.390977 -0.017389 +v -0.478607 -0.390977 -0.000118 +v -0.474044 -0.342855 -0.017389 +v -0.473074 -0.331762 -0.000118 +v -0.474044 -0.342855 0.017152 +v -0.478271 -0.390977 0.017152 +v -0.098411 -0.232880 -0.035601 +v -0.098411 -0.240808 -0.000118 +v -0.098411 -0.144967 -0.035601 +v -0.098411 -0.232880 -0.035601 +v -0.098411 -0.122088 -0.000118 +v -0.098411 -0.144967 -0.035601 +v -0.098411 -0.144967 0.035364 +v -0.098411 -0.122088 -0.000118 +v -0.098411 -0.232880 0.035364 +v -0.098411 -0.144967 0.035364 +v -0.098411 -0.232880 0.035364 +v 0.000000 -0.094464 0.000000 +v 0.043796 -0.094464 0.105844 +v 0.105811 -0.094464 0.043875 +v -0.043875 -0.094464 0.105811 +v -0.105844 -0.094464 0.043796 +v -0.105811 -0.094464 -0.043875 +v -0.043796 -0.094464 -0.105844 +v 0.043875 -0.094464 -0.105811 +v 0.105844 -0.094464 -0.043796 +v 0.043796 -0.255563 0.105844 +v 0.105811 -0.255563 0.043875 +v 0.105811 -0.094464 0.043875 +v 0.043796 -0.094464 0.105844 +v -0.043875 -0.255563 0.105811 +v 0.043796 -0.255563 0.105844 +v 0.043796 -0.094464 0.105844 +v -0.043875 -0.094464 0.105811 +v -0.105844 -0.255563 0.043796 +v -0.043875 -0.255563 0.105811 +v -0.043875 -0.094464 0.105811 +v -0.105844 -0.094464 0.043796 +v -0.105811 -0.255563 -0.043875 +v -0.105844 -0.255563 0.043796 +v -0.105844 -0.094464 0.043796 +v -0.105811 -0.094464 -0.043875 +v -0.043796 -0.255563 -0.105844 +v -0.105811 -0.255563 -0.043875 +v -0.105811 -0.094464 -0.043875 +v -0.043796 -0.094464 -0.105844 +v 0.043875 -0.255563 -0.105811 +v -0.043796 -0.255563 -0.105844 +v -0.043796 -0.094464 -0.105844 +v 0.043875 -0.094464 -0.105811 +v 0.105844 -0.255563 -0.043796 +v 0.043875 -0.255563 -0.105811 +v 0.043875 -0.094464 -0.105811 +v 0.105844 -0.094464 -0.043796 +v 0.105811 -0.255563 0.043875 +v 0.105844 -0.255563 -0.043796 +v 0.105844 -0.094464 -0.043796 +v 0.105811 -0.094464 0.043875 +v 0.000000 -0.255563 0.000000 +v 0.105811 -0.255563 0.043875 +v 0.043796 -0.255563 0.105844 +v -0.043875 -0.255563 0.105811 +v -0.105844 -0.255563 0.043796 +v -0.105811 -0.255563 -0.043875 +v -0.043796 -0.255563 -0.105844 +v 0.043875 -0.255563 -0.105811 +v 0.105844 -0.255563 -0.043796 +v -0.275954 0.604340 0.275954 +v -0.275954 0.604340 -0.275954 +v -0.275954 0.612392 -0.275954 +v -0.275954 0.612392 0.275954 +v -0.275954 0.604340 -0.275954 +v 0.275954 0.604340 -0.275954 +v 0.275954 0.612392 -0.275954 +v -0.275954 0.612392 -0.275954 +v 0.275954 0.604340 -0.275954 +v 0.275954 0.604340 0.275954 +v 0.275954 0.612392 0.275954 +v 0.275954 0.612392 -0.275954 +v 0.275954 0.604340 0.275954 +v -0.275954 0.604340 0.275954 +v -0.275954 0.612392 0.275954 +v 0.275954 0.612392 0.275954 +v -0.275954 0.612392 0.275954 +v -0.275954 0.612392 -0.275954 +v -0.284007 0.611587 -0.284007 +v -0.284007 0.611587 0.284007 +v -0.275954 0.612392 -0.275954 +v 0.275954 0.612392 -0.275954 +v 0.284007 0.611587 -0.284007 +v -0.284007 0.611587 -0.284007 +v 0.275954 0.612392 -0.275954 +v 0.275954 0.612392 0.275954 +v 0.284007 0.611587 0.284007 +v 0.284007 0.611587 -0.284007 +v 0.275954 0.612392 0.275954 +v -0.275954 0.612392 0.275954 +v -0.284007 0.611587 0.284007 +v 0.284007 0.611587 0.284007 +v -0.284007 0.611587 0.284007 +v -0.284007 0.611587 -0.284007 +v -0.284007 0.603535 -0.284007 +v -0.284007 0.603535 0.284007 +v -0.284007 0.611587 -0.284007 +v 0.284007 0.611587 -0.284007 +v 0.284007 0.603535 -0.284007 +v -0.284007 0.603535 -0.284007 +v 0.284007 0.611587 -0.284007 +v 0.284007 0.611587 0.284007 +v 0.284007 0.603535 0.284007 +v 0.284007 0.603535 -0.284007 +v 0.284007 0.611587 0.284007 +v -0.284007 0.611587 0.284007 +v -0.284007 0.603535 0.284007 +v 0.284007 0.603535 0.284007 +v -0.507297 0.549194 0.507297 +v 0.507297 0.549194 0.507297 +v 0.507297 0.550000 0.507297 +v -0.507297 0.550000 0.507297 +v 0.507297 0.549194 0.507297 +v 0.507297 0.549194 -0.507297 +v 0.507297 0.550000 -0.507297 +v 0.507297 0.550000 0.507297 +v 0.507297 0.549194 -0.507297 +v -0.507297 0.549194 -0.507297 +v -0.507297 0.550000 -0.507297 +v 0.507297 0.550000 -0.507297 +v -0.507297 0.549194 -0.507297 +v -0.507297 0.549194 0.507297 +v -0.507297 0.550000 0.507297 +v -0.507297 0.550000 -0.507297 +v 0.507297 0.558052 0.507297 +v -0.507297 0.558052 0.507297 +v 0.507297 0.558052 -0.507297 +v 0.507297 0.558052 0.507297 +v -0.507297 0.558052 -0.507297 +v 0.507297 0.558052 -0.507297 +v -0.507297 0.558052 0.507297 +v -0.507297 0.558052 -0.507297 +v 0.499245 0.566104 0.499245 +v -0.499245 0.566104 0.499245 +v 0.499245 0.566104 -0.499245 +v 0.499245 0.566104 0.499245 +v -0.499245 0.566104 -0.499245 +v 0.499245 0.566104 -0.499245 +v -0.499245 0.566104 0.499245 +v -0.499245 0.566104 -0.499245 +v 0.499245 0.574157 0.499245 +v -0.499245 0.574157 0.499245 +v 0.499245 0.574157 -0.499245 +v 0.499245 0.574157 0.499245 +v -0.499245 0.574157 -0.499245 +v 0.499245 0.574157 -0.499245 +v -0.499245 0.574157 0.499245 +v -0.499245 0.574157 -0.499245 +v 0.491193 0.582209 0.491193 +v -0.491193 0.582209 0.491193 +v 0.491193 0.582209 -0.491193 +v 0.491193 0.582209 0.491193 +v -0.491193 0.582209 -0.491193 +v 0.491193 0.582209 -0.491193 +v -0.491193 0.582209 0.491193 +v -0.491193 0.582209 -0.491193 +v -0.491193 0.582209 0.491193 +v 0.491193 0.582209 0.491193 +v 0.483140 0.583014 0.483140 +v -0.483140 0.583014 0.483140 +v 0.491193 0.582209 0.491193 +v 0.491193 0.582209 -0.491193 +v 0.483140 0.583014 -0.483140 +v 0.483140 0.583014 0.483140 +v 0.491193 0.582209 -0.491193 +v -0.491193 0.582209 -0.491193 +v -0.483140 0.583014 -0.483140 +v 0.483140 0.583014 -0.483140 +v -0.491193 0.582209 -0.491193 +v -0.491193 0.582209 0.491193 +v -0.483140 0.583014 0.483140 +v -0.483140 0.583014 -0.483140 +v -0.314041 0.591939 -0.314041 +v -0.314041 0.591939 0.314041 +v 0.314041 0.591939 -0.314041 +v -0.314041 0.591939 -0.314041 +v 0.314041 0.591939 0.314041 +v 0.314041 0.591939 -0.314041 +v -0.314041 0.591939 0.314041 +v 0.314041 0.591939 0.314041 +v -0.322094 0.591134 -0.322094 +v -0.322094 0.591134 0.322094 +v 0.322094 0.591134 -0.322094 +v -0.322094 0.591134 -0.322094 +v 0.322094 0.591134 0.322094 +v 0.322094 0.591134 -0.322094 +v -0.322094 0.591134 0.322094 +v 0.322094 0.591134 0.322094 +v -0.322094 0.583082 -0.322094 +v -0.322094 0.583082 0.322094 +v 0.322094 0.583082 -0.322094 +v -0.322094 0.583082 -0.322094 +v 0.322094 0.583082 0.322094 +v 0.322094 0.583082 -0.322094 +v -0.322094 0.583082 0.322094 +v 0.322094 0.583082 0.322094 +v -0.322094 0.583082 0.322094 +v -0.322094 0.583082 -0.322094 +v -0.483140 0.575029 -0.483140 +v -0.483140 0.575029 0.483140 +v -0.322094 0.583082 -0.322094 +v 0.322094 0.583082 -0.322094 +v 0.483140 0.575029 -0.483140 +v -0.483140 0.575029 -0.483140 +v 0.322094 0.583082 -0.322094 +v 0.322094 0.583082 0.322094 +v 0.483140 0.575029 0.483140 +v 0.483140 0.575029 -0.483140 +v 0.322094 0.583082 0.322094 +v -0.322094 0.583082 0.322094 +v -0.483140 0.575029 0.483140 +v 0.483140 0.575029 0.483140 +v -0.483140 0.575029 0.483140 +v -0.483140 0.575029 -0.483140 +v -0.483140 0.583014 -0.483140 +v -0.483140 0.583014 0.483140 +v -0.483140 0.575029 -0.483140 +v 0.483140 0.575029 -0.483140 +v 0.483140 0.583014 -0.483140 +v -0.483140 0.583014 -0.483140 +v 0.483140 0.575029 -0.483140 +v 0.483140 0.575029 0.483140 +v 0.483140 0.583014 0.483140 +v 0.483140 0.583014 -0.483140 +v 0.483140 0.575029 0.483140 +v -0.483140 0.575029 0.483140 +v -0.483140 0.583014 0.483140 +v 0.483140 0.583014 0.483140 +v 0.275954 0.604340 -0.275954 +v -0.275954 0.604340 -0.275954 +v -0.275954 0.604340 0.275954 +v 0.275954 0.604340 0.275954 +v 0.507297 0.549194 -0.507297 +v 0.507297 0.549194 0.507297 +v -0.507297 0.549194 0.507297 +v -0.507297 0.549194 -0.507297 +v 0.061122 0.493612 0.044408 +v 0.075551 0.493612 0.000000 +v 0.153763 0.549783 0.000000 +v 0.124397 0.549782 0.090379 +v 0.023346 0.493612 0.071853 +v 0.047515 0.549782 0.146237 +v -0.023346 0.493612 0.071853 +v -0.047515 0.549782 0.146237 +v -0.061122 0.493612 0.044408 +v -0.124396 0.549782 0.090380 +v -0.075551 0.493612 0.000000 +v -0.153763 0.549783 0.000000 +v -0.061122 0.493612 -0.044407 +v -0.124397 0.549783 -0.090379 +v -0.023346 0.493612 -0.071853 +v -0.047515 0.549783 -0.146237 +v 0.023346 0.493612 -0.071853 +v 0.047515 0.549783 -0.146237 +v 0.061122 0.493612 -0.044407 +v 0.124396 0.549783 -0.090379 +v 0.039643 0.457110 0.028802 +v 0.049002 0.457110 0.000000 +v 0.015142 0.457110 0.046603 +v -0.015142 0.457110 0.046603 +v -0.039643 0.457110 0.028802 +v -0.049002 0.457110 0.000000 +v -0.039643 0.457110 -0.028802 +v -0.015142 0.457110 -0.046603 +v 0.015142 0.457110 -0.046603 +v 0.039643 0.457110 -0.028802 +v 0.065534 -0.100432 0.047613 +v 0.081005 -0.100432 0.000000 +v 0.081005 -0.082613 0.000000 +v 0.065534 -0.082613 0.047613 +v 0.025032 -0.100432 0.077040 +v 0.065534 -0.100432 0.047613 +v 0.065534 -0.082613 0.047613 +v 0.025032 -0.082613 0.077040 +v -0.025032 -0.100432 0.077040 +v 0.025032 -0.100432 0.077040 +v 0.025032 -0.082613 0.077040 +v -0.025032 -0.082613 0.077040 +v -0.065534 -0.100432 0.047613 +v -0.025032 -0.100432 0.077040 +v -0.025032 -0.082613 0.077040 +v -0.065534 -0.082613 0.047613 +v -0.081005 -0.100432 0.000000 +v -0.065534 -0.100432 0.047613 +v -0.065534 -0.082613 0.047613 +v -0.081005 -0.082613 0.000000 +v -0.065534 -0.100432 -0.047613 +v -0.081005 -0.100432 0.000000 +v -0.081005 -0.082613 0.000000 +v -0.065534 -0.082613 -0.047613 +v -0.025032 -0.100432 -0.077040 +v -0.065534 -0.100432 -0.047613 +v -0.065534 -0.082613 -0.047613 +v -0.025032 -0.082613 -0.077040 +v 0.025032 -0.100432 -0.077040 +v -0.025032 -0.100432 -0.077040 +v -0.025032 -0.082613 -0.077040 +v 0.025032 -0.082613 -0.077040 +v 0.065534 -0.100432 -0.047613 +v 0.025032 -0.100432 -0.077040 +v 0.025032 -0.082613 -0.077040 +v 0.065534 -0.082613 -0.047613 +v 0.081005 -0.100432 0.000000 +v 0.065534 -0.100432 -0.047613 +v 0.065534 -0.082613 -0.047613 +v 0.081005 -0.082613 0.000000 +v 0.065534 -0.082613 0.047613 +v 0.081005 -0.082613 0.000000 +v 0.062269 -0.081722 0.000000 +v 0.050377 -0.081722 0.036601 +v 0.025032 -0.082613 0.077040 +v 0.065534 -0.082613 0.047613 +v 0.050377 -0.081722 0.036601 +v 0.019242 -0.081722 0.059221 +v -0.025032 -0.082613 0.077040 +v 0.025032 -0.082613 0.077040 +v 0.019242 -0.081722 0.059221 +v -0.019242 -0.081722 0.059221 +v -0.065534 -0.082613 0.047613 +v -0.025032 -0.082613 0.077040 +v -0.019242 -0.081722 0.059221 +v -0.050377 -0.081722 0.036601 +v -0.081005 -0.082613 0.000000 +v -0.065534 -0.082613 0.047613 +v -0.050377 -0.081722 0.036601 +v -0.062269 -0.081722 0.000000 +v -0.065534 -0.082613 -0.047613 +v -0.081005 -0.082613 0.000000 +v -0.062269 -0.081722 0.000000 +v -0.050377 -0.081722 -0.036601 +v -0.025032 -0.082613 -0.077040 +v -0.065534 -0.082613 -0.047613 +v -0.050377 -0.081722 -0.036601 +v -0.019242 -0.081722 -0.059221 +v 0.025032 -0.082613 -0.077040 +v -0.025032 -0.082613 -0.077040 +v -0.019242 -0.081722 -0.059221 +v 0.019242 -0.081722 -0.059221 +v 0.065534 -0.082613 -0.047613 +v 0.025032 -0.082613 -0.077040 +v 0.019242 -0.081722 -0.059221 +v 0.050377 -0.081722 -0.036601 +v 0.081005 -0.082613 0.000000 +v 0.065534 -0.082613 -0.047613 +v 0.050377 -0.081722 -0.036601 +v 0.062269 -0.081722 0.000000 +v 0.050377 -0.081722 0.036601 +v 0.062269 -0.081722 0.000000 +v 0.062269 -0.063904 0.000000 +v 0.050377 -0.063904 0.036601 +v 0.019242 -0.081722 0.059221 +v 0.050377 -0.081722 0.036601 +v 0.050377 -0.063904 0.036601 +v 0.019242 -0.063904 0.059221 +v -0.019242 -0.081722 0.059221 +v 0.019242 -0.081722 0.059221 +v 0.019242 -0.063904 0.059221 +v -0.019242 -0.063904 0.059221 +v -0.050377 -0.081722 0.036601 +v -0.019242 -0.081722 0.059221 +v -0.019242 -0.063904 0.059221 +v -0.050377 -0.063904 0.036601 +v -0.062269 -0.081722 0.000000 +v -0.050377 -0.081722 0.036601 +v -0.050377 -0.063904 0.036601 +v -0.062269 -0.063904 0.000000 +v -0.050377 -0.081722 -0.036601 +v -0.062269 -0.081722 0.000000 +v -0.062269 -0.063904 0.000000 +v -0.050377 -0.063904 -0.036601 +v -0.019242 -0.081722 -0.059221 +v -0.050377 -0.081722 -0.036601 +v -0.050377 -0.063904 -0.036601 +v -0.019242 -0.063904 -0.059221 +v 0.019242 -0.081722 -0.059221 +v -0.019242 -0.081722 -0.059221 +v -0.019242 -0.063904 -0.059221 +v 0.019242 -0.063904 -0.059221 +v 0.050377 -0.081722 -0.036601 +v 0.019242 -0.081722 -0.059221 +v 0.019242 -0.063904 -0.059221 +v 0.050377 -0.063904 -0.036601 +v 0.062269 -0.081722 0.000000 +v 0.050377 -0.081722 -0.036601 +v 0.050377 -0.063904 -0.036601 +v 0.062269 -0.063904 0.000000 +v 0.050377 -0.063904 0.036601 +v 0.062269 -0.063904 0.000000 +v 0.071637 -0.059449 0.000000 +v 0.057955 -0.059449 0.042107 +v 0.019242 -0.063904 0.059221 +v 0.050377 -0.063904 0.036601 +v 0.057955 -0.059449 0.042107 +v 0.022137 -0.059449 0.068131 +v -0.019242 -0.063904 0.059221 +v 0.019242 -0.063904 0.059221 +v 0.022137 -0.059449 0.068131 +v -0.022137 -0.059449 0.068131 +v -0.050377 -0.063904 0.036601 +v -0.019242 -0.063904 0.059221 +v -0.022137 -0.059449 0.068131 +v -0.057955 -0.059449 0.042107 +v -0.062269 -0.063904 0.000000 +v -0.050377 -0.063904 0.036601 +v -0.057955 -0.059449 0.042107 +v -0.071637 -0.059449 0.000000 +v -0.050377 -0.063904 -0.036601 +v -0.062269 -0.063904 0.000000 +v -0.071637 -0.059449 0.000000 +v -0.057955 -0.059449 -0.042107 +v -0.019242 -0.063904 -0.059221 +v -0.050377 -0.063904 -0.036601 +v -0.057955 -0.059449 -0.042107 +v -0.022137 -0.059449 -0.068131 +v 0.019242 -0.063904 -0.059221 +v -0.019242 -0.063904 -0.059221 +v -0.022137 -0.059449 -0.068131 +v 0.022137 -0.059449 -0.068131 +v 0.050377 -0.063904 -0.036601 +v 0.019242 -0.063904 -0.059221 +v 0.022137 -0.059449 -0.068131 +v 0.057955 -0.059449 -0.042107 +v 0.062269 -0.063904 0.000000 +v 0.050377 -0.063904 -0.036601 +v 0.057955 -0.059449 -0.042107 +v 0.071637 -0.059449 0.000000 +v 0.057955 -0.059449 0.042107 +v 0.071637 -0.059449 0.000000 +v 0.071637 -0.050540 0.000000 +v 0.057955 -0.050540 0.042107 +v 0.022137 -0.059449 0.068131 +v 0.057955 -0.059449 0.042107 +v 0.057955 -0.050540 0.042107 +v 0.022137 -0.050540 0.068131 +v -0.022137 -0.059449 0.068131 +v 0.022137 -0.059449 0.068131 +v 0.022137 -0.050540 0.068131 +v -0.022137 -0.050540 0.068131 +v -0.057955 -0.059449 0.042107 +v -0.022137 -0.059449 0.068131 +v -0.022137 -0.050540 0.068131 +v -0.057955 -0.050540 0.042107 +v -0.071637 -0.059449 0.000000 +v -0.057955 -0.059449 0.042107 +v -0.057955 -0.050540 0.042107 +v -0.071637 -0.050540 0.000000 +v -0.057955 -0.059449 -0.042107 +v -0.071637 -0.059449 0.000000 +v -0.071637 -0.050540 0.000000 +v -0.057955 -0.050540 -0.042107 +v -0.022137 -0.059449 -0.068131 +v -0.057955 -0.059449 -0.042107 +v -0.057955 -0.050540 -0.042107 +v -0.022137 -0.050540 -0.068131 +v 0.022137 -0.059449 -0.068131 +v -0.022137 -0.059449 -0.068131 +v -0.022137 -0.050540 -0.068131 +v 0.022137 -0.050540 -0.068131 +v 0.057955 -0.059449 -0.042107 +v 0.022137 -0.059449 -0.068131 +v 0.022137 -0.050540 -0.068131 +v 0.057955 -0.050540 -0.042107 +v 0.071637 -0.059449 0.000000 +v 0.057955 -0.059449 -0.042107 +v 0.057955 -0.050540 -0.042107 +v 0.071637 -0.050540 0.000000 +v 0.057955 -0.050540 0.042107 +v 0.071637 -0.050540 0.000000 +v 0.062269 -0.046085 0.000000 +v 0.050377 -0.046085 0.036601 +v 0.022137 -0.050540 0.068131 +v 0.057955 -0.050540 0.042107 +v 0.050377 -0.046085 0.036601 +v 0.019242 -0.046085 0.059221 +v -0.022137 -0.050540 0.068131 +v 0.022137 -0.050540 0.068131 +v 0.019242 -0.046085 0.059221 +v -0.019242 -0.046085 0.059221 +v -0.057955 -0.050540 0.042107 +v -0.022137 -0.050540 0.068131 +v -0.019242 -0.046085 0.059221 +v -0.050377 -0.046085 0.036601 +v -0.071637 -0.050540 0.000000 +v -0.057955 -0.050540 0.042107 +v -0.050377 -0.046085 0.036601 +v -0.062269 -0.046085 0.000000 +v -0.057955 -0.050540 -0.042107 +v -0.071637 -0.050540 0.000000 +v -0.062269 -0.046085 0.000000 +v -0.050377 -0.046085 -0.036601 +v -0.022137 -0.050540 -0.068131 +v -0.057955 -0.050540 -0.042107 +v -0.050377 -0.046085 -0.036601 +v -0.019242 -0.046085 -0.059221 +v 0.022137 -0.050540 -0.068131 +v -0.022137 -0.050540 -0.068131 +v -0.019242 -0.046085 -0.059221 +v 0.019242 -0.046085 -0.059221 +v 0.057955 -0.050540 -0.042107 +v 0.022137 -0.050540 -0.068131 +v 0.019242 -0.046085 -0.059221 +v 0.050377 -0.046085 -0.036601 +v 0.071637 -0.050540 0.000000 +v 0.057955 -0.050540 -0.042107 +v 0.050377 -0.046085 -0.036601 +v 0.062269 -0.046085 0.000000 +v 0.050377 -0.046085 0.036601 +v 0.062269 -0.046085 0.000000 +v 0.062269 -0.037015 0.000000 +v 0.050377 -0.037015 0.036601 +v 0.019242 -0.046085 0.059221 +v 0.050377 -0.046085 0.036601 +v 0.050377 -0.037015 0.036601 +v 0.019242 -0.037015 0.059221 +v -0.019242 -0.046085 0.059221 +v 0.019242 -0.046085 0.059221 +v 0.019242 -0.037015 0.059221 +v -0.019242 -0.037015 0.059221 +v -0.050377 -0.046085 0.036601 +v -0.019242 -0.046085 0.059221 +v -0.019242 -0.037015 0.059221 +v -0.050377 -0.037015 0.036601 +v -0.062269 -0.046085 0.000000 +v -0.050377 -0.046085 0.036601 +v -0.050377 -0.037015 0.036601 +v -0.062269 -0.037015 0.000000 +v -0.050377 -0.046085 -0.036601 +v -0.062269 -0.046085 0.000000 +v -0.062269 -0.037015 0.000000 +v -0.050377 -0.037015 -0.036601 +v -0.019242 -0.046085 -0.059221 +v -0.050377 -0.046085 -0.036601 +v -0.050377 -0.037015 -0.036601 +v -0.019242 -0.037015 -0.059221 +v 0.019242 -0.046085 -0.059221 +v -0.019242 -0.046085 -0.059221 +v -0.019242 -0.037015 -0.059221 +v 0.019242 -0.037015 -0.059221 +v 0.050377 -0.046085 -0.036601 +v 0.019242 -0.046085 -0.059221 +v 0.019242 -0.037015 -0.059221 +v 0.050377 -0.037015 -0.036601 +v 0.062269 -0.046085 0.000000 +v 0.050377 -0.046085 -0.036601 +v 0.050377 -0.037015 -0.036601 +v 0.062269 -0.037015 0.000000 +v 0.035221 0.414309 0.025590 +v 0.043536 0.414309 0.000000 +v 0.049002 0.457110 0.000000 +v 0.039643 0.457110 0.028802 +v 0.013453 0.414309 0.041405 +v 0.015142 0.457110 0.046603 +v -0.013453 0.414309 0.041405 +v -0.015142 0.457110 0.046603 +v -0.035221 0.414309 0.025590 +v -0.039643 0.457110 0.028802 +v -0.043536 0.414309 0.000000 +v -0.049002 0.457110 0.000000 +v -0.035221 0.414309 -0.025590 +v -0.039643 0.457110 -0.028802 +v -0.013453 0.414309 -0.041405 +v -0.015142 0.457110 -0.046603 +v 0.013453 0.414309 -0.041405 +v 0.015142 0.457110 -0.046603 +v 0.035221 0.414309 -0.025590 +v 0.013453 0.414309 -0.041405 +v 0.015142 0.457110 -0.046603 +v 0.039643 0.457110 -0.028802 +v 0.051175 0.223460 0.037181 +v 0.063256 0.223460 0.000000 +v 0.019547 0.223460 0.060160 +v -0.019547 0.223460 0.060160 +v -0.051175 0.223460 0.037181 +v -0.063256 0.223460 0.000000 +v -0.051175 0.223460 -0.037181 +v -0.019547 0.223460 -0.060160 +v 0.019547 0.223460 -0.060160 +v 0.051176 0.223460 -0.037181 +v 0.019547 0.223460 -0.060160 +v 0.076220 0.102045 0.055377 +v 0.094213 0.102045 0.000000 +v 0.029113 0.102045 0.089602 +v -0.029113 0.102045 0.089602 +v -0.076220 0.102045 0.055377 +v -0.094213 0.102045 0.000000 +v -0.076220 0.102045 -0.055377 +v -0.029113 0.102045 -0.089602 +v 0.029113 0.102045 -0.089602 +v 0.076220 0.102045 -0.055377 +v 0.029113 0.102045 -0.089602 +v 0.068919 -0.002139 0.050073 +v 0.085189 -0.002139 0.000000 +v 0.026325 -0.002139 0.081019 +v -0.026325 -0.002139 0.081019 +v -0.068919 -0.002139 0.050073 +v -0.085189 -0.002139 0.000000 +v -0.068919 -0.002139 -0.050073 +v -0.026325 -0.002139 -0.081019 +v 0.026325 -0.002139 -0.081019 +v 0.068919 -0.002139 -0.050073 +v 0.026325 -0.002139 -0.081019 +v 0.050377 -0.037015 0.036601 +v 0.062269 -0.037015 0.000000 +v 0.019242 -0.037015 0.059221 +v -0.019242 -0.037015 0.059221 +v -0.050377 -0.037015 0.036601 +v -0.062269 -0.037015 0.000000 +v -0.050377 -0.037015 -0.036601 +v -0.019242 -0.037015 -0.059221 +v 0.019242 -0.037015 -0.059221 +v 0.050377 -0.037015 -0.036601 +v 0.019242 -0.037015 -0.059221 +vt 0.017083 0.467481 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077277 0.475172 +vt 0.017498 0.425773 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.077301 0.425780 +vt 0.022716 0.366365 +vt 0.023914 0.320840 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077611 0.335458 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.141617 0.425888 +vt 0.141203 0.458853 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.077611 0.335458 +vt 0.077682 0.295421 +vt 0.140908 0.303558 +vt 0.140908 0.357917 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.140908 0.357917 +vt 0.140908 0.303558 +vt 0.141617 0.425888 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.223614 0.381380 +vt 0.233628 0.407934 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.187732 0.293268 +vt 0.203363 0.329596 +vt 0.203363 0.329596 +vt 0.187732 0.293268 +vt 0.223614 0.381380 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.308037 0.291333 +vt 0.324950 0.321248 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.264859 0.213261 +vt 0.279922 0.245271 +vt 0.279922 0.245271 +vt 0.264859 0.213261 +vt 0.308037 0.291333 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.377000 0.255623 +vt 0.378700 0.295995 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.367735 0.111762 +vt 0.372639 0.156040 +vt 0.372639 0.156040 +vt 0.367735 0.111762 +vt 0.377000 0.255623 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.393655 0.410963 +vt 0.467714 0.453591 +vt 0.467714 0.410963 +vt 0.348935 0.453591 +vt 0.321554 0.410963 +vt 0.348935 0.368334 +vt 0.467714 0.368334 +vt 0.486443 0.230599 +vt 0.486443 0.273314 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.486443 0.071872 +vt 0.486443 0.122067 +vt 0.486443 0.122067 +vt 0.486443 0.071872 +vt 0.486443 0.230599 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.017083 0.467481 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077277 0.475172 +vt 0.017498 0.425773 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.077301 0.425780 +vt 0.022716 0.366365 +vt 0.023914 0.320840 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077611 0.335458 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.141617 0.425888 +vt 0.141203 0.458853 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.077611 0.335458 +vt 0.077682 0.295421 +vt 0.140908 0.303558 +vt 0.140908 0.357917 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.140908 0.357917 +vt 0.140908 0.303558 +vt 0.141617 0.425888 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.223614 0.381380 +vt 0.233628 0.407934 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.187732 0.293268 +vt 0.203363 0.329596 +vt 0.203363 0.329596 +vt 0.187732 0.293268 +vt 0.223614 0.381380 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.308037 0.291333 +vt 0.324950 0.321248 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.264859 0.213261 +vt 0.279922 0.245271 +vt 0.279922 0.245271 +vt 0.264859 0.213261 +vt 0.308037 0.291333 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.377000 0.255623 +vt 0.378700 0.295995 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.367735 0.111762 +vt 0.372639 0.156040 +vt 0.372639 0.156040 +vt 0.367735 0.111762 +vt 0.377000 0.255623 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.393655 0.410963 +vt 0.467714 0.453591 +vt 0.467714 0.410963 +vt 0.348935 0.453591 +vt 0.321554 0.410963 +vt 0.348935 0.368334 +vt 0.467714 0.368334 +vt 0.486443 0.230599 +vt 0.486443 0.273314 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.486443 0.071872 +vt 0.486443 0.122067 +vt 0.486443 0.122067 +vt 0.486443 0.071872 +vt 0.486443 0.230599 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.017083 0.467481 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077277 0.475172 +vt 0.017498 0.425773 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.077301 0.425780 +vt 0.022716 0.366365 +vt 0.023914 0.320840 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077611 0.335458 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.141617 0.425888 +vt 0.141203 0.458853 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.077611 0.335458 +vt 0.077682 0.295421 +vt 0.140908 0.303558 +vt 0.140908 0.357917 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.140908 0.357917 +vt 0.140908 0.303558 +vt 0.141617 0.425888 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.223614 0.381380 +vt 0.233628 0.407934 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.187732 0.293268 +vt 0.203363 0.329596 +vt 0.203363 0.329596 +vt 0.187732 0.293268 +vt 0.223614 0.381380 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.308037 0.291333 +vt 0.324950 0.321248 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.264859 0.213261 +vt 0.279922 0.245271 +vt 0.279922 0.245271 +vt 0.264859 0.213261 +vt 0.308037 0.291333 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.377000 0.255623 +vt 0.378700 0.295995 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.367735 0.111762 +vt 0.372639 0.156040 +vt 0.372639 0.156040 +vt 0.367735 0.111762 +vt 0.377000 0.255623 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.393655 0.410963 +vt 0.467714 0.453591 +vt 0.467714 0.410963 +vt 0.348935 0.453591 +vt 0.321554 0.410963 +vt 0.348935 0.368334 +vt 0.467714 0.368334 +vt 0.486443 0.230599 +vt 0.486443 0.273314 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.486443 0.071872 +vt 0.486443 0.122067 +vt 0.486443 0.122067 +vt 0.486443 0.071872 +vt 0.486443 0.230599 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.017083 0.467481 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077277 0.475172 +vt 0.017498 0.425773 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.077301 0.425780 +vt 0.022716 0.366365 +vt 0.023914 0.320840 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.077611 0.335458 +vt 0.022716 0.366365 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.077611 0.335458 +vt 0.017498 0.425773 +vt 0.077301 0.425780 +vt 0.141617 0.425888 +vt 0.141203 0.458853 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.077611 0.335458 +vt 0.077682 0.295421 +vt 0.140908 0.303558 +vt 0.140908 0.357917 +vt 0.077682 0.295421 +vt 0.077611 0.335458 +vt 0.140908 0.357917 +vt 0.140908 0.303558 +vt 0.141617 0.425888 +vt 0.140908 0.357917 +vt 0.141617 0.425888 +vt 0.223614 0.381380 +vt 0.233628 0.407934 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.187732 0.293268 +vt 0.203363 0.329596 +vt 0.203363 0.329596 +vt 0.187732 0.293268 +vt 0.223614 0.381380 +vt 0.203363 0.329596 +vt 0.223614 0.381380 +vt 0.308037 0.291333 +vt 0.324950 0.321248 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.264859 0.213261 +vt 0.279922 0.245271 +vt 0.279922 0.245271 +vt 0.264859 0.213261 +vt 0.308037 0.291333 +vt 0.279922 0.245271 +vt 0.308037 0.291333 +vt 0.377000 0.255623 +vt 0.378700 0.295995 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.367735 0.111762 +vt 0.372639 0.156040 +vt 0.372639 0.156040 +vt 0.367735 0.111762 +vt 0.377000 0.255623 +vt 0.372639 0.156040 +vt 0.377000 0.255623 +vt 0.393655 0.410963 +vt 0.467714 0.453591 +vt 0.467714 0.410963 +vt 0.348935 0.453591 +vt 0.321554 0.410963 +vt 0.348935 0.368334 +vt 0.467714 0.368334 +vt 0.486443 0.230599 +vt 0.486443 0.273314 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.486443 0.071872 +vt 0.486443 0.122067 +vt 0.486443 0.122067 +vt 0.486443 0.071872 +vt 0.486443 0.230599 +vt 0.486443 0.122067 +vt 0.486443 0.230599 +vt 0.000000 1.000000 +vt 0.312949 0.385343 +vt 0.374010 0.385343 +vt 0.251887 0.385343 +vt 0.190825 0.385343 +vt 0.129763 0.385343 +vt 0.068702 0.385343 +vt 0.496134 0.385343 +vt 0.435072 0.385343 +vt 0.312949 0.498276 +vt 0.374010 0.498276 +vt 0.374010 0.385343 +vt 0.312949 0.385343 +vt 0.251887 0.498276 +vt 0.312949 0.498276 +vt 0.312949 0.385343 +vt 0.251887 0.385343 +vt 0.190825 0.498276 +vt 0.251887 0.498276 +vt 0.251887 0.385343 +vt 0.190825 0.385343 +vt 0.129763 0.498276 +vt 0.190825 0.498276 +vt 0.190825 0.385343 +vt 0.129763 0.385343 +vt 0.068702 0.498276 +vt 0.129763 0.498276 +vt 0.129763 0.385343 +vt 0.068702 0.385343 +vt 0.007640 0.498276 +vt 0.068702 0.498276 +vt 0.068702 0.385343 +vt 0.007640 0.385343 +vt 0.435072 0.498276 +vt 0.496134 0.498276 +vt 0.496134 0.385343 +vt 0.435072 0.385343 +vt 0.321935 0.273341 +vt 0.321962 0.201250 +vt 0.321962 0.201250 +vt 0.321935 0.273341 +vt 0.234927 0.237263 +vt 0.321935 0.273341 +vt 0.270940 0.324298 +vt 0.198849 0.324271 +vt 0.147891 0.273276 +vt 0.147918 0.201184 +vt 0.198914 0.150227 +vt 0.271005 0.150254 +vt 0.321962 0.201250 +vt 0.143227 0.361033 +vt 0.143227 0.144695 +vt 0.135916 0.138034 +vt 0.135916 0.368993 +vt 0.143227 0.144695 +vt 0.359565 0.144695 +vt 0.366875 0.138034 +vt 0.135916 0.138034 +vt 0.359565 0.144695 +vt 0.359565 0.361033 +vt 0.366875 0.368993 +vt 0.366875 0.138034 +vt 0.359565 0.361033 +vt 0.143227 0.361033 +vt 0.135916 0.368993 +vt 0.366875 0.368993 +vt 0.135916 0.368993 +vt 0.135916 0.138034 +vt 0.113352 0.114821 +vt 0.113352 0.390908 +vt 0.135916 0.138034 +vt 0.366875 0.138034 +vt 0.389439 0.114821 +vt 0.113352 0.114821 +vt 0.366875 0.138034 +vt 0.366875 0.368993 +vt 0.389439 0.390908 +vt 0.389439 0.114821 +vt 0.366875 0.368993 +vt 0.135916 0.368993 +vt 0.113352 0.390908 +vt 0.389439 0.390908 +vt 0.113352 0.390908 +vt 0.113352 0.114821 +vt 0.121903 0.123372 +vt 0.121903 0.382356 +vt 0.113352 0.114821 +vt 0.389439 0.114821 +vt 0.380888 0.123372 +vt 0.121903 0.123372 +vt 0.389439 0.114821 +vt 0.389439 0.390908 +vt 0.380888 0.382356 +vt 0.380888 0.123372 +vt 0.389439 0.390908 +vt 0.113352 0.390908 +vt 0.121903 0.382356 +vt 0.380888 0.382356 +vt 0.004820 0.499440 +vt 0.497971 0.499440 +vt 0.497971 0.499440 +vt 0.004820 0.499440 +vt 0.497971 0.499440 +vt 0.497971 0.006289 +vt 0.497971 0.006289 +vt 0.497971 0.499440 +vt 0.497971 0.006289 +vt 0.004820 0.006289 +vt 0.004820 0.006289 +vt 0.497971 0.006289 +vt 0.004820 0.006289 +vt 0.004820 0.499440 +vt 0.004820 0.499440 +vt 0.004820 0.006289 +vt 0.497971 0.499440 +vt 0.004820 0.499440 +vt 0.497971 0.006289 +vt 0.497971 0.499440 +vt 0.004820 0.006289 +vt 0.497971 0.006289 +vt 0.004820 0.499440 +vt 0.004820 0.006289 +vt 0.491654 0.493123 +vt 0.011137 0.493123 +vt 0.491654 0.012605 +vt 0.491654 0.493123 +vt 0.011137 0.012605 +vt 0.491654 0.012605 +vt 0.011137 0.493123 +vt 0.011137 0.012605 +vt 0.482370 0.483838 +vt 0.020421 0.483838 +vt 0.482370 0.021890 +vt 0.482370 0.483838 +vt 0.020421 0.021890 +vt 0.482370 0.021890 +vt 0.020421 0.483838 +vt 0.020421 0.021890 +vt 0.470567 0.472035 +vt 0.032224 0.472035 +vt 0.470567 0.033693 +vt 0.470567 0.472035 +vt 0.032224 0.033693 +vt 0.470567 0.033693 +vt 0.032224 0.472035 +vt 0.032224 0.033693 +vt 0.032224 0.472035 +vt 0.470567 0.472035 +vt 0.459013 0.460481 +vt 0.043778 0.460481 +vt 0.470567 0.472035 +vt 0.470567 0.033693 +vt 0.459013 0.045247 +vt 0.459013 0.460481 +vt 0.470567 0.033693 +vt 0.032224 0.033693 +vt 0.043778 0.045247 +vt 0.459013 0.045247 +vt 0.032224 0.033693 +vt 0.032224 0.472035 +vt 0.043778 0.460481 +vt 0.043778 0.045247 +vt 0.098754 0.100222 +vt 0.098754 0.405506 +vt 0.404037 0.100222 +vt 0.098754 0.100222 +vt 0.404037 0.405506 +vt 0.404037 0.100222 +vt 0.098754 0.405506 +vt 0.404037 0.405506 +vt 0.094840 0.096308 +vt 0.094840 0.409420 +vt 0.407951 0.096308 +vt 0.094840 0.096308 +vt 0.407951 0.409420 +vt 0.407951 0.096308 +vt 0.094840 0.409420 +vt 0.407951 0.409420 +vt 0.087012 0.088481 +vt 0.087012 0.417248 +vt 0.415779 0.088481 +vt 0.087012 0.088481 +vt 0.415779 0.417248 +vt 0.415779 0.088481 +vt 0.087012 0.417248 +vt 0.415779 0.417248 +vt 0.586243 0.413570 +vt 0.586243 0.086583 +vt 0.504496 0.004836 +vt 0.504496 0.495317 +vt 0.586243 0.086583 +vt 0.913231 0.086583 +vt 0.994978 0.004836 +vt 0.504496 0.004836 +vt 0.913231 0.086583 +vt 0.913231 0.413570 +vt 0.994978 0.495317 +vt 0.994978 0.004836 +vt 0.913231 0.413570 +vt 0.586243 0.413570 +vt 0.504496 0.495317 +vt 0.994978 0.495317 +vt 0.052083 0.452177 +vt 0.052083 0.053552 +vt 0.043778 0.045247 +vt 0.043778 0.460481 +vt 0.052083 0.053552 +vt 0.450708 0.053552 +vt 0.459013 0.045247 +vt 0.043778 0.045247 +vt 0.450708 0.053552 +vt 0.450708 0.452177 +vt 0.459013 0.460481 +vt 0.459013 0.045247 +vt 0.450708 0.452177 +vt 0.052083 0.452177 +vt 0.043778 0.460481 +vt 0.459013 0.460481 +vt 0.997798 0.502710 +vt 0.503545 0.502710 +vt 0.503545 0.996963 +vt 0.997798 0.996963 +vt 0.497971 0.006289 +vt 0.497971 0.499440 +vt 0.004820 0.499440 +vt 0.004820 0.006289 +vt 0.366183 0.254192 +vt 0.376207 0.221754 +vt 0.430543 0.221754 +vt 0.410142 0.287774 +vt 0.339940 0.274240 +vt 0.356731 0.328576 +vt 0.307501 0.274241 +vt 0.290711 0.328576 +vt 0.281258 0.254192 +vt 0.237300 0.287774 +vt 0.271234 0.221754 +vt 0.216899 0.221754 +vt 0.281258 0.189315 +vt 0.237300 0.155734 +vt 0.307501 0.169267 +vt 0.290711 0.114932 +vt 0.339940 0.169267 +vt 0.356731 0.114932 +vt 0.366183 0.189315 +vt 0.410142 0.155734 +vt 0.351262 0.242793 +vt 0.357763 0.221754 +vt 0.334240 0.255796 +vt 0.313201 0.255796 +vt 0.296180 0.242793 +vt 0.289678 0.221754 +vt 0.296180 0.200714 +vt 0.313201 0.187711 +vt 0.334240 0.187711 +vt 0.351262 0.200714 +vt 0.350121 0.494170 +vt 0.396949 0.494170 +vt 0.396949 0.469050 +vt 0.350121 0.469050 +vt 0.300793 0.494170 +vt 0.350121 0.494170 +vt 0.350121 0.469050 +vt 0.300793 0.469050 +vt 0.249801 0.494170 +vt 0.300793 0.494170 +vt 0.300793 0.469050 +vt 0.249801 0.469050 +vt 0.200473 0.494170 +vt 0.249801 0.494170 +vt 0.249801 0.469050 +vt 0.200473 0.469050 +vt 0.153645 0.494170 +vt 0.200473 0.494170 +vt 0.200473 0.469050 +vt 0.153645 0.469050 +vt 0.106818 0.494170 +vt 0.153645 0.494170 +vt 0.153645 0.469050 +vt 0.106818 0.469050 +vt 0.057489 0.494170 +vt 0.106818 0.494170 +vt 0.106818 0.469050 +vt 0.057489 0.469050 +vt 0.006498 0.494170 +vt 0.057489 0.494170 +vt 0.057489 0.469050 +vt 0.006498 0.469050 +vt 0.443776 0.494170 +vt 0.493105 0.494170 +vt 0.493105 0.469050 +vt 0.443776 0.469050 +vt 0.396949 0.494170 +vt 0.443776 0.494170 +vt 0.443776 0.469050 +vt 0.396949 0.469050 +vt 0.350121 0.469050 +vt 0.396949 0.469050 +vt 0.396949 0.467794 +vt 0.350121 0.467794 +vt 0.300793 0.469050 +vt 0.350121 0.469050 +vt 0.350121 0.467794 +vt 0.300793 0.467794 +vt 0.249801 0.469050 +vt 0.300793 0.469050 +vt 0.300793 0.467794 +vt 0.249801 0.467794 +vt 0.200473 0.469050 +vt 0.249801 0.469050 +vt 0.249801 0.467794 +vt 0.200473 0.467794 +vt 0.153645 0.469050 +vt 0.200473 0.469050 +vt 0.200473 0.467794 +vt 0.153645 0.467794 +vt 0.106818 0.469050 +vt 0.153645 0.469050 +vt 0.153645 0.467794 +vt 0.106818 0.467794 +vt 0.057489 0.469050 +vt 0.106818 0.469050 +vt 0.106818 0.467794 +vt 0.057489 0.467794 +vt 0.006498 0.469050 +vt 0.057489 0.469050 +vt 0.057489 0.467794 +vt 0.006498 0.467794 +vt 0.443776 0.469050 +vt 0.493105 0.469050 +vt 0.493105 0.467794 +vt 0.443776 0.467794 +vt 0.396949 0.469050 +vt 0.443776 0.469050 +vt 0.443776 0.467794 +vt 0.396949 0.467794 +vt 0.350121 0.467794 +vt 0.396949 0.467794 +vt 0.396949 0.442675 +vt 0.350121 0.442675 +vt 0.300793 0.467794 +vt 0.350121 0.467794 +vt 0.350121 0.442675 +vt 0.300793 0.442675 +vt 0.249801 0.467794 +vt 0.300793 0.467794 +vt 0.300793 0.442675 +vt 0.249801 0.442675 +vt 0.200473 0.467794 +vt 0.249801 0.467794 +vt 0.249801 0.442675 +vt 0.200473 0.442675 +vt 0.153645 0.467794 +vt 0.200473 0.467794 +vt 0.200473 0.442675 +vt 0.153645 0.442675 +vt 0.106818 0.467794 +vt 0.153645 0.467794 +vt 0.153645 0.442675 +vt 0.106818 0.442675 +vt 0.057489 0.467794 +vt 0.106818 0.467794 +vt 0.106818 0.442675 +vt 0.057489 0.442675 +vt 0.006498 0.467794 +vt 0.057489 0.467794 +vt 0.057489 0.442675 +vt 0.006498 0.442675 +vt 0.443776 0.467794 +vt 0.493105 0.467794 +vt 0.493105 0.442675 +vt 0.443776 0.442675 +vt 0.396949 0.467794 +vt 0.443776 0.467794 +vt 0.443776 0.442675 +vt 0.396949 0.442675 +vt 0.350121 0.442675 +vt 0.396949 0.442675 +vt 0.396949 0.436395 +vt 0.350121 0.436395 +vt 0.300793 0.442675 +vt 0.350121 0.442675 +vt 0.350121 0.436395 +vt 0.300793 0.436395 +vt 0.249801 0.442675 +vt 0.300793 0.442675 +vt 0.300793 0.436395 +vt 0.249801 0.436395 +vt 0.200473 0.442675 +vt 0.249801 0.442675 +vt 0.249801 0.436395 +vt 0.200473 0.436395 +vt 0.153645 0.442675 +vt 0.200473 0.442675 +vt 0.200473 0.436395 +vt 0.153645 0.436395 +vt 0.106818 0.442675 +vt 0.153645 0.442675 +vt 0.153645 0.436395 +vt 0.106818 0.436395 +vt 0.057489 0.442675 +vt 0.106818 0.442675 +vt 0.106818 0.436395 +vt 0.057489 0.436395 +vt 0.006498 0.442675 +vt 0.057489 0.442675 +vt 0.057489 0.436395 +vt 0.006498 0.436395 +vt 0.443776 0.442675 +vt 0.493105 0.442675 +vt 0.493105 0.436395 +vt 0.443776 0.436395 +vt 0.396949 0.442675 +vt 0.443776 0.442675 +vt 0.443776 0.436395 +vt 0.396949 0.436395 +vt 0.350121 0.436395 +vt 0.396949 0.436395 +vt 0.396949 0.423835 +vt 0.350121 0.423835 +vt 0.300793 0.436395 +vt 0.350121 0.436395 +vt 0.350121 0.423835 +vt 0.300793 0.423835 +vt 0.249801 0.436395 +vt 0.300793 0.436395 +vt 0.300793 0.423835 +vt 0.249801 0.423835 +vt 0.200473 0.436395 +vt 0.249801 0.436395 +vt 0.249801 0.423835 +vt 0.200473 0.423835 +vt 0.153645 0.436395 +vt 0.200473 0.436395 +vt 0.200473 0.423835 +vt 0.153645 0.423835 +vt 0.106818 0.436395 +vt 0.153645 0.436395 +vt 0.153645 0.423835 +vt 0.106818 0.423835 +vt 0.057489 0.436395 +vt 0.106818 0.436395 +vt 0.106818 0.423835 +vt 0.057489 0.423835 +vt 0.006498 0.436395 +vt 0.057489 0.436395 +vt 0.057489 0.423835 +vt 0.006498 0.423835 +vt 0.443776 0.436395 +vt 0.493105 0.436395 +vt 0.493105 0.423835 +vt 0.443776 0.423835 +vt 0.396949 0.436395 +vt 0.443776 0.436395 +vt 0.443776 0.423835 +vt 0.396949 0.423835 +vt 0.350121 0.423835 +vt 0.396949 0.423835 +vt 0.396949 0.417555 +vt 0.350121 0.417555 +vt 0.300793 0.423835 +vt 0.350121 0.423835 +vt 0.350121 0.417555 +vt 0.300793 0.417555 +vt 0.249801 0.423835 +vt 0.300793 0.423835 +vt 0.300793 0.417555 +vt 0.249801 0.417555 +vt 0.200473 0.423835 +vt 0.249801 0.423835 +vt 0.249801 0.417555 +vt 0.200473 0.417555 +vt 0.153645 0.423835 +vt 0.200473 0.423835 +vt 0.200473 0.417555 +vt 0.153645 0.417555 +vt 0.106818 0.423835 +vt 0.153645 0.423835 +vt 0.153645 0.417555 +vt 0.106818 0.417555 +vt 0.057489 0.423835 +vt 0.106818 0.423835 +vt 0.106818 0.417555 +vt 0.057489 0.417555 +vt 0.006498 0.423835 +vt 0.057489 0.423835 +vt 0.057489 0.417555 +vt 0.006498 0.417555 +vt 0.443776 0.423835 +vt 0.493105 0.423835 +vt 0.493105 0.417555 +vt 0.443776 0.417555 +vt 0.396949 0.423835 +vt 0.443776 0.423835 +vt 0.443776 0.417555 +vt 0.396949 0.417555 +vt 0.350121 0.417555 +vt 0.396949 0.417555 +vt 0.396949 0.404768 +vt 0.350121 0.404768 +vt 0.300793 0.417555 +vt 0.350121 0.417555 +vt 0.350121 0.404768 +vt 0.300793 0.404768 +vt 0.249801 0.417555 +vt 0.300793 0.417555 +vt 0.300793 0.404768 +vt 0.249801 0.404768 +vt 0.200473 0.417555 +vt 0.249801 0.417555 +vt 0.249801 0.404768 +vt 0.200473 0.404768 +vt 0.153645 0.417555 +vt 0.200473 0.417555 +vt 0.200473 0.404768 +vt 0.153645 0.404768 +vt 0.106818 0.417555 +vt 0.153645 0.417555 +vt 0.153645 0.404768 +vt 0.106818 0.404768 +vt 0.057489 0.417555 +vt 0.106818 0.417555 +vt 0.106818 0.404768 +vt 0.057489 0.404768 +vt 0.006498 0.417555 +vt 0.057489 0.417555 +vt 0.057489 0.404768 +vt 0.006498 0.404768 +vt 0.443776 0.417555 +vt 0.493105 0.417555 +vt 0.493105 0.404768 +vt 0.443776 0.404768 +vt 0.396949 0.417555 +vt 0.443776 0.417555 +vt 0.443776 0.404768 +vt 0.396949 0.404768 +vt 0.350998 0.547962 +vt 0.398319 0.547961 +vt 0.398319 0.498824 +vt 0.350998 0.498825 +vt 0.301150 0.547961 +vt 0.301150 0.498825 +vt 0.249620 0.547961 +vt 0.249620 0.498825 +vt 0.199772 0.547962 +vt 0.199772 0.498825 +vt 0.152451 0.547962 +vt 0.152451 0.498824 +vt 0.105130 0.547961 +vt 0.105130 0.498824 +vt 0.055282 0.547962 +vt 0.055282 0.498824 +vt 0.003753 0.547962 +vt 0.003753 0.498824 +vt 0.445640 0.547961 +vt 0.495488 0.547962 +vt 0.495488 0.498824 +vt 0.445640 0.498824 +vt 0.350998 0.737698 +vt 0.398319 0.737698 +vt 0.301150 0.737698 +vt 0.249620 0.737698 +vt 0.199772 0.737698 +vt 0.152451 0.737698 +vt 0.105130 0.737698 +vt 0.055282 0.737698 +vt 0.003753 0.737698 +vt 0.445640 0.737698 +vt 0.495488 0.737698 +vt 0.350998 0.858405 +vt 0.398319 0.858405 +vt 0.301150 0.858405 +vt 0.249620 0.858405 +vt 0.199772 0.858405 +vt 0.152451 0.858405 +vt 0.105130 0.858405 +vt 0.055282 0.858405 +vt 0.003753 0.858405 +vt 0.445640 0.858405 +vt 0.495488 0.858405 +vt 0.350998 0.961982 +vt 0.398319 0.961982 +vt 0.301150 0.961982 +vt 0.249620 0.961982 +vt 0.199772 0.961982 +vt 0.152451 0.961982 +vt 0.105130 0.961982 +vt 0.055282 0.961982 +vt 0.003753 0.961982 +vt 0.445640 0.961982 +vt 0.495488 0.961982 +vt 0.350998 0.996654 +vt 0.398319 0.996654 +vt 0.301150 0.996654 +vt 0.249620 0.996654 +vt 0.199772 0.996654 +vt 0.152451 0.996654 +vt 0.105130 0.996654 +vt 0.055282 0.996654 +vt 0.003753 0.996654 +vt 0.445640 0.996654 +vt 0.495488 0.996654 +vn 0.000001 -0.000117 -1.000000 +vn 0.000007 -0.000119 -1.000000 +vn 0.000004 -0.000642 -1.000000 +vn 0.000290 -0.001097 -0.999999 +vn 0.965539 -0.259953 0.012557 +vn 0.960748 -0.276359 0.024272 +vn 0.995038 -0.099144 0.008333 +vn 0.997311 0.073275 0.000826 +vn 0.384905 -0.746403 0.542891 +vn -0.062420 -0.728758 0.681921 +vn 0.161475 -0.510903 0.844336 +vn 0.298440 -0.528902 0.794478 +vn -0.388088 -0.822360 0.416066 +vn -0.374937 -0.503238 0.778571 +vn -0.967185 -0.253827 0.011142 +vn -0.969696 -0.243379 0.021376 +vn -0.995359 -0.095953 0.007360 +vn -0.997773 0.066697 0.000871 +vn -0.000005 -0.000117 -1.000000 +vn -0.000578 -0.001225 -0.999999 +vn -0.002059 0.162154 -0.986763 +vn 0.036715 0.227361 -0.973118 +vn 0.988150 0.153490 0.000530 +vn 0.997092 0.076202 0.000795 +vn 0.419290 0.355620 0.835302 +vn 0.335340 0.314686 0.887986 +vn 0.476829 0.120448 0.870704 +vn 0.548589 -0.115983 0.828008 +vn -0.425538 0.336785 0.839936 +vn -0.326355 0.383871 0.863791 +vn -0.479491 0.111072 0.870489 +vn -0.546378 -0.151051 0.823805 +vn -0.988094 0.153853 0.000548 +vn -0.996980 0.077652 0.000810 +vn -0.071204 0.307808 -0.948780 +vn 0.134041 0.542848 -0.829065 +vn 0.038742 0.586621 -0.808935 +vn 0.999191 -0.037450 -0.014645 +vn 0.997224 -0.066926 -0.032638 +vn 0.508477 -0.486691 0.710340 +vn 0.518399 -0.586423 0.622391 +vn -0.510691 -0.477362 0.715067 +vn -0.519541 -0.586094 0.621748 +vn -0.999321 -0.034320 -0.013421 +vn -0.997248 -0.066385 -0.032993 +vn -0.208233 0.626135 -0.751394 +vn 0.208454 0.614903 -0.760553 +vn 0.003597 0.581754 -0.813357 +vn 0.994885 -0.089661 -0.046525 +vn 0.994269 -0.101688 -0.032983 +vn 0.510524 -0.657019 0.554699 +vn 0.512927 -0.632907 0.579944 +vn -0.512007 -0.660652 0.548989 +vn -0.514396 -0.638014 0.573004 +vn -0.992961 -0.104288 -0.056137 +vn -0.993472 -0.105450 -0.043510 +vn -0.215729 0.522222 -0.825073 +vn 0.214294 0.359182 -0.908332 +vn 0.000134 0.334072 -0.942548 +vn 0.997269 -0.072312 -0.015018 +vn 0.998775 -0.049471 -0.001064 +vn 0.525393 -0.499573 0.688759 +vn 0.520961 -0.381681 0.763491 +vn -0.527026 -0.502395 0.685451 +vn -0.522284 -0.373646 0.766556 +vn -0.997005 -0.073521 -0.023992 +vn -0.999371 -0.035442 -0.000762 +vn -0.214604 0.292047 -0.932016 +vn -0.000002 -0.996240 0.086630 +vn 0.254654 -0.964745 -0.066466 +vn -0.000002 -0.978728 -0.205161 +vn 0.384905 -0.746403 0.542891 +vn -0.062420 -0.728758 0.681921 +vn -0.388088 -0.822360 0.416066 +vn -0.254657 -0.964744 -0.066466 +vn 0.215116 0.223526 -0.950664 +vn -0.074129 0.228601 -0.970694 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 0.532664 -0.238851 0.811923 +vn 0.525606 -0.243348 0.815181 +vn -0.532938 -0.238769 0.811767 +vn -0.526504 -0.236645 0.816574 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.212589 0.222631 -0.951442 +vn 0.000117 0.000000 -1.000000 +vn 0.000118 0.000007 -1.000000 +vn 0.000642 0.000004 -1.000000 +vn 0.001097 0.000289 -0.999999 +vn 0.259953 0.965539 0.012557 +vn 0.276358 0.960748 0.024272 +vn 0.099144 0.995038 0.008333 +vn -0.073275 0.997311 0.000826 +vn 0.746403 0.384905 0.542891 +vn 0.728758 -0.062420 0.681921 +vn 0.510903 0.161476 0.844336 +vn 0.528902 0.298440 0.794478 +vn 0.822360 -0.388088 0.416066 +vn 0.503238 -0.374936 0.778572 +vn 0.253827 -0.967185 0.011142 +vn 0.243379 -0.969696 0.021376 +vn 0.095953 -0.995359 0.007360 +vn -0.066697 -0.997773 0.000871 +vn 0.000117 -0.000006 -1.000000 +vn 0.001225 -0.000578 -0.999999 +vn -0.162154 -0.002061 -0.986763 +vn -0.227361 0.036714 -0.973118 +vn -0.153490 0.988150 0.000530 +vn -0.076202 0.997092 0.000795 +vn -0.355620 0.419290 0.835302 +vn -0.314686 0.335340 0.887986 +vn -0.120448 0.476829 0.870704 +vn 0.115983 0.548589 0.828008 +vn -0.336785 -0.425537 0.839937 +vn -0.383871 -0.326354 0.863792 +vn -0.111072 -0.479490 0.870490 +vn 0.151051 -0.546377 0.823805 +vn -0.153853 -0.988094 0.000549 +vn -0.077652 -0.996980 0.000810 +vn -0.307808 -0.071204 -0.948780 +vn -0.542849 0.134040 -0.829065 +vn -0.586621 0.038742 -0.808935 +vn 0.037450 0.999191 -0.014646 +vn 0.066926 0.997224 -0.032638 +vn 0.486691 0.508477 0.710340 +vn 0.586423 0.518399 0.622390 +vn 0.477362 -0.510691 0.715067 +vn 0.586095 -0.519541 0.621748 +vn 0.034320 -0.999321 -0.013421 +vn 0.066385 -0.997248 -0.032993 +vn -0.626135 -0.208233 -0.751394 +vn -0.614903 0.208454 -0.760553 +vn -0.581754 0.003596 -0.813357 +vn 0.089661 0.994885 -0.046525 +vn 0.101687 0.994269 -0.032983 +vn 0.657019 0.510524 0.554699 +vn 0.632907 0.512927 0.579944 +vn 0.660652 -0.512006 0.548989 +vn 0.638015 -0.514396 0.573004 +vn 0.104288 -0.992961 -0.056137 +vn 0.105450 -0.993472 -0.043510 +vn -0.522222 -0.215730 -0.825073 +vn -0.359182 0.214294 -0.908332 +vn -0.334072 0.000134 -0.942547 +vn 0.072312 0.997269 -0.015018 +vn 0.049471 0.998775 -0.001064 +vn 0.499573 0.525393 0.688759 +vn 0.381681 0.520961 0.763491 +vn 0.502395 -0.527026 0.685451 +vn 0.373646 -0.522284 0.766556 +vn 0.073521 -0.997005 -0.023992 +vn 0.035442 -0.999371 -0.000762 +vn -0.292047 -0.214604 -0.932016 +vn 0.996240 -0.000002 0.086630 +vn 0.964745 0.254654 -0.066466 +vn 0.978728 -0.000002 -0.205161 +vn 0.746403 0.384905 0.542891 +vn 0.728758 -0.062420 0.681921 +vn 0.822360 -0.388088 0.416066 +vn 0.964744 -0.254658 -0.066466 +vn -0.223526 0.215116 -0.950664 +vn -0.228601 -0.074129 -0.970694 +vn -0.000000 1.000000 -0.000000 +vn -0.000000 1.000000 -0.000000 +vn 0.238851 0.532664 0.811923 +vn 0.243348 0.525606 0.815181 +vn 0.238770 -0.532938 0.811767 +vn 0.236645 -0.526504 0.816574 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.222631 -0.212589 -0.951442 +vn -0.000001 0.000116 -1.000000 +vn -0.000009 0.000119 -1.000000 +vn -0.000005 0.000642 -1.000000 +vn -0.000289 0.001096 -0.999999 +vn -0.965539 0.259953 0.012557 +vn -0.960748 0.276358 0.024272 +vn -0.995038 0.099144 0.008333 +vn -0.997311 -0.073275 0.000826 +vn -0.384905 0.746403 0.542891 +vn 0.062420 0.728758 0.681921 +vn -0.161475 0.510903 0.844336 +vn -0.298440 0.528902 0.794478 +vn 0.388088 0.822361 0.416066 +vn 0.374936 0.503239 0.778571 +vn 0.967185 0.253827 0.011142 +vn 0.969696 0.243379 0.021376 +vn 0.995359 0.095953 0.007360 +vn 0.997773 -0.066696 0.000871 +vn 0.000006 0.000116 -1.000000 +vn 0.000578 0.001225 -0.999999 +vn 0.002061 -0.162154 -0.986763 +vn -0.036715 -0.227361 -0.973118 +vn -0.988150 -0.153490 0.000530 +vn -0.997092 -0.076202 0.000795 +vn -0.419290 -0.355620 0.835302 +vn -0.335340 -0.314686 0.887986 +vn -0.476829 -0.120448 0.870704 +vn -0.548589 0.115983 0.828008 +vn 0.425538 -0.336785 0.839937 +vn 0.326355 -0.383871 0.863791 +vn 0.479490 -0.111072 0.870490 +vn 0.546377 0.151051 0.823806 +vn 0.988094 -0.153853 0.000549 +vn 0.996980 -0.077652 0.000810 +vn 0.071202 -0.307807 -0.948781 +vn -0.134041 -0.542849 -0.829065 +vn -0.038743 -0.586621 -0.808935 +vn -0.999191 0.037450 -0.014645 +vn -0.997224 0.066925 -0.032638 +vn -0.508477 0.486691 0.710340 +vn -0.518400 0.586423 0.622390 +vn 0.510690 0.477362 0.715067 +vn 0.519540 0.586095 0.621748 +vn 0.999321 0.034320 -0.013421 +vn 0.997248 0.066385 -0.032993 +vn 0.208233 -0.626135 -0.751394 +vn -0.208455 -0.614903 -0.760553 +vn -0.003597 -0.581754 -0.813357 +vn -0.994885 0.089660 -0.046525 +vn -0.994269 0.101687 -0.032983 +vn -0.510524 0.657019 0.554699 +vn -0.512927 0.632907 0.579944 +vn 0.512006 0.660652 0.548989 +vn 0.514396 0.638015 0.573004 +vn 0.992961 0.104288 -0.056137 +vn 0.993472 0.105451 -0.043510 +vn 0.215730 -0.522222 -0.825072 +vn -0.214294 -0.359182 -0.908332 +vn -0.000134 -0.334072 -0.942547 +vn -0.997269 0.072312 -0.015018 +vn -0.998775 0.049471 -0.001064 +vn -0.525393 0.499573 0.688759 +vn -0.520961 0.381681 0.763491 +vn 0.527026 0.502395 0.685451 +vn 0.522284 0.373646 0.766556 +vn 0.997005 0.073521 -0.023992 +vn 0.999371 0.035442 -0.000762 +vn 0.214604 -0.292047 -0.932016 +vn 0.000002 0.996240 0.086630 +vn -0.254654 0.964745 -0.066466 +vn 0.000002 0.978728 -0.205161 +vn -0.384905 0.746403 0.542891 +vn 0.062420 0.728758 0.681921 +vn 0.388088 0.822361 0.416066 +vn 0.254658 0.964744 -0.066466 +vn -0.215116 -0.223526 -0.950664 +vn 0.074129 -0.228601 -0.970694 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -0.532664 0.238851 0.811923 +vn -0.525606 0.243348 0.815181 +vn 0.532938 0.238770 0.811767 +vn 0.526504 0.236645 0.816574 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.212589 -0.222631 -0.951442 +vn -0.000117 -0.000002 -1.000000 +vn -0.000120 -0.000009 -1.000000 +vn -0.000642 -0.000005 -1.000000 +vn -0.001096 -0.000290 -0.999999 +vn -0.259953 -0.965540 0.012557 +vn -0.276358 -0.960748 0.024272 +vn -0.099144 -0.995038 0.008333 +vn 0.073275 -0.997311 0.000826 +vn -0.746403 -0.384905 0.542891 +vn -0.728758 0.062420 0.681921 +vn -0.510903 -0.161475 0.844336 +vn -0.528903 -0.298440 0.794478 +vn -0.822360 0.388088 0.416066 +vn -0.503238 0.374937 0.778571 +vn -0.253827 0.967185 0.011142 +vn -0.243379 0.969696 0.021376 +vn -0.095953 0.995359 0.007360 +vn 0.066697 0.997773 0.000871 +vn -0.000116 0.000005 -1.000000 +vn -0.001225 0.000578 -0.999999 +vn 0.162155 0.002059 -0.986763 +vn 0.227361 -0.036715 -0.973118 +vn 0.153490 -0.988150 0.000530 +vn 0.076203 -0.997092 0.000795 +vn 0.355621 -0.419290 0.835302 +vn 0.314686 -0.335340 0.887986 +vn 0.120448 -0.476829 0.870704 +vn -0.115983 -0.548589 0.828008 +vn 0.336785 0.425538 0.839937 +vn 0.383871 0.326355 0.863791 +vn 0.111072 0.479490 0.870490 +vn -0.151051 0.546377 0.823805 +vn 0.153853 0.988094 0.000548 +vn 0.077652 0.996980 0.000810 +vn 0.307808 0.071202 -0.948781 +vn 0.542849 -0.134041 -0.829065 +vn 0.586621 -0.038743 -0.808934 +vn -0.037450 -0.999191 -0.014645 +vn -0.066925 -0.997224 -0.032638 +vn -0.486691 -0.508477 0.710340 +vn -0.586423 -0.518400 0.622390 +vn -0.477362 0.510691 0.715067 +vn -0.586095 0.519541 0.621748 +vn -0.034320 0.999321 -0.013421 +vn -0.066385 0.997248 -0.032993 +vn 0.626135 0.208232 -0.751395 +vn 0.614903 -0.208454 -0.760553 +vn 0.581754 -0.003597 -0.813357 +vn -0.089660 -0.994885 -0.046525 +vn -0.101687 -0.994269 -0.032983 +vn -0.657019 -0.510525 0.554699 +vn -0.632907 -0.512927 0.579944 +vn -0.660652 0.512007 0.548988 +vn -0.638015 0.514396 0.573004 +vn -0.104288 0.992961 -0.056137 +vn -0.105451 0.993472 -0.043510 +vn 0.522222 0.215729 -0.825072 +vn 0.359182 -0.214295 -0.908331 +vn 0.334072 -0.000134 -0.942547 +vn -0.072312 -0.997269 -0.015018 +vn -0.049471 -0.998775 -0.001064 +vn -0.499573 -0.525393 0.688759 +vn -0.381681 -0.520961 0.763491 +vn -0.502395 0.527026 0.685451 +vn -0.373646 0.522284 0.766556 +vn -0.073521 0.997005 -0.023992 +vn -0.035442 0.999371 -0.000763 +vn 0.292047 0.214604 -0.932016 +vn -0.996240 0.000002 0.086630 +vn -0.964745 -0.254654 -0.066466 +vn -0.978728 0.000002 -0.205161 +vn -0.746403 -0.384905 0.542891 +vn -0.728758 0.062420 0.681921 +vn -0.822360 0.388088 0.416066 +vn -0.964744 0.254657 -0.066466 +vn 0.223526 -0.215116 -0.950664 +vn 0.228601 0.074129 -0.970694 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.238851 -0.532664 0.811923 +vn -0.243348 -0.525606 0.815181 +vn -0.238770 0.532938 0.811767 +vn -0.236645 0.526504 0.816574 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.222631 0.212589 -0.951442 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.706842 0.707371 0.000000 +vn 0.706842 0.707371 0.000000 +vn 0.706842 0.707371 0.000000 +vn 0.706842 0.707371 0.000000 +vn -0.000374 1.000000 0.000000 +vn -0.000374 1.000000 0.000000 +vn -0.000374 1.000000 0.000000 +vn -0.000374 1.000000 0.000000 +vn -0.707371 0.706842 0.000000 +vn -0.707371 0.706842 0.000000 +vn -0.707371 0.706842 0.000000 +vn -0.707371 0.706842 0.000000 +vn -1.000000 -0.000374 0.000000 +vn -1.000000 -0.000374 0.000000 +vn -1.000000 -0.000374 0.000000 +vn -1.000000 -0.000374 0.000000 +vn -0.706842 -0.707371 -0.000000 +vn -0.706842 -0.707371 -0.000000 +vn -0.706842 -0.707371 -0.000000 +vn -0.706842 -0.707371 0.000000 +vn 0.000374 -1.000000 -0.000000 +vn 0.000374 -1.000000 0.000000 +vn 0.000374 -1.000000 -0.000000 +vn 0.000374 -1.000000 -0.000000 +vn 0.707371 -0.706842 -0.000000 +vn 0.707371 -0.706842 -0.000000 +vn 0.707371 -0.706842 -0.000000 +vn 0.707371 -0.706842 -0.000000 +vn 1.000000 0.000374 0.000000 +vn 1.000000 0.000374 0.000000 +vn 1.000000 0.000374 0.000000 +vn 1.000000 0.000374 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.099506 0.000000 0.995037 +vn -0.099506 0.000000 0.995037 +vn -0.099506 0.000000 0.995037 +vn -0.099506 0.000000 0.995037 +vn 0.000000 -0.099506 0.995037 +vn 0.000000 -0.099506 0.995037 +vn 0.000000 -0.099506 0.995037 +vn 0.000000 -0.099506 0.995037 +vn 0.099506 0.000000 0.995037 +vn 0.099506 0.000000 0.995037 +vn 0.099506 0.000000 0.995037 +vn 0.099506 0.000000 0.995037 +vn 0.000000 0.099506 0.995037 +vn 0.000000 0.099506 0.995037 +vn 0.000000 0.099506 0.995037 +vn 0.000000 0.099506 0.995037 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.929987 0.000000 0.367592 +vn -0.677867 0.000000 0.735184 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -0.929987 0.367592 +vn 0.000000 -0.677867 0.735184 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.929987 0.000000 0.367592 +vn 0.677867 0.000000 0.735184 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.929987 0.367592 +vn 0.000000 0.677867 0.735184 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.967538 0.252725 +vn 0.000000 0.862856 0.505449 +vn 0.967538 0.000000 0.252725 +vn 0.862856 0.000000 0.505449 +vn -0.000000 -0.967538 0.252725 +vn -0.000000 -0.862856 0.505449 +vn -0.967538 0.000000 0.252725 +vn -0.862856 0.000000 0.505449 +vn 0.000000 0.862856 0.505449 +vn 0.000000 0.967538 0.252725 +vn 0.862856 0.000000 0.505449 +vn 0.967538 0.000000 0.252725 +vn -0.000000 -0.862856 0.505449 +vn -0.000000 -0.967538 0.252725 +vn -0.862856 0.000000 0.505449 +vn -0.967538 0.000000 0.252725 +vn 0.000000 0.967538 0.252725 +vn 0.000000 0.862856 0.505449 +vn 0.967538 0.000000 0.252724 +vn 0.862857 0.000000 0.505449 +vn -0.000000 -0.967538 0.252724 +vn -0.000000 -0.862857 0.505448 +vn -0.967538 0.000000 0.252725 +vn -0.862857 0.000000 0.505449 +vn 0.000000 0.707107 0.707107 +vn 0.000000 0.707107 0.707107 +vn 0.707108 0.000000 0.707106 +vn 0.707107 0.000000 0.707107 +vn -0.000000 -0.707108 0.707105 +vn -0.000000 -0.707108 0.707105 +vn -0.707108 0.000000 0.707106 +vn -0.707108 0.000000 0.707105 +vn 0.000000 0.099506 0.995037 +vn 0.000000 0.099506 0.995037 +vn 0.000000 0.099506 0.995037 +vn 0.000000 0.099506 0.995037 +vn 0.099506 0.000000 0.995037 +vn 0.099501 0.000000 0.995037 +vn 0.099506 0.000000 0.995037 +vn 0.099506 0.000000 0.995037 +vn -0.000000 -0.099501 0.995037 +vn -0.000000 -0.099501 0.995037 +vn -0.000000 -0.099501 0.995037 +vn -0.000000 -0.099501 0.995037 +vn -0.099501 0.000000 0.995037 +vn -0.099506 0.000000 0.995037 +vn -0.099501 0.000000 0.995037 +vn -0.099501 0.000000 0.995037 +vn -0.275482 0.000000 0.961306 +vn -0.187896 0.000000 0.982189 +vn 0.000000 -0.275482 0.961306 +vn 0.000000 -0.187896 0.982189 +vn 0.275482 0.000000 0.961306 +vn 0.187896 0.000000 0.982189 +vn 0.000000 0.275482 0.961306 +vn 0.000000 0.187896 0.982189 +vn -0.516067 0.000000 0.856548 +vn -0.903649 0.000000 0.428274 +vn 0.000000 -0.516067 0.856548 +vn 0.000000 -0.903649 0.428274 +vn 0.516067 0.000000 0.856548 +vn 0.903649 0.000000 0.428274 +vn 0.000000 0.516067 0.856548 +vn 0.000000 0.903649 0.428274 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.049938 0.000000 0.998752 +vn -0.049938 0.000000 0.998752 +vn -0.049938 0.000000 0.998752 +vn -0.049938 0.000000 0.998752 +vn 0.000000 -0.049938 0.998752 +vn 0.000000 -0.049938 0.998752 +vn 0.000000 -0.049938 0.998752 +vn 0.000000 -0.049938 0.998752 +vn 0.049938 0.000000 0.998752 +vn 0.049938 0.000000 0.998752 +vn 0.049938 0.000000 0.998752 +vn 0.049938 0.000000 0.998752 +vn 0.000000 0.049938 0.998752 +vn 0.000000 0.049938 0.998752 +vn 0.000000 0.049938 0.998752 +vn 0.000000 0.049938 0.998752 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 -0.000002 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000002 +vn 0.000000 1.000000 -0.000005 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000005 +vn -0.000000 -1.000000 0.000002 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.562661 0.423331 -0.710072 +vn 0.704032 0.011758 -0.710070 +vn 0.582173 0.063049 -0.810617 +vn 0.433925 0.393201 -0.810618 +vn 0.206373 0.673207 -0.710072 +vn 0.119934 0.573161 -0.810618 +vn -0.228742 0.665939 -0.710072 +vn -0.239867 0.534192 -0.810618 +vn -0.576487 0.404302 -0.710072 +vn -0.508049 0.291177 -0.810618 +vn -0.704032 -0.011763 -0.710070 +vn -0.582173 -0.063055 -0.810616 +vn -0.562662 -0.423334 -0.710070 +vn -0.433926 -0.393204 -0.810616 +vn -0.206373 -0.673209 -0.710070 +vn -0.119934 -0.573164 -0.810616 +vn 0.228743 -0.665941 -0.710070 +vn 0.239869 -0.534195 -0.810616 +vn 0.576487 -0.404306 -0.710070 +vn 0.508049 -0.291182 -0.810616 +vn 0.745732 0.553468 -0.370886 +vn 0.928631 0.009435 -0.370885 +vn 0.277988 0.886096 -0.370886 +vn -0.295936 0.880264 -0.370886 +vn -0.756825 0.538201 -0.370886 +vn -0.928631 -0.009437 -0.370885 +vn -0.745732 -0.553469 -0.370885 +vn -0.277989 -0.886096 -0.370885 +vn 0.295937 -0.880265 -0.370885 +vn 0.756824 -0.538202 -0.370885 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 -0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.951056 -0.309017 0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.047494 0.015432 0.998752 +vn 0.047493 0.015432 0.998752 +vn 0.047494 0.015432 0.998752 +vn 0.047494 0.015432 0.998752 +vn 0.029353 0.040401 0.998752 +vn 0.029353 0.040401 0.998752 +vn 0.029353 0.040401 0.998752 +vn 0.029353 0.040401 0.998752 +vn 0.000000 0.049938 0.998752 +vn 0.000000 0.049938 0.998752 +vn 0.000000 0.049938 0.998752 +vn 0.000000 0.049938 0.998752 +vn -0.029353 0.040401 0.998752 +vn -0.029353 0.040401 0.998752 +vn -0.029353 0.040401 0.998752 +vn -0.029353 0.040401 0.998752 +vn -0.047493 0.015431 0.998752 +vn -0.047494 0.015432 0.998752 +vn -0.047493 0.015431 0.998752 +vn -0.047493 0.015431 0.998752 +vn -0.047493 -0.015432 0.998752 +vn -0.047493 -0.015432 0.998752 +vn -0.047493 -0.015432 0.998752 +vn -0.047493 -0.015432 0.998752 +vn -0.029353 -0.040400 0.998752 +vn -0.029353 -0.040400 0.998752 +vn -0.029353 -0.040400 0.998752 +vn -0.029353 -0.040400 0.998752 +vn 0.000000 -0.049937 0.998752 +vn 0.000000 -0.049937 0.998752 +vn 0.000000 -0.049937 0.998752 +vn 0.000000 -0.049937 0.998752 +vn 0.029353 -0.040399 0.998752 +vn 0.029353 -0.040400 0.998752 +vn 0.029353 -0.040399 0.998752 +vn 0.029353 -0.040399 0.998752 +vn 0.047493 -0.015432 0.998752 +vn 0.047493 -0.015432 0.998752 +vn 0.047493 -0.015432 0.998752 +vn 0.047493 -0.015432 0.998752 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 -0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.951056 -0.309017 0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.425325 0.138196 -0.894427 +vn 0.425326 0.138197 -0.894427 +vn 0.425325 0.138196 -0.894427 +vn 0.425325 0.138196 -0.894427 +vn 0.262866 0.361804 -0.894427 +vn 0.262865 0.361803 -0.894427 +vn 0.262866 0.361804 -0.894427 +vn 0.262866 0.361804 -0.894427 +vn -0.000000 0.447215 -0.894427 +vn 0.000000 0.447214 -0.894427 +vn -0.000000 0.447215 -0.894427 +vn -0.000000 0.447215 -0.894427 +vn -0.262865 0.361803 -0.894427 +vn -0.262866 0.361804 -0.894427 +vn -0.262865 0.361803 -0.894427 +vn -0.262865 0.361803 -0.894427 +vn -0.425326 0.138196 -0.894427 +vn -0.425325 0.138196 -0.894427 +vn -0.425326 0.138196 -0.894427 +vn -0.425326 0.138196 -0.894427 +vn -0.425326 -0.138196 -0.894427 +vn -0.425326 -0.138196 -0.894427 +vn -0.425326 -0.138196 -0.894427 +vn -0.425326 -0.138196 -0.894427 +vn -0.262865 -0.361804 -0.894427 +vn -0.262865 -0.361804 -0.894427 +vn -0.262865 -0.361804 -0.894427 +vn -0.262865 -0.361804 -0.894427 +vn 0.000000 -0.447214 -0.894427 +vn 0.000000 -0.447214 -0.894427 +vn 0.000000 -0.447214 -0.894427 +vn 0.000000 -0.447214 -0.894427 +vn 0.262865 -0.361804 -0.894427 +vn 0.262865 -0.361804 -0.894427 +vn 0.262865 -0.361804 -0.894427 +vn 0.262865 -0.361804 -0.894427 +vn 0.425326 -0.138196 -0.894427 +vn 0.425326 -0.138196 -0.894427 +vn 0.425326 -0.138196 -0.894427 +vn 0.425326 -0.138196 -0.894427 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.587786 0.809017 -0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587786 0.809017 -0.000000 +vn 0.587786 0.809017 -0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 -0.000001 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 -0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.951056 -0.309017 0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.951056 -0.309017 -0.000000 +vn 0.425325 0.138197 0.894427 +vn 0.425326 0.138197 0.894427 +vn 0.425325 0.138197 0.894427 +vn 0.425325 0.138197 0.894427 +vn 0.262866 0.361803 0.894427 +vn 0.262866 0.361804 0.894427 +vn 0.262866 0.361803 0.894427 +vn 0.262866 0.361803 0.894427 +vn 0.000000 0.447214 0.894427 +vn -0.000000 0.447213 0.894427 +vn 0.000000 0.447214 0.894427 +vn 0.000000 0.447214 0.894427 +vn -0.262866 0.361804 0.894427 +vn -0.262865 0.361804 0.894427 +vn -0.262866 0.361804 0.894427 +vn -0.262866 0.361804 0.894427 +vn -0.425326 0.138197 0.894427 +vn -0.425326 0.138197 0.894427 +vn -0.425326 0.138197 0.894427 +vn -0.425326 0.138197 0.894427 +vn -0.425324 -0.138197 0.894428 +vn -0.425326 -0.138197 0.894427 +vn -0.425324 -0.138197 0.894428 +vn -0.425324 -0.138197 0.894428 +vn -0.262866 -0.361803 0.894427 +vn -0.262865 -0.361802 0.894428 +vn -0.262866 -0.361803 0.894427 +vn -0.262866 -0.361803 0.894427 +vn 0.000000 -0.447213 0.894427 +vn 0.000000 -0.447213 0.894427 +vn 0.000000 -0.447213 0.894427 +vn 0.000000 -0.447213 0.894427 +vn 0.262866 -0.361802 0.894427 +vn 0.262866 -0.361803 0.894427 +vn 0.262866 -0.361802 0.894427 +vn 0.262866 -0.361802 0.894427 +vn 0.425326 -0.138198 0.894427 +vn 0.425325 -0.138197 0.894427 +vn 0.425326 -0.138198 0.894427 +vn 0.425326 -0.138198 0.894427 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000001 +vn 0.951056 0.309017 0.000000 +vn 0.951056 0.309017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000001 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000001 +vn -0.587785 0.809017 0.000001 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000001 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 -0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951056 -0.309017 0.000001 +vn 0.951056 -0.309017 0.000000 +vn 0.951056 -0.309017 0.000001 +vn 0.951056 -0.309017 0.000001 +vn 0.808878 0.587853 -0.012040 +vn 0.999927 0.000136 -0.012040 +vn 0.928631 0.009435 -0.370885 +vn 0.745732 0.553468 -0.370886 +vn 0.308865 0.951030 -0.012040 +vn 0.277988 0.886096 -0.370886 +vn -0.309124 0.950945 -0.012040 +vn -0.295936 0.880264 -0.370886 +vn -0.809038 0.587632 -0.012040 +vn -0.756825 0.538201 -0.370886 +vn -0.999927 -0.000136 -0.012040 +vn -0.928631 -0.009437 -0.370885 +vn -0.808878 -0.587853 -0.012040 +vn -0.745732 -0.553469 -0.370885 +vn -0.308865 -0.951030 -0.012040 +vn -0.277989 -0.886096 -0.370885 +vn 0.309124 -0.950945 -0.012040 +vn 0.295937 -0.880265 -0.370885 +vn 0.809038 -0.587632 -0.012040 +vn 0.309124 -0.950945 -0.012040 +vn 0.295937 -0.880265 -0.370885 +vn 0.756824 -0.538202 -0.370885 +vn 0.797207 0.577639 0.175482 +vn 0.984482 -0.001267 0.175482 +vn 0.305427 0.935906 0.175482 +vn -0.303017 0.936689 0.175482 +vn -0.795718 0.579689 0.175482 +vn -0.984482 0.001267 0.175482 +vn -0.797207 -0.577639 0.175482 +vn -0.305426 -0.935906 0.175482 +vn 0.303017 -0.936689 0.175482 +vn 0.795718 -0.579689 0.175482 +vn 0.303017 -0.936689 0.175482 +vn 0.805510 0.586917 0.081747 +vn 0.996652 0.001359 0.081747 +vn 0.306690 0.948292 0.081747 +vn -0.309275 0.947452 0.081747 +vn -0.807107 0.584718 0.081747 +vn -0.996652 -0.001359 0.081747 +vn -0.805510 -0.586917 0.081747 +vn -0.306690 -0.948292 0.081747 +vn 0.309275 -0.947452 0.081747 +vn 0.807107 -0.584718 0.081747 +vn 0.309275 -0.947452 0.081747 +vn 0.768673 0.548289 -0.329426 +vn 0.944145 -0.008240 -0.329426 +vn 0.299593 0.895389 -0.329426 +vn -0.283921 0.900482 -0.329426 +vn -0.758987 0.561621 -0.329426 +vn -0.944145 0.008240 -0.329426 +vn -0.768673 -0.548289 -0.329426 +vn -0.299593 -0.895389 -0.329426 +vn 0.283921 -0.900482 -0.329426 +vn 0.758987 -0.561620 -0.329426 +vn 0.283921 -0.900482 -0.329426 +vn 0.726320 0.416280 -0.546965 +vn 0.832289 -0.090142 -0.546964 +vn 0.342922 0.763698 -0.546965 +vn -0.171461 0.819409 -0.546965 +vn -0.620351 0.562133 -0.546965 +vn -0.832288 0.090142 -0.546965 +vn -0.726320 -0.416280 -0.546965 +vn -0.342922 -0.763698 -0.546965 +vn 0.171461 -0.819409 -0.546965 +vn 0.620351 -0.562134 -0.546965 +vn 0.171461 -0.819409 -0.546965 +f 1/1/1 2/2/2 3/3/3 +f 3/3/3 4/4/4 1/1/1 +f 5/5/5 6/6/6 7/7/7 +f 7/7/7 8/8/8 5/5/5 +f 9/9/9 10/10/10 11/11/11 +f 11/11/11 12/12/12 9/9/9 +f 10/10/10 13/13/13 14/14/14 +f 14/14/14 11/11/11 10/10/10 +f 15/15/15 16/16/16 17/17/17 +f 17/17/17 18/18/18 15/15/15 +f 19/19/19 1/1/1 4/4/4 +f 4/4/4 20/20/20 19/19/19 +f 4/4/4 3/3/3 21/21/21 +f 21/21/21 22/22/22 4/4/4 +f 8/8/8 7/7/7 23/23/23 +f 23/23/23 24/24/24 8/8/8 +f 25/25/25 26/26/26 27/27/27 +f 27/27/27 28/28/28 25/25/25 +f 29/29/29 30/30/30 31/31/31 +f 31/31/31 32/32/32 29/29/29 +f 18/18/18 17/17/17 33/33/33 +f 33/33/33 34/34/34 18/18/18 +f 20/20/20 4/4/4 22/22/22 +f 22/22/22 35/35/35 20/20/20 +f 22/22/22 21/21/21 36/36/36 +f 36/36/36 37/37/37 22/22/22 +f 24/24/24 23/23/23 38/38/38 +f 38/38/38 39/39/39 24/24/24 +f 28/28/28 27/27/27 40/40/40 +f 40/40/40 41/41/41 28/28/28 +f 32/32/32 31/31/31 42/42/42 +f 42/42/42 43/43/43 32/32/32 +f 34/34/34 33/33/33 44/44/44 +f 44/44/44 45/45/45 34/34/34 +f 35/35/35 22/22/22 37/37/37 +f 37/37/37 46/46/46 35/35/35 +f 37/37/37 36/36/36 47/47/47 +f 47/47/47 48/48/48 37/37/37 +f 39/39/39 38/38/38 49/49/49 +f 49/49/49 50/50/50 39/39/39 +f 41/41/41 40/40/40 51/51/51 +f 51/51/51 52/52/52 41/41/41 +f 43/43/43 42/42/42 53/53/53 +f 53/53/53 54/54/54 43/43/43 +f 45/45/45 44/44/44 55/55/55 +f 55/55/55 56/56/56 45/45/45 +f 46/46/46 37/37/37 48/48/48 +f 48/48/48 57/57/57 46/46/46 +f 48/48/48 47/47/47 58/58/58 +f 58/58/58 59/59/59 48/48/48 +f 50/50/50 49/49/49 60/60/60 +f 60/60/60 61/61/61 50/50/50 +f 52/52/52 51/51/51 62/62/62 +f 62/62/62 63/63/63 52/52/52 +f 54/54/54 53/53/53 64/64/64 +f 64/64/64 65/65/65 54/54/54 +f 56/56/56 55/55/55 66/66/66 +f 66/66/66 67/67/67 56/56/56 +f 57/57/57 48/48/48 59/59/59 +f 59/59/59 68/68/68 57/57/57 +f 69/69/69 70/70/70 71/71/71 +f 69/69/69 72/72/72 70/70/70 +f 69/69/69 73/73/73 72/72/72 +f 69/69/69 74/74/74 73/73/73 +f 69/69/69 75/75/75 74/74/74 +f 69/69/69 71/71/71 75/75/75 +f 76/76/76 77/77/77 59/59/59 +f 76/76/76 59/59/59 58/58/58 +f 78/78/78 79/79/79 61/61/61 +f 78/78/78 61/61/61 60/60/60 +f 80/80/80 81/81/81 63/63/63 +f 80/80/80 63/63/63 62/62/62 +f 82/82/82 83/83/83 65/65/65 +f 82/82/82 65/65/65 64/64/64 +f 84/84/84 85/85/85 67/67/67 +f 84/84/84 67/67/67 66/66/66 +f 77/77/77 86/86/86 68/68/68 +f 77/77/77 68/68/68 59/59/59 +f 87/87/87 88/88/88 89/89/89 +f 89/89/89 90/90/90 87/87/87 +f 91/91/91 92/92/92 93/93/93 +f 93/93/93 94/94/94 91/91/91 +f 95/95/95 96/96/96 97/97/97 +f 97/97/97 98/98/98 95/95/95 +f 96/96/96 99/99/99 100/100/100 +f 100/100/100 97/97/97 96/96/96 +f 101/101/101 102/102/102 103/103/103 +f 103/103/103 104/104/104 101/101/101 +f 105/105/105 87/87/87 90/90/90 +f 90/90/90 106/106/106 105/105/105 +f 90/90/90 89/89/89 107/107/107 +f 107/107/107 108/108/108 90/90/90 +f 94/94/94 93/93/93 109/109/109 +f 109/109/109 110/110/110 94/94/94 +f 111/111/111 112/112/112 113/113/113 +f 113/113/113 114/114/114 111/111/111 +f 115/115/115 116/116/116 117/117/117 +f 117/117/117 118/118/118 115/115/115 +f 104/104/104 103/103/103 119/119/119 +f 119/119/119 120/120/120 104/104/104 +f 106/106/106 90/90/90 108/108/108 +f 108/108/108 121/121/121 106/106/106 +f 108/108/108 107/107/107 122/122/122 +f 122/122/122 123/123/123 108/108/108 +f 110/110/110 109/109/109 124/124/124 +f 124/124/124 125/125/125 110/110/110 +f 114/114/114 113/113/113 126/126/126 +f 126/126/126 127/127/127 114/114/114 +f 118/118/118 117/117/117 128/128/128 +f 128/128/128 129/129/129 118/118/118 +f 120/120/120 119/119/119 130/130/130 +f 130/130/130 131/131/131 120/120/120 +f 121/121/121 108/108/108 123/123/123 +f 123/123/123 132/132/132 121/121/121 +f 123/123/123 122/122/122 133/133/133 +f 133/133/133 134/134/134 123/123/123 +f 125/125/125 124/124/124 135/135/135 +f 135/135/135 136/136/136 125/125/125 +f 127/127/127 126/126/126 137/137/137 +f 137/137/137 138/138/138 127/127/127 +f 129/129/129 128/128/128 139/139/139 +f 139/139/139 140/140/140 129/129/129 +f 131/131/131 130/130/130 141/141/141 +f 141/141/141 142/142/142 131/131/131 +f 132/132/132 123/123/123 134/134/134 +f 134/134/134 143/143/143 132/132/132 +f 134/134/134 133/133/133 144/144/144 +f 144/144/144 145/145/145 134/134/134 +f 136/136/136 135/135/135 146/146/146 +f 146/146/146 147/147/147 136/136/136 +f 138/138/138 137/137/137 148/148/148 +f 148/148/148 149/149/149 138/138/138 +f 140/140/140 139/139/139 150/150/150 +f 150/150/150 151/151/151 140/140/140 +f 142/142/142 141/141/141 152/152/152 +f 152/152/152 153/153/153 142/142/142 +f 143/143/143 134/134/134 145/145/145 +f 145/145/145 154/154/154 143/143/143 +f 155/155/155 156/156/156 157/157/157 +f 155/155/155 158/158/158 156/156/156 +f 155/155/155 159/159/159 158/158/158 +f 155/155/155 160/160/160 159/159/159 +f 155/155/155 161/161/161 160/160/160 +f 155/155/155 157/157/157 161/161/161 +f 162/162/162 163/163/163 145/145/145 +f 162/162/162 145/145/145 144/144/144 +f 164/164/164 165/165/165 147/147/147 +f 164/164/164 147/147/147 146/146/146 +f 166/166/166 167/167/167 149/149/149 +f 166/166/166 149/149/149 148/148/148 +f 168/168/168 169/169/169 151/151/151 +f 168/168/168 151/151/151 150/150/150 +f 170/170/170 171/171/171 153/153/153 +f 170/170/170 153/153/153 152/152/152 +f 163/163/163 172/172/172 154/154/154 +f 163/163/163 154/154/154 145/145/145 +f 173/173/173 174/174/174 175/175/175 +f 175/175/175 176/176/176 173/173/173 +f 177/177/177 178/178/178 179/179/179 +f 179/179/179 180/180/180 177/177/177 +f 181/181/181 182/182/182 183/183/183 +f 183/183/183 184/184/184 181/181/181 +f 182/182/182 185/185/185 186/186/186 +f 186/186/186 183/183/183 182/182/182 +f 187/187/187 188/188/188 189/189/189 +f 189/189/189 190/190/190 187/187/187 +f 191/191/191 173/173/173 176/176/176 +f 176/176/176 192/192/192 191/191/191 +f 176/176/176 175/175/175 193/193/193 +f 193/193/193 194/194/194 176/176/176 +f 180/180/180 179/179/179 195/195/195 +f 195/195/195 196/196/196 180/180/180 +f 197/197/197 198/198/198 199/199/199 +f 199/199/199 200/200/200 197/197/197 +f 201/201/201 202/202/202 203/203/203 +f 203/203/203 204/204/204 201/201/201 +f 190/190/190 189/189/189 205/205/205 +f 205/205/205 206/206/206 190/190/190 +f 192/192/192 176/176/176 194/194/194 +f 194/194/194 207/207/207 192/192/192 +f 194/194/194 193/193/193 208/208/208 +f 208/208/208 209/209/209 194/194/194 +f 196/196/196 195/195/195 210/210/210 +f 210/210/210 211/211/211 196/196/196 +f 200/200/200 199/199/199 212/212/212 +f 212/212/212 213/213/213 200/200/200 +f 204/204/204 203/203/203 214/214/214 +f 214/214/214 215/215/215 204/204/204 +f 206/206/206 205/205/205 216/216/216 +f 216/216/216 217/217/217 206/206/206 +f 207/207/207 194/194/194 209/209/209 +f 209/209/209 218/218/218 207/207/207 +f 209/209/209 208/208/208 219/219/219 +f 219/219/219 220/220/220 209/209/209 +f 211/211/211 210/210/210 221/221/221 +f 221/221/221 222/222/222 211/211/211 +f 213/213/213 212/212/212 223/223/223 +f 223/223/223 224/224/224 213/213/213 +f 215/215/215 214/214/214 225/225/225 +f 225/225/225 226/226/226 215/215/215 +f 217/217/217 216/216/216 227/227/227 +f 227/227/227 228/228/228 217/217/217 +f 218/218/218 209/209/209 220/220/220 +f 220/220/220 229/229/229 218/218/218 +f 220/220/220 219/219/219 230/230/230 +f 230/230/230 231/231/231 220/220/220 +f 222/222/222 221/221/221 232/232/232 +f 232/232/232 233/233/233 222/222/222 +f 224/224/224 223/223/223 234/234/234 +f 234/234/234 235/235/235 224/224/224 +f 226/226/226 225/225/225 236/236/236 +f 236/236/236 237/237/237 226/226/226 +f 228/228/228 227/227/227 238/238/238 +f 238/238/238 239/239/239 228/228/228 +f 229/229/229 220/220/220 231/231/231 +f 231/231/231 240/240/240 229/229/229 +f 241/241/241 242/242/242 243/243/243 +f 241/241/241 244/244/244 242/242/242 +f 241/241/241 245/245/245 244/244/244 +f 241/241/241 246/246/246 245/245/245 +f 241/241/241 247/247/247 246/246/246 +f 241/241/241 243/243/243 247/247/247 +f 248/248/248 249/249/249 231/231/231 +f 248/248/248 231/231/231 230/230/230 +f 250/250/250 251/251/251 233/233/233 +f 250/250/250 233/233/233 232/232/232 +f 252/252/252 253/253/253 235/235/235 +f 252/252/252 235/235/235 234/234/234 +f 254/254/254 255/255/255 237/237/237 +f 254/254/254 237/237/237 236/236/236 +f 256/256/256 257/257/257 239/239/239 +f 256/256/256 239/239/239 238/238/238 +f 249/249/249 258/258/258 240/240/240 +f 249/249/249 240/240/240 231/231/231 +f 259/259/259 260/260/260 261/261/261 +f 261/261/261 262/262/262 259/259/259 +f 263/263/263 264/264/264 265/265/265 +f 265/265/265 266/266/266 263/263/263 +f 267/267/267 268/268/268 269/269/269 +f 269/269/269 270/270/270 267/267/267 +f 268/268/268 271/271/271 272/272/272 +f 272/272/272 269/269/269 268/268/268 +f 273/273/273 274/274/274 275/275/275 +f 275/275/275 276/276/276 273/273/273 +f 277/277/277 259/259/259 262/262/262 +f 262/262/262 278/278/278 277/277/277 +f 262/262/262 261/261/261 279/279/279 +f 279/279/279 280/280/280 262/262/262 +f 266/266/266 265/265/265 281/281/281 +f 281/281/281 282/282/282 266/266/266 +f 283/283/283 284/284/284 285/285/285 +f 285/285/285 286/286/286 283/283/283 +f 287/287/287 288/288/288 289/289/289 +f 289/289/289 290/290/290 287/287/287 +f 276/276/276 275/275/275 291/291/291 +f 291/291/291 292/292/292 276/276/276 +f 278/278/278 262/262/262 280/280/280 +f 280/280/280 293/293/293 278/278/278 +f 280/280/280 279/279/279 294/294/294 +f 294/294/294 295/295/295 280/280/280 +f 282/282/282 281/281/281 296/296/296 +f 296/296/296 297/297/297 282/282/282 +f 286/286/286 285/285/285 298/298/298 +f 298/298/298 299/299/299 286/286/286 +f 290/290/290 289/289/289 300/300/300 +f 300/300/300 301/301/301 290/290/290 +f 292/292/292 291/291/291 302/302/302 +f 302/302/302 303/303/303 292/292/292 +f 293/293/293 280/280/280 295/295/295 +f 295/295/295 304/304/304 293/293/293 +f 295/295/295 294/294/294 305/305/305 +f 305/305/305 306/306/306 295/295/295 +f 297/297/297 296/296/296 307/307/307 +f 307/307/307 308/308/308 297/297/297 +f 299/299/299 298/298/298 309/309/309 +f 309/309/309 310/310/310 299/299/299 +f 301/301/301 300/300/300 311/311/311 +f 311/311/311 312/312/312 301/301/301 +f 303/303/303 302/302/302 313/313/313 +f 313/313/313 314/314/314 303/303/303 +f 304/304/304 295/295/295 306/306/306 +f 306/306/306 315/315/315 304/304/304 +f 306/306/306 305/305/305 316/316/316 +f 316/316/316 317/317/317 306/306/306 +f 308/308/308 307/307/307 318/318/318 +f 318/318/318 319/319/319 308/308/308 +f 310/310/310 309/309/309 320/320/320 +f 320/320/320 321/321/321 310/310/310 +f 312/312/312 311/311/311 322/322/322 +f 322/322/322 323/323/323 312/312/312 +f 314/314/314 313/313/313 324/324/324 +f 324/324/324 325/325/325 314/314/314 +f 315/315/315 306/306/306 317/317/317 +f 317/317/317 326/326/326 315/315/315 +f 327/327/327 328/328/328 329/329/329 +f 327/327/327 330/330/330 328/328/328 +f 327/327/327 331/331/331 330/330/330 +f 327/327/327 332/332/332 331/331/331 +f 327/327/327 333/333/333 332/332/332 +f 327/327/327 329/329/329 333/333/333 +f 334/334/334 335/335/335 317/317/317 +f 334/334/334 317/317/317 316/316/316 +f 336/336/336 337/337/337 319/319/319 +f 336/336/336 319/319/319 318/318/318 +f 338/338/338 339/339/339 321/321/321 +f 338/338/338 321/321/321 320/320/320 +f 340/340/340 341/341/341 323/323/323 +f 340/340/340 323/323/323 322/322/322 +f 342/342/342 343/343/343 325/325/325 +f 342/342/342 325/325/325 324/324/324 +f 335/335/335 344/344/344 326/326/326 +f 335/335/335 326/326/326 317/317/317 +f 345/345/345 346/346/346 347/347/347 +f 345/345/345 348/348/348 346/346/346 +f 345/345/345 349/349/349 348/348/348 +f 345/345/345 350/350/350 349/349/349 +f 345/345/345 351/351/351 350/350/350 +f 345/345/345 352/352/352 351/351/351 +f 345/345/345 353/353/353 352/352/352 +f 345/345/345 347/347/347 353/353/353 +f 354/354/354 355/355/355 356/356/356 +f 354/354/354 356/356/356 357/357/357 +f 358/358/358 359/359/359 360/360/360 +f 358/358/358 360/360/360 361/361/361 +f 362/362/362 363/363/363 364/364/364 +f 362/362/362 364/364/364 365/365/365 +f 366/366/366 367/367/367 368/368/368 +f 366/366/366 368/368/368 369/369/369 +f 370/370/370 371/371/371 372/372/372 +f 370/370/370 372/372/372 373/373/373 +f 374/374/374 375/375/375 376/376/376 +f 374/374/374 376/376/376 377/377/377 +f 378/378/378 379/379/379 380/380/380 +f 378/378/378 380/380/380 381/381/381 +f 382/382/382 383/383/383 384/384/384 +f 382/382/382 384/384/384 385/385/385 +f 386/386/386 387/387/387 388/388/388 +f 386/386/386 388/388/388 389/389/389 +f 386/386/386 389/389/389 390/390/390 +f 386/386/386 390/390/390 391/391/391 +f 386/386/386 391/391/391 392/392/392 +f 386/386/386 392/392/392 393/393/393 +f 386/386/386 393/393/393 394/394/394 +f 386/386/386 394/394/394 387/387/387 +f 395/395/395 396/396/396 397/397/397 +f 397/397/397 398/398/398 395/395/395 +f 399/399/399 400/400/400 401/401/401 +f 401/401/401 402/402/402 399/399/399 +f 403/403/403 404/404/404 405/405/405 +f 405/405/405 406/406/406 403/403/403 +f 407/407/407 408/408/408 409/409/409 +f 409/409/409 410/410/410 407/407/407 +f 411/411/411 412/412/412 413/413/413 +f 413/413/413 414/414/414 411/411/411 +f 415/415/415 416/416/416 417/417/417 +f 417/417/417 418/418/418 415/415/415 +f 419/419/419 420/420/420 421/421/421 +f 421/421/421 422/422/422 419/419/419 +f 423/423/423 424/424/424 425/425/425 +f 425/425/425 426/426/426 423/423/423 +f 427/427/427 428/428/428 429/429/429 +f 429/429/429 430/430/430 427/427/427 +f 431/431/431 432/432/432 433/433/433 +f 433/433/433 434/434/434 431/431/431 +f 435/435/435 436/436/436 437/437/437 +f 437/437/437 438/438/438 435/435/435 +f 439/439/439 440/440/440 441/441/441 +f 441/441/441 442/442/442 439/439/439 +f 443/443/443 444/444/444 445/445/445 +f 445/445/445 446/446/446 443/443/443 +f 447/447/447 448/448/448 449/449/449 +f 449/449/449 450/450/450 447/447/447 +f 451/451/451 452/452/452 453/453/453 +f 453/453/453 454/454/454 451/451/451 +f 455/455/455 456/456/456 457/457/457 +f 457/457/457 458/458/458 455/455/455 +f 446/446/446 445/445/445 459/459/459 +f 459/459/459 460/460/460 446/446/446 +f 450/450/450 449/449/449 461/461/461 +f 461/461/461 462/462/462 450/450/450 +f 454/454/454 453/453/453 463/463/463 +f 463/463/463 464/464/464 454/454/454 +f 458/458/458 457/457/457 465/465/465 +f 465/465/465 466/466/466 458/458/458 +f 460/460/460 459/459/459 467/467/467 +f 467/467/467 468/468/468 460/460/460 +f 462/462/462 461/461/461 469/469/469 +f 469/469/469 470/470/470 462/462/462 +f 464/464/464 463/463/463 471/471/471 +f 471/471/471 472/472/472 464/464/464 +f 466/466/466 465/465/465 473/473/473 +f 473/473/473 474/474/474 466/466/466 +f 468/468/468 467/467/467 475/475/475 +f 475/475/475 476/476/476 468/468/468 +f 470/470/470 469/469/469 477/477/477 +f 477/477/477 478/478/478 470/470/470 +f 472/472/472 471/471/471 479/479/479 +f 479/479/479 480/480/480 472/472/472 +f 474/474/474 473/473/473 481/481/481 +f 481/481/481 482/482/482 474/474/474 +f 476/476/476 475/475/475 483/483/483 +f 483/483/483 484/484/484 476/476/476 +f 478/478/478 477/477/477 485/485/485 +f 485/485/485 486/486/486 478/478/478 +f 480/480/480 479/479/479 487/487/487 +f 487/487/487 488/488/488 480/480/480 +f 482/482/482 481/481/481 489/489/489 +f 489/489/489 490/490/490 482/482/482 +f 491/491/491 492/492/492 493/493/493 +f 493/493/493 494/494/494 491/491/491 +f 495/495/495 496/496/496 497/497/497 +f 497/497/497 498/498/498 495/495/495 +f 499/499/499 500/500/500 501/501/501 +f 501/501/501 502/502/502 499/499/499 +f 503/503/503 504/504/504 505/505/505 +f 505/505/505 506/506/506 503/503/503 +f 430/430/430 429/429/429 507/507/507 +f 507/507/507 508/508/508 430/430/430 +f 434/434/434 433/433/433 509/509/509 +f 509/509/509 510/510/510 434/434/434 +f 438/438/438 437/437/437 511/511/511 +f 511/511/511 512/512/512 438/438/438 +f 442/442/442 441/441/441 513/513/513 +f 513/513/513 514/514/514 442/442/442 +f 508/508/508 507/507/507 515/515/515 +f 515/515/515 516/516/516 508/508/508 +f 510/510/510 509/509/509 517/517/517 +f 517/517/517 518/518/518 510/510/510 +f 512/512/512 511/511/511 519/519/519 +f 519/519/519 520/520/520 512/512/512 +f 514/514/514 513/513/513 521/521/521 +f 521/521/521 522/522/522 514/514/514 +f 516/516/516 515/515/515 523/523/523 +f 523/523/523 524/524/524 516/516/516 +f 518/518/518 517/517/517 525/525/525 +f 525/525/525 526/526/526 518/518/518 +f 520/520/520 519/519/519 527/527/527 +f 527/527/527 528/528/528 520/520/520 +f 522/522/522 521/521/521 529/529/529 +f 529/529/529 530/530/530 522/522/522 +f 531/531/531 532/532/532 533/533/533 +f 533/533/533 534/534/534 531/531/531 +f 535/535/535 536/536/536 537/537/537 +f 537/537/537 538/538/538 535/535/535 +f 539/539/539 540/540/540 541/541/541 +f 541/541/541 542/542/542 539/539/539 +f 543/543/543 544/544/544 545/545/545 +f 545/545/545 546/546/546 543/543/543 +f 547/547/547 548/548/548 549/549/549 +f 549/549/549 550/550/550 547/547/547 +f 551/551/551 552/552/552 553/553/553 +f 553/553/553 554/554/554 551/551/551 +f 555/555/555 556/556/556 557/557/557 +f 557/557/557 558/558/558 555/555/555 +f 559/559/559 560/560/560 561/561/561 +f 561/561/561 562/562/562 559/559/559 +f 563/563/563 564/564/564 565/565/565 +f 565/565/565 566/566/566 563/563/563 +f 567/567/567 568/568/568 569/569/569 +f 569/569/569 570/570/570 567/567/567 +f 571/571/571 572/572/572 573/573/573 +f 573/573/573 574/574/574 571/571/571 +f 575/575/575 571/571/571 574/574/574 +f 574/574/574 576/576/576 575/575/575 +f 577/577/577 575/575/575 576/576/576 +f 576/576/576 578/578/578 577/577/577 +f 579/579/579 577/577/577 578/578/578 +f 578/578/578 580/580/580 579/579/579 +f 581/581/581 579/579/579 580/580/580 +f 580/580/580 582/582/582 581/581/581 +f 583/583/583 581/581/581 582/582/582 +f 582/582/582 584/584/584 583/583/583 +f 585/585/585 583/583/583 584/584/584 +f 584/584/584 586/586/586 585/585/585 +f 587/587/587 585/585/585 586/586/586 +f 586/586/586 588/588/588 587/587/587 +f 589/589/589 587/587/587 588/588/588 +f 588/588/588 590/590/590 589/589/589 +f 572/572/572 589/589/589 590/590/590 +f 590/590/590 573/573/573 572/572/572 +f 591/591/591 592/592/592 572/572/572 +f 572/572/572 571/571/571 591/591/591 +f 593/593/593 591/591/591 571/571/571 +f 571/571/571 575/575/575 593/593/593 +f 594/594/594 593/593/593 575/575/575 +f 575/575/575 577/577/577 594/594/594 +f 595/595/595 594/594/594 577/577/577 +f 577/577/577 579/579/579 595/595/595 +f 596/596/596 595/595/595 579/579/579 +f 579/579/579 581/581/581 596/596/596 +f 597/597/597 596/596/596 581/581/581 +f 581/581/581 583/583/583 597/597/597 +f 598/598/598 597/597/597 583/583/583 +f 583/583/583 585/585/585 598/598/598 +f 599/599/599 598/598/598 585/585/585 +f 585/585/585 587/587/587 599/599/599 +f 600/600/600 599/599/599 587/587/587 +f 587/587/587 589/589/589 600/600/600 +f 592/592/592 600/600/600 589/589/589 +f 589/589/589 572/572/572 592/592/592 +f 601/601/601 602/602/602 603/603/603 +f 603/603/603 604/604/604 601/601/601 +f 605/605/605 606/606/606 607/607/607 +f 607/607/607 608/608/608 605/605/605 +f 609/609/609 610/610/610 611/611/611 +f 611/611/611 612/612/612 609/609/609 +f 613/613/613 614/614/614 615/615/615 +f 615/615/615 616/616/616 613/613/613 +f 617/617/617 618/618/618 619/619/619 +f 619/619/619 620/620/620 617/617/617 +f 621/621/621 622/622/622 623/623/623 +f 623/623/623 624/624/624 621/621/621 +f 625/625/625 626/626/626 627/627/627 +f 627/627/627 628/628/628 625/625/625 +f 629/629/629 630/630/630 631/631/631 +f 631/631/631 632/632/632 629/629/629 +f 633/633/633 634/634/634 635/635/635 +f 635/635/635 636/636/636 633/633/633 +f 637/637/637 638/638/638 639/639/639 +f 639/639/639 640/640/640 637/637/637 +f 641/641/641 642/642/642 643/643/643 +f 643/643/643 644/644/644 641/641/641 +f 645/645/645 646/646/646 647/647/647 +f 647/647/647 648/648/648 645/645/645 +f 649/649/649 650/650/650 651/651/651 +f 651/651/651 652/652/652 649/649/649 +f 653/653/653 654/654/654 655/655/655 +f 655/655/655 656/656/656 653/653/653 +f 657/657/657 658/658/658 659/659/659 +f 659/659/659 660/660/660 657/657/657 +f 661/661/661 662/662/662 663/663/663 +f 663/663/663 664/664/664 661/661/661 +f 665/665/665 666/666/666 667/667/667 +f 667/667/667 668/668/668 665/665/665 +f 669/669/669 670/670/670 671/671/671 +f 671/671/671 672/672/672 669/669/669 +f 673/673/673 674/674/674 675/675/675 +f 675/675/675 676/676/676 673/673/673 +f 677/677/677 678/678/678 679/679/679 +f 679/679/679 680/680/680 677/677/677 +f 681/681/681 682/682/682 683/683/683 +f 683/683/683 684/684/684 681/681/681 +f 685/685/685 686/686/686 687/687/687 +f 687/687/687 688/688/688 685/685/685 +f 689/689/689 690/690/690 691/691/691 +f 691/691/691 692/692/692 689/689/689 +f 693/693/693 694/694/694 695/695/695 +f 695/695/695 696/696/696 693/693/693 +f 697/697/697 698/698/698 699/699/699 +f 699/699/699 700/700/700 697/697/697 +f 701/701/701 702/702/702 703/703/703 +f 703/703/703 704/704/704 701/701/701 +f 705/705/705 706/706/706 707/707/707 +f 707/707/707 708/708/708 705/705/705 +f 709/709/709 710/710/710 711/711/711 +f 711/711/711 712/712/712 709/709/709 +f 713/713/713 714/714/714 715/715/715 +f 715/715/715 716/716/716 713/713/713 +f 717/717/717 718/718/718 719/719/719 +f 719/719/719 720/720/720 717/717/717 +f 721/721/721 722/722/722 723/723/723 +f 723/723/723 724/724/724 721/721/721 +f 725/725/725 726/726/726 727/727/727 +f 727/727/727 728/728/728 725/725/725 +f 729/729/729 730/730/730 731/731/731 +f 731/731/731 732/732/732 729/729/729 +f 733/733/733 734/734/734 735/735/735 +f 735/735/735 736/736/736 733/733/733 +f 737/737/737 738/738/738 739/739/739 +f 739/739/739 740/740/740 737/737/737 +f 741/741/741 742/742/742 743/743/743 +f 743/743/743 744/744/744 741/741/741 +f 745/745/745 746/746/746 747/747/747 +f 747/747/747 748/748/748 745/745/745 +f 749/749/749 750/750/750 751/751/751 +f 751/751/751 752/752/752 749/749/749 +f 753/753/753 754/754/754 755/755/755 +f 755/755/755 756/756/756 753/753/753 +f 757/757/757 758/758/758 759/759/759 +f 759/759/759 760/760/760 757/757/757 +f 761/761/761 762/762/762 763/763/763 +f 763/763/763 764/764/764 761/761/761 +f 765/765/765 766/766/766 767/767/767 +f 767/767/767 768/768/768 765/765/765 +f 769/769/769 770/770/770 771/771/771 +f 771/771/771 772/772/772 769/769/769 +f 773/773/773 774/774/774 775/775/775 +f 775/775/775 776/776/776 773/773/773 +f 777/777/777 778/778/778 779/779/779 +f 779/779/779 780/780/780 777/777/777 +f 781/781/781 782/782/782 783/783/783 +f 783/783/783 784/784/784 781/781/781 +f 785/785/785 786/786/786 787/787/787 +f 787/787/787 788/788/788 785/785/785 +f 789/789/789 790/790/790 791/791/791 +f 791/791/791 792/792/792 789/789/789 +f 793/793/793 794/794/794 795/795/795 +f 795/795/795 796/796/796 793/793/793 +f 797/797/797 798/798/798 799/799/799 +f 799/799/799 800/800/800 797/797/797 +f 801/801/801 802/802/802 803/803/803 +f 803/803/803 804/804/804 801/801/801 +f 805/805/805 806/806/806 807/807/807 +f 807/807/807 808/808/808 805/805/805 +f 809/809/809 810/810/810 811/811/811 +f 811/811/811 812/812/812 809/809/809 +f 813/813/813 814/814/814 815/815/815 +f 815/815/815 816/816/816 813/813/813 +f 817/817/817 818/818/818 819/819/819 +f 819/819/819 820/820/820 817/817/817 +f 821/821/821 822/822/822 823/823/823 +f 823/823/823 824/824/824 821/821/821 +f 825/825/825 826/826/826 827/827/827 +f 827/827/827 828/828/828 825/825/825 +f 829/829/829 830/830/830 831/831/831 +f 831/831/831 832/832/832 829/829/829 +f 833/833/833 834/834/834 835/835/835 +f 835/835/835 836/836/836 833/833/833 +f 837/837/837 838/838/838 839/839/839 +f 839/839/839 840/840/840 837/837/837 +f 841/841/841 842/842/842 843/843/843 +f 843/843/843 844/844/844 841/841/841 +f 845/845/845 846/846/846 847/847/847 +f 847/847/847 848/848/848 845/845/845 +f 849/849/849 850/850/850 851/851/851 +f 851/851/851 852/852/852 849/849/849 +f 853/853/853 854/854/854 855/855/855 +f 855/855/855 856/856/856 853/853/853 +f 857/857/857 858/858/858 859/859/859 +f 859/859/859 860/860/860 857/857/857 +f 861/861/861 862/862/862 863/863/863 +f 863/863/863 864/864/864 861/861/861 +f 865/865/865 866/866/866 867/867/867 +f 867/867/867 868/868/868 865/865/865 +f 869/869/869 870/870/870 871/871/871 +f 871/871/871 872/872/872 869/869/869 +f 873/873/873 874/874/874 875/875/875 +f 875/875/875 876/876/876 873/873/873 +f 877/877/877 878/878/878 879/879/879 +f 879/879/879 880/880/880 877/877/877 +f 881/881/881 882/882/882 883/883/883 +f 881/881/881 883/883/883 884/884/884 +f 885/885/885 881/881/881 884/884/884 +f 885/885/885 884/884/884 886/886/886 +f 887/887/887 885/885/885 886/886/886 +f 887/887/887 886/886/886 888/888/888 +f 889/889/889 887/887/887 888/888/888 +f 889/889/889 888/888/888 890/890/890 +f 891/891/891 889/889/889 890/890/890 +f 891/891/891 890/890/890 892/892/892 +f 893/893/893 891/891/891 892/892/892 +f 893/893/893 892/892/892 894/894/894 +f 895/895/895 893/893/893 894/894/894 +f 895/895/895 894/894/894 896/896/896 +f 897/897/897 895/895/895 896/896/896 +f 897/897/897 896/896/896 898/898/898 +f 899/899/899 900/900/900 901/901/901 +f 899/899/899 901/901/901 902/902/902 +f 882/882/882 899/899/899 902/902/902 +f 882/882/882 902/902/902 883/883/883 +f 903/903/903 904/904/904 882/882/882 +f 903/903/903 882/882/882 881/881/881 +f 905/905/905 903/903/903 881/881/881 +f 905/905/905 881/881/881 885/885/885 +f 906/906/906 905/905/905 885/885/885 +f 906/906/906 885/885/885 887/887/887 +f 907/907/907 906/906/906 887/887/887 +f 907/907/907 887/887/887 889/889/889 +f 908/908/908 907/907/907 889/889/889 +f 908/908/908 889/889/889 891/891/891 +f 909/909/909 908/908/908 891/891/891 +f 909/909/909 891/891/891 893/893/893 +f 910/910/910 909/909/909 893/893/893 +f 910/910/910 893/893/893 895/895/895 +f 911/911/911 910/910/910 895/895/895 +f 911/911/911 895/895/895 897/897/897 +f 912/912/912 913/913/913 900/900/900 +f 912/912/912 900/900/900 899/899/899 +f 904/904/904 912/912/912 899/899/899 +f 904/904/904 899/899/899 882/882/882 +f 914/914/914 915/915/915 904/904/904 +f 914/914/914 904/904/904 903/903/903 +f 916/916/916 914/914/914 903/903/903 +f 916/916/916 903/903/903 905/905/905 +f 917/917/917 916/916/916 905/905/905 +f 917/917/917 905/905/905 906/906/906 +f 918/918/918 917/917/917 906/906/906 +f 918/918/918 906/906/906 907/907/907 +f 919/919/919 918/918/918 907/907/907 +f 919/919/919 907/907/907 908/908/908 +f 920/920/920 919/919/919 908/908/908 +f 920/920/920 908/908/908 909/909/909 +f 921/921/921 920/920/920 909/909/909 +f 921/921/921 909/909/909 910/910/910 +f 922/922/922 921/921/921 910/910/910 +f 922/922/922 910/910/910 911/911/911 +f 923/923/923 924/924/924 913/913/913 +f 923/923/923 913/913/913 912/912/912 +f 915/915/915 923/923/923 912/912/912 +f 915/915/915 912/912/912 904/904/904 +f 925/925/925 926/926/926 915/915/915 +f 925/925/925 915/915/915 914/914/914 +f 927/927/927 925/925/925 914/914/914 +f 927/927/927 914/914/914 916/916/916 +f 928/928/928 927/927/927 916/916/916 +f 928/928/928 916/916/916 917/917/917 +f 929/929/929 928/928/928 917/917/917 +f 929/929/929 917/917/917 918/918/918 +f 930/930/930 929/929/929 918/918/918 +f 930/930/930 918/918/918 919/919/919 +f 931/931/931 930/930/930 919/919/919 +f 931/931/931 919/919/919 920/920/920 +f 932/932/932 931/931/931 920/920/920 +f 932/932/932 920/920/920 921/921/921 +f 933/933/933 932/932/932 921/921/921 +f 933/933/933 921/921/921 922/922/922 +f 934/934/934 935/935/935 924/924/924 +f 934/934/934 924/924/924 923/923/923 +f 926/926/926 934/934/934 923/923/923 +f 926/926/926 923/923/923 915/915/915 +f 936/936/936 937/937/937 926/926/926 +f 936/936/936 926/926/926 925/925/925 +f 938/938/938 936/936/936 925/925/925 +f 938/938/938 925/925/925 927/927/927 +f 939/939/939 938/938/938 927/927/927 +f 939/939/939 927/927/927 928/928/928 +f 940/940/940 939/939/939 928/928/928 +f 940/940/940 928/928/928 929/929/929 +f 941/941/941 940/940/940 929/929/929 +f 941/941/941 929/929/929 930/930/930 +f 942/942/942 941/941/941 930/930/930 +f 942/942/942 930/930/930 931/931/931 +f 943/943/943 942/942/942 931/931/931 +f 943/943/943 931/931/931 932/932/932 +f 944/944/944 943/943/943 932/932/932 +f 944/944/944 932/932/932 933/933/933 +f 945/945/945 946/946/946 935/935/935 +f 945/945/945 935/935/935 934/934/934 +f 937/937/937 945/945/945 934/934/934 +f 937/937/937 934/934/934 926/926/926 diff --git a/ObsoleteDemos/ConvexDecompositionDemo/main.cpp b/Demos/ConvexDecompositionDemo/main.cpp similarity index 100% rename from ObsoleteDemos/ConvexDecompositionDemo/main.cpp rename to Demos/ConvexDecompositionDemo/main.cpp diff --git a/ObsoleteDemos/ConvexDecompositionDemo/testFile32Single.bullet b/Demos/ConvexDecompositionDemo/testFile32Single.bullet similarity index 100% rename from ObsoleteDemos/ConvexDecompositionDemo/testFile32Single.bullet rename to Demos/ConvexDecompositionDemo/testFile32Single.bullet diff --git a/ObsoleteDemos/ConvexHullDistance/CMakeLists.txt b/Demos/ConvexHullDistance/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ConvexHullDistance/CMakeLists.txt rename to Demos/ConvexHullDistance/CMakeLists.txt diff --git a/ObsoleteDemos/ConvexHullDistance/ConvexHullDistanceDemo.cpp b/Demos/ConvexHullDistance/ConvexHullDistanceDemo.cpp similarity index 100% rename from ObsoleteDemos/ConvexHullDistance/ConvexHullDistanceDemo.cpp rename to Demos/ConvexHullDistance/ConvexHullDistanceDemo.cpp diff --git a/ObsoleteDemos/DoublePrecisionDemo/CMakeLists.txt b/Demos/DoublePrecisionDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/DoublePrecisionDemo/CMakeLists.txt rename to Demos/DoublePrecisionDemo/CMakeLists.txt diff --git a/ObsoleteDemos/DoublePrecisionDemo/DoublePrecisionDemo.cpp b/Demos/DoublePrecisionDemo/DoublePrecisionDemo.cpp similarity index 100% rename from ObsoleteDemos/DoublePrecisionDemo/DoublePrecisionDemo.cpp rename to Demos/DoublePrecisionDemo/DoublePrecisionDemo.cpp diff --git a/ObsoleteDemos/DoublePrecisionDemo/DoublePrecisionDemo.h b/Demos/DoublePrecisionDemo/DoublePrecisionDemo.h similarity index 100% rename from ObsoleteDemos/DoublePrecisionDemo/DoublePrecisionDemo.h rename to Demos/DoublePrecisionDemo/DoublePrecisionDemo.h diff --git a/ObsoleteDemos/DynamicControlDemo/CMakeLists.txt b/Demos/DynamicControlDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/DynamicControlDemo/CMakeLists.txt rename to Demos/DynamicControlDemo/CMakeLists.txt diff --git a/ObsoleteDemos/DynamicControlDemo/MotorDemo.cpp b/Demos/DynamicControlDemo/MotorDemo.cpp similarity index 100% rename from ObsoleteDemos/DynamicControlDemo/MotorDemo.cpp rename to Demos/DynamicControlDemo/MotorDemo.cpp diff --git a/ObsoleteDemos/DynamicControlDemo/MotorDemo.h b/Demos/DynamicControlDemo/MotorDemo.h similarity index 100% rename from ObsoleteDemos/DynamicControlDemo/MotorDemo.h rename to Demos/DynamicControlDemo/MotorDemo.h diff --git a/ObsoleteDemos/DynamicControlDemo/main.cpp b/Demos/DynamicControlDemo/main.cpp similarity index 100% rename from ObsoleteDemos/DynamicControlDemo/main.cpp rename to Demos/DynamicControlDemo/main.cpp diff --git a/ObsoleteDemos/EPAPenDepthDemo/PenetrationTestBullet.cpp b/Demos/EPAPenDepthDemo/PenetrationTestBullet.cpp similarity index 100% rename from ObsoleteDemos/EPAPenDepthDemo/PenetrationTestBullet.cpp rename to Demos/EPAPenDepthDemo/PenetrationTestBullet.cpp diff --git a/ObsoleteDemos/FeatherstoneMultiBodyDemo/CMakeLists.txt b/Demos/FeatherstoneMultiBodyDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/FeatherstoneMultiBodyDemo/CMakeLists.txt rename to Demos/FeatherstoneMultiBodyDemo/CMakeLists.txt diff --git a/ObsoleteDemos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.cpp b/Demos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.cpp similarity index 100% rename from ObsoleteDemos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.cpp rename to Demos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.cpp diff --git a/ObsoleteDemos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.h b/Demos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.h similarity index 100% rename from ObsoleteDemos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.h rename to Demos/FeatherstoneMultiBodyDemo/FeatherstoneMultiBodyDemo.h diff --git a/ObsoleteDemos/FeatherstoneMultiBodyDemo/Makefile.am b/Demos/FeatherstoneMultiBodyDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/FeatherstoneMultiBodyDemo/Makefile.am rename to Demos/FeatherstoneMultiBodyDemo/Makefile.am diff --git a/ObsoleteDemos/FeatherstoneMultiBodyDemo/Win32FeatherstoneMultiBodyDemo.cpp b/Demos/FeatherstoneMultiBodyDemo/Win32FeatherstoneMultiBodyDemo.cpp similarity index 100% rename from ObsoleteDemos/FeatherstoneMultiBodyDemo/Win32FeatherstoneMultiBodyDemo.cpp rename to Demos/FeatherstoneMultiBodyDemo/Win32FeatherstoneMultiBodyDemo.cpp diff --git a/ObsoleteDemos/FeatherstoneMultiBodyDemo/main.cpp b/Demos/FeatherstoneMultiBodyDemo/main.cpp similarity index 100% rename from ObsoleteDemos/FeatherstoneMultiBodyDemo/main.cpp rename to Demos/FeatherstoneMultiBodyDemo/main.cpp diff --git a/ObsoleteDemos/ForkLiftDemo/CMakeLists.txt b/Demos/ForkLiftDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ForkLiftDemo/CMakeLists.txt rename to Demos/ForkLiftDemo/CMakeLists.txt diff --git a/ObsoleteDemos/ForkLiftDemo/ForkLiftDemo.cpp b/Demos/ForkLiftDemo/ForkLiftDemo.cpp similarity index 100% rename from ObsoleteDemos/ForkLiftDemo/ForkLiftDemo.cpp rename to Demos/ForkLiftDemo/ForkLiftDemo.cpp diff --git a/ObsoleteDemos/ForkLiftDemo/ForkLiftDemo.h b/Demos/ForkLiftDemo/ForkLiftDemo.h similarity index 100% rename from ObsoleteDemos/ForkLiftDemo/ForkLiftDemo.h rename to Demos/ForkLiftDemo/ForkLiftDemo.h diff --git a/ObsoleteDemos/ForkLiftDemo/Makefile.am b/Demos/ForkLiftDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/ForkLiftDemo/Makefile.am rename to Demos/ForkLiftDemo/Makefile.am diff --git a/ObsoleteDemos/ForkLiftDemo/main.cpp b/Demos/ForkLiftDemo/main.cpp similarity index 100% rename from ObsoleteDemos/ForkLiftDemo/main.cpp rename to Demos/ForkLiftDemo/main.cpp diff --git a/ObsoleteDemos/FractureDemo/CMakeLists.txt b/Demos/FractureDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/FractureDemo/CMakeLists.txt rename to Demos/FractureDemo/CMakeLists.txt diff --git a/ObsoleteDemos/FractureDemo/FractureDemo.cpp b/Demos/FractureDemo/FractureDemo.cpp similarity index 100% rename from ObsoleteDemos/FractureDemo/FractureDemo.cpp rename to Demos/FractureDemo/FractureDemo.cpp diff --git a/ObsoleteDemos/FractureDemo/FractureDemo.h b/Demos/FractureDemo/FractureDemo.h similarity index 100% rename from ObsoleteDemos/FractureDemo/FractureDemo.h rename to Demos/FractureDemo/FractureDemo.h diff --git a/ObsoleteDemos/FractureDemo/Win32FractureDemo.cpp b/Demos/FractureDemo/Win32FractureDemo.cpp similarity index 100% rename from ObsoleteDemos/FractureDemo/Win32FractureDemo.cpp rename to Demos/FractureDemo/Win32FractureDemo.cpp diff --git a/ObsoleteDemos/FractureDemo/btFractureBody.cpp b/Demos/FractureDemo/btFractureBody.cpp similarity index 100% rename from ObsoleteDemos/FractureDemo/btFractureBody.cpp rename to Demos/FractureDemo/btFractureBody.cpp diff --git a/ObsoleteDemos/FractureDemo/btFractureBody.h b/Demos/FractureDemo/btFractureBody.h similarity index 100% rename from ObsoleteDemos/FractureDemo/btFractureBody.h rename to Demos/FractureDemo/btFractureBody.h diff --git a/ObsoleteDemos/FractureDemo/btFractureDynamicsWorld.cpp b/Demos/FractureDemo/btFractureDynamicsWorld.cpp similarity index 100% rename from ObsoleteDemos/FractureDemo/btFractureDynamicsWorld.cpp rename to Demos/FractureDemo/btFractureDynamicsWorld.cpp diff --git a/ObsoleteDemos/FractureDemo/btFractureDynamicsWorld.h b/Demos/FractureDemo/btFractureDynamicsWorld.h similarity index 100% rename from ObsoleteDemos/FractureDemo/btFractureDynamicsWorld.h rename to Demos/FractureDemo/btFractureDynamicsWorld.h diff --git a/ObsoleteDemos/FractureDemo/main.cpp b/Demos/FractureDemo/main.cpp similarity index 100% rename from ObsoleteDemos/FractureDemo/main.cpp rename to Demos/FractureDemo/main.cpp diff --git a/ObsoleteDemos/GenericJointDemo/CMakeLists.txt b/Demos/GenericJointDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/GenericJointDemo/CMakeLists.txt rename to Demos/GenericJointDemo/CMakeLists.txt diff --git a/ObsoleteDemos/GenericJointDemo/GenericJointDemo.cpp b/Demos/GenericJointDemo/GenericJointDemo.cpp similarity index 100% rename from ObsoleteDemos/GenericJointDemo/GenericJointDemo.cpp rename to Demos/GenericJointDemo/GenericJointDemo.cpp diff --git a/ObsoleteDemos/GenericJointDemo/GenericJointDemo.h b/Demos/GenericJointDemo/GenericJointDemo.h similarity index 100% rename from ObsoleteDemos/GenericJointDemo/GenericJointDemo.h rename to Demos/GenericJointDemo/GenericJointDemo.h diff --git a/ObsoleteDemos/GenericJointDemo/Ragdoll.cpp b/Demos/GenericJointDemo/Ragdoll.cpp similarity index 100% rename from ObsoleteDemos/GenericJointDemo/Ragdoll.cpp rename to Demos/GenericJointDemo/Ragdoll.cpp diff --git a/ObsoleteDemos/GenericJointDemo/Ragdoll.h b/Demos/GenericJointDemo/Ragdoll.h similarity index 100% rename from ObsoleteDemos/GenericJointDemo/Ragdoll.h rename to Demos/GenericJointDemo/Ragdoll.h diff --git a/ObsoleteDemos/GenericJointDemo/Win32GenericJointDemo.cpp b/Demos/GenericJointDemo/Win32GenericJointDemo.cpp similarity index 100% rename from ObsoleteDemos/GenericJointDemo/Win32GenericJointDemo.cpp rename to Demos/GenericJointDemo/Win32GenericJointDemo.cpp diff --git a/ObsoleteDemos/GenericJointDemo/main.cpp b/Demos/GenericJointDemo/main.cpp similarity index 100% rename from ObsoleteDemos/GenericJointDemo/main.cpp rename to Demos/GenericJointDemo/main.cpp diff --git a/ObsoleteDemos/GimpactTestDemo/BunnyMesh.h b/Demos/GimpactTestDemo/BunnyMesh.h similarity index 100% rename from ObsoleteDemos/GimpactTestDemo/BunnyMesh.h rename to Demos/GimpactTestDemo/BunnyMesh.h diff --git a/ObsoleteDemos/GimpactTestDemo/CMakeLists.txt b/Demos/GimpactTestDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/GimpactTestDemo/CMakeLists.txt rename to Demos/GimpactTestDemo/CMakeLists.txt diff --git a/ObsoleteDemos/GimpactTestDemo/GimpactTestDemo.cpp b/Demos/GimpactTestDemo/GimpactTestDemo.cpp similarity index 100% rename from ObsoleteDemos/GimpactTestDemo/GimpactTestDemo.cpp rename to Demos/GimpactTestDemo/GimpactTestDemo.cpp diff --git a/ObsoleteDemos/GimpactTestDemo/GimpactTestDemo.h b/Demos/GimpactTestDemo/GimpactTestDemo.h similarity index 100% rename from ObsoleteDemos/GimpactTestDemo/GimpactTestDemo.h rename to Demos/GimpactTestDemo/GimpactTestDemo.h diff --git a/ObsoleteDemos/GimpactTestDemo/TorusMesh.h b/Demos/GimpactTestDemo/TorusMesh.h similarity index 100% rename from ObsoleteDemos/GimpactTestDemo/TorusMesh.h rename to Demos/GimpactTestDemo/TorusMesh.h diff --git a/ObsoleteDemos/GimpactTestDemo/Win32GimpactDemo.cpp b/Demos/GimpactTestDemo/Win32GimpactDemo.cpp similarity index 100% rename from ObsoleteDemos/GimpactTestDemo/Win32GimpactDemo.cpp rename to Demos/GimpactTestDemo/Win32GimpactDemo.cpp diff --git a/ObsoleteDemos/GimpactTestDemo/main.cpp b/Demos/GimpactTestDemo/main.cpp similarity index 100% rename from ObsoleteDemos/GimpactTestDemo/main.cpp rename to Demos/GimpactTestDemo/main.cpp diff --git a/ObsoleteDemos/GjkConvexCastDemo/CMakeLists.txt b/Demos/GjkConvexCastDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/GjkConvexCastDemo/CMakeLists.txt rename to Demos/GjkConvexCastDemo/CMakeLists.txt diff --git a/ObsoleteDemos/GjkConvexCastDemo/LinearConvexCastDemo.cpp b/Demos/GjkConvexCastDemo/LinearConvexCastDemo.cpp similarity index 100% rename from ObsoleteDemos/GjkConvexCastDemo/LinearConvexCastDemo.cpp rename to Demos/GjkConvexCastDemo/LinearConvexCastDemo.cpp diff --git a/ObsoleteDemos/GjkConvexCastDemo/LinearConvexCastDemo.h b/Demos/GjkConvexCastDemo/LinearConvexCastDemo.h similarity index 100% rename from ObsoleteDemos/GjkConvexCastDemo/LinearConvexCastDemo.h rename to Demos/GjkConvexCastDemo/LinearConvexCastDemo.h diff --git a/ObsoleteDemos/GjkConvexCastDemo/main.cpp b/Demos/GjkConvexCastDemo/main.cpp similarity index 100% rename from ObsoleteDemos/GjkConvexCastDemo/main.cpp rename to Demos/GjkConvexCastDemo/main.cpp diff --git a/ObsoleteDemos/Glut/GL/freeglut.h b/Demos/Glut/GL/freeglut.h similarity index 100% rename from ObsoleteDemos/Glut/GL/freeglut.h rename to Demos/Glut/GL/freeglut.h diff --git a/ObsoleteDemos/Glut/GL/freeglut_ext.h b/Demos/Glut/GL/freeglut_ext.h similarity index 100% rename from ObsoleteDemos/Glut/GL/freeglut_ext.h rename to Demos/Glut/GL/freeglut_ext.h diff --git a/ObsoleteDemos/Glut/GL/freeglut_std.h b/Demos/Glut/GL/freeglut_std.h similarity index 100% rename from ObsoleteDemos/Glut/GL/freeglut_std.h rename to Demos/Glut/GL/freeglut_std.h diff --git a/ObsoleteDemos/Glut/GL/glew.h b/Demos/Glut/GL/glew.h similarity index 100% rename from ObsoleteDemos/Glut/GL/glew.h rename to Demos/Glut/GL/glew.h diff --git a/ObsoleteDemos/Glut/GL/glext.h b/Demos/Glut/GL/glext.h similarity index 100% rename from ObsoleteDemos/Glut/GL/glext.h rename to Demos/Glut/GL/glext.h diff --git a/ObsoleteDemos/Glut/GL/glut.h b/Demos/Glut/GL/glut.h similarity index 100% rename from ObsoleteDemos/Glut/GL/glut.h rename to Demos/Glut/GL/glut.h diff --git a/ObsoleteDemos/Glut/GL/glxew.h b/Demos/Glut/GL/glxew.h similarity index 100% rename from ObsoleteDemos/Glut/GL/glxew.h rename to Demos/Glut/GL/glxew.h diff --git a/ObsoleteDemos/Glut/GL/glxext.h b/Demos/Glut/GL/glxext.h similarity index 100% rename from ObsoleteDemos/Glut/GL/glxext.h rename to Demos/Glut/GL/glxext.h diff --git a/ObsoleteDemos/Glut/GL/wglew.h b/Demos/Glut/GL/wglew.h similarity index 100% rename from ObsoleteDemos/Glut/GL/wglew.h rename to Demos/Glut/GL/wglew.h diff --git a/ObsoleteDemos/Glut/GL/wglext.h b/Demos/Glut/GL/wglext.h similarity index 100% rename from ObsoleteDemos/Glut/GL/wglext.h rename to Demos/Glut/GL/wglext.h diff --git a/ObsoleteDemos/Glut/btGlutInclude.h b/Demos/Glut/btGlutInclude.h similarity index 100% rename from ObsoleteDemos/Glut/btGlutInclude.h rename to Demos/Glut/btGlutInclude.h diff --git a/ObsoleteDemos/Glut/glew32s.lib b/Demos/Glut/glew32s.lib similarity index 100% rename from ObsoleteDemos/Glut/glew32s.lib rename to Demos/Glut/glew32s.lib diff --git a/ObsoleteDemos/Glut/glew64s.lib b/Demos/Glut/glew64s.lib similarity index 100% rename from ObsoleteDemos/Glut/glew64s.lib rename to Demos/Glut/glew64s.lib diff --git a/ObsoleteDemos/Glut/glut32.lib b/Demos/Glut/glut32.lib similarity index 100% rename from ObsoleteDemos/Glut/glut32.lib rename to Demos/Glut/glut32.lib diff --git a/ObsoleteDemos/Glut/glut64.lib b/Demos/Glut/glut64.lib similarity index 100% rename from ObsoleteDemos/Glut/glut64.lib rename to Demos/Glut/glut64.lib diff --git a/ObsoleteDemos/GyroscopicDemo/CMakeLists.txt b/Demos/GyroscopicDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/GyroscopicDemo/CMakeLists.txt rename to Demos/GyroscopicDemo/CMakeLists.txt diff --git a/ObsoleteDemos/GyroscopicDemo/GyroscopicDemo.cpp b/Demos/GyroscopicDemo/GyroscopicDemo.cpp similarity index 100% rename from ObsoleteDemos/GyroscopicDemo/GyroscopicDemo.cpp rename to Demos/GyroscopicDemo/GyroscopicDemo.cpp diff --git a/ObsoleteDemos/GyroscopicDemo/GyroscopicDemo.h b/Demos/GyroscopicDemo/GyroscopicDemo.h similarity index 100% rename from ObsoleteDemos/GyroscopicDemo/GyroscopicDemo.h rename to Demos/GyroscopicDemo/GyroscopicDemo.h diff --git a/ObsoleteDemos/GyroscopicDemo/Win32GyroscopicDemo.cpp b/Demos/GyroscopicDemo/Win32GyroscopicDemo.cpp similarity index 100% rename from ObsoleteDemos/GyroscopicDemo/Win32GyroscopicDemo.cpp rename to Demos/GyroscopicDemo/Win32GyroscopicDemo.cpp diff --git a/ObsoleteDemos/GyroscopicDemo/main.cpp b/Demos/GyroscopicDemo/main.cpp similarity index 100% rename from ObsoleteDemos/GyroscopicDemo/main.cpp rename to Demos/GyroscopicDemo/main.cpp diff --git a/ObsoleteDemos/HelloWorld/CMakeLists.txt b/Demos/HelloWorld/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/HelloWorld/CMakeLists.txt rename to Demos/HelloWorld/CMakeLists.txt diff --git a/ObsoleteDemos/HelloWorld/HelloWorld.cpp b/Demos/HelloWorld/HelloWorld.cpp similarity index 100% rename from ObsoleteDemos/HelloWorld/HelloWorld.cpp rename to Demos/HelloWorld/HelloWorld.cpp diff --git a/ObsoleteDemos/HelloWorld/premake4.lua b/Demos/HelloWorld/premake4.lua similarity index 100% rename from ObsoleteDemos/HelloWorld/premake4.lua rename to Demos/HelloWorld/premake4.lua diff --git a/ObsoleteDemos/InternalEdgeDemo/CMakeLists.txt b/Demos/InternalEdgeDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/InternalEdgeDemo/CMakeLists.txt rename to Demos/InternalEdgeDemo/CMakeLists.txt diff --git a/ObsoleteDemos/InternalEdgeDemo/InternalEdgeDemo.cpp b/Demos/InternalEdgeDemo/InternalEdgeDemo.cpp similarity index 100% rename from ObsoleteDemos/InternalEdgeDemo/InternalEdgeDemo.cpp rename to Demos/InternalEdgeDemo/InternalEdgeDemo.cpp diff --git a/ObsoleteDemos/InternalEdgeDemo/InternalEdgeDemo.h b/Demos/InternalEdgeDemo/InternalEdgeDemo.h similarity index 100% rename from ObsoleteDemos/InternalEdgeDemo/InternalEdgeDemo.h rename to Demos/InternalEdgeDemo/InternalEdgeDemo.h diff --git a/ObsoleteDemos/InternalEdgeDemo/Taru.mdl b/Demos/InternalEdgeDemo/Taru.mdl similarity index 100% rename from ObsoleteDemos/InternalEdgeDemo/Taru.mdl rename to Demos/InternalEdgeDemo/Taru.mdl diff --git a/ObsoleteDemos/InternalEdgeDemo/Win32InternalEdgeDemo.cpp b/Demos/InternalEdgeDemo/Win32InternalEdgeDemo.cpp similarity index 100% rename from ObsoleteDemos/InternalEdgeDemo/Win32InternalEdgeDemo.cpp rename to Demos/InternalEdgeDemo/Win32InternalEdgeDemo.cpp diff --git a/ObsoleteDemos/InternalEdgeDemo/main.cpp b/Demos/InternalEdgeDemo/main.cpp similarity index 100% rename from ObsoleteDemos/InternalEdgeDemo/main.cpp rename to Demos/InternalEdgeDemo/main.cpp diff --git a/ObsoleteDemos/MovingConcaveDemo/CMakeLists.txt b/Demos/MovingConcaveDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/MovingConcaveDemo/CMakeLists.txt rename to Demos/MovingConcaveDemo/CMakeLists.txt diff --git a/ObsoleteDemos/MovingConcaveDemo/ConcaveDemo.h b/Demos/MovingConcaveDemo/ConcaveDemo.h similarity index 100% rename from ObsoleteDemos/MovingConcaveDemo/ConcaveDemo.h rename to Demos/MovingConcaveDemo/ConcaveDemo.h diff --git a/ObsoleteDemos/MovingConcaveDemo/ConcavePhysicsDemo.cpp b/Demos/MovingConcaveDemo/ConcavePhysicsDemo.cpp similarity index 100% rename from ObsoleteDemos/MovingConcaveDemo/ConcavePhysicsDemo.cpp rename to Demos/MovingConcaveDemo/ConcavePhysicsDemo.cpp diff --git a/ObsoleteDemos/MultiMaterialDemo/CMakeLists.txt b/Demos/MultiMaterialDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/MultiMaterialDemo/CMakeLists.txt rename to Demos/MultiMaterialDemo/CMakeLists.txt diff --git a/ObsoleteDemos/MultiMaterialDemo/MultiMaterialDemo.cpp b/Demos/MultiMaterialDemo/MultiMaterialDemo.cpp similarity index 100% rename from ObsoleteDemos/MultiMaterialDemo/MultiMaterialDemo.cpp rename to Demos/MultiMaterialDemo/MultiMaterialDemo.cpp diff --git a/ObsoleteDemos/MultiMaterialDemo/MultiMaterialDemo.h b/Demos/MultiMaterialDemo/MultiMaterialDemo.h similarity index 100% rename from ObsoleteDemos/MultiMaterialDemo/MultiMaterialDemo.h rename to Demos/MultiMaterialDemo/MultiMaterialDemo.h diff --git a/ObsoleteDemos/MultiMaterialDemo/main.cpp b/Demos/MultiMaterialDemo/main.cpp similarity index 100% rename from ObsoleteDemos/MultiMaterialDemo/main.cpp rename to Demos/MultiMaterialDemo/main.cpp diff --git a/ObsoleteDemos/MultiThreadedDemo/CMakeLists.txt b/Demos/MultiThreadedDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/MultiThreadedDemo/CMakeLists.txt rename to Demos/MultiThreadedDemo/CMakeLists.txt diff --git a/ObsoleteDemos/MultiThreadedDemo/Makefile.am b/Demos/MultiThreadedDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/MultiThreadedDemo/Makefile.am rename to Demos/MultiThreadedDemo/Makefile.am diff --git a/ObsoleteDemos/MultiThreadedDemo/MultiThreadedDemo.cpp b/Demos/MultiThreadedDemo/MultiThreadedDemo.cpp similarity index 100% rename from ObsoleteDemos/MultiThreadedDemo/MultiThreadedDemo.cpp rename to Demos/MultiThreadedDemo/MultiThreadedDemo.cpp diff --git a/ObsoleteDemos/MultiThreadedDemo/MultiThreadedDemo.h b/Demos/MultiThreadedDemo/MultiThreadedDemo.h similarity index 100% rename from ObsoleteDemos/MultiThreadedDemo/MultiThreadedDemo.h rename to Demos/MultiThreadedDemo/MultiThreadedDemo.h diff --git a/ObsoleteDemos/MultiThreadedDemo/main.cpp b/Demos/MultiThreadedDemo/main.cpp similarity index 100% rename from ObsoleteDemos/MultiThreadedDemo/main.cpp rename to Demos/MultiThreadedDemo/main.cpp diff --git a/ObsoleteDemos/NativeClient/bin_html/bind.js b/Demos/NativeClient/bin_html/bind.js similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/bind.js rename to Demos/NativeClient/bin_html/bind.js diff --git a/ObsoleteDemos/NativeClient/bin_html/dragger.js b/Demos/NativeClient/bin_html/dragger.js similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/dragger.js rename to Demos/NativeClient/bin_html/dragger.js diff --git a/ObsoleteDemos/NativeClient/bin_html/httpd.cmd b/Demos/NativeClient/bin_html/httpd.cmd similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/httpd.cmd rename to Demos/NativeClient/bin_html/httpd.cmd diff --git a/ObsoleteDemos/NativeClient/bin_html/httpd.py b/Demos/NativeClient/bin_html/httpd.py similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/httpd.py rename to Demos/NativeClient/bin_html/httpd.py diff --git a/ObsoleteDemos/NativeClient/bin_html/index.html b/Demos/NativeClient/bin_html/index.html similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/index.html rename to Demos/NativeClient/bin_html/index.html diff --git a/ObsoleteDemos/NativeClient/bin_html/trackball.js b/Demos/NativeClient/bin_html/trackball.js similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/trackball.js rename to Demos/NativeClient/bin_html/trackball.js diff --git a/ObsoleteDemos/NativeClient/bin_html/tumbler.js b/Demos/NativeClient/bin_html/tumbler.js similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/tumbler.js rename to Demos/NativeClient/bin_html/tumbler.js diff --git a/ObsoleteDemos/NativeClient/bin_html/tumbler.nmf b/Demos/NativeClient/bin_html/tumbler.nmf similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/tumbler.nmf rename to Demos/NativeClient/bin_html/tumbler.nmf diff --git a/ObsoleteDemos/NativeClient/bin_html/vector3.js b/Demos/NativeClient/bin_html/vector3.js similarity index 100% rename from ObsoleteDemos/NativeClient/bin_html/vector3.js rename to Demos/NativeClient/bin_html/vector3.js diff --git a/ObsoleteDemos/NativeClient/callback.h b/Demos/NativeClient/callback.h similarity index 100% rename from ObsoleteDemos/NativeClient/callback.h rename to Demos/NativeClient/callback.h diff --git a/ObsoleteDemos/NativeClient/cube.cc b/Demos/NativeClient/cube.cc similarity index 100% rename from ObsoleteDemos/NativeClient/cube.cc rename to Demos/NativeClient/cube.cc diff --git a/ObsoleteDemos/NativeClient/cube.h b/Demos/NativeClient/cube.h similarity index 100% rename from ObsoleteDemos/NativeClient/cube.h rename to Demos/NativeClient/cube.h diff --git a/ObsoleteDemos/NativeClient/opengl_context.cc b/Demos/NativeClient/opengl_context.cc similarity index 100% rename from ObsoleteDemos/NativeClient/opengl_context.cc rename to Demos/NativeClient/opengl_context.cc diff --git a/ObsoleteDemos/NativeClient/opengl_context.h b/Demos/NativeClient/opengl_context.h similarity index 100% rename from ObsoleteDemos/NativeClient/opengl_context.h rename to Demos/NativeClient/opengl_context.h diff --git a/ObsoleteDemos/NativeClient/opengl_context_ptrs.h b/Demos/NativeClient/opengl_context_ptrs.h similarity index 100% rename from ObsoleteDemos/NativeClient/opengl_context_ptrs.h rename to Demos/NativeClient/opengl_context_ptrs.h diff --git a/ObsoleteDemos/NativeClient/premake4.lua b/Demos/NativeClient/premake4.lua similarity index 100% rename from ObsoleteDemos/NativeClient/premake4.lua rename to Demos/NativeClient/premake4.lua diff --git a/ObsoleteDemos/NativeClient/scripting_bridge.cc b/Demos/NativeClient/scripting_bridge.cc similarity index 100% rename from ObsoleteDemos/NativeClient/scripting_bridge.cc rename to Demos/NativeClient/scripting_bridge.cc diff --git a/ObsoleteDemos/NativeClient/scripting_bridge.h b/Demos/NativeClient/scripting_bridge.h similarity index 100% rename from ObsoleteDemos/NativeClient/scripting_bridge.h rename to Demos/NativeClient/scripting_bridge.h diff --git a/ObsoleteDemos/NativeClient/shader_util.cc b/Demos/NativeClient/shader_util.cc similarity index 100% rename from ObsoleteDemos/NativeClient/shader_util.cc rename to Demos/NativeClient/shader_util.cc diff --git a/ObsoleteDemos/NativeClient/shader_util.h b/Demos/NativeClient/shader_util.h similarity index 100% rename from ObsoleteDemos/NativeClient/shader_util.h rename to Demos/NativeClient/shader_util.h diff --git a/ObsoleteDemos/NativeClient/transforms.cc b/Demos/NativeClient/transforms.cc similarity index 100% rename from ObsoleteDemos/NativeClient/transforms.cc rename to Demos/NativeClient/transforms.cc diff --git a/ObsoleteDemos/NativeClient/transforms.h b/Demos/NativeClient/transforms.h similarity index 100% rename from ObsoleteDemos/NativeClient/transforms.h rename to Demos/NativeClient/transforms.h diff --git a/ObsoleteDemos/NativeClient/tumbler.cc b/Demos/NativeClient/tumbler.cc similarity index 100% rename from ObsoleteDemos/NativeClient/tumbler.cc rename to Demos/NativeClient/tumbler.cc diff --git a/ObsoleteDemos/NativeClient/tumbler.h b/Demos/NativeClient/tumbler.h similarity index 100% rename from ObsoleteDemos/NativeClient/tumbler.h rename to Demos/NativeClient/tumbler.h diff --git a/ObsoleteDemos/NativeClient/tumbler_module.cc b/Demos/NativeClient/tumbler_module.cc similarity index 100% rename from ObsoleteDemos/NativeClient/tumbler_module.cc rename to Demos/NativeClient/tumbler_module.cc diff --git a/ObsoleteDemos/OpenGL/CMakeLists.txt b/Demos/OpenGL/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/OpenGL/CMakeLists.txt rename to Demos/OpenGL/CMakeLists.txt diff --git a/ObsoleteDemos/OpenGL/CommandLineArguments.h b/Demos/OpenGL/CommandLineArguments.h similarity index 100% rename from ObsoleteDemos/OpenGL/CommandLineArguments.h rename to Demos/OpenGL/CommandLineArguments.h diff --git a/ObsoleteDemos/OpenGL/DebugCastResult.h b/Demos/OpenGL/DebugCastResult.h similarity index 100% rename from ObsoleteDemos/OpenGL/DebugCastResult.h rename to Demos/OpenGL/DebugCastResult.h diff --git a/ObsoleteDemos/OpenGL/DemoApplication.cpp b/Demos/OpenGL/DemoApplication.cpp similarity index 97% rename from ObsoleteDemos/OpenGL/DemoApplication.cpp rename to Demos/OpenGL/DemoApplication.cpp index 3baaca44c..e373a08e3 100644 --- a/ObsoleteDemos/OpenGL/DemoApplication.cpp +++ b/Demos/OpenGL/DemoApplication.cpp @@ -4,8 +4,8 @@ Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. @@ -43,7 +43,7 @@ btCollisionShape* gShapePtr[maxNumObjects];//1 rigidbody has 1 shape (no re-use extern int gNumClampedCcdMotions; -#ifdef SHOW_NUM_DEEP_PENETRATIONS +#ifdef SHOW_NUM_DEEP_PENETRATIONS extern int gNumDeepPenetrationChecks; extern int gNumSplitImpulseRecoveries; @@ -75,7 +75,7 @@ m_scaleBottom(0.5f), m_scaleFactor(2.f), m_cameraUp(0,1,0), m_forwardAxis(2), -m_zoomStepSize(0.4), +m_zoomStepSize(0.4), m_glutScreenWidth(0), m_glutScreenHeight(0), m_frustumZNear(1.f), @@ -220,20 +220,20 @@ void DemoApplication::updateCamera() { aspect = m_glutScreenWidth / (btScalar)m_glutScreenHeight; extents.setValue(aspect * 1.0f, 1.0f,0); - - + + if (m_ortho) { // reset matrix glLoadIdentity(); - - + + extents *= m_cameraDistance; btVector3 lower = m_cameraTargetPosition - extents; btVector3 upper = m_cameraTargetPosition + extents; //gluOrtho2D(lower.x, upper.x, lower.y, upper.y); glOrtho(lower.getX(), upper.getX(), lower.getY(), upper.getY(),-1000,1000); - + glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //glTranslatef(100,210,0); @@ -243,8 +243,8 @@ void DemoApplication::updateCamera() { glFrustum (-aspect * m_frustumZNear, aspect * m_frustumZNear, -m_frustumZNear, m_frustumZNear, m_frustumZNear, m_frustumZFar); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(m_cameraPosition[0], m_cameraPosition[1], m_cameraPosition[2], - m_cameraTargetPosition[0], m_cameraTargetPosition[1], m_cameraTargetPosition[2], + gluLookAt(m_cameraPosition[0], m_cameraPosition[1], m_cameraPosition[2], + m_cameraTargetPosition[0], m_cameraTargetPosition[1], m_cameraTargetPosition[2], m_cameraUp.getX(),m_cameraUp.getY(),m_cameraUp.getZ()); } @@ -254,32 +254,32 @@ void DemoApplication::updateCamera() { const float STEPSIZE = 5; -void DemoApplication::stepLeft() -{ - m_azi -= STEPSIZE; if (m_azi < 0) m_azi += 360; updateCamera(); +void DemoApplication::stepLeft() +{ + m_azi -= STEPSIZE; if (m_azi < 0) m_azi += 360; updateCamera(); } -void DemoApplication::stepRight() -{ - m_azi += STEPSIZE; if (m_azi >= 360) m_azi -= 360; updateCamera(); +void DemoApplication::stepRight() +{ + m_azi += STEPSIZE; if (m_azi >= 360) m_azi -= 360; updateCamera(); } -void DemoApplication::stepFront() -{ - m_ele += STEPSIZE; if (m_ele >= 360) m_ele -= 360; updateCamera(); +void DemoApplication::stepFront() +{ + m_ele += STEPSIZE; if (m_ele >= 360) m_ele -= 360; updateCamera(); } -void DemoApplication::stepBack() -{ - m_ele -= STEPSIZE; if (m_ele < 0) m_ele += 360; updateCamera(); +void DemoApplication::stepBack() +{ + m_ele -= STEPSIZE; if (m_ele < 0) m_ele += 360; updateCamera(); } -void DemoApplication::zoomIn() -{ - m_cameraDistance -= btScalar(m_zoomStepSize); updateCamera(); +void DemoApplication::zoomIn() +{ + m_cameraDistance -= btScalar(m_zoomStepSize); updateCamera(); if (m_cameraDistance < btScalar(0.1)) m_cameraDistance = btScalar(0.1); } -void DemoApplication::zoomOut() -{ - m_cameraDistance += btScalar(m_zoomStepSize); updateCamera(); +void DemoApplication::zoomOut() +{ + m_cameraDistance += btScalar(m_zoomStepSize); updateCamera(); } @@ -292,7 +292,7 @@ void DemoApplication::zoomOut() -void DemoApplication::reshape(int w, int h) +void DemoApplication::reshape(int w, int h) { GLDebugResetFont(w,h); @@ -324,7 +324,7 @@ void DemoApplication::keyboardCallback(unsigned char key, int x, int y) } #endif //BT_NO_PROFILE - switch (key) + switch (key) { case 8: { @@ -337,7 +337,7 @@ void DemoApplication::keyboardCallback(unsigned char key, int x, int y) btRigidBody* body = btRigidBody::upcast(obj); if (body && body->getMotionState()) { - delete body->getMotionState(); + delete body->getMotionState(); } delete obj; @@ -345,7 +345,7 @@ void DemoApplication::keyboardCallback(unsigned char key, int x, int y) } break; } - case 'q' : + case 'q' : #ifdef BT_USE_FREEGLUT //return from glutMainLoop(), detect memory leaks etc. glutLeaveMainLoop(); @@ -418,44 +418,44 @@ void DemoApplication::keyboardCallback(unsigned char key, int x, int y) m_debugMode |= btIDebugDraw::DBG_DrawNormals; break; - case 't' : + case 't' : if (m_debugMode & btIDebugDraw::DBG_DrawText) m_debugMode = m_debugMode & (~btIDebugDraw::DBG_DrawText); else m_debugMode |= btIDebugDraw::DBG_DrawText; break; - case 'y': + case 'y': if (m_debugMode & btIDebugDraw::DBG_DrawFeaturesText) m_debugMode = m_debugMode & (~btIDebugDraw::DBG_DrawFeaturesText); else m_debugMode |= btIDebugDraw::DBG_DrawFeaturesText; break; - case 'a': + case 'a': if (m_debugMode & btIDebugDraw::DBG_DrawAabb) m_debugMode = m_debugMode & (~btIDebugDraw::DBG_DrawAabb); else m_debugMode |= btIDebugDraw::DBG_DrawAabb; break; - case 'c' : + case 'c' : if (m_debugMode & btIDebugDraw::DBG_DrawContactPoints) m_debugMode = m_debugMode & (~btIDebugDraw::DBG_DrawContactPoints); else m_debugMode |= btIDebugDraw::DBG_DrawContactPoints; break; - case 'C' : + case 'C' : if (m_debugMode & btIDebugDraw::DBG_DrawConstraints) m_debugMode = m_debugMode & (~btIDebugDraw::DBG_DrawConstraints); else m_debugMode |= btIDebugDraw::DBG_DrawConstraints; break; - case 'L' : + case 'L' : if (m_debugMode & btIDebugDraw::DBG_DrawConstraintLimits) m_debugMode = m_debugMode & (~btIDebugDraw::DBG_DrawConstraintLimits); else m_debugMode |= btIDebugDraw::DBG_DrawConstraintLimits; break; - case 'd' : + case 'd' : if (m_debugMode & btIDebugDraw::DBG_NoDeactivation) m_debugMode = m_debugMode & (~btIDebugDraw::DBG_NoDeactivation); else @@ -516,7 +516,7 @@ void DemoApplication::keyboardCallback(unsigned char key, int x, int y) if (getDynamicsWorld() && getDynamicsWorld()->getDebugDrawer()) getDynamicsWorld()->getDebugDrawer()->setDebugMode(m_debugMode); - + } @@ -589,7 +589,7 @@ void DemoApplication::shootBox(const btVector3& destination) // printf("shootBox uid=%d\n", body->getBroadphaseHandle()->getUid()); // printf("camPos=%f,%f,%f\n",camPos.getX(),camPos.getY(),camPos.getZ()); // printf("destination=%f,%f,%f\n",destination.getX(),destination.getY(),destination.getZ()); - + } } @@ -604,7 +604,7 @@ btRigidBody* pickedBody = 0;//for deactivation state btVector3 DemoApplication::getRayTo(int x,int y) { - + if (m_ortho) { @@ -613,14 +613,14 @@ btVector3 DemoApplication::getRayTo(int x,int y) btVector3 extents; aspect = m_glutScreenWidth / (btScalar)m_glutScreenHeight; extents.setValue(aspect * 1.0f, 1.0f,0); - + extents *= m_cameraDistance; btVector3 lower = m_cameraTargetPosition - extents; btVector3 upper = m_cameraTargetPosition + extents; btScalar u = x / btScalar(m_glutScreenWidth); btScalar v = (m_glutScreenHeight - y) / btScalar(m_glutScreenHeight); - + btVector3 p(0,0,0); p.setValue((1.0f - u) * lower.getX() + u * upper.getX(),(1.0f - v) * lower.getY() + v * upper.getY(),m_cameraTargetPosition.getZ()); return p; @@ -654,9 +654,9 @@ btVector3 DemoApplication::getRayTo(int x,int y) vertical *= 2.f * farPlane * tanfov; btScalar aspect; - + aspect = m_glutScreenWidth / (btScalar)m_glutScreenHeight; - + hor*=aspect; @@ -676,7 +676,7 @@ btScalar mousePickClamping = 30.f; void DemoApplication::mouseFunc(int button, int state, int x, int y) { - if (state == 0) + if (state == 0) { m_mouseButtons |= 1<rayTest(rayFrom,rayTo,rayCallback); if (rayCallback.hasHit()) { btVector3 pickPos = rayCallback.m_hitPointWorld; - + pickObject(pickPos, rayCallback.m_collisionObject); - + gOldPickingPos = rayTo; gHitPos = pickPos; @@ -801,7 +801,7 @@ void DemoApplication::mouseFunc(int button, int state, int x, int y) void DemoApplication::pickObject(const btVector3& pickPos, const btCollisionObject* hitObj) { - + btRigidBody* body = (btRigidBody*)btRigidBody::upcast(hitObj); if (body) { @@ -860,15 +860,15 @@ void DemoApplication::pickObject(const btVector3& pickPos, const btCollisionObje p2p->setParam(BT_CONSTRAINT_ERP,0.1,1); p2p->setParam(BT_CONSTRAINT_ERP,0.1,2); */ - + } - + //save mouse position for dragging - + } } - + } void DemoApplication::removePickingConstraint() @@ -979,21 +979,21 @@ void DemoApplication::mouseMotionFunc(int x,int y) if(m_mouseButtons & (2 << 2) && m_mouseButtons & 1) { } - else if(m_mouseButtons & 1) + else if(m_mouseButtons & 1) { m_azi += dx * btScalar(0.2); m_azi = fmodf(m_azi, btScalar(360.f)); m_ele += dy * btScalar(0.2); m_ele = fmodf(m_ele, btScalar(180.f)); - } - else if(m_mouseButtons & 4) + } + else if(m_mouseButtons & 4) { m_cameraDistance -= dy * btScalar(0.02f); if (m_cameraDistancesetContactProcessingThreshold(m_defaultContactProcessingThreshold); #else - btRigidBody* body = new btRigidBody(mass,0,shape,localInertia); + btRigidBody* body = new btRigidBody(mass,0,shape,localInertia); body->setWorldTransform(startTransform); #endif// @@ -1039,13 +1039,13 @@ btRigidBody* DemoApplication::localCreateRigidBody(float mass, const btTransform } //See http://www.lighthouse3d.com/opengl/glut/index.php?bmpfontortho -void DemoApplication::setOrthographicProjection() +void DemoApplication::setOrthographicProjection() { // switch to projection mode glMatrixMode(GL_PROJECTION); - // save previous matrix which contains the + // save previous matrix which contains the //settings for the perspective projection glPushMatrix(); // reset matrix @@ -1063,7 +1063,7 @@ void DemoApplication::setOrthographicProjection() } -void DemoApplication::resetPerspectiveProjection() +void DemoApplication::resetPerspectiveProjection() { glMatrixMode(GL_PROJECTION); @@ -1189,7 +1189,7 @@ void DemoApplication::renderscene(int pass) wireColor += btVector3 (1.f,0.f,0.f); } else - { + { wireColor += btVector3 (.5f,0.f,0.f); } } @@ -1207,7 +1207,7 @@ void DemoApplication::renderscene(int pass) btVector3 aabbMin(0,0,0),aabbMax(0,0,0); //m_dynamicsWorld->getBroadphase()->getBroadphaseAabb(aabbMin,aabbMax); - + aabbMin-=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); aabbMax+=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); // printf("aabbMin=(%f,%f,%f)\n",aabbMin.getX(),aabbMin.getY(),aabbMin.getZ()); @@ -1235,7 +1235,7 @@ void DemoApplication::renderme() updateCamera(); if (m_dynamicsWorld) - { + { if(m_enableshadows) { glClear(GL_STENCIL_BUFFER_BIT); @@ -1300,7 +1300,7 @@ void DemoApplication::renderme() #ifdef USE_QUICKPROF - + if ( getDebugMode() & btIDebugDraw::DBG_ProfileTimings) { static int counter = 0; @@ -1320,7 +1320,7 @@ void DemoApplication::renderme() #endif //USE_QUICKPROF - + resetPerspectiveProjection(); } @@ -1358,11 +1358,11 @@ void DemoApplication::clientResetScene() m_dynamicsWorld->getConstraint(0)->setEnabled(true); } numObjects = m_dynamicsWorld->getNumCollisionObjects(); - + ///create a copy of the array, not a reference! btCollisionObjectArray copyArray = m_dynamicsWorld->getCollisionObjectArray(); - + for (i=0;ienableTexture(enable)); } bool setShadows(bool enable) { bool p=m_enableshadows;m_enableshadows=enable;return(p); } bool getTexturing() const @@ -145,9 +145,9 @@ public: { return m_debugMode ; } - + void setDebugMode(int mode); - + void setAzi(float azi) { m_azi = azi; @@ -157,7 +157,7 @@ public: { m_ele = ele; } - + void setCameraUp(const btVector3& camUp) { m_cameraUp = camUp; @@ -170,7 +170,7 @@ public: virtual void myinit(); void toggleIdle(); - + virtual void updateCamera(); btVector3 getCameraPosition() @@ -199,9 +199,9 @@ public: } ///glut callbacks - + float getCameraDistance(); - void setCameraDistance(float dist); + void setCameraDistance(float dist); void moveAndDisplay(); virtual void clientMoveAndDisplay() = 0; @@ -217,12 +217,12 @@ public: btRigidBody* localCreateRigidBody(float mass, const btTransform& startTransform,btCollisionShape* shape); - ///callback methods by glut + ///callback methods by glut virtual void keyboardCallback(unsigned char key, int x, int y); - + virtual void keyboardUpCallback(unsigned char key, int x, int y) {} - + virtual void specialKeyboard(int key, int x, int y){} virtual void specialKeyboardUp(int key, int x, int y){} @@ -232,7 +232,7 @@ public: virtual void mouseFunc(int button, int state, int x, int y); virtual void mouseMotionFunc(int x,int y); - + virtual void displayCallback(); virtual void renderme(); diff --git a/ObsoleteDemos/OpenGL/GLDebugDrawer.cpp b/Demos/OpenGL/GLDebugDrawer.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GLDebugDrawer.cpp rename to Demos/OpenGL/GLDebugDrawer.cpp diff --git a/ObsoleteDemos/OpenGL/GLDebugDrawer.h b/Demos/OpenGL/GLDebugDrawer.h similarity index 100% rename from ObsoleteDemos/OpenGL/GLDebugDrawer.h rename to Demos/OpenGL/GLDebugDrawer.h diff --git a/ObsoleteDemos/OpenGL/GLDebugFont.cpp b/Demos/OpenGL/GLDebugFont.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GLDebugFont.cpp rename to Demos/OpenGL/GLDebugFont.cpp diff --git a/ObsoleteDemos/OpenGL/GLDebugFont.h b/Demos/OpenGL/GLDebugFont.h similarity index 100% rename from ObsoleteDemos/OpenGL/GLDebugFont.h rename to Demos/OpenGL/GLDebugFont.h diff --git a/ObsoleteDemos/OpenGL/GL_DialogDynamicsWorld.cpp b/Demos/OpenGL/GL_DialogDynamicsWorld.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GL_DialogDynamicsWorld.cpp rename to Demos/OpenGL/GL_DialogDynamicsWorld.cpp diff --git a/ObsoleteDemos/OpenGL/GL_DialogDynamicsWorld.h b/Demos/OpenGL/GL_DialogDynamicsWorld.h similarity index 100% rename from ObsoleteDemos/OpenGL/GL_DialogDynamicsWorld.h rename to Demos/OpenGL/GL_DialogDynamicsWorld.h diff --git a/ObsoleteDemos/OpenGL/GL_DialogWindow.cpp b/Demos/OpenGL/GL_DialogWindow.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GL_DialogWindow.cpp rename to Demos/OpenGL/GL_DialogWindow.cpp diff --git a/ObsoleteDemos/OpenGL/GL_DialogWindow.h b/Demos/OpenGL/GL_DialogWindow.h similarity index 100% rename from ObsoleteDemos/OpenGL/GL_DialogWindow.h rename to Demos/OpenGL/GL_DialogWindow.h diff --git a/ObsoleteDemos/OpenGL/GL_ShapeDrawer.cpp b/Demos/OpenGL/GL_ShapeDrawer.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GL_ShapeDrawer.cpp rename to Demos/OpenGL/GL_ShapeDrawer.cpp diff --git a/ObsoleteDemos/OpenGL/GL_ShapeDrawer.h b/Demos/OpenGL/GL_ShapeDrawer.h similarity index 100% rename from ObsoleteDemos/OpenGL/GL_ShapeDrawer.h rename to Demos/OpenGL/GL_ShapeDrawer.h diff --git a/ObsoleteDemos/OpenGL/GL_Simplex1to4.cpp b/Demos/OpenGL/GL_Simplex1to4.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GL_Simplex1to4.cpp rename to Demos/OpenGL/GL_Simplex1to4.cpp diff --git a/ObsoleteDemos/OpenGL/GL_Simplex1to4.h b/Demos/OpenGL/GL_Simplex1to4.h similarity index 100% rename from ObsoleteDemos/OpenGL/GL_Simplex1to4.h rename to Demos/OpenGL/GL_Simplex1to4.h diff --git a/ObsoleteDemos/OpenGL/GlutDemoApplication.cpp b/Demos/OpenGL/GlutDemoApplication.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GlutDemoApplication.cpp rename to Demos/OpenGL/GlutDemoApplication.cpp diff --git a/ObsoleteDemos/OpenGL/GlutDemoApplication.h b/Demos/OpenGL/GlutDemoApplication.h similarity index 100% rename from ObsoleteDemos/OpenGL/GlutDemoApplication.h rename to Demos/OpenGL/GlutDemoApplication.h diff --git a/ObsoleteDemos/OpenGL/GlutStuff.cpp b/Demos/OpenGL/GlutStuff.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/GlutStuff.cpp rename to Demos/OpenGL/GlutStuff.cpp diff --git a/ObsoleteDemos/OpenGL/GlutStuff.h b/Demos/OpenGL/GlutStuff.h similarity index 100% rename from ObsoleteDemos/OpenGL/GlutStuff.h rename to Demos/OpenGL/GlutStuff.h diff --git a/ObsoleteDemos/OpenGL/Makefile.am b/Demos/OpenGL/Makefile.am similarity index 100% rename from ObsoleteDemos/OpenGL/Makefile.am rename to Demos/OpenGL/Makefile.am diff --git a/ObsoleteDemos/OpenGL/RenderTexture.cpp b/Demos/OpenGL/RenderTexture.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/RenderTexture.cpp rename to Demos/OpenGL/RenderTexture.cpp diff --git a/ObsoleteDemos/OpenGL/RenderTexture.h b/Demos/OpenGL/RenderTexture.h similarity index 100% rename from ObsoleteDemos/OpenGL/RenderTexture.h rename to Demos/OpenGL/RenderTexture.h diff --git a/ObsoleteDemos/OpenGL/Win32AppMain.cpp b/Demos/OpenGL/Win32AppMain.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/Win32AppMain.cpp rename to Demos/OpenGL/Win32AppMain.cpp diff --git a/ObsoleteDemos/OpenGL/Win32DemoApplication.cpp b/Demos/OpenGL/Win32DemoApplication.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/Win32DemoApplication.cpp rename to Demos/OpenGL/Win32DemoApplication.cpp diff --git a/ObsoleteDemos/OpenGL/Win32DemoApplication.h b/Demos/OpenGL/Win32DemoApplication.h similarity index 100% rename from ObsoleteDemos/OpenGL/Win32DemoApplication.h rename to Demos/OpenGL/Win32DemoApplication.h diff --git a/ObsoleteDemos/OpenGL/premake4.lua b/Demos/OpenGL/premake4.lua similarity index 100% rename from ObsoleteDemos/OpenGL/premake4.lua rename to Demos/OpenGL/premake4.lua diff --git a/ObsoleteDemos/OpenGL/stb_image.cpp b/Demos/OpenGL/stb_image.cpp similarity index 100% rename from ObsoleteDemos/OpenGL/stb_image.cpp rename to Demos/OpenGL/stb_image.cpp diff --git a/ObsoleteDemos/OpenGL/stb_image.h b/Demos/OpenGL/stb_image.h similarity index 100% rename from ObsoleteDemos/OpenGL/stb_image.h rename to Demos/OpenGL/stb_image.h diff --git a/ObsoleteDemos/OpenPL_Demo/CApi.cpp b/Demos/OpenPL_Demo/CApi.cpp similarity index 100% rename from ObsoleteDemos/OpenPL_Demo/CApi.cpp rename to Demos/OpenPL_Demo/CApi.cpp diff --git a/ObsoleteDemos/OpenPL_Demo/OpenPL_Demo.c b/Demos/OpenPL_Demo/OpenPL_Demo.c similarity index 100% rename from ObsoleteDemos/OpenPL_Demo/OpenPL_Demo.c rename to Demos/OpenPL_Demo/OpenPL_Demo.c diff --git a/ObsoleteDemos/RagdollDemo/CMakeLists.txt b/Demos/RagdollDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/RagdollDemo/CMakeLists.txt rename to Demos/RagdollDemo/CMakeLists.txt diff --git a/ObsoleteDemos/RagdollDemo/RagdollDemo.cpp b/Demos/RagdollDemo/RagdollDemo.cpp similarity index 100% rename from ObsoleteDemos/RagdollDemo/RagdollDemo.cpp rename to Demos/RagdollDemo/RagdollDemo.cpp diff --git a/ObsoleteDemos/RagdollDemo/RagdollDemo.h b/Demos/RagdollDemo/RagdollDemo.h similarity index 100% rename from ObsoleteDemos/RagdollDemo/RagdollDemo.h rename to Demos/RagdollDemo/RagdollDemo.h diff --git a/ObsoleteDemos/RagdollDemo/main.cpp b/Demos/RagdollDemo/main.cpp similarity index 100% rename from ObsoleteDemos/RagdollDemo/main.cpp rename to Demos/RagdollDemo/main.cpp diff --git a/ObsoleteDemos/RaytestDemo/CMakeLists.txt b/Demos/RaytestDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/RaytestDemo/CMakeLists.txt rename to Demos/RaytestDemo/CMakeLists.txt diff --git a/ObsoleteDemos/RaytestDemo/Makefile.am b/Demos/RaytestDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/RaytestDemo/Makefile.am rename to Demos/RaytestDemo/Makefile.am diff --git a/ObsoleteDemos/RaytestDemo/RaytestDemo.cpp b/Demos/RaytestDemo/RaytestDemo.cpp similarity index 100% rename from ObsoleteDemos/RaytestDemo/RaytestDemo.cpp rename to Demos/RaytestDemo/RaytestDemo.cpp diff --git a/ObsoleteDemos/RaytestDemo/RaytestDemo.h b/Demos/RaytestDemo/RaytestDemo.h similarity index 100% rename from ObsoleteDemos/RaytestDemo/RaytestDemo.h rename to Demos/RaytestDemo/RaytestDemo.h diff --git a/ObsoleteDemos/RaytestDemo/Win32RaytestDemo.cpp b/Demos/RaytestDemo/Win32RaytestDemo.cpp similarity index 100% rename from ObsoleteDemos/RaytestDemo/Win32RaytestDemo.cpp rename to Demos/RaytestDemo/Win32RaytestDemo.cpp diff --git a/ObsoleteDemos/RaytestDemo/main.cpp b/Demos/RaytestDemo/main.cpp similarity index 100% rename from ObsoleteDemos/RaytestDemo/main.cpp rename to Demos/RaytestDemo/main.cpp diff --git a/ObsoleteDemos/Raytracer/CMakeLists.txt b/Demos/Raytracer/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/Raytracer/CMakeLists.txt rename to Demos/Raytracer/CMakeLists.txt diff --git a/ObsoleteDemos/Raytracer/Raytracer.cpp b/Demos/Raytracer/Raytracer.cpp similarity index 100% rename from ObsoleteDemos/Raytracer/Raytracer.cpp rename to Demos/Raytracer/Raytracer.cpp diff --git a/ObsoleteDemos/Raytracer/Raytracer.h b/Demos/Raytracer/Raytracer.h similarity index 100% rename from ObsoleteDemos/Raytracer/Raytracer.h rename to Demos/Raytracer/Raytracer.h diff --git a/ObsoleteDemos/Raytracer/main.cpp b/Demos/Raytracer/main.cpp similarity index 100% rename from ObsoleteDemos/Raytracer/main.cpp rename to Demos/Raytracer/main.cpp diff --git a/ObsoleteDemos/RollingFrictionDemo/CMakeLists.txt b/Demos/RollingFrictionDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/RollingFrictionDemo/CMakeLists.txt rename to Demos/RollingFrictionDemo/CMakeLists.txt diff --git a/ObsoleteDemos/RollingFrictionDemo/Makefile.am b/Demos/RollingFrictionDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/RollingFrictionDemo/Makefile.am rename to Demos/RollingFrictionDemo/Makefile.am diff --git a/ObsoleteDemos/RollingFrictionDemo/RollingFrictionDemo.cpp b/Demos/RollingFrictionDemo/RollingFrictionDemo.cpp similarity index 100% rename from ObsoleteDemos/RollingFrictionDemo/RollingFrictionDemo.cpp rename to Demos/RollingFrictionDemo/RollingFrictionDemo.cpp diff --git a/ObsoleteDemos/RollingFrictionDemo/RollingFrictionDemo.h b/Demos/RollingFrictionDemo/RollingFrictionDemo.h similarity index 100% rename from ObsoleteDemos/RollingFrictionDemo/RollingFrictionDemo.h rename to Demos/RollingFrictionDemo/RollingFrictionDemo.h diff --git a/ObsoleteDemos/RollingFrictionDemo/Win32RollingFrictionDemo.cpp b/Demos/RollingFrictionDemo/Win32RollingFrictionDemo.cpp similarity index 100% rename from ObsoleteDemos/RollingFrictionDemo/Win32RollingFrictionDemo.cpp rename to Demos/RollingFrictionDemo/Win32RollingFrictionDemo.cpp diff --git a/ObsoleteDemos/RollingFrictionDemo/main.cpp b/Demos/RollingFrictionDemo/main.cpp similarity index 100% rename from ObsoleteDemos/RollingFrictionDemo/main.cpp rename to Demos/RollingFrictionDemo/main.cpp diff --git a/ObsoleteDemos/SerializeDemo/AMD/CMakeLists.txt b/Demos/SerializeDemo/AMD/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/SerializeDemo/AMD/CMakeLists.txt rename to Demos/SerializeDemo/AMD/CMakeLists.txt diff --git a/ObsoleteDemos/SerializeDemo/AMD/premake4.lua b/Demos/SerializeDemo/AMD/premake4.lua similarity index 100% rename from ObsoleteDemos/SerializeDemo/AMD/premake4.lua rename to Demos/SerializeDemo/AMD/premake4.lua diff --git a/ObsoleteDemos/SerializeDemo/CMakeLists.txt b/Demos/SerializeDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/SerializeDemo/CMakeLists.txt rename to Demos/SerializeDemo/CMakeLists.txt diff --git a/ObsoleteDemos/SerializeDemo/SerializeDemo.cpp b/Demos/SerializeDemo/SerializeDemo.cpp similarity index 96% rename from ObsoleteDemos/SerializeDemo/SerializeDemo.cpp rename to Demos/SerializeDemo/SerializeDemo.cpp index f98f1227d..d6deddf78 100644 --- a/ObsoleteDemos/SerializeDemo/SerializeDemo.cpp +++ b/Demos/SerializeDemo/SerializeDemo.cpp @@ -4,8 +4,8 @@ Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. @@ -95,7 +95,7 @@ void SerializeDemo::keyboardCallback(unsigned char key, int x, int y) } if (minDist>0.) continue; - + btCollisionObject* colObj0 = (btCollisionObject*)manifold->getBody0(); btCollisionObject* colObj1 = (btCollisionObject*)manifold->getBody1(); // int tag0 = (colObj0)->getIslandTag(); @@ -133,13 +133,13 @@ void SerializeDemo::keyboardCallback(unsigned char key, int x, int y) for (int i=0;i<6;i++) dof6->setLimit(i,0,0); getDynamicsWorld()->addConstraint(dof6,true); - + } } } } - - } + + } for (int i=0;istepSimulation(ms / 1000000.f); - + #ifdef DESERIALIZE_SOFT_BODIES if (fSoftBodySolver) fSoftBodySolver->copyBackToSoftBodies(); @@ -192,8 +192,8 @@ void SerializeDemo::clientMoveAndDisplay() #endif //DESERIALIZE_SOFT_BODIES } - - renderme(); + + renderme(); glFlush(); @@ -209,7 +209,7 @@ class CachingCLFuncs : public CLFunctions public: - CachingCLFuncs (cl_command_queue cqCommandQue, cl_context cxMainContext, cl_device_id device) + CachingCLFuncs (cl_command_queue cqCommandQue, cl_context cxMainContext, cl_device_id device) :CLFunctions(cqCommandQue,cxMainContext), m_device(device) { @@ -220,14 +220,14 @@ class CachingCLFuncs : public CLFunctions cl_int pErrNum; cl_program prog; - + prog = btOpenCLUtils::compileCLProgramFromFile( m_cxMainContext,m_device, &pErrNum,additionalMacros ,srcFileNameForCaching); if (!prog) { printf("Using embedded kernel source instead:\n"); prog = btOpenCLUtils::compileCLProgramFromString( m_cxMainContext,m_device, kernelSource, &pErrNum,additionalMacros); } - + return btOpenCLUtils::compileCLKernelFromString( m_cxMainContext,m_device, kernelSource, kernelName, &pErrNum, prog,additionalMacros); } @@ -237,8 +237,8 @@ class CachingCLFuncs : public CLFunctions void SerializeDemo::displayCallback(void) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + if (m_dynamicsWorld->getWorldType()==BT_SOFT_RIGID_DYNAMICS_WORLD) { #ifdef DESERIALIZE_SOFT_BODIES @@ -293,7 +293,7 @@ void SerializeDemo::setupEmptyDynamicsWorld() btGImpactCollisionAlgorithm::registerAlgorithm(m_dispatcher); m_broadphase = new btDbvtBroadphase(); - + ///the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded) btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver; @@ -301,7 +301,7 @@ void SerializeDemo::setupEmptyDynamicsWorld() #ifdef DESERIALIZE_SOFT_BODIES - + #ifdef USE_AMD_OPENCL @@ -309,16 +309,16 @@ void SerializeDemo::setupEmptyDynamicsWorld() if ( 1 ) { switch (solverAccel) - { + { case kSolverAccelerationOpenCL_GPU: { btOpenCLSoftBodySolverSIMDAware* softSolv= new btOpenCLSoftBodySolverSIMDAware( g_cqCommandQue, g_cxMainContext ); //btOpenCLSoftBodySolver* softSolv= new btOpenCLSoftBodySolver( g_cqCommandQue, g_cxMainContext); fSoftBodySolver = softSolv; - + CLFunctions* funcs = new CachingCLFuncs(g_cqCommandQue, g_cxMainContext,g_cdDevice); softSolv->setCLFunctions(funcs); - + break; } @@ -334,21 +334,21 @@ void SerializeDemo::setupEmptyDynamicsWorld() } }; } - else + else { - if ( solverAccel != kSolverAccelerationNone ) + if ( solverAccel != kSolverAccelerationNone ) { } - else + else { } fSoftBodySolver = NULL; } #else - + fSoftBodySolver = NULL; #endif - + btSoftRigidDynamicsWorld* world = new btSoftRigidDynamicsWorld(m_dispatcher, m_broadphase, m_solver, m_collisionConfiguration, fSoftBodySolver); m_dynamicsWorld = world; @@ -380,7 +380,7 @@ class MySoftBulletWorldImporter : public btBulletWorldImporter btHashMap m_clusterBodyMap; btHashMap m_softBodyMap; - + public: @@ -394,7 +394,7 @@ public: virtual ~MySoftBulletWorldImporter() { - + } virtual bool convertAllObjects( bParse::btBulletFile* bulletFile2) @@ -413,8 +413,8 @@ public: btSoftBodyFloatData* softBodyData = (btSoftBodyFloatData*)bulletFile2->m_softBodies[i]; int i; int numNodes = softBodyData->m_numNodes; - - + + btSoftBody* psb=new btSoftBody(&m_softRigidWorld->getWorldInfo()); m_softBodyMap.insert(softBodyData,psb); @@ -462,11 +462,11 @@ public: { printf("no mat?\n"); } - + node->m_n.deSerializeFloat(nodeData.m_normal); node->m_q = node->m_x; node->m_v.deSerializeFloat(nodeData.m_velocity); - + } for (i=0;im_numLinks;i++) @@ -501,7 +501,7 @@ public: face->m_ra = faceData.m_restArea; } - + //anchors for (i=0;im_numAnchors;i++) @@ -526,7 +526,7 @@ public: psb->m_pose.m_bframe = (softBodyData->m_pose->m_bframe!=0); psb->m_pose.m_bvolume = (softBodyData->m_pose->m_bvolume!=0); psb->m_pose.m_com.deSerializeFloat(softBodyData->m_pose->m_com); - + psb->m_pose.m_pos.resize(softBodyData->m_pose->m_numPositions); for (i=0;im_pose->m_numPositions;i++) { @@ -547,7 +547,7 @@ public: psb->m_cfg.diterations=softBodyData->m_config.m_driftIterations; psb->m_cfg.citerations=softBodyData->m_config.m_clusterIterations; psb->m_cfg.viterations=softBodyData->m_config.m_velocityIterations; - + //psb->setTotalMass(0.1); psb->m_cfg.aeromodel = (btSoftBody::eAeroModel::_)softBodyData->m_config.m_aeroModel; psb->m_cfg.kLF = softBodyData->m_config.m_lift; @@ -619,7 +619,7 @@ public: psb->m_clusters[i]->m_selfCollisionImpulseFactor = softBodyData->m_clusters[i].m_selfCollisionImpulseFactor; psb->m_clusters[i]->m_vimpulses[0].deSerializeFloat(softBodyData->m_clusters[i].m_vimpulses[0]); psb->m_clusters[i]->m_vimpulses[1].deSerializeFloat(softBodyData->m_clusters[i].m_vimpulses[1]); - + } //psb->initializeClusters(); //psb->updateClusters(); @@ -641,7 +641,7 @@ public: psb->updateConstants(); m_softRigidWorld->getWorldInfo().m_dispatcher = m_softRigidWorld->getDispatcher(); - + m_softRigidWorld->addSoftBody(psb); @@ -742,7 +742,7 @@ m_fileName("testFile.bullet") SerializeDemo::~SerializeDemo() { m_fileLoader->deleteAllData(); - delete m_fileLoader; + delete m_fileLoader; exitPhysics(); } @@ -754,18 +754,39 @@ void SerializeDemo::initPhysics() setCameraDistance(btScalar(SCALING*30.)); setupEmptyDynamicsWorld(); - + #ifdef DESERIALIZE_SOFT_BODIES m_fileLoader = new MySoftBulletWorldImporter((btSoftRigidDynamicsWorld*)m_dynamicsWorld); #else m_fileLoader = new btBulletWorldImporter(m_dynamicsWorld); #endif //DESERIALIZE_SOFT_BODIES - + m_fileLoader->setVerboseMode(m_verboseMode); - + + const char* filename = "testFile.bullet"; + + const char* prefix[]={"./","../","../../","../../../","../../../../", "SerializeDemo/", "Demos/SerializeDemo/", + "../Demos/SerializeDemo/","../../Demos/SerializeDemo/"}; + int numPrefixes = sizeof(prefix)/sizeof(const char*); + char relativeFileName[1024]; + bool fileFound = false; + + for (int i=0;iloadFile("testFile.bullet", "testFileSwappedEndianness.bullet")) + + + if (!m_fileLoader->loadFile(relativeFileName, "testFileSwappedEndianness.bullet")) // if (!m_fileLoader->loadFile("../SoftDemo/testFile.bullet")) { ///create a few basic rigid bodies and save them to testFile.bullet @@ -773,7 +794,7 @@ void SerializeDemo::initPhysics() // btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),50); btCollisionObject* groundObject = 0; - + m_collisionShapes.push_back(groundShape); btTransform groundTransform; @@ -846,12 +867,12 @@ void SerializeDemo::initPhysics() btScalar(20+2.0*k + start_y), btScalar(2.0*j + start_z))); - + //using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects btDefaultMotionState* myMotionState = new btDefaultMotionState(startTransform); btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,colShape,localInertia); btRigidBody* body = new btRigidBody(rbInfo); - + m_dynamicsWorld->addRigidBody(body); //body->setActivationState(ISLAND_SLEEPING); } @@ -869,14 +890,14 @@ void SerializeDemo::initPhysics() for (int i=0;iregisterNameForPointer(m_collisionShapes[i],name); } btPoint2PointConstraint* p2p = new btPoint2PointConstraint(*(btRigidBody*)getDynamicsWorld()->getCollisionObjectArray()[2],btVector3(0,1,0)); m_dynamicsWorld->addConstraint(p2p); - + const char* name = "constraintje"; serializer->registerNameForPointer(p2p,name); @@ -892,7 +913,7 @@ void SerializeDemo::initPhysics() //clientResetScene(); } - + void SerializeDemo::exitPhysics() { @@ -931,16 +952,16 @@ void SerializeDemo::exitPhysics() m_collisionShapes.clear(); delete m_dynamicsWorld; - + delete m_solver; - + delete m_broadphase; - + delete m_dispatcher; delete m_collisionConfiguration; - + } diff --git a/ObsoleteDemos/SerializeDemo/SerializeDemo.h b/Demos/SerializeDemo/SerializeDemo.h similarity index 100% rename from ObsoleteDemos/SerializeDemo/SerializeDemo.h rename to Demos/SerializeDemo/SerializeDemo.h diff --git a/ObsoleteDemos/SerializeDemo/Win32SerializeDemo.cpp b/Demos/SerializeDemo/Win32SerializeDemo.cpp similarity index 100% rename from ObsoleteDemos/SerializeDemo/Win32SerializeDemo.cpp rename to Demos/SerializeDemo/Win32SerializeDemo.cpp diff --git a/ObsoleteDemos/SerializeDemo/main.cpp b/Demos/SerializeDemo/main.cpp similarity index 100% rename from ObsoleteDemos/SerializeDemo/main.cpp rename to Demos/SerializeDemo/main.cpp diff --git a/ObsoleteDemos/SerializeDemo/testFile.bullet b/Demos/SerializeDemo/testFile.bullet similarity index 100% rename from ObsoleteDemos/SerializeDemo/testFile.bullet rename to Demos/SerializeDemo/testFile.bullet diff --git a/ObsoleteDemos/SerializeDemo/testFileCloth.bullet b/Demos/SerializeDemo/testFileCloth.bullet similarity index 100% rename from ObsoleteDemos/SerializeDemo/testFileCloth.bullet rename to Demos/SerializeDemo/testFileCloth.bullet diff --git a/ObsoleteDemos/SimplexDemo/CMakeLists.txt b/Demos/SimplexDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/SimplexDemo/CMakeLists.txt rename to Demos/SimplexDemo/CMakeLists.txt diff --git a/ObsoleteDemos/SimplexDemo/SimplexDemo.cpp b/Demos/SimplexDemo/SimplexDemo.cpp similarity index 100% rename from ObsoleteDemos/SimplexDemo/SimplexDemo.cpp rename to Demos/SimplexDemo/SimplexDemo.cpp diff --git a/ObsoleteDemos/SimplexDemo/SimplexDemo.h b/Demos/SimplexDemo/SimplexDemo.h similarity index 100% rename from ObsoleteDemos/SimplexDemo/SimplexDemo.h rename to Demos/SimplexDemo/SimplexDemo.h diff --git a/ObsoleteDemos/SliderConstraintDemo/CMakeLists.txt b/Demos/SliderConstraintDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/SliderConstraintDemo/CMakeLists.txt rename to Demos/SliderConstraintDemo/CMakeLists.txt diff --git a/ObsoleteDemos/SliderConstraintDemo/SliderConstraintDemo.cpp b/Demos/SliderConstraintDemo/SliderConstraintDemo.cpp similarity index 100% rename from ObsoleteDemos/SliderConstraintDemo/SliderConstraintDemo.cpp rename to Demos/SliderConstraintDemo/SliderConstraintDemo.cpp diff --git a/ObsoleteDemos/SliderConstraintDemo/SliderConstraintDemo.h b/Demos/SliderConstraintDemo/SliderConstraintDemo.h similarity index 100% rename from ObsoleteDemos/SliderConstraintDemo/SliderConstraintDemo.h rename to Demos/SliderConstraintDemo/SliderConstraintDemo.h diff --git a/ObsoleteDemos/SliderConstraintDemo/main.cpp b/Demos/SliderConstraintDemo/main.cpp similarity index 100% rename from ObsoleteDemos/SliderConstraintDemo/main.cpp rename to Demos/SliderConstraintDemo/main.cpp diff --git a/ObsoleteDemos/SoftDemo/AMD/premake4.lua b/Demos/SoftDemo/AMD/premake4.lua similarity index 100% rename from ObsoleteDemos/SoftDemo/AMD/premake4.lua rename to Demos/SoftDemo/AMD/premake4.lua diff --git a/ObsoleteDemos/SoftDemo/CMakeLists.txt b/Demos/SoftDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/SoftDemo/CMakeLists.txt rename to Demos/SoftDemo/CMakeLists.txt diff --git a/ObsoleteDemos/SoftDemo/Makefile.am b/Demos/SoftDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/SoftDemo/Makefile.am rename to Demos/SoftDemo/Makefile.am diff --git a/ObsoleteDemos/SoftDemo/SoftDemo.cpp b/Demos/SoftDemo/SoftDemo.cpp similarity index 100% rename from ObsoleteDemos/SoftDemo/SoftDemo.cpp rename to Demos/SoftDemo/SoftDemo.cpp diff --git a/ObsoleteDemos/SoftDemo/SoftDemo.h b/Demos/SoftDemo/SoftDemo.h similarity index 100% rename from ObsoleteDemos/SoftDemo/SoftDemo.h rename to Demos/SoftDemo/SoftDemo.h diff --git a/ObsoleteDemos/SoftDemo/bunny.inl b/Demos/SoftDemo/bunny.inl similarity index 100% rename from ObsoleteDemos/SoftDemo/bunny.inl rename to Demos/SoftDemo/bunny.inl diff --git a/ObsoleteDemos/SoftDemo/cube.inl b/Demos/SoftDemo/cube.inl similarity index 100% rename from ObsoleteDemos/SoftDemo/cube.inl rename to Demos/SoftDemo/cube.inl diff --git a/ObsoleteDemos/SoftDemo/main.cpp b/Demos/SoftDemo/main.cpp similarity index 100% rename from ObsoleteDemos/SoftDemo/main.cpp rename to Demos/SoftDemo/main.cpp diff --git a/ObsoleteDemos/TerrainDemo/Makefile.am b/Demos/TerrainDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/TerrainDemo/Makefile.am rename to Demos/TerrainDemo/Makefile.am diff --git a/ObsoleteDemos/TerrainDemo/TerrainDemo.cpp b/Demos/TerrainDemo/TerrainDemo.cpp similarity index 100% rename from ObsoleteDemos/TerrainDemo/TerrainDemo.cpp rename to Demos/TerrainDemo/TerrainDemo.cpp diff --git a/ObsoleteDemos/TerrainDemo/TerrainDemo.h b/Demos/TerrainDemo/TerrainDemo.h similarity index 100% rename from ObsoleteDemos/TerrainDemo/TerrainDemo.h rename to Demos/TerrainDemo/TerrainDemo.h diff --git a/ObsoleteDemos/TerrainDemo/main.cpp b/Demos/TerrainDemo/main.cpp similarity index 100% rename from ObsoleteDemos/TerrainDemo/main.cpp rename to Demos/TerrainDemo/main.cpp diff --git a/ObsoleteDemos/ThreadingDemo/CMakeLists.txt b/Demos/ThreadingDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/ThreadingDemo/CMakeLists.txt rename to Demos/ThreadingDemo/CMakeLists.txt diff --git a/ObsoleteDemos/ThreadingDemo/main.cpp b/Demos/ThreadingDemo/main.cpp similarity index 100% rename from ObsoleteDemos/ThreadingDemo/main.cpp rename to Demos/ThreadingDemo/main.cpp diff --git a/ObsoleteDemos/UserCollisionAlgorithm/CMakeLists.txt b/Demos/UserCollisionAlgorithm/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/UserCollisionAlgorithm/CMakeLists.txt rename to Demos/UserCollisionAlgorithm/CMakeLists.txt diff --git a/ObsoleteDemos/UserCollisionAlgorithm/UserCollisionAlgorithm.cpp b/Demos/UserCollisionAlgorithm/UserCollisionAlgorithm.cpp similarity index 100% rename from ObsoleteDemos/UserCollisionAlgorithm/UserCollisionAlgorithm.cpp rename to Demos/UserCollisionAlgorithm/UserCollisionAlgorithm.cpp diff --git a/ObsoleteDemos/UserCollisionAlgorithm/UserCollisionAlgorithm.h b/Demos/UserCollisionAlgorithm/UserCollisionAlgorithm.h similarity index 100% rename from ObsoleteDemos/UserCollisionAlgorithm/UserCollisionAlgorithm.h rename to Demos/UserCollisionAlgorithm/UserCollisionAlgorithm.h diff --git a/ObsoleteDemos/VehicleDemo/CMakeLists.txt b/Demos/VehicleDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/VehicleDemo/CMakeLists.txt rename to Demos/VehicleDemo/CMakeLists.txt diff --git a/ObsoleteDemos/VehicleDemo/Makefile.am b/Demos/VehicleDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/VehicleDemo/Makefile.am rename to Demos/VehicleDemo/Makefile.am diff --git a/ObsoleteDemos/VehicleDemo/VehicleDemo.cpp b/Demos/VehicleDemo/VehicleDemo.cpp similarity index 100% rename from ObsoleteDemos/VehicleDemo/VehicleDemo.cpp rename to Demos/VehicleDemo/VehicleDemo.cpp diff --git a/ObsoleteDemos/VehicleDemo/VehicleDemo.h b/Demos/VehicleDemo/VehicleDemo.h similarity index 100% rename from ObsoleteDemos/VehicleDemo/VehicleDemo.h rename to Demos/VehicleDemo/VehicleDemo.h diff --git a/ObsoleteDemos/VehicleDemo/heightfield128x128.cpp b/Demos/VehicleDemo/heightfield128x128.cpp similarity index 100% rename from ObsoleteDemos/VehicleDemo/heightfield128x128.cpp rename to Demos/VehicleDemo/heightfield128x128.cpp diff --git a/ObsoleteDemos/VehicleDemo/main.cpp b/Demos/VehicleDemo/main.cpp similarity index 100% rename from ObsoleteDemos/VehicleDemo/main.cpp rename to Demos/VehicleDemo/main.cpp diff --git a/ObsoleteDemos/VoronoiFractureDemo/CMakeLists.txt b/Demos/VoronoiFractureDemo/CMakeLists.txt similarity index 100% rename from ObsoleteDemos/VoronoiFractureDemo/CMakeLists.txt rename to Demos/VoronoiFractureDemo/CMakeLists.txt diff --git a/ObsoleteDemos/VoronoiFractureDemo/Makefile.am b/Demos/VoronoiFractureDemo/Makefile.am similarity index 100% rename from ObsoleteDemos/VoronoiFractureDemo/Makefile.am rename to Demos/VoronoiFractureDemo/Makefile.am diff --git a/ObsoleteDemos/VoronoiFractureDemo/VoronoiFractureDemo.cpp b/Demos/VoronoiFractureDemo/VoronoiFractureDemo.cpp similarity index 100% rename from ObsoleteDemos/VoronoiFractureDemo/VoronoiFractureDemo.cpp rename to Demos/VoronoiFractureDemo/VoronoiFractureDemo.cpp diff --git a/ObsoleteDemos/VoronoiFractureDemo/VoronoiFractureDemo.h b/Demos/VoronoiFractureDemo/VoronoiFractureDemo.h similarity index 100% rename from ObsoleteDemos/VoronoiFractureDemo/VoronoiFractureDemo.h rename to Demos/VoronoiFractureDemo/VoronoiFractureDemo.h diff --git a/ObsoleteDemos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp b/Demos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp similarity index 100% rename from ObsoleteDemos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp rename to Demos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp diff --git a/ObsoleteDemos/VoronoiFractureDemo/main.cpp b/Demos/VoronoiFractureDemo/main.cpp similarity index 100% rename from ObsoleteDemos/VoronoiFractureDemo/main.cpp rename to Demos/VoronoiFractureDemo/main.cpp diff --git a/ObsoleteDemos/premake4.lua b/Demos/premake4.lua similarity index 100% rename from ObsoleteDemos/premake4.lua rename to Demos/premake4.lua diff --git a/Demos3/CMakeLists.txt b/Demos3/CMakeLists.txt index aaa6a1713..b1f54a968 100644 --- a/Demos3/CMakeLists.txt +++ b/Demos3/CMakeLists.txt @@ -1,2 +1,3 @@ -SUBDIRS( GpuDemos SimpleOpenGL3 AllBullet2Demos ) -#SUBDIRS( SimpleOpenGL3 AllBullet2Demos ) +if (BUILD_BULLET3) + SUBDIRS( AllBullet2Demos GpuDemos SimpleOpenGL3 ) +endif(BUILD_BULLET3) diff --git a/Demos3/ImplicitCloth/stan/Cloth.cpp b/Demos3/ImplicitCloth/stan/Cloth.cpp index e713f8eec..35859e686 100644 --- a/Demos3/ImplicitCloth/stan/Cloth.cpp +++ b/Demos3/ImplicitCloth/stan/Cloth.cpp @@ -66,7 +66,7 @@ int cloth_tess = 20; float3 cloth_spawnpoint(0,3,5.0f); - +/* static void ClothDrawSprings(Cloth *cloth) { static const float3 color[3]={float3(1,1,0),float3(1,0,1),float3(0,1,1)}; @@ -78,7 +78,7 @@ static void ClothDrawSprings(Cloth *cloth) Line(X[s.a],X[s.b],color[s.type]); } } - +*/ int cloth_showsprings=0; void DoCloths() @@ -93,4 +93,4 @@ void DoCloths() // ClothDrawSprings(cloth); // debug visualization } -} \ No newline at end of file +} diff --git a/Extras/CMakeLists.txt b/Extras/CMakeLists.txt index a92f64720..24fc0f159 100644 --- a/Extras/CMakeLists.txt +++ b/Extras/CMakeLists.txt @@ -2,6 +2,6 @@ SUBDIRS( Serialize ConvexDecomposition HACD GIMPACTUtils ) #Maya Dynamica plugin is moved to http://dynamica.googlecode.com -IF (USE_GLUT AND GLUT_FOUND) - SUBDIRS (glui) -ENDIF () +#IF (USE_GLUT AND GLUT_FOUND) +# SUBDIRS (glui) +#ENDIF () diff --git a/btgui/OpenGLWindow/GLInstancingRenderer.cpp b/btgui/OpenGLWindow/GLInstancingRenderer.cpp index 9fdc05848..b5e96ab3c 100644 --- a/btgui/OpenGLWindow/GLInstancingRenderer.cpp +++ b/btgui/OpenGLWindow/GLInstancingRenderer.cpp @@ -16,9 +16,9 @@ subject to the following restrictions: ///todo: make this configurable in the gui bool useShadowMap=true; -float shadowMapWidth=8192; -float shadowMapHeight=8192; -float shadowMapWorldSize=100; +float shadowMapWidth=16384; +float shadowMapHeight=16384; +float shadowMapWorldSize=1000; float WHEEL_MULTIPLIER=0.01f; float MOUSE_MOVE_MULTIPLIER = 0.4f; #define MAX_POINTS_IN_BATCH 1024 diff --git a/data/testFile.bullet b/data/testFile.bullet deleted file mode 100644 index a444865a1d9131a548cafb0c0d53c3b0bf732ff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73336 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 AKL7v# diff --git a/data/testFileFracture.bullet b/data/testFileFracture.bullet index 1413f2d7cf46778a4684e07a0d7816e47a49f279..ae161a54cc59d29dce0119b159c0f8ecb7368142 100644 GIT binary patch delta 3265 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