Mario Kart 64
Loading...
Searching...
No Matches
StaticMeshActor.h
Go to the documentation of this file.
1#pragma once
2
3#include <libultraship.h>
4#include <libultra/gbi.h>
5#include "CoreMath.h"
6#include <nlohmann/json.hpp>
7
8// todo: Make this class AStaticMeshActor : public AActor
10public:
11 std::string Name;
12 std::string ResourceName;
16 std::string Model;
17 int32_t* CollisionMesh;
18 bool bPendingDestroy = false;
19 StaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, int32_t* collision);
20
21 nlohmann::json to_json() const {
22 nlohmann::json j;
23
24 // Serialize each field of the class
25 j["Name"] = Name;
26 j["Position"] = {Pos.x, Pos.y, Pos.z}; // Assuming FVector has x, y, z fields
27 j["Rotation"] = {Rot.pitch, Rot.yaw, Rot.roll}; // Assuming IRotator has pitch, yaw, roll fields
28 j["Scale"] = {Scale.x, Scale.y, Scale.z}; // Assuming FVector has x, y, z fields
29 j["Model"] = Model;
30
31 // If Collision is not null, serialize it
32 if (CollisionMesh != nullptr) {
33 j["Collision"] = *CollisionMesh; // Serialize the value that Collision points to
34 } else {
35 j["Collision"] = nullptr; // Handle the case where Collision is nullptr
36 }
37
38 return j;
39 }
40
41 void from_json(const nlohmann::json& j) {
42 Name = j.at("Name").get<std::string>();
43 Pos = FVector(j.at("Position")[0].get<float>(), j.at("Position")[1].get<float>(), j.at("Position")[2].get<float>());
44 Rot.Set(j.at("Rotation")[0].get<uint16_t>(), j.at("Rotation")[1].get<uint16_t>(), j.at("Rotation")[2].get<uint16_t>());
45 Scale = FVector(j.at("Scale")[0].get<float>(), j.at("Scale")[1].get<float>(), j.at("Scale")[2].get<float>());
46
47 // Deserialize the Model string
48 Model = j.at("Model").get<std::string>();
49
50 // Check if Collision is present in the JSON and deserialize it
51 //if (j.contains("Collision") && !j["Collision"].is_null()) {
52 // If Collision is a valid value, allocate memory for it and assign the value
53 // Collision = new int32_t(j.at("Collision").get<int32_t>());
54 //} else {
55 // If Collision is not present or is null, set it to nullptr
56 CollisionMesh = nullptr;
57 //}
58 }
59
60 virtual void Draw();
61 virtual void Destroy();
62};
FVector Pos
Definition StaticMeshActor.h:13
virtual void Draw()
Definition StaticMeshActor.cpp:17
bool bPendingDestroy
Definition StaticMeshActor.h:18
std::string ResourceName
Definition StaticMeshActor.h:12
std::string Model
Definition StaticMeshActor.h:16
int32_t * CollisionMesh
Definition StaticMeshActor.h:17
nlohmann::json to_json() const
Definition StaticMeshActor.h:21
IRotator Rot
Definition StaticMeshActor.h:14
FVector Scale
Definition StaticMeshActor.h:15
StaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, int32_t *collision)
Definition StaticMeshActor.cpp:11
std::string Name
Definition StaticMeshActor.h:11
virtual void Destroy()
Definition StaticMeshActor.cpp:29
void from_json(const nlohmann::json &j)
Definition StaticMeshActor.h:41
#define j
Definition CoreMath.h:30
Definition CoreMath.h:137