Himself Indago dalībnieks
Joined: 13 Apr 2004 Posts: 87 Location: Rīga
|
Posted: Tue Jan 31, 2006 10:57 pm Post subject: Nesaprašanās ar irrlichta EventReciever |
|
Buros cauri tutoriālim - vienīgajam, ko spēju atrast, kas rādītu, kā taustiņu stāvokli nolasīt.
Problēma šāda - minimāli pamainot funckionalitāti attēlojamam modelim, nestrādā EventReceiver. Vienīgās izmaiņas defaultajā tutoriālī Nr4 ir neimspeisu pievienošana un 3 koda rindiņu pievienošana aiz #ifdef.
Code: |
#include <stdio.h>
#include <wchar.h>
#include <irrlicht.h>
#include <windows.h>
using namespace irr;
#pragma comment(lib, "Irrlicht.lib")
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#define nestraadaa
scene::ISceneNode* node = 0;
IrrlichtDevice* device = 0;
class MyEventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
if (node != 0 && event.EventType == irr::EET_KEY_INPUT_EVENT &&
!event.KeyInput.PressedDown)
{
switch(event.KeyInput.Key)
{
case KEY_ESCAPE:
exit(0);
break;
case KEY_KEY_W:
case KEY_KEY_S:
{
core::vector3df v = node->getPosition();
v.Y += event.KeyInput.Key == KEY_KEY_W ? 2.0f : -2.0f;
node->setPosition(v);
}
return true;
}
}
return false;
}
};
int main()
{
MyEventReceiver receiver;
device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(640, 480),
16, false, false, false, &receiver);
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
#ifdef nestraadaa
IAnimatedMesh* roka = smgr->getMesh( "D:/Program Files/ani/roka.3ds" );
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( roka );
roka->drop();
#endif
#ifndef nestraadaa
node = smgr->addTestSceneNode();
node->setPosition(core::vector3df(0,0,30));
node->setMaterialTexture(0, driver->getTexture("../../media/wall.bmp"));
scene::ISceneNode* n = smgr->addTestSceneNode();
n->setMaterialTexture(0, driver->getTexture("../../media/t351sml.jpg"));
scene::ISceneNodeAnimator* anim =
smgr->createFlyCircleAnimator(core::vector3df(0,0,30), 20.0f);
n->addAnimator(anim);
anim->drop();
scene::IAnimatedMeshSceneNode* anms = smgr->addAnimatedMeshSceneNode(
smgr->getMesh("../../media/sydney.md2"));
if (n)
{
anim = smgr->createFlyStraightAnimator(core::vector3df(100,0,60),
core::vector3df(-100,0,60), 10000, true);
anms->addAnimator(anim);
anim->drop();
anms->setMaterialFlag(video::EMF_LIGHTING, false);
anms->setFrameLoop(320, 360);
anms->setAnimationSpeed(30);
anms->setRotation(core::vector3df(0,180.0f,0));
anms->setMaterialTexture(0, driver->getTexture("../../media/sydney.BMP"));
}
#endif
smgr->addCameraSceneNodeFPS(0, 100.0f, 100.0f);
device->getCursorControl()->setVisible(false);
int lastFPS = -1;
while(device->run())
{
driver->beginScene(true, true, video::SColor(255,90,90,156));
smgr->drawAll();
driver->endScene();
int fps = driver->getFPS();
if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"Movement Example - Irrlicht Engine (%s)(fps:%d)",
driver->getName(), fps);
device->setWindowCaption(tmp);
lastFPS = fps;
}
}
device->drop();
return 0;
}
|
Kompilējot ar #define nestraada eventu nolasīšana nestrādā, bez - strādā. Vai kādam ir kādas idejas, ko daru nepareizi ? (iespējas nokompilēt jūsugalā, laikam, niecīgas ) _________________ Paldies |
|