Initialiser qqch lors du démarrage de l'extension

Bonjour,

Je voudrais savoir comment est-il possible d’avoir une fonction d’initialisation lorsque l’utilisateur lance une scène.
Parce que je m’interresse en ce moment à CEGUI, une GUI compatible avec OpenGL, mais il faut initialiser des choses en commun à tous les objets que je vais créer…
Or, je ne sais pas où mettre cela : déjà pas dans le constructeur de l’extension, car la portée des objets initialisés dans ce constructeur est limitée au fichier Extension.cpp…

Lorsque les objets vont être utilisés sur la scène, la fonction LoadRuntimeResource est appelée.
Regarde par exemple l’objet Vidéo qui utilise cette fonction.

Tu peux peut être utiliser cette fonction pour initialiser ce qu’il faut, avec éventuellement une variable statique pour indiquer si l’initialisation a déjà été faite ou non.
Ou sinon, utiliser une classe “singleton”, contenant les élements à initialiser. Tu accès à cette classe dans le constructeur de l’extension pour l’initialiser, et tu y accède depuis les objets pour l’utiliser.

Ok, sinon, est-il possible de capter un événement SFML ?
(en l’occurrence pour convertir les code des touche SFML en CEGUI).

Non, tous les évènements sont gérés au sein de la RuntimeScene.
Par contre, les RuntimeScene proposent quand même l’accès au sf::Input utilisé pour capter les entrées de la fenêtre :

        const sf::Input *                       input; ///< Pointer to the SFML class used to get user input

Si c’est vraiment des évènements dont tu as besoin, dit moi de quels types ils sont, je pourrais peut être ajouter des variables membres reflétant l’état de ces évènements. Par exemple, les RuntimeScene auront un membre inputTextEntered et inputWheelDelta qui sont mis à jour quand Game Develop gère un évènement correspondant à sf::Event::TextEntered ou sf::Event::MouseWheelMoved.

J’ai trouvé une fonction tout prête permettant de convertir un code de touche SFML en un code de touche CEGUI. Il faut aussi utiliser les clics de la souris. :wink: