From 5d01f07abbabb35a3ffa2e69e43e5154cd0e00f3 Mon Sep 17 00:00:00 2001 From: Dragorn421 Date: Thu, 3 Oct 2024 03:45:35 +0200 Subject: [PATCH] [headers] Move z_actor functions to z64actor.h (#1696) * move * fixes * format * fix --- include/functions.h | 211 +------------------------------------- include/z64actor.h | 234 ++++++++++++++++++++++++++++++++++++++++++- include/z64bgcheck.h | 2 +- include/z64scene.h | 2 +- 4 files changed, 237 insertions(+), 212 deletions(-) diff --git a/include/functions.h b/include/functions.h index d5d14b86ae..e379137ae8 100644 --- a/include/functions.h +++ b/include/functions.h @@ -10,214 +10,9 @@ s32 func_800A8150(s32 index); s32 func_800A817C(s32 index); bool Item_CanDropBigFairy(PlayState* play, s32 index, s32 collectibleFlag); -void ActorShape_Init(ActorShape* actorShape, f32 yOffset, ActorShadowFunc shadowDraw, f32 shadowScale); -void ActorShadow_DrawCircle(Actor* actor, Lights* lights, PlayState* play); -void ActorShadow_DrawSquare(Actor* actor, Lights* lights, PlayState* play); -void ActorShadow_DrawWhiteCircle(Actor* actor, Lights* lights, PlayState* play); -void ActorShadow_DrawHorse(Actor* actor, Lights* lights, PlayState* play); - -void ActorShadow_DrawFeet(Actor* actor, Lights* mapper, PlayState* play); -void Actor_SetFeetPos(Actor* actor, s32 limbIndex, s32 leftFootIndex, Vec3f* leftFootPos, s32 rightFootIndex, Vec3f* rightFootPos); -void func_800B4AEC(PlayState* play, Actor* actor, f32 y); -void func_800B4B50(Actor* actor, Lights* mapper, PlayState* play); -void Actor_GetProjectedPos(PlayState* play, Vec3f* worldPos, Vec3f* projectedPos, f32* invW); - -void Target_Draw(TargetContext* targetCtx, PlayState* play); - -s32 Flags_GetSwitch(PlayState* play, s32 flag); -void Flags_SetSwitch(PlayState* play, s32 flag); -void Flags_UnsetSwitch(PlayState* play, s32 flag); -s32 Flags_GetTreasure(PlayState* play, s32 flag); -void Flags_SetTreasure(PlayState* play, s32 flag); -void Flags_SetAllTreasure(PlayState* play, s32 flag); -s32 Flags_GetAllTreasure(PlayState* play); -s32 Flags_GetClear(PlayState* play, s32 roomNumber); -void Flags_SetClear(PlayState* play, s32 roomNumber); -void Flags_UnsetClear(PlayState* play, s32 roomNumber); -s32 Flags_GetClearTemp(PlayState* play, s32 roomNumber); -void Flags_SetClearTemp(PlayState* play, s32 roomNumber); -void Flags_UnsetClearTemp(PlayState* play, s32 roomNumber); -s32 Flags_GetCollectible(PlayState* play, s32 flag); -void Flags_SetCollectible(PlayState* play, s32 flag); - -void TitleCard_InitBossName(GameState* gameState, TitleCardContext* titleCtx, TexturePtr texture, s16 x, s16 y, u8 width, u8 height); - -s32 Actor_SetPlayerImpact(PlayState* play, PlayerImpactType type, s32 timer, f32 dist, Vec3f* pos); -f32 Actor_GetPlayerImpact(PlayState* play, f32 range, Vec3f* pos, PlayerImpactType* type); -void* Actor_AddSharedMemoryEntry(PlayState* play, s16 id, void* ptr, size_t size); -void* Actor_FreeSharedMemoryEntry(PlayState* play, s16 id); -void* Actor_FindSharedMemoryEntry(PlayState* play, s16 id); -void Actor_Kill(Actor* actor); -void Actor_SetWorldToHome(Actor* actor); -void Actor_SetFocus(Actor* actor, f32 height); -void Actor_SetWorldRotToShape(Actor* actor); -void Actor_SetShapeRotToWorld(Actor* actor); -void Actor_SetScale(Actor* actor, f32 scale); -void Actor_SetObjectDependency(PlayState* play, Actor* actor); -void Actor_SetMovementScale(s32 scale); -void Actor_UpdatePos(Actor* actor); -void Actor_UpdateVelocityWithGravity(Actor* actor); -void Actor_MoveWithGravity(Actor* actor); -void Actor_UpdateVelocityWithoutGravity(Actor* actor); -void Actor_MoveWithoutGravity(Actor* actor); -void Actor_UpdateVelocityWithoutGravityReverse(Actor* actor); -void Actor_MoveWithoutGravityReverse(Actor* actor); -void Actor_SetSpeeds(Actor* actor, f32 speed); -s16 Actor_WorldYawTowardActor(Actor* actorA, Actor* actorB); -s16 Actor_FocusYawTowardActor(Actor* actorA, Actor* actorB); -s16 Actor_WorldYawTowardPoint(Actor* actor, Vec3f* refPoint); -s16 Actor_WorldPitchTowardActor(Actor* actorA, Actor* actorB); -s16 Actor_FocusPitchTowardActor(Actor* actorA, Actor* actorB); -s16 Actor_WorldPitchTowardPoint(Actor* actor, Vec3f* refPoint); -f32 Actor_WorldDistXYZToActor(Actor* actorA, Actor* actorB); -f32 Actor_WorldDistXYZToPoint(Actor* actor, Vec3f* refPoint); -f32 Actor_WorldDistXZToActor(Actor* actorA, Actor* actorB); -f32 Actor_WorldDistXZToPoint(Actor* actor, Vec3f* refPoint); -void Actor_WorldToActorCoords(Actor* actor, Vec3f* offset, Vec3f* point); -f32 Actor_HeightDiff(Actor* actor1, Actor* actor2); -void Actor_SetControlStickData(PlayState* play, Input* input, f32 controlStickMagnitude, s16 controlStickAngle); - -void func_800B72F8(DynaPolyActor* dyna, f32 extraPushForce, s16 yRotation); - -s32 Actor_ActorBIsFacingActorA(Actor* actorA, Actor* actorB, s16 maxAngleDiff); -s32 Actor_IsFacingPlayer(Actor* actor, s16 angle); -s32 Actor_ActorAIsFacingActorB(Actor* actorA, Actor* actorB, s16 maxAngleDiff); -s32 Actor_IsFacingAndNearPlayer(Actor* actor, f32 range, s16 maxAngleDiff); -s32 Actor_ActorAIsFacingAndNearActorB(Actor* actorA, Actor* actorB, f32 range, s16 maxAngleDiff); - -void Actor_GetSlopeDirection(CollisionPoly* floorPoly, Vec3f* slopeNormal, s16* downwardSlopeYaw); -void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, f32 wallCheckRadius, f32 ceilingCheckHeight, u32 updBgCheckInfoFlags); -Hilite* Hilite_DrawOpa(Vec3f* object, Vec3f* eye, Vec3f* lightDir, GraphicsContext* gfxCtx); -void func_800B8050(Actor* actor, PlayState* play, s32 flag); -void func_800B8118(Actor* actor, PlayState* play, s32 flag); -PosRot Actor_GetFocus(Actor* actor); -PosRot Actor_GetWorld(Actor* actor); -PosRot Actor_GetWorldPosShapeRot(Actor* actor); - -s32 Target_OutsideLeashRange(Actor* actor, Player* player, s32 ignoreLeash); -s32 Actor_TalkOfferAccepted(Actor* actor, GameState* gameState); -s32 Actor_OfferTalkExchange(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerItemAction exchangeItemAction); -s32 Actor_OfferTalkExchangeEquiCylinder(Actor* actor, PlayState* play, f32 radius, PlayerItemAction exchangeItemAction); -s32 Actor_OfferTalk(Actor* actor, PlayState* play, f32 radius); -s32 Actor_OfferTalkNearColChkInfoCylinder(Actor* actor, PlayState* play); -s32 Actor_TextboxIsClosing(Actor* actor, PlayState* play); -s32 Actor_ChangeFocus(Actor* actor1, PlayState* play, Actor* actor2); - -s32 func_800B8718(Actor* actor, GameState* gameState); -s32 func_800B874C(Actor* actor, PlayState* play, f32 xzRange, f32 yRange); -s32 func_800B8804(Actor* actor, PlayState* play, f32 xzRange); -s32 func_800B886C(Actor* actor, PlayState* play); -void Actor_GetScreenPos(PlayState* play, Actor* actor, s16* posX, s16* posY); -bool Actor_OnScreen(PlayState* play, Actor* actor); -s32 Actor_HasParent(Actor* actor, PlayState* play); -s32 Actor_OfferGetItem(Actor* actor, PlayState* play, GetItemId getItemId, f32 xzRange, f32 yRange); -s32 Actor_OfferGetItemNearby(Actor* actor, PlayState* play, GetItemId getItemId); -s32 Actor_OfferCarry(Actor* actor, PlayState* play); -s32 Actor_OfferGetItemFar(Actor* actor, PlayState* play, GetItemId getItemId); -s32 Actor_HasNoParent(Actor* actor, PlayState* play); -void func_800B8C20(Actor* actorA, Actor* actorB, PlayState* play); -void Actor_SetClosestSecretDistance(Actor* actor, PlayState* play); -s32 Actor_HasRider(PlayState* play, Actor* horse); -s32 Actor_SetRideActor(PlayState* play, Actor* horse, s32 mountSide); -s32 Actor_HasNoRider(PlayState* play, Actor* horse); - -void Actor_PlaySfx(Actor* actor, u16 sfxId); -void Actor_PlaySfx_SurfaceBomb(PlayState* play, Actor* actor); -void Actor_PlaySfx_Flagged2(Actor* actor, u16 sfxId); -void Actor_PlaySfx_FlaggedCentered1(Actor* actor, u16 sfxId); -void Actor_PlaySfx_FlaggedCentered2(Actor* actor, u16 sfxId); -void Actor_PlaySfx_Flagged(Actor* actor, u16 sfxId); -void Actor_PlaySfx_FlaggedTimer(Actor* actor, s32 timer); -void Actor_PlaySeq_FlaggedKamaroDance(Actor* actor); -void Actor_PlaySeq_FlaggedMusicBoxHouse(Actor* actor); -s32 func_800B90AC(PlayState* play, Actor* actor, CollisionPoly* polygon, s32 bgId, Vec3f* arg4); -void Actor_DeactivateLens(PlayState* play); -void Actor_InitHalfDaysBit(ActorContext* actorCtx); -void Actor_InitContext(PlayState* play, ActorContext* actorCtx, ActorEntry* actorEntry); -void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx); -s32 Actor_AddToLensActors(PlayState* play, Actor* actor); -void Actor_DrawAll(PlayState* play, ActorContext* actorCtx); -void Actor_KillAllWithMissingObject(PlayState* play, ActorContext* actorCtx); -void func_800BA798(PlayState* play, ActorContext* actorCtx); -void Actor_CleanupContext(ActorContext* actorCtx, PlayState* play); -Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s32 params); -Actor* Actor_SpawnAsChildAndCutscene(ActorContext* actorCtx, PlayState* play, s16 index, f32 x, f32 y, f32 z, s16 rotX, s16 rotY, s16 rotZ, s32 params, u32 csId, u32 halfDaysBits, Actor* parent); -Actor* Actor_SpawnAsChild(ActorContext* actorCtx, Actor* parent, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s32 params); -void Actor_SpawnTransitionActors(PlayState* play, ActorContext* actorCtx); -void Enemy_StartFinishingBlow(PlayState* play, Actor* actor); -s16 func_800BBAC0(BlinkInfo* info, s16 arg1, s16 arg2, s16 arg3); -s16 func_800BBB74(BlinkInfo* info, s16 arg1, s16 arg2, s16 arg3); -s16 func_800BBC20(BlinkInfo* info, s16 arg1, s16 arg2, s16 arg3); -void Actor_SpawnBodyParts(Actor* actor, PlayState* play, s32 partParams, Gfx** dList); -void Actor_SpawnFloorDustRing(PlayState* play, Actor* actor, Vec3f* posXZ, f32 radius, s32 countMinusOne, f32 randAccelWeight, s16 scale, s16 scaleStep, u8 useLighting); -void func_800BBFB0(PlayState* play, Vec3f* position, f32 arg2, s32 arg3, s16 arg4, s16 scaleStep, u8 arg6); -void Actor_ChangeCategory(PlayState* play, ActorContext* actorCtx, Actor* actor, u8 actorCategory); -u32 Actor_GetArrowDmgFlags(s32 params); -Actor* func_800BC270(PlayState* play, Actor* actor, f32 distance, u32 dmgFlags); -Actor* func_800BC444(PlayState* play, Actor* actor, f32 distance); -s16 Actor_TestFloorInDirection(Actor* actor, PlayState* play, f32 distance, s16 angle); -s32 Actor_IsTargeted(PlayState* play, Actor* actor); -s32 Actor_OtherIsTargeted(PlayState* play, Actor* actor); -void func_800BC620(Vec3f* pos, Vec3f* scale, u8 alpha, PlayState* play); -void Actor_RequestQuake(PlayState* play, s16 y, s16 duration); -void Actor_RequestQuakeWithSpeed(PlayState* play, s16 y, s16 duration, s16 speed); -void Actor_RequestQuakeAndRumble(Actor* actor, PlayState* play, s16 quakeY, s16 quakeDuration); -void Actor_DrawDoorLock(PlayState* play, s32 frame, s32 type); -void Actor_SetColorFilter(Actor* actor, u16 colorFlag, u16 colorIntensityMax, u16 bufFlag, u16 duration); -Hilite* func_800BCBF4(Vec3f* arg0, PlayState* play); -Hilite* func_800BCC68(Vec3f* arg0, PlayState* play); -void Actor_GetClosestPosOnPath(Vec3s* points, s32 numPoints, Vec3f* srcPos, Vec3f* dstPos, s32 isPathLoop); -s32 Npc_UpdateTalking(PlayState* play, Actor* actor, s16* talkState, f32 interactRange, NpcGetTextIdFunc getTextId, NpcUpdateTalkStateFunc updateTalkState); -void Npc_TrackPoint(Actor* actor, NpcInteractInfo* interactInfo, s16 presetIndex, s16 trackingMode); -void func_800BD9E0(PlayState* play, SkelAnime* skelAnime, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s16 alpha); -void func_800BDAA0(PlayState* play, SkelAnime* skelAnime, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s16 alpha); -void Actor_ChangeAnimationByInfo(SkelAnime* skelAnime, AnimationInfo* animInfo, s32 animIndex); -void Actor_Noop(Actor* actor, PlayState* play); - -Actor* Actor_FindNearby(PlayState* play, Actor* inActor, s16 actorId, u8 actorCategory, f32 distance); -s32 func_800BE184(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 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); -s32 Actor_IsSmallChest(struct EnBox* chest); -void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f bodyPartsPos[], s16 bodyPartsCount, f32 effectScale, f32 frozenSteamScale, f32 effectAlpha, u8 type); -void Actor_SpawnIceEffects(PlayState* play, Actor* actor, Vec3f bodyPartsPos[], s32 bodyPartsCount, s32 effectsPerBodyPart, f32 scale, f32 scaleRange); - -void DynaPolyActor_UpdateCarriedActorPos(CollisionContext* colCtx, s32 bgId, Actor* carriedActor); -void DynaPolyActor_UpdateCarriedActorRotY(CollisionContext* colCtx, s32 bgId, Actor* carriedActor); -void DynaPolyActor_AttachCarriedActor(CollisionContext* colCtx, Actor* carriedActor, s32 bgId); -u32 DynaPolyActor_TransformCarriedActor(CollisionContext* colCtx, s32 bgId, Actor* carriedActor); -void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 transformFlags); -void DynaPolyActor_LoadMesh(PlayState* play, DynaPolyActor* dynaActor, CollisionHeader* meshHeader); -void DynaPolyActor_UnsetAllInteractFlags(DynaPolyActor* dynaActor); -void DynaPolyActor_SetActorOnTop(DynaPolyActor* dynaActor); -void DynaPolyActor_SetPlayerOnTop(DynaPolyActor* dynaActor); -void DynaPoly_SetPlayerOnTop(CollisionContext* colCtx, s32 bgId); -void DynaPolyActor_SetPlayerAbove(DynaPolyActor* dynaActor); -void DynaPoly_SetPlayerAbove(CollisionContext* colCtx, s32 bgId); -void DynaPolyActor_SetActorOnSwitch(DynaPolyActor* dynaActor); -void DynaPolyActor_SetActorOnHeavySwitch(DynaPolyActor* dynaActor); -s32 DynaPolyActor_IsActorOnTop(DynaPolyActor* dynaActor); -s32 DynaPolyActor_IsPlayerOnTop(DynaPolyActor* dynaActor); -s32 DynaPolyActor_IsPlayerAbove(DynaPolyActor* dynaActor); -s32 DynaPolyActor_IsSwitchPressed(DynaPolyActor* dynaActor); -s32 DynaPolyActor_IsHeavySwitchPressed(DynaPolyActor* dynaActor); -s32 DynaPolyActor_ValidateMove(PlayState* play, DynaPolyActor* dynaActor, s16 startRadius, s16 endRadius, s16 startHeight); - -void Actor_ContinueText(PlayState* play, Actor* actor, u16 textId); -s32 Flags_GetEventChkInf(s32 flag); -void Flags_SetEventChkInf(s32 flag); -s32 Flags_GetInfTable(s32 flag); -void Flags_SetInfTable(s32 flag); -s32 Actor_TrackNone(Vec3s* headRot, Vec3s* torsoRot); -s32 Actor_TrackPoint(Actor* actor, Vec3f* target, Vec3s* headRot, Vec3s* torsoRot); -s32 Actor_TrackPlayerSetFocusHeight(PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* torsoRot, f32 focusHeight); -s32 Actor_TrackPlayer(PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* torsoRot, Vec3f focusPos); +// Ideally these two prototypes would be in z64actor.h, but they use PlayerItemAction which would require including z64player.h there. +s32 Actor_OfferTalkExchange(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, PlayerItemAction exchangeItemAction); +s32 Actor_OfferTalkExchangeEquiCylinder(Actor* actor, struct PlayState* play, f32 radius, PlayerItemAction exchangeItemAction); void GetItem_Draw(PlayState* play, s16 drawId); diff --git a/include/z64actor.h b/include/z64actor.h index df16224504..dd03d978ab 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -2,21 +2,29 @@ #define Z64ACTOR_H #include "PR/ultratypes.h" +#include "stdbool.h" #include "color.h" #include "padutils.h" #include "z64actor_dlftbls.h" #include "z64math.h" #include "z64animation.h" #include "z64collision_check.h" +#include "z64item.h" #include "unk.h" #define MASS_IMMOVABLE 0xFF // Cannot be pushed by OC collisions #define MASS_HEAVY 0xFE // Can only be pushed by OC collisions with IMMOVABLE and HEAVY objects. struct Actor; -struct PlayState; -struct Lights; +struct ActorEntry; +struct CollisionContext; +struct CollisionHeader; struct CollisionPoly; +struct GameState; +struct GraphicsContext; +struct Lights; +struct Player; +struct PlayState; struct EnBox; struct EnTorch2; @@ -667,4 +675,226 @@ extern Gfx D_801AEFA0[]; extern Actor* D_801ED920; +void ActorShape_Init(ActorShape* actorShape, f32 yOffset, ActorShadowFunc shadowDraw, f32 shadowScale); +void ActorShadow_DrawCircle(Actor* actor, struct Lights* lights, struct PlayState* play); +void ActorShadow_DrawSquare(Actor* actor, struct Lights* lights, struct PlayState* play); +void ActorShadow_DrawWhiteCircle(Actor* actor, struct Lights* lights, struct PlayState* play); +void ActorShadow_DrawHorse(Actor* actor, struct Lights* lights, struct PlayState* play); + +void ActorShadow_DrawFeet(Actor* actor, struct Lights* mapper, struct PlayState* play); +void Actor_SetFeetPos(Actor* actor, s32 limbIndex, s32 leftFootIndex, Vec3f* leftFootPos, s32 rightFootIndex, + Vec3f* rightFootPos); +void func_800B4AEC(struct PlayState* play, Actor* actor, f32 y); +void func_800B4B50(Actor* actor, struct Lights* mapper, struct PlayState* play); +void Actor_GetProjectedPos(struct PlayState* play, Vec3f* worldPos, Vec3f* projectedPos, f32* invW); + +void Target_Draw(TargetContext* targetCtx, struct PlayState* play); + +s32 Flags_GetSwitch(struct PlayState* play, s32 flag); +void Flags_SetSwitch(struct PlayState* play, s32 flag); +void Flags_UnsetSwitch(struct PlayState* play, s32 flag); +s32 Flags_GetTreasure(struct PlayState* play, s32 flag); +void Flags_SetTreasure(struct PlayState* play, s32 flag); +void Flags_SetAllTreasure(struct PlayState* play, s32 flag); +s32 Flags_GetAllTreasure(struct PlayState* play); +s32 Flags_GetClear(struct PlayState* play, s32 roomNumber); +void Flags_SetClear(struct PlayState* play, s32 roomNumber); +void Flags_UnsetClear(struct PlayState* play, s32 roomNumber); +s32 Flags_GetClearTemp(struct PlayState* play, s32 roomNumber); +void Flags_SetClearTemp(struct PlayState* play, s32 roomNumber); +void Flags_UnsetClearTemp(struct PlayState* play, s32 roomNumber); +s32 Flags_GetCollectible(struct PlayState* play, s32 flag); +void Flags_SetCollectible(struct PlayState* play, s32 flag); + +void TitleCard_InitBossName(struct GameState* gameState, TitleCardContext* titleCtx, TexturePtr texture, s16 x, s16 y, + u8 width, u8 height); + +s32 Actor_SetPlayerImpact(struct PlayState* play, PlayerImpactType type, s32 timer, f32 dist, Vec3f* pos); +f32 Actor_GetPlayerImpact(struct PlayState* play, f32 range, Vec3f* pos, PlayerImpactType* type); +void* Actor_AddSharedMemoryEntry(struct PlayState* play, s16 id, void* ptr, size_t size); +void* Actor_FreeSharedMemoryEntry(struct PlayState* play, s16 id); +void* Actor_FindSharedMemoryEntry(struct PlayState* play, s16 id); +void Actor_Kill(Actor* actor); +void Actor_SetWorldToHome(Actor* actor); +void Actor_SetFocus(Actor* actor, f32 height); +void Actor_SetWorldRotToShape(Actor* actor); +void Actor_SetShapeRotToWorld(Actor* actor); +void Actor_SetScale(Actor* actor, f32 scale); +void Actor_SetObjectDependency(struct PlayState* play, Actor* actor); +void Actor_SetMovementScale(s32 scale); +void Actor_UpdatePos(Actor* actor); +void Actor_UpdateVelocityWithGravity(Actor* actor); +void Actor_MoveWithGravity(Actor* actor); +void Actor_UpdateVelocityWithoutGravity(Actor* actor); +void Actor_MoveWithoutGravity(Actor* actor); +void Actor_UpdateVelocityWithoutGravityReverse(Actor* actor); +void Actor_MoveWithoutGravityReverse(Actor* actor); +void Actor_SetSpeeds(Actor* actor, f32 speed); +s16 Actor_WorldYawTowardActor(Actor* actorA, Actor* actorB); +s16 Actor_FocusYawTowardActor(Actor* actorA, Actor* actorB); +s16 Actor_WorldYawTowardPoint(Actor* actor, Vec3f* refPoint); +s16 Actor_WorldPitchTowardActor(Actor* actorA, Actor* actorB); +s16 Actor_FocusPitchTowardActor(Actor* actorA, Actor* actorB); +s16 Actor_WorldPitchTowardPoint(Actor* actor, Vec3f* refPoint); +f32 Actor_WorldDistXYZToActor(Actor* actorA, Actor* actorB); +f32 Actor_WorldDistXYZToPoint(Actor* actor, Vec3f* refPoint); +f32 Actor_WorldDistXZToActor(Actor* actorA, Actor* actorB); +f32 Actor_WorldDistXZToPoint(Actor* actor, Vec3f* refPoint); +void Actor_WorldToActorCoords(Actor* actor, Vec3f* offset, Vec3f* point); +f32 Actor_HeightDiff(Actor* actor1, Actor* actor2); +void Actor_SetControlStickData(struct PlayState* play, Input* input, f32 controlStickMagnitude, s16 controlStickAngle); + +void func_800B72F8(DynaPolyActor* dyna, f32 extraPushForce, s16 yRotation); + +s32 Actor_ActorBIsFacingActorA(Actor* actorA, Actor* actorB, s16 maxAngleDiff); +s32 Actor_IsFacingPlayer(Actor* actor, s16 angle); +s32 Actor_ActorAIsFacingActorB(Actor* actorA, Actor* actorB, s16 maxAngleDiff); +s32 Actor_IsFacingAndNearPlayer(Actor* actor, f32 range, s16 maxAngleDiff); +s32 Actor_ActorAIsFacingAndNearActorB(Actor* actorA, Actor* actorB, f32 range, s16 maxAngleDiff); + +void Actor_GetSlopeDirection(struct CollisionPoly* floorPoly, Vec3f* slopeNormal, s16* downwardSlopeYaw); +void Actor_UpdateBgCheckInfo(struct PlayState* play, Actor* actor, f32 wallCheckHeight, f32 wallCheckRadius, + f32 ceilingCheckHeight, u32 updBgCheckInfoFlags); +Hilite* Hilite_DrawOpa(Vec3f* object, Vec3f* eye, Vec3f* lightDir, struct GraphicsContext* gfxCtx); +void func_800B8050(Actor* actor, struct PlayState* play, s32 flag); +void func_800B8118(Actor* actor, struct PlayState* play, s32 flag); +PosRot Actor_GetFocus(Actor* actor); +PosRot Actor_GetWorld(Actor* actor); +PosRot Actor_GetWorldPosShapeRot(Actor* actor); + +s32 Target_OutsideLeashRange(Actor* actor, struct Player* player, s32 ignoreLeash); +s32 Actor_TalkOfferAccepted(Actor* actor, struct GameState* gameState); +s32 Actor_OfferTalk(Actor* actor, struct PlayState* play, f32 radius); +s32 Actor_OfferTalkNearColChkInfoCylinder(Actor* actor, struct PlayState* play); +s32 Actor_TextboxIsClosing(Actor* actor, struct PlayState* play); +s32 Actor_ChangeFocus(Actor* actor1, struct PlayState* play, Actor* actor2); + +s32 func_800B8718(Actor* actor, struct GameState* gameState); +s32 func_800B874C(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange); +s32 func_800B8804(Actor* actor, struct PlayState* play, f32 xzRange); +s32 func_800B886C(Actor* actor, struct PlayState* play); +void Actor_GetScreenPos(struct PlayState* play, Actor* actor, s16* posX, s16* posY); +bool Actor_OnScreen(struct PlayState* play, Actor* actor); +s32 Actor_HasParent(Actor* actor, struct PlayState* play); +s32 Actor_OfferGetItem(Actor* actor, struct PlayState* play, GetItemId getItemId, f32 xzRange, f32 yRange); +s32 Actor_OfferGetItemNearby(Actor* actor, struct PlayState* play, GetItemId getItemId); +s32 Actor_OfferCarry(Actor* actor, struct PlayState* play); +s32 Actor_OfferGetItemFar(Actor* actor, struct PlayState* play, GetItemId getItemId); +s32 Actor_HasNoParent(Actor* actor, struct PlayState* play); +void func_800B8C20(Actor* actorA, Actor* actorB, struct PlayState* play); +void Actor_SetClosestSecretDistance(Actor* actor, struct PlayState* play); +s32 Actor_HasRider(struct PlayState* play, Actor* horse); +s32 Actor_SetRideActor(struct PlayState* play, Actor* horse, s32 mountSide); +s32 Actor_HasNoRider(struct PlayState* play, Actor* horse); + +void Actor_PlaySfx(Actor* actor, u16 sfxId); +void Actor_PlaySfx_SurfaceBomb(struct PlayState* play, Actor* actor); +void Actor_PlaySfx_Flagged2(Actor* actor, u16 sfxId); +void Actor_PlaySfx_FlaggedCentered1(Actor* actor, u16 sfxId); +void Actor_PlaySfx_FlaggedCentered2(Actor* actor, u16 sfxId); +void Actor_PlaySfx_Flagged(Actor* actor, u16 sfxId); +void Actor_PlaySfx_FlaggedTimer(Actor* actor, s32 timer); +void Actor_PlaySeq_FlaggedKamaroDance(Actor* actor); +void Actor_PlaySeq_FlaggedMusicBoxHouse(Actor* actor); +s32 func_800B90AC(struct PlayState* play, Actor* actor, struct CollisionPoly* polygon, s32 bgId, Vec3f* arg4); +void Actor_DeactivateLens(struct PlayState* play); +void Actor_InitHalfDaysBit(ActorContext* actorCtx); +void Actor_InitContext(struct PlayState* play, ActorContext* actorCtx, struct ActorEntry* actorEntry); +void Actor_UpdateAll(struct PlayState* play, ActorContext* actorCtx); +s32 Actor_AddToLensActors(struct PlayState* play, Actor* actor); +void Actor_DrawAll(struct PlayState* play, ActorContext* actorCtx); +void Actor_KillAllWithMissingObject(struct PlayState* play, ActorContext* actorCtx); +void func_800BA798(struct PlayState* play, ActorContext* actorCtx); +void Actor_CleanupContext(ActorContext* actorCtx, struct PlayState* play); +Actor* Actor_Spawn(ActorContext* actorCtx, struct PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX, + s16 rotY, s16 rotZ, s32 params); +Actor* Actor_SpawnAsChildAndCutscene(ActorContext* actorCtx, struct PlayState* play, s16 index, f32 x, f32 y, f32 z, + s16 rotX, s16 rotY, s16 rotZ, s32 params, u32 csId, u32 halfDaysBits, + Actor* parent); +Actor* Actor_SpawnAsChild(ActorContext* actorCtx, Actor* parent, struct PlayState* play, s16 actorId, f32 posX, + f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s32 params); +void Actor_SpawnTransitionActors(struct PlayState* play, ActorContext* actorCtx); +void Enemy_StartFinishingBlow(struct PlayState* play, Actor* actor); +s16 func_800BBAC0(BlinkInfo* info, s16 arg1, s16 arg2, s16 arg3); +s16 func_800BBB74(BlinkInfo* info, s16 arg1, s16 arg2, s16 arg3); +s16 func_800BBC20(BlinkInfo* info, s16 arg1, s16 arg2, s16 arg3); +void Actor_SpawnBodyParts(Actor* actor, struct PlayState* play, s32 partParams, Gfx** dList); +void Actor_SpawnFloorDustRing(struct PlayState* play, Actor* actor, Vec3f* posXZ, f32 radius, s32 countMinusOne, + f32 randAccelWeight, s16 scale, s16 scaleStep, u8 useLighting); +void func_800BBFB0(struct PlayState* play, Vec3f* position, f32 arg2, s32 arg3, s16 arg4, s16 scaleStep, u8 arg6); +void Actor_ChangeCategory(struct PlayState* play, ActorContext* actorCtx, Actor* actor, u8 actorCategory); +u32 Actor_GetArrowDmgFlags(s32 params); +Actor* func_800BC270(struct PlayState* play, Actor* actor, f32 distance, u32 dmgFlags); +Actor* func_800BC444(struct PlayState* play, Actor* actor, f32 distance); +s16 Actor_TestFloorInDirection(Actor* actor, struct PlayState* play, f32 distance, s16 angle); +s32 Actor_IsTargeted(struct PlayState* play, Actor* actor); +s32 Actor_OtherIsTargeted(struct PlayState* play, Actor* actor); +void func_800BC620(Vec3f* pos, Vec3f* scale, u8 alpha, struct PlayState* play); +void Actor_RequestQuake(struct PlayState* play, s16 y, s16 duration); +void Actor_RequestQuakeWithSpeed(struct PlayState* play, s16 y, s16 duration, s16 speed); +void Actor_RequestQuakeAndRumble(Actor* actor, struct PlayState* play, s16 quakeY, s16 quakeDuration); +void Actor_DrawDoorLock(struct PlayState* play, s32 frame, s32 type); +void Actor_SetColorFilter(Actor* actor, u16 colorFlag, u16 colorIntensityMax, u16 bufFlag, u16 duration); +Hilite* func_800BCBF4(Vec3f* arg0, struct PlayState* play); +Hilite* func_800BCC68(Vec3f* arg0, struct PlayState* play); +void Actor_GetClosestPosOnPath(Vec3s* points, s32 numPoints, Vec3f* srcPos, Vec3f* dstPos, s32 isPathLoop); +s32 Npc_UpdateTalking(struct PlayState* play, Actor* actor, s16* talkState, f32 interactRange, + NpcGetTextIdFunc getTextId, NpcUpdateTalkStateFunc updateTalkState); +void Npc_TrackPoint(Actor* actor, NpcInteractInfo* interactInfo, s16 presetIndex, s16 trackingMode); +void func_800BD9E0(struct PlayState* play, SkelAnime* skelAnime, OverrideLimbDraw overrideLimbDraw, + PostLimbDraw postLimbDraw, Actor* actor, s16 alpha); +void func_800BDAA0(struct PlayState* play, SkelAnime* skelAnime, OverrideLimbDraw overrideLimbDraw, + PostLimbDraw postLimbDraw, Actor* actor, s16 alpha); +void Actor_ChangeAnimationByInfo(SkelAnime* skelAnime, AnimationInfo* animInfo, s32 animIndex); +void Actor_Noop(Actor* actor, struct PlayState* play); + +Actor* Actor_FindNearby(struct PlayState* play, Actor* inActor, s16 actorId, u8 actorCategory, f32 distance); +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 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); +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); +void Actor_SpawnIceEffects(struct PlayState* play, Actor* actor, Vec3f bodyPartsPos[], s32 bodyPartsCount, + s32 effectsPerBodyPart, f32 scale, f32 scaleRange); + +void DynaPolyActor_UpdateCarriedActorPos(struct CollisionContext* colCtx, s32 bgId, Actor* carriedActor); +void DynaPolyActor_UpdateCarriedActorRotY(struct CollisionContext* colCtx, s32 bgId, Actor* carriedActor); +void DynaPolyActor_AttachCarriedActor(struct CollisionContext* colCtx, Actor* carriedActor, s32 bgId); +u32 DynaPolyActor_TransformCarriedActor(struct CollisionContext* colCtx, s32 bgId, Actor* carriedActor); +void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 transformFlags); +void DynaPolyActor_LoadMesh(struct PlayState* play, DynaPolyActor* dynaActor, struct CollisionHeader* meshHeader); +void DynaPolyActor_UnsetAllInteractFlags(DynaPolyActor* dynaActor); +void DynaPolyActor_SetActorOnTop(DynaPolyActor* dynaActor); +void DynaPolyActor_SetPlayerOnTop(DynaPolyActor* dynaActor); +void DynaPoly_SetPlayerOnTop(struct CollisionContext* colCtx, s32 bgId); +void DynaPolyActor_SetPlayerAbove(DynaPolyActor* dynaActor); +void DynaPoly_SetPlayerAbove(struct CollisionContext* colCtx, s32 bgId); +void DynaPolyActor_SetActorOnSwitch(DynaPolyActor* dynaActor); +void DynaPolyActor_SetActorOnHeavySwitch(DynaPolyActor* dynaActor); +s32 DynaPolyActor_IsActorOnTop(DynaPolyActor* dynaActor); +s32 DynaPolyActor_IsPlayerOnTop(DynaPolyActor* dynaActor); +s32 DynaPolyActor_IsPlayerAbove(DynaPolyActor* dynaActor); +s32 DynaPolyActor_IsSwitchPressed(DynaPolyActor* dynaActor); +s32 DynaPolyActor_IsHeavySwitchPressed(DynaPolyActor* dynaActor); +s32 DynaPolyActor_ValidateMove(struct PlayState* play, DynaPolyActor* dynaActor, s16 startRadius, s16 endRadius, + s16 startHeight); + +void Actor_ContinueText(struct PlayState* play, Actor* actor, u16 textId); +s32 Flags_GetEventChkInf(s32 flag); +void Flags_SetEventChkInf(s32 flag); +s32 Flags_GetInfTable(s32 flag); +void Flags_SetInfTable(s32 flag); +s32 Actor_TrackNone(Vec3s* headRot, Vec3s* torsoRot); +s32 Actor_TrackPoint(Actor* actor, Vec3f* target, Vec3s* headRot, Vec3s* torsoRot); +s32 Actor_TrackPlayerSetFocusHeight(struct PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* torsoRot, + f32 focusHeight); +s32 Actor_TrackPlayer(struct PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* torsoRot, Vec3f focusPos); + #endif diff --git a/include/z64bgcheck.h b/include/z64bgcheck.h index 9aa61a055b..37a9486718 100644 --- a/include/z64bgcheck.h +++ b/include/z64bgcheck.h @@ -250,7 +250,7 @@ typedef struct { } SurfaceType; // size = 0x8 -typedef struct { +typedef struct CollisionHeader { /* 0x00 */ Vec3s minBounds; // minimum coordinates of poly bounding box /* 0x06 */ Vec3s maxBounds; // maximum coordinates of poly bounding box /* 0x0C */ u16 numVertices; diff --git a/include/z64scene.h b/include/z64scene.h index 674c4d9129..d756467d77 100644 --- a/include/z64scene.h +++ b/include/z64scene.h @@ -383,7 +383,7 @@ typedef struct { /* 0x4 */ TransitionActorEntry* list; } TransitionActorList; // size = 0x8 -typedef struct { +typedef struct ActorEntry { /* 0x0 */ s16 id; /* 0x2 */ Vec3s pos; /* 0x8 */ Vec3s rot;