ruby-bullet 0.0.2-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (943) hide show
  1. data/INSTALL.md +22 -0
  2. data/LICENSE +23 -0
  3. data/README.md +41 -0
  4. data/Rakefile +131 -0
  5. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btAxisSweep3.i +30 -0
  6. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseInterface.i +8 -0
  7. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseProxy.i +8 -0
  8. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.i +8 -0
  9. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvt.i +10 -0
  10. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvtBroadphase.i +8 -0
  11. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDispatcher.i +8 -0
  12. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.i +10 -0
  13. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCache.i +8 -0
  14. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.i +8 -0
  15. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btQuantizedBvh.i +8 -0
  16. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btSimpleBroadphase.i +8 -0
  17. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/local_btAxisSweep3Internal.h +191 -0
  18. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/SphereTriangleDetector.i +8 -0
  19. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.i +8 -0
  20. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.i +8 -0
  21. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.i +8 -0
  22. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxDetector.i +8 -0
  23. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionConfiguration.i +21 -0
  24. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionCreateFunc.i +8 -0
  25. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionDispatcher.i +24 -0
  26. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionObject.i +8 -0
  27. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionWorld.i +82 -0
  28. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.i +8 -0
  29. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.i +8 -0
  30. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.i +8 -0
  31. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.i +8 -0
  32. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.i +8 -0
  33. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.i +8 -0
  34. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.i +8 -0
  35. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btGhostObject.i +8 -0
  36. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btInternalEdgeUtility.i +8 -0
  37. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btManifoldResult.i +8 -0
  38. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSimulationIslandManager.i +8 -0
  39. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.i +8 -0
  40. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.i +8 -0
  41. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.i +8 -0
  42. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btUnionFind.i +10 -0
  43. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBox2dShape.i +8 -0
  44. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBoxShape.i +22 -0
  45. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.i +8 -0
  46. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCapsuleShape.i +8 -0
  47. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionMargin.i +8 -0
  48. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionShape.i +8 -0
  49. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCompoundShape.i +8 -0
  50. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConcaveShape.i +8 -0
  51. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConeShape.i +8 -0
  52. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvex2dShape.i +8 -0
  53. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexHullShape.i +8 -0
  54. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexInternalShape.i +8 -0
  55. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPointCloudShape.i +8 -0
  56. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPolyhedron.i +8 -0
  57. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexShape.i +8 -0
  58. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.i +8 -0
  59. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCylinderShape.i +8 -0
  60. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btEmptyShape.i +8 -0
  61. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.i +8 -0
  62. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMaterial.i +8 -0
  63. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMinkowskiSumShape.i +8 -0
  64. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultiSphereShape.i +8 -0
  65. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.i +8 -0
  66. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btOptimizedBvh.i +8 -0
  67. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btPolyhedralConvexShape.i +8 -0
  68. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.i +8 -0
  69. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btShapeHull.i +8 -0
  70. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btSphereShape.i +8 -0
  71. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStaticPlaneShape.i +8 -0
  72. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStridingMeshInterface.i +8 -0
  73. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTetrahedronShape.i +8 -0
  74. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleBuffer.i +8 -0
  75. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleCallback.i +8 -0
  76. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.i +8 -0
  77. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.i +8 -0
  78. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleInfoMap.i +8 -0
  79. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleMeshShape.i +8 -0
  80. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleShape.i +8 -0
  81. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btUniformScalingShape.i +8 -0
  82. data/bindings/bullet/interface/BulletCollision/Gimpact/btBoxCollision.i +8 -0
  83. data/bindings/bullet/interface/BulletCollision/Gimpact/btClipPolygon.i +8 -0
  84. data/bindings/bullet/interface/BulletCollision/Gimpact/btContactProcessing.i +8 -0
  85. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactBvh.i +8 -0
  86. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.i +8 -0
  87. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactMassUtil.i +8 -0
  88. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactQuantizedBvh.i +8 -0
  89. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactShape.i +8 -0
  90. data/bindings/bullet/interface/BulletCollision/Gimpact/btGenericPoolAllocator.i +11 -0
  91. data/bindings/bullet/interface/BulletCollision/Gimpact/btGeometryOperations.i +8 -0
  92. data/bindings/bullet/interface/BulletCollision/Gimpact/btQuantization.i +8 -0
  93. data/bindings/bullet/interface/BulletCollision/Gimpact/btTriangleShapeEx.i +8 -0
  94. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.i +8 -0
  95. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexCast.i +8 -0
  96. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.i +8 -0
  97. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.i +11 -0
  98. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.i +8 -0
  99. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpa2.i +8 -0
  100. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.i +8 -0
  101. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.i +8 -0
  102. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btManifoldPoint.i +8 -0
  103. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.i +8 -0
  104. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPersistentManifold.i +8 -0
  105. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPointCollector.i +8 -0
  106. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.i +8 -0
  107. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btRaycastCallback.i +8 -0
  108. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.i +8 -0
  109. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.i +8 -0
  110. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.i +8 -0
  111. data/bindings/bullet/interface/BulletDynamics/Character/btCharacterControllerInterface.i +8 -0
  112. data/bindings/bullet/interface/BulletDynamics/Character/btKinematicCharacterController.i +8 -0
  113. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConeTwistConstraint.i +8 -0
  114. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConstraintSolver.i +8 -0
  115. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactConstraint.i +8 -0
  116. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactSolverInfo.i +8 -0
  117. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.i +8 -0
  118. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.i +8 -0
  119. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHinge2Constraint.i +8 -0
  120. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHingeConstraint.i +8 -0
  121. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btJacobianEntry.i +8 -0
  122. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.i +8 -0
  123. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.i +21 -0
  124. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSliderConstraint.i +8 -0
  125. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.i +8 -0
  126. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverBody.i +8 -0
  127. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverConstraint.i +8 -0
  128. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btTypedConstraint.i +8 -0
  129. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btUniversalConstraint.i +8 -0
  130. data/bindings/bullet/interface/BulletDynamics/Dynamics/btActionInterface.i +8 -0
  131. data/bindings/bullet/interface/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.i +23 -0
  132. data/bindings/bullet/interface/BulletDynamics/Dynamics/btDynamicsWorld.i +37 -0
  133. data/bindings/bullet/interface/BulletDynamics/Dynamics/btRigidBody.i +20 -0
  134. data/bindings/bullet/interface/BulletDynamics/Dynamics/btSimpleDynamicsWorld.i +8 -0
  135. data/bindings/bullet/interface/BulletDynamics/Vehicle/btRaycastVehicle.i +12 -0
  136. data/bindings/bullet/interface/BulletDynamics/Vehicle/btVehicleRaycaster.i +8 -0
  137. data/bindings/bullet/interface/BulletDynamics/Vehicle/btWheelInfo.i +8 -0
  138. data/bindings/bullet/interface/BulletSoftBody/btDefaultSoftBodySolver.i +8 -0
  139. data/bindings/bullet/interface/BulletSoftBody/btSoftBody.i +8 -0
  140. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.i +8 -0
  141. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyData.i +8 -0
  142. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyHelpers.i +8 -0
  143. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyInternals.i +8 -0
  144. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.i +8 -0
  145. data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolverVertexBuffer.i +8 -0
  146. data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolvers.i +8 -0
  147. data/bindings/bullet/interface/BulletSoftBody/btSoftRigidCollisionAlgorithm.i +8 -0
  148. data/bindings/bullet/interface/BulletSoftBody/btSoftRigidDynamicsWorld.i +8 -0
  149. data/bindings/bullet/interface/BulletSoftBody/btSoftSoftCollisionAlgorithm.i +8 -0
  150. data/bindings/bullet/interface/BulletSoftBody/btSparseSDF.i +8 -0
  151. data/bindings/bullet/interface/LinearMath/btAabbUtil2.i +8 -0
  152. data/bindings/bullet/interface/LinearMath/btAlignedAllocator.i +8 -0
  153. data/bindings/bullet/interface/LinearMath/btAlignedObjectArray.i +8 -0
  154. data/bindings/bullet/interface/LinearMath/btConvexHull.i +8 -0
  155. data/bindings/bullet/interface/LinearMath/btConvexHullComputer.i +8 -0
  156. data/bindings/bullet/interface/LinearMath/btDefaultMotionState.i +10 -0
  157. data/bindings/bullet/interface/LinearMath/btGeometryUtil.i +10 -0
  158. data/bindings/bullet/interface/LinearMath/btGrahamScan2dConvexHull.i +8 -0
  159. data/bindings/bullet/interface/LinearMath/btHashMap.i +8 -0
  160. data/bindings/bullet/interface/LinearMath/btIDebugDraw.i +10 -0
  161. data/bindings/bullet/interface/LinearMath/btList.i +8 -0
  162. data/bindings/bullet/interface/LinearMath/btMatrix3x3.i +8 -0
  163. data/bindings/bullet/interface/LinearMath/btMinMax.i +8 -0
  164. data/bindings/bullet/interface/LinearMath/btMotionState.i +10 -0
  165. data/bindings/bullet/interface/LinearMath/btPoolAllocator.i +10 -0
  166. data/bindings/bullet/interface/LinearMath/btQuadWord.i +8 -0
  167. data/bindings/bullet/interface/LinearMath/btQuaternion.i +60 -0
  168. data/bindings/bullet/interface/LinearMath/btQuickprof.i +10 -0
  169. data/bindings/bullet/interface/LinearMath/btRandom.i +8 -0
  170. data/bindings/bullet/interface/LinearMath/btScalar.i +8 -0
  171. data/bindings/bullet/interface/LinearMath/btSerializer.i +10 -0
  172. data/bindings/bullet/interface/LinearMath/btStackAlloc.i +10 -0
  173. data/bindings/bullet/interface/LinearMath/btTransform.i +8 -0
  174. data/bindings/bullet/interface/LinearMath/btTransformUtil.i +8 -0
  175. data/bindings/bullet/interface/LinearMath/btVector3.i +42 -0
  176. data/bindings/bullet/interface/Makefile +19 -0
  177. data/bindings/bullet/interface/bullet.i +9 -0
  178. data/bindings/bullet/interface/bullet_all.i +186 -0
  179. data/bindings/bullet/interface/bullet_wrap.cpp +194161 -0
  180. data/bindings/bullet/interface/bullet_wrap.h +106 -0
  181. data/bindings/bullet/interface/bullet_wrap.o +0 -0
  182. data/bindings/bullet/src/TickListener.h +22 -0
  183. data/deps/include/bullet/Bullet-C-Api.h +176 -0
  184. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp +37 -0
  185. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h +1051 -0
  186. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h +82 -0
  187. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp +17 -0
  188. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +270 -0
  189. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp +23 -0
  190. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h +80 -0
  191. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp +1295 -0
  192. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvt.h +1257 -0
  193. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp +796 -0
  194. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h +146 -0
  195. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp +22 -0
  196. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h +110 -0
  197. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp +489 -0
  198. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h +151 -0
  199. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp +633 -0
  200. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h +469 -0
  201. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h +40 -0
  202. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp +1375 -0
  203. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h +579 -0
  204. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp +349 -0
  205. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h +171 -0
  206. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btAxisSweep3.obj +0 -0
  207. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btBroadphaseProxy.obj +0 -0
  208. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btCollisionAlgorithm.obj +0 -0
  209. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btDbvt.obj +0 -0
  210. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btDbvtBroadphase.obj +0 -0
  211. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btDispatcher.obj +0 -0
  212. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btMultiSapBroadphase.obj +0 -0
  213. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btOverlappingPairCache.obj +0 -0
  214. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btQuantizedBvh.obj +0 -0
  215. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btSimpleBroadphase.obj +0 -0
  216. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CXX.includecache +2574 -0
  217. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/SphereTriangleDetector.obj +0 -0
  218. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btActivatingCollisionAlgorithm.obj +0 -0
  219. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.obj +0 -0
  220. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btBoxBoxCollisionAlgorithm.obj +0 -0
  221. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btBoxBoxDetector.obj +0 -0
  222. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCollisionDispatcher.obj +0 -0
  223. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCollisionObject.obj +0 -0
  224. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCollisionWorld.obj +0 -0
  225. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCompoundCollisionAlgorithm.obj +0 -0
  226. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvex2dConvex2dAlgorithm.obj +0 -0
  227. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvexConcaveCollisionAlgorithm.obj +0 -0
  228. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvexConvexAlgorithm.obj +0 -0
  229. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvexPlaneCollisionAlgorithm.obj +0 -0
  230. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btDefaultCollisionConfiguration.obj +0 -0
  231. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btEmptyCollisionAlgorithm.obj +0 -0
  232. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btGhostObject.obj +0 -0
  233. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btInternalEdgeUtility.obj +0 -0
  234. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btManifoldResult.obj +0 -0
  235. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSimulationIslandManager.obj +0 -0
  236. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSphereBoxCollisionAlgorithm.obj +0 -0
  237. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSphereSphereCollisionAlgorithm.obj +0 -0
  238. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSphereTriangleCollisionAlgorithm.obj +0 -0
  239. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btUnionFind.obj +0 -0
  240. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btBox2dShape.obj +0 -0
  241. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btBoxShape.obj +0 -0
  242. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btBvhTriangleMeshShape.obj +0 -0
  243. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCapsuleShape.obj +0 -0
  244. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCollisionShape.obj +0 -0
  245. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCompoundShape.obj +0 -0
  246. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConcaveShape.obj +0 -0
  247. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConeShape.obj +0 -0
  248. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvex2dShape.obj +0 -0
  249. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexHullShape.obj +0 -0
  250. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexInternalShape.obj +0 -0
  251. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexPointCloudShape.obj +0 -0
  252. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexPolyhedron.obj +0 -0
  253. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexShape.obj +0 -0
  254. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexTriangleMeshShape.obj +0 -0
  255. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCylinderShape.obj +0 -0
  256. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btEmptyShape.obj +0 -0
  257. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btHeightfieldTerrainShape.obj +0 -0
  258. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btMinkowskiSumShape.obj +0 -0
  259. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btMultiSphereShape.obj +0 -0
  260. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btMultimaterialTriangleMeshShape.obj +0 -0
  261. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btOptimizedBvh.obj +0 -0
  262. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btPolyhedralConvexShape.obj +0 -0
  263. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btScaledBvhTriangleMeshShape.obj +0 -0
  264. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btShapeHull.obj +0 -0
  265. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btSphereShape.obj +0 -0
  266. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btStaticPlaneShape.obj +0 -0
  267. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btStridingMeshInterface.obj +0 -0
  268. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTetrahedronShape.obj +0 -0
  269. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleBuffer.obj +0 -0
  270. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleCallback.obj +0 -0
  271. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleIndexVertexArray.obj +0 -0
  272. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleIndexVertexMaterialArray.obj +0 -0
  273. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleMesh.obj +0 -0
  274. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleMeshShape.obj +0 -0
  275. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btUniformScalingShape.obj +0 -0
  276. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/DependInfo.cmake +121 -0
  277. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btContactProcessing.obj +0 -0
  278. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactBvh.obj +0 -0
  279. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactCollisionAlgorithm.obj +0 -0
  280. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactQuantizedBvh.obj +0 -0
  281. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactShape.obj +0 -0
  282. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGenericPoolAllocator.obj +0 -0
  283. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btTriangleShapeEx.obj +0 -0
  284. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_box_set.obj +0 -0
  285. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_contact.obj +0 -0
  286. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_memory.obj +0 -0
  287. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_tri_collision.obj +0 -0
  288. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btContinuousConvexCollision.obj +0 -0
  289. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btConvexCast.obj +0 -0
  290. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkConvexCast.obj +0 -0
  291. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkEpa2.obj +0 -0
  292. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.obj +0 -0
  293. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkPairDetector.obj +0 -0
  294. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.obj +0 -0
  295. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btPersistentManifold.obj +0 -0
  296. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btPolyhedralContactClipping.obj +0 -0
  297. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btRaycastCallback.obj +0 -0
  298. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btSubSimplexConvexCast.obj +0 -0
  299. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btVoronoiSimplexSolver.obj +0 -0
  300. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/build.make +2561 -0
  301. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/cmake_clean.cmake +101 -0
  302. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/cmake_clean_target.cmake +3 -0
  303. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/depend.internal +2058 -0
  304. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/depend.make +2058 -0
  305. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/flags.make +8 -0
  306. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/includes_CXX.rsp +1 -0
  307. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/link.txt +2 -0
  308. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/progress.make +93 -0
  309. data/deps/include/bullet/BulletCollision/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  310. data/deps/include/bullet/BulletCollision/CMakeFiles/progress.marks +1 -0
  311. data/deps/include/bullet/BulletCollision/CMakeLists.txt +279 -0
  312. data/deps/include/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp +201 -0
  313. data/deps/include/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h +51 -0
  314. data/deps/include/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp +47 -0
  315. data/deps/include/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h +36 -0
  316. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp +435 -0
  317. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h +66 -0
  318. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp +85 -0
  319. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h +66 -0
  320. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp +718 -0
  321. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h +44 -0
  322. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h +48 -0
  323. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h +45 -0
  324. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp +310 -0
  325. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h +172 -0
  326. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp +116 -0
  327. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h +524 -0
  328. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +1518 -0
  329. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h +509 -0
  330. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp +353 -0
  331. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h +86 -0
  332. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp +247 -0
  333. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h +95 -0
  334. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp +312 -0
  335. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h +116 -0
  336. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp +739 -0
  337. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h +109 -0
  338. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp +173 -0
  339. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h +84 -0
  340. data/deps/include/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp +309 -0
  341. data/deps/include/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h +137 -0
  342. data/deps/include/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp +34 -0
  343. data/deps/include/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h +54 -0
  344. data/deps/include/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp +171 -0
  345. data/deps/include/bullet/BulletCollision/CollisionDispatch/btGhostObject.h +175 -0
  346. data/deps/include/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp +842 -0
  347. data/deps/include/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h +46 -0
  348. data/deps/include/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp +135 -0
  349. data/deps/include/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h +128 -0
  350. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp +450 -0
  351. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h +81 -0
  352. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp +260 -0
  353. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h +75 -0
  354. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp +105 -0
  355. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h +66 -0
  356. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp +84 -0
  357. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h +69 -0
  358. data/deps/include/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp +82 -0
  359. data/deps/include/bullet/BulletCollision/CollisionDispatch/btUnionFind.h +129 -0
  360. data/deps/include/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp +42 -0
  361. data/deps/include/bullet/BulletCollision/CollisionShapes/btBox2dShape.h +369 -0
  362. data/deps/include/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp +51 -0
  363. data/deps/include/bullet/BulletCollision/CollisionShapes/btBoxShape.h +312 -0
  364. data/deps/include/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp +466 -0
  365. data/deps/include/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h +139 -0
  366. data/deps/include/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp +171 -0
  367. data/deps/include/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h +173 -0
  368. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h +27 -0
  369. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp +119 -0
  370. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionShape.h +150 -0
  371. data/deps/include/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp +356 -0
  372. data/deps/include/bullet/BulletCollision/CollisionShapes/btCompoundShape.h +212 -0
  373. data/deps/include/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp +27 -0
  374. data/deps/include/bullet/BulletCollision/CollisionShapes/btConcaveShape.h +60 -0
  375. data/deps/include/bullet/BulletCollision/CollisionShapes/btConeShape.cpp +143 -0
  376. data/deps/include/bullet/BulletCollision/CollisionShapes/btConeShape.h +103 -0
  377. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp +92 -0
  378. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h +80 -0
  379. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp +255 -0
  380. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h +122 -0
  381. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp +151 -0
  382. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h +224 -0
  383. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp +157 -0
  384. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h +105 -0
  385. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp +296 -0
  386. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h +62 -0
  387. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp +446 -0
  388. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexShape.h +84 -0
  389. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp +315 -0
  390. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h +75 -0
  391. data/deps/include/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp +281 -0
  392. data/deps/include/bullet/BulletCollision/CollisionShapes/btCylinderShape.h +200 -0
  393. data/deps/include/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp +50 -0
  394. data/deps/include/bullet/BulletCollision/CollisionShapes/btEmptyShape.h +70 -0
  395. data/deps/include/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp +411 -0
  396. data/deps/include/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h +161 -0
  397. data/deps/include/bullet/BulletCollision/CollisionShapes/btMaterial.h +35 -0
  398. data/deps/include/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp +60 -0
  399. data/deps/include/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h +60 -0
  400. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp +167 -0
  401. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h +99 -0
  402. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp +45 -0
  403. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h +120 -0
  404. data/deps/include/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp +391 -0
  405. data/deps/include/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h +65 -0
  406. data/deps/include/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp +475 -0
  407. data/deps/include/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h +112 -0
  408. data/deps/include/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp +123 -0
  409. data/deps/include/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h +93 -0
  410. data/deps/include/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp +170 -0
  411. data/deps/include/bullet/BulletCollision/CollisionShapes/btShapeHull.h +59 -0
  412. data/deps/include/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp +71 -0
  413. data/deps/include/bullet/BulletCollision/CollisionShapes/btSphereShape.h +73 -0
  414. data/deps/include/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp +107 -0
  415. data/deps/include/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h +103 -0
  416. data/deps/include/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp +381 -0
  417. data/deps/include/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h +162 -0
  418. data/deps/include/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp +218 -0
  419. data/deps/include/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h +74 -0
  420. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp +35 -0
  421. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h +69 -0
  422. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp +28 -0
  423. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h +42 -0
  424. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp +95 -0
  425. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h +133 -0
  426. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp +86 -0
  427. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h +84 -0
  428. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h +241 -0
  429. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp +140 -0
  430. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h +69 -0
  431. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp +211 -0
  432. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h +89 -0
  433. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleShape.h +182 -0
  434. data/deps/include/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp +160 -0
  435. data/deps/include/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h +87 -0
  436. data/deps/include/bullet/BulletCollision/Doxyfile +746 -0
  437. data/deps/include/bullet/BulletCollision/Gimpact/btBoxCollision.h +647 -0
  438. data/deps/include/bullet/BulletCollision/Gimpact/btClipPolygon.h +182 -0
  439. data/deps/include/bullet/BulletCollision/Gimpact/btContactProcessing.cpp +181 -0
  440. data/deps/include/bullet/BulletCollision/Gimpact/btContactProcessing.h +145 -0
  441. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp +498 -0
  442. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactBvh.h +396 -0
  443. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp +904 -0
  444. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h +306 -0
  445. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h +60 -0
  446. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp +528 -0
  447. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h +372 -0
  448. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactShape.cpp +203 -0
  449. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactShape.h +1171 -0
  450. data/deps/include/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp +283 -0
  451. data/deps/include/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h +163 -0
  452. data/deps/include/bullet/BulletCollision/Gimpact/btGeometryOperations.h +212 -0
  453. data/deps/include/bullet/BulletCollision/Gimpact/btQuantization.h +88 -0
  454. data/deps/include/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp +218 -0
  455. data/deps/include/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h +180 -0
  456. data/deps/include/bullet/BulletCollision/Gimpact/gim_array.h +326 -0
  457. data/deps/include/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h +543 -0
  458. data/deps/include/bullet/BulletCollision/Gimpact/gim_bitset.h +123 -0
  459. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_collision.h +590 -0
  460. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_set.cpp +182 -0
  461. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_set.h +674 -0
  462. data/deps/include/bullet/BulletCollision/Gimpact/gim_clip_polygon.h +210 -0
  463. data/deps/include/bullet/BulletCollision/Gimpact/gim_contact.cpp +146 -0
  464. data/deps/include/bullet/BulletCollision/Gimpact/gim_contact.h +164 -0
  465. data/deps/include/bullet/BulletCollision/Gimpact/gim_geom_types.h +97 -0
  466. data/deps/include/bullet/BulletCollision/Gimpact/gim_geometry.h +42 -0
  467. data/deps/include/bullet/BulletCollision/Gimpact/gim_hash_table.h +902 -0
  468. data/deps/include/bullet/BulletCollision/Gimpact/gim_linear_math.h +1573 -0
  469. data/deps/include/bullet/BulletCollision/Gimpact/gim_math.h +157 -0
  470. data/deps/include/bullet/BulletCollision/Gimpact/gim_memory.cpp +135 -0
  471. data/deps/include/bullet/BulletCollision/Gimpact/gim_memory.h +190 -0
  472. data/deps/include/bullet/BulletCollision/Gimpact/gim_radixsort.h +406 -0
  473. data/deps/include/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp +640 -0
  474. data/deps/include/bullet/BulletCollision/Gimpact/gim_tri_collision.h +379 -0
  475. data/deps/include/bullet/BulletCollision/Makefile +1793 -0
  476. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp +243 -0
  477. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h +59 -0
  478. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp +20 -0
  479. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h +73 -0
  480. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h +42 -0
  481. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h +91 -0
  482. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp +176 -0
  483. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h +50 -0
  484. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp +989 -0
  485. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h +75 -0
  486. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp +66 -0
  487. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h +43 -0
  488. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp +457 -0
  489. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h +103 -0
  490. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h +158 -0
  491. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp +362 -0
  492. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h +40 -0
  493. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp +302 -0
  494. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h +228 -0
  495. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h +64 -0
  496. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp +440 -0
  497. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h +46 -0
  498. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp +177 -0
  499. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h +72 -0
  500. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h +63 -0
  501. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp +160 -0
  502. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h +50 -0
  503. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp +609 -0
  504. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h +179 -0
  505. data/deps/include/bullet/BulletCollision/cmake_install.cmake +29 -0
  506. data/deps/include/bullet/BulletCollision/ibmsdk/Makefile +112 -0
  507. data/deps/include/bullet/BulletCollision/premake4.lua +11 -0
  508. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/CXX.includecache +1466 -0
  509. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Character/btKinematicCharacterController.obj +0 -0
  510. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btConeTwistConstraint.obj +0 -0
  511. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btContactConstraint.obj +0 -0
  512. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btGeneric6DofConstraint.obj +0 -0
  513. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btGeneric6DofSpringConstraint.obj +0 -0
  514. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btHinge2Constraint.obj +0 -0
  515. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btHingeConstraint.obj +0 -0
  516. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btPoint2PointConstraint.obj +0 -0
  517. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btSequentialImpulseConstraintSolver.obj +0 -0
  518. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btSliderConstraint.obj +0 -0
  519. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btSolve2LinearConstraint.obj +0 -0
  520. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btTypedConstraint.obj +0 -0
  521. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btUniversalConstraint.obj +0 -0
  522. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/DependInfo.cmake +48 -0
  523. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/Bullet-C-API.obj +0 -0
  524. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/btDiscreteDynamicsWorld.obj +0 -0
  525. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/btRigidBody.obj +0 -0
  526. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/btSimpleDynamicsWorld.obj +0 -0
  527. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Vehicle/btRaycastVehicle.obj +0 -0
  528. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Vehicle/btWheelInfo.obj +0 -0
  529. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/build.make +590 -0
  530. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/cmake_clean.cmake +28 -0
  531. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/cmake_clean_target.cmake +3 -0
  532. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/depend.internal +601 -0
  533. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/depend.make +601 -0
  534. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/flags.make +8 -0
  535. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/includes_CXX.rsp +1 -0
  536. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/link.txt +2 -0
  537. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/progress.make +20 -0
  538. data/deps/include/bullet/BulletDynamics/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  539. data/deps/include/bullet/BulletDynamics/CMakeFiles/progress.marks +1 -0
  540. data/deps/include/bullet/BulletDynamics/CMakeLists.txt +112 -0
  541. data/deps/include/bullet/BulletDynamics/Character/btCharacterControllerInterface.h +46 -0
  542. data/deps/include/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp +641 -0
  543. data/deps/include/bullet/BulletDynamics/Character/btKinematicCharacterController.h +163 -0
  544. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp +1132 -0
  545. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h +346 -0
  546. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h +52 -0
  547. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp +178 -0
  548. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h +71 -0
  549. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h +87 -0
  550. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp +1078 -0
  551. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h +614 -0
  552. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp +185 -0
  553. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h +99 -0
  554. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp +66 -0
  555. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h +58 -0
  556. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp +1034 -0
  557. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h +381 -0
  558. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h +156 -0
  559. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp +230 -0
  560. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h +161 -0
  561. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp +1269 -0
  562. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h +130 -0
  563. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp +857 -0
  564. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h +333 -0
  565. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp +255 -0
  566. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h +107 -0
  567. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h +191 -0
  568. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h +98 -0
  569. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp +220 -0
  570. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h +452 -0
  571. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp +87 -0
  572. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h +62 -0
  573. data/deps/include/bullet/BulletDynamics/Dynamics/Bullet-C-API.cpp +405 -0
  574. data/deps/include/bullet/BulletDynamics/Dynamics/btActionInterface.h +46 -0
  575. data/deps/include/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +1257 -0
  576. data/deps/include/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h +203 -0
  577. data/deps/include/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h +151 -0
  578. data/deps/include/bullet/BulletDynamics/Dynamics/btRigidBody.cpp +403 -0
  579. data/deps/include/bullet/BulletDynamics/Dynamics/btRigidBody.h +691 -0
  580. data/deps/include/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp +280 -0
  581. data/deps/include/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h +89 -0
  582. data/deps/include/bullet/BulletDynamics/Makefile +479 -0
  583. data/deps/include/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp +771 -0
  584. data/deps/include/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h +236 -0
  585. data/deps/include/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h +35 -0
  586. data/deps/include/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp +56 -0
  587. data/deps/include/bullet/BulletDynamics/Vehicle/btWheelInfo.h +119 -0
  588. data/deps/include/bullet/BulletDynamics/cmake_install.cmake +29 -0
  589. data/deps/include/bullet/BulletDynamics/ibmsdk/Makefile +53 -0
  590. data/deps/include/bullet/BulletDynamics/premake4.lua +11 -0
  591. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/CXX.includecache +1480 -0
  592. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/DependInfo.cmake +47 -0
  593. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/PosixThreadSupport.obj +0 -0
  594. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SequentialThreadSupport.obj +0 -0
  595. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuCollisionObjectWrapper.obj +0 -0
  596. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuCollisionTaskProcess.obj +0 -0
  597. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuContactManifoldCollisionAlgorithm.obj +0 -0
  598. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuFakeDma.obj +0 -0
  599. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuGatheringCollisionDispatcher.obj +0 -0
  600. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuLibspe2Support.obj +0 -0
  601. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.obj +0 -0
  602. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuContactResult.obj +0 -0
  603. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.obj +0 -0
  604. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.obj +0 -0
  605. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/boxBoxDistance.obj +0 -0
  606. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuSampleTaskProcess.obj +0 -0
  607. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/Win32ThreadSupport.obj +0 -0
  608. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/btGpu3DGridBroadphase.obj +0 -0
  609. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/btParallelConstraintSolver.obj +0 -0
  610. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/btThreadSupportInterface.obj +0 -0
  611. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/build.make +563 -0
  612. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/cmake_clean.cmake +27 -0
  613. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/cmake_clean_target.cmake +3 -0
  614. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/depend.internal +690 -0
  615. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/depend.make +690 -0
  616. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/flags.make +8 -0
  617. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/includes_CXX.rsp +1 -0
  618. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/link.txt +2 -0
  619. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/progress.make +19 -0
  620. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  621. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/progress.marks +1 -0
  622. data/deps/include/bullet/BulletMultiThreaded/CMakeLists.txt +123 -0
  623. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  624. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/CMakeFiles/progress.marks +1 -0
  625. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/CMakeLists.txt +13 -0
  626. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/CMakeLists.txt +83 -0
  627. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/ApplyForces.hlsl +95 -0
  628. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/ComputeBounds.hlsl +83 -0
  629. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/Integrate.hlsl +41 -0
  630. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/OutputToVertexArray.hlsl +63 -0
  631. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/PrepareLinks.hlsl +44 -0
  632. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/SolvePositions.hlsl +55 -0
  633. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/SolvePositionsSIMDBatched.hlsl +147 -0
  634. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdateConstants.hlsl +48 -0
  635. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdateNodes.hlsl +49 -0
  636. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdateNormals.hlsl +98 -0
  637. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdatePositions.hlsl +44 -0
  638. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdatePositionsFromVelocities.hlsl +35 -0
  639. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/VSolveLinks.hlsl +55 -0
  640. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/solveCollisionsAndUpdateVelocities.hlsl +170 -0
  641. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/solveCollisionsAndUpdateVelocitiesSIMDBatched.hlsl +191 -0
  642. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverBuffer_DX11.h +323 -0
  643. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11.h +103 -0
  644. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11SIMDAware.h +173 -0
  645. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverTriangleData_DX11.h +96 -0
  646. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexBuffer_DX11.h +107 -0
  647. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexData_DX11.h +63 -0
  648. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11.cpp +2236 -0
  649. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11.h +691 -0
  650. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11SIMDAware.cpp +1051 -0
  651. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11SIMDAware.h +81 -0
  652. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/premake4.lua +23 -0
  653. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/Makefile +122 -0
  654. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD/CMakeLists.txt +62 -0
  655. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD/premake4.lua +27 -0
  656. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Apple/CMakeLists.txt +77 -0
  657. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  658. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/CMakeFiles/progress.marks +1 -0
  659. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/CMakeLists.txt +17 -0
  660. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel/CMakeLists.txt +82 -0
  661. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel/premake4.lua +27 -0
  662. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Makefile +122 -0
  663. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/CXX.includecache +556 -0
  664. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/DependInfo.cmake +31 -0
  665. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/__/btSoftBodySolver_OpenCL.obj +0 -0
  666. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/build.make +104 -0
  667. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/cmake_clean.cmake +10 -0
  668. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/cmake_clean_target.cmake +3 -0
  669. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/depend.internal +76 -0
  670. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/depend.make +76 -0
  671. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/flags.make +8 -0
  672. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/includes_CXX.rsp +1 -0
  673. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/link.txt +2 -0
  674. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/progress.make +2 -0
  675. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  676. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/progress.marks +1 -0
  677. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeLists.txt +75 -0
  678. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/Makefile +155 -0
  679. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/MiniCLTaskWrap.cpp +249 -0
  680. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/cmake_install.cmake +29 -0
  681. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia/CMakeLists.txt +81 -0
  682. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia/premake4.lua +27 -0
  683. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/ApplyForces.cl +102 -0
  684. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/ComputeBounds.cl +82 -0
  685. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/Integrate.cl +35 -0
  686. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/OutputToVertexArray.cl +46 -0
  687. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/PrepareLinks.cl +38 -0
  688. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolveCollisionsAndUpdateVelocities.cl +204 -0
  689. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolveCollisionsAndUpdateVelocitiesSIMDBatched.cl +242 -0
  690. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolvePositions.cl +57 -0
  691. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolvePositionsSIMDBatched.cl +130 -0
  692. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateConstants.cl +44 -0
  693. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateFixedVertexPositions.cl +25 -0
  694. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateNodes.cl +39 -0
  695. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateNormals.cl +102 -0
  696. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdatePositions.cl +34 -0
  697. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdatePositionsFromVelocities.cl +28 -0
  698. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/VSolveLinks.cl +45 -0
  699. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverBuffer_OpenCL.h +209 -0
  700. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCL.h +99 -0
  701. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCLSIMDAware.h +169 -0
  702. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverOutputCLtoGL.cpp +126 -0
  703. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverOutputCLtoGL.h +62 -0
  704. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverTriangleData_OpenCL.h +84 -0
  705. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexBuffer_OpenGL.h +166 -0
  706. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexData_OpenCL.h +52 -0
  707. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCL.cpp +1820 -0
  708. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCL.h +527 -0
  709. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCLSIMDAware.cpp +1101 -0
  710. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCLSIMDAware.h +81 -0
  711. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/cmake_install.cmake +35 -0
  712. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/Shared/btSoftBodySolverData.h +748 -0
  713. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/cmake_install.cmake +35 -0
  714. data/deps/include/bullet/BulletMultiThreaded/HeapManager.h +117 -0
  715. data/deps/include/bullet/BulletMultiThreaded/Makefile +461 -0
  716. data/deps/include/bullet/BulletMultiThreaded/Makefile.original +187 -0
  717. data/deps/include/bullet/BulletMultiThreaded/PlatformDefinitions.h +99 -0
  718. data/deps/include/bullet/BulletMultiThreaded/PosixThreadSupport.cpp +399 -0
  719. data/deps/include/bullet/BulletMultiThreaded/PosixThreadSupport.h +142 -0
  720. data/deps/include/bullet/BulletMultiThreaded/PpuAddressSpace.h +37 -0
  721. data/deps/include/bullet/BulletMultiThreaded/SequentialThreadSupport.cpp +169 -0
  722. data/deps/include/bullet/BulletMultiThreaded/SequentialThreadSupport.h +96 -0
  723. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp +48 -0
  724. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionObjectWrapper.h +40 -0
  725. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionTaskProcess.cpp +317 -0
  726. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionTaskProcess.h +163 -0
  727. data/deps/include/bullet/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp +69 -0
  728. data/deps/include/bullet/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h +120 -0
  729. data/deps/include/bullet/BulletMultiThreaded/SpuDoubleBuffer.h +126 -0
  730. data/deps/include/bullet/BulletMultiThreaded/SpuFakeDma.cpp +215 -0
  731. data/deps/include/bullet/BulletMultiThreaded/SpuFakeDma.h +135 -0
  732. data/deps/include/bullet/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp +276 -0
  733. data/deps/include/bullet/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h +72 -0
  734. data/deps/include/bullet/BulletMultiThreaded/SpuLibspe2Support.cpp +257 -0
  735. data/deps/include/bullet/BulletMultiThreaded/SpuLibspe2Support.h +180 -0
  736. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h +167 -0
  737. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp +302 -0
  738. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h +128 -0
  739. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp +248 -0
  740. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h +106 -0
  741. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h +51 -0
  742. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp +1415 -0
  743. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h +140 -0
  744. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h +19 -0
  745. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp +348 -0
  746. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h +48 -0
  747. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h +70 -0
  748. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp +1160 -0
  749. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h +65 -0
  750. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt +1 -0
  751. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp +214 -0
  752. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h +54 -0
  753. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTask/readme.txt +1 -0
  754. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTaskProcess.cpp +222 -0
  755. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTaskProcess.h +153 -0
  756. data/deps/include/bullet/BulletMultiThreaded/SpuSync.h +149 -0
  757. data/deps/include/bullet/BulletMultiThreaded/TrbDynBody.h +79 -0
  758. data/deps/include/bullet/BulletMultiThreaded/TrbStateVec.h +339 -0
  759. data/deps/include/bullet/BulletMultiThreaded/Win32ThreadSupport.cpp +446 -0
  760. data/deps/include/bullet/BulletMultiThreaded/Win32ThreadSupport.h +138 -0
  761. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphase.cpp +590 -0
  762. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphase.h +138 -0
  763. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h +430 -0
  764. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h +61 -0
  765. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h +67 -0
  766. data/deps/include/bullet/BulletMultiThreaded/btGpuDefines.h +211 -0
  767. data/deps/include/bullet/BulletMultiThreaded/btGpuUtilsSharedCode.h +55 -0
  768. data/deps/include/bullet/BulletMultiThreaded/btGpuUtilsSharedDefs.h +52 -0
  769. data/deps/include/bullet/BulletMultiThreaded/btParallelConstraintSolver.cpp +1391 -0
  770. data/deps/include/bullet/BulletMultiThreaded/btParallelConstraintSolver.h +285 -0
  771. data/deps/include/bullet/BulletMultiThreaded/btThreadSupportInterface.cpp +22 -0
  772. data/deps/include/bullet/BulletMultiThreaded/btThreadSupportInterface.h +85 -0
  773. data/deps/include/bullet/BulletMultiThreaded/cmake_install.cmake +35 -0
  774. data/deps/include/bullet/BulletMultiThreaded/vectormath2bullet.h +73 -0
  775. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/CXX.includecache +750 -0
  776. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/DependInfo.cmake +37 -0
  777. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btDefaultSoftBodySolver.obj +0 -0
  778. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBody.obj +0 -0
  779. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBodyConcaveCollisionAlgorithm.obj +0 -0
  780. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBodyHelpers.obj +0 -0
  781. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBodyRigidBodyCollisionConfiguration.obj +0 -0
  782. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftRigidCollisionAlgorithm.obj +0 -0
  783. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftRigidDynamicsWorld.obj +0 -0
  784. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftSoftCollisionAlgorithm.obj +0 -0
  785. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/build.make +293 -0
  786. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/cmake_clean.cmake +17 -0
  787. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/cmake_clean_target.cmake +3 -0
  788. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/depend.internal +344 -0
  789. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/depend.make +344 -0
  790. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/flags.make +8 -0
  791. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/includes_CXX.rsp +1 -0
  792. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/link.txt +2 -0
  793. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/progress.make +9 -0
  794. data/deps/include/bullet/BulletSoftBody/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  795. data/deps/include/bullet/BulletSoftBody/CMakeFiles/progress.marks +1 -0
  796. data/deps/include/bullet/BulletSoftBody/CMakeLists.txt +65 -0
  797. data/deps/include/bullet/BulletSoftBody/Makefile +281 -0
  798. data/deps/include/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp +151 -0
  799. data/deps/include/bullet/BulletSoftBody/btDefaultSoftBodySolver.h +63 -0
  800. data/deps/include/bullet/BulletSoftBody/btSoftBody.cpp +3538 -0
  801. data/deps/include/bullet/BulletSoftBody/btSoftBody.h +987 -0
  802. data/deps/include/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp +368 -0
  803. data/deps/include/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h +153 -0
  804. data/deps/include/bullet/BulletSoftBody/btSoftBodyData.h +217 -0
  805. data/deps/include/bullet/BulletSoftBody/btSoftBodyHelpers.cpp +1055 -0
  806. data/deps/include/bullet/BulletSoftBody/btSoftBodyHelpers.h +143 -0
  807. data/deps/include/bullet/BulletSoftBody/btSoftBodyInternals.h +930 -0
  808. data/deps/include/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp +134 -0
  809. data/deps/include/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h +48 -0
  810. data/deps/include/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h +165 -0
  811. data/deps/include/bullet/BulletSoftBody/btSoftBodySolvers.h +154 -0
  812. data/deps/include/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp +84 -0
  813. data/deps/include/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h +75 -0
  814. data/deps/include/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp +365 -0
  815. data/deps/include/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h +107 -0
  816. data/deps/include/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp +47 -0
  817. data/deps/include/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h +69 -0
  818. data/deps/include/bullet/BulletSoftBody/btSparseSDF.h +306 -0
  819. data/deps/include/bullet/BulletSoftBody/cmake_install.cmake +29 -0
  820. data/deps/include/bullet/BulletSoftBody/premake4.lua +11 -0
  821. data/deps/include/bullet/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  822. data/deps/include/bullet/CMakeFiles/progress.marks +1 -0
  823. data/deps/include/bullet/CMakeLists.txt +28 -0
  824. data/deps/include/bullet/LinearMath/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  825. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/CXX.includecache +154 -0
  826. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/DependInfo.cmake +35 -0
  827. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btAlignedAllocator.obj +0 -0
  828. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btConvexHull.obj +0 -0
  829. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btConvexHullComputer.obj +0 -0
  830. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btGeometryUtil.obj +0 -0
  831. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btQuickprof.obj +0 -0
  832. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btSerializer.obj +0 -0
  833. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/build.make +239 -0
  834. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/cmake_clean.cmake +15 -0
  835. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/cmake_clean_target.cmake +3 -0
  836. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/depend.internal +38 -0
  837. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/depend.make +38 -0
  838. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/flags.make +8 -0
  839. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/includes_CXX.rsp +1 -0
  840. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/link.txt +2 -0
  841. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/progress.make +7 -0
  842. data/deps/include/bullet/LinearMath/CMakeFiles/progress.marks +1 -0
  843. data/deps/include/bullet/LinearMath/CMakeLists.txt +66 -0
  844. data/deps/include/bullet/LinearMath/Makefile +245 -0
  845. data/deps/include/bullet/LinearMath/btAabbUtil2.h +236 -0
  846. data/deps/include/bullet/LinearMath/btAlignedAllocator.cpp +181 -0
  847. data/deps/include/bullet/LinearMath/btAlignedAllocator.h +107 -0
  848. data/deps/include/bullet/LinearMath/btAlignedObjectArray.h +494 -0
  849. data/deps/include/bullet/LinearMath/btConvexHull.cpp +1174 -0
  850. data/deps/include/bullet/LinearMath/btConvexHull.h +241 -0
  851. data/deps/include/bullet/LinearMath/btConvexHullComputer.cpp +2751 -0
  852. data/deps/include/bullet/LinearMath/btConvexHullComputer.h +103 -0
  853. data/deps/include/bullet/LinearMath/btDefaultMotionState.h +40 -0
  854. data/deps/include/bullet/LinearMath/btGeometryUtil.cpp +185 -0
  855. data/deps/include/bullet/LinearMath/btGeometryUtil.h +42 -0
  856. data/deps/include/bullet/LinearMath/btGrahamScan2dConvexHull.h +110 -0
  857. data/deps/include/bullet/LinearMath/btHashMap.h +450 -0
  858. data/deps/include/bullet/LinearMath/btIDebugDraw.h +418 -0
  859. data/deps/include/bullet/LinearMath/btList.h +73 -0
  860. data/deps/include/bullet/LinearMath/btMatrix3x3.h +771 -0
  861. data/deps/include/bullet/LinearMath/btMinMax.h +71 -0
  862. data/deps/include/bullet/LinearMath/btMotionState.h +40 -0
  863. data/deps/include/bullet/LinearMath/btPoolAllocator.h +121 -0
  864. data/deps/include/bullet/LinearMath/btQuadWord.h +180 -0
  865. data/deps/include/bullet/LinearMath/btQuaternion.h +430 -0
  866. data/deps/include/bullet/LinearMath/btQuickprof.cpp +566 -0
  867. data/deps/include/bullet/LinearMath/btQuickprof.h +203 -0
  868. data/deps/include/bullet/LinearMath/btRandom.h +42 -0
  869. data/deps/include/bullet/LinearMath/btScalar.h +539 -0
  870. data/deps/include/bullet/LinearMath/btSerializer.cpp +841 -0
  871. data/deps/include/bullet/LinearMath/btSerializer.h +639 -0
  872. data/deps/include/bullet/LinearMath/btStackAlloc.h +116 -0
  873. data/deps/include/bullet/LinearMath/btTransform.h +307 -0
  874. data/deps/include/bullet/LinearMath/btTransformUtil.h +228 -0
  875. data/deps/include/bullet/LinearMath/btVector3.h +766 -0
  876. data/deps/include/bullet/LinearMath/cmake_install.cmake +29 -0
  877. data/deps/include/bullet/LinearMath/ibmsdk/Makefile +39 -0
  878. data/deps/include/bullet/LinearMath/premake4.lua +11 -0
  879. data/deps/include/bullet/Makefile +122 -0
  880. data/deps/include/bullet/Makefile.am +554 -0
  881. data/deps/include/bullet/MiniCL/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  882. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/CXX.includecache +332 -0
  883. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/DependInfo.cmake +32 -0
  884. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/MiniCL.obj +0 -0
  885. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/MiniCLTask/MiniCLTask.obj +0 -0
  886. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/MiniCLTaskScheduler.obj +0 -0
  887. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/build.make +158 -0
  888. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/cmake_clean.cmake +12 -0
  889. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/cmake_clean_target.cmake +3 -0
  890. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/depend.internal +70 -0
  891. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/depend.make +70 -0
  892. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/flags.make +8 -0
  893. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/includes_CXX.rsp +1 -0
  894. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/link.txt +2 -0
  895. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/progress.make +4 -0
  896. data/deps/include/bullet/MiniCL/CMakeFiles/progress.marks +1 -0
  897. data/deps/include/bullet/MiniCL/CMakeLists.txt +66 -0
  898. data/deps/include/bullet/MiniCL/Makefile +191 -0
  899. data/deps/include/bullet/MiniCL/MiniCL.cpp +784 -0
  900. data/deps/include/bullet/MiniCL/MiniCLTask/MiniCLTask.cpp +74 -0
  901. data/deps/include/bullet/MiniCL/MiniCLTask/MiniCLTask.h +62 -0
  902. data/deps/include/bullet/MiniCL/MiniCLTaskScheduler.cpp +519 -0
  903. data/deps/include/bullet/MiniCL/MiniCLTaskScheduler.h +194 -0
  904. data/deps/include/bullet/MiniCL/cl.h +867 -0
  905. data/deps/include/bullet/MiniCL/cl_MiniCL_Defs.h +439 -0
  906. data/deps/include/bullet/MiniCL/cl_gl.h +113 -0
  907. data/deps/include/bullet/MiniCL/cl_platform.h +254 -0
  908. data/deps/include/bullet/MiniCL/cmake_install.cmake +29 -0
  909. data/deps/include/bullet/btBulletCollisionCommon.h +69 -0
  910. data/deps/include/bullet/btBulletDynamicsCommon.h +48 -0
  911. data/deps/include/bullet/cmake_install.cmake +40 -0
  912. data/deps/include/bullet/ibmsdk/Makefile +16 -0
  913. data/deps/include/bullet/vectormath/scalar/boolInVec.h +225 -0
  914. data/deps/include/bullet/vectormath/scalar/floatInVec.h +343 -0
  915. data/deps/include/bullet/vectormath/scalar/mat_aos.h +1630 -0
  916. data/deps/include/bullet/vectormath/scalar/quat_aos.h +433 -0
  917. data/deps/include/bullet/vectormath/scalar/vec_aos.h +1426 -0
  918. data/deps/include/bullet/vectormath/scalar/vectormath_aos.h +1872 -0
  919. data/deps/include/bullet/vectormath/sse/boolInVec.h +247 -0
  920. data/deps/include/bullet/vectormath/sse/floatInVec.h +340 -0
  921. data/deps/include/bullet/vectormath/sse/mat_aos.h +2190 -0
  922. data/deps/include/bullet/vectormath/sse/quat_aos.h +579 -0
  923. data/deps/include/bullet/vectormath/sse/vec_aos.h +1455 -0
  924. data/deps/include/bullet/vectormath/sse/vecidx_aos.h +80 -0
  925. data/deps/include/bullet/vectormath/sse/vectormath_aos.h +2547 -0
  926. data/deps/include/bullet/vectormath/vmInclude.h +27 -0
  927. data/deps/lib/libBulletCollision.a +0 -0
  928. data/deps/lib/libBulletDynamics.a +0 -0
  929. data/deps/lib/libBulletFileLoader.a +0 -0
  930. data/deps/lib/libBulletMultiThreaded.a +0 -0
  931. data/deps/lib/libBulletSoftBody.a +0 -0
  932. data/deps/lib/libBulletSoftBodySolvers_OpenCL_Mini.a +0 -0
  933. data/deps/lib/libBulletWorldImporter.a +0 -0
  934. data/deps/lib/libConvexDecomposition.a +0 -0
  935. data/deps/lib/libGIMPACTUtils.a +0 -0
  936. data/deps/lib/libHACD.a +0 -0
  937. data/deps/lib/libLinearMath.a +0 -0
  938. data/deps/lib/libMiniCL.a +0 -0
  939. data/lib/Bullet.so +0 -0
  940. data/lib/BulletConfig.rb +28 -0
  941. data/lib/Version.rb +5 -0
  942. data/sample/hello_bullet/HelloBullet.rb +170 -0
  943. metadata +987 -0
