Hé les gars! Mon moteur physique marche assez bien (merci de le demander!) Et je suis prêt à commencer à travailler sur des choses encore plus avancées. Par exemple, j'essaie de configurer mon moteur de collision afin qu'un délégué arbitraire puisse être averti lorsqu'une collision se produit. Permettez-moi de créer un scénario pour vous:Schéma de délégué de détection de collision
Supposons que nous ayons l'objet A, l'objet B et l'objet C dans la simulation physique. Je veux être en mesure d'informer un délégué sur une collision entre A et B, ET informer un délégué potentiellement différent sur une collision entre A et C.
Un peu d'information de fond: J'ai une interface connue pour le délégué, je ont le potentiel de stocker l'état pour mon détecteur de collision (mais pas atm), et ont la capacité de stocker l'état dans les objets eux-mêmes. De même, j'utilise ce modèle de délégué pour gérer la résolution de collision, en définissant simplement le moteur physique en tant que délégué pour tous les objets par défaut, ce qui permet à l'utilisateur de modifier le délégué si vous le souhaitez.
Maintenant, j'ai déjà essayé d'avoir chaque objet stocker son propre délégué de collision qui serait informé quand une collision s'est produite. Cela n'a pas fonctionné car lorsque les objets avaient le même délégué de collision, la même collision était gérée deux fois. Quand je suis passé à seulement utiliser le délégué du premier objet (mais cela a été décidé), l'ordre de la simulation est devenu un problème. Je veux utiliser un dictionnaire, mais cela introduit une quantité importante de frais généraux. Cependant, cela semble être la direction que je dois prendre.
Donc, voici la question: se battre à la mort sur une solution appropriée. Comment résoudrais-tu ce problème?
Votre suggestion est fondée. Je suis en train de concevoir quelque chose de similaire: un objet contrôleur prend des paires d'objets physiques comme des clés pour atteindre une valeur de délégué. Ce délégué est ensuite appelé avec la collision résultante entre les deux objets. Ainsi, lorsque A et B entrent en collision, le contrôleur recherche le délégué associé à A et B, puis, lorsque A et C entrent en collision, il recherche le délégué associé à A et C. Vous avez raison: cela a un coût important en termes de stockage et de complexité. Merci pour la suggestion! – Grimless
J'ai décidé de définir des délégués par TYPE d'objet, ce qui semble être une solution acceptable. Merci! – Grimless