25#include <entt/entt.hpp>
26#include <glm/vec3.hpp>
69 return static_cast<PhaseFlag>(
static_cast<uint32_t
>(a) |
static_cast<uint32_t
>(b));
78 return static_cast<uint32_t
>(a) != 0u;
125void recordFrame(const PlayerFrame& frame) noexcept;
187void annotate(entt::entity entity, std::string_view label)
noexcept;
Definition DeterminismHash.cpp:16
PhaseFlag
Bitfield flags attached to each logged row — auto-detected.
Definition PhaseDiagnostic.hpp:34
@ WallrunCeilingConstrained
Wallrun was vertically constrained by a head/ceiling contact.
Definition PhaseDiagnostic.hpp:62
@ DepenCancelled
Depen found overlaps but the aggregated push direction cancelled out (rare; either trapped between mi...
Definition PhaseDiagnostic.hpp:45
@ DeepPenetration
Depen had to push the player by >20 u in one tick — the player was deep inside geometry before depen.
Definition PhaseDiagnostic.hpp:48
@ SuspectedPhase
Actual per-tick position delta exceeded velocity * dt by > 2× + 5 u — the player likely tunnelled thr...
Definition PhaseDiagnostic.hpp:55
@ DoubleJumped
Definition PhaseDiagnostic.hpp:40
@ BumpExhausted
The bump loop consumed all 4 iterations and still had remainingTime > 0 — the player was grinding aga...
Definition PhaseDiagnostic.hpp:52
@ GrappleActive
Definition PhaseDiagnostic.hpp:39
@ None
Definition PhaseDiagnostic.hpp:35
@ KccOscillationResolved
KCC detected and resolved a repeated ABAB depen/sweep oscillation.
Definition PhaseDiagnostic.hpp:64
@ Grounded
Definition PhaseDiagnostic.hpp:36
@ WallRunning
Definition PhaseDiagnostic.hpp:37
@ GravityFlipped
Definition PhaseDiagnostic.hpp:41
@ Sliding
Definition PhaseDiagnostic.hpp:38
@ InvalidState
A position, velocity, normal, or stored movement vector was non-finite.
Definition PhaseDiagnostic.hpp:58
@ WallrunBlocked
Wallrun was constrained by a non-traversable blocker contact.
Definition PhaseDiagnostic.hpp:60
void setFilePrefix(std::string_view prefix)
Set the filename prefix used for this process's diagnostic CSVs.
Definition PhaseDiagnostic.cpp:224
void setEnabled(bool on)
Enable / disable telemetry.
Definition PhaseDiagnostic.cpp:249
PhaseFlag operator|(PhaseFlag a, PhaseFlag b) noexcept
Definition PhaseDiagnostic.hpp:67
void recordDepenContact(const DepenContact &c) noexcept
Append one depen-contact row to its own CSV log (depen-trace-<timestamp>.csv in the working dir).
Definition PhaseDiagnostic.cpp:483
void consumeAnnotation(entt::entity entity, char(&out)[48]) noexcept
Drain any queued annotation for entity into out, then clear it.
Definition PhaseDiagnostic.cpp:270
PhaseFlag & operator|=(PhaseFlag &a, PhaseFlag b) noexcept
Definition PhaseDiagnostic.hpp:71
void annotate(entt::entity entity, std::string_view label) noexcept
Attach a text annotation to the NEXT frame recorded for the given entity.
Definition PhaseDiagnostic.cpp:262
bool isEnabled() noexcept
Definition PhaseDiagnostic.cpp:257
void stopRecording()
Stop telemetry and close every open CSV file.
Definition PhaseDiagnostic.cpp:243
void recordMovementFrame(const MovementFrame &f) noexcept
Append a MovementSystem telemetry row to movement-diag-<timestamp>.csv.
Definition PhaseDiagnostic.cpp:377
void recordKccTimingFrame(const KccTimingFrame &f) noexcept
Append KCC timing telemetry to kcc-timing-<timestamp>.csv.
Definition PhaseDiagnostic.cpp:454
void startRecording()
Start a fresh telemetry session.
Definition PhaseDiagnostic.cpp:232
bool any(PhaseFlag a) noexcept
Definition PhaseDiagnostic.hpp:76
void recordFrame(const PlayerFrame &f) noexcept
Append a player's per-tick frame to the open CSV log.
Definition PhaseDiagnostic.cpp:285
One row of timing telemetry for the player KCC.
Definition PhaseDiagnostic.hpp:166
entt::entity entity
Definition PhaseDiagnostic.hpp:167
int sweepQueries
Definition PhaseDiagnostic.hpp:172
int clearanceQueries
Definition PhaseDiagnostic.hpp:171
uint64_t elapsedUs
Definition PhaseDiagnostic.hpp:168
int substeps
Definition PhaseDiagnostic.hpp:169
bool caExhausted
Definition PhaseDiagnostic.hpp:175
bool grounded
Definition PhaseDiagnostic.hpp:176
int moveMode
Definition PhaseDiagnostic.hpp:177
int caIterations
Definition PhaseDiagnostic.hpp:170
bool usedWalkCapsule
Definition PhaseDiagnostic.hpp:174
int sweepHits
Definition PhaseDiagnostic.hpp:173
One row captured around MovementSystem, before CollisionSystem/KCC.
Definition PhaseDiagnostic.hpp:132
bool inputForward
Definition PhaseDiagnostic.hpp:142
bool groundedBefore
Definition PhaseDiagnostic.hpp:140
glm::vec3 frontNormal
Definition PhaseDiagnostic.hpp:153
PhaseFlag flags
Definition PhaseDiagnostic.hpp:155
glm::vec3 velBefore
Definition PhaseDiagnostic.hpp:136
bool inputGrapple
Definition PhaseDiagnostic.hpp:148
float groundDistance
Definition PhaseDiagnostic.hpp:152
glm::vec3 velAfter
Definition PhaseDiagnostic.hpp:137
glm::vec3 posBefore
Definition PhaseDiagnostic.hpp:134
bool inputRight
Definition PhaseDiagnostic.hpp:145
bool inputBack
Definition PhaseDiagnostic.hpp:143
bool inputLeft
Definition PhaseDiagnostic.hpp:144
float yaw
Definition PhaseDiagnostic.hpp:149
int modeBefore
Definition PhaseDiagnostic.hpp:138
float pitch
Definition PhaseDiagnostic.hpp:150
bool inputJump
Definition PhaseDiagnostic.hpp:146
int modeAfter
Definition PhaseDiagnostic.hpp:139
bool wallFront
Definition PhaseDiagnostic.hpp:151
bool groundedAfter
Definition PhaseDiagnostic.hpp:141
glm::vec3 frontPoint
Definition PhaseDiagnostic.hpp:154
bool inputCrouch
Definition PhaseDiagnostic.hpp:147
char note[64]
Definition PhaseDiagnostic.hpp:156
glm::vec3 posAfter
Definition PhaseDiagnostic.hpp:135
entt::entity entity
Definition PhaseDiagnostic.hpp:133
One row of telemetry — captured per player per tick.
Definition PhaseDiagnostic.hpp:84
glm::vec3 posAfter
Final position, after bump loop + slope snap.
Definition PhaseDiagnostic.hpp:89
glm::vec3 velBefore
Velocity at tick start (already integrated by movement).
Definition PhaseDiagnostic.hpp:90
int bumpHits
Number of bump iterations that hit something.
Definition PhaseDiagnostic.hpp:94
int moveMode
MoveMode enum cast to int.
Definition PhaseDiagnostic.hpp:95
glm::vec3 posBefore
Position at tick start, BEFORE depen.
Definition PhaseDiagnostic.hpp:87
char note[48]
Free-form annotation slot (e.g., "wallrun-enter").
Definition PhaseDiagnostic.hpp:99
PhaseFlag flags
Definition PhaseDiagnostic.hpp:98
glm::vec3 velAfter
Velocity at tick end.
Definition PhaseDiagnostic.hpp:91
glm::vec3 posAfterDepen
After depen, BEFORE bump loop.
Definition PhaseDiagnostic.hpp:88
uint64_t tick
Definition PhaseDiagnostic.hpp:85
int jumpCount
Definition PhaseDiagnostic.hpp:97
glm::vec3 lastHitNormal
Normal of the last sweep hit in the bump loop (or 0).
Definition PhaseDiagnostic.hpp:92
float depenPushDistance
|posAfterDepen - posBefore|.
Definition PhaseDiagnostic.hpp:93
entt::entity entity
Definition PhaseDiagnostic.hpp:86
int wallrunSide
WallSide enum (None=0, Left=1, Right=2).
Definition PhaseDiagnostic.hpp:96