#1
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
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
Force et sagesse...
29-08-2009 15:14:23
- tmyke
- Administrateurs

- 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é ![]()
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
Désormais, il me suffit de faire :
Olivier
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). ![]()
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
Force et sagesse...
31-08-2009 17:19:46
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.218.190.71
- Courriel
Tu sembles donc avoir trouvé tes réponses, c'est cool ![]()
Force et sagesse...
Hors ligne



