Historique des modifications - Message

Message #7242

Sujet: Problème d'héritage de ISceneNode


Type Date Auteur Contenu
Création du message 23-10-2009 15:58:27 Fol
Merci pour la rapidité de la réponse. Je ne connaissais pas la signification du "I" devant le nom de la classe, pour moi ca voulait juste dire "Irrlicht".

Effectivement, c'est tout bête. Pourtant cela m'étonne. Avant de créer cette classe, j'instanciais un objet de type ISceneNode dans mon main et ca fonctionnait parfaitement :

Code c++ :

scene::ISceneNode * node = smgr->addSphereSceneNode(30.f);

Je ne l'ai pas inventé, c'est du code récupéré des tutos officiels (si c'est bien le terme). Donc à priori faire une classe héritant d'une classe instanciable ne me posait pas de soucis.

Je viens d'essayer de définir les méthodes render() et getBoundingBox() dans MySceneNode. J'y suis allé comme une brute en copiant le code des méthodes du même nom des fichiers source "CSphereSceneNode.cpp" ou "CMeshSceneNode". Résultat, ca plante toujours à la compilation quel que soit le code copié, mais l'erreur s'est déplacée...
main.cpp:142: erreur: cannot allocate an object of abstract type «MySceneNode»
MonVolume.h:10: note:   because the following virtual functions are pure within «MySceneNode»:
MonVolume.h:25: note:   virtual void MySceneNode::render()
MonVolume.h:28: note:   virtual const irr::core::aabbox3d<float>& MySceneNode::getBoundingBox() const

MySceneNode.h

Code c++ :

void render();
const core::aabbox3d<f32>& getBoundingBox() const;

MySceneNode.cpp

Code c++ :

void MySceneNode::render()
{
	video::IVideoDriver* driver = SceneManager->getVideoDriver();

	if (Mesh && driver)
	{
		driver->setMaterial(Mesh->getMeshBuffer(0)->getMaterial());
		driver->setTransform(video::ETS_WORLD, AbsoluteTransformation);
		driver->drawMeshBuffer(Mesh->getMeshBuffer(0));
		if ( DebugDataVisible & scene::EDS_BBOX )
		{
			video::SMaterial m;
			m.Lighting = false;
			driver->setMaterial(m);
			driver->draw3DBox(Mesh->getMeshBuffer(0)->getBoundingBox(), video::SColor(255,255,255,255));
		}
	}
}

const core::aabbox3d<f32>& MySceneNode::getBoundingBox() const
{
	return Mesh ? Mesh->getBoundingBox() : Box;
}

Au cas ou j'ai essayé avec ou sans "virtual" devant ces méthodes dans le *.cpp (on ne sait jamais...).

Je suis sûr que c'est encore une erreur à la c**. Je suis désolé de demander et d'abuser de votre l'aide ^^"

Retour

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