#include "KingSystem/Physics/RigidBody/physRigidBodyFactory.h" #include "KingSystem/Physics/RigidBody/Shape/Box/physBoxShape.h" #include "KingSystem/Physics/RigidBody/Shape/BoxWater/physBoxWaterShape.h" #include "KingSystem/Physics/RigidBody/Shape/Capsule/physCapsuleRigidBody.h" #include "KingSystem/Physics/RigidBody/Shape/Capsule/physCapsuleShape.h" #include "KingSystem/Physics/RigidBody/Shape/Cylinder/physCylinderRigidBody.h" #include "KingSystem/Physics/RigidBody/Shape/Cylinder/physCylinderShape.h" #include "KingSystem/Physics/RigidBody/Shape/CylinderWater/physCylinderWaterRigidBody.h" #include "KingSystem/Physics/RigidBody/Shape/CylinderWater/physCylinderWaterShape.h" #include "KingSystem/Physics/RigidBody/Shape/Sphere/physSphereShape.h" #include "KingSystem/Physics/RigidBody/physRigidBodyFromShape.h" namespace ksys::phys { template static RigidBodyType* createRigidBody(RigidBodyInstanceParam* param, sead::Heap* heap) { if (param->isDynamicSensor()) param->motion_type = MotionType::Keyframed; auto* v = sead::DynamicCast(param); auto* shape = ShapeType::make(v->shape, heap); return RigidBodyFromShape::make(*shape, true, *param, heap); } RigidBody* RigidBodyFactory::createSphere(RigidBodyInstanceParam* params, sead::Heap* heap) { if (params->isDynamicSensor()) params->motion_type = MotionType::Keyframed; auto* v = sead::DynamicCast(params); auto* shape = v->shape.createShape(heap); return shape->createBody(true, *params, heap); } CapsuleRigidBody* RigidBodyFactory::createCapsule(RigidBodyInstanceParam* params, sead::Heap* heap) { return createRigidBody(params, heap); } CylinderRigidBody* RigidBodyFactory::createCylinder(RigidBodyInstanceParam* params, sead::Heap* heap) { return createRigidBody(params, heap); } CylinderWaterRigidBody* RigidBodyFactory::createCylinderWater(RigidBodyInstanceParam* params, sead::Heap* heap) { return createRigidBody(params, heap); } BoxRigidBody* RigidBodyFactory::createBox(RigidBodyInstanceParam* params, sead::Heap* heap) { return createRigidBody(params, heap); } BoxWaterRigidBody* RigidBodyFactory::createBoxWater(RigidBodyInstanceParam* params, sead::Heap* heap) { return createRigidBody(params, heap); } } // namespace ksys::phys