mirror of
https://github.com/zeldaret/mm.git
synced 2024-11-27 06:40:36 +00:00
f92a61db27
* begin more cleanup * more enums * typo * == * fix go.h * fix RaceDogInfo struct * PR Review * PR Suggestions * missed one * missed even more * fix params * fix number
78 lines
2.2 KiB
C
78 lines
2.2 KiB
C
#ifndef Z_FIREOBJ_H
|
|
#define Z_FIREOBJ_H
|
|
|
|
#include "ultra64.h"
|
|
#include "color.h"
|
|
#include "z64collision_check.h"
|
|
#include "z64light.h"
|
|
#include "z64math.h"
|
|
|
|
struct PlayState;
|
|
struct Actor;
|
|
|
|
|
|
typedef struct FireObjInitParams {
|
|
/* 0x0 */ f32 size;
|
|
/* 0x4 */ f32 dynamicSizeStep;
|
|
/* 0x8 */ u8 state;
|
|
/* 0x9 */ u8 sizeGrowsCos2;
|
|
/* 0xA */ u8 colorsIndex;
|
|
/* 0xB */ u8 flags;
|
|
/* 0xC */ u8 lightParamsIndex;
|
|
} FireObjInitParams; // size = 0x10
|
|
|
|
typedef struct FireObjColors {
|
|
/* 0x0 */ Color_RGBA8 primColor;
|
|
/* 0x4 */ u8 lod;
|
|
/* 0x5 */ Color_RGB8 envColor;
|
|
} FireObjColors; // size = 0x8
|
|
|
|
typedef struct FireObjLightParams {
|
|
/* 0x0 */ s16 radius;
|
|
/* 0x2 */ Color_RGB8 color;
|
|
/* 0x5 */ Color_RGB8 maxColorAdj;
|
|
} FireObjLightParams; // size = 0x8
|
|
|
|
typedef struct FireObjLight {
|
|
/* 0x00 */ LightNode* light;
|
|
/* 0x04 */ LightInfo lightInfo;
|
|
/* 0x12 */ u8 lightParamsIndex;
|
|
} FireObjLight; // size = 0x14
|
|
|
|
typedef struct FireObj {
|
|
/* 0x00 */ Vec3f position;
|
|
/* 0x0C */ f32 size;
|
|
/* 0x10 */ f32 sizeInv;
|
|
/* 0x14 */ f32 xScale;
|
|
/* 0x18 */ f32 yScale;
|
|
/* 0x1C */ f32 dynamicSize;
|
|
/* 0x20 */ f32 dynamicSizeStep;
|
|
/* 0x24 */ u8 state; // @see FireState enum
|
|
/* 0x25 */ u8 sizeGrowsCos2;
|
|
/* 0x26 */ u8 timer;
|
|
/* 0x27 */ u8 colorsIndex;
|
|
/* 0x28 */ u8 flags; // @see FIRE_FLAG_
|
|
/* 0x2A */ s16 ignitionDelay;
|
|
/* 0x2C */ ColliderCylinder collision;
|
|
/* 0x78 */ FireObjLight light;
|
|
} FireObj; // size = 0x8B
|
|
|
|
typedef enum FireState {
|
|
/* 0 */ FIRE_STATE_GROWING,
|
|
/* 1 */ FIRE_STATE_SHRINKING,
|
|
/* 2 */ FIRE_STATE_FULLY_LIT,
|
|
/* 3 */ FIRE_STATE_NOT_LIT
|
|
} FireState;
|
|
|
|
#define FIRE_FLAG_WATER_EXTINGUISHABLE (1 << 0)
|
|
#define FIRE_FLAG_INTERACT_STICK (1 << 1)
|
|
|
|
void FireObj_SetPosition(FireObj* fire, Vec3f* pos);
|
|
void FireObj_Draw(struct PlayState* play, FireObj* fire);
|
|
void FireObj_Init(struct PlayState* play, FireObj* fire, FireObjInitParams* init, struct Actor* actor);
|
|
void FireObj_Destroy(struct PlayState* play, FireObj* fire);
|
|
void FireObj_SetState2(FireObj* fire, f32 dynamicSizeStep, u8 newState);
|
|
void FireObj_Update(struct PlayState* play, FireObj* fire, struct Actor* actor);
|
|
|
|
#endif
|