mm/include/z64eff_blure.h
Anghelo Carvajal 2fdcdd91b3
Split effect headers and a bit of cleanup (#1482)
* split

* bss

* z64eff_ss_dead.h

* clean eff_blure

* eff_shield_particle cleanup

* tire?mark

* and more cleanup

* format

* forgot to remove this

* review

* EffectBlureDrawMode enum

* review

* review

* bss
2023-11-27 12:24:46 -03:00

94 lines
3.4 KiB
C

#ifndef Z64EFF_BLURE_H
#define Z64EFF_BLURE_H
#include "ultra64.h"
#include "color.h"
#include "z64math.h"
struct GraphicsContext;
#define EFFECT_BLURE_COLOR_COUNT 4
#define EFFECT_BLURE_FLAG_2 (1 << 1)
#define EFFECT_BLURE_FLAG_4 (1 << 2)
#define EFFECT_BLURE_FLAG_10 (1 << 4)
#define EFFECT_BLURE_ELEMENT_FLAG_1 (1 << 0)
#define EFFECT_BLURE_ELEMENT_FLAG_2 (1 << 1)
#define EFFECT_BLURE_ELEMENT_FLAG_4 (1 << 2)
#define EFFECT_BLURE_ELEMENT_FLAG_8 (1 << 3)
#define EFFECT_BLURE_ELEMENT_FLAG_10 (1 << 4)
#define EFFECT_BLURE_ELEMENT_FLAG_20 (1 << 5)
typedef struct EffectBlureElement {
/* 0x00 */ s32 state;
/* 0x04 */ s32 timer;
/* 0x08 */ Vec3s p1;
/* 0x0E */ Vec3s p2;
/* 0x14 */ u16 flags;
} EffectBlureElement; // size = 0x18
typedef struct EffectBlureInit1 {
/* 0x000 */ char unk_00[0x184];
/* 0x184 */ u8 p1StartColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x188 */ u8 p2StartColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x18C */ u8 p1EndColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x190 */ u8 p2EndColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x194 */ s32 elemDuration;
/* 0x198 */ s32 unkFlag;
/* 0x19C */ s32 calcMode;
} EffectBlureInit1; // size = 0x1A0
typedef enum EffectBlureDrawMode {
/* 0 */ EFF_BLURE_DRAW_MODE_SIMPLE,
/* 1 */ EFF_BLURE_DRAW_MODE_SIMPLE_ALT_COLORS,
/* 2 */ EFF_BLURE_DRAW_MODE_SMOOTH,
/* 3 */ EFF_BLURE_DRAW_MODE_MAX
} EffectBlureDrawMode;
typedef struct EffectBlureInit2 {
/* 0x00 */ s32 calcMode;
/* 0x04 */ u16 flags;
/* 0x06 */ s16 addAngleChange;
/* 0x08 */ u8 p1StartColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x0C */ u8 p2StartColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x10 */ u8 p1EndColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x14 */ u8 p2EndColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x18 */ u8 elemDuration;
/* 0x19 */ u8 unkFlag;
/* 0x1A */ u8 drawMode; // EffectBlureDrawMode enum
/* 0x1B */ u8 mode4Param;
/* 0x1C */ Color_RGBA8 altPrimColor; // used with EFF_BLURE_DRAW_MODE_SIMPLE_ALT_COLORS
/* 0x20 */ Color_RGBA8 altEnvColor; // used with EFF_BLURE_DRAW_MODE_SIMPLE_ALT_COLORS
} EffectBlureInit2; // size = 0x24
typedef struct EffectBlure {
/* 0x000 */ EffectBlureElement elements[16];
/* 0x180 */ s32 calcMode;
/* 0x184 */ f32 mode4Param;
/* 0x188 */ u16 flags;
/* 0x18A */ s16 addAngleChange;
/* 0x18C */ s16 addAngle;
/* 0x18E */ u8 p1StartColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x192 */ u8 p2StartColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x196 */ u8 p1EndColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x19A */ u8 p2EndColor[EFFECT_BLURE_COLOR_COUNT];
/* 0x19E */ u8 numElements; // "now_edge_num"
/* 0x19F */ u8 elemDuration;
/* 0x1A0 */ u8 unkFlag;
/* 0x1A1 */ u8 drawMode; // EffectBlureDrawMode enum
/* 0x1A2 */ Color_RGBA8 altPrimColor; // used with EFF_BLURE_DRAW_MODE_SIMPLE_ALT_COLORS
/* 0x1A6 */ Color_RGBA8 altEnvColor; // used with EFF_BLURE_DRAW_MODE_SIMPLE_ALT_COLORS
} EffectBlure; // size = 0x1AC
void EffectBlure_AddVertex(EffectBlure* this, Vec3f* p1, Vec3f* p2);
void EffectBlure_AddSpace(EffectBlure* this);
void EffectBlure_Init1(void* thisx, void* initParamsx);
void EffectBlure_Init2(void* thisx, void* initParamsx);
void EffectBlure_Destroy(void* thisx);
s32 EffectBlure_Update(void* thisx);
void EffectBlure_Draw(void* thisx, struct GraphicsContext* gfxCtx);
#endif