MainLoop del iL-engine 2

Antes que nada avisar de que es un esbozo, una cosa en constante evolución y como tal, seguro que sufrirá cambios o mejor dicho añadidos en un futuro.

Dicho lo anterior, aquí podéis ver el bucle de programa del actual engine que estoy haciendo, que es la versión 2 del iL-engine.

MSG msg;
memset( &msg, 0, sizeof(msg) );
while( msg.message!=WM_QUIT && bRunAplication)
{
	while(PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ))
	{
		TranslateMessage( &msg );
		DispatchMessage( &msg );
	}
	EventProcess();
	bRunAplication = Update(m_UpdateClock.GetElapsedTime());

	m_KeyB.Update(m_KeyBClock.GetElapsedTime());
	m_Mouse.Update(m_MouseClock.GetElapsedTime());
	m_pCameraActive->Update();

	Render(m_RenderClock.GetElapsedTime());
}

Como podeis observar, mientras no nos venga un mensaje de WM_QUIT o la función Update(…) nos devuelva un false, el bucle mira todos los mensajes de Windows que han llegado, los traslada todos a la función WinProc(…) donde son convertidos de mensajes de Windows a eventos de iL-engine y deja paso a la función que procesa todos los eventos.

A continuación podemos observar cómo se ejecuta la función Update(…), que es una función virtual para que, al ser heredado el motor, el usuario tenga un punto de entrada y control.

Updateamos los trackers de mouse y teclado, actualizamos la cámara y ya podemos renderizar este frame.

Y como no, vuelta a empezar.

Un saludo

Escribe un comentario

Tienes que iniciar sesión para escribir un comentario.