From 541c3f13e9b2ea3320ec07f5bdac627e159873bb Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 21 Mar 2007 16:34:04 +0000 Subject: [PATCH] Added GeometryTechinque to osgTerrain. Added usage of GeometryTechnique into osgterrain example Added --width and --height command line options to osgdistortion to allow users to control the window size. --- .../osgTerrain/wrapper_osgTerrain.dsp | 4 + examples/osgdistortion/osgdistortion.cpp | 11 ++- examples/osgterrain/osgterrain.cpp | 9 ++- include/osg/TransferFunction | 5 +- include/osgTerrain/GeometryTechnique | 56 ++++++++++++++ include/osgTerrain/Layer | 3 +- include/osgTerrain/Locator | 5 +- include/osgTerrain/TerrainNode | 37 ++++++++-- include/osgTerrain/TerrainTechnique | 14 +++- src/osgTerrain/CMakeLists.txt | 2 + src/osgTerrain/GeometryTechnique.cpp | 56 ++++++++++++++ src/osgTerrain/TerrainNode.cpp | 19 +++-- src/osgTerrain/TerrainTechnique.cpp | 20 +++++ src/osgWrappers/osg/TransferFunction.cpp | 3 +- src/osgWrappers/osgTerrain/GNUmakefile | 1 + .../osgTerrain/GeometryTechnique.cpp | 61 ++++++++++++++++ src/osgWrappers/osgTerrain/Locator.cpp | 11 +++ src/osgWrappers/osgTerrain/TerrainNode.cpp | 73 ++++++++++++++++--- .../osgTerrain/TerrainTechnique.cpp | 49 ++++++++++--- 19 files changed, 386 insertions(+), 53 deletions(-) create mode 100644 include/osgTerrain/GeometryTechnique create mode 100644 src/osgTerrain/GeometryTechnique.cpp create mode 100644 src/osgWrappers/osgTerrain/GeometryTechnique.cpp diff --git a/VisualStudio/osgWrappers/osgTerrain/wrapper_osgTerrain.dsp b/VisualStudio/osgWrappers/osgTerrain/wrapper_osgTerrain.dsp index ae7b7ea08..7448a5392 100644 --- a/VisualStudio/osgWrappers/osgTerrain/wrapper_osgTerrain.dsp +++ b/VisualStudio/osgWrappers/osgTerrain/wrapper_osgTerrain.dsp @@ -99,6 +99,10 @@ LINK32=link.exe SOURCE=..\..\..\src\osgWrappers\osgTerrain\Export.cpp # End Source File +# Begin Source File +SOURCE=..\..\..\src\osgWrappers\osgTerrain\GeometryTechnique.cpp +# End Source File + # Begin Source File SOURCE=..\..\..\src\osgWrappers\osgTerrain\Layer.cpp # End Source File diff --git a/examples/osgdistortion/osgdistortion.cpp b/examples/osgdistortion/osgdistortion.cpp index 890dda41b..c4155bb80 100644 --- a/examples/osgdistortion/osgdistortion.cpp +++ b/examples/osgdistortion/osgdistortion.cpp @@ -170,7 +170,7 @@ osg::Node* createDistortionSubgraph(osg::Node* subgraph, const osg::Vec4& clearC return distortionNode; } -void setDomeFaces(osgViewer::Viewer& viewer, osg::ArgumentParser& /*arguments*/) +void setDomeFaces(osgViewer::Viewer& viewer, osg::ArgumentParser& arguments) { osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface(); @@ -183,6 +183,9 @@ void setDomeFaces(osgViewer::Viewer& viewer, osg::ArgumentParser& /*arguments*/) unsigned int width, height; wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, height); + while (arguments.read("--width",width)) {} + while (arguments.read("--height",height)) {} + osg::ref_ptr traits = new osg::GraphicsContext::Traits; traits->x = 0; traits->y = 0; @@ -435,6 +438,9 @@ void setDomeCorrection(osgViewer::Viewer& viewer, osg::ArgumentParser& arguments unsigned int width, height; wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, height); + while (arguments.read("--width",width)) {} + while (arguments.read("--height",height)) {} + osg::ref_ptr traits = new osg::GraphicsContext::Traits; traits->x = 0; traits->y = 0; @@ -443,6 +449,8 @@ void setDomeCorrection(osgViewer::Viewer& viewer, osg::ArgumentParser& arguments traits->windowDecoration = false; traits->doubleBuffer = true; traits->sharedContext = 0; + + osg::ref_ptr gc = osg::GraphicsContext::createGraphicsContext(traits.get()); if (!gc) @@ -656,6 +664,7 @@ int main(int argc, char** argv) else { osg::Node* distortionNode = createDistortionSubgraph( osgDB::readNodeFiles(arguments), viewer.getCamera()->getClearColor()); + viewer.setSceneData( distortionNode ); } diff --git a/examples/osgterrain/osgterrain.cpp b/examples/osgterrain/osgterrain.cpp index 865b77bc6..3d4d66e88 100644 --- a/examples/osgterrain/osgterrain.cpp +++ b/examples/osgterrain/osgterrain.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include @@ -33,7 +34,7 @@ int main(int argc, char** argv) double w = 1.0; double h = 1.0; - osg::ref_ptr root = new osgTerrain::TerrainNode; + osg::ref_ptr terrain = new osgTerrain::TerrainNode; bool readParameter = false; do @@ -61,12 +62,14 @@ int main(int argc, char** argv) } while (readParameter); + osg::ref_ptr geometryTechnique = new osgTerrain::GeometryTechnique; + terrain->setTerrainTechnique(geometryTechnique.get()); - if (!root) return 0; + if (!terrain) return 0; // add a viewport to the viewer and attach the scene graph. - viewer.setSceneData(root.get()); + viewer.setSceneData(terrain.get()); return viewer.run(); } diff --git a/include/osg/TransferFunction b/include/osg/TransferFunction index 685006691..763881ea6 100644 --- a/include/osg/TransferFunction +++ b/include/osg/TransferFunction @@ -22,12 +22,11 @@ namespace osg { /** TransferFunction used to manage the mapping for 1D, 2D or 3D input to output Vec4 values. */ -class OSG_EXPORT TransferFunction +class OSG_EXPORT TransferFunction : public osg::Referenced { public : TransferFunction(); - virtual ~TransferFunction(); osg::Image* getImage() { return _image.get(); } const osg::Image* getImage() const { return _image.get(); } @@ -40,6 +39,8 @@ class OSG_EXPORT TransferFunction protected: + virtual ~TransferFunction(); + typedef std::vector Colors; Colors _colors; osg::ref_ptr _image; diff --git a/include/osgTerrain/GeometryTechnique b/include/osgTerrain/GeometryTechnique new file mode 100644 index 000000000..6b75767c7 --- /dev/null +++ b/include/osgTerrain/GeometryTechnique @@ -0,0 +1,56 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +#ifndef OSGTERRAIN_GEOMETRYTECHNIQUE +#define OSGTERRAIN_GEOMETRYTECHNIQUE 1 + +#include +#include + +#include + +namespace osgTerrain { + +class OSGTERRAIN_EXPORT GeometryTechnique : public TerrainTechnique +{ + public: + + GeometryTechnique(); + + /** Copy constructor using CopyOp to manage deep vs shallow copy.*/ + GeometryTechnique(const GeometryTechnique&,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY); + + virtual void initialize(); + + virtual void update(osgUtil::UpdateVisitor* nv); + + virtual void cull(osgUtil::CullVisitor* nv); + + virtual void cleanSceneGraph() {} + + /** Dirty so that cached data structurese are updated.*/ + virtual void dirty() { _dirty = true; } + + protected: + + virtual ~GeometryTechnique(); + + osg::ref_ptr _geode; + osg::ref_ptr _geometry; + bool _dirty; + +}; + +} + +#endif diff --git a/include/osgTerrain/Layer b/include/osgTerrain/Layer index 7834cc2a0..6523065c9 100644 --- a/include/osgTerrain/Layer +++ b/include/osgTerrain/Layer @@ -40,8 +40,7 @@ class OSGTERRAIN_EXPORT Layer : public osg::Object virtual ~Layer(); - - osg::ref_ptr _locator; + osg::ref_ptr _locator; }; diff --git a/include/osgTerrain/Locator b/include/osgTerrain/Locator index e54f688df..d7dadc02a 100644 --- a/include/osgTerrain/Locator +++ b/include/osgTerrain/Locator @@ -15,13 +15,12 @@ #define OSGTERRAIN_LOCATOR 1 #include +#include #include namespace osgTerrain { -class TerrainNode; - class OSGTERRAIN_EXPORT Locator : public osg::Object { public: @@ -31,6 +30,8 @@ class OSGTERRAIN_EXPORT Locator : public osg::Object /** Copy constructor using CopyOp to manage deep vs shallow copy.*/ Locator(const Locator&,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY); + virtual bool convertLocalToModel(const osg::Vec3d& local, osg::Vec3d& world) = 0; + virtual bool convertModelToWorld(const osg::Vec3d& local, osg::Vec3d& world) = 0; protected: diff --git a/include/osgTerrain/TerrainNode b/include/osgTerrain/TerrainNode index d7af7be57..cdbda3be6 100644 --- a/include/osgTerrain/TerrainNode +++ b/include/osgTerrain/TerrainNode @@ -15,11 +15,12 @@ #define OSGTERRAIN_TERRAINNODE 1 #include -#include #include +#include #include #include +#include namespace osgTerrain { @@ -49,20 +50,40 @@ class OSGTERRAIN_EXPORT TerrainNode : public osg::Group const TerrainTechnique* getTerrainTechnique() const { return _terrainTechnique.get(); } - void setHeightLayer(osgTerrain::Layer* layer); - osgTerrain::Layer* getHeightLayer(); + /** Set the coordinate frame locator of the terrain node. + * The locator takes non-dimensional s,t coordinates into the X,Y,Z world coords and back.*/ + void setLocator(Locator* locator) { _locator = locator; } + + /** Get the coordinate frame locator of the terrain node.*/ + Locator* getLocator() { return _locator.get(); } + + /** Get the coordinate frame locator of the terrain node.*/ + const Locator* getLocator() const { return _locator.get(); } + + + void setElevationLayer(Layer* layer); + Layer* getElevationLayer() { return _elevationLayer.get(); } + const Layer* getElevationLayer() const { return _elevationLayer.get(); } - void addColorLayer(osgTerrain::Layer* layer); - void removeColorLayer(osgTerrain::Layer* layer); + void setColorLayer(osgTerrain::Layer* layer); + Layer* getColorLayer() { return _colorLayer.get(); } + const Layer* getColorLayer() const { return _colorLayer.get(); } + + void setColorTransferFunction(osg::TransferFunction* tf); + osg::TransferFunction* getColorTransferFunction() { return _colorTransferFunction.get(); } + const osg::TransferFunction* getColorTransferFunction() const { return _colorTransferFunction.get(); } protected: virtual ~TerrainNode(); + osg::ref_ptr _terrainTechnique; + osg::ref_ptr _locator; - osg::ref_ptr _terrainTechnique; - - osg::ref_ptr _heightLayer; + osg::ref_ptr _elevationLayer; + + osg::ref_ptr _colorLayer; + osg::ref_ptr _colorTransferFunction; }; } diff --git a/include/osgTerrain/TerrainTechnique b/include/osgTerrain/TerrainTechnique index 9e037676f..3155b0c33 100644 --- a/include/osgTerrain/TerrainTechnique +++ b/include/osgTerrain/TerrainTechnique @@ -34,16 +34,22 @@ class OSGTERRAIN_EXPORT TerrainTechnique : public osg::Object /** Copy constructor using CopyOp to manage deep vs shallow copy.*/ TerrainTechnique(const TerrainTechnique&,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY); + META_Object(osgTerrain, TerrainTechnique); + TerrainNode* getTerrainNode() { return _terrainNode; } const TerrainNode* getTerrainNode() const { return _terrainNode; } - virtual void initialize() = 0; + virtual void initialize(); - virtual void heightFieldHasBeenModified() = 0; + virtual void update(osgUtil::UpdateVisitor* nv); - virtual void update(osgUtil::UpdateVisitor* nv) = 0; + virtual void cull(osgUtil::CullVisitor* nv); - virtual void cull(osgUtil::CullVisitor* nv) = 0; + /** Clean scene graph from any terrain technique specific nodes.*/ + virtual void cleanSceneGraph(); + + /** Dirty so that cached data structurese are updated.*/ + virtual void dirty(); protected: diff --git a/src/osgTerrain/CMakeLists.txt b/src/osgTerrain/CMakeLists.txt index 2e4e25d15..406ff5b00 100644 --- a/src/osgTerrain/CMakeLists.txt +++ b/src/osgTerrain/CMakeLists.txt @@ -12,6 +12,7 @@ SET(LIB_PUBLIC_HEADERS ${HEADER_PATH}/Layer ${HEADER_PATH}/TerrainNode ${HEADER_PATH}/TerrainTechnique + ${HEADER_PATH}/GeometryTechnique ${HEADER_PATH}/Version ) @@ -23,6 +24,7 @@ ADD_LIBRARY(${LIB_NAME} Locator.cpp TerrainNode.cpp TerrainTechnique.cpp + GeometryTechnique.cpp Version.cpp ) diff --git a/src/osgTerrain/GeometryTechnique.cpp b/src/osgTerrain/GeometryTechnique.cpp new file mode 100644 index 000000000..70070ef8d --- /dev/null +++ b/src/osgTerrain/GeometryTechnique.cpp @@ -0,0 +1,56 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +#include + +using namespace osgTerrain; + +GeometryTechnique::GeometryTechnique() +{ +} + +GeometryTechnique::GeometryTechnique(const GeometryTechnique& gt,const osg::CopyOp& copyop): + TerrainTechnique(gt,copyop) +{ +} + +GeometryTechnique::~GeometryTechnique() +{ +} + +void GeometryTechnique::initialize() +{ + osg::notify(osg::NOTICE)<<"Doing initalize"<addDrawable(_geometry.get()); + +} + + +void GeometryTechnique::update(osgUtil::UpdateVisitor* nv) +{ + osg::notify(osg::NOTICE)<<"Doing update"<accept(*nv); + } +} diff --git a/src/osgTerrain/TerrainNode.cpp b/src/osgTerrain/TerrainNode.cpp index 8388a3244..99fffc313 100644 --- a/src/osgTerrain/TerrainNode.cpp +++ b/src/osgTerrain/TerrainNode.cpp @@ -23,7 +23,9 @@ TerrainNode::TerrainNode() TerrainNode::TerrainNode(const TerrainNode& terrain,const osg::CopyOp& copyop): Group(terrain,copyop), - _heightLayer(terrain._heightLayer) + _elevationLayer(terrain._elevationLayer), + _colorLayer(terrain._colorLayer), + _colorTransferFunction(terrain._colorTransferFunction) { setNumChildrenRequiringUpdateTraversal(getNumChildrenRequiringUpdateTraversal()+1); @@ -74,20 +76,17 @@ void TerrainNode::setTerrainTechnique(osgTerrain::TerrainTechnique* terrainTechn } -void TerrainNode::setHeightLayer(osgTerrain::Layer* layer) +void TerrainNode::setElevationLayer(osgTerrain::Layer* layer) { - _heightLayer = layer; + _elevationLayer = layer; } -osgTerrain::Layer* TerrainNode::getHeightLayer() +void TerrainNode::setColorLayer(osgTerrain::Layer* layer) { - return _heightLayer.get(); + _colorLayer = layer; } -void TerrainNode::addColorLayer(osgTerrain::Layer* layer) -{ -} - -void TerrainNode::removeColorLayer(osgTerrain::Layer* layer) +void TerrainNode::setColorTransferFunction(osg::TransferFunction* tf) { + _colorTransferFunction = tf; } diff --git a/src/osgTerrain/TerrainTechnique.cpp b/src/osgTerrain/TerrainTechnique.cpp index 0b23ed785..aa300ab77 100644 --- a/src/osgTerrain/TerrainTechnique.cpp +++ b/src/osgTerrain/TerrainTechnique.cpp @@ -29,3 +29,23 @@ TerrainTechnique::TerrainTechnique(const TerrainTechnique& TerrainTechnique,cons TerrainTechnique::~TerrainTechnique() { } + +void TerrainTechnique::initialize() +{ +} + +void TerrainTechnique::update(osgUtil::UpdateVisitor* nv) +{ +} + +void TerrainTechnique::cull(osgUtil::CullVisitor* nv) +{ +} + +void TerrainTechnique::cleanSceneGraph() +{ +} + +void TerrainTechnique::dirty() +{ +} diff --git a/src/osgWrappers/osg/TransferFunction.cpp b/src/osgWrappers/osg/TransferFunction.cpp index 397e089e1..c1389b262 100644 --- a/src/osgWrappers/osg/TransferFunction.cpp +++ b/src/osgWrappers/osg/TransferFunction.cpp @@ -24,7 +24,8 @@ #undef OUT #endif -BEGIN_VALUE_REFLECTOR(osg::TransferFunction) +BEGIN_OBJECT_REFLECTOR(osg::TransferFunction) + I_BaseType(osg::Referenced); I_Constructor0(____TransferFunction, "", ""); diff --git a/src/osgWrappers/osgTerrain/GNUmakefile b/src/osgWrappers/osgTerrain/GNUmakefile index cdbabd16f..480ac39cb 100644 --- a/src/osgWrappers/osgTerrain/GNUmakefile +++ b/src/osgWrappers/osgTerrain/GNUmakefile @@ -3,6 +3,7 @@ include $(TOPDIR)/Make/makedefs CXXFILES =\ Export.cpp\ + GeometryTechnique.cpp\ Layer.cpp\ Locator.cpp\ TerrainNode.cpp\ diff --git a/src/osgWrappers/osgTerrain/GeometryTechnique.cpp b/src/osgWrappers/osgTerrain/GeometryTechnique.cpp new file mode 100644 index 000000000..7b35e9ce6 --- /dev/null +++ b/src/osgWrappers/osgTerrain/GeometryTechnique.cpp @@ -0,0 +1,61 @@ +// *************************************************************************** +// +// Generated automatically by genwrapper. +// Please DO NOT EDIT this file! +// +// *************************************************************************** + +#include +#include +#include +#include + +#include +#include +#include +#include + +// Must undefine IN and OUT macros defined in Windows headers +#ifdef IN +#undef IN +#endif +#ifdef OUT +#undef OUT +#endif + +BEGIN_OBJECT_REFLECTOR(osgTerrain::GeometryTechnique) + I_BaseType(osgTerrain::TerrainTechnique); + I_Constructor0(____GeometryTechnique, + "", + ""); + I_ConstructorWithDefaults2(IN, const osgTerrain::GeometryTechnique &, x, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY, + ____GeometryTechnique__C5_GeometryTechnique_R1__C5_osg_CopyOp_R1, + "Copy constructor using CopyOp to manage deep vs shallow copy. ", + ""); + I_Method0(void, initialize, + Properties::VIRTUAL, + __void__initialize, + "", + ""); + I_Method1(void, update, IN, osgUtil::UpdateVisitor *, nv, + Properties::VIRTUAL, + __void__update__osgUtil_UpdateVisitor_P1, + "", + ""); + I_Method1(void, cull, IN, osgUtil::CullVisitor *, nv, + Properties::VIRTUAL, + __void__cull__osgUtil_CullVisitor_P1, + "", + ""); + I_Method0(void, cleanSceneGraph, + Properties::VIRTUAL, + __void__cleanSceneGraph, + "Clean scene graph from any terrain technique specific nodes. ", + ""); + I_Method0(void, dirty, + Properties::VIRTUAL, + __void__dirty, + "Dirty so that cached data structurese are updated. ", + ""); +END_REFLECTOR + diff --git a/src/osgWrappers/osgTerrain/Locator.cpp b/src/osgWrappers/osgTerrain/Locator.cpp index 9435a11ca..4ae7c0c60 100644 --- a/src/osgWrappers/osgTerrain/Locator.cpp +++ b/src/osgWrappers/osgTerrain/Locator.cpp @@ -11,6 +11,7 @@ #include #include +#include #include // Must undefine IN and OUT macros defined in Windows headers @@ -30,5 +31,15 @@ BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgTerrain::Locator) ____Locator__C5_Locator_R1__C5_osg_CopyOp_R1, "Copy constructor using CopyOp to manage deep vs shallow copy. ", ""); + I_Method2(bool, convertLocalToModel, IN, const osg::Vec3d &, local, IN, osg::Vec3d &, world, + Properties::PURE_VIRTUAL, + __bool__convertLocalToModel__C5_osg_Vec3d_R1__osg_Vec3d_R1, + "", + ""); + I_Method2(bool, convertModelToWorld, IN, const osg::Vec3d &, local, IN, osg::Vec3d &, world, + Properties::PURE_VIRTUAL, + __bool__convertModelToWorld__C5_osg_Vec3d_R1__osg_Vec3d_R1, + "", + ""); END_REFLECTOR diff --git a/src/osgWrappers/osgTerrain/TerrainNode.cpp b/src/osgWrappers/osgTerrain/TerrainNode.cpp index a65115c20..ed8d80127 100644 --- a/src/osgWrappers/osgTerrain/TerrainNode.cpp +++ b/src/osgWrappers/osgTerrain/TerrainNode.cpp @@ -13,7 +13,9 @@ #include #include #include +#include #include +#include #include #include @@ -84,29 +86,78 @@ BEGIN_OBJECT_REFLECTOR(osgTerrain::TerrainNode) __C5_TerrainTechnique_P1__getTerrainTechnique, "Get the const TerrainTechnique. ", ""); - I_Method1(void, setHeightLayer, IN, osgTerrain::Layer *, layer, + I_Method1(void, setLocator, IN, osgTerrain::Locator *, locator, Properties::NON_VIRTUAL, - __void__setHeightLayer__osgTerrain_Layer_P1, + __void__setLocator__Locator_P1, + "Set the coordinate frame locator of the terrain node. ", + "The locator takes non-dimensional s,t coordinates into the X,Y,Z world coords and back. "); + I_Method0(osgTerrain::Locator *, getLocator, + Properties::NON_VIRTUAL, + __Locator_P1__getLocator, + "Get the coordinate frame locator of the terrain node. ", + ""); + I_Method0(const osgTerrain::Locator *, getLocator, + Properties::NON_VIRTUAL, + __C5_Locator_P1__getLocator, + "Get the coordinate frame locator of the terrain node. ", + ""); + I_Method1(void, setElevationLayer, IN, osgTerrain::Layer *, layer, + Properties::NON_VIRTUAL, + __void__setElevationLayer__Layer_P1, "", ""); - I_Method0(osgTerrain::Layer *, getHeightLayer, + I_Method0(osgTerrain::Layer *, getElevationLayer, Properties::NON_VIRTUAL, - __osgTerrain_Layer_P1__getHeightLayer, + __Layer_P1__getElevationLayer, "", ""); - I_Method1(void, addColorLayer, IN, osgTerrain::Layer *, layer, + I_Method0(const osgTerrain::Layer *, getElevationLayer, Properties::NON_VIRTUAL, - __void__addColorLayer__osgTerrain_Layer_P1, + __C5_Layer_P1__getElevationLayer, "", ""); - I_Method1(void, removeColorLayer, IN, osgTerrain::Layer *, layer, + I_Method1(void, setColorLayer, IN, osgTerrain::Layer *, layer, Properties::NON_VIRTUAL, - __void__removeColorLayer__osgTerrain_Layer_P1, + __void__setColorLayer__osgTerrain_Layer_P1, "", ""); - I_SimpleProperty(osgTerrain::Layer *, HeightLayer, - __osgTerrain_Layer_P1__getHeightLayer, - __void__setHeightLayer__osgTerrain_Layer_P1); + I_Method0(osgTerrain::Layer *, getColorLayer, + Properties::NON_VIRTUAL, + __Layer_P1__getColorLayer, + "", + ""); + I_Method0(const osgTerrain::Layer *, getColorLayer, + Properties::NON_VIRTUAL, + __C5_Layer_P1__getColorLayer, + "", + ""); + I_Method1(void, setColorTransferFunction, IN, osg::TransferFunction *, tf, + Properties::NON_VIRTUAL, + __void__setColorTransferFunction__osg_TransferFunction_P1, + "", + ""); + I_Method0(osg::TransferFunction *, getColorTransferFunction, + Properties::NON_VIRTUAL, + __osg_TransferFunction_P1__getColorTransferFunction, + "", + ""); + I_Method0(const osg::TransferFunction *, getColorTransferFunction, + Properties::NON_VIRTUAL, + __C5_osg_TransferFunction_P1__getColorTransferFunction, + "", + ""); + I_SimpleProperty(osgTerrain::Layer *, ColorLayer, + __Layer_P1__getColorLayer, + __void__setColorLayer__osgTerrain_Layer_P1); + I_SimpleProperty(osg::TransferFunction *, ColorTransferFunction, + __osg_TransferFunction_P1__getColorTransferFunction, + __void__setColorTransferFunction__osg_TransferFunction_P1); + I_SimpleProperty(osgTerrain::Layer *, ElevationLayer, + __Layer_P1__getElevationLayer, + __void__setElevationLayer__Layer_P1); + I_SimpleProperty(osgTerrain::Locator *, Locator, + __Locator_P1__getLocator, + __void__setLocator__Locator_P1); I_SimpleProperty(osgTerrain::TerrainTechnique *, TerrainTechnique, __TerrainTechnique_P1__getTerrainTechnique, __void__setTerrainTechnique__osgTerrain_TerrainTechnique_P1); diff --git a/src/osgWrappers/osgTerrain/TerrainTechnique.cpp b/src/osgWrappers/osgTerrain/TerrainTechnique.cpp index 8893d0fc8..f0e895774 100644 --- a/src/osgWrappers/osgTerrain/TerrainTechnique.cpp +++ b/src/osgWrappers/osgTerrain/TerrainTechnique.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -24,7 +25,7 @@ #undef OUT #endif -BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgTerrain::TerrainTechnique) +BEGIN_OBJECT_REFLECTOR(osgTerrain::TerrainTechnique) I_BaseType(osg::Object); I_Constructor0(____TerrainTechnique, "", @@ -33,6 +34,31 @@ BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgTerrain::TerrainTechnique) ____TerrainTechnique__C5_TerrainTechnique_R1__C5_osg_CopyOp_R1, "Copy constructor using CopyOp to manage deep vs shallow copy. ", ""); + I_Method0(osg::Object *, cloneType, + Properties::VIRTUAL, + __osg_Object_P1__cloneType, + "Clone the type of an object, with Object* return type. ", + "Must be defined by derived classes. "); + I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop, + Properties::VIRTUAL, + __osg_Object_P1__clone__C5_osg_CopyOp_R1, + "Clone an object, with Object* return type. ", + "Must be defined by derived classes. "); + I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj, + Properties::VIRTUAL, + __bool__isSameKindAs__C5_osg_Object_P1, + "", + ""); + I_Method0(const char *, libraryName, + Properties::VIRTUAL, + __C5_char_P1__libraryName, + "return the name of the object's library. ", + "Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. "); + I_Method0(const char *, className, + Properties::VIRTUAL, + __C5_char_P1__className, + "return the name of the object's class type. ", + "Must be defined by derived classes. "); I_Method0(osgTerrain::TerrainNode *, getTerrainNode, Properties::NON_VIRTUAL, __TerrainNode_P1__getTerrainNode, @@ -44,25 +70,30 @@ BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgTerrain::TerrainTechnique) "", ""); I_Method0(void, initialize, - Properties::PURE_VIRTUAL, + Properties::VIRTUAL, __void__initialize, "", ""); - I_Method0(void, heightFieldHasBeenModified, - Properties::PURE_VIRTUAL, - __void__heightFieldHasBeenModified, - "", - ""); I_Method1(void, update, IN, osgUtil::UpdateVisitor *, nv, - Properties::PURE_VIRTUAL, + Properties::VIRTUAL, __void__update__osgUtil_UpdateVisitor_P1, "", ""); I_Method1(void, cull, IN, osgUtil::CullVisitor *, nv, - Properties::PURE_VIRTUAL, + Properties::VIRTUAL, __void__cull__osgUtil_CullVisitor_P1, "", ""); + I_Method0(void, cleanSceneGraph, + Properties::VIRTUAL, + __void__cleanSceneGraph, + "Clean scene graph from any terrain technique specific nodes. ", + ""); + I_Method0(void, dirty, + Properties::VIRTUAL, + __void__dirty, + "Dirty so that cached data structurese are updated. ", + ""); I_SimpleProperty(osgTerrain::TerrainNode *, TerrainNode, __TerrainNode_P1__getTerrainNode, 0);