ruby-bullet 0.0.2-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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