Example #1
0
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);
}
Example #2
0
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;
		}
	}
}