我已经阅读了很多关于虚拟功能的内容,但我仍然无法让某些东西按照我的意愿工作。
基本上,我有以下课程:
class Body
{
protected:
scene::ISceneNode* Model;
virtual void setModel();
public:
Body( core::vector3df Position, core::vector3df Rotation );
};
Body::Body( core::vector3df Position, core::vector3df Rotation )
{
CurrentThrust = 0;
setModel();
Model->setPosition( Position );
Model->setRotation( Rotation );
}
void Body::setModel()
{
Model = Engine::Instance->GetSceneManager()->addCubeSceneNode();
Model->setMaterialFlag( video::EMF_LIGHTING, false );
}
我正在创建继承 Body 的新类,想法是我在这些类中覆盖“setModel()”,并且构造函数将加载我的新模型,而不是默认模型;像下面
class Craft : public Body
{
protected:
virtual void setModel();
public:
Craft( core::vector3df Position, core::vector3df Rotation );
};
Craft::Craft( core::vector3df Position, core::vector3df Rotation ) : Body(Position, Rotation)
{
// Other stuff
}
void Craft::setModel()
{
Model = Engine::Instance->GetSceneManager()->addAnimatedMeshSceneNode( Engine::Instance->GetSceneManager()->getMesh("resource/X-17 Viper flying.obj") ); // addCubeSceneNode();
Model->setMaterialFlag( video::EMF_LIGHTING, false );
Model->setScale( core::vector3df(0.1f) );
}
但是,当我创建 Craft 的新实例时,它总是会创建一个 Cube 模型而不是我的 Viper 模式。
是否有可能让虚拟功能像我想的那样工作?还是我只需要更改构造函数以在各自的类中创建模型?
谢谢