📄 alphafunc.cpp
字号:
#include "osg/AlphaFunc"#include "osgDB/Registry"#include "osgDB/Input"#include "osgDB/Output"using namespace osg;using namespace osgDB;// forward declare functions to use later.bool AlphaFunc_readLocalData(Object& obj, Input& fr);bool AlphaFunc_writeLocalData(const Object& obj, Output& fw);bool AlphaFunc_matchFuncStr(const char* str,AlphaFunc::ComparisonFunction& func);const char* AlphaFunc_getFuncStr(AlphaFunc::ComparisonFunction func);// register the read and write functions with the osgDB::Registry.RegisterDotOsgWrapperProxy g_AlphaFuncProxy( new osg::AlphaFunc, "AlphaFunc", "Object StateAttribute AlphaFunc", &AlphaFunc_readLocalData, &AlphaFunc_writeLocalData);bool AlphaFunc_readLocalData(Object& obj, Input& fr){ bool iteratorAdvanced = false; AlphaFunc& alphaFunc = static_cast<AlphaFunc&>(obj); AlphaFunc::ComparisonFunction func = alphaFunc.getFunction(); if (fr[0].matchWord("comparisonFunc") && AlphaFunc_matchFuncStr(fr[1].getStr(),func)) { fr+=2; iteratorAdvanced = true; } float ref = alphaFunc.getReferenceValue(); if (fr[0].matchWord("referenceValue") && fr[1].getFloat(ref)) { fr+=2; iteratorAdvanced = true; } if (iteratorAdvanced) alphaFunc.setFunction(func,ref); return iteratorAdvanced;}bool AlphaFunc_writeLocalData(const Object& obj,Output& fw){ const AlphaFunc& alphaFunc = static_cast<const AlphaFunc&>(obj); fw.indent() << "comparisonFunc " << AlphaFunc_getFuncStr(alphaFunc.getFunction()) << std::endl; fw.indent() << "referenceValue " << alphaFunc.getReferenceValue() << std::endl; return true;}bool AlphaFunc_matchFuncStr(const char* str,AlphaFunc::ComparisonFunction& func){ if (strcmp(str,"NEVER")==0) func = AlphaFunc::NEVER; else if (strcmp(str,"LESS")==0) func = AlphaFunc::LESS; else if (strcmp(str,"EQUAL")==0) func = AlphaFunc::EQUAL; else if (strcmp(str,"LEQUAL")==0) func = AlphaFunc::LEQUAL; else if (strcmp(str,"GREATER")==0) func = AlphaFunc::GREATER; else if (strcmp(str,"NOTEQUAL")==0) func = AlphaFunc::NOTEQUAL; else if (strcmp(str,"GEQUAL")==0) func = AlphaFunc::GEQUAL; else if (strcmp(str,"ALWAYS")==0) func = AlphaFunc::ALWAYS; else return false; return true;}const char* AlphaFunc_getFuncStr(AlphaFunc::ComparisonFunction func){ switch(func) { case(AlphaFunc::NEVER): return "NEVER"; case(AlphaFunc::LESS): return "LESS"; case(AlphaFunc::EQUAL): return "EQUAL"; case(AlphaFunc::LEQUAL): return "LEQUAL"; case(AlphaFunc::GREATER): return "GREATER"; case(AlphaFunc::NOTEQUAL): return "NOTEQUAL"; case(AlphaFunc::GEQUAL): return "GEQUAL"; case(AlphaFunc::ALWAYS): return "ALWAYS"; } return "";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -