Message #3527
Sujet: VB 2005 et IEventReceiver
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Dernière modification | 22-01-2008 00:41:34 | Ravine |
EDIT : ce qui suit concerne C#. Avec un peu de recherche, tu devrais *normalement* pouvoir adapter ça a VB. J'avais pas fait gaffe avant de partir dans l'ecriture de mes 2 messages que ça portait sur VB. Bon courage donc
Alors, si tu ne les trouves pas, c'est normal, c'est que c'est pas héritable. Le seul (gros) defaut (mais tributaire du statut de wrapper, on peut pas tout avoir) est justement qu'on ne peut pas faire de l'héritage a tout va. Les seuls trucs héritables sont dans Inheritable donc (qui veut dire "heritable" en fr.). Donc du coup, pour un custom scene node, tu déclares ta classe, et tu la fais hériter de ISceneNode. Ensuite tu implémentes des trucs dedans. Par exemple, tu veux te faire une caméra custom, qui rotationne sur le clic molette (button 3 de la souris) et un mouvement. Bon bah tu déclares une classe, tu hérites de ISceneNode, et a l'interieur, tu implémentes une CameraSceneNode. En gros, tu as une cameraSceneNode classique dans ton CustomSceneNode, auquel tu appliques les comportements que tu aimerais avoir pour ta caméra. Ensuite tu exposes les méthodes pour ton node. Et voilà, tu viens "d'emballer" un node existant dans un CustomSceneNode Un peu de code sera plus parlant je pense. Ici, j'ai créé une camera custom. C'est une classe qui implémente le constructeur du parent (enlevé ici pour eviter trop de code inutile) et une méthode "Translate" qui fait une translation de caméra. Comme tu peux le voir, j'expose "Translate", et en réalité, j'applique mes modifs a l'interieur. Jette un coup d'oeil aux custom scene nodes de Irrlicht.Extension dans le source du wrapper. Ce sont tous des CustomSceneNode, et tu pigeras mieux si t'as pas saisi avec mon exemple.
Ensuite, pour l'histoire du EventReceiver, donc, comme dit au dessus, c'est pas héritable. En revanche, tu peux "récupérer" les events normalement, et leur appliquer des transformations. Par exemple, Irrlicht.NetCP n'integre pas MastEventReceiver, qui est une classe qui se substitue a l'event receiver du Irrlicht Natif. Qu'a cela ne tienne ! Tu peux faire une classe "EventTransformer", et quand un event est lancé, tu le fais passer par cette classe, via une methode lambda, par exemple "ProcessEvent(Event e)". Plutot que de partir dans une longue explication, je vais te renvoyer au port du MastEventReceiver, que j'ai réalisé. Il fonctionne sur le principe que je te décris au dessus . http://irrlichtnetcp.sourceforge.net/phpBB2/viewtopic.php?t=811 Bon, tu y verras que j'ai "quand meme" hérité de Event, pour pouvoir récuperer quelques trucs. Le tout est commenté (j'ai pris du temps pour les comments), principalement en début de code, dans le gros pavé, sous le Disclaimer original. Voilà pour un exemple de traitement d'event. |
| Création du message | 22-01-2008 00:27:02 | Ravine |
EDIT : ce qui suit concerne C#. Avec un peu de recherche, tu devrais *normalement* pouvoir adapter ça a VB. J'avais pas fait gaffe avant de partir dans l'ecriture de mes 2 messages que ça portait sur VB. Bon courage donc
Alors, si tu ne les trouves pas, c'est normal, c'est que c'est pas héritable. Le seul (gros) defaut (mais tributaire du statut de wrapper, on peut pas tout avoir) est justement qu'on ne peut pas faire de l'héritage a tout va. Les seuls trucs héritables sont dans Inheritable donc (qui veut dire "heritable" en fr.). Donc du coup, pour un custom scene node, tu déclares ta classe, et tu la fais hériter de ISceneNode. Ensuite tu implémentes des trucs dedans. Par exemple, tu veux te faire une caméra custom, qui rotationne sur le clic molette (button 3 de la souris) et un mouvement. Bon bah tu déclares une classe, tu hérites de ISceneNode, et a l'interieur, tu implémentes une CameraSceneNode. En gros, tu as une cameraSceneNode classique dans ton CustomSceneNode, auquel tu appliques les comportements que tu aimerais avoir pour ta caméra. Ensuite tu exposes les méthodes pour ton node. Et voilà, tu viens "d'emballer" un node existant dans un CustomSceneNode Un peu de code sera plus parlant je pense. Ici, j'ai créé une camera custom. C'est une classe qui implémente le constructeur du parent (enlevé ici pour eviter trop de code inutile) et une méthode "Translate" qui fait une translation de caméra. Comme tu peux le voir, j'expose "Translate", et en réalité, j'applique mes modifs a l'interieur. Jette un coup d'oeil aux custom scene nodes de Irrlicht.Extension dans le source du wrapper. Ce sont tous des CustomSceneNode, et tu pigeras mieux si t'as pas saisi avec mon exemple.
Ensuite, pour l'histoire du EventReceiver, donc, comme dit au dessus, c'est pas héritable. En revanche, tu peux "récupérer" les events normalement, et leur appliquer des transformations. Par exemple, Irrlicht.NetCP n'integre pas MastEventReceiver, qui est une classe qui se substitue a l'event receiver du Irrlicht Natif. Qu'a cela ne tienne ! Tu peux faire une classe "EventTransformer", et quand un event est lancé, tu le fais passer par cette classe, via une methode lambda, par exemple "ProcessEvent(Event e)". Plutot que de partir dans une longue explication, je vais te renvoyer au port du MastEventReceiver, que j'ai réalisé. Il fonctionne sur le principe que je te décris au dessus . http://irrlichtnetcp.sourceforge.net/phpBB2/viewtopic.php?t=811 Bon, tu y verras que j'ai "quand meme" hérité de Event, pour pouvoir récuperer quelques trucs. Le tout est commenté (j'ai pris du temps pour les comments), principalement en début de code, dans le gros pavé, sous le Disclaimer original. Voilà pour un exemple de traitement d'event. |
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 560 invités en ligne membre en ligne: - RSS Feed |