#1 

13-11-2006 03:17:28

Esselfe
Membres
Date d'inscription:
Messages: 4
IP: 64.229.100.188
Courriel  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...


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

Hors ligne


#2 

13-11-2006 08:10:06

wizad
Membres
Avatar de wizad
Date d'inscription:
Messages: 106
IP: 82.229.59.8
Courriel

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


#3 

13-11-2006 19:44:49

Esselfe
Membres
Date d'inscription:
Messages: 4
IP: 69.156.174.86
Courriel  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


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

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
172 invités en ligne
membre en ligne: -
RSS Feed