Удалил UType::object_ptr и заменил его на комбинацию из std::shared_ptr и std::weak_ptr из-за ужасной реализации.
This commit is contained in:
@@ -11,9 +11,11 @@ TestWorld::TestWorld(GameInstance& game_instance) : World(game_instance)
|
||||
void TestWorld::BeginPlay()
|
||||
{
|
||||
World::BeginPlay();
|
||||
std::vector<UType::object_ptr<Actor>> meshes = GetActorsByClass<Actor>();
|
||||
std::vector<std::weak_ptr<Actor>> meshes = GetActorsByClass<Actor>();
|
||||
for (const auto& i : meshes)
|
||||
Loging::Log("Load actor: " + i->GetName());
|
||||
{
|
||||
Loging::Log("Load actor: " + i.lock()->GetName());
|
||||
}
|
||||
}
|
||||
|
||||
void TestWorld::Tick(double delta_time)
|
||||
@@ -23,11 +25,12 @@ void TestWorld::Tick(double delta_time)
|
||||
time += delta_time;
|
||||
if (time >= 10.0)
|
||||
{
|
||||
std::vector<UType::object_ptr<Mesh>> meshes = GetActorsByClass<Mesh>();
|
||||
std::vector<std::weak_ptr<Mesh>> meshes = GetActorsByClass<Mesh>();
|
||||
if (!meshes.empty())
|
||||
{
|
||||
Loging::Message("TestWorld destroy: " + meshes[0]->GetName());
|
||||
DestroyActor(static_cast<UType::object_ptr<Actor>>(meshes[0]));
|
||||
std::shared_ptr<Mesh> mesh = meshes[0].lock();
|
||||
Loging::Message("TestWorld destroy: " + mesh->GetName());
|
||||
DestroyActor(meshes[0]);
|
||||
time = 7.0;
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user