All pastes #413297 Raw Edit

Unnamed

public cpp v1 · immutable
#413297 ·published 2007-03-28 09:24 UTC
rendered paste body
#include <irrlicht.h>#include <iostream>using namespace irr;using namespace core;using namespace scene;using namespace video;int main(){		video::E_DRIVER_TYPE Driver_Type = video::EDT_OPENGL;		IrrlichtDevice *device = createDevice(Driver_Type, core::dimension2d<s32>(1024, 768));		if (device==0)		return 1;			video::IVideoDriver* driver = device->getVideoDriver();	scene::ISceneManager* smgr = device->getSceneManager();	 	device->getFileSystem()->addZipFileArchive("Data/map-20kdm2.pk3");		//smgr->loadScene("Data/test.irr"); 	/**	scene:: IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");	scene:: ISceneNode* node = 0;	if (mesh)			node = smgr->addOctTreeSceneNode(mesh->getMesh(0));	if (node)    	node->setPosition(core::vector3df(1300,-144,-1249));*/	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();	camera->setPosition(core::vector3df(-53,119,-472));	scene::ISceneNodeAnimator* anim = smgr->createCollisionResponseAnimator(	selector, camera, core::vector3df(30,20,30),core::vector3df(0,-3,0),core::vector3df(0,50,0));//	camera->addAnimator(anim);	anim->drop();    	device->getCursorControl()->setVisible(false);	mesh = smgr->getMesh("Data/sydney.md2");	node = smgr->addAnimatedMeshSceneNode(mesh);		if (node)	{		node->setMaterialFlag(EMF_LIGHTING, false);		((IAnimatedMeshSceneNode*)node)->setFrameLoop(0, 310);		node->setMaterialTexture( 0, driver->getTexture("Data/sydney.bmp") );	}	int lastFPS = -1;	while(device->run())	{	  	driver->beginScene(true, true, video::SColor(0,200,200,200));	  	smgr->drawAll();	  	driver->endScene();		  	int fps = driver->getFPS();				core::vector3df Temp_vector = camera->getAbsolutePosition();	   	core::vector3df Last_vector = camera->getAbsolutePosition();				Temp_vector = camera->getAbsolutePosition();	 			if ((lastFPS != fps) || (Temp_vector.X != Last_vector.X || Temp_vector.Y != Last_vector.Y || Temp_vector.Z != Last_vector.Z))	 	{									core::stringw str = L"Irrlicht Engine [";	    	str += driver->getName();	    	str += "] Frames:";	    	str += fps;	    	str += "   FPS Cam Pos. = \"";	   	    str += int(Temp_vector.X);			str += ", ";			str += int(Temp_vector.Y);			str += ", ";			str += int(Temp_vector.Z);			str += "\"";	   	    	   	    Last_vector.X = Temp_vector.X;			Last_vector.Y = Temp_vector.Y;			Last_vector.Z = Temp_vector.Z;						device->setWindowCaption(str.c_str());	  	    lastFPS = fps;	  	}				scene::IBillboardSceneNode * bill = smgr->addBillboardSceneNode();		bill->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR );		bill->setMaterialTexture(0, driver->getTexture("Data/particle.bmp"));         		bill->setMaterialFlag(video::EMF_LIGHTING, false);		bill->setSize(core::dimension2d<f32>(20.0f, 20.0f));		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;		if (smgr->getSceneCollisionManager()->getCollisionPoint(line, selector, intersection, tri))		{			video::SMaterial material;						bill->setPosition(intersection);			driver->setTransform(video::ETS_WORLD, core::matrix4());			driver->setMaterial(material);			driver->draw3DTriangle(tri, video::SColor(0,255,0,0));		}		}}//	//getTriangles(core::triangle3df* triangles, s32 arraySize,//		s32& outTriangleCount, const core::line3d<f32>& line, //		const core::matrix4* transform=0)