|
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.
|