|
From: <axl...@us...> - 2008-12-13 17:26:51
|
Revision: 75
http://hgengine.svn.sourceforge.net/hgengine/?rev=75&view=rev
Author: axlecrusher
Date: 2008-12-13 17:26:41 +0000 (Sat, 13 Dec 2008)
Log Message:
-----------
Add semaphore to renderables
Modified Paths:
--------------
Mercury2/src/RenderableNode.cpp
Mercury2/src/RenderableNode.h
Modified: Mercury2/src/RenderableNode.cpp
===================================================================
--- Mercury2/src/RenderableNode.cpp 2008-12-13 17:23:05 UTC (rev 74)
+++ Mercury2/src/RenderableNode.cpp 2008-12-13 17:26:41 UTC (rev 75)
@@ -19,6 +19,12 @@
m_postrender.clear();
}
+void RenderableNode::Update(float dTime)
+{
+ MSemaphoreIncOnDestroy s( &m_semaphore );
+ while (m_semaphore.ReadValue() != 0);
+}
+
void RenderableNode::Render()
{
list< MercuryAsset* >::iterator i;
@@ -87,9 +93,15 @@
return false;
}
-void RenderableNode::RecursiveRender( const MercuryNode* n )
+void RenderableNode::RecursiveRender( MercuryNode* n )
{
- if ( Cast(n) ) ((RenderableNode*)n)->Render();
+ RenderableNode* rn;
+ if ( rn = Cast(n) )
+ {
+ MSemaphoreDecOnDestroy s( &(rn->m_semaphore) );
+ while (rn->m_semaphore.ReadValue() != 1);
+ rn->Render();
+ }
const list< MercuryNode* >& children = n->Children();
list< MercuryNode* >::const_iterator i;
Modified: Mercury2/src/RenderableNode.h
===================================================================
--- Mercury2/src/RenderableNode.h 2008-12-13 17:23:05 UTC (rev 74)
+++ Mercury2/src/RenderableNode.h 2008-12-13 17:26:41 UTC (rev 75)
@@ -5,6 +5,7 @@
#include <MAutoPtr.h>
#include <MercuryAsset.h>
#include <MercuryMatrix.h>
+#include <MSemaphore.h>
#define MCHECKASSETS
@@ -15,7 +16,7 @@
~RenderableNode();
virtual void Render();
- virtual void Update(float dTime) {};
+ virtual void Update(float dTime);
///Returnes true if N is of type RenderableNode
// static bool IsMyType( MercuryNode* n );
@@ -26,7 +27,7 @@
void AddRender(MercuryAsset* asset);
void AddPostRender(MercuryAsset* asset);
- static void RecursiveRender( const MercuryNode* n );
+ static void RecursiveRender( MercuryNode* n );
virtual void LoadFromXML(const XMLNode& node);
const MercuryMatrix& FindGlobalMatrix() const;
@@ -47,6 +48,8 @@
std::list< MercuryAsset* > m_prerender;
std::list< MercuryAsset* > m_render;
std::list< MercuryAsset* > m_postrender;
+
+ MSemaphore m_semaphore;
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|