|
From: <cn...@us...> - 2010-02-23 05:53:33
|
Revision: 674
http://hgengine.svn.sourceforge.net/hgengine/?rev=674&view=rev
Author: cnlohr
Date: 2010-02-23 05:53:27 +0000 (Tue, 23 Feb 2010)
Log Message:
-----------
add some stuff for ssvgr
Modified Paths:
--------------
Mercury2/src/StateChanger.cpp
Added Paths:
-----------
Mercury2/Themes/default/File/ssvgr.xml
Mercury2/Themes/default/Graphic/2by.png
Added: Mercury2/Themes/default/File/ssvgr.xml
===================================================================
--- Mercury2/Themes/default/File/ssvgr.xml (rev 0)
+++ Mercury2/Themes/default/File/ssvgr.xml 2010-02-23 05:53:27 UTC (rev 674)
@@ -0,0 +1,61 @@
+<SceneGraph name="root" setPasses="6+7" >
+ <!--We have to put all states that are the generic state up here. This way, the states will fall back to these -->
+ <asset type="StateChanger" file="ColorChange:1,1,1,1"/>
+ <asset type="StateChanger" file="DepthTest:1"/>
+ <asset type="StateChanger" file="LightingSwitch:0" enduring="1" />
+ <asset type="StateChanger" file="DepthWrite:1"/>
+ <asset type="StateChanger" file="FaceCulling:none"/>
+ <asset type="StateChanger" file="BlendFunc:SRC_ALPHA,ONE_MINUS_SRC_ALPHA" />
+ <asset type="StateChanger" file="AlphaFunc:GREATER,0.5" /> <!-- makes alpha ordering not matter, since it's all or nothing -->
+
+ <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 fallback="root.ground" setPasses="7" />
+
+ <node type="transformnode" movy="2" >
+ <node fallback="root.lampForest" setPasses="6" />
+ </node>
+ <node type="transformnode" movy="0" >
+ <node fallback="root.lampForest" setPasses="7" />
+ </node>
+
+ <node type="transformnode" movz="-5" >
+ <asset type="texture" file="GRAPHIC:2by.png" filter="none" />
+ <asset type="quad" />
+ </node>
+
+ </node>
+ </node>
+
+
+ <!-- Below here is just a library for some junk we can throw in -->
+
+ <node type="mercurynode" name="lampForest" setPasses="0" >
+ <node type="transformnode" movz="-5" movx="0" movy="0" name="lamprow" >
+ <node type="mercurynode" name="lamp" >
+ <node type="transformnode" rotx="-90" >
+ <asset type="texture" file="MODEL:lamp.png"/>
+ <asset type="hgmdlmodel" file="MODEL:lampN.hgmdl" />
+ </node>
+ </node>
+ <node type="transformnode" movx="1" fallback="lamprow.lamp" />
+ <node type="transformnode" movx="2" fallback="lamprow.lamp" />
+ <node type="transformnode" movx="3" fallback="lamprow.lamp" />
+ <node type="transformnode" movx="-1" fallback="lamprow.lamp" />
+ <node type="transformnode" movx="-2" fallback="lamprow.lamp" />
+ <node type="transformnode" movx="-3" fallback="lamprow.lamp" />
+ </node>
+ <node type="transformnode" movz="-6" fallback="lampForest.lamprow"/>
+ <node type="transformnode" movz="-7" fallback="lampForest.lamprow"/>
+ <node type="transformnode" movz="-8" fallback="lampForest.lamprow"/>
+ <node type="transformnode" movz="-9" fallback="lampForest.lamprow"/>
+ <node type="transformnode" movz="-4" fallback="lampForest.lamprow"/>
+ <node type="transformnode" movz="-3" fallback="lampForest.lamprow"/>
+ </node>
+ <node type="transformnode" rotx="-90" movz="-10" movx="0" movy="-0.99" setPasses="0" name="ground" >
+ <asset type="texture" file="MODEL:map.png" />
+ <asset type="terrain" file="MODEL:map.hgmdl" />
+ </node>
+
+</SceneGraph>
Added: Mercury2/Themes/default/Graphic/2by.png
===================================================================
(Binary files differ)
Property changes on: Mercury2/Themes/default/Graphic/2by.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: Mercury2/src/StateChanger.cpp
===================================================================
--- Mercury2/src/StateChanger.cpp 2010-02-23 02:19:18 UTC (rev 673)
+++ Mercury2/src/StateChanger.cpp 2010-02-23 05:53:27 UTC (rev 674)
@@ -150,6 +150,52 @@
REGISTER_STATECHANGE( DepthWrite );
+class FaceCulling : public StateChange
+{
+public:
+ FaceCulling( const MVector< MString > & sParameters ) : StateChange( sParameters )
+ {
+ if( sParameters.size() < 1 )
+ {
+ LOG.Write( ssprintf( "Error: DepthWrite state has invalid number of parameters(%d).", sParameters.size() ) );
+ return;
+ }
+ if( sParameters[0].compare( "front" ) == 0 )
+ iWhich = 1;
+ if( sParameters[0].compare( "back" ) == 0 )
+ iWhich = 2;
+ else
+ iWhich = 0;
+ }
+
+ void Stringify( MString & sOut )
+ {
+ sOut = (iWhich)?((iWhich==1)?"front":"back"):"";
+ }
+
+ void Activate()
+ {
+ if( iWhich )
+ {
+ GLCALL( glEnable(GL_CULL_FACE) );
+ if( iWhich == 1 )
+ {GLCALL( glCullFace(GL_FRONT) );}
+ else
+ {GLCALL( glCullFace(GL_BACK) );}
+ }
+ else
+ {
+ GLCALL( glDisable(GL_CULL_FACE) );
+ }
+ }
+
+ STATECHANGE_RTTI( FaceCulling );
+ int iWhich;
+};
+
+REGISTER_STATECHANGE( FaceCulling );
+
+
class BlendFunc : public StateChange
{
public:
@@ -225,6 +271,69 @@
REGISTER_STATECHANGE( BlendFunc );
+class AlphaFunc : public StateChange
+{
+public:
+ AlphaFunc( const MVector< MString > & sParameters ) : StateChange( sParameters )
+ {
+ if( sParameters.size() < 2 )
+ {
+ LOG.Write( ssprintf( "Error: AlphaFunc state has invalid number of parameters(%d).", sParameters.size() ) );
+ return;
+ }
+
+ m_func = StrToAlpha(sParameters[0] );
+ m_ref = StrToFloat(sParameters[1] );
+ }
+
+ void Stringify( MString & sOut )
+ {
+ sOut = AlphaToStr(m_func) + ssprintf( ",%f", m_ref );
+ }
+
+ #define STRTOGL(x,s) if (x==#s) return GL_##s;
+ int StrToAlpha(const MString& s)
+ {
+ STRTOGL(s, NEVER);
+ STRTOGL(s, LESS);
+ STRTOGL(s, EQUAL);
+ STRTOGL(s, LEQUAL);
+ STRTOGL(s, GREATER);
+ STRTOGL(s, NOTEQUAL);
+ STRTOGL(s, GEQUAL);
+ STRTOGL(s, ALWAYS);
+ return -1;
+ }
+
+ #define GLTOSTR(x,s) case GL_##s: return #s;
+ MString AlphaToStr(int blend)
+ {
+ switch (blend)
+ {
+ GLTOSTR(blend, NEVER);
+ GLTOSTR(blend, LESS);
+ GLTOSTR(blend, EQUAL);
+ GLTOSTR(blend, LEQUAL);
+ GLTOSTR(blend, GREATER);
+ GLTOSTR(blend, NOTEQUAL);
+ GLTOSTR(blend, GEQUAL);
+ GLTOSTR(blend, ALWAYS);
+ };
+ }
+
+ void Activate()
+ {
+ GLCALL( glEnable( GL_ALPHA_TEST ) );
+ GLCALL( glAlphaFunc(m_func,m_ref) );
+ }
+
+ STATECHANGE_RTTI( AlphaFunc );
+ int m_func;
+ float m_ref;
+};
+
+REGISTER_STATECHANGE( AlphaFunc );
+
//////////////////////////////////////STATE CHANGE CHUNK//////////////////////////////////////
StateChangeRegister & StateChangeRegister::Instance()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|