[packages/SimGear] - added updates for OpenSceneGraph API from upstream git
baggins
baggins at pld-linux.org
Fri Oct 31 22:37:56 CET 2014
commit 05b683819eee8924af26f8faabdd71c974891e87
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Fri Oct 31 22:39:35 2014 +0100
- added updates for OpenSceneGraph API from upstream git
OpenSceneGraph-3.3.2.patch | 485 +++++++++++++++++++++++++++++++++++++++++++++
SimGear.spec | 3 +
2 files changed, 488 insertions(+)
---
diff --git a/SimGear.spec b/SimGear.spec
index 7d715a8..7f3a9df 100644
--- a/SimGear.spec
+++ b/SimGear.spec
@@ -10,11 +10,13 @@ License: GPL v2+
Group: Libraries
Source0: ftp://mirrors.ibiblio.org/pub/mirrors/simgear/ftp/Source/simgear-%{version}.tar.bz2
# Source0-md5: d6aac26bf8876391a7d5f4381fc98c01
+Patch0: OpenSceneGraph-3.3.2.patch
URL: http://simgear.sourceforge.net/
BuildRequires: OpenAL-devel
BuildRequires: OpenGL-devel
BuildRequires: OpenGL-glut-devel
BuildRequires: OpenSceneGraph-devel >=3.0.0
+BuildRequires: boost-devel
BuildRequires: cmake
BuildRequires: freealut-devel
BuildRequires: libjpeg-devel
@@ -70,6 +72,7 @@ Statyczne biblioteki SimGear.
%prep
%setup -q -n simgear-%{version}
+%patch0 -p1
%build
install -d build
diff --git a/OpenSceneGraph-3.3.2.patch b/OpenSceneGraph-3.3.2.patch
new file mode 100644
index 0000000..7779c06
--- /dev/null
+++ b/OpenSceneGraph-3.3.2.patch
@@ -0,0 +1,485 @@
+commit 791273c61de23d2ec383a270db27015d235a9938
+Author: Thomas Geymayer <tomgey at gmail.com>
+Date: Sat Aug 9 17:18:21 2014 +0200
+
+ Update for OpenSceneGraph 3.3.2 API changes.
+
+diff --git a/simgear/canvas/ODGauge.cxx b/simgear/canvas/ODGauge.cxx
+index 5c547ea..4a2b7fa 100644
+--- a/simgear/canvas/ODGauge.cxx
++++ b/simgear/canvas/ODGauge.cxx
+@@ -44,6 +44,7 @@
+ #include <osg/ShadeModel>
+ #include <osg/StateSet>
+ #include <osg/FrameBufferObject> // for GL_DEPTH_STENCIL_EXT on Windows
++#include <osg/Version>
+ #include <osgUtil/RenderBin>
+
+ #include <cassert>
+@@ -266,7 +267,15 @@ namespace canvas
+ //----------------------------------------------------------------------------
+ void ODGauge::reinit()
+ {
+- osg::NodeCallback* cull_callback = camera ? camera->getCullCallback() : 0;
++ osg::NodeCallback* cull_callback =
++ camera
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ ? camera->getCullCallback()
++#else
++ ? dynamic_cast<osg::NodeCallback*>(camera->getCullCallback())
++#endif
++ : 0;
++
+ clear();
+ allocRT(cull_callback);
+ }
+diff --git a/simgear/canvas/elements/CanvasElement.cxx b/simgear/canvas/elements/CanvasElement.cxx
+index 478cfb8..f895292 100644
+--- a/simgear/canvas/elements/CanvasElement.cxx
++++ b/simgear/canvas/elements/CanvasElement.cxx
+@@ -27,6 +27,7 @@
+ #include <osg/Drawable>
+ #include <osg/Geode>
+ #include <osg/Scissor>
++#include <osg/Version>
+
+ #include <boost/algorithm/string/predicate.hpp>
+ #include <boost/foreach.hpp>
+@@ -649,7 +650,11 @@ namespace canvas
+ osg::BoundingBox Element::getBoundingBox() const
+ {
+ if( _drawable )
++#if OSG_VERSION_LESS_THAN(3,3,2)
+ return _drawable->getBound();
++#else
++ return _drawable->getBoundingBox();
++#endif
+
+ osg::BoundingBox bb;
+
+@@ -672,7 +677,13 @@ namespace canvas
+ return osg::BoundingBox();
+
+ osg::BoundingBox transformed;
+- const osg::BoundingBox& bb = _drawable->getBound();
++ const osg::BoundingBox& bb =
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ _drawable->getBound();
++#else
++ _drawable->getBoundingBox();
++#endif
++
+ for(int i = 0; i < 4; ++i)
+ transformed.expandBy( bb.corner(i) * m );
+
+diff --git a/simgear/canvas/elements/CanvasImage.cxx b/simgear/canvas/elements/CanvasImage.cxx
+index 4f4ffc7..c89c71a 100644
+--- a/simgear/canvas/elements/CanvasImage.cxx
++++ b/simgear/canvas/elements/CanvasImage.cxx
+@@ -413,7 +413,14 @@ namespace canvas
+ && child->getNameString() == "visible"
+ && child->getBoolValue() )
+ {
+- CullCallback* cb = static_cast<CullCallback*>(_geom->getCullCallback());
++ CullCallback* cb =
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ static_cast<CullCallback*>
++#else
++ dynamic_cast<CullCallback*>
++#endif
++ ( _geom->getCullCallback() );
++
+ if( cb )
+ cb->cullNextFrame();
+ }
+diff --git a/simgear/canvas/elements/CanvasPath.cxx b/simgear/canvas/elements/CanvasPath.cxx
+index ba5351f..9eddcb3 100644
+--- a/simgear/canvas/elements/CanvasPath.cxx
++++ b/simgear/canvas/elements/CanvasPath.cxx
+@@ -20,6 +20,7 @@
+ #include <simgear/scene/util/parse_color.hxx>
+
+ #include <osg/Drawable>
++#include <osg/Version>
+
+ #include <vg/openvg.h>
+ #include <cassert>
+@@ -372,7 +373,13 @@ namespace canvas
+ /**
+ * Compute the bounding box
+ */
+- virtual osg::BoundingBox computeBound() const
++ virtual osg::BoundingBox
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ computeBound()
++#else
++ computeBoundingBox()
++#endif
++ const
+ {
+ if( _path == VG_INVALID_HANDLE || (_attributes_dirty & PATH) )
+ return osg::BoundingBox();
+diff --git a/simgear/canvas/elements/CanvasText.cxx b/simgear/canvas/elements/CanvasText.cxx
+index ebe76d4..239383c 100644
+--- a/simgear/canvas/elements/CanvasText.cxx
++++ b/simgear/canvas/elements/CanvasText.cxx
+@@ -45,7 +45,13 @@ namespace canvas
+ SGVec2i sizeForWidth(int w) const;
+ osg::Vec2 handleHit(const osg::Vec2f& pos);
+
+- virtual osg::BoundingBox computeBound() const;
++ virtual osg::BoundingBox
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ computeBound()
++#else
++ computeBoundingBox()
++#endif
++ const;
+
+ protected:
+
+@@ -467,9 +473,20 @@ namespace canvas
+ }
+
+ //----------------------------------------------------------------------------
+- osg::BoundingBox Text::TextOSG::computeBound() const
++ osg::BoundingBox
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ Text::TextOSG::computeBound()
++#else
++ Text::TextOSG::computeBoundingBox()
++#endif
++ const
+ {
+- osg::BoundingBox bb = osgText::Text::computeBound();
++ osg::BoundingBox bb =
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ osgText::Text::computeBound();
++#else
++ osgText::Text::computeBoundingBox();
++#endif
+
+ #if OSG_VERSION_LESS_THAN(3,1,0)
+ if( bb.valid() )
+diff --git a/simgear/scene/material/EffectGeode.hxx b/simgear/scene/material/EffectGeode.hxx
+index 515b1a0..34b87e3 100644
+--- a/simgear/scene/material/EffectGeode.hxx
++++ b/simgear/scene/material/EffectGeode.hxx
+@@ -18,6 +18,9 @@
+ #define SIMGEAR_EFFECT_GEODE_HXX 1
+
+ #include <osg/Geode>
++#include <osg/Version>
++
++#include <boost/iterator/iterator_adaptor.hpp>
+
+ #include "Effect.hxx"
+
+@@ -25,7 +28,41 @@ namespace simgear
+ {
+ class EffectGeode : public osg::Geode
+ {
+-public:
++ public:
++
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ typedef DrawableList::iterator DrawablesIterator;
++#else
++ class DrawablesIterator:
++ public boost::iterator_adaptor<
++ DrawablesIterator,
++ osg::NodeList::iterator,
++ osg::ref_ptr<osg::Drawable>,
++ boost::use_default,
++ osg::ref_ptr<osg::Drawable> // No reference as Reference type.
++ // The child list does not contain Drawable
++ // ref_ptr so we can not return any
++ // references to them.
++ >
++ {
++ public:
++
++ DrawablesIterator()
++ {}
++
++ explicit DrawablesIterator(osg::NodeList::iterator const& node_it):
++ DrawablesIterator::iterator_adaptor_(node_it)
++ {}
++
++ private:
++ friend class boost::iterator_core_access;
++ osg::ref_ptr<osg::Drawable> dereference() const
++ {
++ return base_reference()->get()->asDrawable();
++ }
++ };
++#endif
++
+ EffectGeode();
+ EffectGeode(const EffectGeode& rhs,
+ const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
+@@ -34,9 +71,15 @@ public:
+ void setEffect(Effect* effect);
+ virtual void resizeGLObjectBuffers(unsigned int maxSize);
+ virtual void releaseGLObjects(osg::State* = 0) const;
+- typedef DrawableList::iterator DrawablesIterator;
++
++#if OSG_VERSION_LESS_THAN(3,3,2)
+ DrawablesIterator drawablesBegin() { return _drawables.begin(); }
+ DrawablesIterator drawablesEnd() { return _drawables.end(); }
++#else
++ DrawablesIterator drawablesBegin() { return DrawablesIterator(_children.begin()); }
++ DrawablesIterator drawablesEnd() { return DrawablesIterator(_children.end()); }
++#endif
++
+ void runGenerators(osg::Geometry *geometry);
+ private:
+ osg::ref_ptr<Effect> _effect;
+diff --git a/simgear/scene/material/Technique.cxx b/simgear/scene/material/Technique.cxx
+index d5d9b06..93a17b8 100644
+--- a/simgear/scene/material/Technique.cxx
++++ b/simgear/scene/material/Technique.cxx
+@@ -140,27 +140,40 @@ Technique::processDrawables(const EffectGeode::DrawablesIterator& begin,
+ EffectGeode::DrawablesIterator itr = begin;
+ bool computeNearFar
+ = cv->getComputeNearFarMode() != CullVisitor::DO_NOT_COMPUTE_NEAR_FAR;
+- for (int i = 0; i < NUM_DRAWABLES && itr != end; ++itr, ++i) {
+- Drawable* drawable = itr->get();
+- const BoundingBox& bb = drawable->getBound();
+- if ((drawable->getCullCallback()
+- && drawable->getCullCallback()->cull(cv, drawable,
+- &cv->getRenderInfo()))
+- || (isCullingActive && cv->isCulled(bb))) {
+- depth[i] = FLT_MAX;
+- continue;
+- }
+- if (computeNearFar && bb.valid()) {
+- if (!cv->updateCalculatedNearFar(matrix, *drawable, false)) {
+- depth[i] = FLT_MAX;
+- continue;
+- }
++ for (int i = 0; i < NUM_DRAWABLES && itr != end; ++itr, ++i)
++ {
++ Drawable* drawable = itr->get();
++
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ const BoundingBox& bb = drawable->getBound();
++ osg::Drawable::CullCallback* cull = drawable->getCullCallback();
++#else
++ const BoundingBox& bb = drawable->getBoundingBox();
++ osg::Drawable::CullCallback* cull =
++ dynamic_cast<osg::Drawable::CullCallback*>(drawable->getCullCallback());
++#endif
++
++ if( (cull && cull->cull(cv, drawable, &cv->getRenderInfo()))
++ || (isCullingActive && cv->isCulled(bb)) )
++ {
++ depth[i] = FLT_MAX;
++ continue;
++ }
++
++ if( computeNearFar && bb.valid() )
++ {
++ if( !cv->updateCalculatedNearFar(matrix, *drawable, false) )
++ {
++ depth[i] = FLT_MAX;
++ continue;
+ }
+- depth[i] = (bb.valid()
+- ? cv->getDistanceFromEyePoint(bb.center(), false)
+- : 0.0f);
+- if (isNaN(depth[i]))
+- depth[i] = FLT_MAX;
++ }
++
++ depth[i] = bb.valid()
++ ? cv->getDistanceFromEyePoint(bb.center(), false)
++ : 0.0f;
++ if( isNaN(depth[i]) )
++ depth[i] = FLT_MAX;
+ }
+ EffectCullVisitor* ecv = dynamic_cast<EffectCullVisitor*>( cv );
+ EffectGeode::DrawablesIterator drawablesEnd = itr;
+diff --git a/simgear/scene/sky/CloudShaderGeometry.hxx b/simgear/scene/sky/CloudShaderGeometry.hxx
+index 20d0db8..6d78af2 100644
+--- a/simgear/scene/sky/CloudShaderGeometry.hxx
++++ b/simgear/scene/sky/CloudShaderGeometry.hxx
+@@ -95,7 +95,13 @@ class CloudShaderGeometry : public osg::Drawable
+ { return _cloudsprites[i]; }
+
+ virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
+- virtual osg::BoundingBox computeBound() const
++ virtual osg::BoundingBox
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ computeBound()
++#else
++ computeBoundingBox()
++#endif
++ const
+ {
+ return _bbox;
+ }
+diff --git a/simgear/scene/tgdb/SGVasiDrawable.cxx b/simgear/scene/tgdb/SGVasiDrawable.cxx
+index bb3ce0e..d66474f 100644
+--- a/simgear/scene/tgdb/SGVasiDrawable.cxx
++++ b/simgear/scene/tgdb/SGVasiDrawable.cxx
+@@ -104,7 +104,12 @@ SGVasiDrawable::drawImplementation(osg::RenderInfo& renderInfo) const
+ }
+
+ osg::BoundingBox
+-SGVasiDrawable::computeBound() const
++#if OSG_VERSION_LESS_THAN(3,3,2)
++SGVasiDrawable::computeBound()
++#else
++SGVasiDrawable::computeBoundingBox()
++#endif
++const
+ {
+ osg::BoundingBox bb;
+ for (unsigned i = 0; i < _lights.size(); ++i)
+diff --git a/simgear/scene/tgdb/SGVasiDrawable.hxx b/simgear/scene/tgdb/SGVasiDrawable.hxx
+index 242e393..e4b0479 100644
+--- a/simgear/scene/tgdb/SGVasiDrawable.hxx
++++ b/simgear/scene/tgdb/SGVasiDrawable.hxx
+@@ -23,9 +23,10 @@
+ #define _SG_VASI_DRAWABLE_HXX
+
+ #include <simgear/compiler.h>
++#include <simgear/math/SGMath.hxx>
+
+ #include <osg/Drawable>
+-#include <simgear/math/SGMath.hxx>
++#include <osg/Version>
+
+ class SGVasiDrawable : public osg::Drawable {
+ struct LightData;
+@@ -49,7 +50,13 @@ public:
+ const SGVec3f& up);
+
+ virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
+- virtual osg::BoundingBox computeBound() const;
++ virtual osg::BoundingBox
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ computeBound()
++#else
++ computeBoundingBox()
++#endif
++ const;
+
+ private:
+ SGVec4f getColor(float angleDeg) const;
+diff --git a/simgear/scene/tgdb/ShaderGeometry.cxx b/simgear/scene/tgdb/ShaderGeometry.cxx
+index 36a3093..5d286c3 100644
+--- a/simgear/scene/tgdb/ShaderGeometry.cxx
++++ b/simgear/scene/tgdb/ShaderGeometry.cxx
+@@ -60,9 +60,21 @@ void ShaderGeometry::drawImplementation(osg::RenderInfo& renderInfo) const
+ }
+ }
+
+-BoundingBox ShaderGeometry::computeBound() const
++BoundingBox
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ShaderGeometry::computeBound()
++#else
++ShaderGeometry::computeBoundingBox()
++#endif
++const
+ {
+- const BoundingBox& geom_box = _geometry->getBound();
++ const BoundingBox& geom_box =
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ _geometry->getBound();
++#else
++ _geometry->getBoundingBox();
++#endif
++
+ BoundingBox bb;
+ const Vec4Array* posScales = _posScaleArray.get();
+ if (!posScales)
+diff --git a/simgear/scene/tgdb/ShaderGeometry.hxx b/simgear/scene/tgdb/ShaderGeometry.hxx
+index 30c72fb..a5de095 100644
+--- a/simgear/scene/tgdb/ShaderGeometry.hxx
++++ b/simgear/scene/tgdb/ShaderGeometry.hxx
+@@ -58,8 +58,15 @@ class ShaderGeometry : public osg::Drawable
+ META_Object(flightgear, ShaderGeometry);
+
+ virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
+- virtual osg::BoundingBox computeBound() const;
+
++ virtual osg::BoundingBox
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ computeBound()
++#else
++ computeBoundingBox()
++#endif
++ const;
++
+ void setGeometry(osg::Geometry* geometry)
+ {
+ _geometry = geometry;
+diff --git a/simgear/scene/util/SGEnlargeBoundingBox.cxx b/simgear/scene/util/SGEnlargeBoundingBox.cxx
+index 8e5d8f3..5ff1985 100644
+--- a/simgear/scene/util/SGEnlargeBoundingBox.cxx
++++ b/simgear/scene/util/SGEnlargeBoundingBox.cxx
+@@ -24,7 +24,9 @@
+ #endif
+
+ #include "SGEnlargeBoundingBox.hxx"
++
+ #include <osg/Drawable>
++#include <osg/Version>
+
+ SGEnlargeBoundingBox::SGEnlargeBoundingBox(float offset) :
+ _offset(offset)
+@@ -41,7 +43,13 @@ SGEnlargeBoundingBox::SGEnlargeBoundingBox(const SGEnlargeBoundingBox& cb,
+ osg::BoundingBox
+ SGEnlargeBoundingBox::computeBound(const osg::Drawable& drawable) const
+ {
+- osg::BoundingBox bound = drawable.computeBound();
++ osg::BoundingBox bound =
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ drawable.computeBound();
++#else
++ drawable.computeBoundingBox();
++#endif
++
+ if (!bound.valid())
+ return bound;
+ return osg::BoundingBox(bound._min - osg::Vec3(_offset, _offset, _offset),
+diff --git a/simgear/scene/util/UpdateOnceCallback.cxx b/simgear/scene/util/UpdateOnceCallback.cxx
+index 2615df4..99d0192 100644
+--- a/simgear/scene/util/UpdateOnceCallback.cxx
++++ b/simgear/scene/util/UpdateOnceCallback.cxx
+@@ -20,6 +20,7 @@
+ #include "UpdateOnceCallback.hxx"
+
+ #include <osg/Node>
++#include <osg/NodeVisitor>
+
+ namespace simgear
+ {
+commit 68d0891665683cbe115c0689a9f17f4aa078cf56
+Author: Thomas Geymayer <tomgey at gmail.com>
+Date: Sun Aug 10 15:36:27 2014 +0200
+
+ Canvas: fix element mouse hit detection with OSG 3.3.2.
+
+diff --git a/simgear/canvas/elements/CanvasElement.cxx b/simgear/canvas/elements/CanvasElement.cxx
+index f895292..6d8c930 100644
+--- a/simgear/canvas/elements/CanvasElement.cxx
++++ b/simgear/canvas/elements/CanvasElement.cxx
+@@ -398,7 +398,13 @@ namespace canvas
+
+ // Drawables have a bounding box...
+ if( _drawable )
+- return _drawable->getBound().contains(osg::Vec3f(local_pos, 0));
++ return _drawable->
++#if OSG_VERSION_LESS_THAN(3,3,2)
++ getBound()
++#else
++ getBoundingBox()
++#endif
++ .contains(osg::Vec3f(local_pos, 0));
+ else if( _transform.valid() )
+ // ... for other elements, i.e. groups only a bounding sphere is available
+ return _transform->getBound().contains(osg::Vec3f(parent_pos, 0));
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/SimGear.git/commitdiff/05b683819eee8924af26f8faabdd71c974891e87
More information about the pld-cvs-commit
mailing list