|
From: <axl...@us...> - 2008-12-05 12:22:32
|
Revision: 47
http://hgengine.svn.sourceforge.net/hgengine/?rev=47&view=rev
Author: axlecrusher
Date: 2008-12-05 11:49:09 +0000 (Fri, 05 Dec 2008)
Log Message:
-----------
Hide and cull
Modified Paths:
--------------
Mercury2/src/RenderableNode.cpp
Mercury2/src/RenderableNode.h
Modified: Mercury2/src/RenderableNode.cpp
===================================================================
--- Mercury2/src/RenderableNode.cpp 2008-12-04 02:57:41 UTC (rev 46)
+++ Mercury2/src/RenderableNode.cpp 2008-12-05 11:49:09 UTC (rev 47)
@@ -7,6 +7,11 @@
REGISTER_NODE_TYPE(RenderableNode);
+RenderableNode::RenderableNode()
+ :m_hidden(false)
+{
+}
+
RenderableNode::~RenderableNode()
{
m_prerender.clear();
@@ -18,6 +23,8 @@
{
list< MercuryAsset* >::iterator i;
+ if (m_hidden || IsCulled()) return;
+
MercuryMatrix m = FindGlobalMatrix();
m.Transpose();
glLoadMatrixf( m.Ptr() );
@@ -71,12 +78,7 @@
m_postrender.push_back(asset);
}
-/*
-bool RenderableNode::IsMyType( MercuryNode* n )
-{
- return ( typeid(RenderableNode) == typeid(*n) );
-}
-*/
+
bool RenderableNode::IsInAssetList( MercuryAsset* asset ) const
{
std::list< MAutoPtr< MercuryAsset > >::const_iterator i;
@@ -97,7 +99,10 @@
}
void RenderableNode::LoadFromXML(const XMLNode& node)
-{
+{
+ if ( !node.Attribute("hidden").empty() )
+ m_hidden = node.Attribute("hidden")=="true"?true:false;
+
for (XMLNode child = node.Child(); child.IsValid(); child = child.NextNode())
{
if ( child.Name() == "asset" )
Modified: Mercury2/src/RenderableNode.h
===================================================================
--- Mercury2/src/RenderableNode.h 2008-12-04 02:57:41 UTC (rev 46)
+++ Mercury2/src/RenderableNode.h 2008-12-05 11:49:09 UTC (rev 47)
@@ -11,6 +11,7 @@
class RenderableNode : public MercuryNode
{
public:
+ RenderableNode();
~RenderableNode();
virtual void Render();
@@ -29,8 +30,12 @@
virtual void LoadFromXML(const XMLNode& node);
const MercuryMatrix& FindGlobalMatrix() const;
+
+ virtual bool IsCulled() { return false; }
GENRTTI(RenderableNode);
+ protected:
+ bool m_hidden;
private:
bool IsInAssetList(MercuryAsset* asset) const;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|