Torch
Loading...
Searching...
No Matches
WaterDropletFactory.h
1#pragma once
2
3#include "factories/BaseFactory.h"
4
5#define WATER_DROPLET_FLAG_RAND_ANGLE 0x02
6#define WATER_DROPLET_FLAG_RAND_OFFSET_XZ 0x04 // Unused
7#define WATER_DROPLET_FLAG_RAND_OFFSET_XYZ 0x08 // Unused
8#define WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL 0x20
9#define WATER_DROPLET_FLAG_RAND_ANGLE_INCR_PLUS_8000 0x40
10#define WATER_DROPLET_FLAG_RAND_ANGLE_INCR 0x80 // Unused
11
12#define MODEL_WHITE_PARTICLE_SMALL 0xA4
13#define MODEL_FISH 0xB9
14
15namespace SM64 {
16
17class WaterDropletData : public IParsedData {
18public:
19 int16_t flags;
20 int16_t model;
21 uint32_t behavior;
22 int16_t moveAngleRange;
23 int16_t moveRange;
24 float randForwardVelOffset;
25 float randForwardVelScale;
26 float randYVelOffset;
27 float randYVelScale;
28 float randSizeOffset;
29 float randSizeScale;
30
31 WaterDropletData(
32 int16_t flags, int16_t model, uint32_t behavior, int16_t moveAngleRange, int16_t moveRange, float randForwardVelOffset, float randForwardVelScale, float randYVelOffset, float randYVelScale, float randSizeOffset, float randSizeScale
33 ) : flags(flags), model(model), behavior(behavior), moveAngleRange(moveAngleRange), moveRange(moveRange), randForwardVelOffset(randForwardVelOffset), randForwardVelScale(randForwardVelScale), randYVelOffset(randYVelOffset), randYVelScale(randYVelScale), randSizeOffset(randSizeOffset), randSizeScale(randSizeScale) {}
34};
35
37 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
38};
39
41 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
42};
43
45 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
46};
47
49public:
50 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
51 inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
52 return {
53 REGISTER(Code, WaterDropletCodeExporter)
54 REGISTER(Header, WaterDropletHeaderExporter)
55 REGISTER(Binary, WaterDropletBinaryExporter)
56 };
57 }
58};
59}
Definition BaseFactory.h:88
Definition BaseFactory.h:94
Definition BaseFactory.h:80
Definition WaterDropletFactory.h:40
Definition WaterDropletFactory.h:44
Definition WaterDropletFactory.h:48
Definition WaterDropletFactory.h:36