summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDerek Hensley <hensley.derek58@gmail.com>2024-10-12 17:31:16 -0700
committerGitHub <noreply@github.com>2024-10-12 17:31:16 -0700
commit3472e79caa697ba2b915850171f97f9515aec6b2 (patch)
treee187f6b6a3b64508057c4a1945086b5ceb1728b1 /include
parent0514d963d9fcf16cc77f39880445db5271766b3d (diff)
Colliders Sync JntSphere (#1700)
* JntSphere * Format * PR review
Diffstat (limited to 'include')
-rw-r--r--include/z64actor.h4
-rw-r--r--include/z64collision_check.h60
2 files changed, 36 insertions, 28 deletions
diff --git a/include/z64actor.h b/include/z64actor.h
index dd03d978a..6f1b604e1 100644
--- a/include/z64actor.h
+++ b/include/z64actor.h
@@ -852,12 +852,12 @@ Actor* Actor_FindNearby(struct PlayState* play, Actor* inActor, s16 actorId, u8
s32 func_800BE184(struct PlayState* play, Actor* actor, f32 xzDist, s16 arg3, s16 arg4, s16 arg5);
u8 Actor_ApplyDamage(Actor* actor);
void Actor_SetDropFlag(Actor* actor, ColliderElement* elem);
-void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSphere);
+void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSph);
void func_800BE33C(Vec3f* arg0, Vec3f* arg1, Vec3s* dst, s32 arg3);
void func_800BE3D0(Actor* actor, s16 angle, Vec3s* arg2);
void func_800BE504(Actor* actor, ColliderCylinder* collider);
void func_800BE568(Actor* actor, ColliderSphere* collider);
-void func_800BE5CC(Actor* actor, ColliderJntSph* collider, s32 colliderIndex);
+void func_800BE5CC(Actor* actor, ColliderJntSph* jntSph, s32 elemIndex);
s32 Actor_IsSmallChest(struct EnBox* chest);
void Actor_DrawDamageEffects(struct PlayState* play, Actor* actor, Vec3f bodyPartsPos[], s16 bodyPartsCount,
f32 effectScale, f32 frozenSteamScale, f32 effectAlpha, u8 type);
diff --git a/include/z64collision_check.h b/include/z64collision_check.h
index 11833d66d..d031f3fb1 100644
--- a/include/z64collision_check.h
+++ b/include/z64collision_check.h
@@ -93,6 +93,12 @@ typedef struct {
/* 0x16 */ u8 ocElemFlags; // Information flags for OC collisions
} ColliderElementInit; // size = 0x18
+/*
+ * JntSph - A collider made of sphere shaped elements. Each sphere can attach to a skeleton joint (limb).
+ */
+
+// collider structs
+
typedef struct {
/* 0x00 */ Sphere16 modelSphere; // model space sphere
/* 0x08 */ Sphere16 worldSphere; // world space sphere
@@ -101,27 +107,29 @@ typedef struct {
} ColliderJntSphElementDim; // size = 0x18
typedef struct {
- /* 0x0 */ u8 limb; // attached limb
- /* 0x2 */ Sphere16 modelSphere; // model space sphere
- /* 0xA */ s16 scale; // world space sphere = model * scale * 0.01
-} ColliderJntSphElementDimInit; // size = 0xC
-
-typedef struct {
- /* 0x00 */ ColliderElement info;
+ /* 0x00 */ ColliderElement base;
/* 0x28 */ ColliderJntSphElementDim dim;
} ColliderJntSphElement; // size = 0x40
typedef struct {
- /* 0x00 */ ColliderElementInit info;
- /* 0x18 */ ColliderJntSphElementDimInit dim;
-} ColliderJntSphElementInit; // size = 0x24
-
-typedef struct {
/* 0x00 */ Collider base;
/* 0x18 */ s32 count;
/* 0x1C */ ColliderJntSphElement* elements;
} ColliderJntSph; // size = 0x20
+// init data structs
+
+typedef struct {
+ /* 0x0 */ u8 limb; // attached limb
+ /* 0x2 */ Sphere16 modelSphere; // model space sphere
+ /* 0xA */ s16 scale; // world space sphere = model * scale * 0.01
+} ColliderJntSphElementDimInit; // size = 0xC
+
+typedef struct {
+ /* 0x00 */ ColliderElementInit base;
+ /* 0x18 */ ColliderJntSphElementDimInit dim;
+} ColliderJntSphElementInit; // size = 0x24
+
typedef struct {
/* 0x0 */ ColliderInit base;
/* 0x8 */ s32 count;
@@ -492,19 +500,19 @@ void Collider_ResetOCElement(struct PlayState* play, ColliderElement* elem);
s32 Collider_InitJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dim);
s32 Collider_DestroyJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dim);
s32 Collider_SetJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dest, ColliderJntSphElementDimInit* src);
-s32 Collider_InitJntSphElement(struct PlayState* play, ColliderJntSphElement* element);
-s32 Collider_DestroyJntSphElement(struct PlayState* play, ColliderJntSphElement* element);
+s32 Collider_InitJntSphElement(struct PlayState* play, ColliderJntSphElement* jntSphElem);
+s32 Collider_DestroyJntSphElement(struct PlayState* play, ColliderJntSphElement* jntSphElem);
s32 Collider_SetJntSphElement(struct PlayState* play, ColliderJntSphElement* dest, ColliderJntSphElementInit* src);
-s32 Collider_ResetJntSphElementAT(struct PlayState* play, ColliderJntSphElement* collider);
-s32 Collider_ResetJntSphElementAC(struct PlayState* play, ColliderJntSphElement* collider);
-s32 Collider_ResetJntSphElementOC(struct PlayState* play, ColliderJntSphElement* collider);
-s32 Collider_InitJntSph(struct PlayState* play, ColliderJntSph* collider);
-s32 Collider_FreeJntSph(struct PlayState* play, ColliderJntSph* collider);
-s32 Collider_DestroyJntSph(struct PlayState* play, ColliderJntSph* collider);
-s32 Collider_SetJntSphToActor(struct PlayState* play, ColliderJntSph* collider, ColliderJntSphInitToActor* src);
-s32 Collider_SetJntSphAllocType1(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInitType1* src);
-s32 Collider_SetJntSph(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
-s32 Collider_InitAndSetJntSph(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
+s32 Collider_ResetJntSphElementAT(struct PlayState* play, ColliderJntSphElement* jntSphElem);
+s32 Collider_ResetJntSphElementAC(struct PlayState* play, ColliderJntSphElement* jntSphElem);
+s32 Collider_ResetJntSphElementOC(struct PlayState* play, ColliderJntSphElement* jntSphElem);
+s32 Collider_InitJntSph(struct PlayState* play, ColliderJntSph* jntSph);
+s32 Collider_FreeJntSph(struct PlayState* play, ColliderJntSph* jntSph);
+s32 Collider_DestroyJntSph(struct PlayState* play, ColliderJntSph* jntSph);
+s32 Collider_SetJntSphToActor(struct PlayState* play, ColliderJntSph* dest, ColliderJntSphInitToActor* src);
+s32 Collider_SetJntSphAllocType1(struct PlayState* play, ColliderJntSph* dest, struct Actor* actor, ColliderJntSphInitType1* src);
+s32 Collider_SetJntSph(struct PlayState* play, ColliderJntSph* dest, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* jntSphElements);
+s32 Collider_InitAndSetJntSph(struct PlayState* play, ColliderJntSph* dest, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* jntSphElements);
s32 Collider_ResetJntSphAT(struct PlayState* play, Collider* col);
s32 Collider_ResetJntSphAC(struct PlayState* play, Collider* col);
s32 Collider_ResetJntSphOC(struct PlayState* play, Collider* col);
@@ -663,8 +671,8 @@ void Collider_SetCylinderPosition(ColliderCylinder* collider, Vec3s* pos);
void Collider_SetQuadVertices(ColliderQuad* collider, Vec3f* a, Vec3f* b, Vec3f* c, Vec3f* d);
void Collider_SetTrisVertices(ColliderTris* collider, s32 index, Vec3f* a, Vec3f* b, Vec3f* c);
void Collider_SetTrisDim(struct PlayState* play, ColliderTris* collider, s32 index, ColliderTrisElementDimInit* init);
-void Collider_UpdateSpheres(s32 limb, ColliderJntSph* collider);
-void Collider_UpdateSpheresElement(ColliderJntSph* collider, s32 index, struct Actor* actor);
+void Collider_UpdateSpheres(s32 limb, ColliderJntSph* jntSph);
+void Collider_UpdateSpheresElement(ColliderJntSph* jntSph, s32 elemIndex, struct Actor* actor);
void Collider_UpdateSphere(s32 limb, ColliderSphere* collider);
void CollisionCheck_SpawnRedBlood(struct PlayState* play, Vec3f* v);
void CollisionCheck_SpawnWaterDroplets(struct PlayState* play, Vec3f* v);