Magic2d Library ver 0.4 for irrlicht0.14.0 has been released,so you can download it from here
http://www.freewebs.com/bcxgl/download.htm
here is some screen shots
![Image](http://www.freewebs.com/bcxgl/AmosExampl1.gif)
![Image](http://www.freewebs.com/bcxgl/hiscores.gif)
![Image](http://www.freewebs.com/bcxgl/TimeControl.gif)
Enjoy It.
thanks.GueZt wrote:Great Job EMIL!releasing for DIRECTX.
BTW: Initialy i thought it was open source but its only incudes LIB.
Code: Select all
/************************************
Magic library
day/night cycle for skybox Demo
it is krama757 Idea
works only for OpenGl
*************************************/
#include <irrlicht.h>
#include <Magic2d.hpp>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
// global declration of Irrlicht interfaces
IrrlichtDevice* device;
IVideoDriver* driver;
ISceneManager* smgr;
IGUIEnvironment* guienv;
//! day/night cycle skybox class
class TSkyBoxSceneNode : public ISceneNode
{
public:
//! constructor
TSkyBoxSceneNode(video::ITexture* top, video::ITexture* bottom, video::ITexture* left,
video::ITexture* right, video::ITexture* front, video::ITexture* back,
ISceneNode* parent, ISceneManager* mgr, s32 id): ISceneNode(parent, mgr, id)
{
AutomaticCullingEnabled = false;
// create material
video::SMaterial mat;
mat.Lighting = false;
mat.ZBuffer = false;
mat.ZWriteEnable = false;
mat.BilinearFilter = true;
Material[0] = mat;
Material[0].Texture1 = front;
Material[1] = mat;
Material[1].Texture1 = left;
Material[2] = mat;
Material[2].Texture1 = back;
Material[3] = mat;
Material[3].Texture1 = right;
Material[4] = mat;
Material[4].Texture1 = top;
Material[5] = mat;
Material[5].Texture1 = bottom;
Fade = new TFadeInOut();
}
//! destructor
virtual ~TSkyBoxSceneNode(){};
virtual void OnPreRender()
{
if (IsVisible)
SceneManager->registerNodeForRendering(this, ESNRP_SKY_BOX);
ISceneNode::OnPreRender();
}
//! renders the node.
virtual void render()
{
video::IVideoDriver* driver = SceneManager->getVideoDriver();
scene::ICameraSceneNode* camera = SceneManager->getActiveCamera();
if (!camera || !driver) return;
core::matrix4 mat;
mat.setTranslation(camera->getAbsolutePosition());
driver->setTransform(video::ETS_WORLD, mat);
SetBlend(ALPHABLEND);
SetColor(255,255,255);
// SetAlpha(0.9);
Fade->FadeInOut(4000,1000,4000,true);
//! Front Face
driver->setMaterial(Material[0]);
glBegin(GL_QUADS);
glNormal3f( 0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
glEnd();
//! Back Face
driver->setMaterial(Material[2]);
glBegin(GL_QUADS);
glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glEnd();
//! Right face
driver->setMaterial(Material[1]);
glBegin(GL_QUADS);
glNormal3f( 1.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
glEnd();
//! Left Face
driver->setMaterial(Material[3]);
glBegin(GL_QUADS);
glNormal3f(-1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glEnd();
//! Top Face
driver->setMaterial(Material[4]);
glBegin(GL_QUADS);
glNormal3f( 0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( -1.0f, 1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( -1.0f, 1.0f, 1.0f);
glEnd();
//! Bottom Face
driver->setMaterial(Material[5]);
glBegin(GL_QUADS);
glNormal3f( 0.0f,-1.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glEnd();
SetBlend(SOLIDBLEND);
}
//! returns the axis aligned bounding box of this node
virtual const core::aabbox3d<f32>& getBoundingBox() const
{
return Box;
}
virtual video::SMaterial& getMaterial(s32 i)
{
return Material[i];
}
//! returns amount of materials used by this scene node.
virtual s32 getMaterialCount()
{
return 6;
}
private:
core::aabbox3d<f32> Box;
video::SMaterial Material[6];
TFadeInOut* Fade;
};
int main()
{
device = createDevice(EDT_OPENGL, dimension2d<s32>(640, 480), 32);
bool rslt = InitMagic(device);
if(rslt == false)
printf("Magic Library will only work with OpenGL driver");
device->setWindowCaption(L"Hello World! - Magic 2d library for Irrlicht");
driver = device->getVideoDriver();
smgr = device->getSceneManager();
guienv = device->getGUIEnvironment();
scene::ICameraSceneNode* camera =
smgr->addCameraSceneNodeFPS(0,100.0f,1200.0f);
// create skybox
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
TSkyBoxSceneNode* myNode=new TSkyBoxSceneNode(
driver->getTexture("../../media/irrlicht2_up.jpg"),
driver->getTexture("../../media/irrlicht2_dn.jpg"),
driver->getTexture("../../media/irrlicht2_lf.jpg"),
driver->getTexture("../../media/irrlicht2_rt.jpg"),
driver->getTexture("../../media/irrlicht2_ft.jpg"),
driver->getTexture("../../media/irrlicht2_bk.jpg"),
smgr->getRootSceneNode(),smgr,0);
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, true);
int lastFPS = -1;
while(device->run())
{
driver->beginScene(true, true, SColor(0,0,0,0));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
int fps = driver->getFPS();
if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"Hello World! - Magic 2d library for Irrlicht (%s)(fps:%d)",driver->getName(), fps);
device->setWindowCaption(tmp);
lastFPS = fps;
}
}
device->drop();
return 0;
}