Le but est de faire en sorte que les systemes soient configurtables et sauvegardables avec la scene via le world editor.
L'idee :
On peut ajouter / supprimer des systems via la GUI pour une scene donnee.
Les systems on des configurations modifiables via la GUI dans l'editeur
Les systems peuvent contenir autant de methode de type void update(float deltatime) que l'on souhaite.
L'ordre d'execution de ces methodes d'update est configurable via la GUI
Certain systemes peuvent exiger que certaines fonctions d'update respectent un certain odre pour eviter de tout casser.
Pourquoi faire ca ?
Par exemple le RenderSystem qui va s'occuper de lancer les jobs de culling pour les cameras, spotlights etc. Il va lancer les jobs, mais apres il doit attendre la fin de leur execution pour envoyer le resultat au thread de rendu. On pourrait faire un begin() qui lance les tache et mettre a la toute fin de la frame une fonction end() qui choppe les resultat et les envois. Entre les deux on peut se servir de ce thread pour faire des trucs a la con (genre updater la physique)
Par contre ca peut etre dangereux, car qq un pas au courant peut s'amuser a bouger des objets alors que l'on est en train de les culler par exemple. Dans ce cas on pourrait faire un gros enum du genre :
Et locker ses states quand on les utilise. Si 2 threads les locks en meme temps : boom Assert. C'est pas le truc le plus clair et le plus joli mais ca peut faire une petite securite. Apres vu que je pense qu'il n'y a que moi qui vais bouger les systems, je pense qu'on peut s'en passer.
@BoucherAnthony c'est une tache pas tres tres longue, assez drole, et pas trop prise de tete si ca te dis.
Le but est de faire en sorte que les systemes soient configurtables et sauvegardables avec la scene via le world editor.
L'idee :
void update(float deltatime)
que l'on souhaite.Pourquoi faire ca ?
Par exemple le
RenderSystem
qui va s'occuper de lancer les jobs de culling pour les cameras, spotlights etc. Il va lancer les jobs, mais apres il doit attendre la fin de leur execution pour envoyer le resultat au thread de rendu. On pourrait faire unbegin()
qui lance les tache et mettre a la toute fin de la frame une fonctionend()
qui choppe les resultat et les envois. Entre les deux on peut se servir de ce thread pour faire des trucs a la con (genre updater la physique)Par contre ca peut etre dangereux, car qq un pas au courant peut s'amuser a bouger des objets alors que l'on est en train de les culler par exemple. Dans ce cas on pourrait faire un gros enum du genre :
Et locker ses states quand on les utilise. Si 2 threads les locks en meme temps : boom Assert. C'est pas le truc le plus clair et le plus joli mais ca peut faire une petite securite. Apres vu que je pense qu'il n'y a que moi qui vais bouger les systems, je pense qu'on peut s'en passer.
@BoucherAnthony c'est une tache pas tres tres longue, assez drole, et pas trop prise de tete si ca te dis.
Tu me diras