group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
RagdollPbd.hpp
Go to the documentation of this file.
1
28
29#pragma once
30
32
33#include <cstdint>
34#include <entt/entt.hpp>
35#include <glm/gtc/quaternion.hpp>
36#include <glm/vec3.hpp>
37
38namespace physics
39{
40
48{
49 enum class Kind : uint8_t
50 {
54 };
55
56 entt::entity bodyA{entt::null};
57 entt::entity bodyB{entt::null};
58
59 glm::vec3 localAnchorA{0.0f};
60 glm::vec3 localAnchorB{0.0f};
61
63
65 glm::vec3 axisLocalA{1.0f, 0.0f, 0.0f};
66
69 float swingLimit = 1.4f;
70
72 float twistLimit = 0.8f;
73
75 float hingeMin = -1.5f;
76 float hingeMax = 0.05f;
77};
78
91void enforceRagdollConnectivity(Registry& registry, float dt, int iterations = 8);
92
93} // namespace physics
Shared ECS registry type alias for the game engine.
entt::registry Registry
Shared ECS registry type alias.
Definition Registry.hpp:11
Pure physics math — no ECS types, no registry.
Definition BroadphaseTree.cpp:11
void enforceRagdollConnectivity(Registry &registry, float dt, int iterations)
Enforce ragdoll connectivity + angular limits via N PBD iterations.
Definition RagdollPbd.cpp:199
One articulated joint in a PBD ragdoll skeleton.
Definition RagdollPbd.hpp:48
glm::vec3 localAnchorB
Joint origin in child local space.
Definition RagdollPbd.hpp:60
float hingeMax
Definition RagdollPbd.hpp:76
entt::entity bodyB
Child.
Definition RagdollPbd.hpp:57
float twistLimit
Max ± twist angle for ConeTwist (radians).
Definition RagdollPbd.hpp:72
Kind
Definition RagdollPbd.hpp:50
@ Hinge
1-DOF rotation about axisLocalA. Clamped to [hingeMin, hingeMax].
Definition RagdollPbd.hpp:52
@ Point
Ball-and-socket. Cone limit applied (swingLimit).
Definition RagdollPbd.hpp:51
@ ConeTwist
Swing limit (cone) + twist limit about axisLocalA.
Definition RagdollPbd.hpp:53
glm::vec3 localAnchorA
Joint origin in parent local space.
Definition RagdollPbd.hpp:59
float swingLimit
Max half-cone angle for swing about the joint frame (radians).
Definition RagdollPbd.hpp:69
float hingeMin
Hinge angle bounds (radians). Used only when kind == Hinge.
Definition RagdollPbd.hpp:75
entt::entity bodyA
Parent.
Definition RagdollPbd.hpp:56
Kind kind
Definition RagdollPbd.hpp:62
glm::vec3 axisLocalA
Hinge / twist axis expressed in the parent's local frame.
Definition RagdollPbd.hpp:65