Add classes Mesh and StaticMesh

This commit is contained in:
Jiga228
2025-10-10 19:39:30 +07:00
parent 2b2ed1f050
commit fedffa7634
14 changed files with 118 additions and 20 deletions
+7 -8
View File
@@ -8,17 +8,16 @@ Actor::Actor()
SetType(Classes::Actor);
}
std::shared_ptr<SaveMap> Actor::save() noexcept
std::shared_ptr<SaveMap> Actor::save()
{
std::shared_ptr<SaveMap> save = std::make_shared<SaveMap>("Actor");
save->SaveObject("loc", &loc)
->SaveObject("rot", &rot)
->SaveObject("scale", &scale)
->SaveListStrings("tags", std::move(tags));
return save;
return std::make_shared<SaveMap>("Actor")
->SaveObject("loc", &loc)
->SaveObject("rot", &rot)
->SaveObject("scale", &scale)
->SaveListStrings("tags", std::move(tags));
}
void Actor::load(std::shared_ptr<SaveMap> save) noexcept
void Actor::load(std::shared_ptr<SaveMap> save)
{
loc = *reinterpret_cast<Vector3D*>(save->GetObject("loc"));
rot = *reinterpret_cast<Vector3D*>(save->GetObject("rot"));
+2 -3
View File
@@ -9,7 +9,6 @@
#include "Math/Vector.h"
GENERATE_META(Actor)
class Actor : public ISave, public IRTTI
{
Vector3D loc;
@@ -24,8 +23,8 @@ public:
Delegate<const Vector3D&> OnSetActorRotate;
#pragma region ISave
virtual std::shared_ptr<SaveMap> save() noexcept override;
virtual void load(std::shared_ptr<SaveMap> save) noexcept override;
virtual std::shared_ptr<SaveMap> save() override;
virtual void load(std::shared_ptr<SaveMap> save) override;
#pragma endregion
virtual void BeginPlay();
+21
View File
@@ -0,0 +1,21 @@
#include "Mesh.hpp"
#include "Game/SaveMap/SaveMap.h"
Mesh::Mesh()
{
SetType(Classes::Mesh);
}
std::shared_ptr<SaveMap> Mesh::save()
{
return std::make_shared<SaveMap>("Mesh")
->SaveString("model_name_", model_name_)
->connect_to(Actor::save());
}
void Mesh::load(std::shared_ptr<SaveMap> save)
{
Actor::load(save->getParent());
model_name_ = save->GetString("model_name_");
}
+24
View File
@@ -0,0 +1,24 @@
#pragma once
#include <string>
#include "../Actor.h"
GENERATE_META(Mesh)
class Mesh : public Actor
{
std::string model_name_;
protected:
void SetModelName(const std::string& new_model_name) { model_name_ = new_model_name; }
public:
Mesh();
#pragma region ISave
virtual std::shared_ptr<SaveMap> save() override;
virtual void load(std::shared_ptr<SaveMap> save) override;
#pragma endregion
virtual void load_model(const std::string& model_name) = 0;
const std::string& GetModelName() const { return model_name_; }
};
+26
View File
@@ -0,0 +1,26 @@
#include "StaticMesh.hpp"
#include "Log/Log.h"
#include "Game/SaveMap/SaveMap.h"
StaticMesh::StaticMesh()
{
SetType(Classes::StaticMesh);
}
std::shared_ptr<SaveMap> StaticMesh::save()
{
return std::make_shared<SaveMap>("StaticMesh")->connect_to(Mesh::save());
}
void StaticMesh::load(std::shared_ptr<SaveMap> save)
{
Mesh::load(save->getParent());
}
void StaticMesh::load_model(const std::string& model_name)
{
SetModelName(model_name);
// TODO
Message("Load mesh: " + model_name);
}
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#include "Mesh.hpp"
GENERATE_META(StaticMesh)
class StaticMesh : public Mesh
{
public:
StaticMesh();
#pragma region ISave
virtual std::shared_ptr<SaveMap> save() override;
virtual void load(std::shared_ptr<SaveMap> save) override;
#pragma endregion
void load_model(const std::string& model_name) override;
};