Salut les agrumes !
Ça faisait longtemps que je n'avais donné beaucoup de nouvelles du moteur, et rassurez-vous tout se passe bien !
Je travaille sur plusieurs fonctionnalités en même temps, que ce soit le réseau, la nouvelle interface haut-niveau du moteur ou encore le binding Lua, sans oublier l'écriture d'un tutoriel (si si !).
Alors pour prendre ces choses dans l'ordre, mon protocole RUdp est très expérimental et arrive à perdre des packets, je dois enquêter sur la chose et le tester davantage.
Concernant l'interface haut-niveau du moteur, nous nous retrouvons avec ceci:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | int main()
{
Ndk::Application application;
Nz::RenderWindow& mainWindow = application.AddWindow<Nz::RenderWindow>(Nz::VideoMode(800, 600, 32), "Test");
Ndk::World& world = application.AddWorld();
while (application.Run())
{
Nz::WindowEvent event;
while (mainWindow.PollEvent(&event))
{
if (event.type == Nz::WindowEventType_Quit)
application.Quit();
}
mainWindow.Display();
}
return EXIT_SUCCESS;
}
|
On voit donc une nouvelle classe Application, unique dans le programme et responsable de la vie des fenêtres et du monde, ainsi que de leur mise à jour, en effet la méthode Run() s'occupe de la mise à jour des mondes et de détruire les fenêtres si elles ont été fermées durant la boucle de rendu.
La gestion des événements est toujours la même, celle inspirée de la SFML, dont j'essaie de me débarrasser depuis un moment déjà.
À ce propos, je pensais gérer les événements via le système de signaux, ce qui donnerait quelque chose comme:
| Nz::RenderWindow& mainWindow = application.AddWindow<Nz::RenderWindow>(Nz::VideoMode(800, 600, 32), "Test");
mainWindow.OnKeyPressed.Connect([] (KeyEvent& event)
{
std::cout << "Une touche a été pressée !" << std::endl;
});
|
Mais j'ai peur que ce système ne soit pas assez user-friendly, j'enquête toujours.
Sinon, concernant le binding Lua et la console, disons que les choses ont beaucoup progressé, à voir en images (animées):
(Oh et bien entendu, Nazara va devenir un plugin pour Unity 3D, d'ailleurs je dois tout réécrire en C# !).