int32 ABoidManager::SpawnBoid(int32 BoidType) { FVector thisSpawnPos; // Pick a random point in the defined bounds to spawn thisSpawnPos.X = FMath::RandRange(config.spawnBoundsStart.X, config.spawnBoundsEnd.X); thisSpawnPos.Y = FMath::RandRange(config.spawnBoundsStart.Y, config.spawnBoundsEnd.Y); thisSpawnPos.Z = FMath::RandRange(config.spawnBoundsStart.Z, config.spawnBoundsEnd.Z); return SpawnBoid(thisSpawnPos, BoidType); }
void Game::HandleEvents() { sf::Event event; while (window->pollEvent(event)) { window->setKeyRepeatEnabled(false); if (event.type == sf::Event::Closed) window->close(); else if (event.type == sf::Event::MouseMoved) { mousePos = sf::Vector2f(event.mouseMove.x, event.mouseMove.y); } else if (event.type == sf::Event::MouseButtonPressed) { switch (event.mouseButton.button) { case sf::Mouse::Left: SpawnBoid(sf::Vector2f(event.mouseButton.x, event.mouseButton.y)); break; case sf::Mouse::Middle: SpawnMagnet(sf::Vector2f(event.mouseButton.x, event.mouseButton.y), true); break; case sf::Mouse::Right: SpawnMagnet(sf::Vector2f(event.mouseButton.x, event.mouseButton.y), false); break; default: break; } } else if (event.type == sf::Event::KeyPressed) { switch (event.key.code) { case sf::Keyboard::P: paused = !paused; std::cout << "Paused: " << paused << std::endl; break; case sf::Keyboard::Num1: ToggleBehaviour(SteeringBehaviour::SB_ALIGNMENT); break; case sf::Keyboard::Num2: ToggleBehaviour(SteeringBehaviour::SB_COHESION); break; case sf::Keyboard::Num3: ToggleBehaviour(SteeringBehaviour::SB_SEPARATION); break; case sf::Keyboard::Num4: ToggleBehaviour(SteeringBehaviour::SB_WANDER); break; case sf::Keyboard::Num5: ToggleBehaviour(SteeringBehaviour::SB_PURSUIT); break; case sf::Keyboard::Num6: ToggleBehaviour(SteeringBehaviour::SB_ARRIVE); break; case sf::Keyboard::Num7: ToggleBehaviour(SteeringBehaviour::SB_ATTRACT); break; case sf::Keyboard::Num8: ToggleBehaviour(SteeringBehaviour::SB_APPROACH); break; case sf::Keyboard::C: ClearAll(); break; default: break; } } if (paused) return; GameObjList::iterator list1; for (list1 = gameObjects.begin(); list1 != gameObjects.end(); ++list1) { if ((*list1)->isActive) { (*list1)->HandleEvents(event); } else continue; } } }