@@ -0,0 +1,2190 @@
1
+ /*
2
+ Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms,
6
+ with or without modification, are permitted provided that the
7
+ following conditions are met:
8
+ * Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright
11
+ notice, this list of conditions and the following disclaimer in the
12
+ documentation and/or other materials provided with the distribution.
13
+ * Neither the name of the Sony Computer Entertainment Inc nor the names
14
+ of its contributors may be used to endorse or promote products derived
15
+ from this software without specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
+ POSSIBILITY OF SUCH DAMAGE.
28
+ */
29
+
30
+
31
+ #ifndef _VECTORMATH_MAT_AOS_CPP_H
32
+ #define _VECTORMATH_MAT_AOS_CPP_H
33
+
34
+ namespace Vectormath {
35
+ namespace Aos {
36
+
37
+ //-----------------------------------------------------------------------------
38
+ // Constants
39
+ // for shuffles, words are labeled [x,y,z,w] [a,b,c,d]
40
+
41
+ #define _VECTORMATH_PERM_ZBWX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_B, _VECTORMATH_PERM_W, _VECTORMATH_PERM_X })
42
+ #define _VECTORMATH_PERM_XCYX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_C, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X })
43
+ #define _VECTORMATH_PERM_XYAB ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_A, _VECTORMATH_PERM_B })
44
+ #define _VECTORMATH_PERM_ZWCD ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_W, _VECTORMATH_PERM_C, _VECTORMATH_PERM_D })
45
+ #define _VECTORMATH_PERM_XZBX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_B, _VECTORMATH_PERM_X })
46
+ #define _VECTORMATH_PERM_CXXX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_C, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X })
47
+ #define _VECTORMATH_PERM_YAXX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_A, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X })
48
+ #define _VECTORMATH_PERM_XAZC ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_A, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_C })
49
+ #define _VECTORMATH_PERM_YXWZ ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X, _VECTORMATH_PERM_W, _VECTORMATH_PERM_Z })
50
+ #define _VECTORMATH_PERM_YBWD ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_B, _VECTORMATH_PERM_W, _VECTORMATH_PERM_D })
51
+ #define _VECTORMATH_PERM_XYCX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_C, _VECTORMATH_PERM_X })
52
+ #define _VECTORMATH_PERM_YCXY ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_C, _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y })
53
+ #define _VECTORMATH_PERM_CXYC ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_C, _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_C })
54
+ #define _VECTORMATH_PERM_ZAYX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_A, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X })
55
+ #define _VECTORMATH_PERM_BZXX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_B, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X })
56
+ #define _VECTORMATH_PERM_XZYA ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_A })
57
+ #define _VECTORMATH_PERM_ZXXB ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X, _VECTORMATH_PERM_B })
58
+ #define _VECTORMATH_PERM_YXXC ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X, _VECTORMATH_PERM_C })
59
+ #define _VECTORMATH_PERM_BBYX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_B, _VECTORMATH_PERM_B, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X })
60
+ #define _VECTORMATH_PI_OVER_2 1.570796327f
61
+
62
+ //-----------------------------------------------------------------------------
63
+ // Definitions
64
+
65
+ VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const Matrix3 & mat )
66
+ {
67
+ mCol0 = mat.mCol0;
68
+ mCol1 = mat.mCol1;
69
+ mCol2 = mat.mCol2;
70
+ }
71
+
72
+ VECTORMATH_FORCE_INLINE Matrix3::Matrix3( float scalar )
73
+ {
74
+ mCol0 = Vector3( scalar );
75
+ mCol1 = Vector3( scalar );
76
+ mCol2 = Vector3( scalar );
77
+ }
78
+
79
+ VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const floatInVec &scalar )
80
+ {
81
+ mCol0 = Vector3( scalar );
82
+ mCol1 = Vector3( scalar );
83
+ mCol2 = Vector3( scalar );
84
+ }
85
+
86
+ VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const Quat &unitQuat )
87
+ {
88
+ __m128 xyzw_2, wwww, yzxw, zxyw, yzxw_2, zxyw_2;
89
+ __m128 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
90
+ VM_ATTRIBUTE_ALIGN16 unsigned int sx[4] = {0xffffffff, 0, 0, 0};
91
+ VM_ATTRIBUTE_ALIGN16 unsigned int sz[4] = {0, 0, 0xffffffff, 0};
92
+ __m128 select_x = _mm_load_ps((float *)sx);
93
+ __m128 select_z = _mm_load_ps((float *)sz);
94
+
95
+ xyzw_2 = _mm_add_ps( unitQuat.get128(), unitQuat.get128() );
96
+ wwww = _mm_shuffle_ps( unitQuat.get128(), unitQuat.get128(), _MM_SHUFFLE(3,3,3,3) );
97
+ yzxw = _mm_shuffle_ps( unitQuat.get128(), unitQuat.get128(), _MM_SHUFFLE(3,0,2,1) );
98
+ zxyw = _mm_shuffle_ps( unitQuat.get128(), unitQuat.get128(), _MM_SHUFFLE(3,1,0,2) );
99
+ yzxw_2 = _mm_shuffle_ps( xyzw_2, xyzw_2, _MM_SHUFFLE(3,0,2,1) );
100
+ zxyw_2 = _mm_shuffle_ps( xyzw_2, xyzw_2, _MM_SHUFFLE(3,1,0,2) );
101
+
102
+ tmp0 = _mm_mul_ps( yzxw_2, wwww ); // tmp0 = 2yw, 2zw, 2xw, 2w2
103
+ tmp1 = _mm_sub_ps( _mm_set1_ps(1.0f), _mm_mul_ps(yzxw, yzxw_2) ); // tmp1 = 1 - 2y2, 1 - 2z2, 1 - 2x2, 1 - 2w2
104
+ tmp2 = _mm_mul_ps( yzxw, xyzw_2 ); // tmp2 = 2xy, 2yz, 2xz, 2w2
105
+ tmp0 = _mm_add_ps( _mm_mul_ps(zxyw, xyzw_2), tmp0 ); // tmp0 = 2yw + 2zx, 2zw + 2xy, 2xw + 2yz, 2w2 + 2w2
106
+ tmp1 = _mm_sub_ps( tmp1, _mm_mul_ps(zxyw, zxyw_2) ); // tmp1 = 1 - 2y2 - 2z2, 1 - 2z2 - 2x2, 1 - 2x2 - 2y2, 1 - 2w2 - 2w2
107
+ tmp2 = _mm_sub_ps( tmp2, _mm_mul_ps(zxyw_2, wwww) ); // tmp2 = 2xy - 2zw, 2yz - 2xw, 2xz - 2yw, 2w2 -2w2
108
+
109
+ tmp3 = vec_sel( tmp0, tmp1, select_x );
110
+ tmp4 = vec_sel( tmp1, tmp2, select_x );
111
+ tmp5 = vec_sel( tmp2, tmp0, select_x );
112
+ mCol0 = Vector3( vec_sel( tmp3, tmp2, select_z ) );
113
+ mCol1 = Vector3( vec_sel( tmp4, tmp0, select_z ) );
114
+ mCol2 = Vector3( vec_sel( tmp5, tmp1, select_z ) );
115
+ }
116
+
117
+ VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const Vector3 &_col0, const Vector3 &_col1, const Vector3 &_col2 )
118
+ {
119
+ mCol0 = _col0;
120
+ mCol1 = _col1;
121
+ mCol2 = _col2;
122
+ }
123
+
124
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol0( const Vector3 &_col0 )
125
+ {
126
+ mCol0 = _col0;
127
+ return *this;
128
+ }
129
+
130
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol1( const Vector3 &_col1 )
131
+ {
132
+ mCol1 = _col1;
133
+ return *this;
134
+ }
135
+
136
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol2( const Vector3 &_col2 )
137
+ {
138
+ mCol2 = _col2;
139
+ return *this;
140
+ }
141
+
142
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol( int col, const Vector3 &vec )
143
+ {
144
+ *(&mCol0 + col) = vec;
145
+ return *this;
146
+ }
147
+
148
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setRow( int row, const Vector3 &vec )
149
+ {
150
+ mCol0.setElem( row, vec.getElem( 0 ) );
151
+ mCol1.setElem( row, vec.getElem( 1 ) );
152
+ mCol2.setElem( row, vec.getElem( 2 ) );
153
+ return *this;
154
+ }
155
+
156
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setElem( int col, int row, float val )
157
+ {
158
+ (*this)[col].setElem(row, val);
159
+ return *this;
160
+ }
161
+
162
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setElem( int col, int row, const floatInVec &val )
163
+ {
164
+ Vector3 tmpV3_0;
165
+ tmpV3_0 = this->getCol( col );
166
+ tmpV3_0.setElem( row, val );
167
+ this->setCol( col, tmpV3_0 );
168
+ return *this;
169
+ }
170
+
171
+ VECTORMATH_FORCE_INLINE const floatInVec Matrix3::getElem( int col, int row ) const
172
+ {
173
+ return this->getCol( col ).getElem( row );
174
+ }
175
+
176
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol0( ) const
177
+ {
178
+ return mCol0;
179
+ }
180
+
181
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol1( ) const
182
+ {
183
+ return mCol1;
184
+ }
185
+
186
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol2( ) const
187
+ {
188
+ return mCol2;
189
+ }
190
+
191
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol( int col ) const
192
+ {
193
+ return *(&mCol0 + col);
194
+ }
195
+
196
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getRow( int row ) const
197
+ {
198
+ return Vector3( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ) );
199
+ }
200
+
201
+ VECTORMATH_FORCE_INLINE Vector3 & Matrix3::operator []( int col )
202
+ {
203
+ return *(&mCol0 + col);
204
+ }
205
+
206
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix3::operator []( int col ) const
207
+ {
208
+ return *(&mCol0 + col);
209
+ }
210
+
211
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator =( const Matrix3 & mat )
212
+ {
213
+ mCol0 = mat.mCol0;
214
+ mCol1 = mat.mCol1;
215
+ mCol2 = mat.mCol2;
216
+ return *this;
217
+ }
218
+
219
+ VECTORMATH_FORCE_INLINE const Matrix3 transpose( const Matrix3 & mat )
220
+ {
221
+ __m128 tmp0, tmp1, res0, res1, res2;
222
+ tmp0 = vec_mergeh( mat.getCol0().get128(), mat.getCol2().get128() );
223
+ tmp1 = vec_mergel( mat.getCol0().get128(), mat.getCol2().get128() );
224
+ res0 = vec_mergeh( tmp0, mat.getCol1().get128() );
225
+ //res1 = vec_perm( tmp0, mat.getCol1().get128(), _VECTORMATH_PERM_ZBWX );
226
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
227
+ res1 = _mm_shuffle_ps( tmp0, tmp0, _MM_SHUFFLE(0,3,2,2));
228
+ res1 = vec_sel(res1, mat.getCol1().get128(), select_y);
229
+ //res2 = vec_perm( tmp1, mat.getCol1().get128(), _VECTORMATH_PERM_XCYX );
230
+ res2 = _mm_shuffle_ps( tmp1, tmp1, _MM_SHUFFLE(0,1,1,0));
231
+ res2 = vec_sel(res2, vec_splat(mat.getCol1().get128(), 2), select_y);
232
+ return Matrix3(
233
+ Vector3( res0 ),
234
+ Vector3( res1 ),
235
+ Vector3( res2 )
236
+ );
237
+ }
238
+
239
+ VECTORMATH_FORCE_INLINE const Matrix3 inverse( const Matrix3 & mat )
240
+ {
241
+ __m128 tmp0, tmp1, tmp2, tmp3, tmp4, dot, invdet, inv0, inv1, inv2;
242
+ tmp2 = _vmathVfCross( mat.getCol0().get128(), mat.getCol1().get128() );
243
+ tmp0 = _vmathVfCross( mat.getCol1().get128(), mat.getCol2().get128() );
244
+ tmp1 = _vmathVfCross( mat.getCol2().get128(), mat.getCol0().get128() );
245
+ dot = _vmathVfDot3( tmp2, mat.getCol2().get128() );
246
+ dot = vec_splat( dot, 0 );
247
+ invdet = recipf4( dot );
248
+ tmp3 = vec_mergeh( tmp0, tmp2 );
249
+ tmp4 = vec_mergel( tmp0, tmp2 );
250
+ inv0 = vec_mergeh( tmp3, tmp1 );
251
+ //inv1 = vec_perm( tmp3, tmp1, _VECTORMATH_PERM_ZBWX );
252
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
253
+ inv1 = _mm_shuffle_ps( tmp3, tmp3, _MM_SHUFFLE(0,3,2,2));
254
+ inv1 = vec_sel(inv1, tmp1, select_y);
255
+ //inv2 = vec_perm( tmp4, tmp1, _VECTORMATH_PERM_XCYX );
256
+ inv2 = _mm_shuffle_ps( tmp4, tmp4, _MM_SHUFFLE(0,1,1,0));
257
+ inv2 = vec_sel(inv2, vec_splat(tmp1, 2), select_y);
258
+ inv0 = vec_mul( inv0, invdet );
259
+ inv1 = vec_mul( inv1, invdet );
260
+ inv2 = vec_mul( inv2, invdet );
261
+ return Matrix3(
262
+ Vector3( inv0 ),
263
+ Vector3( inv1 ),
264
+ Vector3( inv2 )
265
+ );
266
+ }
267
+
268
+ VECTORMATH_FORCE_INLINE const floatInVec determinant( const Matrix3 & mat )
269
+ {
270
+ return dot( mat.getCol2(), cross( mat.getCol0(), mat.getCol1() ) );
271
+ }
272
+
273
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator +( const Matrix3 & mat ) const
274
+ {
275
+ return Matrix3(
276
+ ( mCol0 + mat.mCol0 ),
277
+ ( mCol1 + mat.mCol1 ),
278
+ ( mCol2 + mat.mCol2 )
279
+ );
280
+ }
281
+
282
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator -( const Matrix3 & mat ) const
283
+ {
284
+ return Matrix3(
285
+ ( mCol0 - mat.mCol0 ),
286
+ ( mCol1 - mat.mCol1 ),
287
+ ( mCol2 - mat.mCol2 )
288
+ );
289
+ }
290
+
291
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator +=( const Matrix3 & mat )
292
+ {
293
+ *this = *this + mat;
294
+ return *this;
295
+ }
296
+
297
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator -=( const Matrix3 & mat )
298
+ {
299
+ *this = *this - mat;
300
+ return *this;
301
+ }
302
+
303
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator -( ) const
304
+ {
305
+ return Matrix3(
306
+ ( -mCol0 ),
307
+ ( -mCol1 ),
308
+ ( -mCol2 )
309
+ );
310
+ }
311
+
312
+ VECTORMATH_FORCE_INLINE const Matrix3 absPerElem( const Matrix3 & mat )
313
+ {
314
+ return Matrix3(
315
+ absPerElem( mat.getCol0() ),
316
+ absPerElem( mat.getCol1() ),
317
+ absPerElem( mat.getCol2() )
318
+ );
319
+ }
320
+
321
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator *( float scalar ) const
322
+ {
323
+ return *this * floatInVec(scalar);
324
+ }
325
+
326
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator *( const floatInVec &scalar ) const
327
+ {
328
+ return Matrix3(
329
+ ( mCol0 * scalar ),
330
+ ( mCol1 * scalar ),
331
+ ( mCol2 * scalar )
332
+ );
333
+ }
334
+
335
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator *=( float scalar )
336
+ {
337
+ return *this *= floatInVec(scalar);
338
+ }
339
+
340
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator *=( const floatInVec &scalar )
341
+ {
342
+ *this = *this * scalar;
343
+ return *this;
344
+ }
345
+
346
+ VECTORMATH_FORCE_INLINE const Matrix3 operator *( float scalar, const Matrix3 & mat )
347
+ {
348
+ return floatInVec(scalar) * mat;
349
+ }
350
+
351
+ VECTORMATH_FORCE_INLINE const Matrix3 operator *( const floatInVec &scalar, const Matrix3 & mat )
352
+ {
353
+ return mat * scalar;
354
+ }
355
+
356
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix3::operator *( const Vector3 &vec ) const
357
+ {
358
+ __m128 res;
359
+ __m128 xxxx, yyyy, zzzz;
360
+ xxxx = vec_splat( vec.get128(), 0 );
361
+ yyyy = vec_splat( vec.get128(), 1 );
362
+ zzzz = vec_splat( vec.get128(), 2 );
363
+ res = vec_mul( mCol0.get128(), xxxx );
364
+ res = vec_madd( mCol1.get128(), yyyy, res );
365
+ res = vec_madd( mCol2.get128(), zzzz, res );
366
+ return Vector3( res );
367
+ }
368
+
369
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator *( const Matrix3 & mat ) const
370
+ {
371
+ return Matrix3(
372
+ ( *this * mat.mCol0 ),
373
+ ( *this * mat.mCol1 ),
374
+ ( *this * mat.mCol2 )
375
+ );
376
+ }
377
+
378
+ VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator *=( const Matrix3 & mat )
379
+ {
380
+ *this = *this * mat;
381
+ return *this;
382
+ }
383
+
384
+ VECTORMATH_FORCE_INLINE const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 )
385
+ {
386
+ return Matrix3(
387
+ mulPerElem( mat0.getCol0(), mat1.getCol0() ),
388
+ mulPerElem( mat0.getCol1(), mat1.getCol1() ),
389
+ mulPerElem( mat0.getCol2(), mat1.getCol2() )
390
+ );
391
+ }
392
+
393
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::identity( )
394
+ {
395
+ return Matrix3(
396
+ Vector3::xAxis( ),
397
+ Vector3::yAxis( ),
398
+ Vector3::zAxis( )
399
+ );
400
+ }
401
+
402
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationX( float radians )
403
+ {
404
+ return rotationX( floatInVec(radians) );
405
+ }
406
+
407
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationX( const floatInVec &radians )
408
+ {
409
+ __m128 s, c, res1, res2;
410
+ __m128 zero;
411
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
412
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
413
+ zero = _mm_setzero_ps();
414
+ sincosf4( radians.get128(), &s, &c );
415
+ res1 = vec_sel( zero, c, select_y );
416
+ res1 = vec_sel( res1, s, select_z );
417
+ res2 = vec_sel( zero, negatef4(s), select_y );
418
+ res2 = vec_sel( res2, c, select_z );
419
+ return Matrix3(
420
+ Vector3::xAxis( ),
421
+ Vector3( res1 ),
422
+ Vector3( res2 )
423
+ );
424
+ }
425
+
426
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationY( float radians )
427
+ {
428
+ return rotationY( floatInVec(radians) );
429
+ }
430
+
431
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationY( const floatInVec &radians )
432
+ {
433
+ __m128 s, c, res0, res2;
434
+ __m128 zero;
435
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
436
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
437
+ zero = _mm_setzero_ps();
438
+ sincosf4( radians.get128(), &s, &c );
439
+ res0 = vec_sel( zero, c, select_x );
440
+ res0 = vec_sel( res0, negatef4(s), select_z );
441
+ res2 = vec_sel( zero, s, select_x );
442
+ res2 = vec_sel( res2, c, select_z );
443
+ return Matrix3(
444
+ Vector3( res0 ),
445
+ Vector3::yAxis( ),
446
+ Vector3( res2 )
447
+ );
448
+ }
449
+
450
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationZ( float radians )
451
+ {
452
+ return rotationZ( floatInVec(radians) );
453
+ }
454
+
455
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationZ( const floatInVec &radians )
456
+ {
457
+ __m128 s, c, res0, res1;
458
+ __m128 zero;
459
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
460
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
461
+ zero = _mm_setzero_ps();
462
+ sincosf4( radians.get128(), &s, &c );
463
+ res0 = vec_sel( zero, c, select_x );
464
+ res0 = vec_sel( res0, s, select_y );
465
+ res1 = vec_sel( zero, negatef4(s), select_x );
466
+ res1 = vec_sel( res1, c, select_y );
467
+ return Matrix3(
468
+ Vector3( res0 ),
469
+ Vector3( res1 ),
470
+ Vector3::zAxis( )
471
+ );
472
+ }
473
+
474
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationZYX( const Vector3 &radiansXYZ )
475
+ {
476
+ __m128 angles, s, negS, c, X0, X1, Y0, Y1, Z0, Z1, tmp;
477
+ angles = Vector4( radiansXYZ, 0.0f ).get128();
478
+ sincosf4( angles, &s, &c );
479
+ negS = negatef4( s );
480
+ Z0 = vec_mergel( c, s );
481
+ Z1 = vec_mergel( negS, c );
482
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
483
+ Z1 = vec_and( Z1, _mm_load_ps( (float *)select_xyz ) );
484
+ Y0 = _mm_shuffle_ps( c, negS, _MM_SHUFFLE(0,1,1,1) );
485
+ Y1 = _mm_shuffle_ps( s, c, _MM_SHUFFLE(0,1,1,1) );
486
+ X0 = vec_splat( s, 0 );
487
+ X1 = vec_splat( c, 0 );
488
+ tmp = vec_mul( Z0, Y1 );
489
+ return Matrix3(
490
+ Vector3( vec_mul( Z0, Y0 ) ),
491
+ Vector3( vec_madd( Z1, X1, vec_mul( tmp, X0 ) ) ),
492
+ Vector3( vec_nmsub( Z1, X0, vec_mul( tmp, X1 ) ) )
493
+ );
494
+ }
495
+
496
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotation( float radians, const Vector3 &unitVec )
497
+ {
498
+ return rotation( floatInVec(radians), unitVec );
499
+ }
500
+
501
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotation( const floatInVec &radians, const Vector3 &unitVec )
502
+ {
503
+ __m128 axis, s, c, oneMinusC, axisS, negAxisS, xxxx, yyyy, zzzz, tmp0, tmp1, tmp2;
504
+ axis = unitVec.get128();
505
+ sincosf4( radians.get128(), &s, &c );
506
+ xxxx = vec_splat( axis, 0 );
507
+ yyyy = vec_splat( axis, 1 );
508
+ zzzz = vec_splat( axis, 2 );
509
+ oneMinusC = vec_sub( _mm_set1_ps(1.0f), c );
510
+ axisS = vec_mul( axis, s );
511
+ negAxisS = negatef4( axisS );
512
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
513
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
514
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
515
+ //tmp0 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_XZBX );
516
+ tmp0 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,2,0) );
517
+ tmp0 = vec_sel(tmp0, vec_splat(negAxisS, 1), select_z);
518
+ //tmp1 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_CXXX );
519
+ tmp1 = vec_sel( vec_splat(axisS, 0), vec_splat(negAxisS, 2), select_x );
520
+ //tmp2 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_YAXX );
521
+ tmp2 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,0,1) );
522
+ tmp2 = vec_sel(tmp2, vec_splat(negAxisS, 0), select_y);
523
+ tmp0 = vec_sel( tmp0, c, select_x );
524
+ tmp1 = vec_sel( tmp1, c, select_y );
525
+ tmp2 = vec_sel( tmp2, c, select_z );
526
+ return Matrix3(
527
+ Vector3( vec_madd( vec_mul( axis, xxxx ), oneMinusC, tmp0 ) ),
528
+ Vector3( vec_madd( vec_mul( axis, yyyy ), oneMinusC, tmp1 ) ),
529
+ Vector3( vec_madd( vec_mul( axis, zzzz ), oneMinusC, tmp2 ) )
530
+ );
531
+ }
532
+
533
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotation( const Quat &unitQuat )
534
+ {
535
+ return Matrix3( unitQuat );
536
+ }
537
+
538
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::scale( const Vector3 &scaleVec )
539
+ {
540
+ __m128 zero = _mm_setzero_ps();
541
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
542
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
543
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
544
+ return Matrix3(
545
+ Vector3( vec_sel( zero, scaleVec.get128(), select_x ) ),
546
+ Vector3( vec_sel( zero, scaleVec.get128(), select_y ) ),
547
+ Vector3( vec_sel( zero, scaleVec.get128(), select_z ) )
548
+ );
549
+ }
550
+
551
+ VECTORMATH_FORCE_INLINE const Matrix3 appendScale( const Matrix3 & mat, const Vector3 &scaleVec )
552
+ {
553
+ return Matrix3(
554
+ ( mat.getCol0() * scaleVec.getX( ) ),
555
+ ( mat.getCol1() * scaleVec.getY( ) ),
556
+ ( mat.getCol2() * scaleVec.getZ( ) )
557
+ );
558
+ }
559
+
560
+ VECTORMATH_FORCE_INLINE const Matrix3 prependScale( const Vector3 &scaleVec, const Matrix3 & mat )
561
+ {
562
+ return Matrix3(
563
+ mulPerElem( mat.getCol0(), scaleVec ),
564
+ mulPerElem( mat.getCol1(), scaleVec ),
565
+ mulPerElem( mat.getCol2(), scaleVec )
566
+ );
567
+ }
568
+
569
+ VECTORMATH_FORCE_INLINE const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 )
570
+ {
571
+ return Matrix3(
572
+ select( mat0.getCol0(), mat1.getCol0(), select1 ),
573
+ select( mat0.getCol1(), mat1.getCol1(), select1 ),
574
+ select( mat0.getCol2(), mat1.getCol2(), select1 )
575
+ );
576
+ }
577
+
578
+ VECTORMATH_FORCE_INLINE const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, const boolInVec &select1 )
579
+ {
580
+ return Matrix3(
581
+ select( mat0.getCol0(), mat1.getCol0(), select1 ),
582
+ select( mat0.getCol1(), mat1.getCol1(), select1 ),
583
+ select( mat0.getCol2(), mat1.getCol2(), select1 )
584
+ );
585
+ }
586
+
587
+ #ifdef _VECTORMATH_DEBUG
588
+
589
+ VECTORMATH_FORCE_INLINE void print( const Matrix3 & mat )
590
+ {
591
+ print( mat.getRow( 0 ) );
592
+ print( mat.getRow( 1 ) );
593
+ print( mat.getRow( 2 ) );
594
+ }
595
+
596
+ VECTORMATH_FORCE_INLINE void print( const Matrix3 & mat, const char * name )
597
+ {
598
+ printf("%s:\n", name);
599
+ print( mat );
600
+ }
601
+
602
+ #endif
603
+
604
+ VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Matrix4 & mat )
605
+ {
606
+ mCol0 = mat.mCol0;
607
+ mCol1 = mat.mCol1;
608
+ mCol2 = mat.mCol2;
609
+ mCol3 = mat.mCol3;
610
+ }
611
+
612
+ VECTORMATH_FORCE_INLINE Matrix4::Matrix4( float scalar )
613
+ {
614
+ mCol0 = Vector4( scalar );
615
+ mCol1 = Vector4( scalar );
616
+ mCol2 = Vector4( scalar );
617
+ mCol3 = Vector4( scalar );
618
+ }
619
+
620
+ VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const floatInVec &scalar )
621
+ {
622
+ mCol0 = Vector4( scalar );
623
+ mCol1 = Vector4( scalar );
624
+ mCol2 = Vector4( scalar );
625
+ mCol3 = Vector4( scalar );
626
+ }
627
+
628
+ VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Transform3 & mat )
629
+ {
630
+ mCol0 = Vector4( mat.getCol0(), 0.0f );
631
+ mCol1 = Vector4( mat.getCol1(), 0.0f );
632
+ mCol2 = Vector4( mat.getCol2(), 0.0f );
633
+ mCol3 = Vector4( mat.getCol3(), 1.0f );
634
+ }
635
+
636
+ VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Vector4 &_col0, const Vector4 &_col1, const Vector4 &_col2, const Vector4 &_col3 )
637
+ {
638
+ mCol0 = _col0;
639
+ mCol1 = _col1;
640
+ mCol2 = _col2;
641
+ mCol3 = _col3;
642
+ }
643
+
644
+ VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Matrix3 & mat, const Vector3 &translateVec )
645
+ {
646
+ mCol0 = Vector4( mat.getCol0(), 0.0f );
647
+ mCol1 = Vector4( mat.getCol1(), 0.0f );
648
+ mCol2 = Vector4( mat.getCol2(), 0.0f );
649
+ mCol3 = Vector4( translateVec, 1.0f );
650
+ }
651
+
652
+ VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Quat &unitQuat, const Vector3 &translateVec )
653
+ {
654
+ Matrix3 mat;
655
+ mat = Matrix3( unitQuat );
656
+ mCol0 = Vector4( mat.getCol0(), 0.0f );
657
+ mCol1 = Vector4( mat.getCol1(), 0.0f );
658
+ mCol2 = Vector4( mat.getCol2(), 0.0f );
659
+ mCol3 = Vector4( translateVec, 1.0f );
660
+ }
661
+
662
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol0( const Vector4 &_col0 )
663
+ {
664
+ mCol0 = _col0;
665
+ return *this;
666
+ }
667
+
668
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol1( const Vector4 &_col1 )
669
+ {
670
+ mCol1 = _col1;
671
+ return *this;
672
+ }
673
+
674
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol2( const Vector4 &_col2 )
675
+ {
676
+ mCol2 = _col2;
677
+ return *this;
678
+ }
679
+
680
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol3( const Vector4 &_col3 )
681
+ {
682
+ mCol3 = _col3;
683
+ return *this;
684
+ }
685
+
686
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol( int col, const Vector4 &vec )
687
+ {
688
+ *(&mCol0 + col) = vec;
689
+ return *this;
690
+ }
691
+
692
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setRow( int row, const Vector4 &vec )
693
+ {
694
+ mCol0.setElem( row, vec.getElem( 0 ) );
695
+ mCol1.setElem( row, vec.getElem( 1 ) );
696
+ mCol2.setElem( row, vec.getElem( 2 ) );
697
+ mCol3.setElem( row, vec.getElem( 3 ) );
698
+ return *this;
699
+ }
700
+
701
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setElem( int col, int row, float val )
702
+ {
703
+ (*this)[col].setElem(row, val);
704
+ return *this;
705
+ }
706
+
707
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setElem( int col, int row, const floatInVec &val )
708
+ {
709
+ Vector4 tmpV3_0;
710
+ tmpV3_0 = this->getCol( col );
711
+ tmpV3_0.setElem( row, val );
712
+ this->setCol( col, tmpV3_0 );
713
+ return *this;
714
+ }
715
+
716
+ VECTORMATH_FORCE_INLINE const floatInVec Matrix4::getElem( int col, int row ) const
717
+ {
718
+ return this->getCol( col ).getElem( row );
719
+ }
720
+
721
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol0( ) const
722
+ {
723
+ return mCol0;
724
+ }
725
+
726
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol1( ) const
727
+ {
728
+ return mCol1;
729
+ }
730
+
731
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol2( ) const
732
+ {
733
+ return mCol2;
734
+ }
735
+
736
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol3( ) const
737
+ {
738
+ return mCol3;
739
+ }
740
+
741
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol( int col ) const
742
+ {
743
+ return *(&mCol0 + col);
744
+ }
745
+
746
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getRow( int row ) const
747
+ {
748
+ return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );
749
+ }
750
+
751
+ VECTORMATH_FORCE_INLINE Vector4 & Matrix4::operator []( int col )
752
+ {
753
+ return *(&mCol0 + col);
754
+ }
755
+
756
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator []( int col ) const
757
+ {
758
+ return *(&mCol0 + col);
759
+ }
760
+
761
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator =( const Matrix4 & mat )
762
+ {
763
+ mCol0 = mat.mCol0;
764
+ mCol1 = mat.mCol1;
765
+ mCol2 = mat.mCol2;
766
+ mCol3 = mat.mCol3;
767
+ return *this;
768
+ }
769
+
770
+ VECTORMATH_FORCE_INLINE const Matrix4 transpose( const Matrix4 & mat )
771
+ {
772
+ __m128 tmp0, tmp1, tmp2, tmp3, res0, res1, res2, res3;
773
+ tmp0 = vec_mergeh( mat.getCol0().get128(), mat.getCol2().get128() );
774
+ tmp1 = vec_mergeh( mat.getCol1().get128(), mat.getCol3().get128() );
775
+ tmp2 = vec_mergel( mat.getCol0().get128(), mat.getCol2().get128() );
776
+ tmp3 = vec_mergel( mat.getCol1().get128(), mat.getCol3().get128() );
777
+ res0 = vec_mergeh( tmp0, tmp1 );
778
+ res1 = vec_mergel( tmp0, tmp1 );
779
+ res2 = vec_mergeh( tmp2, tmp3 );
780
+ res3 = vec_mergel( tmp2, tmp3 );
781
+ return Matrix4(
782
+ Vector4( res0 ),
783
+ Vector4( res1 ),
784
+ Vector4( res2 ),
785
+ Vector4( res3 )
786
+ );
787
+ }
788
+
789
+ // TODO: Tidy
790
+ static VM_ATTRIBUTE_ALIGN16 const unsigned int _vmathPNPN[4] = {0x00000000, 0x80000000, 0x00000000, 0x80000000};
791
+ static VM_ATTRIBUTE_ALIGN16 const unsigned int _vmathNPNP[4] = {0x80000000, 0x00000000, 0x80000000, 0x00000000};
792
+ static VM_ATTRIBUTE_ALIGN16 const float _vmathZERONE[4] = {1.0f, 0.0f, 0.0f, 1.0f};
793
+
794
+ VECTORMATH_FORCE_INLINE const Matrix4 inverse( const Matrix4 & mat )
795
+ {
796
+ __m128 Va,Vb,Vc;
797
+ __m128 r1,r2,r3,tt,tt2;
798
+ __m128 sum,Det,RDet;
799
+ __m128 trns0,trns1,trns2,trns3;
800
+
801
+ __m128 _L1 = mat.getCol0().get128();
802
+ __m128 _L2 = mat.getCol1().get128();
803
+ __m128 _L3 = mat.getCol2().get128();
804
+ __m128 _L4 = mat.getCol3().get128();
805
+ // Calculating the minterms for the first line.
806
+
807
+ // _mm_ror_ps is just a macro using _mm_shuffle_ps().
808
+ tt = _L4; tt2 = _mm_ror_ps(_L3,1);
809
+ Vc = _mm_mul_ps(tt2,_mm_ror_ps(tt,0)); // V3'dot V4
810
+ Va = _mm_mul_ps(tt2,_mm_ror_ps(tt,2)); // V3'dot V4"
811
+ Vb = _mm_mul_ps(tt2,_mm_ror_ps(tt,3)); // V3' dot V4^
812
+
813
+ r1 = _mm_sub_ps(_mm_ror_ps(Va,1),_mm_ror_ps(Vc,2)); // V3" dot V4^ - V3^ dot V4"
814
+ r2 = _mm_sub_ps(_mm_ror_ps(Vb,2),_mm_ror_ps(Vb,0)); // V3^ dot V4' - V3' dot V4^
815
+ r3 = _mm_sub_ps(_mm_ror_ps(Va,0),_mm_ror_ps(Vc,1)); // V3' dot V4" - V3" dot V4'
816
+
817
+ tt = _L2;
818
+ Va = _mm_ror_ps(tt,1); sum = _mm_mul_ps(Va,r1);
819
+ Vb = _mm_ror_ps(tt,2); sum = _mm_add_ps(sum,_mm_mul_ps(Vb,r2));
820
+ Vc = _mm_ror_ps(tt,3); sum = _mm_add_ps(sum,_mm_mul_ps(Vc,r3));
821
+
822
+ // Calculating the determinant.
823
+ Det = _mm_mul_ps(sum,_L1);
824
+ Det = _mm_add_ps(Det,_mm_movehl_ps(Det,Det));
825
+
826
+ const __m128 Sign_PNPN = _mm_load_ps((float *)_vmathPNPN);
827
+ const __m128 Sign_NPNP = _mm_load_ps((float *)_vmathNPNP);
828
+
829
+ __m128 mtL1 = _mm_xor_ps(sum,Sign_PNPN);
830
+
831
+ // Calculating the minterms of the second line (using previous results).
832
+ tt = _mm_ror_ps(_L1,1); sum = _mm_mul_ps(tt,r1);
833
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
834
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
835
+ __m128 mtL2 = _mm_xor_ps(sum,Sign_NPNP);
836
+
837
+ // Testing the determinant.
838
+ Det = _mm_sub_ss(Det,_mm_shuffle_ps(Det,Det,1));
839
+
840
+ // Calculating the minterms of the third line.
841
+ tt = _mm_ror_ps(_L1,1);
842
+ Va = _mm_mul_ps(tt,Vb); // V1' dot V2"
843
+ Vb = _mm_mul_ps(tt,Vc); // V1' dot V2^
844
+ Vc = _mm_mul_ps(tt,_L2); // V1' dot V2
845
+
846
+ r1 = _mm_sub_ps(_mm_ror_ps(Va,1),_mm_ror_ps(Vc,2)); // V1" dot V2^ - V1^ dot V2"
847
+ r2 = _mm_sub_ps(_mm_ror_ps(Vb,2),_mm_ror_ps(Vb,0)); // V1^ dot V2' - V1' dot V2^
848
+ r3 = _mm_sub_ps(_mm_ror_ps(Va,0),_mm_ror_ps(Vc,1)); // V1' dot V2" - V1" dot V2'
849
+
850
+ tt = _mm_ror_ps(_L4,1); sum = _mm_mul_ps(tt,r1);
851
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
852
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
853
+ __m128 mtL3 = _mm_xor_ps(sum,Sign_PNPN);
854
+
855
+ // Dividing is FASTER than rcp_nr! (Because rcp_nr causes many register-memory RWs).
856
+ RDet = _mm_div_ss(_mm_load_ss((float *)&_vmathZERONE), Det); // TODO: just 1.0f?
857
+ RDet = _mm_shuffle_ps(RDet,RDet,0x00);
858
+
859
+ // Devide the first 12 minterms with the determinant.
860
+ mtL1 = _mm_mul_ps(mtL1, RDet);
861
+ mtL2 = _mm_mul_ps(mtL2, RDet);
862
+ mtL3 = _mm_mul_ps(mtL3, RDet);
863
+
864
+ // Calculate the minterms of the forth line and devide by the determinant.
865
+ tt = _mm_ror_ps(_L3,1); sum = _mm_mul_ps(tt,r1);
866
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
867
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
868
+ __m128 mtL4 = _mm_xor_ps(sum,Sign_NPNP);
869
+ mtL4 = _mm_mul_ps(mtL4, RDet);
870
+
871
+ // Now we just have to transpose the minterms matrix.
872
+ trns0 = _mm_unpacklo_ps(mtL1,mtL2);
873
+ trns1 = _mm_unpacklo_ps(mtL3,mtL4);
874
+ trns2 = _mm_unpackhi_ps(mtL1,mtL2);
875
+ trns3 = _mm_unpackhi_ps(mtL3,mtL4);
876
+ _L1 = _mm_movelh_ps(trns0,trns1);
877
+ _L2 = _mm_movehl_ps(trns1,trns0);
878
+ _L3 = _mm_movelh_ps(trns2,trns3);
879
+ _L4 = _mm_movehl_ps(trns3,trns2);
880
+
881
+ return Matrix4(
882
+ Vector4( _L1 ),
883
+ Vector4( _L2 ),
884
+ Vector4( _L3 ),
885
+ Vector4( _L4 )
886
+ );
887
+ }
888
+
889
+ VECTORMATH_FORCE_INLINE const Matrix4 affineInverse( const Matrix4 & mat )
890
+ {
891
+ Transform3 affineMat;
892
+ affineMat.setCol0( mat.getCol0().getXYZ( ) );
893
+ affineMat.setCol1( mat.getCol1().getXYZ( ) );
894
+ affineMat.setCol2( mat.getCol2().getXYZ( ) );
895
+ affineMat.setCol3( mat.getCol3().getXYZ( ) );
896
+ return Matrix4( inverse( affineMat ) );
897
+ }
898
+
899
+ VECTORMATH_FORCE_INLINE const Matrix4 orthoInverse( const Matrix4 & mat )
900
+ {
901
+ Transform3 affineMat;
902
+ affineMat.setCol0( mat.getCol0().getXYZ( ) );
903
+ affineMat.setCol1( mat.getCol1().getXYZ( ) );
904
+ affineMat.setCol2( mat.getCol2().getXYZ( ) );
905
+ affineMat.setCol3( mat.getCol3().getXYZ( ) );
906
+ return Matrix4( orthoInverse( affineMat ) );
907
+ }
908
+
909
+ VECTORMATH_FORCE_INLINE const floatInVec determinant( const Matrix4 & mat )
910
+ {
911
+ __m128 Va,Vb,Vc;
912
+ __m128 r1,r2,r3,tt,tt2;
913
+ __m128 sum,Det;
914
+
915
+ __m128 _L1 = mat.getCol0().get128();
916
+ __m128 _L2 = mat.getCol1().get128();
917
+ __m128 _L3 = mat.getCol2().get128();
918
+ __m128 _L4 = mat.getCol3().get128();
919
+ // Calculating the minterms for the first line.
920
+
921
+ // _mm_ror_ps is just a macro using _mm_shuffle_ps().
922
+ tt = _L4; tt2 = _mm_ror_ps(_L3,1);
923
+ Vc = _mm_mul_ps(tt2,_mm_ror_ps(tt,0)); // V3' dot V4
924
+ Va = _mm_mul_ps(tt2,_mm_ror_ps(tt,2)); // V3' dot V4"
925
+ Vb = _mm_mul_ps(tt2,_mm_ror_ps(tt,3)); // V3' dot V4^
926
+
927
+ r1 = _mm_sub_ps(_mm_ror_ps(Va,1),_mm_ror_ps(Vc,2)); // V3" dot V4^ - V3^ dot V4"
928
+ r2 = _mm_sub_ps(_mm_ror_ps(Vb,2),_mm_ror_ps(Vb,0)); // V3^ dot V4' - V3' dot V4^
929
+ r3 = _mm_sub_ps(_mm_ror_ps(Va,0),_mm_ror_ps(Vc,1)); // V3' dot V4" - V3" dot V4'
930
+
931
+ tt = _L2;
932
+ Va = _mm_ror_ps(tt,1); sum = _mm_mul_ps(Va,r1);
933
+ Vb = _mm_ror_ps(tt,2); sum = _mm_add_ps(sum,_mm_mul_ps(Vb,r2));
934
+ Vc = _mm_ror_ps(tt,3); sum = _mm_add_ps(sum,_mm_mul_ps(Vc,r3));
935
+
936
+ // Calculating the determinant.
937
+ Det = _mm_mul_ps(sum,_L1);
938
+ Det = _mm_add_ps(Det,_mm_movehl_ps(Det,Det));
939
+
940
+ // Calculating the minterms of the second line (using previous results).
941
+ tt = _mm_ror_ps(_L1,1); sum = _mm_mul_ps(tt,r1);
942
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
943
+ tt = _mm_ror_ps(tt,1); sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
944
+
945
+ // Testing the determinant.
946
+ Det = _mm_sub_ss(Det,_mm_shuffle_ps(Det,Det,1));
947
+ return floatInVec(Det, 0);
948
+ }
949
+
950
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator +( const Matrix4 & mat ) const
951
+ {
952
+ return Matrix4(
953
+ ( mCol0 + mat.mCol0 ),
954
+ ( mCol1 + mat.mCol1 ),
955
+ ( mCol2 + mat.mCol2 ),
956
+ ( mCol3 + mat.mCol3 )
957
+ );
958
+ }
959
+
960
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator -( const Matrix4 & mat ) const
961
+ {
962
+ return Matrix4(
963
+ ( mCol0 - mat.mCol0 ),
964
+ ( mCol1 - mat.mCol1 ),
965
+ ( mCol2 - mat.mCol2 ),
966
+ ( mCol3 - mat.mCol3 )
967
+ );
968
+ }
969
+
970
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator +=( const Matrix4 & mat )
971
+ {
972
+ *this = *this + mat;
973
+ return *this;
974
+ }
975
+
976
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator -=( const Matrix4 & mat )
977
+ {
978
+ *this = *this - mat;
979
+ return *this;
980
+ }
981
+
982
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator -( ) const
983
+ {
984
+ return Matrix4(
985
+ ( -mCol0 ),
986
+ ( -mCol1 ),
987
+ ( -mCol2 ),
988
+ ( -mCol3 )
989
+ );
990
+ }
991
+
992
+ VECTORMATH_FORCE_INLINE const Matrix4 absPerElem( const Matrix4 & mat )
993
+ {
994
+ return Matrix4(
995
+ absPerElem( mat.getCol0() ),
996
+ absPerElem( mat.getCol1() ),
997
+ absPerElem( mat.getCol2() ),
998
+ absPerElem( mat.getCol3() )
999
+ );
1000
+ }
1001
+
1002
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( float scalar ) const
1003
+ {
1004
+ return *this * floatInVec(scalar);
1005
+ }
1006
+
1007
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( const floatInVec &scalar ) const
1008
+ {
1009
+ return Matrix4(
1010
+ ( mCol0 * scalar ),
1011
+ ( mCol1 * scalar ),
1012
+ ( mCol2 * scalar ),
1013
+ ( mCol3 * scalar )
1014
+ );
1015
+ }
1016
+
1017
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( float scalar )
1018
+ {
1019
+ return *this *= floatInVec(scalar);
1020
+ }
1021
+
1022
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( const floatInVec &scalar )
1023
+ {
1024
+ *this = *this * scalar;
1025
+ return *this;
1026
+ }
1027
+
1028
+ VECTORMATH_FORCE_INLINE const Matrix4 operator *( float scalar, const Matrix4 & mat )
1029
+ {
1030
+ return floatInVec(scalar) * mat;
1031
+ }
1032
+
1033
+ VECTORMATH_FORCE_INLINE const Matrix4 operator *( const floatInVec &scalar, const Matrix4 & mat )
1034
+ {
1035
+ return mat * scalar;
1036
+ }
1037
+
1038
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator *( const Vector4 &vec ) const
1039
+ {
1040
+ return Vector4(
1041
+ _mm_add_ps(
1042
+ _mm_add_ps(_mm_mul_ps(mCol0.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(0,0,0,0))), _mm_mul_ps(mCol1.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(1,1,1,1)))),
1043
+ _mm_add_ps(_mm_mul_ps(mCol2.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(2,2,2,2))), _mm_mul_ps(mCol3.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(3,3,3,3)))))
1044
+ );
1045
+ }
1046
+
1047
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator *( const Vector3 &vec ) const
1048
+ {
1049
+ return Vector4(
1050
+ _mm_add_ps(
1051
+ _mm_add_ps(_mm_mul_ps(mCol0.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(0,0,0,0))), _mm_mul_ps(mCol1.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(1,1,1,1)))),
1052
+ _mm_mul_ps(mCol2.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(2,2,2,2))))
1053
+ );
1054
+ }
1055
+
1056
+ VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator *( const Point3 &pnt ) const
1057
+ {
1058
+ return Vector4(
1059
+ _mm_add_ps(
1060
+ _mm_add_ps(_mm_mul_ps(mCol0.get128(), _mm_shuffle_ps(pnt.get128(), pnt.get128(), _MM_SHUFFLE(0,0,0,0))), _mm_mul_ps(mCol1.get128(), _mm_shuffle_ps(pnt.get128(), pnt.get128(), _MM_SHUFFLE(1,1,1,1)))),
1061
+ _mm_add_ps(_mm_mul_ps(mCol2.get128(), _mm_shuffle_ps(pnt.get128(), pnt.get128(), _MM_SHUFFLE(2,2,2,2))), mCol3.get128()))
1062
+ );
1063
+ }
1064
+
1065
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( const Matrix4 & mat ) const
1066
+ {
1067
+ return Matrix4(
1068
+ ( *this * mat.mCol0 ),
1069
+ ( *this * mat.mCol1 ),
1070
+ ( *this * mat.mCol2 ),
1071
+ ( *this * mat.mCol3 )
1072
+ );
1073
+ }
1074
+
1075
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( const Matrix4 & mat )
1076
+ {
1077
+ *this = *this * mat;
1078
+ return *this;
1079
+ }
1080
+
1081
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( const Transform3 & tfrm ) const
1082
+ {
1083
+ return Matrix4(
1084
+ ( *this * tfrm.getCol0() ),
1085
+ ( *this * tfrm.getCol1() ),
1086
+ ( *this * tfrm.getCol2() ),
1087
+ ( *this * Point3( tfrm.getCol3() ) )
1088
+ );
1089
+ }
1090
+
1091
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( const Transform3 & tfrm )
1092
+ {
1093
+ *this = *this * tfrm;
1094
+ return *this;
1095
+ }
1096
+
1097
+ VECTORMATH_FORCE_INLINE const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 )
1098
+ {
1099
+ return Matrix4(
1100
+ mulPerElem( mat0.getCol0(), mat1.getCol0() ),
1101
+ mulPerElem( mat0.getCol1(), mat1.getCol1() ),
1102
+ mulPerElem( mat0.getCol2(), mat1.getCol2() ),
1103
+ mulPerElem( mat0.getCol3(), mat1.getCol3() )
1104
+ );
1105
+ }
1106
+
1107
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::identity( )
1108
+ {
1109
+ return Matrix4(
1110
+ Vector4::xAxis( ),
1111
+ Vector4::yAxis( ),
1112
+ Vector4::zAxis( ),
1113
+ Vector4::wAxis( )
1114
+ );
1115
+ }
1116
+
1117
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setUpper3x3( const Matrix3 & mat3 )
1118
+ {
1119
+ mCol0.setXYZ( mat3.getCol0() );
1120
+ mCol1.setXYZ( mat3.getCol1() );
1121
+ mCol2.setXYZ( mat3.getCol2() );
1122
+ return *this;
1123
+ }
1124
+
1125
+ VECTORMATH_FORCE_INLINE const Matrix3 Matrix4::getUpper3x3( ) const
1126
+ {
1127
+ return Matrix3(
1128
+ mCol0.getXYZ( ),
1129
+ mCol1.getXYZ( ),
1130
+ mCol2.getXYZ( )
1131
+ );
1132
+ }
1133
+
1134
+ VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setTranslation( const Vector3 &translateVec )
1135
+ {
1136
+ mCol3.setXYZ( translateVec );
1137
+ return *this;
1138
+ }
1139
+
1140
+ VECTORMATH_FORCE_INLINE const Vector3 Matrix4::getTranslation( ) const
1141
+ {
1142
+ return mCol3.getXYZ( );
1143
+ }
1144
+
1145
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationX( float radians )
1146
+ {
1147
+ return rotationX( floatInVec(radians) );
1148
+ }
1149
+
1150
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationX( const floatInVec &radians )
1151
+ {
1152
+ __m128 s, c, res1, res2;
1153
+ __m128 zero;
1154
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1155
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1156
+ zero = _mm_setzero_ps();
1157
+ sincosf4( radians.get128(), &s, &c );
1158
+ res1 = vec_sel( zero, c, select_y );
1159
+ res1 = vec_sel( res1, s, select_z );
1160
+ res2 = vec_sel( zero, negatef4(s), select_y );
1161
+ res2 = vec_sel( res2, c, select_z );
1162
+ return Matrix4(
1163
+ Vector4::xAxis( ),
1164
+ Vector4( res1 ),
1165
+ Vector4( res2 ),
1166
+ Vector4::wAxis( )
1167
+ );
1168
+ }
1169
+
1170
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationY( float radians )
1171
+ {
1172
+ return rotationY( floatInVec(radians) );
1173
+ }
1174
+
1175
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationY( const floatInVec &radians )
1176
+ {
1177
+ __m128 s, c, res0, res2;
1178
+ __m128 zero;
1179
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1180
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1181
+ zero = _mm_setzero_ps();
1182
+ sincosf4( radians.get128(), &s, &c );
1183
+ res0 = vec_sel( zero, c, select_x );
1184
+ res0 = vec_sel( res0, negatef4(s), select_z );
1185
+ res2 = vec_sel( zero, s, select_x );
1186
+ res2 = vec_sel( res2, c, select_z );
1187
+ return Matrix4(
1188
+ Vector4( res0 ),
1189
+ Vector4::yAxis( ),
1190
+ Vector4( res2 ),
1191
+ Vector4::wAxis( )
1192
+ );
1193
+ }
1194
+
1195
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationZ( float radians )
1196
+ {
1197
+ return rotationZ( floatInVec(radians) );
1198
+ }
1199
+
1200
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationZ( const floatInVec &radians )
1201
+ {
1202
+ __m128 s, c, res0, res1;
1203
+ __m128 zero;
1204
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1205
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1206
+ zero = _mm_setzero_ps();
1207
+ sincosf4( radians.get128(), &s, &c );
1208
+ res0 = vec_sel( zero, c, select_x );
1209
+ res0 = vec_sel( res0, s, select_y );
1210
+ res1 = vec_sel( zero, negatef4(s), select_x );
1211
+ res1 = vec_sel( res1, c, select_y );
1212
+ return Matrix4(
1213
+ Vector4( res0 ),
1214
+ Vector4( res1 ),
1215
+ Vector4::zAxis( ),
1216
+ Vector4::wAxis( )
1217
+ );
1218
+ }
1219
+
1220
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationZYX( const Vector3 &radiansXYZ )
1221
+ {
1222
+ __m128 angles, s, negS, c, X0, X1, Y0, Y1, Z0, Z1, tmp;
1223
+ angles = Vector4( radiansXYZ, 0.0f ).get128();
1224
+ sincosf4( angles, &s, &c );
1225
+ negS = negatef4( s );
1226
+ Z0 = vec_mergel( c, s );
1227
+ Z1 = vec_mergel( negS, c );
1228
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
1229
+ Z1 = vec_and( Z1, _mm_load_ps( (float *)select_xyz ) );
1230
+ Y0 = _mm_shuffle_ps( c, negS, _MM_SHUFFLE(0,1,1,1) );
1231
+ Y1 = _mm_shuffle_ps( s, c, _MM_SHUFFLE(0,1,1,1) );
1232
+ X0 = vec_splat( s, 0 );
1233
+ X1 = vec_splat( c, 0 );
1234
+ tmp = vec_mul( Z0, Y1 );
1235
+ return Matrix4(
1236
+ Vector4( vec_mul( Z0, Y0 ) ),
1237
+ Vector4( vec_madd( Z1, X1, vec_mul( tmp, X0 ) ) ),
1238
+ Vector4( vec_nmsub( Z1, X0, vec_mul( tmp, X1 ) ) ),
1239
+ Vector4::wAxis( )
1240
+ );
1241
+ }
1242
+
1243
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotation( float radians, const Vector3 &unitVec )
1244
+ {
1245
+ return rotation( floatInVec(radians), unitVec );
1246
+ }
1247
+
1248
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotation( const floatInVec &radians, const Vector3 &unitVec )
1249
+ {
1250
+ __m128 axis, s, c, oneMinusC, axisS, negAxisS, xxxx, yyyy, zzzz, tmp0, tmp1, tmp2;
1251
+ axis = unitVec.get128();
1252
+ sincosf4( radians.get128(), &s, &c );
1253
+ xxxx = vec_splat( axis, 0 );
1254
+ yyyy = vec_splat( axis, 1 );
1255
+ zzzz = vec_splat( axis, 2 );
1256
+ oneMinusC = vec_sub( _mm_set1_ps(1.0f), c );
1257
+ axisS = vec_mul( axis, s );
1258
+ negAxisS = negatef4( axisS );
1259
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1260
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1261
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1262
+ //tmp0 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_XZBX );
1263
+ tmp0 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,2,0) );
1264
+ tmp0 = vec_sel(tmp0, vec_splat(negAxisS, 1), select_z);
1265
+ //tmp1 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_CXXX );
1266
+ tmp1 = vec_sel( vec_splat(axisS, 0), vec_splat(negAxisS, 2), select_x );
1267
+ //tmp2 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_YAXX );
1268
+ tmp2 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,0,1) );
1269
+ tmp2 = vec_sel(tmp2, vec_splat(negAxisS, 0), select_y);
1270
+ tmp0 = vec_sel( tmp0, c, select_x );
1271
+ tmp1 = vec_sel( tmp1, c, select_y );
1272
+ tmp2 = vec_sel( tmp2, c, select_z );
1273
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
1274
+ axis = vec_and( axis, _mm_load_ps( (float *)select_xyz ) );
1275
+ tmp0 = vec_and( tmp0, _mm_load_ps( (float *)select_xyz ) );
1276
+ tmp1 = vec_and( tmp1, _mm_load_ps( (float *)select_xyz ) );
1277
+ tmp2 = vec_and( tmp2, _mm_load_ps( (float *)select_xyz ) );
1278
+ return Matrix4(
1279
+ Vector4( vec_madd( vec_mul( axis, xxxx ), oneMinusC, tmp0 ) ),
1280
+ Vector4( vec_madd( vec_mul( axis, yyyy ), oneMinusC, tmp1 ) ),
1281
+ Vector4( vec_madd( vec_mul( axis, zzzz ), oneMinusC, tmp2 ) ),
1282
+ Vector4::wAxis( )
1283
+ );
1284
+ }
1285
+
1286
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotation( const Quat &unitQuat )
1287
+ {
1288
+ return Matrix4( Transform3::rotation( unitQuat ) );
1289
+ }
1290
+
1291
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::scale( const Vector3 &scaleVec )
1292
+ {
1293
+ __m128 zero = _mm_setzero_ps();
1294
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1295
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1296
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1297
+ return Matrix4(
1298
+ Vector4( vec_sel( zero, scaleVec.get128(), select_x ) ),
1299
+ Vector4( vec_sel( zero, scaleVec.get128(), select_y ) ),
1300
+ Vector4( vec_sel( zero, scaleVec.get128(), select_z ) ),
1301
+ Vector4::wAxis( )
1302
+ );
1303
+ }
1304
+
1305
+ VECTORMATH_FORCE_INLINE const Matrix4 appendScale( const Matrix4 & mat, const Vector3 &scaleVec )
1306
+ {
1307
+ return Matrix4(
1308
+ ( mat.getCol0() * scaleVec.getX( ) ),
1309
+ ( mat.getCol1() * scaleVec.getY( ) ),
1310
+ ( mat.getCol2() * scaleVec.getZ( ) ),
1311
+ mat.getCol3()
1312
+ );
1313
+ }
1314
+
1315
+ VECTORMATH_FORCE_INLINE const Matrix4 prependScale( const Vector3 &scaleVec, const Matrix4 & mat )
1316
+ {
1317
+ Vector4 scale4;
1318
+ scale4 = Vector4( scaleVec, 1.0f );
1319
+ return Matrix4(
1320
+ mulPerElem( mat.getCol0(), scale4 ),
1321
+ mulPerElem( mat.getCol1(), scale4 ),
1322
+ mulPerElem( mat.getCol2(), scale4 ),
1323
+ mulPerElem( mat.getCol3(), scale4 )
1324
+ );
1325
+ }
1326
+
1327
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::translation( const Vector3 &translateVec )
1328
+ {
1329
+ return Matrix4(
1330
+ Vector4::xAxis( ),
1331
+ Vector4::yAxis( ),
1332
+ Vector4::zAxis( ),
1333
+ Vector4( translateVec, 1.0f )
1334
+ );
1335
+ }
1336
+
1337
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::lookAt( const Point3 &eyePos, const Point3 &lookAtPos, const Vector3 &upVec )
1338
+ {
1339
+ Matrix4 m4EyeFrame;
1340
+ Vector3 v3X, v3Y, v3Z;
1341
+ v3Y = normalize( upVec );
1342
+ v3Z = normalize( ( eyePos - lookAtPos ) );
1343
+ v3X = normalize( cross( v3Y, v3Z ) );
1344
+ v3Y = cross( v3Z, v3X );
1345
+ m4EyeFrame = Matrix4( Vector4( v3X ), Vector4( v3Y ), Vector4( v3Z ), Vector4( eyePos ) );
1346
+ return orthoInverse( m4EyeFrame );
1347
+ }
1348
+
1349
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::perspective( float fovyRadians, float aspect, float zNear, float zFar )
1350
+ {
1351
+ float f, rangeInv;
1352
+ __m128 zero, col0, col1, col2, col3;
1353
+ union { __m128 v; float s[4]; } tmp;
1354
+ f = tanf( _VECTORMATH_PI_OVER_2 - fovyRadians * 0.5f );
1355
+ rangeInv = 1.0f / ( zNear - zFar );
1356
+ zero = _mm_setzero_ps();
1357
+ tmp.v = zero;
1358
+ tmp.s[0] = f / aspect;
1359
+ col0 = tmp.v;
1360
+ tmp.v = zero;
1361
+ tmp.s[1] = f;
1362
+ col1 = tmp.v;
1363
+ tmp.v = zero;
1364
+ tmp.s[2] = ( zNear + zFar ) * rangeInv;
1365
+ tmp.s[3] = -1.0f;
1366
+ col2 = tmp.v;
1367
+ tmp.v = zero;
1368
+ tmp.s[2] = zNear * zFar * rangeInv * 2.0f;
1369
+ col3 = tmp.v;
1370
+ return Matrix4(
1371
+ Vector4( col0 ),
1372
+ Vector4( col1 ),
1373
+ Vector4( col2 ),
1374
+ Vector4( col3 )
1375
+ );
1376
+ }
1377
+
1378
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::frustum( float left, float right, float bottom, float top, float zNear, float zFar )
1379
+ {
1380
+ /* function implementation based on code from STIDC SDK: */
1381
+ /* -------------------------------------------------------------- */
1382
+ /* PLEASE DO NOT MODIFY THIS SECTION */
1383
+ /* This prolog section is automatically generated. */
1384
+ /* */
1385
+ /* (C)Copyright */
1386
+ /* Sony Computer Entertainment, Inc., */
1387
+ /* Toshiba Corporation, */
1388
+ /* International Business Machines Corporation, */
1389
+ /* 2001,2002. */
1390
+ /* S/T/I Confidential Information */
1391
+ /* -------------------------------------------------------------- */
1392
+ __m128 lbf, rtn;
1393
+ __m128 diff, sum, inv_diff;
1394
+ __m128 diagonal, column, near2;
1395
+ __m128 zero = _mm_setzero_ps();
1396
+ union { __m128 v; float s[4]; } l, f, r, n, b, t; // TODO: Union?
1397
+ l.s[0] = left;
1398
+ f.s[0] = zFar;
1399
+ r.s[0] = right;
1400
+ n.s[0] = zNear;
1401
+ b.s[0] = bottom;
1402
+ t.s[0] = top;
1403
+ lbf = vec_mergeh( l.v, f.v );
1404
+ rtn = vec_mergeh( r.v, n.v );
1405
+ lbf = vec_mergeh( lbf, b.v );
1406
+ rtn = vec_mergeh( rtn, t.v );
1407
+ diff = vec_sub( rtn, lbf );
1408
+ sum = vec_add( rtn, lbf );
1409
+ inv_diff = recipf4( diff );
1410
+ near2 = vec_splat( n.v, 0 );
1411
+ near2 = vec_add( near2, near2 );
1412
+ diagonal = vec_mul( near2, inv_diff );
1413
+ column = vec_mul( sum, inv_diff );
1414
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1415
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1416
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1417
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_w[4] = {0, 0, 0, 0xffffffff};
1418
+ return Matrix4(
1419
+ Vector4( vec_sel( zero, diagonal, select_x ) ),
1420
+ Vector4( vec_sel( zero, diagonal, select_y ) ),
1421
+ Vector4( vec_sel( column, _mm_set1_ps(-1.0f), select_w ) ),
1422
+ Vector4( vec_sel( zero, vec_mul( diagonal, vec_splat( f.v, 0 ) ), select_z ) )
1423
+ );
1424
+ }
1425
+
1426
+ VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::orthographic( float left, float right, float bottom, float top, float zNear, float zFar )
1427
+ {
1428
+ /* function implementation based on code from STIDC SDK: */
1429
+ /* -------------------------------------------------------------- */
1430
+ /* PLEASE DO NOT MODIFY THIS SECTION */
1431
+ /* This prolog section is automatically generated. */
1432
+ /* */
1433
+ /* (C)Copyright */
1434
+ /* Sony Computer Entertainment, Inc., */
1435
+ /* Toshiba Corporation, */
1436
+ /* International Business Machines Corporation, */
1437
+ /* 2001,2002. */
1438
+ /* S/T/I Confidential Information */
1439
+ /* -------------------------------------------------------------- */
1440
+ __m128 lbf, rtn;
1441
+ __m128 diff, sum, inv_diff, neg_inv_diff;
1442
+ __m128 diagonal, column;
1443
+ __m128 zero = _mm_setzero_ps();
1444
+ union { __m128 v; float s[4]; } l, f, r, n, b, t;
1445
+ l.s[0] = left;
1446
+ f.s[0] = zFar;
1447
+ r.s[0] = right;
1448
+ n.s[0] = zNear;
1449
+ b.s[0] = bottom;
1450
+ t.s[0] = top;
1451
+ lbf = vec_mergeh( l.v, f.v );
1452
+ rtn = vec_mergeh( r.v, n.v );
1453
+ lbf = vec_mergeh( lbf, b.v );
1454
+ rtn = vec_mergeh( rtn, t.v );
1455
+ diff = vec_sub( rtn, lbf );
1456
+ sum = vec_add( rtn, lbf );
1457
+ inv_diff = recipf4( diff );
1458
+ neg_inv_diff = negatef4( inv_diff );
1459
+ diagonal = vec_add( inv_diff, inv_diff );
1460
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1461
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1462
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1463
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_w[4] = {0, 0, 0, 0xffffffff};
1464
+ column = vec_mul( sum, vec_sel( neg_inv_diff, inv_diff, select_z ) ); // TODO: no madds with zero
1465
+ return Matrix4(
1466
+ Vector4( vec_sel( zero, diagonal, select_x ) ),
1467
+ Vector4( vec_sel( zero, diagonal, select_y ) ),
1468
+ Vector4( vec_sel( zero, diagonal, select_z ) ),
1469
+ Vector4( vec_sel( column, _mm_set1_ps(1.0f), select_w ) )
1470
+ );
1471
+ }
1472
+
1473
+ VECTORMATH_FORCE_INLINE const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 )
1474
+ {
1475
+ return Matrix4(
1476
+ select( mat0.getCol0(), mat1.getCol0(), select1 ),
1477
+ select( mat0.getCol1(), mat1.getCol1(), select1 ),
1478
+ select( mat0.getCol2(), mat1.getCol2(), select1 ),
1479
+ select( mat0.getCol3(), mat1.getCol3(), select1 )
1480
+ );
1481
+ }
1482
+
1483
+ VECTORMATH_FORCE_INLINE const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, const boolInVec &select1 )
1484
+ {
1485
+ return Matrix4(
1486
+ select( mat0.getCol0(), mat1.getCol0(), select1 ),
1487
+ select( mat0.getCol1(), mat1.getCol1(), select1 ),
1488
+ select( mat0.getCol2(), mat1.getCol2(), select1 ),
1489
+ select( mat0.getCol3(), mat1.getCol3(), select1 )
1490
+ );
1491
+ }
1492
+
1493
+ #ifdef _VECTORMATH_DEBUG
1494
+
1495
+ VECTORMATH_FORCE_INLINE void print( const Matrix4 & mat )
1496
+ {
1497
+ print( mat.getRow( 0 ) );
1498
+ print( mat.getRow( 1 ) );
1499
+ print( mat.getRow( 2 ) );
1500
+ print( mat.getRow( 3 ) );
1501
+ }
1502
+
1503
+ VECTORMATH_FORCE_INLINE void print( const Matrix4 & mat, const char * name )
1504
+ {
1505
+ printf("%s:\n", name);
1506
+ print( mat );
1507
+ }
1508
+
1509
+ #endif
1510
+
1511
+ VECTORMATH_FORCE_INLINE Transform3::Transform3( const Transform3 & tfrm )
1512
+ {
1513
+ mCol0 = tfrm.mCol0;
1514
+ mCol1 = tfrm.mCol1;
1515
+ mCol2 = tfrm.mCol2;
1516
+ mCol3 = tfrm.mCol3;
1517
+ }
1518
+
1519
+ VECTORMATH_FORCE_INLINE Transform3::Transform3( float scalar )
1520
+ {
1521
+ mCol0 = Vector3( scalar );
1522
+ mCol1 = Vector3( scalar );
1523
+ mCol2 = Vector3( scalar );
1524
+ mCol3 = Vector3( scalar );
1525
+ }
1526
+
1527
+ VECTORMATH_FORCE_INLINE Transform3::Transform3( const floatInVec &scalar )
1528
+ {
1529
+ mCol0 = Vector3( scalar );
1530
+ mCol1 = Vector3( scalar );
1531
+ mCol2 = Vector3( scalar );
1532
+ mCol3 = Vector3( scalar );
1533
+ }
1534
+
1535
+ VECTORMATH_FORCE_INLINE Transform3::Transform3( const Vector3 &_col0, const Vector3 &_col1, const Vector3 &_col2, const Vector3 &_col3 )
1536
+ {
1537
+ mCol0 = _col0;
1538
+ mCol1 = _col1;
1539
+ mCol2 = _col2;
1540
+ mCol3 = _col3;
1541
+ }
1542
+
1543
+ VECTORMATH_FORCE_INLINE Transform3::Transform3( const Matrix3 & tfrm, const Vector3 &translateVec )
1544
+ {
1545
+ this->setUpper3x3( tfrm );
1546
+ this->setTranslation( translateVec );
1547
+ }
1548
+
1549
+ VECTORMATH_FORCE_INLINE Transform3::Transform3( const Quat &unitQuat, const Vector3 &translateVec )
1550
+ {
1551
+ this->setUpper3x3( Matrix3( unitQuat ) );
1552
+ this->setTranslation( translateVec );
1553
+ }
1554
+
1555
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol0( const Vector3 &_col0 )
1556
+ {
1557
+ mCol0 = _col0;
1558
+ return *this;
1559
+ }
1560
+
1561
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol1( const Vector3 &_col1 )
1562
+ {
1563
+ mCol1 = _col1;
1564
+ return *this;
1565
+ }
1566
+
1567
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol2( const Vector3 &_col2 )
1568
+ {
1569
+ mCol2 = _col2;
1570
+ return *this;
1571
+ }
1572
+
1573
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol3( const Vector3 &_col3 )
1574
+ {
1575
+ mCol3 = _col3;
1576
+ return *this;
1577
+ }
1578
+
1579
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol( int col, const Vector3 &vec )
1580
+ {
1581
+ *(&mCol0 + col) = vec;
1582
+ return *this;
1583
+ }
1584
+
1585
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setRow( int row, const Vector4 &vec )
1586
+ {
1587
+ mCol0.setElem( row, vec.getElem( 0 ) );
1588
+ mCol1.setElem( row, vec.getElem( 1 ) );
1589
+ mCol2.setElem( row, vec.getElem( 2 ) );
1590
+ mCol3.setElem( row, vec.getElem( 3 ) );
1591
+ return *this;
1592
+ }
1593
+
1594
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setElem( int col, int row, float val )
1595
+ {
1596
+ (*this)[col].setElem(row, val);
1597
+ return *this;
1598
+ }
1599
+
1600
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setElem( int col, int row, const floatInVec &val )
1601
+ {
1602
+ Vector3 tmpV3_0;
1603
+ tmpV3_0 = this->getCol( col );
1604
+ tmpV3_0.setElem( row, val );
1605
+ this->setCol( col, tmpV3_0 );
1606
+ return *this;
1607
+ }
1608
+
1609
+ VECTORMATH_FORCE_INLINE const floatInVec Transform3::getElem( int col, int row ) const
1610
+ {
1611
+ return this->getCol( col ).getElem( row );
1612
+ }
1613
+
1614
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol0( ) const
1615
+ {
1616
+ return mCol0;
1617
+ }
1618
+
1619
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol1( ) const
1620
+ {
1621
+ return mCol1;
1622
+ }
1623
+
1624
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol2( ) const
1625
+ {
1626
+ return mCol2;
1627
+ }
1628
+
1629
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol3( ) const
1630
+ {
1631
+ return mCol3;
1632
+ }
1633
+
1634
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol( int col ) const
1635
+ {
1636
+ return *(&mCol0 + col);
1637
+ }
1638
+
1639
+ VECTORMATH_FORCE_INLINE const Vector4 Transform3::getRow( int row ) const
1640
+ {
1641
+ return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );
1642
+ }
1643
+
1644
+ VECTORMATH_FORCE_INLINE Vector3 & Transform3::operator []( int col )
1645
+ {
1646
+ return *(&mCol0 + col);
1647
+ }
1648
+
1649
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::operator []( int col ) const
1650
+ {
1651
+ return *(&mCol0 + col);
1652
+ }
1653
+
1654
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::operator =( const Transform3 & tfrm )
1655
+ {
1656
+ mCol0 = tfrm.mCol0;
1657
+ mCol1 = tfrm.mCol1;
1658
+ mCol2 = tfrm.mCol2;
1659
+ mCol3 = tfrm.mCol3;
1660
+ return *this;
1661
+ }
1662
+
1663
+ VECTORMATH_FORCE_INLINE const Transform3 inverse( const Transform3 & tfrm )
1664
+ {
1665
+ __m128 inv0, inv1, inv2, inv3;
1666
+ __m128 tmp0, tmp1, tmp2, tmp3, tmp4, dot, invdet;
1667
+ __m128 xxxx, yyyy, zzzz;
1668
+ tmp2 = _vmathVfCross( tfrm.getCol0().get128(), tfrm.getCol1().get128() );
1669
+ tmp0 = _vmathVfCross( tfrm.getCol1().get128(), tfrm.getCol2().get128() );
1670
+ tmp1 = _vmathVfCross( tfrm.getCol2().get128(), tfrm.getCol0().get128() );
1671
+ inv3 = negatef4( tfrm.getCol3().get128() );
1672
+ dot = _vmathVfDot3( tmp2, tfrm.getCol2().get128() );
1673
+ dot = vec_splat( dot, 0 );
1674
+ invdet = recipf4( dot );
1675
+ tmp3 = vec_mergeh( tmp0, tmp2 );
1676
+ tmp4 = vec_mergel( tmp0, tmp2 );
1677
+ inv0 = vec_mergeh( tmp3, tmp1 );
1678
+ xxxx = vec_splat( inv3, 0 );
1679
+ //inv1 = vec_perm( tmp3, tmp1, _VECTORMATH_PERM_ZBWX );
1680
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1681
+ inv1 = _mm_shuffle_ps( tmp3, tmp3, _MM_SHUFFLE(0,3,2,2));
1682
+ inv1 = vec_sel(inv1, tmp1, select_y);
1683
+ //inv2 = vec_perm( tmp4, tmp1, _VECTORMATH_PERM_XCYX );
1684
+ inv2 = _mm_shuffle_ps( tmp4, tmp4, _MM_SHUFFLE(0,1,1,0));
1685
+ inv2 = vec_sel(inv2, vec_splat(tmp1, 2), select_y);
1686
+ yyyy = vec_splat( inv3, 1 );
1687
+ zzzz = vec_splat( inv3, 2 );
1688
+ inv3 = vec_mul( inv0, xxxx );
1689
+ inv3 = vec_madd( inv1, yyyy, inv3 );
1690
+ inv3 = vec_madd( inv2, zzzz, inv3 );
1691
+ inv0 = vec_mul( inv0, invdet );
1692
+ inv1 = vec_mul( inv1, invdet );
1693
+ inv2 = vec_mul( inv2, invdet );
1694
+ inv3 = vec_mul( inv3, invdet );
1695
+ return Transform3(
1696
+ Vector3( inv0 ),
1697
+ Vector3( inv1 ),
1698
+ Vector3( inv2 ),
1699
+ Vector3( inv3 )
1700
+ );
1701
+ }
1702
+
1703
+ VECTORMATH_FORCE_INLINE const Transform3 orthoInverse( const Transform3 & tfrm )
1704
+ {
1705
+ __m128 inv0, inv1, inv2, inv3;
1706
+ __m128 tmp0, tmp1;
1707
+ __m128 xxxx, yyyy, zzzz;
1708
+ tmp0 = vec_mergeh( tfrm.getCol0().get128(), tfrm.getCol2().get128() );
1709
+ tmp1 = vec_mergel( tfrm.getCol0().get128(), tfrm.getCol2().get128() );
1710
+ inv3 = negatef4( tfrm.getCol3().get128() );
1711
+ inv0 = vec_mergeh( tmp0, tfrm.getCol1().get128() );
1712
+ xxxx = vec_splat( inv3, 0 );
1713
+ //inv1 = vec_perm( tmp0, tfrm.getCol1().get128(), _VECTORMATH_PERM_ZBWX );
1714
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1715
+ inv1 = _mm_shuffle_ps( tmp0, tmp0, _MM_SHUFFLE(0,3,2,2));
1716
+ inv1 = vec_sel(inv1, tfrm.getCol1().get128(), select_y);
1717
+ //inv2 = vec_perm( tmp1, tfrm.getCol1().get128(), _VECTORMATH_PERM_XCYX );
1718
+ inv2 = _mm_shuffle_ps( tmp1, tmp1, _MM_SHUFFLE(0,1,1,0));
1719
+ inv2 = vec_sel(inv2, vec_splat(tfrm.getCol1().get128(), 2), select_y);
1720
+ yyyy = vec_splat( inv3, 1 );
1721
+ zzzz = vec_splat( inv3, 2 );
1722
+ inv3 = vec_mul( inv0, xxxx );
1723
+ inv3 = vec_madd( inv1, yyyy, inv3 );
1724
+ inv3 = vec_madd( inv2, zzzz, inv3 );
1725
+ return Transform3(
1726
+ Vector3( inv0 ),
1727
+ Vector3( inv1 ),
1728
+ Vector3( inv2 ),
1729
+ Vector3( inv3 )
1730
+ );
1731
+ }
1732
+
1733
+ VECTORMATH_FORCE_INLINE const Transform3 absPerElem( const Transform3 & tfrm )
1734
+ {
1735
+ return Transform3(
1736
+ absPerElem( tfrm.getCol0() ),
1737
+ absPerElem( tfrm.getCol1() ),
1738
+ absPerElem( tfrm.getCol2() ),
1739
+ absPerElem( tfrm.getCol3() )
1740
+ );
1741
+ }
1742
+
1743
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::operator *( const Vector3 &vec ) const
1744
+ {
1745
+ __m128 res;
1746
+ __m128 xxxx, yyyy, zzzz;
1747
+ xxxx = vec_splat( vec.get128(), 0 );
1748
+ yyyy = vec_splat( vec.get128(), 1 );
1749
+ zzzz = vec_splat( vec.get128(), 2 );
1750
+ res = vec_mul( mCol0.get128(), xxxx );
1751
+ res = vec_madd( mCol1.get128(), yyyy, res );
1752
+ res = vec_madd( mCol2.get128(), zzzz, res );
1753
+ return Vector3( res );
1754
+ }
1755
+
1756
+ VECTORMATH_FORCE_INLINE const Point3 Transform3::operator *( const Point3 &pnt ) const
1757
+ {
1758
+ __m128 tmp0, tmp1, res;
1759
+ __m128 xxxx, yyyy, zzzz;
1760
+ xxxx = vec_splat( pnt.get128(), 0 );
1761
+ yyyy = vec_splat( pnt.get128(), 1 );
1762
+ zzzz = vec_splat( pnt.get128(), 2 );
1763
+ tmp0 = vec_mul( mCol0.get128(), xxxx );
1764
+ tmp1 = vec_mul( mCol1.get128(), yyyy );
1765
+ tmp0 = vec_madd( mCol2.get128(), zzzz, tmp0 );
1766
+ tmp1 = vec_add( mCol3.get128(), tmp1 );
1767
+ res = vec_add( tmp0, tmp1 );
1768
+ return Point3( res );
1769
+ }
1770
+
1771
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::operator *( const Transform3 & tfrm ) const
1772
+ {
1773
+ return Transform3(
1774
+ ( *this * tfrm.mCol0 ),
1775
+ ( *this * tfrm.mCol1 ),
1776
+ ( *this * tfrm.mCol2 ),
1777
+ Vector3( ( *this * Point3( tfrm.mCol3 ) ) )
1778
+ );
1779
+ }
1780
+
1781
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::operator *=( const Transform3 & tfrm )
1782
+ {
1783
+ *this = *this * tfrm;
1784
+ return *this;
1785
+ }
1786
+
1787
+ VECTORMATH_FORCE_INLINE const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 )
1788
+ {
1789
+ return Transform3(
1790
+ mulPerElem( tfrm0.getCol0(), tfrm1.getCol0() ),
1791
+ mulPerElem( tfrm0.getCol1(), tfrm1.getCol1() ),
1792
+ mulPerElem( tfrm0.getCol2(), tfrm1.getCol2() ),
1793
+ mulPerElem( tfrm0.getCol3(), tfrm1.getCol3() )
1794
+ );
1795
+ }
1796
+
1797
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::identity( )
1798
+ {
1799
+ return Transform3(
1800
+ Vector3::xAxis( ),
1801
+ Vector3::yAxis( ),
1802
+ Vector3::zAxis( ),
1803
+ Vector3( 0.0f )
1804
+ );
1805
+ }
1806
+
1807
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setUpper3x3( const Matrix3 & tfrm )
1808
+ {
1809
+ mCol0 = tfrm.getCol0();
1810
+ mCol1 = tfrm.getCol1();
1811
+ mCol2 = tfrm.getCol2();
1812
+ return *this;
1813
+ }
1814
+
1815
+ VECTORMATH_FORCE_INLINE const Matrix3 Transform3::getUpper3x3( ) const
1816
+ {
1817
+ return Matrix3( mCol0, mCol1, mCol2 );
1818
+ }
1819
+
1820
+ VECTORMATH_FORCE_INLINE Transform3 & Transform3::setTranslation( const Vector3 &translateVec )
1821
+ {
1822
+ mCol3 = translateVec;
1823
+ return *this;
1824
+ }
1825
+
1826
+ VECTORMATH_FORCE_INLINE const Vector3 Transform3::getTranslation( ) const
1827
+ {
1828
+ return mCol3;
1829
+ }
1830
+
1831
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationX( float radians )
1832
+ {
1833
+ return rotationX( floatInVec(radians) );
1834
+ }
1835
+
1836
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationX( const floatInVec &radians )
1837
+ {
1838
+ __m128 s, c, res1, res2;
1839
+ __m128 zero;
1840
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1841
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1842
+ zero = _mm_setzero_ps();
1843
+ sincosf4( radians.get128(), &s, &c );
1844
+ res1 = vec_sel( zero, c, select_y );
1845
+ res1 = vec_sel( res1, s, select_z );
1846
+ res2 = vec_sel( zero, negatef4(s), select_y );
1847
+ res2 = vec_sel( res2, c, select_z );
1848
+ return Transform3(
1849
+ Vector3::xAxis( ),
1850
+ Vector3( res1 ),
1851
+ Vector3( res2 ),
1852
+ Vector3( _mm_setzero_ps() )
1853
+ );
1854
+ }
1855
+
1856
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationY( float radians )
1857
+ {
1858
+ return rotationY( floatInVec(radians) );
1859
+ }
1860
+
1861
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationY( const floatInVec &radians )
1862
+ {
1863
+ __m128 s, c, res0, res2;
1864
+ __m128 zero;
1865
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1866
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1867
+ zero = _mm_setzero_ps();
1868
+ sincosf4( radians.get128(), &s, &c );
1869
+ res0 = vec_sel( zero, c, select_x );
1870
+ res0 = vec_sel( res0, negatef4(s), select_z );
1871
+ res2 = vec_sel( zero, s, select_x );
1872
+ res2 = vec_sel( res2, c, select_z );
1873
+ return Transform3(
1874
+ Vector3( res0 ),
1875
+ Vector3::yAxis( ),
1876
+ Vector3( res2 ),
1877
+ Vector3( 0.0f )
1878
+ );
1879
+ }
1880
+
1881
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationZ( float radians )
1882
+ {
1883
+ return rotationZ( floatInVec(radians) );
1884
+ }
1885
+
1886
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationZ( const floatInVec &radians )
1887
+ {
1888
+ __m128 s, c, res0, res1;
1889
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1890
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1891
+ __m128 zero = _mm_setzero_ps();
1892
+ sincosf4( radians.get128(), &s, &c );
1893
+ res0 = vec_sel( zero, c, select_x );
1894
+ res0 = vec_sel( res0, s, select_y );
1895
+ res1 = vec_sel( zero, negatef4(s), select_x );
1896
+ res1 = vec_sel( res1, c, select_y );
1897
+ return Transform3(
1898
+ Vector3( res0 ),
1899
+ Vector3( res1 ),
1900
+ Vector3::zAxis( ),
1901
+ Vector3( 0.0f )
1902
+ );
1903
+ }
1904
+
1905
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationZYX( const Vector3 &radiansXYZ )
1906
+ {
1907
+ __m128 angles, s, negS, c, X0, X1, Y0, Y1, Z0, Z1, tmp;
1908
+ angles = Vector4( radiansXYZ, 0.0f ).get128();
1909
+ sincosf4( angles, &s, &c );
1910
+ negS = negatef4( s );
1911
+ Z0 = vec_mergel( c, s );
1912
+ Z1 = vec_mergel( negS, c );
1913
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
1914
+ Z1 = vec_and( Z1, _mm_load_ps( (float *)select_xyz ) );
1915
+ Y0 = _mm_shuffle_ps( c, negS, _MM_SHUFFLE(0,1,1,1) );
1916
+ Y1 = _mm_shuffle_ps( s, c, _MM_SHUFFLE(0,1,1,1) );
1917
+ X0 = vec_splat( s, 0 );
1918
+ X1 = vec_splat( c, 0 );
1919
+ tmp = vec_mul( Z0, Y1 );
1920
+ return Transform3(
1921
+ Vector3( vec_mul( Z0, Y0 ) ),
1922
+ Vector3( vec_madd( Z1, X1, vec_mul( tmp, X0 ) ) ),
1923
+ Vector3( vec_nmsub( Z1, X0, vec_mul( tmp, X1 ) ) ),
1924
+ Vector3( 0.0f )
1925
+ );
1926
+ }
1927
+
1928
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotation( float radians, const Vector3 &unitVec )
1929
+ {
1930
+ return rotation( floatInVec(radians), unitVec );
1931
+ }
1932
+
1933
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotation( const floatInVec &radians, const Vector3 &unitVec )
1934
+ {
1935
+ return Transform3( Matrix3::rotation( radians, unitVec ), Vector3( 0.0f ) );
1936
+ }
1937
+
1938
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotation( const Quat &unitQuat )
1939
+ {
1940
+ return Transform3( Matrix3( unitQuat ), Vector3( 0.0f ) );
1941
+ }
1942
+
1943
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::scale( const Vector3 &scaleVec )
1944
+ {
1945
+ __m128 zero = _mm_setzero_ps();
1946
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
1947
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
1948
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
1949
+ return Transform3(
1950
+ Vector3( vec_sel( zero, scaleVec.get128(), select_x ) ),
1951
+ Vector3( vec_sel( zero, scaleVec.get128(), select_y ) ),
1952
+ Vector3( vec_sel( zero, scaleVec.get128(), select_z ) ),
1953
+ Vector3( 0.0f )
1954
+ );
1955
+ }
1956
+
1957
+ VECTORMATH_FORCE_INLINE const Transform3 appendScale( const Transform3 & tfrm, const Vector3 &scaleVec )
1958
+ {
1959
+ return Transform3(
1960
+ ( tfrm.getCol0() * scaleVec.getX( ) ),
1961
+ ( tfrm.getCol1() * scaleVec.getY( ) ),
1962
+ ( tfrm.getCol2() * scaleVec.getZ( ) ),
1963
+ tfrm.getCol3()
1964
+ );
1965
+ }
1966
+
1967
+ VECTORMATH_FORCE_INLINE const Transform3 prependScale( const Vector3 &scaleVec, const Transform3 & tfrm )
1968
+ {
1969
+ return Transform3(
1970
+ mulPerElem( tfrm.getCol0(), scaleVec ),
1971
+ mulPerElem( tfrm.getCol1(), scaleVec ),
1972
+ mulPerElem( tfrm.getCol2(), scaleVec ),
1973
+ mulPerElem( tfrm.getCol3(), scaleVec )
1974
+ );
1975
+ }
1976
+
1977
+ VECTORMATH_FORCE_INLINE const Transform3 Transform3::translation( const Vector3 &translateVec )
1978
+ {
1979
+ return Transform3(
1980
+ Vector3::xAxis( ),
1981
+ Vector3::yAxis( ),
1982
+ Vector3::zAxis( ),
1983
+ translateVec
1984
+ );
1985
+ }
1986
+
1987
+ VECTORMATH_FORCE_INLINE const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 )
1988
+ {
1989
+ return Transform3(
1990
+ select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ),
1991
+ select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ),
1992
+ select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ),
1993
+ select( tfrm0.getCol3(), tfrm1.getCol3(), select1 )
1994
+ );
1995
+ }
1996
+
1997
+ VECTORMATH_FORCE_INLINE const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, const boolInVec &select1 )
1998
+ {
1999
+ return Transform3(
2000
+ select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ),
2001
+ select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ),
2002
+ select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ),
2003
+ select( tfrm0.getCol3(), tfrm1.getCol3(), select1 )
2004
+ );
2005
+ }
2006
+
2007
+ #ifdef _VECTORMATH_DEBUG
2008
+
2009
+ VECTORMATH_FORCE_INLINE void print( const Transform3 & tfrm )
2010
+ {
2011
+ print( tfrm.getRow( 0 ) );
2012
+ print( tfrm.getRow( 1 ) );
2013
+ print( tfrm.getRow( 2 ) );
2014
+ }
2015
+
2016
+ VECTORMATH_FORCE_INLINE void print( const Transform3 & tfrm, const char * name )
2017
+ {
2018
+ printf("%s:\n", name);
2019
+ print( tfrm );
2020
+ }
2021
+
2022
+ #endif
2023
+
2024
+ VECTORMATH_FORCE_INLINE Quat::Quat( const Matrix3 & tfrm )
2025
+ {
2026
+ __m128 res;
2027
+ __m128 col0, col1, col2;
2028
+ __m128 xx_yy, xx_yy_zz_xx, yy_zz_xx_yy, zz_xx_yy_zz, diagSum, diagDiff;
2029
+ __m128 zy_xz_yx, yz_zx_xy, sum, diff;
2030
+ __m128 radicand, invSqrt, scale;
2031
+ __m128 res0, res1, res2, res3;
2032
+ __m128 xx, yy, zz;
2033
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
2034
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
2035
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
2036
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_w[4] = {0, 0, 0, 0xffffffff};
2037
+
2038
+ col0 = tfrm.getCol0().get128();
2039
+ col1 = tfrm.getCol1().get128();
2040
+ col2 = tfrm.getCol2().get128();
2041
+
2042
+ /* four cases: */
2043
+ /* trace > 0 */
2044
+ /* else */
2045
+ /* xx largest diagonal element */
2046
+ /* yy largest diagonal element */
2047
+ /* zz largest diagonal element */
2048
+
2049
+ /* compute quaternion for each case */
2050
+
2051
+ xx_yy = vec_sel( col0, col1, select_y );
2052
+ //xx_yy_zz_xx = vec_perm( xx_yy, col2, _VECTORMATH_PERM_XYCX );
2053
+ //yy_zz_xx_yy = vec_perm( xx_yy, col2, _VECTORMATH_PERM_YCXY );
2054
+ //zz_xx_yy_zz = vec_perm( xx_yy, col2, _VECTORMATH_PERM_CXYC );
2055
+ xx_yy_zz_xx = _mm_shuffle_ps( xx_yy, xx_yy, _MM_SHUFFLE(0,0,1,0) );
2056
+ xx_yy_zz_xx = vec_sel( xx_yy_zz_xx, col2, select_z ); // TODO: Ck
2057
+ yy_zz_xx_yy = _mm_shuffle_ps( xx_yy_zz_xx, xx_yy_zz_xx, _MM_SHUFFLE(1,0,2,1) );
2058
+ zz_xx_yy_zz = _mm_shuffle_ps( xx_yy_zz_xx, xx_yy_zz_xx, _MM_SHUFFLE(2,1,0,2) );
2059
+
2060
+ diagSum = vec_add( vec_add( xx_yy_zz_xx, yy_zz_xx_yy ), zz_xx_yy_zz );
2061
+ diagDiff = vec_sub( vec_sub( xx_yy_zz_xx, yy_zz_xx_yy ), zz_xx_yy_zz );
2062
+ radicand = vec_add( vec_sel( diagDiff, diagSum, select_w ), _mm_set1_ps(1.0f) );
2063
+ // invSqrt = rsqrtf4( radicand );
2064
+ invSqrt = newtonrapson_rsqrt4( radicand );
2065
+
2066
+
2067
+
2068
+ zy_xz_yx = vec_sel( col0, col1, select_z ); // zy_xz_yx = 00 01 12 03
2069
+ //zy_xz_yx = vec_perm( zy_xz_yx, col2, _VECTORMATH_PERM_ZAYX );
2070
+ zy_xz_yx = _mm_shuffle_ps( zy_xz_yx, zy_xz_yx, _MM_SHUFFLE(0,1,2,2) ); // zy_xz_yx = 12 12 01 00
2071
+ zy_xz_yx = vec_sel( zy_xz_yx, vec_splat(col2, 0), select_y ); // zy_xz_yx = 12 20 01 00
2072
+ yz_zx_xy = vec_sel( col0, col1, select_x ); // yz_zx_xy = 10 01 02 03
2073
+ //yz_zx_xy = vec_perm( yz_zx_xy, col2, _VECTORMATH_PERM_BZXX );
2074
+ yz_zx_xy = _mm_shuffle_ps( yz_zx_xy, yz_zx_xy, _MM_SHUFFLE(0,0,2,0) ); // yz_zx_xy = 10 02 10 10
2075
+ yz_zx_xy = vec_sel( yz_zx_xy, vec_splat(col2, 1), select_x ); // yz_zx_xy = 21 02 10 10
2076
+
2077
+ sum = vec_add( zy_xz_yx, yz_zx_xy );
2078
+ diff = vec_sub( zy_xz_yx, yz_zx_xy );
2079
+
2080
+ scale = vec_mul( invSqrt, _mm_set1_ps(0.5f) );
2081
+
2082
+ //res0 = vec_perm( sum, diff, _VECTORMATH_PERM_XZYA );
2083
+ res0 = _mm_shuffle_ps( sum, sum, _MM_SHUFFLE(0,1,2,0) );
2084
+ res0 = vec_sel( res0, vec_splat(diff, 0), select_w ); // TODO: Ck
2085
+ //res1 = vec_perm( sum, diff, _VECTORMATH_PERM_ZXXB );
2086
+ res1 = _mm_shuffle_ps( sum, sum, _MM_SHUFFLE(0,0,0,2) );
2087
+ res1 = vec_sel( res1, vec_splat(diff, 1), select_w ); // TODO: Ck
2088
+ //res2 = vec_perm( sum, diff, _VECTORMATH_PERM_YXXC );
2089
+ res2 = _mm_shuffle_ps( sum, sum, _MM_SHUFFLE(0,0,0,1) );
2090
+ res2 = vec_sel( res2, vec_splat(diff, 2), select_w ); // TODO: Ck
2091
+ res3 = diff;
2092
+ res0 = vec_sel( res0, radicand, select_x );
2093
+ res1 = vec_sel( res1, radicand, select_y );
2094
+ res2 = vec_sel( res2, radicand, select_z );
2095
+ res3 = vec_sel( res3, radicand, select_w );
2096
+ res0 = vec_mul( res0, vec_splat( scale, 0 ) );
2097
+ res1 = vec_mul( res1, vec_splat( scale, 1 ) );
2098
+ res2 = vec_mul( res2, vec_splat( scale, 2 ) );
2099
+ res3 = vec_mul( res3, vec_splat( scale, 3 ) );
2100
+
2101
+ /* determine case and select answer */
2102
+
2103
+ xx = vec_splat( col0, 0 );
2104
+ yy = vec_splat( col1, 1 );
2105
+ zz = vec_splat( col2, 2 );
2106
+ res = vec_sel( res0, res1, vec_cmpgt( yy, xx ) );
2107
+ res = vec_sel( res, res2, vec_and( vec_cmpgt( zz, xx ), vec_cmpgt( zz, yy ) ) );
2108
+ res = vec_sel( res, res3, vec_cmpgt( vec_splat( diagSum, 0 ), _mm_setzero_ps() ) );
2109
+ mVec128 = res;
2110
+ }
2111
+
2112
+ VECTORMATH_FORCE_INLINE const Matrix3 outer( const Vector3 &tfrm0, const Vector3 &tfrm1 )
2113
+ {
2114
+ return Matrix3(
2115
+ ( tfrm0 * tfrm1.getX( ) ),
2116
+ ( tfrm0 * tfrm1.getY( ) ),
2117
+ ( tfrm0 * tfrm1.getZ( ) )
2118
+ );
2119
+ }
2120
+
2121
+ VECTORMATH_FORCE_INLINE const Matrix4 outer( const Vector4 &tfrm0, const Vector4 &tfrm1 )
2122
+ {
2123
+ return Matrix4(
2124
+ ( tfrm0 * tfrm1.getX( ) ),
2125
+ ( tfrm0 * tfrm1.getY( ) ),
2126
+ ( tfrm0 * tfrm1.getZ( ) ),
2127
+ ( tfrm0 * tfrm1.getW( ) )
2128
+ );
2129
+ }
2130
+
2131
+ VECTORMATH_FORCE_INLINE const Vector3 rowMul( const Vector3 &vec, const Matrix3 & mat )
2132
+ {
2133
+ __m128 tmp0, tmp1, mcol0, mcol1, mcol2, res;
2134
+ __m128 xxxx, yyyy, zzzz;
2135
+ tmp0 = vec_mergeh( mat.getCol0().get128(), mat.getCol2().get128() );
2136
+ tmp1 = vec_mergel( mat.getCol0().get128(), mat.getCol2().get128() );
2137
+ xxxx = vec_splat( vec.get128(), 0 );
2138
+ mcol0 = vec_mergeh( tmp0, mat.getCol1().get128() );
2139
+ //mcol1 = vec_perm( tmp0, mat.getCol1().get128(), _VECTORMATH_PERM_ZBWX );
2140
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
2141
+ mcol1 = _mm_shuffle_ps( tmp0, tmp0, _MM_SHUFFLE(0,3,2,2));
2142
+ mcol1 = vec_sel(mcol1, mat.getCol1().get128(), select_y);
2143
+ //mcol2 = vec_perm( tmp1, mat.getCol1().get128(), _VECTORMATH_PERM_XCYX );
2144
+ mcol2 = _mm_shuffle_ps( tmp1, tmp1, _MM_SHUFFLE(0,1,1,0));
2145
+ mcol2 = vec_sel(mcol2, vec_splat(mat.getCol1().get128(), 2), select_y);
2146
+ yyyy = vec_splat( vec.get128(), 1 );
2147
+ res = vec_mul( mcol0, xxxx );
2148
+ zzzz = vec_splat( vec.get128(), 2 );
2149
+ res = vec_madd( mcol1, yyyy, res );
2150
+ res = vec_madd( mcol2, zzzz, res );
2151
+ return Vector3( res );
2152
+ }
2153
+
2154
+ VECTORMATH_FORCE_INLINE const Matrix3 crossMatrix( const Vector3 &vec )
2155
+ {
2156
+ __m128 neg, res0, res1, res2;
2157
+ neg = negatef4( vec.get128() );
2158
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
2159
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
2160
+ VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
2161
+ //res0 = vec_perm( vec.get128(), neg, _VECTORMATH_PERM_XZBX );
2162
+ res0 = _mm_shuffle_ps( vec.get128(), vec.get128(), _MM_SHUFFLE(0,2,2,0) );
2163
+ res0 = vec_sel(res0, vec_splat(neg, 1), select_z);
2164
+ //res1 = vec_perm( vec.get128(), neg, _VECTORMATH_PERM_CXXX );
2165
+ res1 = vec_sel(vec_splat(vec.get128(), 0), vec_splat(neg, 2), select_x);
2166
+ //res2 = vec_perm( vec.get128(), neg, _VECTORMATH_PERM_YAXX );
2167
+ res2 = _mm_shuffle_ps( vec.get128(), vec.get128(), _MM_SHUFFLE(0,0,1,1) );
2168
+ res2 = vec_sel(res2, vec_splat(neg, 0), select_y);
2169
+ VM_ATTRIBUTE_ALIGN16 unsigned int filter_x[4] = {0, 0xffffffff, 0xffffffff, 0xffffffff};
2170
+ VM_ATTRIBUTE_ALIGN16 unsigned int filter_y[4] = {0xffffffff, 0, 0xffffffff, 0xffffffff};
2171
+ VM_ATTRIBUTE_ALIGN16 unsigned int filter_z[4] = {0xffffffff, 0xffffffff, 0, 0xffffffff};
2172
+ res0 = vec_and( res0, _mm_load_ps((float *)filter_x ) );
2173
+ res1 = vec_and( res1, _mm_load_ps((float *)filter_y ) );
2174
+ res2 = vec_and( res2, _mm_load_ps((float *)filter_z ) ); // TODO: Use selects?
2175
+ return Matrix3(
2176
+ Vector3( res0 ),
2177
+ Vector3( res1 ),
2178
+ Vector3( res2 )
2179
+ );
2180
+ }
2181
+
2182
+ VECTORMATH_FORCE_INLINE const Matrix3 crossMatrixMul( const Vector3 &vec, const Matrix3 & mat )
2183
+ {
2184
+ return Matrix3( cross( vec, mat.getCol0() ), cross( vec, mat.getCol1() ), cross( vec, mat.getCol2() ) );
2185
+ }
2186
+
2187
+ } // namespace Aos
2188
+ } // namespace Vectormath
2189
+
2190
+ #endif