From: <axl...@us...> - 2008-12-05 23:54:58
|
Revision: 50 http://hgengine.svn.sourceforge.net/hgengine/?rev=50&view=rev Author: axlecrusher Date: 2008-12-05 23:54:50 +0000 (Fri, 05 Dec 2008) Log Message: ----------- texture should make use of the postrender to disable or unbind the textures that it set up in render Modified Paths: -------------- Mercury2/src/MercuryAsset.cpp Mercury2/src/MercuryAsset.h Mercury2/src/RenderableNode.cpp Mercury2/src/Texture.cpp Mercury2/src/Texture.h Modified: Mercury2/src/MercuryAsset.cpp =================================================================== --- Mercury2/src/MercuryAsset.cpp 2008-12-05 11:53:20 UTC (rev 49) +++ Mercury2/src/MercuryAsset.cpp 2008-12-05 23:54:50 UTC (rev 50) @@ -1,12 +1,19 @@ #include <MercuryAsset.h> +#include <RenderableNode.h> +void MercuryAsset::Init(MercuryNode* node) +{ + RenderableNode* rn; + if ( (rn=RenderableNode::Cast( node )) ) + rn->AddRender(this); +} + AssetFactory& AssetFactory::GetInstance() { static AssetFactory* instance = NULL; if (!instance) instance = new AssetFactory; return *instance; - } bool AssetFactory::RegisterFactoryCallback(const std::string& type, Callback0R< MAutoPtr<MercuryAsset> > functor) Modified: Mercury2/src/MercuryAsset.h =================================================================== --- Mercury2/src/MercuryAsset.h 2008-12-05 11:53:20 UTC (rev 49) +++ Mercury2/src/MercuryAsset.h 2008-12-05 23:54:50 UTC (rev 50) @@ -9,6 +9,8 @@ public: virtual ~MercuryAsset() {}; + virtual void Init(MercuryNode* node); + virtual void PreRender(MercuryNode* node) {}; virtual void Render(MercuryNode* node) = 0; virtual void PostRender(MercuryNode* node) {}; Modified: Mercury2/src/RenderableNode.cpp =================================================================== --- Mercury2/src/RenderableNode.cpp 2008-12-05 11:53:20 UTC (rev 49) +++ Mercury2/src/RenderableNode.cpp 2008-12-05 23:54:50 UTC (rev 50) @@ -112,7 +112,7 @@ { asset->LoadFromXML( child ); this->AddAsset( asset ); - this->AddRender( asset ); + asset->Init( this ); } } } Modified: Mercury2/src/Texture.cpp =================================================================== --- Mercury2/src/Texture.cpp 2008-12-05 11:53:20 UTC (rev 49) +++ Mercury2/src/Texture.cpp 2008-12-05 23:54:50 UTC (rev 50) @@ -1,5 +1,6 @@ #include <Texture.h> #include <GL/gl.h> +#include <RenderableNode.h> using namespace std; @@ -178,6 +179,15 @@ SAFE_DELETE(m_raw); } +void Texture::Init(MercuryNode* node) +{ + MercuryAsset::Init( node ); + + RenderableNode* rn; + if ( (rn=RenderableNode::Cast( node )) ) + rn->AddPostRender( this ); +} + void Texture::LoadFromRaw(const RawImageData* raw) { if ( !m_textureID ) glGenTextures(1, &m_textureID); @@ -202,6 +212,7 @@ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + }; void Texture::Render(MercuryNode* node) @@ -210,6 +221,11 @@ glBindTexture(GL_TEXTURE_2D, m_textureID); } +void Texture::PostRender(MercuryNode* node) +{ + glDisable( GL_TEXTURE_2D ); +} + void Texture::LoadFromXML(const XMLNode& node) { if ( !node.Attribute("imagefile").empty() ) Modified: Mercury2/src/Texture.h =================================================================== --- Mercury2/src/Texture.h 2008-12-05 11:53:20 UTC (rev 49) +++ Mercury2/src/Texture.h 2008-12-05 23:54:50 UTC (rev 50) @@ -17,10 +17,11 @@ public: Texture(); virtual ~Texture(); + + virtual void Init(MercuryNode* node); - virtual void PreRender(MercuryNode* node) {}; virtual void Render(MercuryNode* node); - virtual void PostRender(MercuryNode* node) {}; + virtual void PostRender(MercuryNode* node); virtual void LoadFromXML(const XMLNode& node); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |