From 8495c4214b345b97f83295cb8fb1df6caf42841a Mon Sep 17 00:00:00 2001 From: Tarun Bandi <57272137+tarun-bandi@users.noreply.github.com> Date: Tue, 8 Sep 2026 21:23:28 -0700 Subject: [PATCH] Document ContactPointInfo callback contract --- src/KingSystem/Physics/System/physContactPointInfo.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/KingSystem/Physics/System/physContactPointInfo.h b/src/KingSystem/Physics/System/physContactPointInfo.h index 450a2de0..16e63389 100644 --- a/src/KingSystem/Physics/System/physContactPointInfo.h +++ b/src/KingSystem/Physics/System/physContactPointInfo.h @@ -88,7 +88,10 @@ public: No = false, }; + /// Contact data passed to ContactCallback. The vector and collision-mask pointers are borrowed + /// for the duration of the callback; copy their values if they are needed afterwards. struct Event { + /// The other rigid body in the contact, rather than the body receiving the callback. RigidBody* body; const sead::Vector3f* position; const sead::Vector3f* separating_normal; @@ -133,6 +136,12 @@ public: const ContactPoint* const* mPointsStart = nullptr; }; + /// The output parameter starts at ShouldDisableContact::No. Set it to Yes to request that the + /// physical contact be disabled, independently of the return value. + /// + /// When called by ContactMgr::registerContactPoint, return false to skip recording the point, + /// or true to allow recording (subject to available storage). ContactListener's manifold + /// callback ignores the return value and only checks the ShouldDisableContact output. using ContactCallback = sead::IDelegate2R; static ContactPointInfo* make(sead::Heap* heap, int num, const sead::SafeString& name, int a,