But motion isn't fluent. So i want soft motion of that object just like with
createFlyCircleAnimator function. How to do that?
Thanks a lot
Code: Select all
#include <irrlicht.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#pragma comment(lib, "Irrlicht.lib")
ICameraSceneNode* camera = 0;
IrrlichtDevice *device;
ISceneNode* node = 0;
ISceneNode* node_light = 0;
IVideoDriver* driver;
ISceneManager* smgr;
ISceneNodeAnimator* anim = 0;
core::vector3df v;
core::vector3df r;
class MyEventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
switch(event.KeyInput.Key)
{
case KEY_KEY_W:
case KEY_KEY_S:
{
v = node->getRotation();
v.Z += event.KeyInput.Key == KEY_KEY_W ? 2.0f : -2.0f;
node->setRotation(v);
} return true;
case KEY_ESCAPE:
if (event.KeyInput.PressedDown) {
device->closeDevice();
return true;
} return true;
}
return true;
}
};
int main()
{
MyEventReceiver receiver;
device = createDevice(video::DT_DIRECTX8,
core::dimension2d<s32>(800, 600),16, false, true, &receiver);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
IAnimatedMesh* mesh = smgr->getMesh("scenes/brana.3ds");
//node = smgr->addAnimatedMeshSceneNode(mesh);
//anim = smgr->createFlyCircleAnimator (core::vector3df(0,0,0),-20.0f);
//node->addAnimator(anim);
//anim->drop();
v = node->getPosition();
r = node->getRotation();
v.Z=1;
v.Y=0;
v.X=0;
r.X=90;
node->setRotation(r);
node->setPosition(v);
node_light = smgr->addLightSceneNode(0, core::vector3df(0,0,0),
video::SColorf(1.0f, 1.0f, 1.0f, 1.0f), 600.0f);
node_light = smgr->addLightSceneNode(0, core::vector3df(0,100,-100),
video::SColorf(1.0f, 1.0f, 1.0f, 1.0f), 600.0f);
smgr->addCameraSceneNode(0, vector3df(0,0,-60), vector3df(0,0,0));
int lastFPS = -1;
while(device->run())
{
driver->beginScene(true, true, 0);
smgr->drawAll();
driver->endScene();
int fps = driver->getFPS();
if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"SpecialFX example - Irrlicht Engine"\
L"(fps:%d) Triangles:%d", fps,
driver->getPrimitiveCountDrawn());
device->setWindowCaption(tmp);
lastFPS = fps;
}
}
device->drop();
return 0;
}