Mario Kart 64
Loading...
Searching...
No Matches
SceneManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <libultraship/libultraship.h>
4#include "CoreMath.h"
6#include <optional>
7#include <nlohmann/json.hpp>
8
9namespace Editor {
10 void SaveLevel(Track* track);
11 void LoadTrackDataFromJson(Track* track, const std::string& trackPath);
12 void LoadTrackInfo(TrackInfo& info, std::shared_ptr<Ship::Archive> archive, std::string sceneFile);
13 void Load_AddStaticMeshActor(const nlohmann::json& actorJson);
14 void LoadMinimap(Track* track, std::string filePath);
15 void SetDefaultMinimap(Track* track);
16
17 void SaveActors(nlohmann::json& actorList);
18 void SaveStaticMeshActors(nlohmann::json& actorList);
19 void SaveTour(Track* track, nlohmann::json& tour);
20
21 void LoadProps(Track* track, nlohmann::json& data);
22 void LoadPaths(Track* track, const std::string& trackPath);
23 void LoadTrackInfoData(TrackInfo& info, nlohmann::json& data);
24 void LoadActors(Track* track, nlohmann::json& data);
25 void LoadStaticMeshActors(Track* track, nlohmann::json& data);
26 void LoadTour(Track* track, nlohmann::json& data);
27
28 void SpawnActors(std::vector<std::pair<std::string, SpawnParams>> spawnList);
29
30 inline nlohmann::json ToJson(const FVector& v) {
31 return {
32 {"x", v.x},
33 {"y", v.y},
34 {"z", v.z}
35 };
36 }
37
38 inline nlohmann::json ToJson(const TourCamera::KeyFrame& kf) {
39 return {
40 {"Pos", ToJson(kf.Pos)},
41 {"LookAt", ToJson(kf.LookAt)},
42 {"Duration", kf.Duration}
43 };
44 }
45
46 inline nlohmann::json ToJson(const TourCamera::CameraShot& shot) {
47 nlohmann::json j;
48 j["StartPos"] = ToJson(shot.Pos);
49 j["StartLookAt"] = ToJson(shot.LookAt);
50
51 // KeyFrames
52 nlohmann::json keyframes = nlohmann::json::array();
53 for (const auto& kf : shot.Frames) {
54 keyframes.push_back(ToJson(kf));
55 }
56 j["KeyFrames"] = keyframes;
57
58 return j;
59 }
60
61 inline FVector FromJsonVec(const nlohmann::json& j) {
62 FVector v{};
63 if (j.contains("x")) v.x = j["x"].get<float>();
64 if (j.contains("y")) v.y = j["y"].get<float>();
65 if (j.contains("z")) v.z = j["z"].get<float>();
66 return v;
67 }
68
69 inline TourCamera::KeyFrame FromJsonKeyFrame(const nlohmann::json& j) {
71 if (j.contains("Pos")) kf.Pos = FromJsonVec(j["Pos"]);
72 if (j.contains("LookAt")) kf.LookAt = FromJsonVec(j["LookAt"]);
73 if (j.contains("Duration")) kf.Duration = j["Duration"].get<float>();
74 return kf;
75 }
76
77 inline TourCamera::CameraShot FromJsonCameraShot(const nlohmann::json& j) {
79 if (j.contains("StartPos")) shot.Pos = FromJsonVec(j["StartPos"]);
80 if (j.contains("StartLookAt")) shot.LookAt = FromJsonVec(j["StartLookAt"]);
81
82 if (j.contains("KeyFrames") && j["KeyFrames"].is_array()) {
83 for (const auto& kfJson : j["KeyFrames"]) {
84 shot.Frames.push_back(FromJsonKeyFrame(kfJson));
85 }
86 }
87
88 return shot;
89 }
90}
#define j
Definition Collision.cpp:17
void LoadActors(Track *track, nlohmann::json &data)
Definition SceneManager.cpp:364
void LoadStaticMeshActors(Track *track, nlohmann::json &data)
Definition SceneManager.cpp:381
void SaveTour(Track *track, nlohmann::json &tour)
Definition SceneManager.cpp:290
void LoadProps(Track *track, nlohmann::json &data)
Definition SceneManager.cpp:300
void Load_AddStaticMeshActor(const nlohmann::json &actorJson)
Definition SceneManager.cpp:171
FVector FromJsonVec(const nlohmann::json &j)
Definition SceneManager.h:61
void SaveStaticMeshActors(nlohmann::json &actorList)
Definition SceneManager.cpp:284
void LoadPaths(Track *track, const std::string &trackPath)
Definition SceneManager.cpp:314
void SaveActors(nlohmann::json &actorList)
Definition SceneManager.cpp:217
void LoadTrackInfo(TrackInfo &info, std::shared_ptr< Ship::Archive > archive, std::string sceneFile)
Definition SceneManager.cpp:139
void SaveLevel(Track *track)
Definition SceneManager.cpp:35
nlohmann::json ToJson(const FVector &v)
Definition SceneManager.h:30
TourCamera::CameraShot FromJsonCameraShot(const nlohmann::json &j)
Definition SceneManager.h:77
void LoadTrackDataFromJson(Track *track, const std::string &trackPath)
Definition SceneManager.cpp:92
TourCamera::KeyFrame FromJsonKeyFrame(const nlohmann::json &j)
Definition SceneManager.h:69
void SetDefaultMinimap(Track *track)
Definition SceneManager.cpp:210
void LoadTour(Track *track, nlohmann::json &data)
Definition SceneManager.cpp:394
void LoadMinimap(Track *track, std::string filePath)
Definition SceneManager.cpp:180
void LoadTrackInfoData(TrackInfo &info, nlohmann::json &data)
Definition SceneManager.cpp:338
void SpawnActors(std::vector< std::pair< std::string, SpawnParams > > spawnList)
Definition CoreMath.h:30
float x
Definition CoreMath.h:31
float z
Definition CoreMath.h:31
float y
Definition CoreMath.h:31
Definition TourCamera.h:48
FVector LookAt
Definition TourCamera.h:50
FVector Pos
Definition TourCamera.h:49
std::vector< KeyFrame > Frames
Definition TourCamera.h:51
Definition TourCamera.h:41
FVector LookAt
Definition TourCamera.h:43
f32 Duration
Definition TourCamera.h:44
FVector Pos
Definition TourCamera.h:42