diff --git a/cpp/src/pathfindingdemo.cpp b/cpp/src/pathfindingdemo.cpp index 7a1064c..c2abec6 100644 --- a/cpp/src/pathfindingdemo.cpp +++ b/cpp/src/pathfindingdemo.cpp @@ -212,12 +212,17 @@ void PathFindingDemo::HandleActions(const std::vector &actions) { m_SelectionBox.end = action.Argument.position; m_SelectionBox.active = false; - SelectEntitiesInRectangle(m_SelectionBox.start, m_SelectionBox.end); + auto diff = m_SelectionBox.end - m_SelectionBox.start; + // here we explicitly change the vector type from WindowPos to WindowSize + m_SelectionBox.size = diff.ChangeTag(); + WorldPos start = m_Camera.WindowToWorld(m_SelectionBox.start); + WorldPos end = m_Camera.WindowToWorld(m_SelectionBox.end); + SelectEntitiesInRectangle(start, end); } }; } -void PathFindingDemo::SelectEntitiesInRectangle(WindowPos A, WindowPos B) +void PathFindingDemo::SelectEntitiesInRectangle(WorldPos A, WorldPos B) { // TODO use colliders for this m_SelectedEntities.clear(); @@ -233,5 +238,13 @@ void PathFindingDemo::SelectEntitiesInRectangle(WindowPos A, WindowPos B) m_SelectedEntities.push_back(std::weak_ptr(entity)); } } + LOG_INFO("Selected ", m_SelectedEntities.size(), " entities"); +} + +std::pair PathFindingDemo::GetSelectionBoxPosSize() +{ + const auto& pos = m_SelectionBox.start; + WindowPos diff = m_SelectionBox.end - m_SelectionBox.start; + } diff --git a/cpp/src/pathfindingdemo.hpp b/cpp/src/pathfindingdemo.hpp index 442716c..51ffd0f 100644 --- a/cpp/src/pathfindingdemo.hpp +++ b/cpp/src/pathfindingdemo.hpp @@ -41,7 +41,9 @@ public: void HandleActions(const std::vector &actions); WorldPos GetRandomPosition() const; - void SelectEntitiesInRectangle(WindowPos A, WindowPos B); + void SelectEntitiesInRectangle(WorldPos A, WorldPos B); + bool IsSelectionBoxActive() const { return m_SelectionBox.active; } + std::pair GetSelectionBoxPosSize(); private: const std::vector& GetEntityCollisions();