Bonjour,
Je suis actuellement en train de m'amuser à faire une simultion d'un système masse/ressort en 2D. Bon c'est vraiment pour m'amuser, j'ai trouvé un projet venant d'une école et ça m'a donné envie de le réaliser. Comme j'ai le soucis du détails, j'avais pensé à faire une sorte de découpe en deux modules: un module Graphique et un module Physique.
Donc pour le moment je suis partit sur deux moteurs basiques: GraphicEngine et PhysicEngine. Bon quand je dis basique, c'est que l'interface sera vraiment orientée pour l'application, par exemple pour PhysicEngine j'aurait: PhysicEngine.AddSpring et PhysicEngine.AddParticle.
Donc pour le moment, j'ai imagine qu'une Particule et un Ressort auront chacun deux éléments:
- PhysicItem
- GraphicItem
Et en gros dans ma boucle principale j'aurai:
1. Debut_MainLoop
i. Mettre à jour le moteur physique.
ii. Synchroniser la position des éléments avec leurs éléments physique.
iii. Mettre à jour moteur graphique.
2. Fin_MainLoop
En gros mon soucis c'est l'étape (ii). Comment, de façon élégante, assurer cette fonctionnalité ? Sur IRC on m'a conseillé un système d'abonnement, en gros par exemple dans ma classe Particle, et dans son constructeur, j'aurais:
Donc trois questions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Particle::Particle() { mPhysicItem.RegisterGraphicItem(mGraphicItem); }
- Est-ce une bonne approche que de faire dépendre GraphicItem de PhysicItem ? (et vice-versa)
- Est-ce qu'il est mieux de faire une classe PhysicItemListener et donc de faire hériter GraphicItem de cette dernière ?
- Est-ce que vous avez une autre approche plus intéressante ?
Merci d'avance à ceux qui prendront la peine de me répondre!
Partager