#1 

13-11-2006 03:17:28

Esselfe
Membres
Date d'inscription:
Messages: 4
IP: 64.229.100.188
Courriel  Site web

Salutsmile

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épartsmile


Merci


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

Hors ligne


OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
46 invités en ligne
membre en ligne: -
RSS Feed