|
From: <axl...@us...> - 2009-03-16 00:09:09
|
Revision: 182
http://hgengine.svn.sourceforge.net/hgengine/?rev=182&view=rev
Author: axlecrusher
Date: 2009-03-16 00:09:00 +0000 (Mon, 16 Mar 2009)
Log Message:
-----------
clean up bounding boxes and rendering
Modified Paths:
--------------
Mercury2/src/BoundingBox.cpp
Mercury2/src/BoundingBox.h
Mercury2/src/HGMDLMesh.cpp
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryAsset.h
Mercury2/src/MercuryVBO.cpp
Mercury2/src/MercuryVBO.h
Mercury2/src/RenderableNode.cpp
Mercury2/src/RenderableNode.h
Modified: Mercury2/src/BoundingBox.cpp
===================================================================
--- Mercury2/src/BoundingBox.cpp 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/BoundingBox.cpp 2009-03-16 00:09:00 UTC (rev 182)
@@ -41,22 +41,17 @@
bb.m_normals[1] = (m * m_normals[1]).Normalize();
bb.m_normals[2] = (m * m_normals[2]).Normalize();
*this = bb;
-// return bb;
}
-RenderableBoundingBox::RenderableBoundingBox(const BoundingBox* bb)
- :MercuryAsset(), m_bb(bb)
+void BoundingBox::Render()
{
-}
+// BoundingBox gbb = *this;
-void RenderableBoundingBox::Render(MercuryNode* node)
-{
- BoundingBox gbb = *m_bb;
- gbb.Transform( GetGlobalMatrix() );
- if ( FRUSTUM->Clip( gbb ) ) return;
+// gbb.Transform( ((RenderableNode*)node)->GetGlobalMatrix() );
+// if ( FRUSTUM->Clip( gbb ) ) return;
- const float* center = m_bb->GetCenter();
- const float* extend = m_bb->GetExtend();
+ const float* center = GetCenter();
+ const float* extend = GetExtend();
glPushAttrib( GL_CURRENT_BIT );
glBegin(GL_LINES);
Modified: Mercury2/src/BoundingBox.h
===================================================================
--- Mercury2/src/BoundingBox.h 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/BoundingBox.h 2009-03-16 00:09:00 UTC (rev 182)
@@ -1,7 +1,7 @@
#ifndef BOUNDINGBOX_H
#define BOUNDINGBOX_H
-#include <MercuryAsset.h>
+#include <MercuryNode.h>
#include <MercuryVertex.h>
#include <MercuryMatrix.h>
#include <stdint.h>
@@ -9,8 +9,11 @@
class BoundingVolume
{
public:
+ virtual ~BoundingVolume() {};
+
virtual void LoadFromBinary(char* data) = 0;
virtual void Transform( const MercuryMatrix& m ) = 0;
+ virtual void Render() {};
};
class BoundingBox : public BoundingVolume
@@ -18,6 +21,7 @@
public:
BoundingBox() {};
BoundingBox(const MercuryVertex& center, const MercuryVertex& extend);
+ virtual ~BoundingBox() {};
virtual void LoadFromBinary(char* data);
@@ -26,6 +30,8 @@
virtual void Transform( const MercuryMatrix& m );
const MercuryVector& Normal(uint8_t i) const { return m_normals[i]; }
+
+ virtual void Render();
private:
void ComputeNormals();
@@ -35,7 +41,7 @@
MercuryVector m_normals[3];
};
-
+/*
class RenderableBoundingBox : public MercuryAsset
{
public:
@@ -45,7 +51,7 @@
private:
const BoundingBox* m_bb;
};
-
+*/
#endif
/****************************************************************************
Modified: Mercury2/src/HGMDLMesh.cpp
===================================================================
--- Mercury2/src/HGMDLMesh.cpp 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/HGMDLMesh.cpp 2009-03-16 00:09:00 UTC (rev 182)
@@ -87,9 +87,9 @@
{
data = new char[length];
hgmdl->Read( data, length );
-
- m_boundingBox = new BoundingBox();
- m_boundingBox->LoadFromBinary( data );
+
+ m_boundingVolume = new BoundingBox();
+ m_boundingVolume->LoadFromBinary( data );
}
SAFE_DELETE_ARRAY(data);
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/MercuryAsset.cpp 2009-03-16 00:09:00 UTC (rev 182)
@@ -2,10 +2,14 @@
#include <RenderableNode.h>
MercuryAsset::MercuryAsset()
- :m_isInstanced(false)
+ :m_isInstanced(false), m_boundingVolume(NULL)
{
}
+MercuryAsset::~MercuryAsset()
+{
+ SAFE_DELETE(m_boundingVolume);
+}
void MercuryAsset::Init(MercuryNode* node)
{
@@ -68,11 +72,6 @@
}
-const MercuryMatrix& MercuryAsset::GetGlobalMatrix() const
-{
- return GLOBALMATRIX;
-}
-
std::map<MString, MercuryAsset*> AssetFactory::m_assetInstances;
/***************************************************************************
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/MercuryAsset.h 2009-03-16 00:09:00 UTC (rev 182)
@@ -6,12 +6,13 @@
#include <MessageHandler.h>
#include <map>
#include <MercuryMatrix.h>
+#include <BoundingBox.h>
class MercuryAsset : public RefBase, MessageHandler
{
public:
MercuryAsset();
- virtual ~MercuryAsset() {};
+ virtual ~MercuryAsset();
virtual void Init(MercuryNode* node);
@@ -23,9 +24,9 @@
virtual void LoadFromXML(const XMLNode& node) {};
inline void IsInstanced(bool b) { m_isInstanced = b; }
- const MercuryMatrix& GetGlobalMatrix() const;
protected:
bool m_isInstanced;
+ BoundingVolume* m_boundingVolume;
};
class AssetFactory
Modified: Mercury2/src/MercuryVBO.cpp
===================================================================
--- Mercury2/src/MercuryVBO.cpp 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/MercuryVBO.cpp 2009-03-16 00:09:00 UTC (rev 182)
@@ -10,7 +10,7 @@
#define BUFFER_OFFSET(i) ((char*)NULL + (i))
MercuryVBO::MercuryVBO()
- :MercuryAsset(), m_initiated(false), m_boundingBox(NULL)
+ :MercuryAsset(), m_initiated(false)
{
m_bufferIDs[0] = m_bufferIDs[1] = 0;
}
@@ -19,7 +19,6 @@
{
if (m_bufferIDs[0]) glDeleteBuffersARB(2, m_bufferIDs);
m_bufferIDs[0] = m_bufferIDs[1] = 0;
- SAFE_DELETE(m_boundingBox);
}
void MercuryVBO::Render(MercuryNode* node)
@@ -54,11 +53,7 @@
m_lastVBOrendered = this;
- if (m_boundingBox)
- {
- RenderableBoundingBox rbb(m_boundingBox);
- rbb.Render(node);
- }
+ if (m_boundingVolume) m_boundingVolume->Render();
}
void MercuryVBO::InitVBO()
Modified: Mercury2/src/MercuryVBO.h
===================================================================
--- Mercury2/src/MercuryVBO.h 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/MercuryVBO.h 2009-03-16 00:09:00 UTC (rev 182)
@@ -31,7 +31,6 @@
protected:
AlignedBuffer<float> m_vertexData;
AlignedBuffer<uint16_t> m_indexData;
- BoundingBox* m_boundingBox;
static MSemaphore m_vboBatches;
};
Modified: Mercury2/src/RenderableNode.cpp
===================================================================
--- Mercury2/src/RenderableNode.cpp 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/RenderableNode.cpp 2009-03-16 00:09:00 UTC (rev 182)
@@ -24,7 +24,8 @@
m_render.clear();
m_postrender.clear();
}
-
+/*
+//this function exists for threaded rendering
void RenderableNode::Update(float dTime)
{
static unsigned long waitTime = 0;
@@ -41,7 +42,7 @@
UpdateWaited += waited;
}
-
+*/
void RenderableNode::Render()
{
list< MercuryAsset* >::iterator i;
@@ -116,17 +117,15 @@
RenderableNode* rn;
if ( ( rn = Cast(n) ) )
{
+/*
MSemaphoreDecOnDestroy s( &(rn->m_semaphore) );
-
int unsigned long waited = rn->SpinlockWait(1, waitTime);
- if (waited > 0)
- waitTime = (waitTime<1000000)?waitTime+1000:waitTime;
- else
- waitTime = (waitTime!=0)?waitTime-1000:0;
-
+ if (waited > 0) waitTime = (waitTime<1000000)?waitTime+1000:waitTime;
+ else waitTime = (waitTime!=0)?waitTime-1000:0;
RenderWaited += waited;
-
+*/
// ++RenderWaited += rn->Spinlock(1);
+
rn->Render();
}
@@ -159,7 +158,7 @@
MercuryNode::LoadFromXML( node );
}
-
+/*
unsigned long RenderableNode::Spinlock( unsigned long value )
{
unsigned long waited = 0;
@@ -178,9 +177,9 @@
}
return waited;
}
+*/
-
/***************************************************************************
* Copyright (C) 2008 by Joshua Allen *
* *
Modified: Mercury2/src/RenderableNode.h
===================================================================
--- Mercury2/src/RenderableNode.h 2009-03-15 22:17:56 UTC (rev 181)
+++ Mercury2/src/RenderableNode.h 2009-03-16 00:09:00 UTC (rev 182)
@@ -21,7 +21,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 );
@@ -44,8 +44,6 @@
bool m_hidden;
private:
bool IsInAssetList(MercuryAsset* asset) const;
- unsigned long Spinlock( unsigned long value );
- unsigned long SpinlockWait( unsigned long value, unsigned long usec );
std::list< MAutoPtr< MercuryAsset > > m_assets; ///serves as a holder for memory
@@ -55,8 +53,11 @@
std::list< MercuryAsset* > m_prerender;
std::list< MercuryAsset* > m_render;
std::list< MercuryAsset* > m_postrender;
-
- MSemaphore m_semaphore;
+
+//Below is stuff for threaded rendering
+// unsigned long Spinlock( unsigned long value );
+// unsigned long SpinlockWait( unsigned long value, unsigned long usec );
+// MSemaphore m_semaphore;
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|