Bonjour je decouvre depuis peu irrlicht et j'ai quelques problemes pour attribuer des particules ayant pour emiteur un "IAnimatedMeshSceneNode"
Voici mon code actuel :
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
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
Nop ce n'est pas le probleme (le bool est initialise a true par default dans l'appel de cette fonction )
Prototype :
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
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
Effecectivement il manquai qq parametre :p Merci
code final pour les interesse :
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 |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 12 invités en ligne Aucun membre connecté RSS Feed |