summaryrefslogtreecommitdiff
path: root/games-engines/openmw/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2021-12-22 14:08:05 +0000
committerV3n3RiX <venerix@koprulu.sector>2021-12-22 14:08:05 +0000
commit93a93e9a3b53c1a73142a305ea1f8136846942ee (patch)
treeb9791a06ab3284e27b568412c59316c66240c682 /games-engines/openmw/files
parent2771f79232c273bc2a57d23bf335dd81ccf6af28 (diff)
gentoo resync : 22.12.2021
Diffstat (limited to 'games-engines/openmw/files')
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-boost-1.77.patch10
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-fix-cast.patch214
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-floattest2.patch139
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-gcc11.patch36
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-missing-include.patch19
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-mygui-license.patch16
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-nifbullet-test.patch335
-rw-r--r--games-engines/openmw/files/openmw-0.46.0-recastnavigation.patch24
8 files changed, 0 insertions, 793 deletions
diff --git a/games-engines/openmw/files/openmw-0.46.0-boost-1.77.patch b/games-engines/openmw/files/openmw-0.46.0-boost-1.77.patch
deleted file mode 100644
index 708fd9e9f52f..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-boost-1.77.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-https://bugs.gentoo.org/808763
-
---- a/components/vfs/filesystemarchive.cpp
-+++ b/components/vfs/filesystemarchive.cpp
-@@ -1,4 +1,5 @@
- #include "filesystemarchive.hpp"
-
-+#include <algorithm>
- #include <boost/filesystem.hpp>
-
diff --git a/games-engines/openmw/files/openmw-0.46.0-fix-cast.patch b/games-engines/openmw/files/openmw-0.46.0-fix-cast.patch
deleted file mode 100644
index f6e82cb3a2c9..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-fix-cast.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-Fixes build on ~arch system, patch from upstream, to be dropped for 0.47
-
-From 208a50340db5506dded60c05272ce9692773baa9 Mon Sep 17 00:00:00 2001
-From: elsid <elsid.mail@gmail.com>
-Date: Mon, 13 Apr 2020 20:45:07 +0200
-Subject: [PATCH] Specialize DetourNavigator::ObjectId ctor for pointers
-
-To fix msvc error:
-components\detournavigator\objectid.hpp(14,13): error C2440: 'reinterpret_cast': cannot convert from 'const T' to 'size_t'
- with
- [
- T=unsigned long
- ]
-diff --git a/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp b/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp
-index 5275d9119e..e44ae48786 100644
---- a/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp
-+++ b/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp
-@@ -61,15 +61,15 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- EXPECT_TRUE(manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
-+ EXPECT_TRUE(manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
- }
-
- TEST_F(DetourNavigatorTileCachedRecastMeshManagerTest, add_object_for_existing_object_should_return_false)
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-- EXPECT_FALSE(manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ EXPECT_FALSE(manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
- }
-
- TEST_F(DetourNavigatorTileCachedRecastMeshManagerTest, update_object_for_changed_object_should_return_changed_tiles)
-@@ -77,9 +77,9 @@ namespace
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
- const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
-- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
- EXPECT_THAT(
-- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
-+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
- ElementsAre(TilePosition(-1, -1), TilePosition(-1, 0), TilePosition(0, -1), TilePosition(0, 0),
- TilePosition(1, -1), TilePosition(1, 0))
- );
-@@ -89,9 +89,9 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_EQ(
-- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
-+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
- std::vector<TilePosition>()
- );
- }
-@@ -100,7 +100,7 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
-@@ -111,7 +111,7 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_EQ(manager.getMesh(TilePosition(1, 0)), nullptr);
- }
-
-@@ -121,13 +121,13 @@ namespace
- const btBoxShape boxShape(btVector3(20, 20, 100));
- const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
-
-- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
- EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(0, 0)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(1, 0)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(1, -1)), nullptr);
-
-- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
-@@ -140,11 +140,11 @@ namespace
- const btBoxShape boxShape(btVector3(20, 20, 100));
- const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
-
-- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
- EXPECT_EQ(manager.getMesh(TilePosition(-1, -1)), nullptr);
- EXPECT_EQ(manager.getMesh(TilePosition(-1, 0)), nullptr);
-
-- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_EQ(manager.getMesh(TilePosition(1, 0)), nullptr);
- EXPECT_EQ(manager.getMesh(TilePosition(1, -1)), nullptr);
- }
-@@ -153,8 +153,8 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-- manager.removeObject(ObjectId(1ul));
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.removeObject(ObjectId(&boxShape));
- EXPECT_EQ(manager.getMesh(TilePosition(-1, -1)), nullptr);
- EXPECT_EQ(manager.getMesh(TilePosition(-1, 0)), nullptr);
- EXPECT_EQ(manager.getMesh(TilePosition(0, -1)), nullptr);
-@@ -166,13 +166,13 @@ namespace
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(0, 0)), nullptr);
-
-- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
- EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
-@@ -184,7 +184,7 @@ namespace
- TileCachedRecastMeshManager manager(mSettings);
- const auto initialRevision = manager.getRevision();
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_EQ(manager.getRevision(), initialRevision + 1);
- }
-
-@@ -192,9 +192,9 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- const auto beforeAddRevision = manager.getRevision();
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_EQ(manager.getRevision(), beforeAddRevision);
- }
-
-@@ -203,9 +203,9 @@ namespace
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
- const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
-- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
- const auto beforeUpdateRevision = manager.getRevision();
-- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_EQ(manager.getRevision(), beforeUpdateRevision + 1);
- }
-
-@@ -213,9 +213,9 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- const auto beforeUpdateRevision = manager.getRevision();
-- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- EXPECT_EQ(manager.getRevision(), beforeUpdateRevision);
- }
-
-@@ -223,9 +223,9 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const btBoxShape boxShape(btVector3(20, 20, 100));
-- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
-+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
- const auto beforeRemoveRevision = manager.getRevision();
-- manager.removeObject(ObjectId(1ul));
-+ manager.removeObject(ObjectId(&boxShape));
- EXPECT_EQ(manager.getRevision(), beforeRemoveRevision + 1);
- }
-
-@@ -233,7 +233,7 @@ namespace
- {
- TileCachedRecastMeshManager manager(mSettings);
- const auto beforeRemoveRevision = manager.getRevision();
-- manager.removeObject(ObjectId(1ul));
-+ manager.removeObject(ObjectId(&manager));
- EXPECT_EQ(manager.getRevision(), beforeRemoveRevision);
- }
- }
-diff --git a/components/detournavigator/objectid.hpp b/components/detournavigator/objectid.hpp
-index 3b56924b13..6ddcc9169d 100644
---- a/components/detournavigator/objectid.hpp
-+++ b/components/detournavigator/objectid.hpp
-@@ -10,7 +10,7 @@ namespace DetourNavigator
- {
- public:
- template <class T>
-- explicit ObjectId(const T value) throw()
-+ explicit ObjectId(T* value) throw()
- : mValue(reinterpret_cast<std::size_t>(value))
- {
- }
diff --git a/games-engines/openmw/files/openmw-0.46.0-floattest2.patch b/games-engines/openmw/files/openmw-0.46.0-floattest2.patch
deleted file mode 100644
index ca6e355eab7d..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-floattest2.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-https://gitlab.com/OpenMW/openmw/-/merge_requests/253
-
---- a/apps/openmw_test_suite/detournavigator/navigator.cpp 2020-06-30 16:07:31.544410916 +0100
-+++ b/apps/openmw_test_suite/detournavigator/navigator.cpp 2020-06-30 16:08:50.405698937 +0100
-@@ -458,25 +458,25 @@
-
- EXPECT_EQ(mNavigator->findPath(mAgentHalfExtents, mStepSize, mStart, mEnd, Flag_swim, mAreaCosts, mOut), Status::Success);
-
-- EXPECT_EQ(mPath, std::deque<osg::Vec3f>({
-- osg::Vec3f(0, 215, 185.33331298828125),
-- osg::Vec3f(0, 186.6666717529296875, 185.33331298828125),
-- osg::Vec3f(0, 158.333343505859375, 185.33331298828125),
-- osg::Vec3f(0, 130.0000152587890625, 185.33331298828125),
-- osg::Vec3f(0, 101.66667938232421875, 185.33331298828125),
-- osg::Vec3f(0, 73.333343505859375, 185.33331298828125),
-- osg::Vec3f(0, 45.0000152587890625, 185.33331298828125),
-- osg::Vec3f(0, 16.6666812896728515625, 185.33331298828125),
-- osg::Vec3f(0, -11.66664981842041015625, 185.33331298828125),
-- osg::Vec3f(0, -39.999980926513671875, 185.33331298828125),
-- osg::Vec3f(0, -68.33331298828125, 185.33331298828125),
-- osg::Vec3f(0, -96.66664886474609375, 185.33331298828125),
-- osg::Vec3f(0, -124.99997711181640625, 185.33331298828125),
-- osg::Vec3f(0, -153.33331298828125, 185.33331298828125),
-- osg::Vec3f(0, -181.6666412353515625, 185.33331298828125),
-- osg::Vec3f(0, -209.999969482421875, 185.33331298828125),
-- osg::Vec3f(0, -215, 185.33331298828125),
-- })) << mPath;
-+ EXPECT_THAT(mPath, ElementsAre(
-+ Vec3fEq(0, 215, 185.33331298828125),
-+ Vec3fEq(0, 186.6666717529296875, 185.33331298828125),
-+ Vec3fEq(0, 158.333343505859375, 185.33331298828125),
-+ Vec3fEq(0, 130.0000152587890625, 185.33331298828125),
-+ Vec3fEq(0, 101.66667938232421875, 185.33331298828125),
-+ Vec3fEq(0, 73.333343505859375, 185.33331298828125),
-+ Vec3fEq(0, 45.0000152587890625, 185.33331298828125),
-+ Vec3fEq(0, 16.6666812896728515625, 185.33331298828125),
-+ Vec3fEq(0, -11.66664981842041015625, 185.33331298828125),
-+ Vec3fEq(0, -39.999980926513671875, 185.33331298828125),
-+ Vec3fEq(0, -68.33331298828125, 185.33331298828125),
-+ Vec3fEq(0, -96.66664886474609375, 185.33331298828125),
-+ Vec3fEq(0, -124.99997711181640625, 185.33331298828125),
-+ Vec3fEq(0, -153.33331298828125, 185.33331298828125),
-+ Vec3fEq(0, -181.6666412353515625, 185.33331298828125),
-+ Vec3fEq(0, -209.999969482421875, 185.33331298828125),
-+ Vec3fEq(0, -215, 185.33331298828125)
-+ ));
- }
-
- TEST_F(DetourNavigatorNavigatorTest, path_should_be_over_water_when_ground_cross_water_with_swim_and_walk_flags)
-@@ -505,25 +505,25 @@
- EXPECT_EQ(mNavigator->findPath(mAgentHalfExtents, mStepSize, mStart, mEnd, Flag_swim | Flag_walk, mAreaCosts, mOut),
- Status::Success);
-
-- EXPECT_EQ(mPath, std::deque<osg::Vec3f>({
-- osg::Vec3f(0, 215, -94.75363922119140625),
-- osg::Vec3f(0, 186.6666717529296875, -106.0000152587890625),
-- osg::Vec3f(0, 158.333343505859375, -115.85507965087890625),
-- osg::Vec3f(0, 130.0000152587890625, -125.71016693115234375),
-- osg::Vec3f(0, 101.66667938232421875, -135.5652313232421875),
-- osg::Vec3f(0, 73.333343505859375, -143.3333587646484375),
-- osg::Vec3f(0, 45.0000152587890625, -143.3333587646484375),
-- osg::Vec3f(0, 16.6666812896728515625, -143.3333587646484375),
-- osg::Vec3f(0, -11.66664981842041015625, -143.3333587646484375),
-- osg::Vec3f(0, -39.999980926513671875, -143.3333587646484375),
-- osg::Vec3f(0, -68.33331298828125, -143.3333587646484375),
-- osg::Vec3f(0, -96.66664886474609375, -137.3043670654296875),
-- osg::Vec3f(0, -124.99997711181640625, -127.44930267333984375),
-- osg::Vec3f(0, -153.33331298828125, -117.59423065185546875),
-- osg::Vec3f(0, -181.6666412353515625, -107.73915863037109375),
-- osg::Vec3f(0, -209.999969482421875, -97.7971343994140625),
-- osg::Vec3f(0, -215, -94.75363922119140625),
-- })) << mPath;
-+ EXPECT_THAT(mPath, ElementsAre(
-+ Vec3fEq(0, 215, -94.75363922119140625),
-+ Vec3fEq(0, 186.6666717529296875, -106.0000152587890625),
-+ Vec3fEq(0, 158.333343505859375, -115.85507965087890625),
-+ Vec3fEq(0, 130.0000152587890625, -125.71016693115234375),
-+ Vec3fEq(0, 101.66667938232421875, -135.5652313232421875),
-+ Vec3fEq(0, 73.333343505859375, -143.3333587646484375),
-+ Vec3fEq(0, 45.0000152587890625, -143.3333587646484375),
-+ Vec3fEq(0, 16.6666812896728515625, -143.3333587646484375),
-+ Vec3fEq(0, -11.66664981842041015625, -143.3333587646484375),
-+ Vec3fEq(0, -39.999980926513671875, -143.3333587646484375),
-+ Vec3fEq(0, -68.33331298828125, -143.3333587646484375),
-+ Vec3fEq(0, -96.66664886474609375, -137.3043670654296875),
-+ Vec3fEq(0, -124.99997711181640625, -127.44930267333984375),
-+ Vec3fEq(0, -153.33331298828125, -117.59423065185546875),
-+ Vec3fEq(0, -181.6666412353515625, -107.73915863037109375),
-+ Vec3fEq(0, -209.999969482421875, -97.7971343994140625),
-+ Vec3fEq(0, -215, -94.75363922119140625)
-+ ));
- }
-
- TEST_F(DetourNavigatorNavigatorTest, path_should_be_over_water_when_ground_cross_water_with_max_int_cells_size_and_swim_and_walk_flags)
-@@ -552,25 +552,25 @@
- EXPECT_EQ(mNavigator->findPath(mAgentHalfExtents, mStepSize, mStart, mEnd, Flag_swim | Flag_walk, mAreaCosts, mOut),
- Status::Success);
-
-- EXPECT_EQ(mPath, std::deque<osg::Vec3f>({
-- osg::Vec3f(0, 215, -94.75363922119140625),
-- osg::Vec3f(0, 186.6666717529296875, -106.0000152587890625),
-- osg::Vec3f(0, 158.333343505859375, -115.85507965087890625),
-- osg::Vec3f(0, 130.0000152587890625, -125.71016693115234375),
-- osg::Vec3f(0, 101.66667938232421875, -135.5652313232421875),
-- osg::Vec3f(0, 73.333343505859375, -143.3333587646484375),
-- osg::Vec3f(0, 45.0000152587890625, -143.3333587646484375),
-- osg::Vec3f(0, 16.6666812896728515625, -143.3333587646484375),
-- osg::Vec3f(0, -11.66664981842041015625, -143.3333587646484375),
-- osg::Vec3f(0, -39.999980926513671875, -143.3333587646484375),
-- osg::Vec3f(0, -68.33331298828125, -143.3333587646484375),
-- osg::Vec3f(0, -96.66664886474609375, -137.3043670654296875),
-- osg::Vec3f(0, -124.99997711181640625, -127.44930267333984375),
-- osg::Vec3f(0, -153.33331298828125, -117.59423065185546875),
-- osg::Vec3f(0, -181.6666412353515625, -107.73915863037109375),
-- osg::Vec3f(0, -209.999969482421875, -97.7971343994140625),
-- osg::Vec3f(0, -215, -94.75363922119140625),
-- })) << mPath;
-+ EXPECT_THAT(mPath, ElementsAre(
-+ Vec3fEq(0, 215, -94.75363922119140625),
-+ Vec3fEq(0, 186.6666717529296875, -106.0000152587890625),
-+ Vec3fEq(0, 158.333343505859375, -115.85507965087890625),
-+ Vec3fEq(0, 130.0000152587890625, -125.71016693115234375),
-+ Vec3fEq(0, 101.66667938232421875, -135.5652313232421875),
-+ Vec3fEq(0, 73.333343505859375, -143.3333587646484375),
-+ Vec3fEq(0, 45.0000152587890625, -143.3333587646484375),
-+ Vec3fEq(0, 16.6666812896728515625, -143.3333587646484375),
-+ Vec3fEq(0, -11.66664981842041015625, -143.3333587646484375),
-+ Vec3fEq(0, -39.999980926513671875, -143.3333587646484375),
-+ Vec3fEq(0, -68.33331298828125, -143.3333587646484375),
-+ Vec3fEq(0, -96.66664886474609375, -137.3043670654296875),
-+ Vec3fEq(0, -124.99997711181640625, -127.44930267333984375),
-+ Vec3fEq(0, -153.33331298828125, -117.59423065185546875),
-+ Vec3fEq(0, -181.6666412353515625, -107.73915863037109375),
-+ Vec3fEq(0, -209.999969482421875, -97.7971343994140625),
-+ Vec3fEq(0, -215, -94.75363922119140625)
-+ ));
- }
-
- TEST_F(DetourNavigatorNavigatorTest, path_should_be_over_ground_when_ground_cross_water_with_only_walk_flag)
diff --git a/games-engines/openmw/files/openmw-0.46.0-gcc11.patch b/games-engines/openmw/files/openmw-0.46.0-gcc11.patch
deleted file mode 100644
index 0dc3106fb3bf..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-gcc11.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff --git a/components/sceneutil/mwshadowtechnique.cpp b/components/sceneutil/mwshadowtechnique.cpp
-index cb3a1b2..62cfeec 100644
---- a/components/sceneutil/mwshadowtechnique.cpp
-+++ b/components/sceneutil/mwshadowtechnique.cpp
-@@ -24,6 +24,7 @@
- #include <osg/io_utils>
-
- #include <sstream>
-+#include <limits>
-
- namespace {
-
-diff --git a/components/sceneutil/shadow.cpp b/components/sceneutil/shadow.cpp
-index 035c19a..aba1b81 100644
---- a/components/sceneutil/shadow.cpp
-+++ b/components/sceneutil/shadow.cpp
-@@ -4,6 +4,7 @@
-
- #include <components/sceneutil/vismask.hpp>
- #include <components/settings/settings.hpp>
-+#include <limits>
-
- namespace SceneUtil
- {
-diff --git a/components/terrain/quadtreeworld.cpp b/components/terrain/quadtreeworld.cpp
-index f998b78..e0e47dd 100644
---- a/components/terrain/quadtreeworld.cpp
-+++ b/components/terrain/quadtreeworld.cpp
-@@ -3,6 +3,7 @@
- #include <osgUtil/CullVisitor>
-
- #include <sstream>
-+#include <limits>
-
- #include <components/misc/constants.hpp>
- #include <components/sceneutil/mwshadowtechnique.hpp>
diff --git a/games-engines/openmw/files/openmw-0.46.0-missing-include.patch b/games-engines/openmw/files/openmw-0.46.0-missing-include.patch
deleted file mode 100644
index 803707498e43..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-missing-include.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Fixes build on ~arch system, patch from upstream, to be dropped for 0.47
-
-From 10daadefbea1f62a818c339dc7f3d69a858bc8a6 Mon Sep 17 00:00:00 2001
-From: elsid <elsid.mail@gmail.com>
-Date: Thu, 30 Apr 2020 21:57:22 +0200
-Subject: [PATCH] Add missing include
-
-diff --git a/components/detournavigator/offmeshconnectionsmanager.hpp b/components/detournavigator/offmeshconnectionsmanager.hpp
-index 30d7976aec..155ce32963 100644
---- a/components/detournavigator/offmeshconnectionsmanager.hpp
-+++ b/components/detournavigator/offmeshconnectionsmanager.hpp
-@@ -13,6 +13,7 @@
-
- #include <boost/optional.hpp>
-
-+#include <algorithm>
- #include <map>
- #include <mutex>
- #include <unordered_map>
diff --git a/games-engines/openmw/files/openmw-0.46.0-mygui-license.patch b/games-engines/openmw/files/openmw-0.46.0-mygui-license.patch
deleted file mode 100644
index a14f58bc9e79..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-mygui-license.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-We don't install license files
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index d69352c94..5f97c86e9 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -470,9 +470,6 @@ IF(NOT WIN32 AND NOT APPLE)
- # INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Plugin_MyGUI_OpenMW_Resources.so" DESTINATION "${LIBDIR}" )
- #ENDIF(BUILD_MYGUI_PLUGIN)
-
-- # Install licenses
-- INSTALL(FILES "files/mygui/DejaVu Font License.txt" DESTINATION "${LICDIR}" )
--
- # Install icon and desktop file
- INSTALL(FILES "${OpenMW_BINARY_DIR}/org.openmw.launcher.desktop" DESTINATION "${DATAROOTDIR}/applications" COMPONENT "openmw")
- INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/launcher/images/openmw.png" DESTINATION "${ICONDIR}" COMPONENT "openmw")
diff --git a/games-engines/openmw/files/openmw-0.46.0-nifbullet-test.patch b/games-engines/openmw/files/openmw-0.46.0-nifbullet-test.patch
deleted file mode 100644
index 315b0753589d..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-nifbullet-test.patch
+++ /dev/null
@@ -1,335 +0,0 @@
-Fixes test on i686 system, patch from upstream, to be dropped for 0.47
-
-From 14d0ca4cd3e9aa9e329590913d5f8fb55077587d Mon Sep 17 00:00:00 2001
-From: elsid <elsid.mail@gmail.com>
-Date: Sun, 25 Nov 2018 11:42:26 +0300
-Subject: [PATCH 1/4] Cast float to btScalar
-
----
- .../detournavigator/recastmeshbuilder.cpp | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/components/detournavigator/recastmeshbuilder.cpp b/components/detournavigator/recastmeshbuilder.cpp
-index d96ba2f29c..f613683571 100644
---- a/components/detournavigator/recastmeshbuilder.cpp
-+++ b/components/detournavigator/recastmeshbuilder.cpp
-@@ -163,15 +163,15 @@ namespace DetourNavigator
-
- transformBoundingBox(transform, aabbMin, aabbMax);
-
-- aabbMin.setX(std::max(mBounds.mMin.x(), aabbMin.x()));
-- aabbMin.setX(std::min(mBounds.mMax.x(), aabbMin.x()));
-- aabbMin.setY(std::max(mBounds.mMin.y(), aabbMin.y()));
-- aabbMin.setY(std::min(mBounds.mMax.y(), aabbMin.y()));
--
-- aabbMax.setX(std::max(mBounds.mMin.x(), aabbMax.x()));
-- aabbMax.setX(std::min(mBounds.mMax.x(), aabbMax.x()));
-- aabbMax.setY(std::max(mBounds.mMin.y(), aabbMax.y()));
-- aabbMax.setY(std::min(mBounds.mMax.y(), aabbMax.y()));
-+ aabbMin.setX(std::max(static_cast<btScalar>(mBounds.mMin.x()), aabbMin.x()));
-+ aabbMin.setX(std::min(static_cast<btScalar>(mBounds.mMax.x()), aabbMin.x()));
-+ aabbMin.setY(std::max(static_cast<btScalar>(mBounds.mMin.y()), aabbMin.y()));
-+ aabbMin.setY(std::min(static_cast<btScalar>(mBounds.mMax.y()), aabbMin.y()));
-+
-+ aabbMax.setX(std::max(static_cast<btScalar>(mBounds.mMin.x()), aabbMax.x()));
-+ aabbMax.setX(std::min(static_cast<btScalar>(mBounds.mMax.x()), aabbMax.x()));
-+ aabbMax.setY(std::max(static_cast<btScalar>(mBounds.mMin.y()), aabbMax.y()));
-+ aabbMax.setY(std::min(static_cast<btScalar>(mBounds.mMax.y()), aabbMax.y()));
-
- transformBoundingBox(transform.inverse(), aabbMin, aabbMax);
-
-
-From ef5a5ef43f9a91795339ef3ea97c505c1e9dc28d Mon Sep 17 00:00:00 2001
-From: elsid <elsid.mail@gmail.com>
-Date: Sun, 25 Nov 2018 14:03:28 +0300
-Subject: [PATCH 2/4] Print not matched values with full precision
-
----
- .../detournavigator/operators.hpp | 62 +++++++++++++++----
- 1 file changed, 51 insertions(+), 11 deletions(-)
-
-diff --git a/apps/openmw_test_suite/detournavigator/operators.hpp b/apps/openmw_test_suite/detournavigator/operators.hpp
-index a473632bab..e34d6278a7 100644
---- a/apps/openmw_test_suite/detournavigator/operators.hpp
-+++ b/apps/openmw_test_suite/detournavigator/operators.hpp
-@@ -20,22 +20,62 @@ namespace DetourNavigator
- }
- }
-
-+namespace
-+{
-+ template <class T>
-+ struct Wrapper {
-+ const T& mValue;
-+ };
-+
-+ template <class Range>
-+ inline testing::Message& writeRange(testing::Message& message, const Range& range)
-+ {
-+ message << "{\n";
-+ for (const auto& v : range)
-+ message << Wrapper<typename std::decay<decltype(v)>::type> {v} << ",\n";
-+ return message << "}";
-+ }
-+}
-+
- namespace testing
- {
-+ template <>
-+ inline testing::Message& Message::operator <<(const osg::Vec3f& value)
-+ {
-+ return (*this) << "osg::Vec3f(" << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.x()
-+ << ", " << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.y()
-+ << ", " << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.z()
-+ << ')';
-+ }
-+
-+ template <>
-+ inline testing::Message& Message::operator <<(const Wrapper<osg::Vec3f>& value)
-+ {
-+ return (*this) << value.mValue;
-+ }
-+
-+ template <>
-+ inline testing::Message& Message::operator <<(const Wrapper<float>& value)
-+ {
-+ return (*this) << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.mValue;
-+ }
-+
- template <>
- inline testing::Message& Message::operator <<(const std::deque<osg::Vec3f>& value)
- {
-- (*this) << "{\n";
-- for (const auto& v : value)
-- {
-- std::ostringstream stream;
-- stream << "osg::Vec3f("
-- << std::setprecision(std::numeric_limits<float>::max_exponent10) << v.x() << ", "
-- << std::setprecision(std::numeric_limits<float>::max_exponent10) << v.y() << ", "
-- << std::setprecision(std::numeric_limits<float>::max_exponent10) << v.z() << ")";
-- (*this) << stream.str() << ",\n";
-- }
-- return (*this) << "}";
-+ return writeRange(*this, value);
-+ }
-+
-+ template <>
-+ inline testing::Message& Message::operator <<(const std::vector<osg::Vec3f>& value)
-+ {
-+ return writeRange(*this, value);
-+ }
-+
-+ template <>
-+ inline testing::Message& Message::operator <<(const std::vector<float>& value)
-+ {
-+ return writeRange(*this, value);
- }
- }
-
-
-From 2d7c3bae6127fc3717d5e3a8e8830215450fb47f Mon Sep 17 00:00:00 2001
-From: elsid <elsid.mail@gmail.com>
-Date: Sun, 25 Nov 2018 11:46:09 +0300
-Subject: [PATCH 3/4] Support bullet with double precision
-
----
- apps/openmw/mwphysics/heightfield.cpp | 38 ++++++++++++++++++-
- apps/openmw/mwphysics/heightfield.hpp | 5 +++
- .../detournavigator/recastmeshbuilder.cpp | 4 +-
- .../nifloader/testbulletnifloader.cpp | 36 ++++++++++++++++--
- 4 files changed, 77 insertions(+), 6 deletions(-)
-
-diff --git a/apps/openmw/mwphysics/heightfield.cpp b/apps/openmw/mwphysics/heightfield.cpp
-index 52aed9c072..e1448116bf 100644
---- a/apps/openmw/mwphysics/heightfield.cpp
-+++ b/apps/openmw/mwphysics/heightfield.cpp
-@@ -7,12 +7,48 @@
-
- #include <LinearMath/btTransform.h>
-
-+#include <type_traits>
-+
-+namespace
-+{
-+ template <class T>
-+ auto makeHeights(const T* heights, float sqrtVerts)
-+ -> std::enable_if_t<std::is_same<btScalar, T>::value, std::vector<btScalar>>
-+ {
-+ return {};
-+ }
-+
-+ template <class T>
-+ auto makeHeights(const T* heights, float sqrtVerts)
-+ -> std::enable_if_t<!std::is_same<btScalar, T>::value, std::vector<btScalar>>
-+ {
-+ return std::vector<btScalar>(heights, heights + static_cast<std::ptrdiff_t>(sqrtVerts * sqrtVerts));
-+ }
-+
-+ template <class T>
-+ auto getHeights(const T* floatHeights, const std::vector<btScalar>&)
-+ -> std::enable_if_t<std::is_same<btScalar, T>::value, const btScalar*>
-+ {
-+ return floatHeights;
-+ }
-+
-+ template <class T>
-+ auto getHeights(const T*, const std::vector<btScalar>& btScalarHeights)
-+ -> std::enable_if_t<!std::is_same<btScalar, T>::value, const btScalar*>
-+ {
-+ return btScalarHeights.data();
-+ }
-+}
-+
- namespace MWPhysics
- {
- HeightField::HeightField(const float* heights, int x, int y, float triSize, float sqrtVerts, float minH, float maxH, const osg::Object* holdObject)
-+ : mHeights(makeHeights(heights, sqrtVerts))
- {
- mShape = new btHeightfieldTerrainShape(
-- sqrtVerts, sqrtVerts, heights, 1,
-+ sqrtVerts, sqrtVerts,
-+ getHeights(heights, mHeights),
-+ 1,
- minH, maxH, 2,
- PHY_FLOAT, false
- );
-diff --git a/apps/openmw/mwphysics/heightfield.hpp b/apps/openmw/mwphysics/heightfield.hpp
-index f248186db3..2ba58afff8 100644
---- a/apps/openmw/mwphysics/heightfield.hpp
-+++ b/apps/openmw/mwphysics/heightfield.hpp
-@@ -3,6 +3,10 @@
-
- #include <osg/ref_ptr>
-
-+#include <LinearMath/btScalar.h>
-+
-+#include <vector>
-+
- class btCollisionObject;
- class btHeightfieldTerrainShape;
-
-@@ -27,6 +31,7 @@ namespace MWPhysics
- btHeightfieldTerrainShape* mShape;
- btCollisionObject* mCollisionObject;
- osg::ref_ptr<const osg::Object> mHoldObject;
-+ std::vector<btScalar> mHeights;
-
- void operator=(const HeightField&);
- HeightField(const HeightField&);
-diff --git a/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp b/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp
-index 6c474765de..c86dee6e55 100644
---- a/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp
-+++ b/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp
-@@ -363,11 +363,11 @@ namespace
- AreaType_ground
- );
- const auto recastMesh = builder.create(mGeneration, mRevision);
-- EXPECT_EQ(recastMesh->getVertices(), std::vector<float>({
-+ EXPECT_THAT(recastMesh->getVertices(), Pointwise(FloatNear(1e-5), std::vector<float>({
- 1.41421353816986083984375, 0, 1.1920928955078125e-07,
- -1.41421353816986083984375, 0, -1.1920928955078125e-07,
- 1.1920928955078125e-07, 0, -1.41421353816986083984375,
-- }));
-+ })));
- EXPECT_EQ(recastMesh->getIndices(), std::vector<int>({0, 1, 2}));
- EXPECT_EQ(recastMesh->getAreaTypes(), std::vector<AreaType>({AreaType_ground}));
- }
-diff --git a/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp b/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp
-index 36f2512462..6ec94fd68f 100644
---- a/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp
-+++ b/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp
-@@ -9,6 +9,8 @@
- #include <gtest/gtest.h>
- #include <gmock/gmock.h>
-
-+#include <algorithm>
-+
- namespace
- {
- template <class T>
-@@ -30,6 +32,34 @@ namespace
- shape.processAllTriangles(&callback, aabbMin, aabbMax);
- return result;
- }
-+
-+ bool isNear(btScalar lhs, btScalar rhs)
-+ {
-+ return std::abs(lhs - rhs) <= 1e-5;
-+ }
-+
-+ bool isNear(const btVector3& lhs, const btVector3& rhs)
-+ {
-+ return std::equal(
-+ static_cast<const btScalar*>(lhs),
-+ static_cast<const btScalar*>(lhs) + 3,
-+ static_cast<const btScalar*>(rhs),
-+ [] (btScalar lhs, btScalar rhs) { return isNear(lhs, rhs); }
-+ );
-+ }
-+
-+ bool isNear(const btMatrix3x3& lhs, const btMatrix3x3& rhs)
-+ {
-+ for (int i = 0; i < 3; ++i)
-+ if (!isNear(lhs[i], rhs[i]))
-+ return false;
-+ return true;
-+ }
-+
-+ bool isNear(const btTransform& lhs, const btTransform& rhs)
-+ {
-+ return isNear(lhs.getOrigin(), rhs.getOrigin()) && isNear(lhs.getBasis(), rhs.getBasis());
-+ }
- }
-
- static std::ostream& operator <<(std::ostream& stream, const btVector3& value)
-@@ -157,7 +187,7 @@ static bool operator ==(const btCompoundShape& lhs, const btCompoundShape& rhs)
- for (int i = 0; i < lhs.getNumChildShapes(); ++i)
- {
- if (!compareObjects(lhs.getChildShape(i), rhs.getChildShape(i))
-- || !(lhs.getChildTransform(i) == rhs.getChildTransform(i)))
-+ || !isNear(lhs.getChildTransform(i), rhs.getChildTransform(i)))
- return false;
- }
- return true;
-@@ -165,13 +195,13 @@ static bool operator ==(const btCompoundShape& lhs, const btCompoundShape& rhs)
-
- static bool operator ==(const btBoxShape& lhs, const btBoxShape& rhs)
- {
-- return lhs.getLocalScaling() == rhs.getLocalScaling()
-+ return isNear(lhs.getLocalScaling(), rhs.getLocalScaling())
- && lhs.getHalfExtentsWithoutMargin() == rhs.getHalfExtentsWithoutMargin();
- }
-
- static bool operator ==(const btBvhTriangleMeshShape& lhs, const btBvhTriangleMeshShape& rhs)
- {
-- return lhs.getLocalScaling() == rhs.getLocalScaling()
-+ return isNear(lhs.getLocalScaling(), rhs.getLocalScaling())
- && lhs.usesQuantizedAabbCompression() == rhs.usesQuantizedAabbCompression()
- && lhs.getOwnsBvh() == rhs.getOwnsBvh()
- && getTriangles(lhs) == getTriangles(rhs);
-
-From 66da72048a5893bc8c9b20f6f7210fd45b6a74bf Mon Sep 17 00:00:00 2001
-From: elsid <elsid.mail@gmail.com>
-Date: Wed, 20 Feb 2019 23:41:16 +0300
-Subject: [PATCH 4/4] Update bullet for windows up to 2.87
-
----
- CI/before_script.msvc.sh | 12 ++++++------
- appveyor.yml | 4 ++--
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/appveyor.yml b/appveyor.yml
-index 3057cc7257..e2c13ed948 100644
---- a/appveyor.yml
-+++ b/appveyor.yml
-@@ -30,8 +30,8 @@ configuration:
- clone_depth: 1
-
- cache:
-- - C:\projects\openmw\deps\Bullet-2.86-msvc2015-win32.7z
-- - C:\projects\openmw\deps\Bullet-2.86-msvc2015-win64.7z
-+ - C:\projects\openmw\deps\Bullet-2.87-msvc2015-win32.7z
-+ - C:\projects\openmw\deps\Bullet-2.87-msvc2015-win64.7z
- - C:\projects\openmw\deps\MyGUI-3.2.2-msvc2015-win32.7z
- - C:\projects\openmw\deps\MyGUI-3.2.2-msvc2015-win64.7z
- - C:\projects\openmw\deps\OSG-3.4.1-scrawl-msvc2015-win32.7z
diff --git a/games-engines/openmw/files/openmw-0.46.0-recastnavigation.patch b/games-engines/openmw/files/openmw-0.46.0-recastnavigation.patch
deleted file mode 100644
index ea3242d73ca8..000000000000
--- a/games-engines/openmw/files/openmw-0.46.0-recastnavigation.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Use system recastnavigation instead of bundled one
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index d69352c94..cfb53dc5b 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -596,7 +596,16 @@ endif(WIN32)
- # Extern
- set(RECASTNAVIGATION_STATIC ON CACHE BOOL "Build recastnavigation static libraries")
-
--add_subdirectory (extern/recastnavigation EXCLUDE_FROM_ALL)
-+add_library(RecastNavigation::DebugUtils SHARED IMPORTED)
-+add_library(RecastNavigation::Detour SHARED IMPORTED)
-+add_library(RecastNavigation::Recast SHARED IMPORTED)
-+set_target_properties(RecastNavigation::DebugUtils PROPERTIES
-+ IMPORTED_LOCATION GENTOO_RECAST_LIBDIR/libDebugUtils.so)
-+set_target_properties(RecastNavigation::Detour PROPERTIES
-+ IMPORTED_LOCATION GENTOO_RECAST_LIBDIR/libDetour.so)
-+set_target_properties(RecastNavigation::Recast PROPERTIES
-+ IMPORTED_LOCATION GENTOO_RECAST_LIBDIR/libRecast.so)
-+
- add_subdirectory (extern/osg-ffmpeg-videoplayer)
- add_subdirectory (extern/oics)
- if (BUILD_OPENCS)