group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
ContactManifold.hpp
Go to the documentation of this file.
1
14
15#pragma once
16
18
19#include <array>
20#include <cstdint>
21#include <entt/entt.hpp>
22#include <glm/vec3.hpp>
23
24namespace physics
25{
26
30inline constexpr int k_maxContactPoints = 4;
31
36{
37 uint32_t value = 0xFFFFFFFFu;
38
39 [[nodiscard]] bool operator==(const ContactFeatureId& other) const noexcept { return value == other.value; }
40};
41
44{
45 glm::vec3 worldPositionA{0.0f};
46 glm::vec3 worldPositionB{0.0f};
47 glm::vec3 localA{0.0f};
48 glm::vec3 localB{0.0f};
49 float depth = 0.0f;
50 float normalImpulse = 0.0f;
51 float tangentImpulse[2] = {0.0f, 0.0f};
53};
54
58{
59 entt::entity a{entt::null};
60 entt::entity b{entt::null};
61 glm::vec3 normal{0.0f, 1.0f, 0.0f};
62 int pointCount = 0;
63 std::array<ContactPoint, k_maxContactPoints> points{};
66
69 bool aIsStatic = false;
70 bool bIsStatic = false;
71};
72
73} // namespace physics
Surface-material classification shared across collision, raycasts, VFX, SFX, and damage falloff.
SurfaceType
Surface material hit by a projectile / hitscan / contact.
Definition SurfaceType.hpp:28
@ Concrete
Definition SurfaceType.hpp:30
Pure physics math — no ECS types, no registry.
Definition BroadphaseTree.cpp:11
constexpr int k_maxContactPoints
Up to 4 points per body pair — enough for any flat-face contact (box-on-box, box-on-ground,...
Definition ContactManifold.hpp:30
Identifier built from "which feature of A" and "which feature ofB" met at this contact.
Definition ContactManifold.hpp:36
bool operator==(const ContactFeatureId &other) const noexcept
Definition ContactManifold.hpp:39
uint32_t value
Definition ContactManifold.hpp:37
A contact manifold between exactly two entities.
Definition ContactManifold.hpp:58
SurfaceType surfaceA
Definition ContactManifold.hpp:64
SurfaceType surfaceB
Definition ContactManifold.hpp:65
int pointCount
Definition ContactManifold.hpp:62
bool bIsStatic
Definition ContactManifold.hpp:70
bool aIsStatic
Static / kinematic flag.
Definition ContactManifold.hpp:69
std::array< ContactPoint, k_maxContactPoints > points
Definition ContactManifold.hpp:63
glm::vec3 normal
Points from A → B (out of A's surface).
Definition ContactManifold.hpp:61
entt::entity a
Definition ContactManifold.hpp:59
entt::entity b
Definition ContactManifold.hpp:60
One sub-contact in a multi-point manifold.
Definition ContactManifold.hpp:44
glm::vec3 localB
Body-B-local offset.
Definition ContactManifold.hpp:48
glm::vec3 localA
Body-A-local offset for warm-start matching.
Definition ContactManifold.hpp:47
glm::vec3 worldPositionA
World-space hit point on body A.
Definition ContactManifold.hpp:45
glm::vec3 worldPositionB
World-space hit point on body B.
Definition ContactManifold.hpp:46
float normalImpulse
Accumulated normal impulse, carried across frames.
Definition ContactManifold.hpp:50
ContactFeatureId featureId
Definition ContactManifold.hpp:52
float tangentImpulse[2]
Two friction tangents.
Definition ContactManifold.hpp:51
float depth
Penetration depth (positive = overlapping).
Definition ContactManifold.hpp:49