SCsub 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #!/usr/bin/env python
  2. from misc.utility.scons_hints import *
  3. Import("env")
  4. Import("env_modules")
  5. env_jolt = env_modules.Clone()
  6. # Thirdparty source files
  7. thirdparty_dir = "#thirdparty/jolt_physics/"
  8. thirdparty_sources = [
  9. "Jolt/RegisterTypes.cpp",
  10. "Jolt/AABBTree/AABBTreeBuilder.cpp",
  11. "Jolt/Core/Color.cpp",
  12. "Jolt/Core/Factory.cpp",
  13. "Jolt/Core/IssueReporting.cpp",
  14. "Jolt/Core/JobSystemSingleThreaded.cpp",
  15. "Jolt/Core/JobSystemThreadPool.cpp",
  16. "Jolt/Core/JobSystemWithBarrier.cpp",
  17. "Jolt/Core/LinearCurve.cpp",
  18. "Jolt/Core/Memory.cpp",
  19. "Jolt/Core/Profiler.cpp",
  20. "Jolt/Core/RTTI.cpp",
  21. "Jolt/Core/Semaphore.cpp",
  22. "Jolt/Core/StringTools.cpp",
  23. "Jolt/Core/TickCounter.cpp",
  24. "Jolt/Geometry/ConvexHullBuilder.cpp",
  25. "Jolt/Geometry/ConvexHullBuilder2D.cpp",
  26. "Jolt/Geometry/Indexify.cpp",
  27. "Jolt/Geometry/OrientedBox.cpp",
  28. "Jolt/Math/Vec3.cpp",
  29. "Jolt/ObjectStream/SerializableObject.cpp",
  30. "Jolt/Physics/DeterminismLog.cpp",
  31. "Jolt/Physics/IslandBuilder.cpp",
  32. "Jolt/Physics/LargeIslandSplitter.cpp",
  33. "Jolt/Physics/PhysicsScene.cpp",
  34. "Jolt/Physics/PhysicsSystem.cpp",
  35. "Jolt/Physics/PhysicsUpdateContext.cpp",
  36. "Jolt/Physics/StateRecorderImpl.cpp",
  37. "Jolt/Physics/Body/Body.cpp",
  38. "Jolt/Physics/Body/BodyCreationSettings.cpp",
  39. "Jolt/Physics/Body/BodyInterface.cpp",
  40. "Jolt/Physics/Body/BodyManager.cpp",
  41. "Jolt/Physics/Body/MassProperties.cpp",
  42. "Jolt/Physics/Body/MotionProperties.cpp",
  43. "Jolt/Physics/Character/Character.cpp",
  44. "Jolt/Physics/Character/CharacterBase.cpp",
  45. "Jolt/Physics/Character/CharacterVirtual.cpp",
  46. "Jolt/Physics/Collision/CastConvexVsTriangles.cpp",
  47. "Jolt/Physics/Collision/CastSphereVsTriangles.cpp",
  48. "Jolt/Physics/Collision/CollideConvexVsTriangles.cpp",
  49. "Jolt/Physics/Collision/CollideSphereVsTriangles.cpp",
  50. "Jolt/Physics/Collision/CollisionDispatch.cpp",
  51. "Jolt/Physics/Collision/CollisionGroup.cpp",
  52. "Jolt/Physics/Collision/EstimateCollisionResponse.cpp",
  53. "Jolt/Physics/Collision/GroupFilter.cpp",
  54. "Jolt/Physics/Collision/GroupFilterTable.cpp",
  55. "Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp",
  56. "Jolt/Physics/Collision/NarrowPhaseQuery.cpp",
  57. "Jolt/Physics/Collision/NarrowPhaseStats.cpp",
  58. "Jolt/Physics/Collision/PhysicsMaterial.cpp",
  59. "Jolt/Physics/Collision/PhysicsMaterialSimple.cpp",
  60. "Jolt/Physics/Collision/TransformedShape.cpp",
  61. "Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp",
  62. "Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp",
  63. "Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp",
  64. "Jolt/Physics/Collision/BroadPhase/QuadTree.cpp",
  65. "Jolt/Physics/Collision/Shape/BoxShape.cpp",
  66. "Jolt/Physics/Collision/Shape/CapsuleShape.cpp",
  67. "Jolt/Physics/Collision/Shape/CompoundShape.cpp",
  68. "Jolt/Physics/Collision/Shape/ConvexHullShape.cpp",
  69. "Jolt/Physics/Collision/Shape/ConvexShape.cpp",
  70. "Jolt/Physics/Collision/Shape/CylinderShape.cpp",
  71. "Jolt/Physics/Collision/Shape/DecoratedShape.cpp",
  72. "Jolt/Physics/Collision/Shape/EmptyShape.cpp",
  73. "Jolt/Physics/Collision/Shape/HeightFieldShape.cpp",
  74. "Jolt/Physics/Collision/Shape/MeshShape.cpp",
  75. "Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp",
  76. "Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp",
  77. "Jolt/Physics/Collision/Shape/PlaneShape.cpp",
  78. "Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp",
  79. "Jolt/Physics/Collision/Shape/ScaledShape.cpp",
  80. "Jolt/Physics/Collision/Shape/Shape.cpp",
  81. "Jolt/Physics/Collision/Shape/SphereShape.cpp",
  82. "Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp",
  83. "Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp",
  84. "Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp",
  85. "Jolt/Physics/Collision/Shape/TriangleShape.cpp",
  86. "Jolt/Physics/Constraints/ConeConstraint.cpp",
  87. "Jolt/Physics/Constraints/Constraint.cpp",
  88. "Jolt/Physics/Constraints/ConstraintManager.cpp",
  89. "Jolt/Physics/Constraints/ContactConstraintManager.cpp",
  90. "Jolt/Physics/Constraints/DistanceConstraint.cpp",
  91. "Jolt/Physics/Constraints/FixedConstraint.cpp",
  92. "Jolt/Physics/Constraints/GearConstraint.cpp",
  93. "Jolt/Physics/Constraints/HingeConstraint.cpp",
  94. "Jolt/Physics/Constraints/MotorSettings.cpp",
  95. "Jolt/Physics/Constraints/PathConstraint.cpp",
  96. "Jolt/Physics/Constraints/PathConstraintPath.cpp",
  97. "Jolt/Physics/Constraints/PathConstraintPathHermite.cpp",
  98. "Jolt/Physics/Constraints/PointConstraint.cpp",
  99. "Jolt/Physics/Constraints/PulleyConstraint.cpp",
  100. "Jolt/Physics/Constraints/RackAndPinionConstraint.cpp",
  101. "Jolt/Physics/Constraints/SixDOFConstraint.cpp",
  102. "Jolt/Physics/Constraints/SliderConstraint.cpp",
  103. "Jolt/Physics/Constraints/SpringSettings.cpp",
  104. "Jolt/Physics/Constraints/SwingTwistConstraint.cpp",
  105. "Jolt/Physics/Constraints/TwoBodyConstraint.cpp",
  106. "Jolt/Physics/Ragdoll/Ragdoll.cpp",
  107. "Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp",
  108. "Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp",
  109. "Jolt/Physics/SoftBody/SoftBodyShape.cpp",
  110. "Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp",
  111. "Jolt/Physics/Vehicle/MotorcycleController.cpp",
  112. "Jolt/Physics/Vehicle/TrackedVehicleController.cpp",
  113. "Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp",
  114. "Jolt/Physics/Vehicle/VehicleCollisionTester.cpp",
  115. "Jolt/Physics/Vehicle/VehicleConstraint.cpp",
  116. "Jolt/Physics/Vehicle/VehicleController.cpp",
  117. "Jolt/Physics/Vehicle/VehicleDifferential.cpp",
  118. "Jolt/Physics/Vehicle/VehicleEngine.cpp",
  119. "Jolt/Physics/Vehicle/VehicleTrack.cpp",
  120. "Jolt/Physics/Vehicle/VehicleTransmission.cpp",
  121. "Jolt/Physics/Vehicle/Wheel.cpp",
  122. "Jolt/Physics/Vehicle/WheeledVehicleController.cpp",
  123. "Jolt/Renderer/DebugRenderer.cpp",
  124. "Jolt/Renderer/DebugRendererPlayback.cpp",
  125. "Jolt/Renderer/DebugRendererRecorder.cpp",
  126. "Jolt/Renderer/DebugRendererSimple.cpp",
  127. "Jolt/Skeleton/SkeletalAnimation.cpp",
  128. "Jolt/Skeleton/Skeleton.cpp",
  129. "Jolt/Skeleton/SkeletonMapper.cpp",
  130. "Jolt/Skeleton/SkeletonPose.cpp",
  131. "Jolt/TriangleGrouper/TriangleGrouperClosestCentroid.cpp",
  132. "Jolt/TriangleGrouper/TriangleGrouperMorton.cpp",
  133. "Jolt/TriangleSplitter/TriangleSplitter.cpp",
  134. "Jolt/TriangleSplitter/TriangleSplitterBinning.cpp",
  135. "Jolt/TriangleSplitter/TriangleSplitterFixedLeafSize.cpp",
  136. "Jolt/TriangleSplitter/TriangleSplitterLongestAxis.cpp",
  137. "Jolt/TriangleSplitter/TriangleSplitterMean.cpp",
  138. "Jolt/TriangleSplitter/TriangleSplitterMorton.cpp",
  139. ]
  140. thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
  141. env_jolt.Prepend(CPPPATH=[thirdparty_dir])
  142. if env.dev_build:
  143. env_jolt.Append(CPPDEFINES=["JPH_ENABLE_ASSERTS"])
  144. if env.editor_build:
  145. env_jolt.Append(CPPDEFINES=["JPH_DEBUG_RENDERER"])
  146. if env["precision"] == "double":
  147. env_jolt.Append(CPPDEFINES=["JPH_DOUBLE_PRECISION"])
  148. env_thirdparty = env_jolt.Clone()
  149. env_thirdparty.disable_warnings()
  150. thirdparty_obj = []
  151. env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
  152. env.modules_sources += thirdparty_obj
  153. # Godot source files
  154. module_obj = []
  155. env_jolt.add_source_files(module_obj, "*.cpp")
  156. env_jolt.add_source_files(module_obj, "joints/*.cpp")
  157. env_jolt.add_source_files(module_obj, "misc/*.cpp")
  158. env_jolt.add_source_files(module_obj, "objects/*.cpp")
  159. env_jolt.add_source_files(module_obj, "shapes/*.cpp")
  160. env_jolt.add_source_files(module_obj, "spaces/*.cpp")
  161. env.modules_sources += module_obj
  162. # Needed to force rebuilding the module files when the thirdparty library is updated.
  163. env.Depends(module_obj, thirdparty_obj)