Auf jeden Fall schonmal nen' dicken Dank!
Aber es kommen noch ein paar Fehler beim Kompilieren die ich irgendwie nicht zuordnen kann.
Code:
76|error: no matching function for call to `CIrrOdeSceneNode::nodeNameToC8(const wchar_t[255], irr::scene::IAnimatedMeshSceneNode*&)'|
note: candidates are: static const irr::c8* CIrrOdeSceneNode::nodeNameToC8(const wchar_t*)|
81|error: invalid conversion from `irr::scene::ISceneNode*' to `CIrrOdeBody*'|
83|error: no matching function for call to `CIrrOdeSceneNode::nodeNameToC8(const wchar_t[255], irr::scene::IAnimatedMeshSceneNode*&)'|
note: candidates are: static const irr::c8* CIrrOdeSceneNode::nodeNameToC8(const wchar_t*)|
Wenn ich jeweils das "BahnenNode" und "BallNode" hinten rausnehme (Was ja da anscheinend nicht hingehört) krieg ich allerdings diese Fehler:
Code:
76|error: invalid conversion from `irr::scene::ISceneNode*' to `CIrrOdeGeomTrimesh*'|
81|error: invalid conversion from `irr::scene::ISceneNode*' to `CIrrOdeBody*'|
83|error: cannot convert `const irr::c8*' to `CIrrOdeGeomSphere*' in initialization|
Sorry, ich komme leider von alleine echt nicht drauf. Ich wette das ist wieder irgendwas total simples...
Ich hab die Zeilen die die Fehler verursachen mal mit Kommentaren markiert.
Code:
//Bahnen ----------------------------------------------------
BahnenMesh = sceneMgr->getMesh("gfx/Bahn.3ds");
BahnenNode = sceneMgr->addAnimatedMeshSceneNode(BahnenMesh);
BahnenNode->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, true);
BahnenNode->setMaterialFlag(EMF_LIGHTING, false);
BahnenNode->setMaterialFlag(EMF_GOURAUD_SHADING, true);
BahnenNode->setMaterialFlag(EMF_ANISOTROPIC_FILTER, false);
BahnenNode->setMaterialFlag(EMF_TRILINEAR_FILTER, false);
BahnenNode->addShadowVolumeSceneNode();
BahnenNode = sceneMgr->addAnimatedMeshSceneNode(BahnenMesh,irrOdeWorldNode);
CIrrOdeGeomTrimesh *BahnenTrimesh=sceneMgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_TRIMESH_NAME, BahnenNode)); // Im Code Zeile 76
//Ball--------------------------------------------------------
BallMesh = sceneMgr->getMesh("gfx/Ball.3ds");
CIrrOdeBody *irrOdeBallBody=sceneMgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_BODY_NAME),irrOdeWorldNode); // Im Code Zeile 81
BallNode = sceneMgr->addAnimatedMeshSceneNode(BallMesh,irrOdeBallBody);
CIrrOdeGeomSphere *ballGeom=(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_SPHERE_NAME, BallNode)); // Im Code Zeile 83
BallNode->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, true);
BahnenNode->setMaterialFlag(EMF_GOURAUD_SHADING, true);
BallNode->setMaterialFlag(EMF_LIGHTING, true);
Sorry nochmal, hoffe du kannst mir nochmal helfen...
UPDATE:
Ich hab mir das so nochmal zusammengebastelt.
Code:
//Bahnen ----------------------------------------------------
BahnenMesh = sceneMgr->getMesh("gfx/Bahn.3ds");
BahnenNode = sceneMgr->addAnimatedMeshSceneNode(BahnenMesh);
BahnenNode->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, true);
BahnenNode->setMaterialFlag(EMF_LIGHTING, false);
BahnenNode->setMaterialFlag(EMF_GOURAUD_SHADING, true);
BahnenNode->setMaterialFlag(EMF_ANISOTROPIC_FILTER, false);
BahnenNode->setMaterialFlag(EMF_TRILINEAR_FILTER, false);
BahnenNode->addShadowVolumeSceneNode();
BahnenNode = sceneMgr->addAnimatedMeshSceneNode(BahnenMesh,irrOdeWorldNode);
ISceneNode *BahnenTrimesh=sceneMgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_TRIMESH_NAME),BahnenNode);
//Ball--------------------------------------------------------
BallMesh = sceneMgr->getMesh("gfx/Ball.3ds");
ISceneNode *irrOdeBallBody=sceneMgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_BODY_NAME),irrOdeWorldNode);
BallNode = sceneMgr->addAnimatedMeshSceneNode(BallMesh,irrOdeBallBody);
ISceneNode *ballGeom=sceneMgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_SPHERE_NAME), BallNode);
BallNode->setPosition(core::vector3df(100,3,-36));
ballGeom->setPosition(core::vector3df(100,3,-36));
irrOdeBallBody->setPosition(core::vector3df(100,3,-36));
BallNode->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, true);
BahnenNode->setMaterialFlag(EMF_GOURAUD_SHADING, true);
BallNode->setMaterialFlag(EMF_LIGHTING, true);
BallNode->addShadowVolumeSceneNode();
Kompiliert auch Einwandfrei.
Nur ist der Ball weg wenn ich das ganze Starte
Wenn ich dann in der Hauptschleife das "CIrrOdeManager::getSharedInstance()->step();" rausnehme ist sie da. Kanns sein dass die Kugel jetzt einfach hindurch fällt? Und wie setzte ich die ganzen Physikalischen Merkmale. Denn in den Examples wird der "ballGeom" so erstellt:
Code:
CIrrOdeGeom *pGeom=reinterpret_cast<CIrrOdeGeom *>(pDummy);
pGeom->setMassTotal(scale.getLength()/64);
Und da ich "ballGeom" ja als Pointer zu einem ISceneNode habe (Währe das in C++ Fachchinesisch so richtig? xD) kann ich da natürlich nicht setMassTotal drauf anwenden.
Bin da glaub ich echt aufm Holzweg...