#0 

13-11-2006 04:17:28

Esselfe
Petit nouveau
Date d'inscription: 13-11-2006
Messages: 4
Site web

Salut smile

Je sais que les membres d'Irrlicht sont intialisablent soit par
"IrrlichtDevice device = new IrrlichtDevice(DriverType.OPENGL);"
soit par
"ICameraSceneNode cam = device.SceneManager.AddCameraSceneNode(null, camPos, camLookat, 1);"

Mais je ne sais pas comment et quoi exactement initialiser pour integrer le gui...

Voilà mon code compilé sous MSVisual C# 2005 Express:
using System;
using System.Windows.Forms;  // pour MessageBox.Show()
using Irrlicht;
using Irrlicht.video;
using Irrlicht.scene;
using Irrlicht.gui;
using Irrlicht.core;

class Esselfe3{
    class playGUI{
        // ces membres sont public car des méthodes propres à Irrlicht y accèdent... (parex. IrrlichtDevice.CloseDevice())
        public IrrlichtDevice device;
        public IGUIEnvironment GUIenv;
        public irr.gui.IGUIEnvironment;  // je crois je n'ai pas à m'en servir... mais c'est ce que je donne au constructeur?
        public IGUIElement GUIelem;
        public ICameraSceneNode cam;
        public ISceneNode cube;
        public ITexture texCube;
        public float cubeSize;
        public vector3d camPos, camLookat, cubePos;
        public bool inMenu;
        // constructeur
        public playGUI(){
            cubeSize = 10.0f;

            camPos.X = 0.0f;
            camPos.Y = 0.0f;
            camPos.Z = -20.0f;

            camLookat.X = 0.0f;
            camLookat.Y = 0.0f;
            camLookat.Z = 0.0f;

            cubePos.X = 0.0f;
            cubePos.Y = 0.0f;
            cubePos.Z = 0.0f;

            inMenu = new bool();
        }
        public int initmee(){
            // j'ai l'intention de basculer entre cette scene et le gui avec des touches du clavier...
            // init device
            device = new IrrlichtDevice(DriverType.OPENGL);
            device.ResizeAble = true;
            device.WindowCaption = "Irrlicht gui";
            // device.VideoDriver.SetAmbientLight(new Colorf(0.0f,0.5f,0.0f));

            // init cam
            cam = device.SceneManager.AddCameraSceneNode(null, camPos, camLookat, 1);

            // init cube
            cube = device.SceneManager.AddCubeSceneNode(15.0f, null, 1, new vector3d(0.0f,0.0f,0.0f));
            texCube = device.VideoDriver.GetTexture(@"C:\irrlicht-1.1\media\wall.bmp");
            if (texCube == null){
                MessageBox.Show(@"Erreur: C:\irrlicht-1.1\media\wall.bmp", "Erreur lors du chargement de texture");
                return -1;
            }
            cube.SetMaterialTexture(0, texCube);
            cube.SetMaterialFlag(MaterialFlag.LIGHTING, false);

            GUIenv = device.GUIEnvironment;
            GUIenv = IGUIEnvironment.AddWindow(/*...*/);

            // boucle principale
            while (device.Run()){
                if (device.WindowActive){
                    device.VideoDriver.BeginScene(true, true, new Color(0, 50,50,50));
                    // device.SceneManager.DrawAll();
                    GUIenv.DrawAll();
                    device.VideoDriver.EndScene();
                }
            }

            // ces 2 méthodes générent une exception; "AccessViolationException"  (??)
            // device.VideoDriver.RemoveTexture(texCube);
            // device.CloseDevice();
            return 0;
        }
    }
    public static int Main(){
        playGUI pg = new playGUI();
        pg.initmee();

        return 0;
    }
}


Juste avant de refaire ce code, j'avais cetteligne de code où mes membres sont présentement:
"IGUIEnvironment GUIenv;"
"IGUIElement GUIelem;"

Comment le membre 'IrrlichtDevice.GUIEnvironment' (qui n'est qu'en mode get;) se trouve à être affecté à ma variable GUIenv?

Dois-je utiliser la méthode Irrlicht.gui.IGUIEnvironment.AddWindow() pour faire aparaître le menu ou est-ce bien la ligne: "GUIenv.DrawAll();" qu'il me faut insérer dans la loop principale?

...

Il n'y a pas de tuto pour le gui d'Irrlicht selon mes recherches...

Dernière modification par Esselfe (13-11-2006 05:03:15)


*** Unissons-nous!; Des aliens pourraient venir!!! ***  Irrlicht ressemble à un satellite de technologies! cool

Hors ligne


#1 

13-11-2006 09:10:06

wizad
Abonné
Lieu: Caen
Date d'inscription: 30-09-2006
Messages: 106

D'aprés ton code il semble que tu Utilise la wrapper officiel. Je ne saurais que te conseillé d'utiliser "Irrlicht.NET CP" qui permet d'obtenir une gestion c# de l'interface beacuoup plus clair et plus proche du fonctionnement classique en c#.

Hors ligne


#2 

13-11-2006 20:44:49

Esselfe
Petit nouveau
Date d'inscription: 13-11-2006
Messages: 4
Site web

En effet, Irrlicht.NET CP est plus facile à manipuler bien que je n'ai pas encore bien compris pourquoi on a repris l'assembly Irrlicht.NET... (Pour une portabilité assuré?)

Il se trouve dans IrrNetCP_SDK_0.6 un dossier comportant des examples aidants à initialiser un gui... bon départ smile


Merci

Dernière modification par Esselfe (13-11-2006 20:45:26)


*** Unissons-nous!; Des aliens pourraient venir!!! ***  Irrlicht ressemble à un satellite de technologies! cool

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
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
27 invités en ligne
Aucun membre connecté
RSS Feed