#0 

09-06-2011 17:10:29

luxsypher
Petit nouveau
Date d'inscription: 09-06-2011
Messages: 4

Bonjour je decouvre depuis peu irrlicht et j'ai quelques problemes pour attribuer des particules ayant pour emiteur un "IAnimatedMeshSceneNode"

Voici mon code actuel :

Code:

 irr::scene::IAnimatedMesh *modele = smgr->getMesh("./media/ninja.b3d");
  irr::scene::IAnimatedMeshSceneNode* ninja = 0;
  ninja = smgr->addAnimatedMeshSceneNode(modele, 0, IDFlag_IsPickable | IDFlag_IsHighlightable);
  ninja->setMaterialFlag(irr::video::EMF_LIGHTING, true);


irr::scene::IParticleSystemSceneNode* particleSystem =
    smgr->addParticleSystemSceneNode(false);

  irr::scene::IParticleAnimatedMeshSceneNodeEmitter* emitter =
    particleSystem->createAnimatedMeshSceneNodeEmitter(ninja,
                                                       irr::core::vector3df(0.0f,0.05f,0.0f),                                                                                    
                                                       80,
                                                       100,                                                                                                    
                                                       irr::video::SColor(0,255,255,255),                                                                                     
                                                       irr::video::SColor(0,255,255,255),                                                                                   
                                                       600, 1200,                                                                                                           
                                                       0,                                                                                                         
                                                       irr::core::dimension2df(8.0f,8.0f),                                                                                                    
                                                       irr::core::dimension2df(14.0f,14.0f));                                                                                        
  particleSystem->setEmitter(emitter);
  emitter->drop();

  particleSystem->setMaterialFlag(irr::video::EMF_LIGHTING, false);
  particleSystem->setMaterialFlag(irr::video::EMF_ZWRITE_ENABLE, false);
  particleSystem->setMaterialTexture(0, driver->getTexture("media/fire.bmp"));
  particleSystem->setMaterialType(irr::video::EMT_TRANSPARENT_VERTEX_ALPHA);

Les problemes surviennent :

error: no matching function for call to ‘irr::scene::IParticleSystemSceneNode::createAnimatedMeshSceneNodeEmitter(irr::scene::IAnimatedMeshSceneNode*&, irr::core::vector3df, int, int, irr::video::SColor, irr::video::SColor, int, int, int, irr::core::dimension2df, irr::core::dimension2df)’
./include/irr/IParticleSystemSceneNode.h:141: note: candidates are: virtual irr::scene::IParticleAnimatedMeshSceneNodeEmitter* irr::scene::IParticleSystemSceneNode::createAnimatedMeshSceneNodeEmitter(irr::scene::IAnimatedMeshSceneNode*, bool, const irr::core::vector3df&, irr::f32, irr::s32, bool, irr::u32, irr::u32, const irr::video::SColor&, const irr::video::SColor&, irr::u32, irr::u32, irr::s32, const irr::core::dimension2df&, const irr::core::dimension2df&)


Meme en remplacant le pointeur du ninja par "&*ninja" (oui c'est moche) rien a faire ca passe pas

Si qqun aurai la solution  ?

merci

Hors ligne


#1 

09-06-2011 17:46:16

Hawk
Membre
Lieu: Wissous
Date d'inscription: 08-11-2008
Messages: 91
Site web

Salut,

Regarde bien le deuxième argument de ta méthode.
virtual irr::scene::IParticleAnimatedMeshSceneNodeEmitter* irr::scene::IParticleSystemSceneNode::createAnimatedMeshSceneNodeEmitter(irr::scene::IAnimatedMeshSceneNode*, bool, const irr::core::vector3df&, irr::f32, irr::s32, bool, irr::u32, irr::u32, const irr::video::SColor&, const irr::video::SColor&, irr::u32, irr::u32, irr::s32, const irr::core::dimension2df&, const irr::core::dimension2df&)

Il manque un bool dans ton code !

Bonne journée.

Hors ligne


#2 

10-06-2011 14:45:58

luxsypher
Petit nouveau
Date d'inscription: 09-06-2011
Messages: 4

Nop ce n'est pas le probleme (le bool est initialise a true par default dans l'appel de cette fonction )

Prototype :

Code:

createAnimatedMeshSceneNodeEmitter (
scene::IAnimatedMeshSceneNode *node, 
bool useNormalDirection=true, 
const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), 
f32 normalDirectionModifier=100.0f,
 s32 mbNumber=-1, 
bool everyMeshVertex=false,
 u32 minParticlesPerSecond=5, 
u32 maxParticlesPerSecond=10, 
const video::SColor &minStartColor=video::SColor(255, 0, 0, 0),
 const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), 
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, 
s32 maxAngleDegrees=0,
 const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), 
const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0);

     Creates a particle emitter for an animated mesh scene node.

Hors ligne


#3 

10-06-2011 14:58:50

Hawk
Membre
Lieu: Wissous
Date d'inscription: 08-11-2008
Messages: 91
Site web

Ce n'est pas une raison.
Cette valeur est utilisée uniquement si aucun autre argument après celui-ci n'est valué.
Dans le prototype de ta méthode, tu as 15 arguments. Quand tu l'appelles dans ton code, tu lui en donne 11. Donc le compilateur va supposer que tu lui donne les 11 premiers arguments. Pour le 1er, ça se passe bien, on demande un IAnimatedMeshSceneNode *, et c'est ce que tu lui donne. Mais le deuxième argument, on attend un bool, et toi, tu lui envoies un vector3df, du coup, il est pas content.

Alors tu vas me dire "oui, il pourrait comprendre que c'est le troisième argument que j'envoie, vu que c'est le même type que le troisième argument. Mais comment tu fais si il y a deux arguments de même types qui se suivent, et que tu en envoies qu'un seul des deux ?

Bref, essaie en rajoutant un bool dans ton appel (true par exemple), il y a de bonnes chances pour que ça marche !

Bonne jourée.

Hors ligne


#4 

10-06-2011 15:11:10

luxsypher
Petit nouveau
Date d'inscription: 09-06-2011
Messages: 4

Effecectivement il manquai qq parametre :p Merci

code final pour les interesse :

Code:

irr::scene::IParticleAnimatedMeshSceneNodeEmitter* emitter =
    particleSystem->createAnimatedMeshSceneNodeEmitter(ninja,                                                                                    
                                                       true,
                                                       irr::core::vector3df(0.0f,0.05f,0.0f),                   
                                                       100.0f,
                                                       -1,
                                                       false,
                                                       80,
                                                       100,                                               
                                                       irr::video::SColor(0,255,255,255),                   
                                                       irr::video::SColor(0,255,255,255),                   
                                                       600, 1200,                                                       
                                                       0,                                                 
                                                       irr::core::dimension2df(8.0f,8.0f),                            
                                                       irr::core::dimension2df(14.0f,14.0f));

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
Analysé par
872 membres
1423 sujets
11109 messages
Dernier membre inscrit: Glider
3 invités en ligne
Aucun membre connecté
RSS Feed

[ Générée en 0.376 sec., 15 requêtes exécutées ]