run slow!

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
Powerplayer

run slow!

Post by Powerplayer »

Hi (sorry for my english im german)

When i look forward i can run far when i look at the floor i can run slow.

her my code:

Code: Select all

#include <irrlicht.h>
#include <iostream>
using namespace irr;

#pragma comment(lib, "Irrlicht.lib")

int main()
{
	video::E_DRIVER_TYPE driverType = video::EDT_DIRECTX9;
	printf("Bitte wähle einen Treiber aus der Liste aus:\n"\
		" (a) Direct3D 9.0c\n (b) Direct3D 8.1\n (c) OpenGL 1.2\n"\
		" (d) Software Renderer\n (e) NullDevice\n (andereTaste) exit\n\n");

	char i;
	std::cin >> i;

	switch(i)
	{
	case 'a': driverType = video::EDT_DIRECTX9;	break;
	case 'b': driverType = video::EDT_DIRECTX8;	break;
	case 'c': driverType = video::EDT_OPENGL;	break;
	case 'd': driverType = video::EDT_SOFTWARE;	break;
	case 'e': driverType = video::EDT_NULL;		break;
	default: return 1;
	}

	IrrlichtDevice *device =
		createDevice(driverType, core::dimension2d<s32>(1024, 768), 16, false);

	if (device == 0)
		return 1;

	video::IVideoDriver* driver = device->getVideoDriver();
	scene::ISceneManager* smgr = device->getSceneManager();

	device->getFileSystem()->addZipFileArchive("../Maps/map-20kdm2.pk3");

	scene::IAnimatedMesh* q3levelmesh = smgr->getMesh("20kdm2.bsp");
	scene::ISceneNode* q3node = 0;

	if (q3levelmesh)
		q3node = smgr->addOctTreeSceneNode(q3levelmesh->getMesh(0));

	scene::ITriangleSelector* selector = 0;

	if (q3node)
	{
		q3node->setPosition(core::vector3df(-1370,-130,-1400));

		selector = smgr->createOctTreeTriangleSelector(q3levelmesh->getMesh(0), q3node, 128);
		q3node->setTriangleSelector(selector);
		selector->drop();
	}

	scene::ICameraSceneNode* camera = 
	smgr->addCameraSceneNodeFPS(0,100.0f,300.0f);
	camera->setPosition(core::vector3df(-100,50,-150));

	//start
	scene::IAnimatedMesh* weaponMesh = smgr->getMesh("../Models/pistol/pdpistol.3DS");  //your mesh is loaded here
	scene::IAnimatedMeshSceneNode* weaponNode = smgr->addAnimatedMeshSceneNode( weaponMesh, camera, -1 );  //this is the important line where you make "gun" child of the camera so it moves when the camera moves

	weaponNode->setAnimationSpeed(20); 

	//Tweak all these values, they're different for each model:
	weaponNode->setScale(core::vector3df(40,40,30));
	weaponNode->setPosition(core::vector3df(15,-10,30));
	weaponNode->setRotation(core::vector3df(0,-10,0));
	//end
	
	scene::ISceneNodeAnimator* anim = smgr->createCollisionResponseAnimator(
		selector, camera, core::vector3df(30,50,30),
		core::vector3df(0,-3,0), 
		core::vector3df(0,50,0));
	camera->addAnimator(anim);
	anim->drop();

	device->getCursorControl()->setVisible(false);

	scene::ISceneNode* selectedSceneNode = 0;
	scene::ISceneNode* lastSelectedSceneNode = 0;

	int lastFPS = -1;

	while(device->run())
	if (device->isWindowActive())
	{
		driver->beginScene(true, true, 0);

		smgr->drawAll();

		core::line3d<f32> line;
		line.start = camera->getPosition();
		line.end = line.start + (camera->getTarget() - line.start).normalize() * 1000.0f;

		core::vector3df intersection;
		core::triangle3df tri;

		selectedSceneNode = smgr->getSceneCollisionManager()->getSceneNodeFromCameraBB(camera);

		if (lastSelectedSceneNode)
			lastSelectedSceneNode->setMaterialFlag(video::EMF_LIGHTING, true);

		if (selectedSceneNode)
			selectedSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);

		lastSelectedSceneNode = selectedSceneNode;

		driver->endScene();

		int fps = driver->getFPS();

		if (lastFPS != fps)
		{
		  core::stringw str = L"Tactic Shooter - Irrlicht Engine [";
		  str += driver->getName();
		  str += "] FPS:";
		  str += fps;

		  device->setWindowCaption(str.c_str());
		  lastFPS = fps;
		}
	}

	device->drop();
	
	return 0;
}
plz help me

greez
mepeisen
Posts: 2
Joined: Fri May 27, 2005 5:17 pm

Post by mepeisen »

ok, ein Versuch einer Übersetzung: Wenn du nach vorne schaust, kannst du weit laufen (meinst du schnell?) und wenn du zum Boden schaust, kannst du nur langsam laufen?
Powerplayer

Post by Powerplayer »

Ja genau wenn ich nach vorne gucke schnell und wenn ich nach oben oder unten gucke langsam.
Acki
Posts: 3496
Joined: Tue Jun 29, 2004 12:04 am
Location: Nobody's Place (Venlo NL)
Contact:

Post by Acki »

Yes this is normal (for Irrlicht) !!!
Because FPS is in Irrlicht not really FirstPersonShooter, but more a FlyingPersonShooter...
Otherwise you can't move up and down, when no gravity is activated...

------------------------------------------------------------------------------------
Ja, das ist normal (für Irrlicht) !!!
Eigentlich ist FPS kein FirstPersonShooter, sondern FlyingPersonShooter...
Andernfalls kann man sich nicht hoch und runter bewegen, wenn es keine Gravitation gibt...


CU, Acki
while(!asleep) sheep++;
IrrExtensions:Image
http://abusoft.g0dsoft.com
try Stendhal a MORPG written in Java
Powerplayer

Post by Powerplayer »

danke
Post Reply