#0 

15-07-2013 10:58:44

Joeyy
Membre
Date d'inscription: 01-04-2013
Messages: 13

Bonjour à tous,

Utilisant IrrlichtLime - mais je pense que c'est le même esprit pour le C++ - j'ai intégré Irrlicht à une fenêtre WPF en me basant sur le code du sample L08 comme le montre l'image qui suit :



J'ai deux problèmes :

1/ Le premier problème est que la souris est bloqué dans le composant Irrlicht, dès que j'essaye de la déplacer elle revient se positionner à son centre, et ce même si je switch de programme avec ALT+TAB, la seule solution est de quitter le programme.

2/Le second problème est que je ne peux pas vraiment interagir avec le composant, je ne peux pas déplacer la caméra que ce soit avec les touches ou avec la souris. En gros j'ai une image fixe avec une souris bloquée... Le bon côté des choses c'est que Irrlicht s'est correctement chargé big_smile

Concernant mon code je me suis vraiment basé sur le code de l'exemple que j'ai uniquement modifié pour la partie initialisation de Irrlicht, histoire de ne pas charger la scène qu'ils proposent mais celle que je veux. Ils chargent Irrlicht dans un processus asynchrone avec un backgroundWorker.

Voila le code qui tourne en asynchrone :

Code:

/* Code du processus asynchrone */
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            

            /* Initialisation de Irrlicht : Ce code est en pratique dans le constructeur de ma classe pour gérer les 
objets, elle charge le moteur Irrlicht lors de la création du premier objet et stocke les variables clés telles que 
device et smgr en statique. */ 

            // On crée un IrrlichtParameter pour se positionner dans la fenetre existante
            p = new IrrlichtCreationParameters();
            p.DriverType = DriverType.Direct3D9;
            p.WindowID = (IntPtr)e.Argument;


            device = IrrlichtDevice.CreateDevice(p);

            // if device cannot be created by any reason - we just leave this thread,
            // after all IsRedering will report false, so it is all OK.
            if (device == null)
            {
                p.DriverType = DriverType.Direct3D8;
                device = IrrlichtDevice.CreateDevice(p);
            }

            if (device == null)
            {
                p.DriverType = DriverType.OpenGL;
                device = IrrlichtDevice.CreateDevice(p);
            }
            if (device == null)
            {
                p.DriverType = DriverType.Software;
                device = IrrlichtDevice.CreateDevice(p);
            }
            if (device == null)
            {
                return;
            }

            driver = device.VideoDriver;
            smgr = device.SceneManager;

           //Fin de l'initialisatin de Irrlicht

            while (XXX.device.Run())
            {
                XXX.driver.BeginScene(false);
                XXX.smgr.DrawAll();
                XXX.driver.EndScene();
            }

            if (worker.CancellationPending)
                XXX.device.Close();

            lock (backgroundCommand)
            {
                switch (backgroundCommand.Type)
                {
                    case Command.Kind.Resized:
                        XXX.driver.ResizeNotify(backgroundCommand.Value as Dimension2Di);
                        backgroundCommand.Clear();
                        break;
                }
            }
           XXX.device.Drop();

Dans la mesure où dans l'example, ils faisait défiler une animation et qu'aucune interaction avec la camera ne semblait marcher, je me demande si je dois ajouter le code pour prendre en compte la camera, si c'est le cas je ne sais cependant pas comment faire.

Une deuxième piste qui me vient à l'idée est de savoir si l'affichage est effectivement actualisé...

Je vous remercie pour votre aide !

Dernière modification par Joeyy (15-07-2013 11:07:17)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
28 invités en ligne
Aucun membre connecté
RSS Feed