From 659e40ea1e27eda9ffc0b70493235481ab126297 Mon Sep 17 00:00:00 2001 From: Jakub Domagala Date: Sat, 18 Sep 2021 23:45:49 +0200 Subject: [PATCH] [#26]: Create EditorObjects after initializing pathfinder in Create Level mode --- editor/Editor.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/editor/Editor.cpp b/editor/Editor.cpp index 8c8b6ed7..83e6eec6 100644 --- a/editor/Editor.cpp +++ b/editor/Editor.cpp @@ -214,8 +214,7 @@ Editor::HandleMouseDrag(const glm::vec2& currentCursorPos, const glm::vec2& axis auto animatable = std::dynamic_pointer_cast< Animatable >(m_currentSelectedGameObject); if (animatable) { - animatable->SetAnimationStartLocation( - m_currentSelectedGameObject->GetPosition()); + animatable->SetAnimationStartLocation(m_currentSelectedGameObject->GetPosition()); UpdateAnimationData(); } } @@ -476,8 +475,7 @@ Editor::DrawAnimationPoints() object->GetLinkedObjectID()); if (it != animaltionPointIDs.end()) { - Renderer::DrawLine(lineStart, object->GetPosition(), - {1.0f, 0.0f, 1.0f, 1.0f}); + Renderer::DrawLine(lineStart, object->GetPosition(), {1.0f, 0.0f, 1.0f, 1.0f}); lineStart = object->GetCenteredPosition(); object->Render(); @@ -566,6 +564,23 @@ Editor::CreateLevel(const glm::ivec2& size) m_currentLevel->Create(this, size); m_currentLevel->LoadShaders("Editor"); + // Populate editor objects + const auto& pathfinderNodes = m_currentLevel->GetPathfinder().GetAllNodes(); + std::transform(pathfinderNodes.begin(), pathfinderNodes.end(), + std::back_inserter(m_editorObjects), [this](const auto& node) { + const auto tileSize = m_currentLevel->GetTileSize(); + + auto pathfinderNode = std::make_shared< EditorObject >( + *this, node.m_position, glm::ivec2(tileSize, tileSize), "white.png", + node.GetID()); + + pathfinderNode->SetIsBackground(true); + pathfinderNode->SetVisible(m_renderPathfinderNodes); + pathfinderNode->SetColor(glm::vec3{1.0f, 1.0f, 1.0f}); + + return pathfinderNode; + }); + m_camera.Create(glm::vec3(m_currentLevel->GetLevelPosition(), 0.0f), m_window->GetSize()); m_camera.SetLevelSize(m_currentLevel->GetSize());