diff options
| author | Derek Hensley <hensley.derek58@gmail.com> | 2024-10-12 17:31:16 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-12 17:31:16 -0700 |
| commit | 3472e79caa697ba2b915850171f97f9515aec6b2 (patch) | |
| tree | e187f6b6a3b64508057c4a1945086b5ceb1728b1 /include | |
| parent | 0514d963d9fcf16cc77f39880445db5271766b3d (diff) | |
Colliders Sync JntSphere (#1700)
* JntSphere
* Format
* PR review
Diffstat (limited to 'include')
| -rw-r--r-- | include/z64actor.h | 4 | ||||
| -rw-r--r-- | include/z64collision_check.h | 60 |
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); |
