#1 

29-08-2009 14:48:18

oli03
Membres
Date d'inscription:
Messages: 4
IP: 93.0.83.95
Courriel

Bonjour à tous les Irrlichtiens,

Je découvre Irrlicht depuis environ un mois.

Une fois la création du device effectuée, on peut accéder au gestionnaire de scène :

m_IrrSceneManager = device->getSceneManager();

J'ai commencé la création d'un gamestate : un gamestate pour l'intro, un pour le menu, un pour le jeu.
Lorsque l'on joue (gamestate "jeu"), on peut retourner au menu (gamestate "menu"), comme dans tous les jeux !

J'aimerais avoir une scene 3D rien que pour le menu, évidemment sans décharger en mémoire la scène du jeu. Actuellement, j'utilise le même SceneManager donc les objets du gamestate "menu" sont ajoutés au objets du gamestate "jeu".

Voici donc ma question : Est-il possible de créer plusieurs SceneManager (chacun avec différents objets) et de les "assigner" quand on en a besoin au device.

Merci d'avance pour vos réponse,
Olivier


Hors ligne


#2 

29-08-2009 15:14:23

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.213.162.54
Courriel

A priori, il est tout a fait possible de créer plusieurs scenemanagers. Il existe une instruction d'ailleur: createNewSceneManager
Je t'avouerais que je n'ai jamais testé wink

On pourrait voir une architecture de la sorte s'écrire comme cela:

Code c++ :


// Create the two scene managers
irr::scene::ISceneManager* smgr = engine->getSceneManager() ;
irr::scene::ISceneManager* smgr2 = smgr->createNewSceneManager(/*false*/) ;

// Add camera to them (they are both on (0, 0, 0) and they look to the same point)
smgr-> ...
smgr2-> ...

// Then add some stuff
smgr->addCubeSceneNode(...) ;
smgr2->addCubeSceneNode(...) ;

// Game loop
while(engine->run())
{
[...]
     //draw smgr2 under smgr
    smgr2->drawAll() ;
    smgr->drawAll() ;
[...] 
} 


Force et sagesse...

Hors ligne


#3 

31-08-2009 17:02:39

oli03
Membres
Date d'inscription:
Messages: 4
IP: 79.83.26.11
Courriel

Merci pour la réponse (rapide qui plus est). smile

J'ai maintenant dans chaque gamestate "un SceneManager" indépendant. Chacun peut contenir des nodes différents :

Dans chaque game state, je récupérais l'instance avec ceci, mais tous les nodes étaient mélangés !

m_IrrSceneManager = device->getSceneManager()

Désormais, il me suffit de faire :
m_IrrSceneManager = device->getSceneManager()->createNewSceneManager(false);

Olivier


Hors ligne


#4 

31-08-2009 17:19:46

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.218.190.71
Courriel

Tu sembles donc avoir trouvé tes réponses, c'est cool wink


Force et sagesse...

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
566 invités en ligne
membre en ligne: -
RSS Feed