long post i know, sorry

You discovered a bug in the engine, and you are sure that it is not a problem of your code? Just post it in here. Please read the bug posting guidelines first.
Post Reply
VeneX
Posts: 228
Joined: Sun Nov 30, 2003 3:32 pm
Location: The Netherlands
Contact:

long post i know, sorry

Post by VeneX »

Shadow is still not working in Irrlicht 0.6 why?

Code: Select all

#include <irrlicht.h>

using namespace irr;

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

int main()
{
	IrrlichtDevice *device = createDevice(video::EDT_DIRECTX8, core::dimension2d<s32>(1024, 768), 32, true, true);

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

	scene::IAnimatedMesh* mesh = smgr->getMesh("terrain.ms3d");
	
	smgr->addLightSceneNode(0, core::vector3df(0,600,0), video::SColorf(1000.0f,1000.0f,1000.0f,1000.0f), 1000.0f);
	//nice texture manipulation
	//smgr->getMeshManipulator()->makePlanarTextureMapping(mesh->getMesh(0), 3.5f);
	
	scene::ISceneNode* node = 0;

	node = smgr->addOctTreeSceneNode(mesh);
	node->setScale(core::vector3df(80,45,80));
	node->setPosition(core::vector3df(0,-500,0));
	node->setMaterialTexture(0,	driver->getTexture("grass.jpg"));
	node->getMaterial(0).EmissiveColor.set(0,0,0,0);

	// add animated water

	mesh = smgr->addHillPlaneMesh("myHill",
		core::dimension2d<f32>(512,512),
		core::dimension2d<s32>(40,40), 0, 0,
		core::dimension2d<f32>(0,0),
		core::dimension2d<f32>(10,10));

	node = smgr->addWaterSurfaceSceneNode(mesh->getMesh(0), 3.0f, 300.0f, 30.0f);
	node->setPosition(core::vector3df(0,-480,0));

	node->setMaterialTexture(0,	driver->getTexture("water.jpg"));
	node->setMaterialTexture(1,	driver->getTexture("water2.jpg"));

	node->setMaterialType(video::EMT_REFLECTION_2_LAYER);

	// create light

	node = smgr->addLightSceneNode(0, core::vector3df(0,0,0), 
		video::SColorf(1.0f, 0.6f, 0.7f, 1.0f), 600.0f);
	scene::ISceneNodeAnimator* anim = 0;
	anim = smgr->createFlyCircleAnimator (core::vector3df(0,150,0),250.0f);
	node->addAnimator(anim);
	anim->drop();

	// attach billboard to light

	node = smgr->addBillboardSceneNode(node, core::dimension2d<f32>(50, 50));
	node->setMaterialFlag(video::EMF_LIGHTING, false);
	node->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR);
	node->setMaterialTexture(0, driver->getTexture("particlewhite.bmp"));

	
	// create a particle system

	scene::IParticleSystemSceneNode* ps = 0;
	ps = smgr->addParticleSystemSceneNode(false);
	ps->setPosition(core::vector3df(-70,60,40));
	ps->setScale(core::vector3df(2,2,2));

	ps->setParticleSize(core::dimension2d<f32>(20.0f, 10.0f));

	scene::IParticleEmitter* em = ps->createBoxEmitter(
		core::aabbox3d<f32>(-7,0,-7,7,1,7), 
		core::vector3df(0.0f,0.03f,0.0f),
		80,100, 
		video::SColor(0,255,255,255), video::SColor(0,255,255,255),
		800,2000);

	ps->setEmitter(em);
	em->drop();

	scene::IParticleAffector* paf = ps->createFadeOutParticleAffector();

	ps->addAffector(paf);
	paf->drop();

	ps->setMaterialFlag(video::EMF_LIGHTING, false);
	ps->setMaterialTexture(0, driver->getTexture("particle.bmp"));
	ps->setMaterialType(video::EMT_TRANSPARENT_VERTEX_ALPHA);
	

	// add animated character
	mesh = smgr->getMesh("faerie.md2");
	scene::IAnimatedMeshSceneNode* anode = 0;
	anode = smgr->addAnimatedMeshSceneNode(mesh);
	anode->setPosition(core::vector3df(-50,22,-60));
	anode->setMD2Animation(scene::EMAT_STAND);
	anode->setMaterialTexture(0, driver->getTexture("Faerie5.BMP"));

	//glock
	mesh = smgr->getMesh("glock.ms3d");
	scene::IAnimatedMeshSceneNode* glocknode = 0;
	glocknode = smgr->addAnimatedMeshSceneNode(mesh);
	glocknode->setPosition(core::vector3df(-50,22,-60));
	glocknode->setMaterialTexture(0, driver->getTexture("glock.jpg"));

	//9mm
	mesh = smgr->getMesh("9mm.ms3d");
	scene::IAnimatedMeshSceneNode* mmnode = 0;
	mmnode = smgr->addAnimatedMeshSceneNode(mesh);
	mmnode->setPosition(core::vector3df(-110,50,-60));
	mmnode->setMaterialTexture(0, driver->getTexture("9mm.jpg"));

	//skydome
	mesh = smgr->getMesh("sphere.ms3d");
	scene::IAnimatedMeshSceneNode* snode = 0;
	snode = smgr->addAnimatedMeshSceneNode(mesh);
	snode->setPosition(core::vector3df(0,-500,0));
	snode->setScale(core::vector3df(250,250,250));
	snode->setMaterialTexture(0, driver->getTexture("sky.jpg"));

	//shadows
	anode->addShadowVolumeSceneNode();
	glocknode->addShadowVolumeSceneNode();
	mmnode->addShadowVolumeSceneNode();
	snode->addShadowVolumeSceneNode();
	smgr->setShadowColor(video::SColor(220,0,0,0));

	/*
	Finally we simply have to draw everything, that's all.
	*/

	scene::ICameraSceneNode* camera = smgr->addCameraSceneNodeFPS();
	camera->setPosition(core::vector3df(-50,50,-150));
	camera->setFarValue(15000.0f);


	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"Imperial Guard - "\
				L"(fps:%d) Triangles:%d", fps,
				driver->getPrimitiveCountDrawn());

			device->setWindowCaption(tmp);
			lastFPS = fps;
		}
	}

	device->drop();
	
	return 0;
}
Visit my website @ www.venex.be
Plethora project will be added to the site
AMD AthlonXP 2600+, 512MB DDR, Radeon M10 (mobile 9600) PRO 64MB, WinXP
Post Reply