Code: Select all
video::ITexture *get2DIcon(IrrlichtDevice *Device, scene::ISceneNode *Node)
{
video::ITexture* tex = Device->getVideoDriver()->addRenderTargetTexture(core::dimension2d<u32>(128,128), "RTT1");
scene::ICameraSceneNode *aCam = Device->getSceneManager()->getActiveCamera();
scene::ICameraSceneNode *bCam = Device->getSceneManager()->addCameraSceneNode();
bCam->setPosition(Node->getAbsolutePosition()+core::vector3df(0,20,0));
bCam->setTarget(Node->getAbsolutePosition());
bCam->updateAbsolutePosition();
bool visible = Node->isVisible();
bool lighted = Node->getMaterial(0).Lighting;
Device->getVideoDriver()->setRenderTarget(tex, true, true, video::SColor(0,0,0,0));
Device->getSceneManager()->setActiveCamera(bCam);
Node->setVisible(true);
Node->setMaterialFlag(video::EMF_LIGHTING, false);
Node->render();
Node->setVisible(visible);
Node->setMaterialFlag(video::EMF_LIGHTING, lighted);
Device->getVideoDriver()->setRenderTarget(0, true, true, 0);
Device->getSceneManager()->setActiveCamera(aCam);
aCam->updateAbsolutePosition();
bCam->remove();
return tex;
};