|
From: <cn...@us...> - 2009-08-11 03:17:40
|
Revision: 474
http://hgengine.svn.sourceforge.net/hgengine/?rev=474&view=rev
Author: cnlohr
Date: 2009-08-11 03:17:29 +0000 (Tue, 11 Aug 2009)
Log Message:
-----------
add tentative traversal code
Modified Paths:
--------------
Mercury2/src/Viewport.cpp
Mercury2/src/Viewport.h
Modified: Mercury2/src/Viewport.cpp
===================================================================
--- Mercury2/src/Viewport.cpp 2009-08-11 03:08:53 UTC (rev 473)
+++ Mercury2/src/Viewport.cpp 2009-08-11 03:17:29 UTC (rev 474)
@@ -1,6 +1,7 @@
#include <Viewport.h>
#include <GLHeaders.h>
#include <MercuryWindow.h>
+#include <TransformNode.h>
#include <Shader.h>
@@ -17,6 +18,65 @@
{
}
+void Viewport::GoAll( const float fDtime )
+{
+ MercuryNode * n;
+ int depth = 0;
+
+ if( NeedsRebuild() )
+ {
+ printf( "Xxxx\n" );
+ }
+
+ //Update pass
+ n = this;
+ while( n )
+ {
+ n->Update( fDtime );
+ n = n->TraversalNextNode( this, depth );
+ }
+
+ //Prerender pass
+ n = this;
+ while( n )
+ {
+ const MercuryMatrix& matrix = n->FindGlobalMatrix();
+
+// TransformNode * tn = dynamic_cast< TransformNode * >( n );
+// if( tn )
+// tn->m_modelView = tn->ManipulateMatrix( matrix );
+
+ n->PreRender( matrix );
+ n = n->TraversalNextNode( this, depth );
+ }
+
+ n = this;
+ while( n )
+ {
+ const MercuryMatrix& matrix = n->FindGlobalMatrix();
+ const MercuryMatrix& modelView = n->FindModelViewMatrix(); //get the one computed in the last transform
+
+ glLoadMatrix( modelView );
+
+ ShaderAttribute sa;
+ sa.type = ShaderAttribute::TYPE_MATRIX;
+ sa.value.matrix = matrix.Ptr();
+ Shader::SetAttribute("HG_ModelMatrix", sa);
+
+ n->Render( modelView );
+
+ glLoadMatrix( modelView );
+ Shader::SetAttribute("HG_ModelMatrix", sa);
+
+ n->PostRender( modelView );
+
+ n = n->TraversalNextNode( this, depth );
+ }
+
+
+}
+
+
void Viewport::PreRender(const MercuryMatrix& matrix)
{
FRUSTUM = &m_frustum;
Modified: Mercury2/src/Viewport.h
===================================================================
--- Mercury2/src/Viewport.h 2009-08-11 03:08:53 UTC (rev 473)
+++ Mercury2/src/Viewport.h 2009-08-11 03:17:29 UTC (rev 474)
@@ -11,6 +11,9 @@
{
public:
Viewport();
+
+ virtual void GoAll( const float fDtime );
+
virtual void PreRender(const MercuryMatrix& matrix);
virtual void Render(const MercuryMatrix& matrix);
virtual void PostRender(const MercuryMatrix& matrix);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|