diff --git a/changes.txt b/changes.txt index 0cd6eeff..aa06c48e 100644 --- a/changes.txt +++ b/changes.txt @@ -6,6 +6,8 @@ Changes in version 1.4 (... 2007) - the base class for nearly all Irrlicht classes has been renamed from IUnknown to IReferenceCounted + - Fixed Skybox texture orientations. They are now displayed non-flipped. Existing skyboxes have to be changed, though. Echange left and right texture and rotate up-texture 270 degrees clockwise, and down-texture 90 degrees clockwise. Textures from Terragen and other tools can be used directly, now. + - Added ITexture::isRenderTarget() - Added STL mesh file format reader and writer. diff --git a/media/irrlicht2_dn.jpg b/media/irrlicht2_dn.jpg index 4735dbee..f97c58ca 100644 Binary files a/media/irrlicht2_dn.jpg and b/media/irrlicht2_dn.jpg differ diff --git a/media/irrlicht2_lf.jpg b/media/irrlicht2_lf.jpg index b29e01af..384b269d 100644 Binary files a/media/irrlicht2_lf.jpg and b/media/irrlicht2_lf.jpg differ diff --git a/media/irrlicht2_rt.jpg b/media/irrlicht2_rt.jpg index 384b269d..b29e01af 100644 Binary files a/media/irrlicht2_rt.jpg and b/media/irrlicht2_rt.jpg differ diff --git a/media/irrlicht2_up.jpg b/media/irrlicht2_up.jpg index 80f30687..be0d30e2 100644 Binary files a/media/irrlicht2_up.jpg and b/media/irrlicht2_up.jpg differ diff --git a/source/Irrlicht/CSkyBoxSceneNode.cpp b/source/Irrlicht/CSkyBoxSceneNode.cpp index 2fe26b6f..6a3b6a4b 100644 --- a/source/Irrlicht/CSkyBoxSceneNode.cpp +++ b/source/Irrlicht/CSkyBoxSceneNode.cpp @@ -55,11 +55,9 @@ CSkyBoxSceneNode::CSkyBoxSceneNode(video::ITexture* top, video::ITexture* bottom |/ | / | //| 0---------1/ | // | -1-1-1 1-1-1 |// | - 0--------1 + 0--------1 */ - f32 onepixel = 0.0f; - video::ITexture* tex = front; if (!tex) tex = left; if (!tex) tex = back; @@ -67,57 +65,54 @@ CSkyBoxSceneNode::CSkyBoxSceneNode(video::ITexture* top, video::ITexture* bottom if (!tex) tex = top; if (!tex) tex = bottom; - if (tex) - { - core::dimension2d dim = tex->getSize(); - onepixel = 1.0f / (dim.Width * 1.5f); - } + const f32 onepixel = tex?(1.0f / (tex->getSize().Width * 1.5f)) : 0.0f; + const f32 l = 10.0f; + const f32 t = 1.0f - onepixel; + const f32 o = 0.0f + onepixel; - f32 l = 10.0f; - f32 t = 1.0f - onepixel; - f32 o = 0.0f + onepixel; + // create front side Material[0] = mat; Material[0].setTexture(0, front); - Vertices[0] = video::S3DVertex(-l,-l,-l, 0,0,1, video::SColor(255,255,255,255), o, t); - Vertices[1] = video::S3DVertex( l,-l,-l, 0,0,1, video::SColor(255,255,255,255), t, t); - Vertices[2] = video::S3DVertex( l, l,-l, 0,0,1, video::SColor(255,255,255,255), t, o); - Vertices[3] = video::S3DVertex(-l, l,-l, 0,0,1, video::SColor(255,255,255,255), o, o); + Vertices[0] = video::S3DVertex(-l,-l,-l, 0,0,1, video::SColor(255,255,255,255), t, t); + Vertices[1] = video::S3DVertex( l,-l,-l, 0,0,1, video::SColor(255,255,255,255), o, t); + Vertices[2] = video::S3DVertex( l, l,-l, 0,0,1, video::SColor(255,255,255,255), o, o); + Vertices[3] = video::S3DVertex(-l, l,-l, 0,0,1, video::SColor(255,255,255,255), t, o); // create left side Material[1] = mat; Material[1].setTexture(0, left); - Vertices[4] = video::S3DVertex( l,-l,-l, -1,0,0, video::SColor(255,255,255,255), o, t); - Vertices[5] = video::S3DVertex( l,-l, l, -1,0,0, video::SColor(255,255,255,255), t, t); - Vertices[6] = video::S3DVertex( l, l, l, -1,0,0, video::SColor(255,255,255,255), t, o); - Vertices[7] = video::S3DVertex( l, l,-l, -1,0,0, video::SColor(255,255,255,255), o, o); + Vertices[4] = video::S3DVertex( l,-l,-l, -1,0,0, video::SColor(255,255,255,255), t, t); + Vertices[5] = video::S3DVertex( l,-l, l, -1,0,0, video::SColor(255,255,255,255), o, t); + Vertices[6] = video::S3DVertex( l, l, l, -1,0,0, video::SColor(255,255,255,255), o, o); + Vertices[7] = video::S3DVertex( l, l,-l, -1,0,0, video::SColor(255,255,255,255), t, o); // create back side Material[2] = mat; Material[2].setTexture(0, back); - Vertices[8] = video::S3DVertex( l,-l, l, 0,0,-1, video::SColor(255,255,255,255), o, t); - Vertices[9] = video::S3DVertex(-l,-l, l, 0,0,-1, video::SColor(255,255,255,255), t, t); - Vertices[10] = video::S3DVertex(-l, l, l, 0,0,-1, video::SColor(255,255,255,255), t, o); - Vertices[11] = video::S3DVertex( l, l, l, 0,0,-1, video::SColor(255,255,255,255), o, o); + Vertices[8] = video::S3DVertex( l,-l, l, 0,0,-1, video::SColor(255,255,255,255), t, t); + Vertices[9] = video::S3DVertex(-l,-l, l, 0,0,-1, video::SColor(255,255,255,255), o, t); + Vertices[10] = video::S3DVertex(-l, l, l, 0,0,-1, video::SColor(255,255,255,255), o, o); + Vertices[11] = video::S3DVertex( l, l, l, 0,0,-1, video::SColor(255,255,255,255), t, o); // create right side Material[3] = mat; Material[3].setTexture(0, right); - Vertices[12] = video::S3DVertex(-l,-l, l, 1,0,0, video::SColor(255,255,255,255), o, t); - Vertices[13] = video::S3DVertex(-l,-l,-l, 1,0,0, video::SColor(255,255,255,255), t, t); - Vertices[14] = video::S3DVertex(-l, l,-l, 1,0,0, video::SColor(255,255,255,255), t, o); - Vertices[15] = video::S3DVertex(-l, l, l, 1,0,0, video::SColor(255,255,255,255), o, o); + Vertices[12] = video::S3DVertex(-l,-l, l, 1,0,0, video::SColor(255,255,255,255), t, t); + Vertices[13] = video::S3DVertex(-l,-l,-l, 1,0,0, video::SColor(255,255,255,255), o, t); + Vertices[14] = video::S3DVertex(-l, l,-l, 1,0,0, video::SColor(255,255,255,255), o, o); + Vertices[15] = video::S3DVertex(-l, l, l, 1,0,0, video::SColor(255,255,255,255), t, o); // create top side Material[4] = mat; Material[4].setTexture(0, top); - Vertices[16] = video::S3DVertex( l, l, l, 0,-1,0, video::SColor(255,255,255,255), o, o); + Vertices[16] = video::S3DVertex( l, l, l, 0,-1,0, video::SColor(255,255,255,255), t, t); Vertices[17] = video::S3DVertex(-l, l, l, 0,-1,0, video::SColor(255,255,255,255), o, t); - Vertices[18] = video::S3DVertex(-l, l,-l, 0,-1,0, video::SColor(255,255,255,255), t, t); + Vertices[18] = video::S3DVertex(-l, l,-l, 0,-1,0, video::SColor(255,255,255,255), o, o); Vertices[19] = video::S3DVertex( l, l,-l, 0,-1,0, video::SColor(255,255,255,255), t, o); // create bottom side @@ -125,16 +120,9 @@ CSkyBoxSceneNode::CSkyBoxSceneNode(video::ITexture* top, video::ITexture* bottom Material[5] = mat; Material[5].setTexture(0, bottom); Vertices[20] = video::S3DVertex(-l,-l, l, 0,1,0, video::SColor(255,255,255,255), o, o); - Vertices[21] = video::S3DVertex( l,-l, l, 0,1,0, video::SColor(255,255,255,255), o, t); + Vertices[21] = video::S3DVertex( l,-l, l, 0,1,0, video::SColor(255,255,255,255), t, o); Vertices[22] = video::S3DVertex( l,-l,-l, 0,1,0, video::SColor(255,255,255,255), t, t); - Vertices[23] = video::S3DVertex(-l,-l,-l, 0,1,0, video::SColor(255,255,255,255), t, o); -} - - - -//! destructor -CSkyBoxSceneNode::~CSkyBoxSceneNode() -{ + Vertices[23] = video::S3DVertex(-l,-l,-l, 0,1,0, video::SColor(255,255,255,255), o, t); } @@ -254,7 +242,7 @@ ISceneNode* CSkyBoxSceneNode::clone(ISceneNode* newParent, ISceneManager* newMan nb->cloneMembers(this, newManager); - for (int i=0; i<6; ++i) + for (u32 i=0; i<6; ++i) nb->Material[i] = Material[i]; nb->drop(); diff --git a/source/Irrlicht/CSkyBoxSceneNode.h b/source/Irrlicht/CSkyBoxSceneNode.h index 9608bc29..9beb59a0 100644 --- a/source/Irrlicht/CSkyBoxSceneNode.h +++ b/source/Irrlicht/CSkyBoxSceneNode.h @@ -13,7 +13,7 @@ namespace irr namespace scene { - // Skybox, rendererd with zbuffer turned off, before all other nodes. + // Skybox, rendered with zbuffer turned off, before all other nodes. class CSkyBoxSceneNode : public ISceneNode { public: @@ -23,9 +23,6 @@ namespace scene video::ITexture* right, video::ITexture* front, video::ITexture* back, ISceneNode* parent, ISceneManager* mgr, s32 id); - //! destructor - virtual ~CSkyBoxSceneNode(); - virtual void OnRegisterSceneNode(); //! renders the node.