Files
UwU-Engine/TestGame/src/Worlds/TestWorld.cpp
T

52 lines
1.3 KiB
C++

#include "TestWorld.h"
#include "Game/GameInstance.hpp"
#include "Game/SaveMap/SaveMap.hpp"
#include "Log/Log.hpp"
#include "Game/Actors/Mesh/Mesh.hpp"
TestWorld::TestWorld(GameInstance& game_instance) : World(game_instance)
{}
void TestWorld::BeginPlay()
{
World::BeginPlay();
std::vector<UType::object_ptr<Actor>> meshes = GetActorsByClass<Actor>();
for (const auto& i : meshes)
Loging::Log("Load actor: " + i->GetName());
}
void TestWorld::Tick(double delta_time)
{
World::Tick(delta_time);
time += delta_time;
if (time >= 10.0)
{
std::vector<UType::object_ptr<Mesh>> meshes = GetActorsByClass<Mesh>();
if (!meshes.empty())
{
Loging::Message("TestWorld destroy: " + meshes[0]->GetName());
DestroyActor(static_cast<UType::object_ptr<Actor>>(meshes[0]));
time = 7.0;
return;
}
Loging::Message("TestWorld: Time out");
GetGameInstance().quit();
}
}
std::shared_ptr<SaveMap> TestWorld::save()
{
std::shared_ptr<SaveMap> save = World::save();
std::shared_ptr<SaveMap> my_save = std::make_shared<SaveMap>("TestWorld");
my_save->SaveDouble("time", time)->connect_to(save);
return my_save;
}
void TestWorld::load(std::shared_ptr<SaveMap> save)
{
World::load(save->getParent());
time = save->GetDouble("time");
}