Another-Game-Engine / AGE

AGE - C++11 OpenGL4 Game Engine
MIT License
49 stars 11 forks source link

Serializable scene #592

Open cesarl opened 8 years ago

cesarl commented 8 years ago

Le but est de faire en sorte que les systemes soient configurtables et sauvegardables avec la scene via le world editor.

L'idee :

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 :

enum States
{
    AddAnimation,
    AddMesh,
    AddComponent,
    AddEntity,
    MoveEntity,
    UpdatePhysics,
    UpdateAnimation
}

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