void SelectionSystem::selectObjects() { ObjectManager* mgr = Game::game.getObjMgr(); // Get all selectable objects std::list<int> objects = mgr->getObjectsWithComponent("SelectableComponent"); for (int i : objects) { SelectableComponent* selectComp = mgr->getObjectComponent<SelectableComponent>(i, "SelectableComponent"); // Check if the object has a transform TransformComponent* transComp = mgr->getObjectComponent<TransformComponent>(i, "TransformComponent"); if (transComp == nullptr) continue; vector2di screenPos = worldToScreen(transComp->worldPosition); int topLeftX = (clickPos.X < mousePos.X) ? clickPos.X : mousePos.X; int topLeftY = (clickPos.Y < mousePos.Y) ? clickPos.Y : mousePos.Y; int bottomRightX = (clickPos.X > mousePos.X) ? clickPos.X : mousePos.X; int bottomRightY = (clickPos.Y > mousePos.Y) ? clickPos.Y : mousePos.Y; if (screenPos.X >= topLeftX && screenPos.X <= bottomRightX && screenPos.Y >= topLeftY && screenPos.Y <= bottomRightY) selectComp->selected = true; else selectComp->selected = false; } }