1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class LiveActor;
7
8struct FireSurfaceProperties {
9 f32 distance = 0.0f;
10 sead::Vector3f position = {0.0f, 0.0f, 0.0f};
11 sead::Vector3f normal = {0.0f, 0.0f, 0.0f};
12 sead::Vector3f _1c = {0.0f, 0.0f, 0.0f};
13
14 void setDistance(f32 value) { distance = value; }
15
16 void setPosition(const sead::Vector3f& vector) { position.set(vector); }
17
18 void setNormal(const sead::Vector3f& vector) { normal.set(vector); }
19
20 void set1c(const sead::Vector3f& vector) { _1c.set(vector); }
21};
22
23class FireSurfaceFinder {
24public:
25 FireSurfaceFinder(const LiveActor* player);
26
27 void update(const sead::Vector3f& position, const sead::Vector3f& gravity, f32 distance);
28
29private:
30 const LiveActor* mActor;
31 bool mIsFoundSurface = false;
32 FireSurfaceProperties mSurface{};
33};
34
35static_assert(sizeof(FireSurfaceFinder) == 0x38);
36
37} // namespace al
38