14 std::shared_ptr<Collider> collider;
16 if (json.contains(
"collider"))
18 const auto& colliderObj = json[
"collider"];
19 std::string type = colliderObj.value(
"type",
"");
24 colliderObj.value(
"x", 1.0f),
25 colliderObj.value(
"y", 1.0f),
26 colliderObj.value(
"z", 1.0f));
27 collider = std::make_shared<BoxCollider>(extents);
29 else if (type ==
"sphere")
31 float radius = colliderObj.value(
"r", 1.0f);
32 collider = std::make_shared<SphereCollider>(radius);
34 else if (type ==
"capsule")
36 float radius = colliderObj.value(
"r", 1.0f);
37 float height = colliderObj.value(
"h", 1.0f);
38 collider = std::make_shared<CapsuleCollider>(radius, height);
46 std::shared_ptr<RigidBody> rigidBody;
47 if (json.contains(
"body"))
49 const auto& bodyObj = json[
"body"];
51 float mass = bodyObj.value(
"mass", 0.0f);
52 float friction = bodyObj.value(
"friction", 0.5f);
53 std::string typeStr = bodyObj.value(
"type",
"static");
56 if (typeStr ==
"dynamic")
60 else if (typeStr ==
"kinematic")
65 rigidBody = std::make_shared<RigidBody>(type, collider, mass, friction);