From 5b8613a622a069d4d32332617a354c55dcc4f3c8 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Sat, 14 Mar 2020 18:36:07 +0100 Subject: [PATCH] games-engines/openmw: Fix build w/ >=dev-games/openscenegraph-3.6.5 Bug: https://bugs.gentoo.org/709878 Package-Manager: Portage-2.3.93, Repoman-2.3.20 Signed-off-by: Andreas Sturmlechner --- .../files/openmw-0.45.0-osg-3.6.5-1.patch | 51 +++++++++++++++++++ .../files/openmw-0.45.0-osg-3.6.5-2.patch | 21 ++++++++ games-engines/openmw/openmw-0.45.0.ebuild | 2 + 3 files changed, 74 insertions(+) create mode 100644 games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch create mode 100644 games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch diff --git a/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch new file mode 100644 index 000000000000..b47fab28d122 --- /dev/null +++ b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch @@ -0,0 +1,51 @@ +From 807f550386a1eac6f7306589a4e4a01e783e65df Mon Sep 17 00:00:00 2001 +From: Alexander Olofsson +Date: Thu, 13 Feb 2020 19:15:33 +0100 +Subject: [PATCH] Fix building mwrender/sky with OSG 3.6.5 + +OSG commit aff574b completely replaces the method of doing user-defined +query geometry, removing support for modifying the default geometry. +--- + apps/openmw/mwrender/sky.cpp | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp +index 3996f472c2..e13f5a7b65 100644 +--- a/apps/openmw/mwrender/sky.cpp ++++ b/apps/openmw/mwrender/sky.cpp +@@ -558,16 +558,22 @@ class Sun : public CelestialBody + osg::ref_ptr oqn = new osg::OcclusionQueryNode; + oqn->setQueriesEnabled(true); + ++#if OSG_VERSION_GREATER_OR_EQUAL(3, 6, 5) ++ // With OSG 3.6.5, the method of providing user defined query geometry has been completely replaced ++ osg::ref_ptr queryGeom = new osg::QueryGeometry(oqn->getName()); ++#else ++ auto* queryGeom = oqn->getQueryGeometry(); ++#endif ++ + // Make it fast! A DYNAMIC query geometry means we can't break frame until the flare is rendered (which is rendered after all the other geometry, + // so that would be pretty bad). STATIC should be safe, since our node's local bounds are static, thus computeBounds() which modifies the queryGeometry + // is only called once. + // Note the debug geometry setDebugDisplay(true) is always DYNAMIC and that can't be changed, not a big deal. +- oqn->getQueryGeometry()->setDataVariance(osg::Object::STATIC); ++ queryGeom->setDataVariance(osg::Object::STATIC); + + // Set up the query geometry to match the actual sun's rendering shape. osg::OcclusionQueryNode wasn't originally intended to allow this, + // normally it would automatically adjust the query geometry to match the sub graph's bounding box. The below hack is needed to + // circumvent this. +- osg::Geometry* queryGeom = oqn->getQueryGeometry(); + queryGeom->setVertexArray(mGeom->getVertexArray()); + queryGeom->setTexCoordArray(0, mGeom->getTexCoordArray(0), osg::Array::BIND_PER_VERTEX); + queryGeom->removePrimitiveSet(0, oqn->getQueryGeometry()->getNumPrimitiveSets()); +@@ -578,6 +584,10 @@ class Sun : public CelestialBody + // Still need a proper bounding sphere. + oqn->setInitialBound(queryGeom->getBound()); + ++#if OSG_VERSION_GREATER_OR_EQUAL(3, 6, 5) ++ oqn->setQueryGeometry(queryGeom.release()); ++#endif ++ + osg::StateSet* queryStateSet = new osg::StateSet; + if (queryVisible) + { diff --git a/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch new file mode 100644 index 000000000000..6b13291911ca --- /dev/null +++ b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch @@ -0,0 +1,21 @@ +From 7db58a893a1448b7229de5464696b3cc6eb7663c Mon Sep 17 00:00:00 2001 +From: Alexander Olofsson +Date: Thu, 13 Feb 2020 19:32:17 +0100 +Subject: [PATCH] Ensure osg/Version is included + +--- + apps/openmw/mwrender/sky.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp +index e13f5a7b65..7cf2af88d0 100644 +--- a/apps/openmw/mwrender/sky.cpp ++++ b/apps/openmw/mwrender/sky.cpp +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include + + #include diff --git a/games-engines/openmw/openmw-0.45.0.ebuild b/games-engines/openmw/openmw-0.45.0.ebuild index 54e986e845b9..755240fa1131 100644 --- a/games-engines/openmw/openmw-0.45.0.ebuild +++ b/games-engines/openmw/openmw-0.45.0.ebuild @@ -47,6 +47,8 @@ BDEPEND=" ) " +PATCHES=( "${FILESDIR}"/${P}-osg-3.6.5-{1,2}.patch ) # bug #709878 + S="${WORKDIR}/${PN}-${P}" src_prepare() { -- 2.26.2