Skip to content

Serializable scene #592

@cesarl

Description

@cesarl

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 :

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions