84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
#include <osgFX/BumpMapping>
|
|
|
|
#include <osgDB/Registry>
|
|
#include <osgDB/Input>
|
|
#include <osgDB/Output>
|
|
|
|
bool BumpMapping_readLocalData(osg::Object &obj, osgDB::Input &fr);
|
|
bool BumpMapping_writeLocalData(const osg::Object &obj, osgDB::Output &fw);
|
|
|
|
osgDB::RegisterDotOsgWrapperProxy BumpMapping_Proxy
|
|
(
|
|
new osgFX::BumpMapping,
|
|
"osgFX::BumpMapping",
|
|
"Object Node Group osgFX::Effect osgFX::BumpMapping",
|
|
BumpMapping_readLocalData,
|
|
BumpMapping_writeLocalData
|
|
);
|
|
|
|
bool BumpMapping_readLocalData(osg::Object &obj, osgDB::Input &fr)
|
|
{
|
|
osgFX::BumpMapping &myobj = static_cast<osgFX::BumpMapping &>(obj);
|
|
bool itAdvanced = false;
|
|
|
|
if (fr[0].matchWord("lightNumber")) {
|
|
int n;
|
|
if (fr[1].getInt(n)) {
|
|
myobj.setLightNumber(n);
|
|
fr += 2;
|
|
itAdvanced = true;
|
|
}
|
|
}
|
|
|
|
if (fr[0].matchWord("diffuseUnit")) {
|
|
int n;
|
|
if (fr[1].getInt(n)) {
|
|
myobj.setDiffuseTextureUnit(n);
|
|
fr += 2;
|
|
itAdvanced = true;
|
|
}
|
|
}
|
|
|
|
if (fr[0].matchWord("normalMapUnit")) {
|
|
int n;
|
|
if (fr[1].getInt(n)) {
|
|
myobj.setNormalMapTextureUnit(n);
|
|
fr += 2;
|
|
itAdvanced = true;
|
|
}
|
|
}
|
|
|
|
osg::ref_ptr<osg::Texture2D> diffuse_tex = static_cast<osg::Texture2D *>(fr.readObjectOfType(osgDB::type_wrapper<osg::Texture2D>()));
|
|
if (diffuse_tex.valid()) {
|
|
myobj.setOverrideDiffuseTexture(diffuse_tex.get());
|
|
itAdvanced = true;
|
|
}
|
|
|
|
osg::ref_ptr<osg::Texture2D> normal_tex = static_cast<osg::Texture2D *>(fr.readObjectOfType(osgDB::type_wrapper<osg::Texture2D>()));
|
|
if (normal_tex.valid()) {
|
|
myobj.setOverrideNormalMapTexture(normal_tex.get());
|
|
itAdvanced = true;
|
|
}
|
|
|
|
return itAdvanced;
|
|
}
|
|
|
|
bool BumpMapping_writeLocalData(const osg::Object &obj, osgDB::Output &fw)
|
|
{
|
|
const osgFX::BumpMapping &myobj = static_cast<const osgFX::BumpMapping &>(obj);
|
|
|
|
fw.indent() << "lightNumber " << myobj.getLightNumber() << "\n";
|
|
fw.indent() << "diffuseUnit " << myobj.getDiffuseTextureUnit() << "\n";
|
|
fw.indent() << "normalMapUnit " << myobj.getNormalMapTextureUnit() << "\n";
|
|
|
|
if (myobj.getOverrideDiffuseTexture()) {
|
|
fw.writeObject(*myobj.getOverrideDiffuseTexture());
|
|
}
|
|
|
|
if (myobj.getOverrideNormalMapTexture()) {
|
|
fw.writeObject(*myobj.getOverrideNormalMapTexture());
|
|
}
|
|
|
|
return true;
|
|
}
|