Beispiel #1
0
/////////////////////////////////////////////////////////////
/// Lance l'application
///
////////////////////////////////////////////////////////////
void Game::Run()
{
	InitializeEngineSettings();

//#if BGFX_CONFIG_MULTITHREADED

	MakeWindow();
	IRenderer::Get().Initialize(m_EngineSettings);
	OnWindowResized(m_EngineSettings.WindowWidth, m_EngineSettings.WindowHeight);

	//s_renderThread.init(renderThreadFunc, this);
	RenderThreadloop();

  	//s_renderThread.shutdown();
}
Beispiel #2
0
void SFMLWorld::RunWorld(void)
{
	window = new sf::RenderWindow(sf::VideoMode(windowWidth, windowHeight), "World window");
	Clock cl = Clock();

	totalElapsedSeconds = 0.0f;
	worldOver = false;
	float elapsed;
	sf::Event windowEvent;

	InitializeWorld();

	cl.restart();

	while (window->isOpen() && !worldOver)
	{
		//Handle window events first.
		while (window->pollEvent(windowEvent))
		{
			if (windowEvent.type == sf::Event::Closed)
			{
				OnCloseWindow();
			}
			else if (windowEvent.type == sf::Event::Resized)
			{
				OnWindowResized(windowEvent.size.width, windowEvent.size.height);
			}
			else
			{
				OnOtherWindowEvent(windowEvent);
			}
		}

		//Get elapsed time.
		elapsed = cl.getElapsedTime().asSeconds();
		totalElapsedSeconds += elapsed;
		cl.restart();

		//Call functions.
		if (elapsed > 0.0f)
		{
			UpdateWorld(elapsed);
			RenderWorld(elapsed);
		}
	}

	OnWorldEnd();
}
Beispiel #3
0
bool CBaseControl::DispatchOwnEvent(sf::Event const & event)
{
	switch (event.type)
	{
	case sf::Event::MouseButtonPressed:
		return OnMousePressed(event.mouseButton);
	case sf::Event::MouseButtonReleased:
		return OnMouseReleased(event.mouseButton);
	case sf::Event::Resized:
		return OnWindowResized(event.size);
	case sf::Event::MouseMoved:
		return OnMouseMoved(event.mouseMove);
	default:
		return false;
	}
}
Beispiel #4
0
void Game::HandleWindowEvents()
{
	sf::Event event;
	bool handled = false;

	m_Input.Update();

#ifndef EDITOR

	//CEGUI::GUIContext &GUIContext = CEGUI::System::getSingleton().getDefaultGUIContext();

#endif // #ifndef EDITOR
	
	ImGuiIO& io = ImGui::GetIO();

	while (m_pWindow->pollEvent(event))
	{
		m_Input.OnEvent(event);

		switch (event.type)
		{
		case sf::Event::Closed:			
			Exit();
			break;

		case sf::Event::Resized:
			OnWindowResized(event.size.width, event.size.height);
			break;

		case sf::Event::KeyPressed:
			io.KeysDown[event.key.code] = 1;

			switch (event.key.code)
			{
			case sf::Keyboard::Quote:
				m_Console.VisibilityToggle(); 
				break;

			case sf::Keyboard::F1:
				m_DebugOptions.ShowLogInGame = !m_DebugOptions.ShowLogInGame; 
				break;

			default:

#ifndef EDITOR
				//handled = GUIContext.injectKeyDown(convertKeyCodeToCEGUIKey(event.key.code));

#endif // #ifndef EDITOR

				break;
			}
			break;

#ifndef EDITOR

		case sf::Event::KeyReleased:
			//handled = GUIContext.injectKeyUp(convertKeyCodeToCEGUIKey(event.key.code));
			io.KeysDown[event.key.code] = 0;
			break;

		case sf::Event::TextEntered:
			//Console::Instance().SendChar(static_cast<char>(event.text.unicode));
			//handled = GUIContext.injectChar(static_cast<char>(event.text.unicode));
			io.AddInputCharacter(event.text.unicode);
			break;

		case sf::Event::MouseButtonPressed:
			switch (event.mouseButton.button)
			{
			case sf::Mouse::Left:
				//handled = GUIContext.injectMouseButtonDown(CEGUI::LeftButton);
				io.MouseDown[0] = true;
				break;

			case sf::Mouse::Right:
				//handled = GUIContext.injectMouseButtonDown(CEGUI::RightButton);
				io.MouseDown[1] = true;
				break;

			case sf::Mouse::Middle:
				//handled = GUIContext.injectMouseButtonDown(CEGUI::MiddleButton);
				io.MouseDown[2] = true;
				break;

			case sf::Mouse::XButton1:
				//handled = GUIContext.injectMouseButtonDown(CEGUI::X1Button);
				break;

			case sf::Mouse::XButton2:
				//handled = GUIContext.injectMouseButtonDown(CEGUI::X2Button);
				break;
			}
			break;

		case sf::Event::MouseButtonReleased:
			switch (event.mouseButton.button)
			{
			case sf::Mouse::Left:
				//handled = GUIContext.injectMouseButtonUp(CEGUI::LeftButton);
				io.MouseDown[0] = false;
				break;

			case sf::Mouse::Right:
				//handled = GUIContext.injectMouseButtonUp(CEGUI::RightButton);
				io.MouseDown[1] = false;
				break;

			case sf::Mouse::Middle:
				//handled = GUIContext.injectMouseButtonUp(CEGUI::MiddleButton);
				io.MouseDown[2] = false;
				break;

			case sf::Mouse::XButton1:
				//handled = GUIContext.injectMouseButtonUp(CEGUI::X1Button);
				break;

			case sf::Mouse::XButton2:
				//handled = GUIContext.injectMouseButtonUp(CEGUI::X2Button);
				break;
			}
			break;

		case sf::Event::MouseMoved:
// 			handled = GUIContext.injectMousePosition(
// 				static_cast<float>(event.mouseMove.x), 
// 				static_cast<float>(event.mouseMove.y));
			io.MousePos.x = static_cast<float>(event.mouseMove.x);
			io.MousePos.y = static_cast<float>(event.mouseMove.y);

		case sf::Event::MouseWheelMoved:
			//handled = GUIContext.injectMouseWheelChange(static_cast<float>(event.mouseWheel.delta));
			io.MouseWheel += static_cast<float>(event.mouseWheel.delta);
			break;

#endif // #ifndef EDITOR
		}
	}
}
Beispiel #5
0
void SFMLWorld::RunWorld(void)
{
    contextSettings = GenerateContext();
	window = new sf::RenderWindow(GetModeToUse(windowWidth, windowHeight),
                                  GetWindowTitle().c_str(),
                                  GetSFStyleFlags(), contextSettings);
	Clock cl = Clock();

	totalElapsedSeconds = 0.0f;
	worldOver = false;
	float elapsed;
	sf::Event windowEvent;

	InitializeWorld();
    windowHasFocus = true;

	cl.restart();

	while (window->isOpen() && !worldOver)
	{
		//Handle window events first.
		while (window->pollEvent(windowEvent))
		{
			if (windowEvent.type == sf::Event::Closed)
			{
				OnCloseWindow();

			}
			else if (windowEvent.type == sf::Event::Resized)
			{
				OnWindowResized(windowEvent.size.width, windowEvent.size.height);
			}
            else if (windowEvent.type == sf::Event::LostFocus)
            {
                windowHasFocus = false;
                OnWindowLostFocus();
            }
            else if (windowEvent.type == sf::Event::GainedFocus)
            {
                windowHasFocus = true;
                OnWindowGainedFocus();
            }
			else
			{
				OnOtherWindowEvent(windowEvent);
			}
		}

		//Get elapsed time.
		elapsed = cl.getElapsedTime().asSeconds();
		cl.restart();
		totalElapsedSeconds += elapsed;

        //Update various managers.
        Input.Update(elapsed, totalElapsedSeconds);
        Timers.UpdateTimers(elapsed);

		//Update and render.
		if (elapsed > 0.0f)
		{
			UpdateWorld(elapsed);

			RenderWorld(elapsed);
		}
	}

	OnWorldEnd();

    delete window;
    window = 0;
}
void EventHandler::OnEvent (sf::Event* event)
{
	switch (event->type)
	{
		case sf::Event::Closed:
			//Window closed:
			OnClosed();
			break;
		case sf::Event::Resized:
			//Window resized:
			OnWindowResized (event->size);
		case sf::Event::GainedFocus:
			//Window gained focus:
			OnGainedFocus();
			break;
		case sf::Event::LostFocus:
			//Window lost focus:
			OnLostFocus();
			break;
			break;
		case sf::Event::TextEntered:
			//Text entered:
			OnTextEntered (event->text);
			break;
		case sf::Event::KeyPressed:
			//Key pressed:
			OnKeyPressed (event->key);
			break;
		case sf::Event::KeyReleased:
			//Key released:
			OnKeyReleased (event->key);
			break;
		case sf::Event::MouseWheelMoved:
			//Mouse wheel moved:
			OnMouseWheelMoved (event->mouseWheel);
			break;
		case sf::Event::MouseButtonPressed:
			//Mouse button pressed:
			OnMouseButtonPressed (event->mouseButton);
			break;
		case sf::Event::MouseButtonReleased:
			//Mouse button released:
			OnMouseButtonReleased(event->mouseButton);
			break;
		case sf::Event::MouseMoved:
			//Mouse moved:
			OnMouseMoved (event->mouseMove);
			break;
		case sf::Event::MouseEntered:
			//Mouse entered Window bounds:
			OnMouseEntered();
			break;
		case sf::Event::MouseLeft:
			//Mouse left Window bounds:
			OnMouseLeft();
			break;
		case sf::Event::JoystickButtonPressed:
			//Joystick button pressed:
			OnJoystickButtonPressed (event->joystickButton);
			break;
		case sf::Event::JoystickButtonReleased:
			//Joystick button released:
			OnJoystickButtonReleased(event->joystickButton);
			break;
		case sf::Event::JoystickMoved:
			//Joystick moved:
			OnJoystickMoved(event->joystickMove);
			break;
		case sf::Event::JoystickConnected:
			//Joystick connected:
			OnJoystickConnected (event->joystickConnect);
			break;
		case sf::Event::JoystickDisconnected:
			//Joystick disconnected:
			OnJoystickDisconnected (event->joystickConnect);
			break;
		

	}
}