#0 

29-08-2009 16:48:18

oli03
Petit nouveau
Lieu: Montluçon (Allier)
Date d'inscription: 29-08-2009
Messages: 4

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 :

Code:

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


#1 

29-08-2009 17:14:23

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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


#2 

31-08-2009 19:02:39

oli03
Petit nouveau
Lieu: Montluçon (Allier)
Date d'inscription: 29-08-2009
Messages: 4

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 !

Code:

m_IrrSceneManager = device->getSceneManager()

Désormais, il me suffit de faire :

Code:

m_IrrSceneManager = device->getSceneManager()->createNewSceneManager(false);

Olivier

Hors ligne


#3 

31-08-2009 19:19:46

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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


Force et sagesse...

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
16 invités en ligne
Aucun membre connecté
RSS Feed