⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io_lightpoint.cpp

📁 最新osg包
💻 CPP
字号:
#include <osg/Notify>#include <osg/io_utils>#include <osgDB/Registry>#include "IO_LightPoint.h"using namespace osgSim;bool readLightPoint(LightPoint & lp, osgDB::Input &fr){    if (fr.matchSequence("lightPoint {"))    {        fr += 2;        int entry = fr[0].getNoNestedBrackets();        bool itAdvanced = true;        while (!fr.eof() && fr[0].getNoNestedBrackets() >= entry && itAdvanced) {            itAdvanced = false;            if (fr[0].matchWord("isOn")) {                const char * ptstr = fr[1].getStr();                if (ptstr) {                    if (std::string(ptstr) == "TRUE") {                        lp._on = true;                    } else if (std::string(ptstr) == "FALSE") {                        lp._on = false;                    } else {                        osg::notify(osg::WARN) << "osg::Sim reader warning: invalid isOn: " << ptstr << std::endl;                    }                    fr += 2;                    itAdvanced = true;                }            }            if (fr[0].matchWord("position")) {                float x, y, z;                if (fr[1].getFloat(x) && fr[2].getFloat(y) && fr[3].getFloat(z)) {                    lp._position.set(x, y, z);                    fr += 4;                    itAdvanced = true;                }            }            if (fr[0].matchWord("color")) {                float r, g, b, a;                if (fr[1].getFloat(r) && fr[2].getFloat(g) && fr[3].getFloat(b) && fr[4].getFloat(a)) {                    lp._color.set(r, g, b, a);                    fr += 5;                    itAdvanced = true;                }            }            if (fr[0].matchWord("intensity")) {                if (fr[1].getFloat(lp._intensity)) {                    fr += 2;                    itAdvanced = true;                }            }            if (fr[0].matchWord("radius")) {                if (fr[1].getFloat(lp._radius)) {                    fr += 2;                    itAdvanced = true;                }            }            if (fr[0].matchWord("blendingMode")) {                const char * ptstr = fr[1].getStr();                if (ptstr) {                    if (std::string(ptstr) == "ADDITIVE") {                        lp._blendingMode = LightPoint::ADDITIVE;                        fr += 2;                        itAdvanced = true;                    } else if (std::string(ptstr) == "BLENDED") {                        lp._blendingMode = LightPoint::BLENDED;                        fr += 2;                        itAdvanced = true;                    } else {                        osg::notify(osg::WARN) << "osg::Sim reader warning: invalid blendingMode: " << ptstr << std::endl;                    }                }            }            Sector * sector = static_cast<Sector *>(fr.readObjectOfType(osgDB::type_wrapper<Sector>()));            if (sector) {                lp._sector = sector;                itAdvanced = true;            }            BlinkSequence * seq = static_cast<BlinkSequence *>(fr.readObjectOfType(osgDB::type_wrapper<BlinkSequence>()));            if (seq) {                lp._blinkSequence = seq;                itAdvanced = true;            }        }        return true;    }    return false;}bool writeLightPoint(const LightPoint & lp, osgDB::Output &fw){    fw.indent() << "lightPoint {" << std::endl;    fw.moveIn();    fw.indent() << "isOn " << ( lp._on ? "TRUE" : "FALSE") << std::endl;    fw.indent() << "position " << lp._position << std::endl;    fw.indent() << "color " << lp._color << std::endl;    fw.indent() << "intensity " << lp._intensity << std::endl;    fw.indent() << "radius " << lp._radius << std::endl;    fw.indent() << "blendingMode ";    switch (lp._blendingMode) {        case LightPoint::ADDITIVE:            fw << "ADDITIVE" << std::endl;            break;        case LightPoint::BLENDED:        default :            fw << "BLENDED" << std::endl;            break;    }    if (lp._sector.valid()) {        fw.writeObject(*lp._sector);    }    if (lp._blinkSequence.valid()) {        fw.writeObject(*lp._blinkSequence);    }    fw.moveOut();    fw.indent() << "}" << std::endl;    return true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -