You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(46) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(185) |
Feb
(242) |
Mar
(237) |
Apr
(180) |
May
(102) |
Jun
(278) |
Jul
(114) |
Aug
(92) |
Sep
(246) |
Oct
(212) |
Nov
(279) |
Dec
(99) |
| 2007 |
Jan
(130) |
Feb
(194) |
Mar
(22) |
Apr
(72) |
May
(40) |
Jun
(111) |
Jul
(114) |
Aug
(154) |
Sep
(114) |
Oct
(2) |
Nov
(1) |
Dec
(5) |
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(6) |
Oct
(51) |
Nov
(34) |
Dec
(130) |
| 2009 |
Jan
(22) |
Feb
(20) |
Mar
(41) |
Apr
(45) |
May
(82) |
Jun
(96) |
Jul
(48) |
Aug
(90) |
Sep
(13) |
Oct
(49) |
Nov
(31) |
Dec
(21) |
| 2010 |
Jan
(25) |
Feb
(9) |
Mar
(7) |
Apr
(28) |
May
(27) |
Jun
(7) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
(13) |
Dec
(2) |
| 2013 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <cn...@us...> - 2009-10-27 04:50:15
|
Revision: 592
http://hgengine.svn.sourceforge.net/hgengine/?rev=592&view=rev
Author: cnlohr
Date: 2009-10-27 04:50:09 +0000 (Tue, 27 Oct 2009)
Log Message:
-----------
add XML Saving to everything
Modified Paths:
--------------
Mercury2/modules/BillboardNode.cpp
Mercury2/modules/BillboardNode.h
Mercury2/modules/Terrain.h
Mercury2/modules/TextNode.cpp
Mercury2/modules/TextNode.h
Mercury2/modules/TextPlate.cpp
Mercury2/modules/TextPlate.h
Mercury2/src/Camera.cpp
Mercury2/src/Camera.h
Mercury2/src/FullscreenQuad.h
Mercury2/src/HGMDLModel.h
Mercury2/src/Mercury2.cpp
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryNode.h
Mercury2/src/MercuryVBO.h
Mercury2/src/Quad.h
Mercury2/src/Texture.h
Mercury2/src/TransformNode.cpp
Mercury2/src/TransformNode.h
Mercury2/src/Viewport.cpp
Mercury2/src/Viewport.h
Modified: Mercury2/modules/BillboardNode.cpp
===================================================================
--- Mercury2/modules/BillboardNode.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/modules/BillboardNode.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -60,6 +60,13 @@
return m_billboardMatrix;
}
+void BillboardNode::SaveToXMLTag( MString & sXMLStream )
+{
+ TransformNode::SaveToXMLTag( sXMLStream );
+ sXMLStream += ssprintf( "billboardaxis=\"%f,%f,%f\" spheremode=\"%d\" ",
+ m_billboardAxis[0], m_billboardAxis[1], m_billboardAxis[2], m_sphere );
+}
+
void BillboardNode::LoadFromXML(const XMLNode& node)
{
TransformNode::LoadFromXML(node);
@@ -68,7 +75,7 @@
m_billboardAxis = MercuryVector::CreateFromString( node.Attribute("billboardaxis") );
if ( !node.Attribute("spheremode").empty() )
- m_sphere = node.Attribute("spheremode") == "true"?true:false;
+ m_sphere = StrToBool( node.Attribute("spheremode") );
}
/****************************************************************************
Modified: Mercury2/modules/BillboardNode.h
===================================================================
--- Mercury2/modules/BillboardNode.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/modules/BillboardNode.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -15,6 +15,7 @@
virtual const MercuryMatrix& GetGlobalMatrix() const;
virtual void LoadFromXML(const XMLNode& node);
+ virtual void SaveToXMLTag( MString & sXMLStream );
GENRTTI(BillboardNode);
Modified: Mercury2/modules/Terrain.h
===================================================================
--- Mercury2/modules/Terrain.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/modules/Terrain.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -20,7 +20,7 @@
virtual MercuryAssetInstance* GenerateInstanceData(MercuryNode* parentNode);
MercuryVertex ComputePosition(const MercuryVertex& p);
MercuryVertex ComputePositionLinear(const MercuryVertex& p);
-
+ GENRTTI( Terrain );
private:
CLASS_HELPERS( HGMDLModel );
void BuildHash();
Modified: Mercury2/modules/TextNode.cpp
===================================================================
--- Mercury2/modules/TextNode.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/modules/TextNode.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -31,6 +31,49 @@
MercuryNode::Update( dTime );
}
+void TextNode::SaveToXML( MString & sXMLStream, int depth )
+{
+ sXMLStream += ssprintf( "%*c<node ", depth*3, 32 );
+
+ SaveBaseXMLTag( sXMLStream );
+ SaveToXMLTag( sXMLStream );
+
+ sXMLStream += "/>\n";
+}
+
+void TextNode::SaveToXMLTag( MString & sXMLStream )
+{
+ MercuryNode::SaveToXMLTag( sXMLStream );
+ if( m_sFont.length() )
+ sXMLStream += ssprintf( "font=\"%s\" ", m_sFont.c_str() );
+ sXMLStream += ssprintf( "size=\"%f\" ", m_fSize );
+ if( m_sText.length() )
+ sXMLStream += ssprintf( "text=\"%s\" ", m_sText.c_str() );
+
+ if( m_fTextWidth < 1e9 )
+ sXMLStream += ssprintf( "width=\"%f\" ", m_fTextWidth );
+
+ sXMLStream += "alignment=\"";
+ switch( m_alignment )
+ {
+ case LEFT:
+ sXMLStream += "LEFT\" ";
+ break;
+ case RIGHT:
+ sXMLStream += "RIGHT\" ";
+ break;
+ case CENTER:
+ sXMLStream += "CENTER\" ";
+ break;
+ case FIT:
+ sXMLStream += "FIT\" ";
+ break;
+ case FIT_FULL:
+ sXMLStream += "FIT_FULL\" ";
+ break;
+ }
+}
+
void TextNode::LoadFromXML(const XMLNode& node)
{
MercuryNode::LoadFromXML(node);
@@ -348,7 +391,7 @@
} else
m_pThisFont = &g_AllFonts[sFont];
SetDirtyText();
-
+ m_sFont = sFont;
return true;
}
Modified: Mercury2/modules/TextNode.h
===================================================================
--- Mercury2/modules/TextNode.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/modules/TextNode.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -45,6 +45,10 @@
inline float GetRMaxX() { return m_fRMaxX; }
inline float GetRMaxY() { return m_fRMaxY; }
+ ///Careful, Text node is a virtual node - it doesn't actually recurse into children.
+ virtual void SaveToXML( MString & sXMLStream, int depth = 0 );
+ virtual void SaveToXMLTag( MString & sXMLStream );
+
GENRTTI(TextNode);
private:
Modified: Mercury2/modules/TextPlate.cpp
===================================================================
--- Mercury2/modules/TextPlate.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/modules/TextPlate.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -19,6 +19,24 @@
}
+void TextPlate::SaveToXML( MString & sXMLStream, int depth )
+{
+ sXMLStream += ssprintf( "%*c<node ", depth*3, 32 );
+
+ SaveBaseXMLTag( sXMLStream );
+ SaveToXMLTag( sXMLStream );
+ m_TextNode->SaveToXMLTag( sXMLStream );
+
+ sXMLStream += "/>\n";
+}
+
+void TextPlate::SaveToXMLTag( MString & sXMLStream )
+{
+ BillboardNode::SaveToXMLTag( sXMLStream );
+ if( m_fvOffset.Length() > 1e-9 )
+ sXMLStream += ssprintf( "offset=\"%f,%f,%f\" ", m_fvOffset[0], m_fvOffset[1], m_fvOffset[2] );
+}
+
void TextPlate::LoadFromXML(const XMLNode& node)
{
BillboardNode::LoadFromXML(node);
Modified: Mercury2/modules/TextPlate.h
===================================================================
--- Mercury2/modules/TextPlate.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/modules/TextPlate.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -13,6 +13,11 @@
TextPlate();
virtual void Update(float dTime);
virtual void LoadFromXML(const XMLNode& node);
+
+ //Because this is a virtual node, we have to abstract from SaveToXML as well.
+ virtual void SaveToXML( MString & sXMLStream, int depth = 0 );
+ virtual void SaveToXMLTag( MString & sXMLStream );
+
GENRTTI(TextPlate);
private:
MercuryVector m_fvOffset;
Modified: Mercury2/src/Camera.cpp
===================================================================
--- Mercury2/src/Camera.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/Camera.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -13,7 +13,6 @@
m_lookAt = MercuryVector(0,0,-1);
REGISTER_MESSAGE_WITH_DELEGATE( INPUTEVENT_MOUSE, &CameraNode::HandleMouseInput );
REGISTER_MESSAGE_WITH_DELEGATE( "SetCameraPosition", &CameraNode::SetCameraPosition );
- POST_MESSAGE("QueryTerrainPoint", new VertexDataMessage(m_origionalPosition), 0.00001);
}
void CameraNode::PreRender(const MercuryMatrix& matrix)
@@ -101,6 +100,7 @@
void CameraNode::SetCameraPosition(const MessageData& data)
{
const VertexDataMessage& m( dynamic_cast<const VertexDataMessage&>( data ) );
+
SetPosition(m.Vertex);
}
@@ -126,7 +126,8 @@
// SetPosition( p );
m_origionalPosition = p;
TransformNode::Update( dTime );
-
+
+
if (a != 0 || b != 0)
{
POST_MESSAGE("QueryTerrainPoint", new VertexDataMessage(p), 0);
@@ -134,6 +135,24 @@
}
+void CameraNode::SaveToXMLTag( MString & sXMLStream )
+{
+ //Tricky - we want to save where we think we are, not where the camera is.
+ //That way when we get re-opened, we are where we should be.
+ MercuryVertex OrigPos = GetPosition();
+ SetPosition( m_origionalPosition );
+ TransformNode::SaveToXMLTag( sXMLStream );
+ SetPosition( OrigPos );
+}
+
+void CameraNode::LoadFromXML(const XMLNode& node)
+{
+ TransformNode::LoadFromXML( node );
+ m_origionalPosition = GetPosition();
+ POST_MESSAGE("QueryTerrainPoint", new VertexDataMessage(GetPosition()), 0.00001);
+}
+
+
/****************************************************************************
* Copyright (C) 2009 by Joshua Allen *
* *
Modified: Mercury2/src/Camera.h
===================================================================
--- Mercury2/src/Camera.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/Camera.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -14,6 +14,8 @@
virtual void PreRender(const MercuryMatrix& matrix);
virtual void Render(const MercuryMatrix& matrix);
virtual void SetCameraPosition(const MessageData& data);
+ virtual void LoadFromXML(const XMLNode& node);
+ virtual void SaveToXMLTag( MString & sXMLStream );
GENRTTI(CameraNode);
private:
Modified: Mercury2/src/FullscreenQuad.h
===================================================================
--- Mercury2/src/FullscreenQuad.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/FullscreenQuad.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -13,6 +13,7 @@
virtual void Render(const MercuryNode* node);
static FullscreenQuad* Generate();
+ GENRTTI( FullscreenQuad );
private:
MercuryMatrix m_matrix;
};
Modified: Mercury2/src/HGMDLModel.h
===================================================================
--- Mercury2/src/HGMDLModel.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/HGMDLModel.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -22,7 +22,7 @@
virtual bool DoCullingTests(OcclusionResult& occlusion, const MercuryMatrix& matrix);
virtual void PreRender(const MercuryNode* node);
virtual void Render(const MercuryNode* node);
-
+ GENRTTI( HGMDLModel );
protected:
std::vector< MAutoPtr< HGMDLMesh > > m_meshes;
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/Mercury2.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -177,6 +177,7 @@
fpsTimer = timer;
}
+//Uncomment to enable scenegraph saving.
MString st;
root->SaveToXML( st );
StringToFile( "test.xml", st );
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/MercuryAsset.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -79,7 +79,7 @@
void MercuryAsset::SaveToXML( MString & sXMLStream, int depth )
{
- sXMLStream += ssprintf( "%*c<node type=\"%s\" ", depth*3, 32, GetType() );
+ sXMLStream += ssprintf( "%*c<asset type=\"%s\" ", depth*3, 32, GetType() );
if( m_path.length() )
sXMLStream += ssprintf( "file=\"%s\" ", m_path.c_str() );
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/MercuryNode.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -310,10 +310,9 @@
void MercuryNode::SaveToXML( MString & sXMLStream, int depth )
{
- sXMLStream += ssprintf( "%*c<node type=\"%s\" ", depth*3, 32, GetType() );
- if( GetName().length() )
- sXMLStream += ssprintf( "name=\"%s\" ", GetName().c_str() );
+ sXMLStream += ssprintf( "%*c<node ", depth * 3, 32 );
+ SaveBaseXMLTag( sXMLStream );
SaveToXMLTag( sXMLStream );
bool bNoChildren = true;
@@ -346,9 +345,18 @@
void MercuryNode::SaveToXMLTag( MString & sXMLStream )
{
- //MercuryNodes do not have anything else to save.
+ //Don't actually do anything here
}
+void MercuryNode::SaveBaseXMLTag( MString & sXMLStream )
+{
+ sXMLStream+= ssprintf( "type=\"%s\" ", GetType() );
+ if( GetName().length() )
+ sXMLStream += ssprintf( "name=\"%s\" ", GetName().c_str() );
+ if( m_useAlphaPath )
+ sXMLStream += "alphaPath=\"true\" ";
+}
+
void MercuryNode::PreRender(const MercuryMatrix& matrix)
{
SetCulled( false );
Modified: Mercury2/src/MercuryNode.h
===================================================================
--- Mercury2/src/MercuryNode.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/MercuryNode.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -97,6 +97,8 @@
The various abstracted classes must append on arguments they require. */
virtual void SaveToXMLTag( MString & sXMLStream );
+ void SaveBaseXMLTag( MString & sXMLStream );
+
///Run on a child when added to a parent
virtual void OnAdded() {};
Modified: Mercury2/src/MercuryVBO.h
===================================================================
--- Mercury2/src/MercuryVBO.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/MercuryVBO.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -37,6 +37,7 @@
void DirtyVertices() { m_bDirtyVertices = 1; }
void DirtyIndices() { m_bDirtyIndices = 1; }
+ GENRTTI( MercuryVBO );
private:
virtual void InitVBO();
Modified: Mercury2/src/Quad.h
===================================================================
--- Mercury2/src/Quad.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/Quad.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -11,7 +11,7 @@
~Quad();
static Quad* Generate();
-
+ GENRTTI( Quad );
private:
};
Modified: Mercury2/src/Texture.h
===================================================================
--- Mercury2/src/Texture.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/Texture.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -34,6 +34,7 @@
static void ApplyActiveTextures(uint16_t stride);
static void DisableUnusedTextures();
+ GENRTTI( Texture );
private:
void LoadImagePath(const MString& path);
Modified: Mercury2/src/TransformNode.cpp
===================================================================
--- Mercury2/src/TransformNode.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/TransformNode.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -121,6 +121,28 @@
}
}
+void TransformNode::SaveToXMLTag( MString & sXMLStream )
+{
+ MercuryNode::SaveToXMLTag( sXMLStream );
+
+ const MercuryVertex & scale = GetScale();
+ if( scale[0] != 1 ) sXMLStream += ssprintf( "scalex=\"%f\" ", scale[0] );
+ if( scale[1] != 1 ) sXMLStream += ssprintf( "scaley=\"%f\" ", scale[1] );
+ if( scale[2] != 1 ) sXMLStream += ssprintf( "scalez=\"%f\" ", scale[2] );
+
+ const MercuryVertex & pos = GetPosition();
+ if( pos[0] != 0 ) sXMLStream += ssprintf( "movx=\"%f\" ", pos[0] );
+ if( pos[1] != 0 ) sXMLStream += ssprintf( "movy=\"%f\" ", pos[1] );
+ if( pos[2] != 0 ) sXMLStream += ssprintf( "movz=\"%f\" ", pos[2] );
+
+ MercuryVertex r;
+ GetRotation().ToEuler( r );
+ if( r[0] != 0 ) sXMLStream += ssprintf( "rotx=\"%f\" ", r[0] * RADDEG );
+ if( r[1] != 0 ) sXMLStream += ssprintf( "roty=\"%f\" ", r[1] * RADDEG );
+ if( r[2] != 0 ) sXMLStream += ssprintf( "rotz=\"%f\" ", r[2] * RADDEG );
+
+}
+
void TransformNode::LoadFromXML(const XMLNode& node)
{
MercuryVertex pos(m_position), scale(m_scale);
Modified: Mercury2/src/TransformNode.h
===================================================================
--- Mercury2/src/TransformNode.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/TransformNode.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -33,7 +33,8 @@
virtual void ComputeMatrix();
virtual void LoadFromXML(const XMLNode& node);
-
+ virtual void SaveToXMLTag( MString & sXMLStream );
+
virtual void OnAdded();
virtual void RecursivePreRender();
Modified: Mercury2/src/Viewport.cpp
===================================================================
--- Mercury2/src/Viewport.cpp 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/Viewport.cpp 2009-10-27 04:50:09 UTC (rev 592)
@@ -95,6 +95,13 @@
MercuryNode::PostRender(matrix);
}
+void Viewport::SaveToXMLTag( MString & sXMLStream )
+{
+ MercuryNode::SaveToXMLTag( sXMLStream );
+ sXMLStream += ssprintf( "xfactor=\"%f\" yfactor=\"%f\" minx=\"%d\" miny=\"%d\" fov=\"%f\" near=\"%f\" far=\"%f\" ",
+ m_xFactor, m_yFactor, m_minx, m_miny, m_fov, m_frustum.ZNear(), m_frustum.ZFar() );
+}
+
void Viewport::LoadFromXML(const XMLNode& node)
{
m_xFactor = StrToFloat(node.Attribute("xfactor"), 1.0f);
@@ -104,7 +111,8 @@
MercuryWindow* w = MercuryWindow::GetCurrentWindow();
- m_frustum.SetPerspective( StrToFloat(node.Attribute("fov")),
+ m_fov = StrToFloat(node.Attribute("fov"), 60.f);
+ m_frustum.SetPerspective( m_fov,
(w->Width()*m_xFactor)/(w->Height()*m_yFactor),
// StrToFloat(node.Attribute("aspect")),
StrToFloat(node.Attribute("near")),
Modified: Mercury2/src/Viewport.h
===================================================================
--- Mercury2/src/Viewport.h 2009-10-27 04:49:25 UTC (rev 591)
+++ Mercury2/src/Viewport.h 2009-10-27 04:50:09 UTC (rev 592)
@@ -17,12 +17,13 @@
virtual void PostRender(const MercuryMatrix& matrix);
virtual void LoadFromXML(const XMLNode& node);
-
+ virtual void SaveToXMLTag( MString & sXMLStream );
GENRTTI(Viewport);
private:
Frustum m_frustum;
float m_xFactor, m_yFactor;
int m_minx, m_miny;
+ float m_fov;
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-27 04:49:35
|
Revision: 591
http://hgengine.svn.sourceforge.net/hgengine/?rev=591&view=rev
Author: cnlohr
Date: 2009-10-27 04:49:25 +0000 (Tue, 27 Oct 2009)
Log Message:
-----------
add note about poor testing
Modified Paths:
--------------
Mercury2/src/MQuaternion.h
Modified: Mercury2/src/MQuaternion.h
===================================================================
--- Mercury2/src/MQuaternion.h 2009-10-27 04:48:57 UTC (rev 590)
+++ Mercury2/src/MQuaternion.h 2009-10-27 04:49:25 UTC (rev 591)
@@ -24,7 +24,8 @@
void FromAxisAngle(const MercuryVertex& p, const float radians);
void ToAxisAngle(float& angle, float& x, float& y, float& z) const;
- //Convert the quaternion back into euler angles (mathematically doesn't always work)
+ ///Convert the quaternion back into euler angles (mathematically doesn't always work)
+ ///WARNING: This has not been tested well.
void ToEuler(MercuryVertex&angles) const;
///Access a component of the quaternion with the [] operator
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-27 04:49:07
|
Revision: 590
http://hgengine.svn.sourceforge.net/hgengine/?rev=590&view=rev
Author: cnlohr
Date: 2009-10-27 04:48:57 +0000 (Tue, 27 Oct 2009)
Log Message:
-----------
add to euler (useful for saving) it hasn't actually been tested yet...
Modified Paths:
--------------
Mercury2/src/MQuaternion.cpp
Mercury2/src/MQuaternion.h
Modified: Mercury2/src/MQuaternion.cpp
===================================================================
--- Mercury2/src/MQuaternion.cpp 2009-10-27 03:18:28 UTC (rev 589)
+++ Mercury2/src/MQuaternion.cpp 2009-10-27 04:48:57 UTC (rev 590)
@@ -52,6 +52,14 @@
*this = this->normalize();
}
+void MQuaternion::ToEuler(MercuryVertex&angles) const
+{
+ //According to http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles (Oct 26, 2009)
+ angles[0] = atan2( 2 * (m_wxyz[0]*m_wxyz[1] + m_wxyz[2]*m_wxyz[3]), 1 - 2 * (m_wxyz[1]*m_wxyz[1] + m_wxyz[2]*m_wxyz[2] ) );
+ angles[1] = asin( 2 * (m_wxyz[0] *m_wxyz[2] - m_wxyz[3]*m_wxyz[1] ) );
+ angles[2] = atan2( 2 * (m_wxyz[0]*m_wxyz[3] + m_wxyz[1]*m_wxyz[2]), 1 - 2 * (m_wxyz[2]*m_wxyz[2] + m_wxyz[3]*m_wxyz[3] ) );
+}
+
MQuaternion MQuaternion::CreateFromAxisAngle(const MercuryVertex& p, const float radians)
{
MQuaternion q;
Modified: Mercury2/src/MQuaternion.h
===================================================================
--- Mercury2/src/MQuaternion.h 2009-10-27 03:18:28 UTC (rev 589)
+++ Mercury2/src/MQuaternion.h 2009-10-27 04:48:57 UTC (rev 590)
@@ -23,6 +23,9 @@
static MQuaternion CreateFromAxisAngle(const MercuryVertex& p, const float radians);
void FromAxisAngle(const MercuryVertex& p, const float radians);
void ToAxisAngle(float& angle, float& x, float& y, float& z) const;
+
+ //Convert the quaternion back into euler angles (mathematically doesn't always work)
+ void ToEuler(MercuryVertex&angles) const;
///Access a component of the quaternion with the [] operator
inline float & operator[] ( const WXYZ i ) { return m_wxyz[i]; }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-27 03:18:34
|
Revision: 589
http://hgengine.svn.sourceforge.net/hgengine/?rev=589&view=rev
Author: cnlohr
Date: 2009-10-27 03:18:28 +0000 (Tue, 27 Oct 2009)
Log Message:
-----------
first incarnation of XML Saving
Modified Paths:
--------------
Mercury2/src/Mercury2.cpp
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryAsset.h
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryNode.h
Mercury2/src/MessageHandler.h
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2009-10-27 03:18:01 UTC (rev 588)
+++ Mercury2/src/Mercury2.cpp 2009-10-27 03:18:28 UTC (rev 589)
@@ -42,7 +42,9 @@
{
char buffer[2048];
LOG.Write(ssprintf( "Fatal error encountered in Mercury 2: %s", cn_get_crash_description( signal ) ));
- cnget_backtrace( 1, buffer, 2047 );
+ cnget_backtrace( 1, buffer, 2047 );
+
+ //XXX: Sometimes we produce a crash, we get the crash report, and the next line doesn't work... This should be examined.
LOG.Write( buffer );
return 0; //Continue regular crash.
@@ -173,7 +175,11 @@
#endif
m_count = 0;
fpsTimer = timer;
- }
+ }
+
+ MString st;
+ root->SaveToXML( st );
+ StringToFile( "test.xml", st );
}
while ( w->PumpMessages() );
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-10-27 03:18:01 UTC (rev 588)
+++ Mercury2/src/MercuryAsset.cpp 2009-10-27 03:18:28 UTC (rev 589)
@@ -77,6 +77,22 @@
}
}
+void MercuryAsset::SaveToXML( MString & sXMLStream, int depth )
+{
+ sXMLStream += ssprintf( "%*c<node type=\"%s\" ", depth*3, 32, GetType() );
+ if( m_path.length() )
+ sXMLStream += ssprintf( "file=\"%s\" ", m_path.c_str() );
+
+ SaveToXMLTag( sXMLStream );
+ sXMLStream += "/>\n";
+}
+
+void MercuryAsset::SaveToXMLTag( MString & sXMLStream )
+{
+ //Assets, generally do not actually have anything else to save...
+}
+
+
void MercuryAsset::DrawAxes()
{
GLCALL( glBegin(GL_LINES) );
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-10-27 03:18:01 UTC (rev 588)
+++ Mercury2/src/MercuryAsset.h 2009-10-27 03:18:28 UTC (rev 589)
@@ -45,7 +45,15 @@
///Loads an asset from an XMLAsset representing itself
virtual void LoadFromXML(const XMLNode& node);
-
+
+ ///Saves the main body of an XML node.
+ /** This behaves very similarly to MercuryNode::SaveToXML
+ The most notable difference is it doesn't handle children.*/
+ virtual void SaveToXML( MString & sXMLStream, int depth = 0 );
+
+ ///Saves individual portions into the tag.
+ virtual void SaveToXMLTag( MString & sXMLStream );
+
virtual void LoadedCallback(); //thread safe
inline void IsInstanced(bool b) { m_isInstanced = b; }
@@ -66,6 +74,8 @@
virtual MercuryAssetInstance* GenerateInstanceData(MercuryNode* parentNode);
LoadState GetLoadState(); //thread safe
+
+ GENRTTI( MercuryAsset );
protected:
void SetLoadState(LoadState ls); //thread safe
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-10-27 03:18:01 UTC (rev 588)
+++ Mercury2/src/MercuryNode.cpp 2009-10-27 03:18:28 UTC (rev 589)
@@ -306,9 +306,48 @@
for( unsigned i = 0; i < out.size(); i++ )
m_iForcePasses = m_iForcePasses | (1<<StrToInt( out[i] ) );
}
+}
+void MercuryNode::SaveToXML( MString & sXMLStream, int depth )
+{
+ sXMLStream += ssprintf( "%*c<node type=\"%s\" ", depth*3, 32, GetType() );
+ if( GetName().length() )
+ sXMLStream += ssprintf( "name=\"%s\" ", GetName().c_str() );
+
+ SaveToXMLTag( sXMLStream );
+
+ bool bNoChildren = true;
+ if( !m_assets.empty() )
+ {
+ //No children yet (but we have them, so terminate (>) )
+ if( bNoChildren )
+ sXMLStream += ">\n";
+ bNoChildren = false;
+
+ for( std::list< MercuryAssetInstance * >::iterator i = m_assets.begin(); i != m_assets.end(); i++ )
+ (*i)->Asset().SaveToXML( sXMLStream, depth + 1 );
+ }
+
+ if( ! m_children.empty() )
+ {
+ //No children yet (but we have them, so terminate (>) )
+ if( bNoChildren )
+ sXMLStream += ">\n";
+ bNoChildren = false;
+ for( std::list< MercuryNode * >::iterator i = m_children.begin(); i != m_children.end(); i++ )
+ (*i)->SaveToXML( sXMLStream, depth + 1 );
+ }
+
+ if( bNoChildren )
+ sXMLStream += "/>\n";
+ else
+ sXMLStream += ssprintf( "%*c</node>\n", depth * 3, 32 );
}
+void MercuryNode::SaveToXMLTag( MString & sXMLStream )
+{
+ //MercuryNodes do not have anything else to save.
+}
void MercuryNode::PreRender(const MercuryMatrix& matrix)
{
Modified: Mercury2/src/MercuryNode.h
===================================================================
--- Mercury2/src/MercuryNode.h 2009-10-27 03:18:01 UTC (rev 588)
+++ Mercury2/src/MercuryNode.h 2009-10-27 03:18:28 UTC (rev 589)
@@ -17,12 +17,6 @@
Each node exists as a single entity in the scene graph.
**/
-#define GENRTTI(x) static const x* Cast(const MercuryNode* n) \
-{ if (n==NULL) return NULL; return dynamic_cast<const x*>(n); } \
-static x* Cast(MercuryNode* n) \
-{ if (n==NULL) return NULL; return dynamic_cast<x*>(n); } \
-virtual const char * GetType() { return #x; }
-
/*
#define GENRTTI(x) static bool IsMyType(const MercuryNode* n) \
{ const MercuryNode* tn = n; \
@@ -87,7 +81,22 @@
///Loads a node from an XMLNode representing itself
virtual void LoadFromXML(const XMLNode& node);
-
+
+ ///Saves the main body of an XML node.
+ /** This, in the base class sets up the stream (i.e. <node and invokes the
+ SaveToXML tag then outputs the termination (i.e. /> or > ) it then outputs
+ all of the various Assets and Nodes that are attached as children. It handles
+ closing the argument as well. Unless you intend to modify the behavior, do not
+ override this. In addition, it is generally best to completely re-write it if
+ you intend to modify the behavior. */
+ virtual void SaveToXML( MString & sXMLStream, int depth = 0 );
+
+ ///Saves just the tag portion of an XML node.
+ /** The update process here is tricky. This is invoked by the base
+ MercuryNode class. It does not handle setting it up, i.e. type=... name=...
+ The various abstracted classes must append on arguments they require. */
+ virtual void SaveToXMLTag( MString & sXMLStream );
+
///Run on a child when added to a parent
virtual void OnAdded() {};
Modified: Mercury2/src/MessageHandler.h
===================================================================
--- Mercury2/src/MessageHandler.h 2009-10-27 03:18:01 UTC (rev 588)
+++ Mercury2/src/MessageHandler.h 2009-10-27 03:18:28 UTC (rev 589)
@@ -3,9 +3,14 @@
#include <MercuryString.h>
#include <global.h>
-
#include <MercuryVertex.h>
+#define GENRTTI(x) static const x* Cast(const MessageHandler* n) \
+{ if (!n) return 0; return dynamic_cast<const x*>(n); } \
+static x* Cast(MessageHandler* n) \
+{ if (!n) return 0; return dynamic_cast<x*>(n); } \
+virtual const char * GetType() { return #x; }
+
class MessageData
{
public:
@@ -23,9 +28,10 @@
class MessageHandler
{
- public:
- virtual ~MessageHandler() {};
- virtual void HandleMessage(const MString& message, const MessageData& data) {};
+public:
+ virtual ~MessageHandler() {};
+ virtual void HandleMessage(const MString& message, const MessageData& data) {};
+ GENRTTI( MessageHandler );
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-27 03:18:13
|
Revision: 588
http://hgengine.svn.sourceforge.net/hgengine/?rev=588&view=rev
Author: cnlohr
Date: 2009-10-27 03:18:01 +0000 (Tue, 27 Oct 2009)
Log Message:
-----------
Don't require execinfo
Modified Paths:
--------------
Mercury2/src/MercuryBacktrace.c
Modified: Mercury2/src/MercuryBacktrace.c
===================================================================
--- Mercury2/src/MercuryBacktrace.c 2009-10-27 03:09:56 UTC (rev 587)
+++ Mercury2/src/MercuryBacktrace.c 2009-10-27 03:18:01 UTC (rev 588)
@@ -28,8 +28,11 @@
#ifdef _CLINUX
#include <malloc.h>
-#include <execinfo.h>
-#define HAVE_EXECINFO
+#include <execinfo.h>
+
+//The following is commented out, since I am having trouble with it. It also would not
+//make it possible to blame modules (Which I would like to implement in the near future)
+//#define HAVE_EXECINFO
#endif
@@ -104,7 +107,7 @@
for( ; i < SkipFirst; i++ )
if( buf[i] == 0 )
- return 0;
+ return 0;
while( buf[i] != 0 )
{
@@ -204,8 +207,8 @@
printf( "Crash Progress: Executing command: %s\n", execline );
#else
sprintf( execline, "addr2line -fC -e %s 0x%lx 1>&%d", file, (unsigned long)offset, fds[1] );
-#endif
- system( execline );
+#endif
+ system( execline );
readbytes = read( fds[0], buffer, 1024 );
if( readbytes + 1 >= maxlen )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-27 03:10:06
|
Revision: 587
http://hgengine.svn.sourceforge.net/hgengine/?rev=587&view=rev
Author: cnlohr
Date: 2009-10-27 03:09:56 +0000 (Tue, 27 Oct 2009)
Log Message:
-----------
add utility function for file writing
Modified Paths:
--------------
Mercury2/src/MercuryUtil.cpp
Mercury2/src/MercuryUtil.h
Modified: Mercury2/src/MercuryUtil.cpp
===================================================================
--- Mercury2/src/MercuryUtil.cpp 2009-10-27 03:09:34 UTC (rev 586)
+++ Mercury2/src/MercuryUtil.cpp 2009-10-27 03:09:56 UTC (rev 587)
@@ -228,6 +228,15 @@
return length;
}
+bool StringToFile( const MString & sFileName, const MString & data )
+{
+ MercuryFile * f = FILEMAN.Open( sFileName, MFP_WRITE_ONLY );
+ if( !f ) return false;
+ f->Write( data.c_str(), data.length() );
+ delete f;
+}
+
+
int GeneralUsePrimes[] = { 3, 13, 37, 73, 131, 229, 337, 821, 2477, 4594, 8941, 14797, 24953, 39041, 60811, 104729 };
int GetAPrime( int ith )
Modified: Mercury2/src/MercuryUtil.h
===================================================================
--- Mercury2/src/MercuryUtil.h 2009-10-27 03:09:34 UTC (rev 586)
+++ Mercury2/src/MercuryUtil.h 2009-10-27 03:09:56 UTC (rev 587)
@@ -96,6 +96,9 @@
///Open up filename: sFileName and dump it into a new buffer; you must delete the return value when done.
///The return value is -1 if there was an issue, otherwise it is valid.
long FileToString( const MString & sFileName, char * & data );
+
+///Take a string and write it to the hard drive as a file. True indicates everything is okay.
+bool StringToFile( const MString & sFileName, const MString & data );
/* These two functions are very different */
/// nextPow2 will go to the NEXT power of 2 even if x is already a power of 2.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-27 03:09:40
|
Revision: 586
http://hgengine.svn.sourceforge.net/hgengine/?rev=586&view=rev
Author: cnlohr
Date: 2009-10-27 03:09:34 +0000 (Tue, 27 Oct 2009)
Log Message:
-----------
Write should not be changing the contents of what you are writing.
Modified Paths:
--------------
Mercury2/src/MercuryFile.h
Mercury2/src/MercuryFileDriverDirect.cpp
Mercury2/src/MercuryFileDriverDirect.h
Mercury2/src/MercuryFileDriverPacked.cpp
Mercury2/src/MercuryFileDriverPacked.h
Mercury2/src/MercuryFileDriverZipped.cpp
Mercury2/src/MercuryFileDriverZipped.h
Modified: Mercury2/src/MercuryFile.h
===================================================================
--- Mercury2/src/MercuryFile.h 2009-10-26 22:16:58 UTC (rev 585)
+++ Mercury2/src/MercuryFile.h 2009-10-27 03:09:34 UTC (rev 586)
@@ -34,7 +34,7 @@
///Return the length of the file (in bytes)
virtual unsigned long Length() = 0;
///Writes length bytes, returns true if it wrote successfully
- virtual bool Write( void * data, unsigned long length ) = 0;
+ virtual bool Write( const void * data, unsigned long length ) = 0;
///Returns the number of bytes read
virtual unsigned long Read( void * data, unsigned long length ) = 0;
///Reads one line from the file.
Modified: Mercury2/src/MercuryFileDriverDirect.cpp
===================================================================
--- Mercury2/src/MercuryFileDriverDirect.cpp 2009-10-26 22:16:58 UTC (rev 585)
+++ Mercury2/src/MercuryFileDriverDirect.cpp 2009-10-27 03:09:34 UTC (rev 586)
@@ -139,7 +139,7 @@
return ret;
}
-bool MercuryFileObjectDirect::Write( void * data, unsigned long length )
+bool MercuryFileObjectDirect::Write( const void * data, unsigned long length )
{
if ( m_fF == NULL )
return false;
Modified: Mercury2/src/MercuryFileDriverDirect.h
===================================================================
--- Mercury2/src/MercuryFileDriverDirect.h 2009-10-26 22:16:58 UTC (rev 585)
+++ Mercury2/src/MercuryFileDriverDirect.h 2009-10-27 03:09:34 UTC (rev 586)
@@ -15,7 +15,7 @@
virtual void Close();
virtual unsigned long Tell();
virtual unsigned long Length();
- virtual bool Write( void * data, unsigned long length );
+ virtual bool Write( const void * data, unsigned long length );
virtual unsigned long Read( void * data, unsigned long length );
virtual bool Check();
virtual bool Eof();
Modified: Mercury2/src/MercuryFileDriverPacked.cpp
===================================================================
--- Mercury2/src/MercuryFileDriverPacked.cpp 2009-10-26 22:16:58 UTC (rev 585)
+++ Mercury2/src/MercuryFileDriverPacked.cpp 2009-10-27 03:09:34 UTC (rev 586)
@@ -48,7 +48,7 @@
return m_size;
}
-bool MercuryFileObjectPacked::Write( void * data, unsigned long length )
+bool MercuryFileObjectPacked::Write( const void * data, unsigned long length )
{
//First make sure we won't over-write good data.
if ( length >= ( m_size - m_location ) )
Modified: Mercury2/src/MercuryFileDriverPacked.h
===================================================================
--- Mercury2/src/MercuryFileDriverPacked.h 2009-10-26 22:16:58 UTC (rev 585)
+++ Mercury2/src/MercuryFileDriverPacked.h 2009-10-27 03:09:34 UTC (rev 586)
@@ -14,7 +14,7 @@
virtual void Close();
virtual unsigned long Tell();
virtual unsigned long Length();
- virtual bool Write( void * data, unsigned long length );
+ virtual bool Write( const void * data, unsigned long length );
virtual unsigned long Read( void * data, unsigned long length );
virtual bool Check();
virtual bool Eof();
Modified: Mercury2/src/MercuryFileDriverZipped.cpp
===================================================================
--- Mercury2/src/MercuryFileDriverZipped.cpp 2009-10-26 22:16:58 UTC (rev 585)
+++ Mercury2/src/MercuryFileDriverZipped.cpp 2009-10-27 03:09:34 UTC (rev 586)
@@ -121,7 +121,7 @@
return m_size;
}
-bool MercuryFileObjectZipped::Write( void * data, unsigned long length )
+bool MercuryFileObjectZipped::Write( const void * data, unsigned long length )
{
//You cannot write to a zipped file in the store form.
return false;
Modified: Mercury2/src/MercuryFileDriverZipped.h
===================================================================
--- Mercury2/src/MercuryFileDriverZipped.h 2009-10-26 22:16:58 UTC (rev 585)
+++ Mercury2/src/MercuryFileDriverZipped.h 2009-10-27 03:09:34 UTC (rev 586)
@@ -15,7 +15,7 @@
virtual void Close();
virtual unsigned long Tell();
virtual unsigned long Length();
- virtual bool Write( void * data, unsigned long length );
+ virtual bool Write( const void * data, unsigned long length );
virtual unsigned long Read( void * data, unsigned long length );
virtual bool Check();
virtual bool Eof();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-26 22:17:05
|
Revision: 585
http://hgengine.svn.sourceforge.net/hgengine/?rev=585&view=rev
Author: cnlohr
Date: 2009-10-26 22:16:58 +0000 (Mon, 26 Oct 2009)
Log Message:
-----------
Add Delegates to the Mesage Manager. They help clean up the syntax for receiving messages, as it makes it possible for you to just call the function you want called based on message, so you don't have to have if clauses for messages.
Modified Paths:
--------------
Mercury2/src/Camera.cpp
Mercury2/src/Camera.h
Mercury2/src/MercuryMessageManager.cpp
Mercury2/src/MercuryMessageManager.h
Mercury2/src/ModuleManager.h
Modified: Mercury2/src/Camera.cpp
===================================================================
--- Mercury2/src/Camera.cpp 2009-10-26 02:00:33 UTC (rev 584)
+++ Mercury2/src/Camera.cpp 2009-10-26 22:16:58 UTC (rev 585)
@@ -11,8 +11,8 @@
:TransformNode(), m_x(0), m_y(0)
{
m_lookAt = MercuryVector(0,0,-1);
- REGISTER_FOR_MESSAGE( INPUTEVENT_MOUSE );
- REGISTER_FOR_MESSAGE( "SetCameraPosition" );
+ REGISTER_MESSAGE_WITH_DELEGATE( INPUTEVENT_MOUSE, &CameraNode::HandleMouseInput );
+ REGISTER_MESSAGE_WITH_DELEGATE( "SetCameraPosition", &CameraNode::SetCameraPosition );
POST_MESSAGE("QueryTerrainPoint", new VertexDataMessage(m_origionalPosition), 0.00001);
}
@@ -80,39 +80,28 @@
// EYE.Print();
}
-void CameraNode::HandleMessage(const MString& message, const MessageData& data)
+void CameraNode::HandleMouseInput(const MessageData& data)
{
- if (message == INPUTEVENT_MOUSE)
- {
- const MouseInput& m( dynamic_cast<const MouseInput&>( data ) );
-
- m_y += m.dy/1200.0f;
- m_x += m.dx/1200.0f;
-
- m_y = Clamp((-Q_PI/2.0f)+0.00001f, (Q_PI/2.0f)-0.00001f, m_y);
+ const MouseInput& m( dynamic_cast<const MouseInput&>( data ) );
+
+ m_y += m.dy/1200.0f;
+ m_x += m.dx/1200.0f;
+
+ m_y = Clamp((-Q_PI/2.0f)+0.00001f, (Q_PI/2.0f)-0.00001f, m_y);
- MQuaternion qLeftRight = MQuaternion::CreateFromAxisAngle(MercuryVector(0,1,0), m_x);
- MercuryVector LocalX = MercuryVector( 1, 0, 0 );
- LocalX = LocalX.Rotate( qLeftRight );
-
- MQuaternion qUpDown = MQuaternion::CreateFromAxisAngle(LocalX, m_y);
-
-// qLeftRight.Print();
-
- SetRotation(qUpDown*qLeftRight);
-// GetRotation().Print();
-// POST_MESSAGE("QueryTerrainPoint", new MessageData(), 0);
+ MQuaternion qLeftRight = MQuaternion::CreateFromAxisAngle(MercuryVector(0,1,0), m_x);
+ MercuryVector LocalX = MercuryVector( 1, 0, 0 );
+ LocalX = LocalX.Rotate( qLeftRight );
+
+ MQuaternion qUpDown = MQuaternion::CreateFromAxisAngle(LocalX, m_y);
+
+ SetRotation(qUpDown*qLeftRight);
+}
- }
- else if (message == "SetCameraPosition")
- {
-// LOG.Write("SetCamPosition");
- const VertexDataMessage& m( dynamic_cast<const VertexDataMessage&>( data ) );
- SetPosition(m.Vertex);
-// Update(0);
-// ComputeMatrix();
-// m->Vertex.Print();
- }
+void CameraNode::SetCameraPosition(const MessageData& data)
+{
+ const VertexDataMessage& m( dynamic_cast<const VertexDataMessage&>( data ) );
+ SetPosition(m.Vertex);
}
void CameraNode::Update(float dTime)
Modified: Mercury2/src/Camera.h
===================================================================
--- Mercury2/src/Camera.h 2009-10-26 02:00:33 UTC (rev 584)
+++ Mercury2/src/Camera.h 2009-10-26 22:16:58 UTC (rev 585)
@@ -9,10 +9,11 @@
public:
CameraNode();
virtual void ComputeMatrix();
- virtual void HandleMessage(const MString& message, const MessageData& data);
+ virtual void HandleMouseInput(const MessageData& data);
virtual void Update(float dTime);
virtual void PreRender(const MercuryMatrix& matrix);
virtual void Render(const MercuryMatrix& matrix);
+ virtual void SetCameraPosition(const MessageData& data);
GENRTTI(CameraNode);
private:
Modified: Mercury2/src/MercuryMessageManager.cpp
===================================================================
--- Mercury2/src/MercuryMessageManager.cpp 2009-10-26 02:00:33 UTC (rev 584)
+++ Mercury2/src/MercuryMessageManager.cpp 2009-10-26 22:16:58 UTC (rev 585)
@@ -46,24 +46,17 @@
}
}
-void MercuryMessageManager::RegisterForMessage(const MString& message, MessageHandler* ptr)
-{
- MSemaphoreLock lock(&m_recipientLock);
- m_messageRecipients[message].push_back(ptr);
-}
-
void MercuryMessageManager::UnRegisterForMessage(const MString& message, MessageHandler* ptr)
{
MSemaphoreLock lock(&m_recipientLock);
- std::list< MessageHandler* >& subscriptions = m_messageRecipients[message];
- std::list< MessageHandler* >::iterator i = subscriptions.begin();
+ std::list< MessagePair >& subscriptions = m_messageRecipients[message];
+ std::list< MessagePair >::iterator i = subscriptions.begin();
for (;i != subscriptions.end(); ++i)
{
- if (*i == ptr)
+ if ((*i).h == ptr)
{
- printf("Deleted subscription\n");
subscriptions.erase( i );
return;
}
@@ -71,22 +64,39 @@
}
+void MercuryMessageManager::RegisterForMessage(const MString& message, MessageHandler* ptr, Delegate d )
+{
+ MSemaphoreLock lock(&m_recipientLock);
+ m_messageRecipients[message].push_back(MessagePair(ptr, d));
+
+}
+
+
void MercuryMessageManager::FireOffMessage( const MessageHolder & message )
{
- std::list< MessageHandler* > recipients;
+ std::list< MessagePair > recipients;
{
//copy list first (quick lock)
MSemaphoreLock lock(&m_recipientLock);
- std::list< MessageHandler* > * r = m_messageRecipients.get( message.message );
+ std::list< MessagePair > * r = m_messageRecipients.get( message.message );
if ( r ) recipients = *r;
}
if ( !recipients.empty() )
{
- std::list< MessageHandler* >::iterator recipient = recipients.begin();
+ std::list< MessagePair >::iterator recipient = recipients.begin();
for (; recipient != recipients.end(); ++recipient)
{
- (*recipient)->HandleMessage(message.message, *(message.data) );
+ MessagePair & mp = *recipient;
+ //Okay, the following lines look horrible. Reason is we're using
+ //a horrible horrible c++ construct from the anals of pointerdom.
+ //The idea is we're using a delegate. If we have a delegate, use it.
+ //If you are receiving a delegate, you do not need the message name.
+ //Otherwise, send a standard message through the old interface.
+ if( mp.d )
+ (mp.h->*(mp.d))( *(message.data) );
+ else
+ mp.h->HandleMessage(message.message, *(message.data) );
}
}
}
Modified: Mercury2/src/MercuryMessageManager.h
===================================================================
--- Mercury2/src/MercuryMessageManager.h 2009-10-26 02:00:33 UTC (rev 584)
+++ Mercury2/src/MercuryMessageManager.h 2009-10-26 22:16:58 UTC (rev 585)
@@ -24,6 +24,8 @@
static bool Compare( void * left, void * right );
};
+typedef void (MessageHandler::*Delegate)(const MessageData&);
+
/* This message system uses absolute integer time values to fire off events.
This ensures accuarate firing times while eliminating floating point error.
Because we use absolute times in the queue we do not need to "count down" the
@@ -36,7 +38,7 @@
void PostMessage(const MString& message, MessageData* data, float delay);
void PumpMessages(const uint64_t& currTime);
- void RegisterForMessage(const MString& message, MessageHandler* ptr);
+ void RegisterForMessage(const MString& message, MessageHandler* ptr, Delegate d = 0 );
void UnRegisterForMessage(const MString& message, MessageHandler* ptr);
static MercuryMessageManager& GetInstance();
@@ -46,9 +48,16 @@
PriorityQueue m_messageQueue;
uint64_t m_currTime; //microseconds
+
+ struct MessagePair
+ {
+ MessagePair( MessageHandler * th, Delegate td ) : h(th), d(td) { }
+ MessageHandler * h;
+ Delegate d;
+ };
+
+ MHash< std::list< MessagePair > > m_messageRecipients;
- MHash< std::list< MessageHandler* > > m_messageRecipients;
-
// MercuryMutex m_lock;
MSemaphore m_queueLock;
MSemaphore m_recipientLock;
@@ -57,6 +66,7 @@
static InstanceCounter<MercuryMessageManager> MMcounter("MessageManager");
#define MESSAGEMAN MercuryMessageManager
+#define REGISTER_MESSAGE_WITH_DELEGATE(x, d) MESSAGEMAN::GetInstance().RegisterForMessage(x, this, (Delegate)d)
#define REGISTER_FOR_MESSAGE(x) MESSAGEMAN::GetInstance().RegisterForMessage(x, this)
#define UNREGISTER_FOR_MESSAGE(x) MESSAGEMAN::GetInstance().UnRegisterForMessage(x, this)
#define POST_MESSAGE(x,data,delay) MESSAGEMAN::GetInstance().PostMessage(x, data, delay)
Modified: Mercury2/src/ModuleManager.h
===================================================================
--- Mercury2/src/ModuleManager.h 2009-10-26 02:00:33 UTC (rev 584)
+++ Mercury2/src/ModuleManager.h 2009-10-26 22:16:58 UTC (rev 585)
@@ -29,6 +29,7 @@
void RegisterInstance( void * instance, const char * sClass );
void UnregisterInstance( void * instance );
+ const char * GetInstanceType( void * inst ) { return m_pAllInstanceTypes[inst]; }
#endif
private:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-26 02:00:45
|
Revision: 584
http://hgengine.svn.sourceforge.net/hgengine/?rev=584&view=rev
Author: cnlohr
Date: 2009-10-26 02:00:33 +0000 (Mon, 26 Oct 2009)
Log Message:
-----------
make camera go to right place in first frame
Modified Paths:
--------------
Mercury2/modules/Terrain.cpp
Mercury2/src/Camera.cpp
Mercury2/src/MercuryAsset.h
Modified: Mercury2/modules/Terrain.cpp
===================================================================
--- Mercury2/modules/Terrain.cpp 2009-10-26 01:49:06 UTC (rev 583)
+++ Mercury2/modules/Terrain.cpp 2009-10-26 02:00:33 UTC (rev 584)
@@ -57,8 +57,6 @@
yMax = MAX<float>(v.GetY(),yMax);
zMax = MAX<float>(v.GetZ(),zMax);
}
-
- printf("%f %f %f\n", xMax, yMax, zMax);
m_hash.Allocate(10, 1);
for(uint16_t i = 0; i < length; i+=3)
@@ -163,6 +161,11 @@
{
if (message == "QueryTerrainPoint")
{
+ if( Asset().GetLoadState() == LOADING )
+ {
+ POST_MESSAGE( "QueryTerrainPoint", new VertexDataMessage( dynamic_cast<const VertexDataMessage&>(data) ), 0.0001 );
+ return;
+ }
const VertexDataMessage& v( dynamic_cast<const VertexDataMessage&>(data) );
//compute local space position
Modified: Mercury2/src/Camera.cpp
===================================================================
--- Mercury2/src/Camera.cpp 2009-10-26 01:49:06 UTC (rev 583)
+++ Mercury2/src/Camera.cpp 2009-10-26 02:00:33 UTC (rev 584)
@@ -13,6 +13,7 @@
m_lookAt = MercuryVector(0,0,-1);
REGISTER_FOR_MESSAGE( INPUTEVENT_MOUSE );
REGISTER_FOR_MESSAGE( "SetCameraPosition" );
+ POST_MESSAGE("QueryTerrainPoint", new VertexDataMessage(m_origionalPosition), 0.00001);
}
void CameraNode::PreRender(const MercuryMatrix& matrix)
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-10-26 01:49:06 UTC (rev 583)
+++ Mercury2/src/MercuryAsset.h 2009-10-26 02:00:33 UTC (rev 584)
@@ -64,9 +64,10 @@
inline void SetPasses( unsigned short p ) { m_iPasses = p; }
virtual MercuryAssetInstance* GenerateInstanceData(MercuryNode* parentNode);
+
+ LoadState GetLoadState(); //thread safe
protected:
void SetLoadState(LoadState ls); //thread safe
- LoadState GetLoadState(); //thread safe
bool m_isInstanced;
BoundingVolume* m_boundingVolume;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-26 01:49:12
|
Revision: 583
http://hgengine.svn.sourceforge.net/hgengine/?rev=583&view=rev
Author: axlecrusher
Date: 2009-10-26 01:49:06 +0000 (Mon, 26 Oct 2009)
Log Message:
-----------
use spatial hash to find triangles
Modified Paths:
--------------
Mercury2/modules/Terrain.cpp
Mercury2/src/DataStructures/SpatialHash.h
Modified: Mercury2/modules/Terrain.cpp
===================================================================
--- Mercury2/modules/Terrain.cpp 2009-10-25 21:22:33 UTC (rev 582)
+++ Mercury2/modules/Terrain.cpp 2009-10-26 01:49:06 UTC (rev 583)
@@ -59,7 +59,7 @@
}
printf("%f %f %f\n", xMax, yMax, zMax);
- m_hash.Allocate(xMax, yMax, zMax, 1);
+ m_hash.Allocate(10, 1);
for(uint16_t i = 0; i < length; i+=3)
{
@@ -114,14 +114,14 @@
if (foundCount > 1) LOG.Write( ssprintf("!!!!!! Found %d triangles !!!!!!", foundCount) );
return result;
}
-/*
+
MercuryVertex Terrain::ComputePosition(const MercuryVertex& p)
{
+ //discard camera height
MercuryVertex l( p );
l[2] = 0;
std::list<MTriangle> triangles = m_hash.FindByXY(p[0], p[1]);
- LOG.Write( ssprintf("%d", triangles.size()) );
MercuryVector result = l;
@@ -130,35 +130,24 @@
std::list<MTriangle>::iterator i = triangles.begin();
for(;i != triangles.end(); ++i)
{
- MTriangle t = *i;
- t.m_verts[0][2] = 0;
- t.m_verts[1][2] = 0;
- t.m_verts[2][2] = 0;
- if ( t.IsInTriangle(l) )
+ //comput against a flat triangle since we don't care if we are at the correct height.
+ MTriangle flatTriangle = *i;
+ flatTriangle.m_verts[0][2] = 0;
+ flatTriangle.m_verts[1][2] = 0;
+ flatTriangle.m_verts[2][2] = 0;
+ if ( flatTriangle.IsInTriangle(l) )
{
- MercuryVector b = t.Barycentric(l);
- t = *i;
-
- MercuryVector pos;//(t.m_verts[0]);
-
- pos = t.m_verts[0]*b[0] + t.m_verts[1]*b[1] + t.m_verts[2]*b[2];
-// pos.Print();
-// pos += (t.m_verts[0] - t.m_verts[1]) * b;
-// pos += (t.m_verts[0] - t.m_verts[2]) * b;
-
-
-// pos.Print();
- LOG.Write("Found");
- result[2] = result[2]<pos[2]?pos[2]:result[2];
-// return pos;
+ MercuryVector b = flatTriangle.Barycentric(l);
+ MercuryVector pos( i->InterpolatePosition(b) );
+ return pos;
}
}
}
return result;
}
-*/
+
TerrainAssetInstance::TerrainAssetInstance(MercuryAsset* asset, MercuryNode* parentNode)
:base(asset, parentNode)
{
@@ -181,7 +170,8 @@
local[3] = 1; //no W
Terrain* t = (Terrain*)m_asset.Ptr();
- local = t->ComputePositionLinear( local );
+// local = t->ComputePositionLinear( local );
+ local = t->ComputePosition( local );
local[2] += 0.75; //height of player
local = m_parentNode->GetGlobalMatrix() * local;
Modified: Mercury2/src/DataStructures/SpatialHash.h
===================================================================
--- Mercury2/src/DataStructures/SpatialHash.h 2009-10-25 21:22:33 UTC (rev 582)
+++ Mercury2/src/DataStructures/SpatialHash.h 2009-10-26 01:49:06 UTC (rev 583)
@@ -12,7 +12,7 @@
SpatialHash()
:m_hashTable(NULL), m_spacing(1.0f)
{
- m_xSize = m_ySize = m_zSize = 0;
+ m_cellCount = 0;
}
~SpatialHash()
@@ -20,31 +20,29 @@
DeleteHash();
}
- void Allocate(uint32_t xmax, uint32_t ymax, uint32_t zmax, uint32_t spacing)
+ void Allocate(uint32_t cellCount, float spacing)
{
DeleteHash();
m_spacing = spacing;
- m_xSize = (abs(xmax)/m_spacing) + 1;
- m_ySize = (abs(ymax)/m_spacing) + 1;
- m_zSize = (abs(zmax)/m_spacing) + 1;
+ cellCount = cellCount==0?1:cellCount;
+ m_cellCount = cellCount;
- uint32_t size = m_xSize*m_ySize*m_zSize;
+ uint32_t size = cellCount*cellCount*cellCount;
m_hashTable = new std::list<T>[size];
}
void Insert(float x, float y, float z, const T& d)
{
- unsigned int ix = abs(x) / m_spacing;
- unsigned int iy = abs(y) / m_spacing;
- unsigned int iz = abs(z) / m_spacing;
+ float s = 1.0f/m_spacing;
+ uint32_t ix = (uint32_t)(abs(x)*s);
+ uint32_t iy = (uint32_t)(abs(y)*s);
+ uint32_t iz = (uint32_t)(abs(z)*s);
- if (ix >= m_xSize || iy >= m_ySize || iz >= m_zSize)
- {
- printf("%d >= %d || %d >= %d || %d >= %d\n", ix, m_xSize, iy, m_ySize, iz, m_zSize);
- return;
- }
+ ix = ix % m_cellCount;
+ iy = iy % m_cellCount;
+ iz = iz % m_cellCount;
//check for and skip duplicate
std::list<T>& cell = m_hashTable[ Index( ix, iy, iz ) ];
@@ -57,46 +55,48 @@
std::list<T> FindByXY(float x, float y)
{
- unsigned int ix = abs(x) / m_spacing;
- unsigned int iy = abs(y) / m_spacing;
+ float s = 1.0f/m_spacing;
+ uint32_t ix = (uint32_t)(abs(x)*s);
+ uint32_t iy = (uint32_t)(abs(y)*s);
+ ix = ix % m_cellCount;
+ iy = iy % m_cellCount;
+
std::list<T> r;
- if (ix < m_xSize || iy < m_ySize )
- {
- for (uint32_t iz = 0; iz < m_zSize; ++iz)
- CopyIntoList(m_hashTable[Index(ix, iy, iz)], r);
- }
+ for (uint32_t iz = 0; iz < m_cellCount; ++iz)
+ CopyIntoList(m_hashTable[Index(ix, iy, iz)], r);
return r;
}
std::list<T> FindByXZ(float x, float z)
{
- unsigned int ix = abs(x) / m_spacing;
- unsigned int iz = abs(z) / m_spacing;
+ float s = 1.0f/m_spacing;
+ uint32_t ix = (uint32_t)(abs(x)*s);
+ uint32_t iz = (uint32_t)(abs(z)*s);
+ ix = ix % m_cellCount;
+ iz = iz % m_cellCount;
+
std::list<T> r;
- if (ix < m_xSize || iz < m_zSize )
- {
- for (uint32_t iy = 0; iy < m_ySize; ++iy)
- CopyIntoList(m_hashTable[Index(ix, iy, iz)], r);
- }
+ for (uint32_t iy = 0; iy < m_cellCount; ++iy)
+ CopyIntoList(m_hashTable[Index(ix, iy, iz)], r);
return r;
}
private:
inline uint32_t Index(uint32_t x, uint32_t y, uint32_t z)
{
- return x + (m_xSize * y) + (m_xSize * m_ySize * z);
+ return x + (m_cellCount * y) + (m_cellCount * m_cellCount * z);
}
void DeleteHash()
{
if (m_hashTable) delete[] m_hashTable;
m_spacing = 1;
- m_xSize = m_ySize = m_zSize = 0;
+ m_cellCount = 0;
}
void CopyIntoList(std::list<T>& in, std::list<T>& r)
@@ -108,7 +108,7 @@
std::list<T>* m_hashTable;
uint32_t m_spacing;
- uint32_t m_xSize, m_ySize, m_zSize;
+ uint32_t m_cellCount;
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-25 21:22:43
|
Revision: 582
http://hgengine.svn.sourceforge.net/hgengine/?rev=582&view=rev
Author: cnlohr
Date: 2009-10-25 21:22:33 +0000 (Sun, 25 Oct 2009)
Log Message:
-----------
add beginnings of a textplate -also fix billboarding so you can indicate negative axes.
Modified Paths:
--------------
Mercury2/Themes/default/File/scenegraph.xml
Mercury2/modules/BillboardNode.cpp
Mercury2/modules/BillboardNode.h
Mercury2/modules/Makefile
Mercury2/modules.xml
Added Paths:
-----------
Mercury2/modules/TextPlate.cpp
Mercury2/modules/TextPlate.h
Modified: Mercury2/Themes/default/File/scenegraph.xml
===================================================================
--- Mercury2/Themes/default/File/scenegraph.xml 2009-10-25 20:37:45 UTC (rev 581)
+++ Mercury2/Themes/default/File/scenegraph.xml 2009-10-25 21:22:33 UTC (rev 582)
@@ -2,7 +2,7 @@
<node type="viewport" fov="45" aspect="1.3333" near="0.01" far="100" name="vp">
<node type="cameranode" movx="0" movz="0" movy="0" rotx="0" roty="0" rotz="0" name="camera">
<node type="transformnode" movz="-5" movy="2">
- <node type="TextNode" text="test font 123 HELLO WORLD!!! WOOT!" font="FONT:FreeSans.hgfont" size=".01" width="300" alphaPath="true" alignment="FIT_FULL" />
+ <node type="TextPlate" text="test font 123 HELLO WORLD!!! WOOT!" font="FONT:FreeSans.hgfont" size=".01" width="400" alphaPath="true" billboardaxis="0,-1,0" offset="-2,0,0" spheremode="false" />
</node>
<node type="transformnode" movz="-5" movx="-4" movy="2">
<node type="TextNode" text="Another test!" font="FONT:FreeMonoBold.hgfont" size=".01" width="300" alphaPath="true" alignment="LEFT" />
@@ -18,8 +18,8 @@
<asset type="texture" file="MODEL:lamp.png"/>
<asset type="hgmdlmodel" file="MODEL:lampN.hgmdl" />
</node>
- <node type="billboardnode" billboardaxis="0,1,0" spheremode="true" >
- <node type="transformnode" roty="180" scalex="0.1" scaley="0.1" alphaPath="true">
+ <node type="billboardnode" billboardaxis="0,-1,0" spheremode="true" >
+ <node type="transformnode" scalex="0.1" scaley="0.1" alphaPath="true">
<asset type="texture" file="GRAPHIC:flame.png"/>
<asset type="quad"/>
</node>
Modified: Mercury2/modules/BillboardNode.cpp
===================================================================
--- Mercury2/modules/BillboardNode.cpp 2009-10-25 20:37:45 UTC (rev 581)
+++ Mercury2/modules/BillboardNode.cpp 2009-10-25 21:22:33 UTC (rev 582)
@@ -30,10 +30,12 @@
float f = ACOS(angleCos);//*RADDEG;
if (up[1] < 0) f *= -1;
-
+
+ bool bFlip = m_billboardAxis.DotProduct( MercuryVector(1,1,1) ) < 0 ;
+
//needs to be the local axis to rotate around
MercuryMatrix global( TransformNode::GetGlobalMatrix() );
- MQuaternion mtmp = MQuaternion::CreateFromAxisAngle(m_billboardAxis, f);
+ MQuaternion mtmp = MQuaternion::CreateFromAxisAngle(m_billboardAxis, ((bFlip)?(Q_PI-f):f) );
//spherical below
if ( m_sphere )
@@ -42,7 +44,7 @@
angleCos = objToEyeProj.DotProduct( objToEye );
f = ACOS(angleCos);
if (objToEye[1] < 0) f *= -1;
- if (angleCos < 0.99999) mtmp *= MQuaternion::CreateFromAxisAngle(MercuryVector(1,0,0), f);
+ if (angleCos < 0.99999) mtmp *= MQuaternion::CreateFromAxisAngle(MercuryVector(1,0,0), (bFlip)?-f:f );
}
global.Rotate( mtmp );
Modified: Mercury2/modules/BillboardNode.h
===================================================================
--- Mercury2/modules/BillboardNode.h 2009-10-25 20:37:45 UTC (rev 581)
+++ Mercury2/modules/BillboardNode.h 2009-10-25 21:22:33 UTC (rev 582)
@@ -18,7 +18,7 @@
GENRTTI(BillboardNode);
- private:
+ protected:
MercuryVector m_billboardAxis;
bool m_sphere;
MercuryMatrix m_billboardMatrix;
Modified: Mercury2/modules/Makefile
===================================================================
--- Mercury2/modules/Makefile 2009-10-25 20:37:45 UTC (rev 581)
+++ Mercury2/modules/Makefile 2009-10-25 21:22:33 UTC (rev 582)
@@ -1,17 +1,12 @@
-CFLAGS=-O2 -g0 -Wall -I/usr/include/libxml2 -I.. -msse2 -DHAVE_CONFIG -DHGENGINE -fexceptions -fPIC -I../src -I../src/DataTypes -I../src/DataStructures -g
+CFLAGS=-O2 -g0 -Wall -I/usr/include/libxml2 -I.. -msse2 -DHAVE_CONFIG -DHGENGINE -fexceptions -fPIC -I../src -I../src/DataTypes -I../src/DataStructures -g -I.
CXXFLAGS=${CFLAGS}
LDFLAGS=-shared
-all : BillboardNode.so TextNode.so Terrain.so
+all : BillboardNode.so TextNode.so Terrain.so TextPlate.so
clean :
rm -rf *~ *.o *.so
-BillboardNode.so : BillboardNode.o
+%.so : %.o
g++ -o$@ $^ ${LDFLAGS}
-TextNode.so : TextNode.o
- g++ -o$@ $^ ${LDFLAGS}
-
-Terrain.so : Terrain.o
- g++ -o$@ $^ ${LDFLAGS}
Added: Mercury2/modules/TextPlate.cpp
===================================================================
--- Mercury2/modules/TextPlate.cpp (rev 0)
+++ Mercury2/modules/TextPlate.cpp 2009-10-25 21:22:33 UTC (rev 582)
@@ -0,0 +1,60 @@
+#include "TextPlate.h"
+#include <TextNode.h>
+#include <MercuryVertex.h>
+#include <Viewport.h>
+
+REGISTER_NODE_TYPE(TextPlate);
+
+TextPlate::TextPlate()
+ :BillboardNode()
+{
+ m_TextNode = (TextNode*)NODEFACTORY.Generate( "TextNode" );
+ AddChild( m_TextNode );
+}
+
+void TextPlate::Update(float dTime)
+{
+ BillboardNode::Update( dTime );
+ m_billboardMatrix.Translate( m_fvOffset );
+}
+
+
+void TextPlate::LoadFromXML(const XMLNode& node)
+{
+ BillboardNode::LoadFromXML(node);
+ if ( !node.Attribute("offset").empty() )
+ m_fvOffset = MercuryVector::CreateFromString( node.Attribute("offset") );
+ m_TextNode->LoadFromXML(node);
+}
+
+/****************************************************************************
+ * Copyright (C) 2009 by Charles Lohr *
+ * *
+ * *
+ * All rights reserved. *
+ * *
+ * Redistribution and use in source and binary forms, with or without *
+ * modification, are permitted provided that the following conditions *
+ * are met: *
+ * * Redistributions of source code must retain the above copyright *
+ * notice, this list of conditions and the following disclaimer. *
+ * * Redistributions in binary form must reproduce the above *
+ * copyright notice, this list of conditions and the following *
+ * disclaimer in the documentation and/or other materials provided *
+ * with the distribution. *
+ * * Neither the name of the Mercury Engine nor the names of its *
+ * contributors may be used to endorse or promote products derived *
+ * from this software without specific prior written permission. *
+ * *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR *
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ ***************************************************************************/
Added: Mercury2/modules/TextPlate.h
===================================================================
--- Mercury2/modules/TextPlate.h (rev 0)
+++ Mercury2/modules/TextPlate.h 2009-10-25 21:22:33 UTC (rev 582)
@@ -0,0 +1,55 @@
+#ifndef TextPlate_H
+#define TextPlate_H
+
+#include <TransformNode.h>
+#include <BillboardNode.h>
+#include <MercuryVertex.h>
+
+class TextNode;
+
+class TextPlate : public BillboardNode
+{
+public:
+ TextPlate();
+ virtual void Update(float dTime);
+ virtual void LoadFromXML(const XMLNode& node);
+ GENRTTI(TextPlate);
+private:
+ MercuryVector m_fvOffset;
+ TextNode * m_TextNode;
+};
+
+#endif
+
+
+/****************************************************************************
+ * Copyright (C) 2009 by Joshua Allen *
+ * *
+ * *
+ * All rights reserved. *
+ * *
+ * Redistribution and use in source and binary forms, with or without *
+ * modification, are permitted provided that the following conditions *
+ * are met: *
+ * * Redistributions of source code must retain the above copyright *
+ * notice, this list of conditions and the following disclaimer. *
+ * * Redistributions in binary form must reproduce the above *
+ * copyright notice, this list of conditions and the following *
+ * disclaimer in the documentation and/or other materials provided *
+ * with the distribution. *
+ * * Neither the name of the Mercury Engine nor the names of its *
+ * contributors may be used to endorse or promote products derived *
+ * from this software without specific prior written permission. *
+ * *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR *
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ ***************************************************************************/
Modified: Mercury2/modules.xml
===================================================================
--- Mercury2/modules.xml 2009-10-25 20:37:45 UTC (rev 581)
+++ Mercury2/modules.xml 2009-10-25 21:22:33 UTC (rev 582)
@@ -2,4 +2,5 @@
<Module src="modules/TextNode.cpp" obj="modules/TextNode" func="InstallTextNode" class="TextNode" />
<Module src="modules/BillboardNode.cpp" obj="modules/BillboardNode" func="InstallBillboardNode" class="BillboardNode" />
<Module src="modules/Terrain.cpp" obj="modules/Terrain" func="InstallTerrainNode" class="TerrainNode"/>
+ <Module src="modules/TextPlate.cpp" obj="modules/TextPlate" func="InstallTextPlate" class="TextPlate"/>
</Modules>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-25 20:37:53
|
Revision: 581
http://hgengine.svn.sourceforge.net/hgengine/?rev=581&view=rev
Author: cnlohr
Date: 2009-10-25 20:37:45 +0000 (Sun, 25 Oct 2009)
Log Message:
-----------
oops -- forgot to check for unregistered objects
Modified Paths:
--------------
Mercury2/src/ModuleManager.cpp
Modified: Mercury2/src/ModuleManager.cpp
===================================================================
--- Mercury2/src/ModuleManager.cpp 2009-10-25 20:28:46 UTC (rev 580)
+++ Mercury2/src/ModuleManager.cpp 2009-10-25 20:37:45 UTC (rev 581)
@@ -139,7 +139,13 @@
void ModuleManager::UnregisterInstance( void * instance )
{
- const char * sClass = m_pAllInstanceTypes[instance];
+ std::map< void *, const char * >::iterator ni = m_pAllInstanceTypes.find( instance );
+
+ //Object was never registered.
+ if( ni == m_pAllInstanceTypes.end() )
+ return;
+
+ const char * sClass = ni->second;
std::set< void * > & s = m_hAllInstances[sClass];
std::set< void * >::iterator i = s.find( instance );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-25 20:29:00
|
Revision: 580
http://hgengine.svn.sourceforge.net/hgengine/?rev=580&view=rev
Author: cnlohr
Date: 2009-10-25 20:28:46 +0000 (Sun, 25 Oct 2009)
Log Message:
-----------
remove wonky RTTI Type String, and make the Instace Watching feature handle it correct.y
Modified Paths:
--------------
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryNode.h
Mercury2/src/ModuleManager.cpp
Mercury2/src/ModuleManager.h
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-10-22 19:52:50 UTC (rev 579)
+++ Mercury2/src/MercuryNode.cpp 2009-10-25 20:28:46 UTC (rev 580)
@@ -16,7 +16,7 @@
REGISTER_NODE_TYPE(MercuryNode);
MercuryNode::MercuryNode()
- :Type( 0 ), m_parent(NULL), m_prevSibling(NULL),
+ :m_parent(NULL), m_prevSibling(NULL),
m_nextSibling(NULL), m_hidden(false),
m_useAlphaPath(false), m_culled(false),
m_iPasses( DEFAULT_PASSES ), m_iForcePasses( 0 )
@@ -27,8 +27,7 @@
{
#ifdef INSTANCE_WATCH
- if( Type )
- DEL_INSTANCE(this, Type);
+ DEL_INSTANCE(this);
#endif
m_parent = NULL;
Modified: Mercury2/src/MercuryNode.h
===================================================================
--- Mercury2/src/MercuryNode.h 2009-10-22 19:52:50 UTC (rev 579)
+++ Mercury2/src/MercuryNode.h 2009-10-25 20:28:46 UTC (rev 580)
@@ -21,7 +21,7 @@
{ if (n==NULL) return NULL; return dynamic_cast<const x*>(n); } \
static x* Cast(MercuryNode* n) \
{ if (n==NULL) return NULL; return dynamic_cast<x*>(n); } \
-virtual const char * GetType() { if( !Type ) Type = #x; return #x; }
+virtual const char * GetType() { return #x; }
/*
#define GENRTTI(x) static bool IsMyType(const MercuryNode* n) \
@@ -117,8 +117,6 @@
const MercuryMatrix & GetModelViewMatrix() const { return m_pModelViewMatrix[g_iViewportID]; }
inline unsigned short GetPasses() const { return m_iPasses; }
-
- const char * Type;
protected:
std::list< MercuryNode* > m_children; //These nodes are unique, not instanced
MercuryNode* m_parent;
@@ -167,6 +165,8 @@
std::list< std::pair< MString, Callback0R<MercuryNode*> > > m_factoryCallbacks;
};
+#define NODEFACTORY NodeFactory::GetInstance()
+
static InstanceCounter<NodeFactory> NFcounter("NodeFactory");
#define REGISTER_NODE_TYPE(class)\
Modified: Mercury2/src/ModuleManager.cpp
===================================================================
--- Mercury2/src/ModuleManager.cpp 2009-10-22 19:52:50 UTC (rev 579)
+++ Mercury2/src/ModuleManager.cpp 2009-10-25 20:28:46 UTC (rev 580)
@@ -134,10 +134,12 @@
void ModuleManager::RegisterInstance( void * instance, const char * sClass )
{
m_hAllInstances[sClass].insert( instance );
+ m_pAllInstanceTypes[instance] = sClass;
}
-void ModuleManager::UnregisterInstance( void * instance, const char * sClass )
+void ModuleManager::UnregisterInstance( void * instance )
{
+ const char * sClass = m_pAllInstanceTypes[instance];
std::set< void * > & s = m_hAllInstances[sClass];
std::set< void * >::iterator i = s.find( instance );
Modified: Mercury2/src/ModuleManager.h
===================================================================
--- Mercury2/src/ModuleManager.h 2009-10-22 19:52:50 UTC (rev 579)
+++ Mercury2/src/ModuleManager.h 2009-10-25 20:28:46 UTC (rev 580)
@@ -4,7 +4,11 @@
#include <MercuryUtil.h>
#include <MercuryHash.h>
#include <MercuryThreads.h>
+
+#ifdef INSTANCE_WATCH
#include <set>
+#include <map>
+#endif
/* This is the module loader mechanism. This allows for run-time loading of
new modules. Eventually, it will allow for run-time re-loading of modules.
@@ -24,7 +28,7 @@
void ReloadModule( const MString & sClass );
void RegisterInstance( void * instance, const char * sClass );
- void UnregisterInstance( void * instance, const char * sClass );
+ void UnregisterInstance( void * instance );
#endif
private:
@@ -33,6 +37,7 @@
#ifdef INSTANCE_WATCH
MHash< std::set< void * > > m_hAllInstances;
+ std::map< void *, const char * > m_pAllInstanceTypes;
#endif
MHash< void * > m_hAllHandles;
@@ -46,7 +51,7 @@
#ifdef INSTANCE_WATCH
#define NEW_INSTANCE( node, t ) ModuleManager::GetInstance().RegisterInstance( node, t );
-#define DEL_INSTANCE( node, t ) ModuleManager::GetInstance().UnregisterInstance( node, t );
+#define DEL_INSTANCE( node ) ModuleManager::GetInstance().UnregisterInstance( node );
#else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-22 19:53:02
|
Revision: 579
http://hgengine.svn.sourceforge.net/hgengine/?rev=579&view=rev
Author: cnlohr
Date: 2009-10-22 19:52:50 +0000 (Thu, 22 Oct 2009)
Log Message:
-----------
update mono fonts
Modified Paths:
--------------
Mercury2/Themes/default/Font/FreeMono.hgfont
Mercury2/Themes/default/Font/FreeMono.png
Mercury2/Themes/default/Font/FreeMonoBold.hgfont
Mercury2/Themes/default/Font/FreeMonoBold.png
Modified: Mercury2/Themes/default/Font/FreeMono.hgfont
===================================================================
--- Mercury2/Themes/default/Font/FreeMono.hgfont 2009-10-22 19:51:23 UTC (rev 578)
+++ Mercury2/Themes/default/Font/FreeMono.hgfont 2009-10-22 19:52:50 UTC (rev 579)
@@ -1,258 +1,258 @@
FONT:FreeMono.png
64 4.000000 15.000000 80.000000
-0 0.000000 0.000000 0.016602 0.041992 17 43 2 43
-1 0.062500 0.000000 0.079102 0.041992 17 43 2 43
-2 0.125000 0.000000 0.141602 0.041992 17 43 2 43
-3 0.187500 0.000000 0.204102 0.041992 17 43 2 43
-4 0.250000 0.000000 0.266602 0.041992 17 43 2 43
-5 0.312500 0.000000 0.329102 0.041992 17 43 2 43
-6 0.375000 0.000000 0.391602 0.041992 17 43 2 43
-7 0.437500 0.000000 0.454102 0.041992 17 43 2 43
-8 0.500000 0.000000 0.516602 0.041992 17 43 2 43
-9 0.562500 0.000000 0.579102 0.041992 17 43 2 43
-10 0.625000 0.000000 0.641602 0.041992 17 43 2 43
-11 0.687500 0.000000 0.704102 0.041992 17 43 2 43
-12 0.750000 0.000000 0.766602 0.041992 17 43 2 43
-13 0.812500 0.000000 0.829102 0.041992 17 43 2 43
-14 0.875000 0.000000 0.891602 0.041992 17 43 2 43
-15 0.937500 0.000000 0.954102 0.041992 17 43 2 43
-16 0.000000 0.062500 0.016602 0.104492 17 43 2 43
-17 0.062500 0.062500 0.079102 0.104492 17 43 2 43
-18 0.125000 0.062500 0.141602 0.104492 17 43 2 43
-19 0.187500 0.062500 0.204102 0.104492 17 43 2 43
-20 0.250000 0.062500 0.266602 0.104492 17 43 2 43
-21 0.312500 0.062500 0.329102 0.104492 17 43 2 43
-22 0.375000 0.062500 0.391602 0.104492 17 43 2 43
-23 0.437500 0.062500 0.454102 0.104492 17 43 2 43
-24 0.500000 0.062500 0.516602 0.104492 17 43 2 43
-25 0.562500 0.062500 0.579102 0.104492 17 43 2 43
-26 0.625000 0.062500 0.641602 0.104492 17 43 2 43
-27 0.687500 0.062500 0.704102 0.104492 17 43 2 43
-28 0.750000 0.062500 0.766602 0.104492 17 43 2 43
-29 0.812500 0.062500 0.829102 0.104492 17 43 2 43
-30 0.875000 0.062500 0.891602 0.104492 17 43 2 43
-31 0.937500 0.062500 0.954102 0.104492 17 43 2 43
-32 0.000000 0.125000 0.000000 0.125000 0 0 0 0
-33 0.062500 0.125000 0.071289 0.165039 9 41 15 40
-34 0.125000 0.125000 0.145508 0.143555 21 19 9 39
-35 0.187500 0.125000 0.214844 0.169922 28 46 5 42
-36 0.250000 0.125000 0.274414 0.171875 25 48 7 42
-37 0.312500 0.125000 0.339844 0.165039 28 41 5 40
-38 0.375000 0.125000 0.399414 0.160156 25 36 6 34
-39 0.437500 0.125000 0.446289 0.143555 9 19 15 39
-40 0.500000 0.125000 0.511719 0.170898 12 47 18 39
-41 0.562500 0.125000 0.573242 0.170898 11 47 9 39
-42 0.625000 0.125000 0.649414 0.147461 25 23 7 39
-43 0.687500 0.125000 0.716797 0.156250 30 32 4 34
-44 0.750000 0.125000 0.763672 0.144531 14 20 8 10
-45 0.812500 0.125000 0.841797 0.128906 30 4 4 20
-46 0.875000 0.125000 0.884766 0.133789 10 9 14 8
-47 0.937500 0.125000 0.961914 0.172852 25 49 7 43
-48 0.000000 0.187500 0.024414 0.227539 25 41 7 40
-49 0.062500 0.187500 0.086914 0.226562 25 40 7 40
-50 0.125000 0.187500 0.150391 0.226562 26 40 5 40
-51 0.187500 0.187500 0.212891 0.227539 26 41 6 40
-52 0.250000 0.187500 0.274414 0.225586 25 39 6 39
-53 0.312500 0.187500 0.337891 0.226562 26 40 6 39
-54 0.375000 0.187500 0.399414 0.227539 25 41 8 40
-55 0.437500 0.187500 0.461914 0.226562 25 40 6 39
-56 0.500000 0.187500 0.524414 0.227539 25 41 7 40
-57 0.562500 0.187500 0.586914 0.227539 25 41 8 40
-58 0.625000 0.187500 0.634766 0.214844 10 28 14 27
-59 0.687500 0.187500 0.702148 0.223633 15 37 8 27
-60 0.750000 0.187500 0.779297 0.218750 30 32 4 34
-61 0.812500 0.187500 0.844727 0.199219 33 12 3 24
-62 0.875000 0.187500 0.904297 0.218750 30 32 4 34
-63 0.937500 0.187500 0.960938 0.224609 24 38 8 37
-64 0.000000 0.250000 0.024414 0.292969 25 44 6 40
-65 0.062500 0.250000 0.099609 0.286133 38 37 0 37
-66 0.125000 0.250000 0.157227 0.286133 33 37 2 37
-67 0.187500 0.250000 0.217773 0.288086 31 39 4 37
-68 0.250000 0.250000 0.281250 0.286133 32 37 2 37
-69 0.312500 0.250000 0.343750 0.286133 32 37 2 37
-70 0.375000 0.250000 0.406250 0.286133 32 37 2 37
-71 0.437500 0.250000 0.468750 0.288086 32 39 4 37
-72 0.500000 0.250000 0.532227 0.286133 33 37 3 37
-73 0.562500 0.250000 0.586914 0.286133 25 37 7 37
-74 0.625000 0.250000 0.657227 0.288086 33 39 5 37
-75 0.687500 0.250000 0.721680 0.286133 35 37 2 37
-76 0.750000 0.250000 0.780273 0.286133 31 37 4 37
-77 0.812500 0.250000 0.849609 0.286133 38 37 0 37
-78 0.875000 0.250000 0.909180 0.286133 35 37 1 37
-79 0.937500 0.250000 0.969727 0.288086 33 39 3 37
-80 0.000000 0.312500 0.029297 0.348633 30 37 2 37
-81 0.062500 0.312500 0.094727 0.356445 33 45 3 37
-82 0.125000 0.312500 0.160156 0.348633 36 37 2 37
-83 0.187500 0.312500 0.214844 0.350586 28 39 5 37
-84 0.250000 0.312500 0.279297 0.348633 30 37 4 37
+0 0.000000 0.000000 0.033203 0.041992 34 43 2 43
+1 0.062500 0.000000 0.095703 0.041992 34 43 2 43
+2 0.125000 0.000000 0.158203 0.041992 34 43 2 43
+3 0.187500 0.000000 0.220703 0.041992 34 43 2 43
+4 0.250000 0.000000 0.283203 0.041992 34 43 2 43
+5 0.312500 0.000000 0.345703 0.041992 34 43 2 43
+6 0.375000 0.000000 0.408203 0.041992 34 43 2 43
+7 0.437500 0.000000 0.470703 0.041992 34 43 2 43
+8 0.500000 0.000000 0.533203 0.041992 34 43 2 43
+9 0.562500 0.000000 0.595703 0.041992 34 43 2 43
+10 0.625000 0.000000 0.658203 0.041992 34 43 2 43
+11 0.687500 0.000000 0.720703 0.041992 34 43 2 43
+12 0.750000 0.000000 0.783203 0.041992 34 43 2 43
+13 0.812500 0.000000 0.845703 0.041992 34 43 2 43
+14 0.875000 0.000000 0.908203 0.041992 34 43 2 43
+15 0.937500 0.000000 0.970703 0.041992 34 43 2 43
+16 0.000000 0.062500 0.033203 0.104492 34 43 2 43
+17 0.062500 0.062500 0.095703 0.104492 34 43 2 43
+18 0.125000 0.062500 0.158203 0.104492 34 43 2 43
+19 0.187500 0.062500 0.220703 0.104492 34 43 2 43
+20 0.250000 0.062500 0.283203 0.104492 34 43 2 43
+21 0.312500 0.062500 0.345703 0.104492 34 43 2 43
+22 0.375000 0.062500 0.408203 0.104492 34 43 2 43
+23 0.437500 0.062500 0.470703 0.104492 34 43 2 43
+24 0.500000 0.062500 0.533203 0.104492 34 43 2 43
+25 0.562500 0.062500 0.595703 0.104492 34 43 2 43
+26 0.625000 0.062500 0.658203 0.104492 34 43 2 43
+27 0.687500 0.062500 0.720703 0.104492 34 43 2 43
+28 0.750000 0.062500 0.783203 0.104492 34 43 2 43
+29 0.812500 0.062500 0.845703 0.104492 34 43 2 43
+30 0.875000 0.062500 0.908203 0.104492 34 43 2 43
+31 0.937500 0.062500 0.970703 0.104492 34 43 2 43
+32 0.000000 0.125000 0.033203 0.125000 34 0 0 0
+33 0.062500 0.125000 0.095703 0.165039 34 41 15 40
+34 0.125000 0.125000 0.158203 0.143555 34 19 9 39
+35 0.187500 0.125000 0.220703 0.169922 34 46 5 42
+36 0.250000 0.125000 0.283203 0.171875 34 48 7 42
+37 0.312500 0.125000 0.345703 0.165039 34 41 5 40
+38 0.375000 0.125000 0.408203 0.160156 34 36 6 34
+39 0.437500 0.125000 0.470703 0.143555 34 19 15 39
+40 0.500000 0.125000 0.533203 0.170898 34 47 18 39
+41 0.562500 0.125000 0.595703 0.170898 34 47 9 39
+42 0.625000 0.125000 0.658203 0.147461 34 23 7 39
+43 0.687500 0.125000 0.720703 0.156250 34 32 4 34
+44 0.750000 0.125000 0.783203 0.144531 34 20 8 10
+45 0.812500 0.125000 0.845703 0.128906 34 4 4 20
+46 0.875000 0.125000 0.908203 0.133789 34 9 14 8
+47 0.937500 0.125000 0.970703 0.172852 34 49 7 43
+48 0.000000 0.187500 0.033203 0.227539 34 41 7 40
+49 0.062500 0.187500 0.095703 0.226562 34 40 7 40
+50 0.125000 0.187500 0.158203 0.226562 34 40 5 40
+51 0.187500 0.187500 0.220703 0.227539 34 41 6 40
+52 0.250000 0.187500 0.283203 0.225586 34 39 6 39
+53 0.312500 0.187500 0.345703 0.226562 34 40 6 39
+54 0.375000 0.187500 0.408203 0.227539 34 41 8 40
+55 0.437500 0.187500 0.470703 0.226562 34 40 6 39
+56 0.500000 0.187500 0.533203 0.227539 34 41 7 40
+57 0.562500 0.187500 0.595703 0.227539 34 41 8 40
+58 0.625000 0.187500 0.658203 0.214844 34 28 14 27
+59 0.687500 0.187500 0.720703 0.223633 34 37 8 27
+60 0.750000 0.187500 0.783203 0.218750 34 32 4 34
+61 0.812500 0.187500 0.845703 0.199219 34 12 3 24
+62 0.875000 0.187500 0.908203 0.218750 34 32 4 34
+63 0.937500 0.187500 0.970703 0.224609 34 38 8 37
+64 0.000000 0.250000 0.033203 0.292969 34 44 6 40
+65 0.062500 0.250000 0.095703 0.286133 34 37 0 37
+66 0.125000 0.250000 0.158203 0.286133 34 37 2 37
+67 0.187500 0.250000 0.220703 0.288086 34 39 4 37
+68 0.250000 0.250000 0.283203 0.286133 34 37 2 37
+69 0.312500 0.250000 0.345703 0.286133 34 37 2 37
+70 0.375000 0.250000 0.408203 0.286133 34 37 2 37
+71 0.437500 0.250000 0.470703 0.288086 34 39 4 37
+72 0.500000 0.250000 0.533203 0.286133 34 37 3 37
+73 0.562500 0.250000 0.595703 0.286133 34 37 7 37
+74 0.625000 0.250000 0.658203 0.288086 34 39 5 37
+75 0.687500 0.250000 0.720703 0.286133 34 37 2 37
+76 0.750000 0.250000 0.783203 0.286133 34 37 4 37
+77 0.812500 0.250000 0.845703 0.286133 34 37 0 37
+78 0.875000 0.250000 0.908203 0.286133 34 37 1 37
+79 0.937500 0.250000 0.970703 0.288086 34 39 3 37
+80 0.000000 0.312500 0.033203 0.348633 34 37 2 37
+81 0.062500 0.312500 0.095703 0.356445 34 45 3 37
+82 0.125000 0.312500 0.158203 0.348633 34 37 2 37
+83 0.187500 0.312500 0.220703 0.350586 34 39 5 37
+84 0.250000 0.312500 0.283203 0.348633 34 37 4 37
85 0.312500 0.312500 0.345703 0.350586 34 39 2 37
-86 0.375000 0.312500 0.412109 0.348633 38 37 0 37
-87 0.437500 0.312500 0.473633 0.348633 37 37 1 37
+86 0.375000 0.312500 0.408203 0.348633 34 37 0 37
+87 0.437500 0.312500 0.470703 0.348633 34 37 1 37
88 0.500000 0.312500 0.533203 0.348633 34 37 2 37
-89 0.562500 0.312500 0.594727 0.348633 33 37 3 37
-90 0.625000 0.312500 0.650391 0.348633 26 37 6 37
-91 0.687500 0.312500 0.699219 0.358398 12 47 17 39
-92 0.750000 0.312500 0.774414 0.360352 25 49 7 43
-93 0.812500 0.312500 0.824219 0.358398 12 47 9 39
-94 0.875000 0.312500 0.899414 0.330078 25 18 7 40
-95 0.937500 0.312500 0.975586 0.316406 39 4 0 -4
-96 0.000000 0.375000 0.011719 0.384766 12 10 9 41
-97 0.062500 0.375000 0.092773 0.404297 31 30 4 28
+89 0.562500 0.312500 0.595703 0.348633 34 37 3 37
+90 0.625000 0.312500 0.658203 0.348633 34 37 6 37
+91 0.687500 0.312500 0.720703 0.358398 34 47 17 39
+92 0.750000 0.312500 0.783203 0.360352 34 49 7 43
+93 0.812500 0.312500 0.845703 0.358398 34 47 9 39
+94 0.875000 0.312500 0.908203 0.330078 34 18 7 40
+95 0.937500 0.312500 0.970703 0.316406 34 4 0 -4
+96 0.000000 0.375000 0.033203 0.384766 34 10 9 41
+97 0.062500 0.375000 0.095703 0.404297 34 30 4 28
98 0.125000 0.375000 0.158203 0.415039 34 41 1 39
-99 0.187500 0.375000 0.216797 0.404297 30 30 5 28
+99 0.187500 0.375000 0.220703 0.404297 34 30 5 28
100 0.250000 0.375000 0.283203 0.415039 34 41 4 39
-101 0.312500 0.375000 0.341797 0.404297 30 30 4 28
-102 0.375000 0.375000 0.403320 0.413086 29 39 6 39
-103 0.437500 0.375000 0.468750 0.414062 32 40 4 28
+101 0.312500 0.375000 0.345703 0.404297 34 30 4 28
+102 0.375000 0.375000 0.408203 0.413086 34 39 6 39
+103 0.437500 0.375000 0.470703 0.414062 34 40 4 28
104 0.500000 0.375000 0.533203 0.413086 34 39 2 39
-105 0.562500 0.375000 0.589844 0.414062 28 40 5 40
-106 0.625000 0.375000 0.645508 0.425781 21 52 9 40
-107 0.687500 0.375000 0.717773 0.413086 31 39 4 39
-108 0.750000 0.375000 0.777344 0.413086 28 39 5 39
-109 0.812500 0.375000 0.849609 0.402344 38 28 0 28
-110 0.875000 0.375000 0.906250 0.402344 32 28 3 28
-111 0.937500 0.375000 0.966797 0.404297 30 30 4 28
+105 0.562500 0.375000 0.595703 0.414062 34 40 5 40
+106 0.625000 0.375000 0.658203 0.425781 34 52 9 40
+107 0.687500 0.375000 0.720703 0.413086 34 39 4 39
+108 0.750000 0.375000 0.783203 0.413086 34 39 5 39
+109 0.812500 0.375000 0.845703 0.402344 34 28 0 28
+110 0.875000 0.375000 0.908203 0.402344 34 28 3 28
+111 0.937500 0.375000 0.970703 0.404297 34 30 4 28
112 0.000000 0.437500 0.033203 0.476562 34 40 1 28
113 0.062500 0.437500 0.095703 0.476562 34 40 4 28
-114 0.125000 0.437500 0.154297 0.464844 30 28 5 28
-115 0.187500 0.437500 0.212891 0.466797 26 30 6 28
-116 0.250000 0.437500 0.279297 0.475586 30 39 2 37
-117 0.312500 0.437500 0.344727 0.465820 33 29 2 27
-118 0.375000 0.437500 0.410156 0.463867 36 27 1 27
-119 0.437500 0.437500 0.472656 0.463867 36 27 1 27
-120 0.500000 0.437500 0.532227 0.463867 33 27 3 27
-121 0.562500 0.437500 0.594727 0.475586 33 39 3 27
-122 0.625000 0.437500 0.649414 0.463867 25 27 7 27
-123 0.687500 0.437500 0.701172 0.483398 14 47 12 39
-124 0.750000 0.437500 0.753906 0.483398 4 47 17 39
-125 0.812500 0.437500 0.826172 0.483398 14 47 12 39
-126 0.875000 0.437500 0.902344 0.447266 28 10 5 23
-127 0.937500 0.437500 0.954102 0.479492 17 43 2 43
-128 0.000000 0.500000 0.016602 0.541992 17 43 2 43
-129 0.062500 0.500000 0.079102 0.541992 17 43 2 43
-130 0.125000 0.500000 0.141602 0.541992 17 43 2 43
-131 0.187500 0.500000 0.204102 0.541992 17 43 2 43
-132 0.250000 0.500000 0.266602 0.541992 17 43 2 43
-133 0.312500 0.500000 0.329102 0.541992 17 43 2 43
-134 0.375000 0.500000 0.391602 0.541992 17 43 2 43
-135 0.437500 0.500000 0.454102 0.541992 17 43 2 43
-136 0.500000 0.500000 0.516602 0.541992 17 43 2 43
-137 0.562500 0.500000 0.579102 0.541992 17 43 2 43
-138 0.625000 0.500000 0.641602 0.541992 17 43 2 43
-139 0.687500 0.500000 0.704102 0.541992 17 43 2 43
-140 0.750000 0.500000 0.766602 0.541992 17 43 2 43
-141 0.812500 0.500000 0.829102 0.541992 17 43 2 43
-142 0.875000 0.500000 0.891602 0.541992 17 43 2 43
-143 0.937500 0.500000 0.954102 0.541992 17 43 2 43
-144 0.000000 0.562500 0.016602 0.604492 17 43 2 43
-145 0.062500 0.562500 0.079102 0.604492 17 43 2 43
-146 0.125000 0.562500 0.141602 0.604492 17 43 2 43
-147 0.187500 0.562500 0.204102 0.604492 17 43 2 43
-148 0.250000 0.562500 0.266602 0.604492 17 43 2 43
-149 0.312500 0.562500 0.329102 0.604492 17 43 2 43
-150 0.375000 0.562500 0.391602 0.604492 17 43 2 43
-151 0.437500 0.562500 0.454102 0.604492 17 43 2 43
-152 0.500000 0.562500 0.516602 0.604492 17 43 2 43
-153 0.562500 0.562500 0.579102 0.604492 17 43 2 43
-154 0.625000 0.562500 0.641602 0.604492 17 43 2 43
-155 0.687500 0.562500 0.704102 0.604492 17 43 2 43
-156 0.750000 0.562500 0.766602 0.604492 17 43 2 43
-157 0.812500 0.562500 0.829102 0.604492 17 43 2 43
-158 0.875000 0.562500 0.891602 0.604492 17 43 2 43
-159 0.937500 0.562500 0.954102 0.604492 17 43 2 43
-160 0.000000 0.625000 0.000000 0.625000 0 0 0 0
-161 0.062500 0.625000 0.071289 0.665039 9 41 15 30
-162 0.125000 0.625000 0.148438 0.666016 24 42 7 41
-163 0.187500 0.625000 0.216797 0.661133 30 37 4 37
-164 0.250000 0.625000 0.275391 0.650391 26 26 6 32
-165 0.312500 0.625000 0.344727 0.661133 33 37 3 37
-166 0.375000 0.625000 0.378906 0.670898 4 47 17 39
-167 0.437500 0.625000 0.467773 0.666992 31 43 4 39
-168 0.500000 0.625000 0.521484 0.632812 22 8 8 40
-169 0.562500 0.625000 0.600586 0.662109 39 38 0 37
-170 0.625000 0.625000 0.644531 0.644531 20 20 9 37
-171 0.687500 0.625000 0.717773 0.651367 31 27 4 27
-172 0.750000 0.625000 0.779297 0.643555 30 19 4 29
-173 0.812500 0.625000 0.841797 0.628906 30 4 4 20
-174 0.875000 0.625000 0.913086 0.662109 39 38 0 37
-175 0.937500 0.625000 0.957031 0.627930 20 3 9 37
-176 0.000000 0.687500 0.019531 0.706055 20 19 9 41
-177 0.062500 0.687500 0.091797 0.720703 30 34 4 34
-178 0.125000 0.687500 0.139648 0.710938 15 24 11 40
-179 0.187500 0.687500 0.203125 0.710938 16 24 11 40
-180 0.250000 0.687500 0.261719 0.697266 12 10 17 41
-181 0.312500 0.687500 0.344727 0.726562 33 40 2 27
-182 0.375000 0.687500 0.403320 0.729492 29 43 5 39
-183 0.437500 0.687500 0.444336 0.694336 7 7 16 18
-184 0.500000 0.687500 0.511719 0.699219 12 12 13 0
-185 0.562500 0.687500 0.577148 0.709961 15 23 12 39
-186 0.625000 0.687500 0.644531 0.706055 20 19 9 37
-187 0.687500 0.687500 0.717773 0.713867 31 27 4 27
-188 0.750000 0.687500 0.786133 0.726562 37 40 1 40
-189 0.812500 0.687500 0.847656 0.726562 36 40 1 40
-190 0.875000 0.687500 0.912109 0.726562 38 40 0 40
-191 0.937500 0.687500 0.959961 0.725586 23 39 7 27
-192 0.000000 0.750000 0.037109 0.798828 38 50 0 50
-193 0.062500 0.750000 0.099609 0.798828 38 50 0 50
-194 0.125000 0.750000 0.162109 0.797852 38 49 0 49
-195 0.187500 0.750000 0.224609 0.793945 38 45 0 45
-196 0.250000 0.750000 0.287109 0.794922 38 46 0 46
-197 0.312500 0.750000 0.349609 0.799805 38 51 0 51
-198 0.375000 0.750000 0.412109 0.786133 38 37 0 37
-199 0.437500 0.750000 0.467773 0.797852 31 49 4 37
-200 0.500000 0.750000 0.531250 0.798828 32 50 2 50
-201 0.562500 0.750000 0.593750 0.798828 32 50 2 50
-202 0.625000 0.750000 0.656250 0.797852 32 49 2 49
-203 0.687500 0.750000 0.718750 0.794922 32 46 2 46
-204 0.750000 0.750000 0.774414 0.798828 25 50 7 50
-205 0.812500 0.750000 0.836914 0.798828 25 50 7 50
-206 0.875000 0.750000 0.899414 0.797852 25 49 7 49
-207 0.937500 0.750000 0.961914 0.794922 25 46 7 46
+114 0.125000 0.437500 0.158203 0.464844 34 28 5 28
+115 0.187500 0.437500 0.220703 0.466797 34 30 6 28
+116 0.250000 0.437500 0.283203 0.475586 34 39 2 37
+117 0.312500 0.437500 0.345703 0.465820 34 29 2 27
+118 0.375000 0.437500 0.408203 0.463867 34 27 1 27
+119 0.437500 0.437500 0.470703 0.463867 34 27 1 27
+120 0.500000 0.437500 0.533203 0.463867 34 27 3 27
+121 0.562500 0.437500 0.595703 0.475586 34 39 3 27
+122 0.625000 0.437500 0.658203 0.463867 34 27 7 27
+123 0.687500 0.437500 0.720703 0.483398 34 47 12 39
+124 0.750000 0.437500 0.783203 0.483398 34 47 17 39
+125 0.812500 0.437500 0.845703 0.483398 34 47 12 39
+126 0.875000 0.437500 0.908203 0.447266 34 10 5 23
+127 0.937500 0.437500 0.970703 0.479492 34 43 2 43
+128 0.000000 0.500000 0.033203 0.541992 34 43 2 43
+129 0.062500 0.500000 0.095703 0.541992 34 43 2 43
+130 0.125000 0.500000 0.158203 0.541992 34 43 2 43
+131 0.187500 0.500000 0.220703 0.541992 34 43 2 43
+132 0.250000 0.500000 0.283203 0.541992 34 43 2 43
+133 0.312500 0.500000 0.345703 0.541992 34 43 2 43
+134 0.375000 0.500000 0.408203 0.541992 34 43 2 43
+135 0.437500 0.500000 0.470703 0.541992 34 43 2 43
+136 0.500000 0.500000 0.533203 0.541992 34 43 2 43
+137 0.562500 0.500000 0.595703 0.541992 34 43 2 43
+138 0.625000 0.500000 0.658203 0.541992 34 43 2 43
+139 0.687500 0.500000 0.720703 0.541992 34 43 2 43
+140 0.750000 0.500000 0.783203 0.541992 34 43 2 43
+141 0.812500 0.500000 0.845703 0.541992 34 43 2 43
+142 0.875000 0.500000 0.908203 0.541992 34 43 2 43
+143 0.937500 0.500000 0.970703 0.541992 34 43 2 43
+144 0.000000 0.562500 0.033203 0.604492 34 43 2 43
+145 0.062500 0.562500 0.095703 0.604492 34 43 2 43
+146 0.125000 0.562500 0.158203 0.604492 34 43 2 43
+147 0.187500 0.562500 0.220703 0.604492 34 43 2 43
+148 0.250000 0.562500 0.283203 0.604492 34 43 2 43
+149 0.312500 0.562500 0.345703 0.604492 34 43 2 43
+150 0.375000 0.562500 0.408203 0.604492 34 43 2 43
+151 0.437500 0.562500 0.470703 0.604492 34 43 2 43
+152 0.500000 0.562500 0.533203 0.604492 34 43 2 43
+153 0.562500 0.562500 0.595703 0.604492 34 43 2 43
+154 0.625000 0.562500 0.658203 0.604492 34 43 2 43
+155 0.687500 0.562500 0.720703 0.604492 34 43 2 43
+156 0.750000 0.562500 0.783203 0.604492 34 43 2 43
+157 0.812500 0.562500 0.845703 0.604492 34 43 2 43
+158 0.875000 0.562500 0.908203 0.604492 34 43 2 43
+159 0.937500 0.562500 0.970703 0.604492 34 43 2 43
+160 0.000000 0.625000 0.033203 0.625000 34 0 0 0
+161 0.062500 0.625000 0.095703 0.665039 34 41 15 30
+162 0.125000 0.625000 0.158203 0.666016 34 42 7 41
+163 0.187500 0.625000 0.220703 0.661133 34 37 4 37
+164 0.250000 0.625000 0.283203 0.650391 34 26 6 32
+165 0.312500 0.625000 0.345703 0.661133 34 37 3 37
+166 0.375000 0.625000 0.408203 0.670898 34 47 17 39
+167 0.437500 0.625000 0.470703 0.666992 34 43 4 39
+168 0.500000 0.625000 0.533203 0.632812 34 8 8 40
+169 0.562500 0.625000 0.595703 0.662109 34 38 0 37
+170 0.625000 0.625000 0.658203 0.644531 34 20 9 37
+171 0.687500 0.625000 0.720703 0.651367 34 27 4 27
+172 0.750000 0.625000 0.783203 0.643555 34 19 4 29
+173 0.812500 0.625000 0.845703 0.628906 34 4 4 20
+174 0.875000 0.625000 0.908203 0.662109 34 38 0 37
+175 0.937500 0.625000 0.970703 0.627930 34 3 9 37
+176 0.000000 0.687500 0.033203 0.706055 34 19 9 41
+177 0.062500 0.687500 0.095703 0.720703 34 34 4 34
+178 0.125000 0.687500 0.158203 0.710938 34 24 11 40
+179 0.187500 0.687500 0.220703 0.710938 34 24 11 40
+180 0.250000 0.687500 0.283203 0.697266 34 10 17 41
+181 0.312500 0.687500 0.345703 0.726562 34 40 2 27
+182 0.375000 0.687500 0.408203 0.729492 34 43 5 39
+183 0.437500 0.687500 0.470703 0.694336 34 7 16 18
+184 0.500000 0.687500 0.533203 0.699219 34 12 13 0
+185 0.562500 0.687500 0.595703 0.709961 34 23 12 39
+186 0.625000 0.687500 0.658203 0.706055 34 19 9 37
+187 0.687500 0.687500 0.720703 0.713867 34 27 4 27
+188 0.750000 0.687500 0.783203 0.726562 34 40 1 40
+189 0.812500 0.687500 0.845703 0.726562 34 40 1 40
+190 0.875000 0.687500 0.908203 0.726562 34 40 0 40
+191 0.937500 0.687500 0.970703 0.725586 34 39 7 27
+192 0.000000 0.750000 0.033203 0.798828 34 50 0 50
+193 0.062500 0.750000 0.095703 0.798828 34 50 0 50
+194 0.125000 0.750000 0.158203 0.797852 34 49 0 49
+195 0.187500 0.750000 0.220703 0.793945 34 45 0 45
+196 0.250000 0.750000 0.283203 0.794922 34 46 0 46
+197 0.312500 0.750000 0.345703 0.799805 34 51 0 51
+198 0.375000 0.750000 0.408203 0.786133 34 37 0 37
+199 0.437500 0.750000 0.470703 0.797852 34 49 4 37
+200 0.500000 0.750000 0.533203 0.798828 34 50 2 50
+201 0.562500 0.750000 0.595703 0.798828 34 50 2 50
+202 0.625000 0.750000 0.658203 0.797852 34 49 2 49
+203 0.687500 0.750000 0.720703 0.794922 34 46 2 46
+204 0.750000 0.750000 0.783203 0.798828 34 50 7 50
+205 0.812500 0.750000 0.845703 0.798828 34 50 7 50
+206 0.875000 0.750000 0.908203 0.797852 34 49 7 49
+207 0.937500 0.750000 0.970703 0.794922 34 46 7 46
208 0.000000 0.812500 0.033203 0.848633 34 37 0 37
-209 0.062500 0.812500 0.096680 0.857422 35 46 1 46
-210 0.125000 0.812500 0.157227 0.863281 33 52 3 50
-211 0.187500 0.812500 0.219727 0.863281 33 52 3 50
-212 0.250000 0.812500 0.282227 0.862305 33 51 3 49
-213 0.312500 0.812500 0.344727 0.858398 33 47 3 45
-214 0.375000 0.812500 0.407227 0.859375 33 48 3 46
-215 0.437500 0.812500 0.460938 0.835938 24 24 7 30
+209 0.062500 0.812500 0.095703 0.857422 34 46 1 46
+210 0.125000 0.812500 0.158203 0.863281 34 52 3 50
+211 0.187500 0.812500 0.220703 0.863281 34 52 3 50
+212 0.250000 0.812500 0.283203 0.862305 34 51 3 49
+213 0.312500 0.812500 0.345703 0.858398 34 47 3 45
+214 0.375000 0.812500 0.408203 0.859375 34 48 3 46
+215 0.437500 0.812500 0.470703 0.835938 34 24 7 30
216 0.500000 0.812500 0.533203 0.853516 34 42 2 39
217 0.562500 0.812500 0.595703 0.863281 34 52 2 50
218 0.625000 0.812500 0.658203 0.863281 34 52 2 50
219 0.687500 0.812500 0.720703 0.862305 34 51 2 49
220 0.750000 0.812500 0.783203 0.859375 34 48 2 46
-221 0.812500 0.812500 0.844727 0.861328 33 50 3 50
-222 0.875000 0.812500 0.904297 0.848633 30 37 2 37
-223 0.937500 0.812500 0.966797 0.852539 30 41 2 39
-224 0.000000 0.875000 0.030273 0.916992 31 43 4 41
-225 0.062500 0.875000 0.092773 0.916992 31 43 4 41
-226 0.125000 0.875000 0.155273 0.916992 31 43 4 41
-227 0.187500 0.875000 0.217773 0.914062 31 40 4 38
-228 0.250000 0.875000 0.280273 0.914062 31 40 4 38
-229 0.312500 0.875000 0.342773 0.918945 31 45 4 43
-230 0.375000 0.875000 0.411133 0.904297 37 30 0 28
-231 0.437500 0.875000 0.466797 0.914062 30 40 5 28
-232 0.500000 0.875000 0.529297 0.916992 30 43 4 41
-233 0.562500 0.875000 0.591797 0.916992 30 43 4 41
-234 0.625000 0.875000 0.654297 0.916016 30 42 4 40
-235 0.687500 0.875000 0.716797 0.914062 30 40 4 38
-236 0.750000 0.875000 0.777344 0.915039 28 41 5 41
-237 0.812500 0.875000 0.839844 0.915039 28 41 5 41
-238 0.875000 0.875000 0.902344 0.915039 28 41 5 41
-239 0.937500 0.875000 0.964844 0.912109 28 38 5 38
-240 0.000000 0.937500 0.029297 0.978516 30 42 4 40
-241 0.062500 0.937500 0.093750 0.974609 32 38 3 38
-242 0.125000 0.937500 0.154297 0.979492 30 43 4 41
-243 0.187500 0.937500 0.216797 0.979492 30 43 4 41
-244 0.250000 0.937500 0.279297 0.979492 30 43 4 41
-245 0.312500 0.937500 0.341797 0.976562 30 40 4 38
-246 0.375000 0.937500 0.404297 0.976562 30 40 4 38
-247 0.437500 0.937500 0.466797 0.970703 30 34 4 35
-248 0.500000 0.937500 0.531250 0.969727 32 33 3 30
-249 0.562500 0.937500 0.594727 0.979492 33 43 2 41
-250 0.625000 0.937500 0.657227 0.979492 33 43 2 41
-251 0.687500 0.937500 0.719727 0.979492 33 43 2 41
-252 0.750000 0.937500 0.782227 0.976562 33 40 2 38
-253 0.812500 0.937500 0.844727 0.989258 33 53 3 41
+221 0.812500 0.812500 0.845703 0.861328 34 50 3 50
+222 0.875000 0.812500 0.908203 0.848633 34 37 2 37
+223 0.937500 0.812500 0.970703 0.852539 34 41 2 39
+224 0.000000 0.875000 0.033203 0.916992 34 43 4 41
+225 0.062500 0.875000 0.095703 0.916992 34 43 4 41
+226 0.125000 0.875000 0.158203 0.916992 34 43 4 41
+227 0.187500 0.875000 0.220703 0.914062 34 40 4 38
+228 0.250000 0.875000 0.283203 0.914062 34 40 4 38
+229 0.312500 0.875000 0.345703 0.918945 34 45 4 43
+230 0.375000 0.875000 0.408203 0.904297 34 30 0 28
+231 0.437500 0.875000 0.470703 0.914062 34 40 5 28
+232 0.500000 0.875000 0.533203 0.916992 34 43 4 41
+233 0.562500 0.875000 0.595703 0.916992 34 43 4 41
+234 0.625000 0.875000 0.658203 0.916016 34 42 4 40
+235 0.687500 0.875000 0.720703 0.914062 34 40 4 38
+236 0.750000 0.875000 0.783203 0.915039 34 41 5 41
+237 0.812500 0.875000 0.845703 0.915039 34 41 5 41
+238 0.875000 0.875000 0.908203 0.915039 34 41 5 41
+239 0.937500 0.875000 0.970703 0.912109 34 38 5 38
+240 0.000000 0.937500 0.033203 0.978516 34 42 4 40
+241 0.062500 0.937500 0.095703 0.974609 34 38 3 38
+242 0.125000 0.937500 0.158203 0.979492 34 43 4 41
+243 0.187500 0.937500 0.220703 0.979492 34 43 4 41
+244 0.250000 0.937500 0.283203 0.979492 34 43 4 41
+245 0.312500 0.937500 0.345703 0.976562 34 40 4 38
+246 0.375000 0.937500 0.408203 0.976562 34 40 4 38
+247 0.437500 0.937500 0.470703 0.970703 34 34 4 35
+248 0.500000 0.937500 0.533203 0.969727 34 33 3 30
+249 0.562500 0.937500 0.595703 0.979492 34 43 2 41
+250 0.625000 0.937500 0.658203 0.979492 34 43 2 41
+251 0.687500 0.937500 0.720703 0.979492 34 43 2 41
+252 0.750000 0.937500 0.783203 0.976562 34 40 2 38
+253 0.812500 0.937500 0.845703 0.989258 34 53 3 41
254 0.875000 0.937500 0.908203 0.986328 34 50 1 38
-255 0.937500 0.937500 0.969727 0.986328 33 50 3 38
+255 0.937500 0.937500 0.970703 0.986328 34 50 3 38
Modified: Mercury2/Themes/default/Font/FreeMono.png
===================================================================
(Binary files differ)
Modified: Mercury2/Themes/default/Font/FreeMonoBold.hgfont
===================================================================
--- Mercury2/Themes/default/Font/FreeMonoBold.hgfont 2009-10-22 19:51:23 UTC (rev 578)
+++ Mercury2/Themes/default/Font/FreeMonoBold.hgfont 2009-10-22 19:52:50 UTC (rev 579)
@@ -1,258 +1,258 @@
FONT:FreeMonoBold.png
64 4.000000 15.000000 80.000000
-0 0.000000 0.000000 0.016602 0.041992 17 43 2 43
-1 0.062500 0.000000 0.079102 0.041992 17 43 2 43
-2 0.125000 0.000000 0.141602 0.041992 17 43 2 43
-3 0.187500 0.000000 0.204102 0.041992 17 43 2 43
-4 0.250000 0.000000 0.266602 0.041992 17 43 2 43
-5 0.312500 0.000000 0.329102 0.041992 17 43 2 43
-6 0.375000 0.000000 0.391602 0.041992 17 43 2 43
-7 0.437500 0.000000 0.454102 0.041992 17 43 2 43
-8 0.500000 0.000000 0.516602 0.041992 17 43 2 43
-9 0.562500 0.000000 0.579102 0.041992 17 43 2 43
-10 0.625000 0.000000 0.641602 0.041992 17 43 2 43
-11 0.687500 0.000000 0.704102 0.041992 17 43 2 43
-12 0.750000 0.000000 0.766602 0.041992 17 43 2 43
-13 0.812500 0.000000 0.829102 0.041992 17 43 2 43
-14 0.875000 0.000000 0.891602 0.041992 17 43 2 43
-15 0.937500 0.000000 0.954102 0.041992 17 43 2 43
-16 0.000000 0.062500 0.016602 0.104492 17 43 2 43
-17 0.062500 0.062500 0.079102 0.104492 17 43 2 43
-18 0.125000 0.062500 0.141602 0.104492 17 43 2 43
-19 0.187500 0.062500 0.204102 0.104492 17 43 2 43
-20 0.250000 0.062500 0.266602 0.104492 17 43 2 43
-21 0.312500 0.062500 0.329102 0.104492 17 43 2 43
-22 0.375000 0.062500 0.391602 0.104492 17 43 2 43
-23 0.437500 0.062500 0.454102 0.104492 17 43 2 43
-24 0.500000 0.062500 0.516602 0.104492 17 43 2 43
-25 0.562500 0.062500 0.579102 0.104492 17 43 2 43
-26 0.625000 0.062500 0.641602 0.104492 17 43 2 43
-27 0.687500 0.062500 0.704102 0.104492 17 43 2 43
-28 0.750000 0.062500 0.766602 0.104492 17 43 2 43
-29 0.812500 0.062500 0.829102 0.104492 17 43 2 43
-30 0.875000 0.062500 0.891602 0.104492 17 43 2 43
-31 0.937500 0.062500 0.954102 0.104492 17 43 2 43
-32 0.000000 0.125000 0.000000 0.125000 0 0 0 0
-33 0.062500 0.125000 0.073242 0.166016 11 42 14 41
-34 0.125000 0.125000 0.146484 0.144531 22 20 8 39
-35 0.187500 0.125000 0.218750 0.173828 32 50 3 44
-36 0.250000 0.125000 0.278320 0.175781 29 52 5 44
-37 0.312500 0.125000 0.340820 0.165039 29 41 5 40
-38 0.375000 0.125000 0.403320 0.161133 29 37 4 36
-39 0.437500 0.125000 0.446289 0.144531 9 20 15 39
-40 0.500000 0.125000 0.515625 0.174805 16 51 16 41
-41 0.562500 0.125000 0.577148 0.174805 15 51 7 41
-42 0.625000 0.125000 0.653320 0.151367 29 27 5 40
+0 0.000000 0.000000 0.033203 0.041992 34 43 2 43
+1 0.062500 0.000000 0.095703 0.041992 34 43 2 43
+2 0.125000 0.000000 0.158203 0.041992 34 43 2 43
+3 0.187500 0.000000 0.220703 0.041992 34 43 2 43
+4 0.250000 0.000000 0.283203 0.041992 34 43 2 43
+5 0.312500 0.000000 0.345703 0.041992 34 43 2 43
+6 0.375000 0.000000 0.408203 0.041992 34 43 2 43
+7 0.437500 0.000000 0.470703 0.041992 34 43 2 43
+8 0.500000 0.000000 0.533203 0.041992 34 43 2 43
+9 0.562500 0.000000 0.595703 0.041992 34 43 2 43
+10 0.625000 0.000000 0.658203 0.041992 34 43 2 43
+11 0.687500 0.000000 0.720703 0.041992 34 43 2 43
+12 0.750000 0.000000 0.783203 0.041992 34 43 2 43
+13 0.812500 0.000000 0.845703 0.041992 34 43 2 43
+14 0.875000 0.000000 0.908203 0.041992 34 43 2 43
+15 0.937500 0.000000 0.970703 0.041992 34 43 2 43
+16 0.000000 0.062500 0.033203 0.104492 34 43 2 43
+17 0.062500 0.062500 0.095703 0.104492 34 43 2 43
+18 0.125000 0.062500 0.158203 0.104492 34 43 2 43
+19 0.187500 0.062500 0.220703 0.104492 34 43 2 43
+20 0.250000 0.062500 0.283203 0.104492 34 43 2 43
+21 0.312500 0.062500 0.345703 0.104492 34 43 2 43
+22 0.375000 0.062500 0.408203 0.104492 34 43 2 43
+23 0.437500 0.062500 0.470703 0.104492 34 43 2 43
+24 0.500000 0.062500 0.533203 0.104492 34 43 2 43
+25 0.562500 0.062500 0.595703 0.104492 34 43 2 43
+26 0.625000 0.062500 0.658203 0.104492 34 43 2 43
+27 0.687500 0.062500 0.720703 0.104492 34 43 2 43
+28 0.750000 0.062500 0.783203 0.104492 34 43 2 43
+29 0.812500 0.062500 0.845703 0.104492 34 43 2 43
+30 0.875000 0.062500 0.908203 0.104492 34 43 2 43
+31 0.937500 0.062500 0.970703 0.104492 34 43 2 43
+32 0.000000 0.125000 0.033203 0.125000 34 0 0 0
+33 0.062500 0.125000 0.095703 0.166016 34 42 14 41
+34 0.125000 0.125000 0.158203 0.144531 34 20 8 39
+35 0.187500 0.125000 0.220703 0.173828 34 50 3 44
+36 0.250000 0.125000 0.283203 0.175781 34 52 5 44
+37 0.312500 0.125000 0.345703 0.165039 34 41 5 40
+38 0.375000 0.125000 0.408203 0.161133 34 37 4 36
+39 0.437500 0.125000 0.470703 0.144531 34 20 15 39
+40 0.500000 0.125000 0.533203 0.174805 34 51 16 41
+41 0.562500 0.125000 0.595703 0.174805 34 51 7 41
+42 0.625000 0.125000 0.658203 0.151367 34 27 5 40
43 0.687500 0.125000 0.720703 0.160156 34 36 2 36
-44 0.750000 0.125000 0.763672 0.144531 14 20 9 9
+44 0.750000 0.125000 0.783203 0.144531 34 20 9 9
45 0.812500 0.125000 0.845703 0.132812 34 8 2 22
-46 0.875000 0.125000 0.884766 0.133789 10 9 14 8
-47 0.937500 0.125000 0.965820 0.176758 29 53 5 45
-48 0.000000 0.187500 0.028320 0.228516 29 42 5 41
-49 0.062500 0.187500 0.090820 0.227539 29 41 5 41
-50 0.125000 0.187500 0.154297 0.227539 30 41 3 41
-51 0.187500 0.187500 0.216797 0.228516 30 42 4 41
-52 0.250000 0.187500 0.278320 0.226562 29 40 4 40
-53 0.312500 0.187500 0.341797 0.227539 30 41 4 40
-54 0.375000 0.187500 0.403320 0.228516 29 42 6 41
-55 0.437500 0.187500 0.465820 0.227539 29 41 4 40
-56 0.500000 0.187500 0.528320 0.228516 29 42 5 41
-57 0.562500 0.187500 0.590820 0.228516 29 42 6 41
-58 0.625000 0.187500 0.634766 0.215820 10 29 14 28
-59 0.687500 0.187500 0.701172 0.225586 14 39 9 28
-60 0.750000 0.187500 0.782227 0.216797 33 30 2 33
+46 0.875000 0.125000 0.908203 0.133789 34 9 14 8
+47 0.937500 0.125000 0.970703 0.176758 34 53 5 45
+48 0.000000 0.187500 0.033203 0.228516 34 42 5 41
+49 0.062500 0.187500 0.095703 0.227539 34 41 5 41
+50 0.125000 0.187500 0.158203 0.227539 34 41 3 41
+51 0.187500 0.187500 0.220703 0.228516 34 42 4 41
+52 0.250000 0.187500 0.283203 0.226562 34 40 4 40
+53 0.312500 0.187500 0.345703 0.227539 34 41 4 40
+54 0.375000 0.187500 0.408203 0.228516 34 42 6 41
+55 0.437500 0.187500 0.470703 0.227539 34 41 4 40
+56 0.500000 0.187500 0.533203 0.228516 34 42 5 41
+57 0.562500 0.187500 0.595703 0.228516 34 42 6 41
+58 0.625000 0.187500 0.658203 0.215820 34 29 14 28
+59 0.687500 0.187500 0.720703 0.225586 34 39 9 28
+60 0.750000 0.187500 0.783203 0.216797 34 30 2 33
61 0.812500 0.187500 0.845703 0.207031 34 20 2 28
-62 0.875000 0.187500 0.907227 0.215820 33 29 3 32
-63 0.937500 0.187500 0.964844 0.226562 28 40 6 39
-64 0.000000 0.250000 0.028320 0.298828 29 50 4 40
-65 0.062500 0.250000 0.103516 0.287109 42 38 -2 38
-66 0.125000 0.250000 0.161133 0.287109 37 38 0 38
-67 0.187500 0.250000 0.221680 0.289062 35 40 2 39
-68 0.250000 0.250000 0.285156 0.287109 36 38 0 38
-69 0.312500 0.250000 0.347656 0.287109 36 38 0 38
-70 0.375000 0.250000 0.410156 0.287109 36 38 0 38
-71 0.437500 0.250000 0.472656 0.289062 36 40 2 39
-72 0.500000 0.250000 0.536133 0.287109 37 38 1 38
-73 0.562500 0.250000 0.590820 0.287109 29 38 5 38
-74 0.625000 0.250000 0.661133 0.288086 37 39 3 38
-75 0.687500 0.250000 0.725586 0.287109 39 38 0 38
-76 0.750000 0.250000 0.784180 0.287109 35 38 2 38
-77 0.812500 0.250000 0.853516 0.287109 42 38 -2 38
-78 0.875000 0.250000 0.913086 0.287109 39 38 -1 38
-79 0.937500 0.250000 0.973633 0.289062 37 40 1 39
+62 0.875000 0.187500 0.908203 0.215820 34 29 3 32
+63 0.937500 0.187500 0.970703 0.226562 34 40 6 39
+64 0.000000 0.250000 0.033203 0.298828 34 50 4 40
+65 0.062500 0.250000 0.095703 0.287109 34 38 -2 38
+66 0.125000 0.250000 0.158203 0.287109 34 38 0 38
+67 0.187500 0.250000 0.220703 0.289062 34 40 2 39
+68 0.250000 0.250000 0.283203 0.287109 34 38 0 38
+69 0.312500 0.250000 0.345703 0.287109 34 38 0 38
+70 0.375000 0.250000 0.408203 0.287109 34 38 0 38
+71 0.437500 0.250000 0.470703 0.289062 34 40 2 39
+72 0.500000 0.250000 0.533203 0.287109 34 38 1 38
+73 0.562500 0.250000 0.595703 0.287109 34 38 5 38
+74 0.625000 0.250000 0.658203 0.288086 34 39 3 38
+75 0.687500 0.250000 0.720703 0.287109 34 38 0 38
+76 0.750000 0.250000 0.783203 0.287109 34 38 2 38
+77 0.812500 0.250000 0.845703 0.287109 34 38 -2 38
+78 0.875000 0.250000 0.908203 0.287109 34 38 -1 38
+79 0.937500 0.250000 0.970703 0.289062 34 40 1 39
80 0.000000 0.312500 0.033203 0.349609 34 38 0 38
-81 0.062500 0.312500 0.098633 0.360352 37 49 1 39
-82 0.125000 0.312500 0.164062 0.349609 40 38 0 38
-83 0.187500 0.312500 0.218750 0.351562 32 40 3 39
+81 0.062500 0.312500 0.095703 0.360352 34 49 1 39
+82 0.125000 0.312500 0.158203 0.349609 34 38 0 38
+83 0.187500 0.312500 0.220703 0.351562 34 40 3 39
84 0.250000 0.312500 0.283203 0.349609 34 38 2 38
-85 0.312500 0.312500 0.349609 0.350586 38 39 0 38
-86 0.375000 0.312500 0.416016 0.349609 42 38 -2 38
-87 0.437500 0.312500 0.477539 0.349609 41 38 -1 38
-88 0.500000 0.312500 0.537109 0.349609 38 38 0 38
-89 0.562500 0.312500 0.598633 0.349609 37 38 1 38
-90 0.625000 0.312500 0.654297 0.349609 30 38 4 38
-91 0.687500 0.312500 0.702148 0.362305 15 51 16 41
-92 0.750000 0.312500 0.778320 0.364258 29 53 5 45
-93 0.812500 0.312500 0.827148 0.362305 15 51 8 41
-94 0.875000 0.312500 0.903320 0.333984 29 22 5 42
-95 0.937500 0.312500 0.975586 0.316406 39 4 0 -4
-96 0.000000 0.375000 0.012695 0.386719 13 12 10 43
-97 0.062500 0.375000 0.096680 0.405273 35 31 2 29
-98 0.125000 0.375000 0.162109 0.415039 38 41 -1 40
+85 0.312500 0.312500 0.345703 0.350586 34 39 0 38
+86 0.375000 0.312500 0.408203 0.349609 34 38 -2 38
+87 0.437500 0.312500 0.470703 0.349609 34 38 -1 38
+88 0.500000 0.312500 0.533203 0.349609 34 38 0 38
+89 0.562500 0.312500 0.595703 0.349609 34 38 1 38
+90 0.625000 0.312500 0.658203 0.349609 34 38 4 38
+91 0.687500 0.312500 0.720703 0.362305 34 51 16 41
+92 0.750000 0.312500 0.783203 0.364258 34 53 5 45
+93 0.812500 0.312500 0.845703 0.362305 34 51 8 41
+94 0.875000 0.312500 0.908203 0.333984 34 22 5 42
+95 0.937500 0.312500 0.970703 0.316406 34 4 0 -4
+96 0.000000 0.375000 0.033203 0.386719 34 12 10 43
+97 0.062500 0.375000 0.095703 0.405273 34 31 2 29
+98 0.125000 0.375000 0.158203 0.415039 34 41 -1 40
99 0.187500 0.375000 0.220703 0.405273 34 31 3 29
-100 0.250000 0.375000 0.287109 0.415039 38 41 2 40
+100 0.250000 0.375000 0.283203 0.415039 34 41 2 40
101 0.312500 0.375000 0.345703 0.405273 34 31 2 29
-102 0.375000 0.375000 0.407227 0.414062 33 40 4 40
-103 0.437500 0.375000 0.472656 0.416016 36 42 2 29
-104 0.500000 0.375000 0.537109 0.414062 38 40 0 40
-105 0.562500 0.375000 0.593750 0.414062 32 40 3 40
-106 0.625000 0.375000 0.649414 0.426758 25 53 7 40
-107 0.687500 0.375000 0.721680 0.414062 35 40 2 40
-108 0.750000 0.375000 0.781250 0.414062 32 40 3 40
-109 0.812500 0.375000 0.853516 0.403320 42 29 -2 29
-110 0.875000 0.375000 0.910156 0.403320 36 29 1 29
+102 0.375000 0.375000 0.408203 0.414062 34 40 4 40
+103 0.437500 0.375000 0.470703 0.416016 34 42 2 29
+104 0.500000 0.375000 0.533203 0.414062 34 40 0 40
+105 0.562500 0.375000 0.595703 0.414062 34 40 3 40
+106 0.625000 0.375000 0.658203 0.426758 34 53 7 40
+107 0.687500 0.375000 0.720703 0.414062 34 40 2 40
+108 0.750000 0.375000 0.783203 0.414062 34 40 3 40
+109 0.812500 0.375000 0.845703 0.403320 34 29 -2 29
+110 0.875000 0.375000 0.908203 0.403320 34 29 1 29
111 0.937500 0.375000 0.970703 0.405273 34 31 2 29
-112 0.000000 0.437500 0.037109 0.478516 38 42 -1 29
-113 0.062500 0.437500 0.099609 0.478516 38 42 2 29
+112 0.000000 0.437500 0.033203 0.478516 34 42 -1 29
+113 0.062500 0.437500 0.095703 0.478516 34 42 2 29
114 0.125000 0.437500 0.158203 0.465820 34 29 3 29
-115 0.187500 0.437500 0.216797 0.467773 30 31 4 29
+115 0.187500 0.437500 0.220703 0.467773 34 31 4 29
116 0.250000 0.437500 0.283203 0.476562 34 40 0 38
-117 0.312500 0.437500 0.348633 0.465820 37 29 0 28
-118 0.375000 0.437500 0.413086 0.464844 39 28 0 28
-119 0.437500 0.437500 0.475586 0.464844 39 28 0 28
-120 0.500000 0.437500 0.536133 0.464844 37 28 1 28
-121 0.562500 0.437500 0.598633 0.477539 37 41 1 28
-122 0.625000 0.437500 0.653320 0.464844 29 28 5 28
-123 0.687500 0.437500 0.705078 0.486328 18 50 10 40
-124 0.750000 0.437500 0.756836 0.486328 7 50 16 40
-125 0.812500 0.437500 0.830078 0.486328 18 50 10 40
-126 0.875000 0.437500 0.906250 0.451172 32 14 3 25
-127 0.937500 0.437500 0.954102 0.479492 17 43 2 43
-128 0.000000 0.500000 0.016602 0.541992 17 43 2 43
-129 0.062500 0.500000 0.079102 0.541992 17 43 2 43
-130 0.125000 0.500000 0.141602 0.541992 17 43 2 43
-131 0.187500 0.500000 0.204102 0.541992 17 43 2 43
-132 0.250000 0.500000 0.266602 0.541992 17 43 2 43
-133 0.312500 0.500000 0.329102 0.541992 17 43 2 43
-134 0.375000 0.500000 0.391602 0.541992 17 43 2 43
-135 0.437500 0.500000 0.454102 0.541992 17 43 2 43
-136 0.500000 0.500000 0.516602 0.541992 17 43 2 43
-137 0.562500 0.500000 0.579102 0.541992 17 43 2 43
-138 0.625000 0.500000 0.641602 0.541992 17 43 2 43
-139 0.687500 0.500000 0.704102 0.541992 17 43 2 43
-140 0.750000 0.500000 0.766602 0.541992 17 43 2 43
-141 0.812500 0.500000 0.829102 0.541992 17 43 2 43
-142 0.875000 0.500000 0.891602 0.541992 17 43 2 43
-143 0.937500 0.500000 0.954102 0.541992 17 43 2 43
-144 0.000000 0.562500 0.016602 0.604492 17 43 2 43
-145 0.062500 0.562500 0.079102 0.604492 17 43 2 43
-146 0.125000 0.562500 0.141602 0.604492 17 43 2 43
-147 0.187500 0.562500 0.204102 0.604492 17 43 2 43
-148 0.250000 0.562500 0.266602 0.604492 17 43 2 43
-149 0.312500 0.562500 0.329102 0.604492 17 43 2 43
-150 0.375000 0.562500 0.391602 0.604492 17 43 2 43
-151 0.437500 0.562500 0.454102 0.604492 17 43 2 43
-152 0.500000 0.562500 0.516602 0.604492 17 43 2 43
-153 0.562500 0.562500 0.579102 0.604492 17 43 2 43
-154 0.625000 0.562500 0.641602 0.604492 17 43 2 43
-155 0.687500 0.562500 0.704102 0.604492 17 43 2 43
-156 0.750000 0.562500 0.766602 0.604492 17 43 2 43
-157 0.812500 0.562500 0.829102 0.604492 17 43 2 43
-158 0.875000 0.562500 0.891602 0.604492 17 43 2 43
-159 0.937500 0.562500 0.954102 0.604492 17 43 2 43
-160 0.000000 0.625000 0.000000 0.625000 0 0 0 0
-161 0.062500 0.625000 0.073242 0.666016 11 42 13 29
-162 0.125000 0.625000 0.151367 0.669922 27 46 5 43
+117 0.312500 0.437500 0.345703 0.465820 34 29 0 28
+118 0.375000 0.437500 0.408203 0.464844 34 28 0 28
+119 0.437500 0.437500 0.470703 0.464844 34 28 0 28
+120 0.500000 0.437500 0.533203 0.464844 34 28 1 28
+121 0.562500 0.437500 0.595703 0.477539 34 41 1 28
+122 0.625000 0.437500 0.658203 0.464844 34 28 5 28
+123 0.687500 0.437500 0.720703 0.486328 34 50 10 40
+124 0.750000 0.437500 0.783203 0.486328 34 50 16 40
+125 0.812500 0.437500 0.845703 0.486328 34 50 10 40
+126 0.875000 0.437500 0.908203 0.451172 34 14 3 25
+127 0.937500 0.437500 0.970703 0.479492 34 43 2 43
+128 0.000000 0.500000 0.033203 0.541992 34 43 2 43
+129 0.062500 0.500000 0.095703 0.541992 34 43 2 43
+130 0.125000 0.500000 0.158203 0.541992 34 43 2 43
+131 0.187500 0.500000 0.220703 0.541992 34 43 2 43
+132 0.250000 0.500000 0.283203 0.541992 34 43 2 43
+133 0.312500 0.500000 0.345703 0.541992 34 43 2 43
+134 0.375000 0.500000 0.408203 0.541992 34 43 2 43
+135 0.437500 0.500000 0.470703 0.541992 34 43 2 43
+136 0.500000 0.500000 0.533203 0.541992 34 43 2 43
+137 0.562500 0.500000 0.595703 0.541992 34 43 2 43
+138 0.625000 0.500000 0.658203 0.541992 34 43 2 43
+139 0.687500 0.500000 0.720703 0.541992 34 43 2 43
+140 0.750000 0.500000 0.783203 0.541992 34 43 2 43
+141 0.812500 0.500000 0.845703 0.541992 34 43 2 43
+142 0.875000 0.500000 0.908203 0.541992 34 43 2 43
+143 0.937500 0.500000 0.970703 0.541992 34 43 2 43
+144 0.000000 0.562500 0.033203 0.604492 34 43 2 43
+145 0.062500 0.562500 0.095703 0.604492 34 43 2 43
+146 0.125000 0.562500 0.158203 0.604492 34 43 2 43
+147 0.187500 0.562500 0.220703 0.604492 34 43 2 43
+148 0.250000 0.562500 0.283203 0.604492 34 43 2 43
+149 0.312500 0.562500 0.345703 0.604492 34 43 2 43
+150 0.375000 0.562500 0.408203 0.604492 34 43 2 43
+151 0.437500 0.562500 0.470703 0.604492 34 43 2 43
+152 0.500000 0.562500 0.533203 0.604492 34 43 2 43
+153 0.562500 0.562500 0.595703 0.604492 34 43 2 43
+154 0.625000 0.562500 0.658203 0.604492 34 43 2 43
+155 0.687500 0.562500 0.720703 0.604492 34 43 2 43
+156 0.750000 0.562500 0.783203 0.604492 34 43 2 43
+157 0.812500 0.562500 0.845703 0.604492 34 43 2 43
+158 0.875000 0.562500 0.908203 0.604492 34 43 2 43
+159 0.937500 0.562500 0.970703 0.604492 34 43 2 43
+160 0.000000 0.625000 0.033203 0.625000 34 0 0 0
+161 0.062500 0.625000 0.095703 0.666016 34 42 13 29
+162 0.125000 0.625000 0.158203 0.669922 34 46 5 43
163 0.187500 0.625000 0.220703 0.663086 34 39 2 39
-164 0.250000 0.625000 0.279297 0.654297 30 30 4 34
-165 0.312500 0.625000 0.348633 0.662109 37 38 1 38
-166 0.375000 0.625000 0.381836 0.673828 7 50 16 40
-167 0.437500 0.625000 0.471680 0.672852 35 49 2 38
-168 0.500000 0.625000 0.521484 0.632812 22 8 8 42
-169 0.562500 0.625000 0.601562 0.664062 40 40 -1 39
-170 0.625000 0.625000 0.649414 0.652344 25 28 7 39
-171 0.687500 0.625000 0.721680 0.650391 35 26 2 27
-172 0.750000 0.625000 0.777344 0.646484 28 22 2 29
+164 0.250000 0.625000 0.283203 0.654297 34 30 4 34
+165 0.312500 0.625000 0.345703 0.662109 34 38 1 38
+166 0.375000 0.625000 0.408203 0.673828 34 50 16 40
+167 0.437500 0.625000 0.470703 0.672852 34 49 2 38
+168 0.500000 0.625000 0.533203 0.632812 34 8 8 42
+169 0.562500 0.625000 0.595703 0.664062 34 40 -1 39
+170 0.625000 0.625000 0.658203 0.652344 34 28 7 39
+171 0.687500 0.625000 0.720703 0.650391 34 26 2 27
+172 0.750000 0.625000 0.783203 0.646484 34 22 2 29
173 0.812500 0.625000 0.845703 0.632812 34 8 2 22
-174 0.875000 0.625000 0.914062 0.664062 40 40 -1 39
-175 0.937500 0.625000 0.959961 0.631836 23 7 8 41
-176 0.000000 0.687500 0.022461 0.710938 23 24 8 39
+174 0.875000 0.625000 0.908203 0.664062 34 40 -1 39
+175 0.937500 0.625000 0.970703 0.631836 34 7 8 41
+176 0.000000 0.687500 0.033203 0.710938 34 24 8 39
177 0.062500 0.687500 0.095703 0.726562 34 40 2 40
-178 0.125000 0.687500 0.143555 0.712891 19 26 9 41
-179 0.187500 0.687500 0.206055 0.712891 19 26 10 41
-180 0.250000 0.687500 0.261719 0.699219 12 12 16 43
-181 0.312500 0.687500 0.348633 0.724609 37 38 0 28
-182 0.375000 0.687500 0.407227 0.736328 33 50 3 38
-183 0.437500 0.687500 0.446289 0.695312 9 8 15 19
-184 0.500000 0.687500 0.515625 0.701172 16 14 11 1
-185 0.562500 0.687500 0.580078 0.712891 18 26 10 41
-186 0.625000 0.687500 0.648438 0.714844 24 28 7 39
-187 0.687500 0.687500 0.721680 0.712891 35 26 2 27
-188 0.750000 0.687500 0.792969 0.727539 44 41 -3 41
-189 0.812500 0.687500 0.855469 0.727539 44 41 -3 41
-190 0.875000 0.687500 0.917969 0.727539 44 41 -3 41
-191 0.937500 0.687500 0.964844 0.726562 28 40 4 26
-192 0.000000 0.750000 0.041016 0.800781 42 52 -2 52
-193 0.062500 0.750000 0.103516 0.800781 42 52 -2 52
-194 0.125000 0.750000 0.166016 0.799805 42 51 -2 51
-195 0.187500 0.750000 0.228516 0.795898 42 47 -2 47
-196 0.250000 0.750000 0.291016 0.796875 42 48 -2 48
-197 0.312500 0.750000 0.353516 0.800781 42 52 -2 52
-198 0.375000 0.750000 0.416016 0.787109 42 38 -2 38
-199 0.437500 0.750000 0.471680 0.800781 35 52 2 39
-200 0.500000 0.750000 0.535156 0.800781 36 52 0 52
-201 0.562500 0.750000 0.597656 0.800781 36 52 0 52
-202 0.625000 0.750000 0.660156 0.800781 36 52 0 51
-203 0.687500 0.750000 0.722656 0.796875 36 48 0 48
-204 0.750000 0.750000 0.778320 0.800781 29 52 5 52
-205 0.812500 0.750000 0.840820 0.800781 29 52 5 52
-206 0.875000 0.750000 0.903320 0.799805 29 51 5 51
-207 0.937500 0.750000 0.965820 0.796875 29 48 5 48
-208 0.000000 0.812500 0.035156 0.849609 36 38 0 38
-209 0.062500 0.812500 0.100586 0.858398 39 47 -1 47
-210 0.125000 0.812500 0.161133 0.864258 37 53 1 52
-211 0.187500 0.812500 0.223633 0.864258 37 53 1 52
-212 0.250000 0.812500 0.286133 0.863281 37 52 1 51
-213 0.312500 0.812500 0.348633 0.859375 37 48 1 47
-214 0.375000 0.812500 0.411133 0.860352 37 49 1 48
-215 0.437500 0.812500 0.462891 0.837891 26 26 6 31
-216 0.500000 0.812500 0.537109 0.857422 38 46 0 41
-217 0.562500 0.812500 0.599609 0.864258 38 53 0 52
-218 0.625000 0.812500 0.662109 0.864258 38 53 0 52
-219 0.687500 0.812500 0.724609 0.863281 38 52 0 51
-220 0.750000 0.812500 0.787109 0.860352 38 49 0 48
-221 0.812500 0.812500 0.848633 0.862305 37 51 1 51
+178 0.125000 0.687500 0.158203 0.712891 34 26 9 41
+179 0.187500 0.687500 0.220703 0.712891 34 26 10 41
+180 0.250000 0.687500 0.283203 0.699219 34 12 16 43
+181 0.312500 0.687500 0.345703 0.724609 34 38 0 28
+182 0.375000 0.687500 0.408203 0.736328 34 50 3 38
+183 0.437500 0.687500 0.470703 0.695312 34 8 15 19
+184 0.500000 0.687500 0.533203 0.701172 34 14 11 1
+185 0.562500 0.687500 0.595703 0.712891 34 26 10 41
+186 0.625000 0.687500 0.658203 0.714844 34 28 7 39
+187 0.687500 0.687500 0.720703 0.712891 34 26 2 27
+188 0.750000 0.687500 0.783203 0.727539 34 41 -3 41
+189 0.812500 0.687500 0.845703 0.727539 34 41 -3 41
+190 0.875000 0.687500 0.908203 0.727539 34 41 -3 41
+191 0.937500 0.687500 0.970703 0.726562 34 40 4 26
+192 0.000000 0.750000 0.033203 0.800781 34 52 -2 52
+193 0.062500 0.750000 0.095703 0.800781 34 52 -2 52
+194 0.125000 0.750000 0.158203 0.799805 34 51 -2 51
+195 0.187500 0.750000 0.220703 0.795898 34 47 -2 47
+196 0.250000 0.750000 0.283203 0.796875 34 48 -2 48
+197 0.312500 0.750000 0.345703 0.800781 34 52 -2 52
+198 0.375000 0.750000 0.408203 0.787109 34 38 -2 38
+199 0.437500 0.750000 0.470703 0.800781 34 52 2 39
+200 0.500000 0.750000 0.533203 0.800781 34 52 0 52
+201 0.562500 0.750000 0.595703 0.800781 34 52 0 52
+202 0.625000 0.750000 0.658203 0.800781 34 52 0 51
+203 0.687500 0.750000 0.720703 0.796875 34 48 0 48
+204 0.750000 0.750000 0.783203 0.800781 34 52 5 52
+205 0.812500 0.750000 0.845703 0.800781 34 52 5 52
+206 0.875000 0.750000 0.908203 0.799805 34 51 5 51
+207 0.937500 0.750000 0.970703 0.796875 34 48 5 48
+208 0.000000 0.812500 0.033203 0.849609 34 38 0 38
+209 0.062500 0.812500 0.095703 0.858398 34 47 -1 47
+210 0.125000 0.812500 0.158203 0.864258 34 53 1 52
+211 0.187500 0.812500 0.220703 0.864258 34 53 1 52
+212 0.250000 0.812500 0.283203 0.863281 34 52 1 51
+213 0.312500 0.812500 0.345703 0.859375 34 48 1 47
+214 0.375000 0.812500 0.408203 0.860352 34 49 1 48
+215 0.437500 0.812500 0.470703 0.837891 34 26 6 31
+216 0.500000 0.812500 0.533203 0.857422 34 46 0 41
+217 0.562500 0.812500 0.595703 0.864258 34 53 0 52
+218 0.625000 0.812500 0.658203 0.864258 34 53 0 52
+219 0.687500 0.812500 0.720703 0.863281 34 52 0 51
+220 0.750000 0.812500 0.783203 0.860352 34 49 0 48
+221 0.812500 0.812500 0.845703 0.862305 34 51 1 51
222 0.875000 0.812500 0.908203 0.849609 34 38 0 38
223 0.937500 0.812500 0.970703 0.853516 34 42 0 40
-224 0.000000 0.875000 0.034180 0.918945 35 45 2 43
-225 0.062500 0.875000 0.096680 0.918945 35 45 2 43
-226 0.125000 0.875000 0.159180 0.917969 35 44 2 42
-227 0.187500 0.875000 0.221680 0.916016 35 42 2 40
-228 0.250000 0.875000 0.284180 0.915039 35 41 2 39
-229 0.312500 0.875000 0.346680 0.918945 35 45 2 43
-230 0.375000 0.875000 0.415039 0.905273 41 31 -1 29
+224 0.000000 0.875000 0.033203 0.918945 34 45 2 43
+225 0.062500 0.875000 0.095703 0.918945 34 45 2 43
+226 0.125000 0.875000 0.158203 0.917969 34 44 2 42
+227 0.187500 0.875000 0.220703 0.916016 34 42 2 40
+228 0.250000 0.875000 0.283203 0.915039 34 41 2 39
+229 0.312500 0.875000 0.345703 0.918945 34 45 2 43
+230 0.375000 0.875000 0.408203 0.905273 34 31 -1 29
231 0.437500 0.875000 0.470703 0.916016 34 42 3 29
232 0.500000 0.875000 0.533203 0.918945 34 45 2 43
233 0.562500 0.875000 0.595703 0.918945 34 45 2 43
234 0.625000 0.875000 0.658203 0.917969 34 44 2 42
235 0.687500 0.875000 0.720703 0.915039 34 41 2 39
-236 0.750000 0.875000 0.781250 0.916992 32 43 3 43
-237 0.812500 0.875000 0.843750 0.916992 32 43 3 43
-238 0.875000 0.875000 0.906250 0.916016 32 42 3 42
-239 0.937500 0.875000 0.968750 0.913086 32 39 3 39
+236 0.750000 0.875000 0.783203 0.916992 34 43 3 43
+237 0.812500 0.875000 0.845703 0.916992 34 43 3 43
+238 0.875000 0.875000 0.908203 0.916016 34 42 3 42
+239 0.937500 0.875000 0.970703 0.913086 34 39 3 39
240 0.000000 0.937500 0.033203 0.980469 34 44 2 42
-241 0.062500 0.937500 0.097656 0.977539 36 41 1 41
+241 0.062500 0.937500 0.095703 0.977539 34 41 1 41
242 0.125000 0.937500 0.158203 0.981445 34 45 2 43
243 0.187500 0.937500 0.220703 0.981445 34 45 2 43
244 0.250000 0.937500 0.283203 0.980469 34 44 2 42
245 0.312500 0.937500 0.345703 0.977539 34 41 2 39
246 0.375000 0.937500 0.408203 0.977539 34 41 2 39
247 0.437500 0.937500 0.470703 0.970703 34 34 2 35
-248 0.500000 0.937500 0.535156 0.973633 36 37 1 32
-249 0.562500 0.937500 0.598633 0.980469 37 44 0 43
-250 0.625000 0.937500 0.661133 0.980469 37 44 0 43
-251 0.687500 0.937500 0.723633 0.979492 37 43 0 42
-252 0.750000 0.937500 0.786133 0.976562 37 40 0 39
-253 0.812500 0.937500 0.848633 0.993164 37 57 1 44
-254 0.875000 0.937500 0.912109 0.989258 38 53 -1 40
-255 0.937500 0.937500 0.973633 0.988281 37 52 1 39
+248 0.500000 0.937500 0.533203 0.973633 34 37 1 32
+249 0.562500 0.937500 0.595703 0.980469 34 44 0 43
+250 0.625000 0.937500 0.658203 0.980469 34 44 0 43
+251 0.687500 0.937500 0.720703 0.979492 34 43 0 42
+252 0.750000 0.937500 0.783203 0.976562 34 40 0 39
+253 0.812500 0.937500 0.845703 0.993164 34 57 1 44
+254 0.875000 0.937500 0.908203 0.989258 34 53 -1 40
+255 0.937500 0.937500 0.970703 0.988281 34 52 1 39
Modified: Mercury2/Themes/default/Font/FreeMonoBold.png
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-22 19:51:33
|
Revision: 578
http://hgengine.svn.sourceforge.net/hgengine/?rev=578&view=rev
Author: cnlohr
Date: 2009-10-22 19:51:23 +0000 (Thu, 22 Oct 2009)
Log Message:
-----------
elaborate on fixed width-ness
Modified Paths:
--------------
Mercury2/tools/fonter/main.cpp
Modified: Mercury2/tools/fonter/main.cpp
===================================================================
--- Mercury2/tools/fonter/main.cpp 2009-10-22 19:17:38 UTC (rev 577)
+++ Mercury2/tools/fonter/main.cpp 2009-10-22 19:51:23 UTC (rev 578)
@@ -12,6 +12,8 @@
FILE * fontfile;
+int iForceWidth = -1;
+
int my_write_png( const char * fname, unsigned char * imagedata, int x, int y );
int my_read_font( const char * fname, unsigned char * imagedata, int xpp, int ypp, int xq, int yq );
@@ -20,13 +22,18 @@
unsigned char imagedata[1024*1024*4];
int x, y;
- if( argc != 3 )
+ if( argc != 3 && argc != 4 )
{
fprintf( stderr, "Mercury Fonter\n" );
- fprintf( stderr, "Usage: %s [font file] [font name]\n", argv[0] );
+ fprintf( stderr, "Usage: %s [font file] [font name] [forced with (optional)]\n", argv[0] );
exit( -1 );
}
+ if( argc == 4 )
+ {
+ iForceWidth = atoi( argv[3] );
+ }
+
for( int x = 0; x < 1024; x++ )
for( int y = 0; y < 1024; y++ )
{
@@ -114,10 +121,14 @@
int goffx = (xpp*(ch%xq));
int goffy = (ypp*(ch/xq));
+
+ int localoffx = 0;
+ if( iForceWidth > 0 )
+ localoffx += (iForceWidth - l_bitmap.width) / 2;
for( int x = 0; x < xpp; x++ )
for( int y = 0; y < ypp; y++ )
{
- int offx = x+goffx;
+ int offx = x+goffx + localoffx;
int offy = y+goffy;
if( x >= l_bitmap.width ) continue;
@@ -131,13 +142,21 @@
}
- float loffx = float(goffx)/float(xpp*xq);
+ int iW = l_bitmap.width;
+ if( iForceWidth > 0 )
+ {
+ iW = iForceWidth;
+ }
+
+ float xppoffset = 0;
+
+ float loffx = float(goffx+xppoffset)/float(xpp*xq);
float loffy = float(goffy)/float(ypp*yq);
- float loffxe = float(goffx+l_bitmap.width)/float(xpp*xq);
+ float loffxe = float(goffx+iW+xppoffset)/float(xpp*xq);
float loffye = float(goffy+l_bitmap.rows)/float(ypp*yq);
fprintf( fontfile, "%d %f %f %f %f %d %d %d %d\n", actualchar, loffx, loffy, loffxe, loffye,
- l_bitmap.width, l_bitmap.rows, face->glyph->bitmap_left, face->glyph->bitmap_top );
+ iW, l_bitmap.rows, face->glyph->bitmap_left, face->glyph->bitmap_top );
actualchar++;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-22 19:17:47
|
Revision: 577
http://hgengine.svn.sourceforge.net/hgengine/?rev=577&view=rev
Author: cnlohr
Date: 2009-10-22 19:17:38 +0000 (Thu, 22 Oct 2009)
Log Message:
-----------
update info file
Modified Paths:
--------------
Mercury2/Themes/default/Font/FontInfo.txt
Modified: Mercury2/Themes/default/Font/FontInfo.txt
===================================================================
--- Mercury2/Themes/default/Font/FontInfo.txt 2009-10-22 18:10:20 UTC (rev 576)
+++ Mercury2/Themes/default/Font/FontInfo.txt 2009-10-22 19:17:38 UTC (rev 577)
@@ -12,10 +12,25 @@
federal law. (Code of Federal Regulations, Ch 37, Sec. 202.1(e))
\xA7202.1 Material not subject to copyright.
-The following are examples of works not subject to copyright and applications for registration of such works cannot be entertained:
+The following are examples of works not subject to copyright and
+ applications for registration of such works cannot be entertained:
...
(e)
Typeface as typeface.
We give credit and encourage all people who use these font images
-to give credit to the Free Font group.
\ No newline at end of file
+to give credit to the Free Font group.
+
+Information about the hgfont file:
+[Address to image of font]
+[m_fHeight, m_fBlank, m_fSpace, m_fTab]
+[g.fsx, g.fsy, g.fex, g.fey] ... [&g.ilx, &g.ily, &g.iox, &g.ioy]
+
+...xps += g.ilx+m_pThisFont->m_fBlank (For positioning)
+
+Positioning:
+ float sx = (-g->iox + dc.xps)*m_fSize;
+ float sy = -(-g->ioy + dc.yps)*m_fSize;
+ float ex = (g->ilx-g->iox + dc.xps)*m_fSize;
+ float ey = -(g->ily-g->ioy + dc.yps)*m_fSize;
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-22 18:10:28
|
Revision: 576
http://hgengine.svn.sourceforge.net/hgengine/?rev=576&view=rev
Author: cnlohr
Date: 2009-10-22 18:10:20 +0000 (Thu, 22 Oct 2009)
Log Message:
-----------
tweak RTTI, since you can't use it in constructors or destructors... Will we have a DeleteNode() virtual function? Also, make module manager smarter and able to reload modules
Modified Paths:
--------------
Mercury2/base_set.sh
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryNode.h
Mercury2/src/ModuleManager.cpp
Mercury2/src/ModuleManager.h
Modified: Mercury2/base_set.sh
===================================================================
--- Mercury2/base_set.sh 2009-10-22 18:07:20 UTC (rev 575)
+++ Mercury2/base_set.sh 2009-10-22 18:10:20 UTC (rev 576)
@@ -8,13 +8,14 @@
ISMAC=1; fi
-OPTIONS="X11 libxml OGL sse gprof glprofile"
+OPTIONS="X11 libxml OGL sse gprof glprofile instancewatch"
OPT_X11=1
OPT_OGL=1
OPT_libxml=1
OPT_sse=0
OPT_gprof=0
OPT_glprofile=0
+OPT_instancewatch=1
DEFINES="WAS_CONFIGURED USE_MSTRING"
CC_BASE="-O2 -g0 -Wall"
@@ -88,6 +89,10 @@
LD_BASE="-Lsrc/maclib -framework OpenGL -lobjc -framework GLUT -framework ApplicationServices"
fi
+if test $OPT_instancewatch = 1; then
+ DEFINES="$DEFINES INSTANCE_WATCH"
+fi
+
ARCH=`uname -m`
if test $ARCH = "i686" || test $ARCH = "i586"; then
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-10-22 18:07:20 UTC (rev 575)
+++ Mercury2/src/MercuryNode.cpp 2009-10-22 18:10:20 UTC (rev 576)
@@ -9,12 +9,14 @@
#include <Shader.h>
#include <RenderGraph.h>
+#include <ModuleManager.h>
+
using namespace std;
REGISTER_NODE_TYPE(MercuryNode);
MercuryNode::MercuryNode()
- :m_parent(NULL), m_prevSibling(NULL),
+ :Type( 0 ), m_parent(NULL), m_prevSibling(NULL),
m_nextSibling(NULL), m_hidden(false),
m_useAlphaPath(false), m_culled(false),
m_iPasses( DEFAULT_PASSES ), m_iForcePasses( 0 )
@@ -23,6 +25,12 @@
MercuryNode::~MercuryNode()
{
+
+#ifdef INSTANCE_WATCH
+ if( Type )
+ DEL_INSTANCE(this, Type);
+#endif
+
m_parent = NULL;
list< MercuryNode* >::iterator i;
@@ -399,7 +407,14 @@
MString t = ToUpper( type );
std::list< std::pair< MString, Callback0R<MercuryNode*> > >::iterator i;
for (i = m_factoryCallbacks.begin(); i != m_factoryCallbacks.end(); ++i)
- if (i->first == t) return i->second();
+ if (i->first == t)
+ {
+ MercuryNode * n = i->second();
+#ifdef INSTANCE_WATCH
+ NEW_INSTANCE(n, n->GetType());
+#endif
+ return n;
+ }
LOG.Write( "WARNING: Node type " + type + " not found." );
return NULL;
}
Modified: Mercury2/src/MercuryNode.h
===================================================================
--- Mercury2/src/MercuryNode.h 2009-10-22 18:07:20 UTC (rev 575)
+++ Mercury2/src/MercuryNode.h 2009-10-22 18:10:20 UTC (rev 576)
@@ -21,7 +21,7 @@
{ if (n==NULL) return NULL; return dynamic_cast<const x*>(n); } \
static x* Cast(MercuryNode* n) \
{ if (n==NULL) return NULL; return dynamic_cast<x*>(n); } \
-virtual const char * GetType() { return #x; }
+virtual const char * GetType() { if( !Type ) Type = #x; return #x; }
/*
#define GENRTTI(x) static bool IsMyType(const MercuryNode* n) \
@@ -117,6 +117,8 @@
const MercuryMatrix & GetModelViewMatrix() const { return m_pModelViewMatrix[g_iViewportID]; }
inline unsigned short GetPasses() const { return m_iPasses; }
+
+ const char * Type;
protected:
std::list< MercuryNode* > m_children; //These nodes are unique, not instanced
MercuryNode* m_parent;
@@ -171,7 +173,13 @@
MercuryNode* FactoryFunct##class() { return new class(); } \
Callback0R<MercuryNode*> factoryclbk##class( FactoryFunct##class ); \
bool GlobalRegisterSuccess##class = NodeFactory::GetInstance().RegisterFactoryCallback(#class, factoryclbk##class); \
- extern "C" { int Install##class() { LOG.Write("Installing "#class ); NodeFactory::GetInstance().RegisterFactoryCallback(#class, factoryclbk##class); return 0; } }
+ extern "C" { void * Install##class() { LOG.Write("Installing "#class ); \
+ NodeFactory::GetInstance().RegisterFactoryCallback(#class, factoryclbk##class); \
+ class * t = new class(); \
+ void * vtable = *((void**)t); \
+ delete t; \
+ return vtable; \
+ } }
#endif
Modified: Mercury2/src/ModuleManager.cpp
===================================================================
--- Mercury2/src/ModuleManager.cpp 2009-10-22 18:07:20 UTC (rev 575)
+++ Mercury2/src/ModuleManager.cpp 2009-10-22 18:10:20 UTC (rev 576)
@@ -19,7 +19,7 @@
extern "C"
{
-typedef int (*LoaderFunction)();
+typedef void * (*LoaderFunction)(); //Returns vtable pointer
};
ModuleManager::ModuleManager()
@@ -37,6 +37,7 @@
void ModuleManager::InitializeAllModules()
{
+ m_mHandleMutex.Wait();
XMLDocument* doc = XMLDocument::Load("modules.xml");
XMLNode r = doc->GetRootNode();
for (XMLNode child = r.Child(); child.IsValid(); child = child.NextNode())
@@ -51,9 +52,15 @@
#else
MString ModuleName = child.Attribute( "obj" ) + ".so";
#endif
+
MString LoadFunct = child.Attribute( "func" );
+
+ m_hModuleMatching[child.Attribute( "obj" )] = child.Attribute( "class" );
+ m_hClassMatching[child.Attribute( "class" )] = ModuleName;
+ m_hClassMFunction[child.Attribute( "class" )] = LoadFunct;
LoadModule( ModuleName, LoadFunct );
}
+ m_mHandleMutex.UnLock();
delete doc;
}
@@ -63,8 +70,10 @@
dlclose( m_hAllHandles[ModuleName] );
}
-bool ModuleManager::LoadModule( const MString & ModuleName, const MString & LoadFunction )
+void * ModuleManager::LoadModule( const MString & ModuleName, const MString & LoadFunction )
{
+ m_mHandleMutex.Wait();
+
if( m_hAllHandles[ModuleName] ) UnloadModule( ModuleName );
void * v = dlopen( ModuleName.c_str(), RTLD_NOW | RTLD_GLOBAL );
@@ -81,9 +90,11 @@
return false;
}
+ m_mHandleMutex.UnLock();
+
//If no load funct, just exit early.
if( LoadFunction == "" )
- return true;
+ return 0;
LoaderFunction T = (LoaderFunction)dlsym( m_hAllHandles[ModuleName], LoadFunction.c_str() );
if( !T )
@@ -92,16 +103,50 @@
return false;
}
- int ret = T();
- if( ret )
+ void * ret = T();
+ if( !ret )
{
- fprintf( stderr, "Error executing (Returned error %d): %s() in %s\n", ret, LoadFunction.c_str(), ModuleName.c_str() );
+ fprintf( stderr, "Error executing (Returned error %p): %s() in %s\n", ret, LoadFunction.c_str(), ModuleName.c_str() );
return false;
}
- return true;
+ return ret;
}
+
+#ifdef INSTANCE_WATCH
+
+void ModuleManager::ReloadModule( const MString & sClass )
+{
+ m_mHandleMutex.Wait();
+
+ std::set< void * > & s = m_hAllInstances[sClass];
+ std::set< void * >::iterator i = s.begin();
+
+ void * newvtable = LoadModule( m_hClassMatching[sClass], m_hClassMFunction[sClass] );
+
+ for( ; i != s.end(); i++ )
+ *((void**)(*i)) = newvtable;
+
+ m_mHandleMutex.UnLock();
+}
+
+void ModuleManager::RegisterInstance( void * instance, const char * sClass )
+{
+ m_hAllInstances[sClass].insert( instance );
+}
+
+void ModuleManager::UnregisterInstance( void * instance, const char * sClass )
+{
+ std::set< void * > & s = m_hAllInstances[sClass];
+ std::set< void * >::iterator i = s.find( instance );
+
+ if( i != s.end() )
+ s.erase( i );
+}
+
+#endif
+
/****************************************************************************
* Copyright (C) 2009 by Charles Lohr *
* *
Modified: Mercury2/src/ModuleManager.h
===================================================================
--- Mercury2/src/ModuleManager.h 2009-10-22 18:07:20 UTC (rev 575)
+++ Mercury2/src/ModuleManager.h 2009-10-22 18:10:20 UTC (rev 576)
@@ -3,6 +3,8 @@
#include <MercuryUtil.h>
#include <MercuryHash.h>
+#include <MercuryThreads.h>
+#include <set>
/* This is the module loader mechanism. This allows for run-time loading of
new modules. Eventually, it will allow for run-time re-loading of modules.
@@ -15,15 +17,44 @@
static ModuleManager & GetInstance();
void InitializeAllModules();
- bool LoadModule( const MString & ModuleName, const MString & LoadFunction );
+ void * LoadModule( const MString & ModuleName, const MString & LoadFunction );
void UnloadModule( const MString & ModuleName );
+
+#ifdef INSTANCE_WATCH
+ void ReloadModule( const MString & sClass );
+
+ void RegisterInstance( void * instance, const char * sClass );
+ void UnregisterInstance( void * instance, const char * sClass );
+#endif
+
+private:
+
+ MercuryMutex m_mHandleMutex;
+
+#ifdef INSTANCE_WATCH
+ MHash< std::set< void * > > m_hAllInstances;
+#endif
+
MHash< void * > m_hAllHandles;
+ MHash< MString > m_hModuleMatching;
+ MHash< MString > m_hClassMatching;
+ MHash< MString > m_hClassMFunction;
};
static InstanceCounter<ModuleManager> ModMancounter("ModuleManager");
+#ifdef INSTANCE_WATCH
+#define NEW_INSTANCE( node, t ) ModuleManager::GetInstance().RegisterInstance( node, t );
+#define DEL_INSTANCE( node, t ) ModuleManager::GetInstance().UnregisterInstance( node, t );
+#else
+
+#define NEW_INSTANCE( t )
+#define DEL_INSTANCE( t )
+
+#endif
+
/****************************************************************************
* Copyright (C) 2009 by Charles Lohr *
* *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-10-22 18:07:30
|
Revision: 575
http://hgengine.svn.sourceforge.net/hgengine/?rev=575&view=rev
Author: cnlohr
Date: 2009-10-22 18:07:20 +0000 (Thu, 22 Oct 2009)
Log Message:
-----------
update modules
Modified Paths:
--------------
Mercury2/modules.xml
Modified: Mercury2/modules.xml
===================================================================
--- Mercury2/modules.xml 2009-10-17 02:53:41 UTC (rev 574)
+++ Mercury2/modules.xml 2009-10-22 18:07:20 UTC (rev 575)
@@ -1,5 +1,5 @@
<Modules>
- <Module src="modules/TextNode.cpp" obj="modules/TextNode" func="InstallTextNode" />
- <Module src="modules/BillboardNode.cpp" obj="modules/BillboardNode" func="InstallBillboardNode"/>
- <Module src="modules/Terrain.cpp" obj="modules/Terrain" func="InstallTerrainNode"/>
+ <Module src="modules/TextNode.cpp" obj="modules/TextNode" func="InstallTextNode" class="TextNode" />
+ <Module src="modules/BillboardNode.cpp" obj="modules/BillboardNode" func="InstallBillboardNode" class="BillboardNode" />
+ <Module src="modules/Terrain.cpp" obj="modules/Terrain" func="InstallTerrainNode" class="TerrainNode"/>
</Modules>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-17 02:53:55
|
Revision: 574
http://hgengine.svn.sourceforge.net/hgengine/?rev=574&view=rev
Author: axlecrusher
Date: 2009-10-17 02:53:41 +0000 (Sat, 17 Oct 2009)
Log Message:
-----------
Make message manager thread safe. Used semaphores to avoid OS scheduling.
Modified Paths:
--------------
Mercury2/src/MercuryMessageManager.cpp
Mercury2/src/MercuryMessageManager.h
Modified: Mercury2/src/MercuryMessageManager.cpp
===================================================================
--- Mercury2/src/MercuryMessageManager.cpp 2009-10-17 01:34:21 UTC (rev 573)
+++ Mercury2/src/MercuryMessageManager.cpp 2009-10-17 02:53:41 UTC (rev 574)
@@ -3,6 +3,9 @@
MercuryCTA HolderAllocator( sizeof(MessageHolder), 8 );
+/* MessageManager needs to be thread safe. Semaphores are used as locks (spin locks) to avoid OS rescheduling.
+Locks need to be held for as little time as possible. Scoping is used to put locking classes on the stack
+so that are ALWAYS released when out of scope.*/
MessageHolder::MessageHolder()
:data(NULL),when(0)
@@ -19,31 +22,40 @@
MessageHolder * m = new(HolderAllocator.Malloc()) MessageHolder();
m->message = message;
m->data = data;
- m->when = m_currTime + uint64_t(delay*1000000);
- m_messageQueue.Push( m );
+
+ {
+ //scope the lock to a very small portion of code
+ MSemaphoreLock lock(&m_queueLock);
+ m->when = m_currTime + uint64_t(delay*1000000);
+ m_messageQueue.Push( m );
+ }
}
void MercuryMessageManager::PumpMessages(const uint64_t& currTime)
{
- m_currTime = currTime;
- while ( !m_messageQueue.Empty() )
{
- if ( ((MessageHolder *)m_messageQueue.Peek())->when > m_currTime ) return;
-
- MessageHolder * message = (MessageHolder *)m_messageQueue.Pop();
- FireOffMessage( *message );
- SAFE_DELETE( message->data );
- HolderAllocator.Free(message);
+ MSemaphoreLock lock(&m_queueLock);
+ m_currTime = currTime;
}
+
+ for (MessageHolder* mh = GetNextMessageFromQueue(); mh; mh = GetNextMessageFromQueue())
+ {
+ FireOffMessage( *mh );
+ SAFE_DELETE( mh->data );
+ HolderAllocator.Free(mh);
+ }
}
void MercuryMessageManager::RegisterForMessage(const MString& message, MessageHandler* ptr)
{
+ MSemaphoreLock lock(&m_recipientLock);
m_messageRecipients[message].push_back(ptr);
}
void MercuryMessageManager::UnRegisterForMessage(const MString& message, MessageHandler* ptr)
{
+ MSemaphoreLock lock(&m_recipientLock);
+
std::list< MessageHandler* >& subscriptions = m_messageRecipients[message];
std::list< MessageHandler* >::iterator i = subscriptions.begin();
@@ -61,15 +73,38 @@
void MercuryMessageManager::FireOffMessage( const MessageHolder & message )
{
-// std::map< MString, std::list< MessageHandler* > >::iterator i = m_messageRecipients.find(message.message);
- std::list< MessageHandler* > * ref = m_messageRecipients.get( message.message );
- if ( ref )
+ std::list< MessageHandler* > recipients;
{
- std::list< MessageHandler* >::iterator recipients = ref->begin();
+ //copy list first (quick lock)
+ MSemaphoreLock lock(&m_recipientLock);
+ std::list< MessageHandler* > * r = m_messageRecipients.get( message.message );
+ if ( r ) recipients = *r;
+ }
+
+ if ( !recipients.empty() )
+ {
+ std::list< MessageHandler* >::iterator recipient = recipients.begin();
+ for (; recipient != recipients.end(); ++recipient)
+ {
+ (*recipient)->HandleMessage(message.message, *(message.data) );
+ }
+ }
+}
+
+MessageHolder* MercuryMessageManager::GetNextMessageFromQueue()
+{
+ /* We need to ensure that viewing the queue and retrieving the message
+ happens without the queue changing. */
+ MSemaphoreLock lock(&m_queueLock);
- for (; recipients != ref->end(); ++recipients)
- (*recipients)->HandleMessage(message.message, *(message.data) );
+ MessageHolder* mh = NULL;
+ if ( !m_messageQueue.Empty() )
+ {
+ if ( ((MessageHolder *)m_messageQueue.Peek())->when > m_currTime ) return NULL;
+ mh = (MessageHolder *)m_messageQueue.Pop();
}
+
+ return mh;
}
MercuryMessageManager& MercuryMessageManager::GetInstance()
Modified: Mercury2/src/MercuryMessageManager.h
===================================================================
--- Mercury2/src/MercuryMessageManager.h 2009-10-17 01:34:21 UTC (rev 573)
+++ Mercury2/src/MercuryMessageManager.h 2009-10-17 02:53:41 UTC (rev 574)
@@ -12,6 +12,8 @@
#include <Mint.h>
#include <MAutoPtr.h>
+#include <MSemaphore.h>
+
class MessageHolder : public RefBase
{
public:
@@ -40,11 +42,16 @@
static MercuryMessageManager& GetInstance();
private:
void FireOffMessage( const MessageHolder & message );
+ MessageHolder* GetNextMessageFromQueue();
PriorityQueue m_messageQueue;
uint64_t m_currTime; //microseconds
MHash< std::list< MessageHandler* > > m_messageRecipients;
+
+// MercuryMutex m_lock;
+ MSemaphore m_queueLock;
+ MSemaphore m_recipientLock;
};
static InstanceCounter<MercuryMessageManager> MMcounter("MessageManager");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-17 01:34:32
|
Revision: 573
http://hgengine.svn.sourceforge.net/hgengine/?rev=573&view=rev
Author: axlecrusher
Date: 2009-10-17 01:34:21 +0000 (Sat, 17 Oct 2009)
Log Message:
-----------
make it more difficult to modify message data in the message handlers
Modified Paths:
--------------
Mercury2/modules/Terrain.cpp
Mercury2/modules/Terrain.h
Mercury2/src/Camera.cpp
Mercury2/src/Camera.h
Mercury2/src/MercuryMessageManager.cpp
Mercury2/src/MessageHandler.h
Modified: Mercury2/modules/Terrain.cpp
===================================================================
--- Mercury2/modules/Terrain.cpp 2009-10-16 22:56:32 UTC (rev 572)
+++ Mercury2/modules/Terrain.cpp 2009-10-17 01:34:21 UTC (rev 573)
@@ -170,14 +170,14 @@
UNREGISTER_FOR_MESSAGE("QueryTerrainPoint");
}
-void TerrainAssetInstance::HandleMessage(const MString& message, const MessageData* data)
+void TerrainAssetInstance::HandleMessage(const MString& message, const MessageData& data)
{
if (message == "QueryTerrainPoint")
{
- VertexDataMessage* v = (VertexDataMessage*)data;
+ const VertexDataMessage& v( dynamic_cast<const VertexDataMessage&>(data) );
//compute local space position
- MercuryVertex local = v->Vertex * m_parentNode->GetGlobalMatrix();
+ MercuryVertex local = v.Vertex * m_parentNode->GetGlobalMatrix();
local[3] = 1; //no W
Terrain* t = (Terrain*)m_asset.Ptr();
Modified: Mercury2/modules/Terrain.h
===================================================================
--- Mercury2/modules/Terrain.h 2009-10-16 22:56:32 UTC (rev 572)
+++ Mercury2/modules/Terrain.h 2009-10-17 01:34:21 UTC (rev 573)
@@ -38,7 +38,7 @@
public:
TerrainAssetInstance(MercuryAsset* asset, MercuryNode* parentNode);
~TerrainAssetInstance();
- virtual void HandleMessage(const MString& message, const MessageData* data);
+ virtual void HandleMessage(const MString& message, const MessageData& data);
private:
CLASS_HELPERS( MercuryAssetInstance );
};
Modified: Mercury2/src/Camera.cpp
===================================================================
--- Mercury2/src/Camera.cpp 2009-10-16 22:56:32 UTC (rev 572)
+++ Mercury2/src/Camera.cpp 2009-10-17 01:34:21 UTC (rev 573)
@@ -79,14 +79,14 @@
// EYE.Print();
}
-void CameraNode::HandleMessage(const MString& message, const MessageData* data)
+void CameraNode::HandleMessage(const MString& message, const MessageData& data)
{
if (message == INPUTEVENT_MOUSE)
{
- MouseInput* m = (MouseInput*)data;
+ const MouseInput& m( dynamic_cast<const MouseInput&>( data ) );
- m_y += m->dy/1200.0f;
- m_x += m->dx/1200.0f;
+ m_y += m.dy/1200.0f;
+ m_x += m.dx/1200.0f;
m_y = Clamp((-Q_PI/2.0f)+0.00001f, (Q_PI/2.0f)-0.00001f, m_y);
@@ -106,8 +106,8 @@
else if (message == "SetCameraPosition")
{
// LOG.Write("SetCamPosition");
- VertexDataMessage* m = (VertexDataMessage*)data;
- SetPosition(m->Vertex);
+ const VertexDataMessage& m( dynamic_cast<const VertexDataMessage&>( data ) );
+ SetPosition(m.Vertex);
// Update(0);
// ComputeMatrix();
// m->Vertex.Print();
Modified: Mercury2/src/Camera.h
===================================================================
--- Mercury2/src/Camera.h 2009-10-16 22:56:32 UTC (rev 572)
+++ Mercury2/src/Camera.h 2009-10-17 01:34:21 UTC (rev 573)
@@ -9,7 +9,7 @@
public:
CameraNode();
virtual void ComputeMatrix();
- virtual void HandleMessage(const MString& message, const MessageData* data);
+ virtual void HandleMessage(const MString& message, const MessageData& data);
virtual void Update(float dTime);
virtual void PreRender(const MercuryMatrix& matrix);
virtual void Render(const MercuryMatrix& matrix);
Modified: Mercury2/src/MercuryMessageManager.cpp
===================================================================
--- Mercury2/src/MercuryMessageManager.cpp 2009-10-16 22:56:32 UTC (rev 572)
+++ Mercury2/src/MercuryMessageManager.cpp 2009-10-17 01:34:21 UTC (rev 573)
@@ -68,7 +68,7 @@
std::list< MessageHandler* >::iterator recipients = ref->begin();
for (; recipients != ref->end(); ++recipients)
- (*recipients)->HandleMessage(message.message, message.data);
+ (*recipients)->HandleMessage(message.message, *(message.data) );
}
}
Modified: Mercury2/src/MessageHandler.h
===================================================================
--- Mercury2/src/MessageHandler.h 2009-10-16 22:56:32 UTC (rev 572)
+++ Mercury2/src/MessageHandler.h 2009-10-17 01:34:21 UTC (rev 573)
@@ -25,7 +25,7 @@
{
public:
virtual ~MessageHandler() {};
- virtual void HandleMessage(const MString& message, const MessageData* data) {};
+ virtual void HandleMessage(const MString& message, const MessageData& data) {};
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-16 22:56:40
|
Revision: 572
http://hgengine.svn.sourceforge.net/hgengine/?rev=572&view=rev
Author: axlecrusher
Date: 2009-10-16 22:56:32 +0000 (Fri, 16 Oct 2009)
Log Message:
-----------
updates
Modified Paths:
--------------
Mercury2/Themes/default/File/scenegraph.xml
Mercury2/modules/Terrain.cpp
Modified: Mercury2/Themes/default/File/scenegraph.xml
===================================================================
--- Mercury2/Themes/default/File/scenegraph.xml 2009-10-13 01:44:38 UTC (rev 571)
+++ Mercury2/Themes/default/File/scenegraph.xml 2009-10-16 22:56:32 UTC (rev 572)
@@ -7,7 +7,7 @@
<node type="transformnode" movz="-5" movx="-4" movy="2">
<node type="TextNode" text="Another test!" font="FONT:FreeMonoBold.hgfont" size=".01" width="300" alphaPath="true" alignment="LEFT" />
</node>
- <node type="transformnode" rotx="-90" movz="-10" movx="0" movy="-5">
+ <node type="transformnode" rotx="-90" movz="-10" movx="0" movy="-0.99">
<asset type="texture" file="MODEL:map.png"/>
<asset type="terrain" file="MODEL:map.hgmdl" />
</node>
Modified: Mercury2/modules/Terrain.cpp
===================================================================
--- Mercury2/modules/Terrain.cpp 2009-10-13 01:44:38 UTC (rev 571)
+++ Mercury2/modules/Terrain.cpp 2009-10-16 22:56:32 UTC (rev 572)
@@ -182,7 +182,7 @@
Terrain* t = (Terrain*)m_asset.Ptr();
local = t->ComputePositionLinear( local );
- local[2] += 0.5; //height of player
+ local[2] += 0.75; //height of player
local = m_parentNode->GetGlobalMatrix() * local;
POST_MESSAGE("SetCameraPosition", new VertexDataMessage(local), 0);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-13 01:44:46
|
Revision: 571
http://hgengine.svn.sourceforge.net/hgengine/?rev=571&view=rev
Author: axlecrusher
Date: 2009-10-13 01:44:38 +0000 (Tue, 13 Oct 2009)
Log Message:
-----------
update?
Modified Paths:
--------------
Mercury2/docs/MercuryBinaryModelFormat.odt
Modified: Mercury2/docs/MercuryBinaryModelFormat.odt
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-13 01:43:54
|
Revision: 570
http://hgengine.svn.sourceforge.net/hgengine/?rev=570&view=rev
Author: axlecrusher
Date: 2009-10-13 01:43:47 +0000 (Tue, 13 Oct 2009)
Log Message:
-----------
commit progress
Modified Paths:
--------------
Mercury2/src/DataStructures/SpatialHash.h
Modified: Mercury2/src/DataStructures/SpatialHash.h
===================================================================
--- Mercury2/src/DataStructures/SpatialHash.h 2009-10-13 01:40:18 UTC (rev 569)
+++ Mercury2/src/DataStructures/SpatialHash.h 2009-10-13 01:43:47 UTC (rev 570)
@@ -57,16 +57,35 @@
std::list<T> FindByXY(float x, float y)
{
- int ix = x / m_spacing;
- int iy = y / m_spacing;
+ unsigned int ix = abs(x) / m_spacing;
+ unsigned int iy = abs(y) / m_spacing;
std::list<T> r;
- for (uint32_t iz = 0; iz < m_zSize; ++iz)
- CopyIntoList(m_hashTable[Index(ix, iy, iz)], r);
+ if (ix < m_xSize || iy < m_ySize )
+ {
+ for (uint32_t iz = 0; iz < m_zSize; ++iz)
+ CopyIntoList(m_hashTable[Index(ix, iy, iz)], r);
+ }
return r;
}
+
+ std::list<T> FindByXZ(float x, float z)
+ {
+ unsigned int ix = abs(x) / m_spacing;
+ unsigned int iz = abs(z) / m_spacing;
+
+ std::list<T> r;
+
+ if (ix < m_xSize || iz < m_zSize )
+ {
+ for (uint32_t iy = 0; iy < m_ySize; ++iy)
+ CopyIntoList(m_hashTable[Index(ix, iy, iz)], r);
+ }
+
+ return r;
+ }
private:
inline uint32_t Index(uint32_t x, uint32_t y, uint32_t z)
{
@@ -82,6 +101,7 @@
void CopyIntoList(std::list<T>& in, std::list<T>& r)
{
+ if ( in.empty() ) return;
typename std::list<T>::iterator i = in.begin();
for (;i != in.end(); ++i) r.push_back(*i);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-13 01:40:37
|
Revision: 569
http://hgengine.svn.sourceforge.net/hgengine/?rev=569&view=rev
Author: axlecrusher
Date: 2009-10-13 01:40:18 +0000 (Tue, 13 Oct 2009)
Log Message:
-----------
use terrain module
Modified Paths:
--------------
Mercury2/adv_set.c
Mercury2/modules.xml
Modified: Mercury2/adv_set.c
===================================================================
--- Mercury2/adv_set.c 2009-10-12 23:56:39 UTC (rev 568)
+++ Mercury2/adv_set.c 2009-10-13 01:40:18 UTC (rev 569)
@@ -14,7 +14,7 @@
src/Camera.cpp src/MercuryInput.cpp src/MQuaternion.cpp src/ModuleManager.cpp src/MercuryFBO.cpp \
src/GLHelpers.cpp src/FullscreenQuad.cpp src/MercuryNamedResource.cpp src/MercuryPrefs.cpp \
src/MercuryTheme.cpp src/Orthographic.cpp src/Light.cpp src/RenderDifferedLights.cpp \
- src/MercuryLog.cpp src/MercuryCTA.cpp"
+ src/MercuryLog.cpp src/MercuryCTA.cpp src/DataTypes/MTriangle.cpp"
SOURCES="$SOURCES src/MercuryFileDriverDirect.cpp src/MercuryFileDriverMem.cpp \
src/MercuryFileDriverPacked.cpp src/MercuryFileDriverZipped.cpp"
@@ -31,7 +31,7 @@
#endif
PROJ="mercury"
-CFLAGS="$CFLAGS -DHAVE_CONFIG -DHGENGINE -fno-exceptions -fPIC -Isrc -g "
+CFLAGS="$CFLAGS -DHAVE_CONFIG -DHGENGINE -fno-exceptions -fPIC -Isrc -Isrc/DataStructures -Isrc/DataTypes -g "
LDFLAGS="$LDFLAGS -rdynamic -g -fPIC "
/*
Modified: Mercury2/modules.xml
===================================================================
--- Mercury2/modules.xml 2009-10-12 23:56:39 UTC (rev 568)
+++ Mercury2/modules.xml 2009-10-13 01:40:18 UTC (rev 569)
@@ -1,4 +1,5 @@
<Modules>
<Module src="modules/TextNode.cpp" obj="modules/TextNode" func="InstallTextNode" />
<Module src="modules/BillboardNode.cpp" obj="modules/BillboardNode" func="InstallBillboardNode"/>
+ <Module src="modules/Terrain.cpp" obj="modules/Terrain" func="InstallTerrainNode"/>
</Modules>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-10-12 23:56:48
|
Revision: 568
http://hgengine.svn.sourceforge.net/hgengine/?rev=568&view=rev
Author: axlecrusher
Date: 2009-10-12 23:56:39 +0000 (Mon, 12 Oct 2009)
Log Message:
-----------
use terrain module
Modified Paths:
--------------
Mercury2/Themes/default/File/scenegraph.xml
Modified: Mercury2/Themes/default/File/scenegraph.xml
===================================================================
--- Mercury2/Themes/default/File/scenegraph.xml 2009-10-12 23:55:41 UTC (rev 567)
+++ Mercury2/Themes/default/File/scenegraph.xml 2009-10-12 23:56:39 UTC (rev 568)
@@ -9,7 +9,7 @@
</node>
<node type="transformnode" rotx="-90" movz="-10" movx="0" movy="-5">
<asset type="texture" file="MODEL:map.png"/>
- <asset type="hgmdlmodel" file="MODEL:map.hgmdl" />
+ <asset type="terrain" file="MODEL:map.hgmdl" />
</node>
<node type="mercurynode" name="lampForest" >
<node type="transformnode" movz="-5" movx="0" movy="0" name="lamprow" >
@@ -41,7 +41,9 @@
</node>
</node>
</node>
+ <!--
<node type="orthographic" left="0" right="1" top="1" bottom="0" near="-1" far="1">
<asset type="quad"/>
</node>
+ -->
</SceneGraph>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|