OpenSceneGraph/src/osgPlugins/osg/ClearNode.cpp

105 lines
2.3 KiB
C++
Raw Normal View History

2005-04-08 17:36:42 +08:00
#include <osg/ClearNode>
#include <osg/io_utils>
2005-04-08 17:36:42 +08:00
#include <osgDB/Registry>
#include <osgDB/Input>
#include <osgDB/Output>
using namespace osg;
using namespace osgDB;
// forward declare functions to use later.
bool ClearNode_readLocalData(Object& obj, Input& fr);
bool ClearNode_writeLocalData(const Object& obj, Output& fw);
// register the read and write functions with the osgDB::Registry.
RegisterDotOsgWrapperProxy g_EarthSkyProxy
(
new osg::ClearNode,
"EarthSky",
"Object Node EarthSky Group",
&ClearNode_readLocalData,
&ClearNode_writeLocalData
);
RegisterDotOsgWrapperProxy g_ClearNodeProxy
(
new osg::ClearNode,
"ClearNode",
"Object Node ClearNode Group",
&ClearNode_readLocalData,
&ClearNode_writeLocalData
);
bool ClearNode_readLocalData(Object& obj, Input& fr)
{
bool iteratorAdvanced = false;
ClearNode& es = static_cast<ClearNode&>(obj);
if (fr.matchSequence("requiresClear"))
{
if (fr[1].matchWord("TRUE"))
{
es.setRequiresClear(true);
iteratorAdvanced = true;
fr+=2;
}
else if (fr[1].matchWord("FALSE"))
{
es.setRequiresClear(false);
iteratorAdvanced = true;
fr+=2;
}
}
osg::Vec4 vec4(0.0f,0.0f,0.0f,1.0f);
if (fr[0].matchWord("clearColor") &&
fr[1].getFloat(vec4[0]) &&
fr[2].getFloat(vec4[1]) &&
fr[3].getFloat(vec4[2]) &&
fr[4].getFloat(vec4[3]))
{
es.setClearColor(vec4);
fr+=5;
iteratorAdvanced = true;
}
if (fr[0].matchWord("clearMask"))
{
if (fr[1].isUInt())
{
unsigned int value=0;
fr[1].getUInt(value);
es.setClearMask(static_cast<GLbitfield>(value));
iteratorAdvanced = true;
fr+=2;
}
}
return iteratorAdvanced;
}
bool ClearNode_writeLocalData(const Object& obj, Output& fw)
{
const ClearNode& es = static_cast<const ClearNode&>(obj);
fw.indent() << "requiresClear ";
if (es.getRequiresClear())
{
fw<<"TRUE"<< std::endl;
}
else
{
fw<<"FALSE"<< std::endl;
}
fw.indent() << "clearColor "<<es.getClearColor()<< std::endl;
fw.indent() << "clearMask "<<static_cast<unsigned int>(es.getClearMask())<< std::endl;
return true;
}