mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-21 06:21:16 +00:00
Defines for Actor#bgCheckFlags
(#1126)
* First pass, tool assisted bgCheckFlags * Few manual bgCheckFlags * Run formatter * Remove fake bgCheckFlags 10-15 * Move existing documentation to the defines * Comment on `bgCheckFlags` and rephrase some doc * Name obvious flags, and some cleanup * Comment on flag 9 being wall-interaction-related (thanks engineer and fig) * Run formatter * `BGCHECKFLAG_7` -> `BGCHECKFLAG_GROUND_STRICT` * Touch up water-related bgcheckflags doc * `BGCHECKFLAG_9` -> `BGCHECKFLAG_PLAYER_WALL_INTERACT`
This commit is contained in:
parent
251d90301c
commit
67f294774b
121 changed files with 711 additions and 652 deletions
|
@ -129,6 +129,17 @@ typedef struct {
|
|||
#define ACTOR_FLAG_27 (1 << 27)
|
||||
#define ACTOR_FLAG_28 (1 << 28)
|
||||
|
||||
#define BGCHECKFLAG_GROUND (1 << 0) // Standing on the ground
|
||||
#define BGCHECKFLAG_GROUND_TOUCH (1 << 1) // Has touched the ground (only active for 1 frame)
|
||||
#define BGCHECKFLAG_GROUND_LEAVE (1 << 2) // Has left the ground (only active for 1 frame)
|
||||
#define BGCHECKFLAG_WALL (1 << 3) // Touching a wall
|
||||
#define BGCHECKFLAG_CEILING (1 << 4) // Touching a ceiling
|
||||
#define BGCHECKFLAG_WATER (1 << 5) // In water
|
||||
#define BGCHECKFLAG_WATER_TOUCH (1 << 6) // Has touched water (reset when leaving water)
|
||||
#define BGCHECKFLAG_GROUND_STRICT (1 << 7) // Strictly on ground (BGCHECKFLAG_GROUND has some leeway)
|
||||
#define BGCHECKFLAG_CRUSHED (1 << 8) // Crushed between a floor and ceiling (triggers a void for player)
|
||||
#define BGCHECKFLAG_PLAYER_WALL_INTERACT (1 << 9) // Only set/used by player, related to interacting with walls
|
||||
|
||||
typedef struct Actor {
|
||||
/* 0x000 */ s16 id; // Actor ID
|
||||
/* 0x002 */ u8 category; // Actor category. Refer to the corresponding enum for values
|
||||
|
@ -154,7 +165,7 @@ typedef struct Actor {
|
|||
/* 0x07E */ s16 wallYaw; // Y rotation of the wall polygon the actor is touching
|
||||
/* 0x080 */ f32 floorHeight; // Y position of the floor polygon directly below the actor
|
||||
/* 0x084 */ f32 yDistToWater; // Distance to the surface of active waterbox. Negative value means above water
|
||||
/* 0x088 */ u16 bgCheckFlags; // See comments below actor struct for wip docs. TODO: macros for these flags
|
||||
/* 0x088 */ u16 bgCheckFlags; // Flags indicating how the actor is interacting with collision
|
||||
/* 0x08A */ s16 yawTowardsPlayer; // Y rotation difference between the actor and the player
|
||||
/* 0x08C */ f32 xyzDistToPlayerSq; // Squared distance between the actor and the player in the x,y,z axis
|
||||
/* 0x090 */ f32 xzDistToPlayer; // Distance between the actor and the player in the XZ plane
|
||||
|
@ -193,20 +204,6 @@ typedef enum {
|
|||
/* 1 */ FOOT_RIGHT
|
||||
} ActorFootIndex;
|
||||
|
||||
/*
|
||||
BgCheckFlags WIP documentation:
|
||||
& 0x001 : Standing on the ground
|
||||
& 0x002 : Has touched the ground (only active for 1 frame)
|
||||
& 0x004 : Has left the ground (only active for 1 frame)
|
||||
& 0x008 : Touching a wall
|
||||
& 0x010 : Touching a ceiling
|
||||
& 0x020 : On or below water surface
|
||||
& 0x040 : Has touched water (actor is responsible for unsetting this the frame it touches the water)
|
||||
& 0x080 : Similar to & 0x1 but with no velocity check and is cleared every frame
|
||||
& 0x100 : Crushed between a floor and ceiling (triggers a void for player)
|
||||
& 0x200 : Unknown (only set/used by player so far)
|
||||
*/
|
||||
|
||||
/*
|
||||
colorFilterParams WIP documentation
|
||||
& 0x8000 : white
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue