RegisterTypes.cpp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #include <Jolt.h>
  4. #include <RegisterTypes.h>
  5. #include <Core/Factory.h>
  6. #include <Core/RTTI.h>
  7. #include <Physics/Collision/Shape/TriangleShape.h>
  8. #include <Physics/Collision/Shape/SphereShape.h>
  9. #include <Physics/Collision/Shape/BoxShape.h>
  10. #include <Physics/Collision/Shape/CapsuleShape.h>
  11. #include <Physics/Collision/Shape/TaperedCapsuleShape.h>
  12. #include <Physics/Collision/Shape/CylinderShape.h>
  13. #include <Physics/Collision/Shape/ScaledShape.h>
  14. #include <Physics/Collision/Shape/MeshShape.h>
  15. #include <Physics/Collision/Shape/ConvexHullShape.h>
  16. #include <Physics/Collision/Shape/HeightFieldShape.h>
  17. #include <Physics/Collision/Shape/RotatedTranslatedShape.h>
  18. #include <Physics/Collision/Shape/OffsetCenterOfMassShape.h>
  19. #include <Physics/Collision/Shape/MutableCompoundShape.h>
  20. #include <Physics/Collision/Shape/StaticCompoundShape.h>
  21. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, Skeleton);
  22. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, SkeletalAnimation);
  23. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, CompoundShapeSettings);
  24. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, StaticCompoundShapeSettings);
  25. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, MutableCompoundShapeSettings);
  26. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, TriangleShapeSettings);
  27. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, SphereShapeSettings);
  28. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, BoxShapeSettings);
  29. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, CapsuleShapeSettings);
  30. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, TaperedCapsuleShapeSettings);
  31. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, CylinderShapeSettings);
  32. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, ScaledShapeSettings);
  33. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, MeshShapeSettings);
  34. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, ConvexHullShapeSettings);
  35. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, HeightFieldShapeSettings);
  36. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, RotatedTranslatedShapeSettings);
  37. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, OffsetCenterOfMassShapeSettings);
  38. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, RagdollSettings);
  39. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, PointConstraintSettings);
  40. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, SixDOFConstraintSettings);
  41. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, SliderConstraintSettings);
  42. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, SwingTwistConstraintSettings);
  43. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, DistanceConstraintSettings);
  44. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, HingeConstraintSettings);
  45. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, FixedConstraintSettings);
  46. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, ConeConstraintSettings);
  47. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, PathConstraintSettings);
  48. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, PathConstraintPath);
  49. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, PathConstraintPathHermite);
  50. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, VehicleConstraintSettings);
  51. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, WheeledVehicleControllerSettings);
  52. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, MotorSettings);
  53. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, PhysicsScene);
  54. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, PhysicsMaterial);
  55. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, PhysicsMaterialSimple);
  56. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, GroupFilter);
  57. JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(JPH, GroupFilterTable);
  58. namespace JPH {
  59. void RegisterTypes()
  60. {
  61. // Register base classes first so that we can specialize them later
  62. CompoundShape::sRegister();
  63. ConvexShape::sRegister();
  64. // Register compounds before others so that we can specialize them later (register them in reverse order of collision complexity)
  65. MutableCompoundShape::sRegister();
  66. StaticCompoundShape::sRegister();
  67. // Leaf classes
  68. TriangleShape::sRegister();
  69. SphereShape::sRegister();
  70. BoxShape::sRegister();
  71. CapsuleShape::sRegister();
  72. TaperedCapsuleShape::sRegister();
  73. CylinderShape::sRegister();
  74. MeshShape::sRegister();
  75. ConvexHullShape::sRegister();
  76. HeightFieldShape::sRegister();
  77. // Register these last because their collision functions are simple so we want to execute them first (register them in reverse order of collision complexity)
  78. RotatedTranslatedShape::sRegister();
  79. OffsetCenterOfMassShape::sRegister();
  80. ScaledShape::sRegister();
  81. Factory::sInstance.Register(JPH_RTTI(SkeletalAnimation));
  82. Factory::sInstance.Register(JPH_RTTI(Skeleton));
  83. Factory::sInstance.Register(JPH_RTTI(CompoundShapeSettings));
  84. Factory::sInstance.Register(JPH_RTTI(StaticCompoundShapeSettings));
  85. Factory::sInstance.Register(JPH_RTTI(MutableCompoundShapeSettings));
  86. Factory::sInstance.Register(JPH_RTTI(TriangleShapeSettings));
  87. Factory::sInstance.Register(JPH_RTTI(SphereShapeSettings));
  88. Factory::sInstance.Register(JPH_RTTI(BoxShapeSettings));
  89. Factory::sInstance.Register(JPH_RTTI(CapsuleShapeSettings));
  90. Factory::sInstance.Register(JPH_RTTI(TaperedCapsuleShapeSettings));
  91. Factory::sInstance.Register(JPH_RTTI(CylinderShapeSettings));
  92. Factory::sInstance.Register(JPH_RTTI(ScaledShapeSettings));
  93. Factory::sInstance.Register(JPH_RTTI(MeshShapeSettings));
  94. Factory::sInstance.Register(JPH_RTTI(ConvexHullShapeSettings));
  95. Factory::sInstance.Register(JPH_RTTI(HeightFieldShapeSettings));
  96. Factory::sInstance.Register(JPH_RTTI(RotatedTranslatedShapeSettings));
  97. Factory::sInstance.Register(JPH_RTTI(OffsetCenterOfMassShapeSettings));
  98. Factory::sInstance.Register(JPH_RTTI(RagdollSettings));
  99. Factory::sInstance.Register(JPH_RTTI(PointConstraintSettings));
  100. Factory::sInstance.Register(JPH_RTTI(SixDOFConstraintSettings));
  101. Factory::sInstance.Register(JPH_RTTI(SliderConstraintSettings));
  102. Factory::sInstance.Register(JPH_RTTI(SwingTwistConstraintSettings));
  103. Factory::sInstance.Register(JPH_RTTI(DistanceConstraintSettings));
  104. Factory::sInstance.Register(JPH_RTTI(HingeConstraintSettings));
  105. Factory::sInstance.Register(JPH_RTTI(FixedConstraintSettings));
  106. Factory::sInstance.Register(JPH_RTTI(ConeConstraintSettings));
  107. Factory::sInstance.Register(JPH_RTTI(PathConstraintSettings));
  108. Factory::sInstance.Register(JPH_RTTI(VehicleConstraintSettings));
  109. Factory::sInstance.Register(JPH_RTTI(WheeledVehicleControllerSettings));
  110. Factory::sInstance.Register(JPH_RTTI(PathConstraintPath));
  111. Factory::sInstance.Register(JPH_RTTI(PathConstraintPathHermite));
  112. Factory::sInstance.Register(JPH_RTTI(MotorSettings));
  113. Factory::sInstance.Register(JPH_RTTI(PhysicsScene));
  114. Factory::sInstance.Register(JPH_RTTI(PhysicsMaterial));
  115. Factory::sInstance.Register(JPH_RTTI(PhysicsMaterialSimple));
  116. Factory::sInstance.Register(JPH_RTTI(GroupFilter));
  117. Factory::sInstance.Register(JPH_RTTI(GroupFilterTable));
  118. }
  119. }; // JPH