Gentoo Archives: gentoo-commits

From: David Seifert <soap@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: games-engines/openmw/, games-engines/openmw/files/
Date: Mon, 06 Dec 2021 10:40:44
Message-Id: 1638787228.7d9a09fdbbac2bcaaeb79ce9cc4d852f7f656101.soap@gentoo
1 commit: 7d9a09fdbbac2bcaaeb79ce9cc4d852f7f656101
2 Author: Alexey Sokolov <alexey+gentoo <AT> asokolov <DOT> org>
3 AuthorDate: Mon Dec 6 10:40:28 2021 +0000
4 Commit: David Seifert <soap <AT> gentoo <DOT> org>
5 CommitDate: Mon Dec 6 10:40:28 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7d9a09fd
7
8 games-engines/openmw: drop old
9
10 Closes: https://github.com/gentoo/gentoo/pull/23194
11 Closes: https://bugs.gentoo.org/794538
12 Package-Manager: Portage-3.0.28, Repoman-3.0.3
13 Signed-off-by: Alexey Sokolov <alexey+gentoo <AT> asokolov.org>
14 Signed-off-by: David Seifert <soap <AT> gentoo.org>
15
16 games-engines/openmw/Manifest | 2 -
17 .../openmw/files/openmw-0.46.0-boost-1.77.patch | 10 -
18 .../openmw/files/openmw-0.46.0-fix-cast.patch | 214 -------------
19 .../openmw/files/openmw-0.46.0-floattest2.patch | 139 ---------
20 .../openmw/files/openmw-0.46.0-gcc11.patch | 36 ---
21 .../files/openmw-0.46.0-missing-include.patch | 19 --
22 .../openmw/files/openmw-0.46.0-mygui-license.patch | 16 -
23 .../files/openmw-0.46.0-nifbullet-test.patch | 335 ---------------------
24 .../files/openmw-0.46.0-recastnavigation.patch | 24 --
25 games-engines/openmw/openmw-0.46.0-r2.ebuild | 163 ----------
26 10 files changed, 958 deletions(-)
27
28 diff --git a/games-engines/openmw/Manifest b/games-engines/openmw/Manifest
29 index 088a9b8fd26c..607fa30988f1 100644
30 --- a/games-engines/openmw/Manifest
31 +++ b/games-engines/openmw/Manifest
32 @@ -1,3 +1 @@
33 -DIST openmw-0.46.0-floattest.patch 43168 BLAKE2B 060b529fd4cd01f0fc723bb5a00a256b9c1ae4413c7b22581467cce75416e01041c3af22f0215ad9b1c475965a988065e0860c01c1e71d97454b022eec4779ea SHA512 0e165417e9ae047231fdc27b62251b33867f3782c1753f81705c886d6d3a433c8bbc3b4653a2555bc644bad11db9769d4bc2abcc84ca3ab23fabb6b80347bc32
34 -DIST openmw-0.46.0.tar.gz 5155004 BLAKE2B 8ad94a7fffe5a0739c56c778efe2ec17ef66c312a7fe5caf015cf3cad2bc17d2abe8cdc3f4134049a32fe55c4f4b3f72678d2d0ce1037fd02f6ac753b9d89b2c SHA512 da384aead300552817c0d0ce03515a5ccc95dcab4e02d4c1dd0d6c5f1b01ee01209bbaea74e2d12021e3465e49b051823bb018de39675c5a22c6892893624486
35 DIST openmw-0.47.0.tar.gz 5156857 BLAKE2B 40e8b9670423259fa0cc03ef000c17ebe06d1d58c2527b51b25cea3b54978b8a698984371eac14ff212f9550253ab17d41b83d37426371f12f5ce2d30b240d3d SHA512 517e650d0054cdba8d38de05ed3975b0fcf8de32fda59c8df7c34b973e5390efa0dd9ec79babdfdaa79dee7aa8a75009776f62fad91b9aa9aa28016c5032652b
36
37 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
38 deleted file mode 100644
39 index 708fd9e9f52f..000000000000
40 --- a/games-engines/openmw/files/openmw-0.46.0-boost-1.77.patch
41 +++ /dev/null
42 @@ -1,10 +0,0 @@
43 -https://bugs.gentoo.org/808763
44 -
45 ---- a/components/vfs/filesystemarchive.cpp
46 -+++ b/components/vfs/filesystemarchive.cpp
47 -@@ -1,4 +1,5 @@
48 - #include "filesystemarchive.hpp"
49 -
50 -+#include <algorithm>
51 - #include <boost/filesystem.hpp>
52 -
53
54 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
55 deleted file mode 100644
56 index f6e82cb3a2c9..000000000000
57 --- a/games-engines/openmw/files/openmw-0.46.0-fix-cast.patch
58 +++ /dev/null
59 @@ -1,214 +0,0 @@
60 -Fixes build on ~arch system, patch from upstream, to be dropped for 0.47
61 -
62 -From 208a50340db5506dded60c05272ce9692773baa9 Mon Sep 17 00:00:00 2001
63 -From: elsid <elsid.mail@×××××.com>
64 -Date: Mon, 13 Apr 2020 20:45:07 +0200
65 -Subject: [PATCH] Specialize DetourNavigator::ObjectId ctor for pointers
66 -
67 -To fix msvc error:
68 -components\detournavigator\objectid.hpp(14,13): error C2440: 'reinterpret_cast': cannot convert from 'const T' to 'size_t'
69 - with
70 - [
71 - T=unsigned long
72 - ]
73 -diff --git a/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp b/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp
74 -index 5275d9119e..e44ae48786 100644
75 ---- a/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp
76 -+++ b/apps/openmw_test_suite/detournavigator/tilecachedrecastmeshmanager.cpp
77 -@@ -61,15 +61,15 @@ namespace
78 - {
79 - TileCachedRecastMeshManager manager(mSettings);
80 - const btBoxShape boxShape(btVector3(20, 20, 100));
81 -- EXPECT_TRUE(manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
82 -+ EXPECT_TRUE(manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
83 - }
84 -
85 - TEST_F(DetourNavigatorTileCachedRecastMeshManagerTest, add_object_for_existing_object_should_return_false)
86 - {
87 - TileCachedRecastMeshManager manager(mSettings);
88 - const btBoxShape boxShape(btVector3(20, 20, 100));
89 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
90 -- EXPECT_FALSE(manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
91 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
92 -+ EXPECT_FALSE(manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground));
93 - }
94 -
95 - TEST_F(DetourNavigatorTileCachedRecastMeshManagerTest, update_object_for_changed_object_should_return_changed_tiles)
96 -@@ -77,9 +77,9 @@ namespace
97 - TileCachedRecastMeshManager manager(mSettings);
98 - const btBoxShape boxShape(btVector3(20, 20, 100));
99 - const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
100 -- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
101 -+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
102 - EXPECT_THAT(
103 -- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
104 -+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
105 - ElementsAre(TilePosition(-1, -1), TilePosition(-1, 0), TilePosition(0, -1), TilePosition(0, 0),
106 - TilePosition(1, -1), TilePosition(1, 0))
107 - );
108 -@@ -89,9 +89,9 @@ namespace
109 - {
110 - TileCachedRecastMeshManager manager(mSettings);
111 - const btBoxShape boxShape(btVector3(20, 20, 100));
112 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
113 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
114 - EXPECT_EQ(
115 -- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
116 -+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground),
117 - std::vector<TilePosition>()
118 - );
119 - }
120 -@@ -100,7 +100,7 @@ namespace
121 - {
122 - TileCachedRecastMeshManager manager(mSettings);
123 - const btBoxShape boxShape(btVector3(20, 20, 100));
124 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
125 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
126 - EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
127 - EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
128 - EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
129 -@@ -111,7 +111,7 @@ namespace
130 - {
131 - TileCachedRecastMeshManager manager(mSettings);
132 - const btBoxShape boxShape(btVector3(20, 20, 100));
133 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
134 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
135 - EXPECT_EQ(manager.getMesh(TilePosition(1, 0)), nullptr);
136 - }
137 -
138 -@@ -121,13 +121,13 @@ namespace
139 - const btBoxShape boxShape(btVector3(20, 20, 100));
140 - const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
141 -
142 -- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
143 -+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
144 - EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
145 - EXPECT_NE(manager.getMesh(TilePosition(0, 0)), nullptr);
146 - EXPECT_NE(manager.getMesh(TilePosition(1, 0)), nullptr);
147 - EXPECT_NE(manager.getMesh(TilePosition(1, -1)), nullptr);
148 -
149 -- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
150 -+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
151 - EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
152 - EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
153 - EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
154 -@@ -140,11 +140,11 @@ namespace
155 - const btBoxShape boxShape(btVector3(20, 20, 100));
156 - const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
157 -
158 -- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
159 -+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
160 - EXPECT_EQ(manager.getMesh(TilePosition(-1, -1)), nullptr);
161 - EXPECT_EQ(manager.getMesh(TilePosition(-1, 0)), nullptr);
162 -
163 -- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
164 -+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
165 - EXPECT_EQ(manager.getMesh(TilePosition(1, 0)), nullptr);
166 - EXPECT_EQ(manager.getMesh(TilePosition(1, -1)), nullptr);
167 - }
168 -@@ -153,8 +153,8 @@ namespace
169 - {
170 - TileCachedRecastMeshManager manager(mSettings);
171 - const btBoxShape boxShape(btVector3(20, 20, 100));
172 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
173 -- manager.removeObject(ObjectId(1ul));
174 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
175 -+ manager.removeObject(ObjectId(&boxShape));
176 - EXPECT_EQ(manager.getMesh(TilePosition(-1, -1)), nullptr);
177 - EXPECT_EQ(manager.getMesh(TilePosition(-1, 0)), nullptr);
178 - EXPECT_EQ(manager.getMesh(TilePosition(0, -1)), nullptr);
179 -@@ -166,13 +166,13 @@ namespace
180 - TileCachedRecastMeshManager manager(mSettings);
181 - const btBoxShape boxShape(btVector3(20, 20, 100));
182 -
183 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
184 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
185 - EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
186 - EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
187 - EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
188 - EXPECT_NE(manager.getMesh(TilePosition(0, 0)), nullptr);
189 -
190 -- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
191 -+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
192 - EXPECT_NE(manager.getMesh(TilePosition(-1, -1)), nullptr);
193 - EXPECT_NE(manager.getMesh(TilePosition(-1, 0)), nullptr);
194 - EXPECT_NE(manager.getMesh(TilePosition(0, -1)), nullptr);
195 -@@ -184,7 +184,7 @@ namespace
196 - TileCachedRecastMeshManager manager(mSettings);
197 - const auto initialRevision = manager.getRevision();
198 - const btBoxShape boxShape(btVector3(20, 20, 100));
199 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
200 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
201 - EXPECT_EQ(manager.getRevision(), initialRevision + 1);
202 - }
203 -
204 -@@ -192,9 +192,9 @@ namespace
205 - {
206 - TileCachedRecastMeshManager manager(mSettings);
207 - const btBoxShape boxShape(btVector3(20, 20, 100));
208 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
209 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
210 - const auto beforeAddRevision = manager.getRevision();
211 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
212 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
213 - EXPECT_EQ(manager.getRevision(), beforeAddRevision);
214 - }
215 -
216 -@@ -203,9 +203,9 @@ namespace
217 - TileCachedRecastMeshManager manager(mSettings);
218 - const btBoxShape boxShape(btVector3(20, 20, 100));
219 - const btTransform transform(btMatrix3x3::getIdentity(), btVector3(getTileSize(mSettings) / mSettings.mRecastScaleFactor, 0, 0));
220 -- manager.addObject(ObjectId(1ul), boxShape, transform, AreaType::AreaType_ground);
221 -+ manager.addObject(ObjectId(&boxShape), boxShape, transform, AreaType::AreaType_ground);
222 - const auto beforeUpdateRevision = manager.getRevision();
223 -- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
224 -+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
225 - EXPECT_EQ(manager.getRevision(), beforeUpdateRevision + 1);
226 - }
227 -
228 -@@ -213,9 +213,9 @@ namespace
229 - {
230 - TileCachedRecastMeshManager manager(mSettings);
231 - const btBoxShape boxShape(btVector3(20, 20, 100));
232 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
233 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
234 - const auto beforeUpdateRevision = manager.getRevision();
235 -- manager.updateObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
236 -+ manager.updateObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
237 - EXPECT_EQ(manager.getRevision(), beforeUpdateRevision);
238 - }
239 -
240 -@@ -223,9 +223,9 @@ namespace
241 - {
242 - TileCachedRecastMeshManager manager(mSettings);
243 - const btBoxShape boxShape(btVector3(20, 20, 100));
244 -- manager.addObject(ObjectId(1ul), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
245 -+ manager.addObject(ObjectId(&boxShape), boxShape, btTransform::getIdentity(), AreaType::AreaType_ground);
246 - const auto beforeRemoveRevision = manager.getRevision();
247 -- manager.removeObject(ObjectId(1ul));
248 -+ manager.removeObject(ObjectId(&boxShape));
249 - EXPECT_EQ(manager.getRevision(), beforeRemoveRevision + 1);
250 - }
251 -
252 -@@ -233,7 +233,7 @@ namespace
253 - {
254 - TileCachedRecastMeshManager manager(mSettings);
255 - const auto beforeRemoveRevision = manager.getRevision();
256 -- manager.removeObject(ObjectId(1ul));
257 -+ manager.removeObject(ObjectId(&manager));
258 - EXPECT_EQ(manager.getRevision(), beforeRemoveRevision);
259 - }
260 - }
261 -diff --git a/components/detournavigator/objectid.hpp b/components/detournavigator/objectid.hpp
262 -index 3b56924b13..6ddcc9169d 100644
263 ---- a/components/detournavigator/objectid.hpp
264 -+++ b/components/detournavigator/objectid.hpp
265 -@@ -10,7 +10,7 @@ namespace DetourNavigator
266 - {
267 - public:
268 - template <class T>
269 -- explicit ObjectId(const T value) throw()
270 -+ explicit ObjectId(T* value) throw()
271 - : mValue(reinterpret_cast<std::size_t>(value))
272 - {
273 - }
274
275 diff --git a/games-engines/openmw/files/openmw-0.46.0-floattest2.patch b/games-engines/openmw/files/openmw-0.46.0-floattest2.patch
276 deleted file mode 100644
277 index ca6e355eab7d..000000000000
278 --- a/games-engines/openmw/files/openmw-0.46.0-floattest2.patch
279 +++ /dev/null
280 @@ -1,139 +0,0 @@
281 -https://gitlab.com/OpenMW/openmw/-/merge_requests/253
282 -
283 ---- a/apps/openmw_test_suite/detournavigator/navigator.cpp 2020-06-30 16:07:31.544410916 +0100
284 -+++ b/apps/openmw_test_suite/detournavigator/navigator.cpp 2020-06-30 16:08:50.405698937 +0100
285 -@@ -458,25 +458,25 @@
286 -
287 - EXPECT_EQ(mNavigator->findPath(mAgentHalfExtents, mStepSize, mStart, mEnd, Flag_swim, mAreaCosts, mOut), Status::Success);
288 -
289 -- EXPECT_EQ(mPath, std::deque<osg::Vec3f>({
290 -- osg::Vec3f(0, 215, 185.33331298828125),
291 -- osg::Vec3f(0, 186.6666717529296875, 185.33331298828125),
292 -- osg::Vec3f(0, 158.333343505859375, 185.33331298828125),
293 -- osg::Vec3f(0, 130.0000152587890625, 185.33331298828125),
294 -- osg::Vec3f(0, 101.66667938232421875, 185.33331298828125),
295 -- osg::Vec3f(0, 73.333343505859375, 185.33331298828125),
296 -- osg::Vec3f(0, 45.0000152587890625, 185.33331298828125),
297 -- osg::Vec3f(0, 16.6666812896728515625, 185.33331298828125),
298 -- osg::Vec3f(0, -11.66664981842041015625, 185.33331298828125),
299 -- osg::Vec3f(0, -39.999980926513671875, 185.33331298828125),
300 -- osg::Vec3f(0, -68.33331298828125, 185.33331298828125),
301 -- osg::Vec3f(0, -96.66664886474609375, 185.33331298828125),
302 -- osg::Vec3f(0, -124.99997711181640625, 185.33331298828125),
303 -- osg::Vec3f(0, -153.33331298828125, 185.33331298828125),
304 -- osg::Vec3f(0, -181.6666412353515625, 185.33331298828125),
305 -- osg::Vec3f(0, -209.999969482421875, 185.33331298828125),
306 -- osg::Vec3f(0, -215, 185.33331298828125),
307 -- })) << mPath;
308 -+ EXPECT_THAT(mPath, ElementsAre(
309 -+ Vec3fEq(0, 215, 185.33331298828125),
310 -+ Vec3fEq(0, 186.6666717529296875, 185.33331298828125),
311 -+ Vec3fEq(0, 158.333343505859375, 185.33331298828125),
312 -+ Vec3fEq(0, 130.0000152587890625, 185.33331298828125),
313 -+ Vec3fEq(0, 101.66667938232421875, 185.33331298828125),
314 -+ Vec3fEq(0, 73.333343505859375, 185.33331298828125),
315 -+ Vec3fEq(0, 45.0000152587890625, 185.33331298828125),
316 -+ Vec3fEq(0, 16.6666812896728515625, 185.33331298828125),
317 -+ Vec3fEq(0, -11.66664981842041015625, 185.33331298828125),
318 -+ Vec3fEq(0, -39.999980926513671875, 185.33331298828125),
319 -+ Vec3fEq(0, -68.33331298828125, 185.33331298828125),
320 -+ Vec3fEq(0, -96.66664886474609375, 185.33331298828125),
321 -+ Vec3fEq(0, -124.99997711181640625, 185.33331298828125),
322 -+ Vec3fEq(0, -153.33331298828125, 185.33331298828125),
323 -+ Vec3fEq(0, -181.6666412353515625, 185.33331298828125),
324 -+ Vec3fEq(0, -209.999969482421875, 185.33331298828125),
325 -+ Vec3fEq(0, -215, 185.33331298828125)
326 -+ ));
327 - }
328 -
329 - TEST_F(DetourNavigatorNavigatorTest, path_should_be_over_water_when_ground_cross_water_with_swim_and_walk_flags)
330 -@@ -505,25 +505,25 @@
331 - EXPECT_EQ(mNavigator->findPath(mAgentHalfExtents, mStepSize, mStart, mEnd, Flag_swim | Flag_walk, mAreaCosts, mOut),
332 - Status::Success);
333 -
334 -- EXPECT_EQ(mPath, std::deque<osg::Vec3f>({
335 -- osg::Vec3f(0, 215, -94.75363922119140625),
336 -- osg::Vec3f(0, 186.6666717529296875, -106.0000152587890625),
337 -- osg::Vec3f(0, 158.333343505859375, -115.85507965087890625),
338 -- osg::Vec3f(0, 130.0000152587890625, -125.71016693115234375),
339 -- osg::Vec3f(0, 101.66667938232421875, -135.5652313232421875),
340 -- osg::Vec3f(0, 73.333343505859375, -143.3333587646484375),
341 -- osg::Vec3f(0, 45.0000152587890625, -143.3333587646484375),
342 -- osg::Vec3f(0, 16.6666812896728515625, -143.3333587646484375),
343 -- osg::Vec3f(0, -11.66664981842041015625, -143.3333587646484375),
344 -- osg::Vec3f(0, -39.999980926513671875, -143.3333587646484375),
345 -- osg::Vec3f(0, -68.33331298828125, -143.3333587646484375),
346 -- osg::Vec3f(0, -96.66664886474609375, -137.3043670654296875),
347 -- osg::Vec3f(0, -124.99997711181640625, -127.44930267333984375),
348 -- osg::Vec3f(0, -153.33331298828125, -117.59423065185546875),
349 -- osg::Vec3f(0, -181.6666412353515625, -107.73915863037109375),
350 -- osg::Vec3f(0, -209.999969482421875, -97.7971343994140625),
351 -- osg::Vec3f(0, -215, -94.75363922119140625),
352 -- })) << mPath;
353 -+ EXPECT_THAT(mPath, ElementsAre(
354 -+ Vec3fEq(0, 215, -94.75363922119140625),
355 -+ Vec3fEq(0, 186.6666717529296875, -106.0000152587890625),
356 -+ Vec3fEq(0, 158.333343505859375, -115.85507965087890625),
357 -+ Vec3fEq(0, 130.0000152587890625, -125.71016693115234375),
358 -+ Vec3fEq(0, 101.66667938232421875, -135.5652313232421875),
359 -+ Vec3fEq(0, 73.333343505859375, -143.3333587646484375),
360 -+ Vec3fEq(0, 45.0000152587890625, -143.3333587646484375),
361 -+ Vec3fEq(0, 16.6666812896728515625, -143.3333587646484375),
362 -+ Vec3fEq(0, -11.66664981842041015625, -143.3333587646484375),
363 -+ Vec3fEq(0, -39.999980926513671875, -143.3333587646484375),
364 -+ Vec3fEq(0, -68.33331298828125, -143.3333587646484375),
365 -+ Vec3fEq(0, -96.66664886474609375, -137.3043670654296875),
366 -+ Vec3fEq(0, -124.99997711181640625, -127.44930267333984375),
367 -+ Vec3fEq(0, -153.33331298828125, -117.59423065185546875),
368 -+ Vec3fEq(0, -181.6666412353515625, -107.73915863037109375),
369 -+ Vec3fEq(0, -209.999969482421875, -97.7971343994140625),
370 -+ Vec3fEq(0, -215, -94.75363922119140625)
371 -+ ));
372 - }
373 -
374 - TEST_F(DetourNavigatorNavigatorTest, path_should_be_over_water_when_ground_cross_water_with_max_int_cells_size_and_swim_and_walk_flags)
375 -@@ -552,25 +552,25 @@
376 - EXPECT_EQ(mNavigator->findPath(mAgentHalfExtents, mStepSize, mStart, mEnd, Flag_swim | Flag_walk, mAreaCosts, mOut),
377 - Status::Success);
378 -
379 -- EXPECT_EQ(mPath, std::deque<osg::Vec3f>({
380 -- osg::Vec3f(0, 215, -94.75363922119140625),
381 -- osg::Vec3f(0, 186.6666717529296875, -106.0000152587890625),
382 -- osg::Vec3f(0, 158.333343505859375, -115.85507965087890625),
383 -- osg::Vec3f(0, 130.0000152587890625, -125.71016693115234375),
384 -- osg::Vec3f(0, 101.66667938232421875, -135.5652313232421875),
385 -- osg::Vec3f(0, 73.333343505859375, -143.3333587646484375),
386 -- osg::Vec3f(0, 45.0000152587890625, -143.3333587646484375),
387 -- osg::Vec3f(0, 16.6666812896728515625, -143.3333587646484375),
388 -- osg::Vec3f(0, -11.66664981842041015625, -143.3333587646484375),
389 -- osg::Vec3f(0, -39.999980926513671875, -143.3333587646484375),
390 -- osg::Vec3f(0, -68.33331298828125, -143.3333587646484375),
391 -- osg::Vec3f(0, -96.66664886474609375, -137.3043670654296875),
392 -- osg::Vec3f(0, -124.99997711181640625, -127.44930267333984375),
393 -- osg::Vec3f(0, -153.33331298828125, -117.59423065185546875),
394 -- osg::Vec3f(0, -181.6666412353515625, -107.73915863037109375),
395 -- osg::Vec3f(0, -209.999969482421875, -97.7971343994140625),
396 -- osg::Vec3f(0, -215, -94.75363922119140625),
397 -- })) << mPath;
398 -+ EXPECT_THAT(mPath, ElementsAre(
399 -+ Vec3fEq(0, 215, -94.75363922119140625),
400 -+ Vec3fEq(0, 186.6666717529296875, -106.0000152587890625),
401 -+ Vec3fEq(0, 158.333343505859375, -115.85507965087890625),
402 -+ Vec3fEq(0, 130.0000152587890625, -125.71016693115234375),
403 -+ Vec3fEq(0, 101.66667938232421875, -135.5652313232421875),
404 -+ Vec3fEq(0, 73.333343505859375, -143.3333587646484375),
405 -+ Vec3fEq(0, 45.0000152587890625, -143.3333587646484375),
406 -+ Vec3fEq(0, 16.6666812896728515625, -143.3333587646484375),
407 -+ Vec3fEq(0, -11.66664981842041015625, -143.3333587646484375),
408 -+ Vec3fEq(0, -39.999980926513671875, -143.3333587646484375),
409 -+ Vec3fEq(0, -68.33331298828125, -143.3333587646484375),
410 -+ Vec3fEq(0, -96.66664886474609375, -137.3043670654296875),
411 -+ Vec3fEq(0, -124.99997711181640625, -127.44930267333984375),
412 -+ Vec3fEq(0, -153.33331298828125, -117.59423065185546875),
413 -+ Vec3fEq(0, -181.6666412353515625, -107.73915863037109375),
414 -+ Vec3fEq(0, -209.999969482421875, -97.7971343994140625),
415 -+ Vec3fEq(0, -215, -94.75363922119140625)
416 -+ ));
417 - }
418 -
419 - TEST_F(DetourNavigatorNavigatorTest, path_should_be_over_ground_when_ground_cross_water_with_only_walk_flag)
420
421 diff --git a/games-engines/openmw/files/openmw-0.46.0-gcc11.patch b/games-engines/openmw/files/openmw-0.46.0-gcc11.patch
422 deleted file mode 100644
423 index 0dc3106fb3bf..000000000000
424 --- a/games-engines/openmw/files/openmw-0.46.0-gcc11.patch
425 +++ /dev/null
426 @@ -1,36 +0,0 @@
427 -diff --git a/components/sceneutil/mwshadowtechnique.cpp b/components/sceneutil/mwshadowtechnique.cpp
428 -index cb3a1b2..62cfeec 100644
429 ---- a/components/sceneutil/mwshadowtechnique.cpp
430 -+++ b/components/sceneutil/mwshadowtechnique.cpp
431 -@@ -24,6 +24,7 @@
432 - #include <osg/io_utils>
433 -
434 - #include <sstream>
435 -+#include <limits>
436 -
437 - namespace {
438 -
439 -diff --git a/components/sceneutil/shadow.cpp b/components/sceneutil/shadow.cpp
440 -index 035c19a..aba1b81 100644
441 ---- a/components/sceneutil/shadow.cpp
442 -+++ b/components/sceneutil/shadow.cpp
443 -@@ -4,6 +4,7 @@
444 -
445 - #include <components/sceneutil/vismask.hpp>
446 - #include <components/settings/settings.hpp>
447 -+#include <limits>
448 -
449 - namespace SceneUtil
450 - {
451 -diff --git a/components/terrain/quadtreeworld.cpp b/components/terrain/quadtreeworld.cpp
452 -index f998b78..e0e47dd 100644
453 ---- a/components/terrain/quadtreeworld.cpp
454 -+++ b/components/terrain/quadtreeworld.cpp
455 -@@ -3,6 +3,7 @@
456 - #include <osgUtil/CullVisitor>
457 -
458 - #include <sstream>
459 -+#include <limits>
460 -
461 - #include <components/misc/constants.hpp>
462 - #include <components/sceneutil/mwshadowtechnique.hpp>
463
464 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
465 deleted file mode 100644
466 index 803707498e43..000000000000
467 --- a/games-engines/openmw/files/openmw-0.46.0-missing-include.patch
468 +++ /dev/null
469 @@ -1,19 +0,0 @@
470 -Fixes build on ~arch system, patch from upstream, to be dropped for 0.47
471 -
472 -From 10daadefbea1f62a818c339dc7f3d69a858bc8a6 Mon Sep 17 00:00:00 2001
473 -From: elsid <elsid.mail@×××××.com>
474 -Date: Thu, 30 Apr 2020 21:57:22 +0200
475 -Subject: [PATCH] Add missing include
476 -
477 -diff --git a/components/detournavigator/offmeshconnectionsmanager.hpp b/components/detournavigator/offmeshconnectionsmanager.hpp
478 -index 30d7976aec..155ce32963 100644
479 ---- a/components/detournavigator/offmeshconnectionsmanager.hpp
480 -+++ b/components/detournavigator/offmeshconnectionsmanager.hpp
481 -@@ -13,6 +13,7 @@
482 -
483 - #include <boost/optional.hpp>
484 -
485 -+#include <algorithm>
486 - #include <map>
487 - #include <mutex>
488 - #include <unordered_map>
489
490 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
491 deleted file mode 100644
492 index a14f58bc9e79..000000000000
493 --- a/games-engines/openmw/files/openmw-0.46.0-mygui-license.patch
494 +++ /dev/null
495 @@ -1,16 +0,0 @@
496 -We don't install license files
497 -
498 -diff --git a/CMakeLists.txt b/CMakeLists.txt
499 -index d69352c94..5f97c86e9 100644
500 ---- a/CMakeLists.txt
501 -+++ b/CMakeLists.txt
502 -@@ -470,9 +470,6 @@ IF(NOT WIN32 AND NOT APPLE)
503 - # INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Plugin_MyGUI_OpenMW_Resources.so" DESTINATION "${LIBDIR}" )
504 - #ENDIF(BUILD_MYGUI_PLUGIN)
505 -
506 -- # Install licenses
507 -- INSTALL(FILES "files/mygui/DejaVu Font License.txt" DESTINATION "${LICDIR}" )
508 --
509 - # Install icon and desktop file
510 - INSTALL(FILES "${OpenMW_BINARY_DIR}/org.openmw.launcher.desktop" DESTINATION "${DATAROOTDIR}/applications" COMPONENT "openmw")
511 - INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/launcher/images/openmw.png" DESTINATION "${ICONDIR}" COMPONENT "openmw")
512
513 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
514 deleted file mode 100644
515 index 315b0753589d..000000000000
516 --- a/games-engines/openmw/files/openmw-0.46.0-nifbullet-test.patch
517 +++ /dev/null
518 @@ -1,335 +0,0 @@
519 -Fixes test on i686 system, patch from upstream, to be dropped for 0.47
520 -
521 -From 14d0ca4cd3e9aa9e329590913d5f8fb55077587d Mon Sep 17 00:00:00 2001
522 -From: elsid <elsid.mail@×××××.com>
523 -Date: Sun, 25 Nov 2018 11:42:26 +0300
524 -Subject: [PATCH 1/4] Cast float to btScalar
525 -
526 ----
527 - .../detournavigator/recastmeshbuilder.cpp | 18 +++++++++---------
528 - 1 file changed, 9 insertions(+), 9 deletions(-)
529 -
530 -diff --git a/components/detournavigator/recastmeshbuilder.cpp b/components/detournavigator/recastmeshbuilder.cpp
531 -index d96ba2f29c..f613683571 100644
532 ---- a/components/detournavigator/recastmeshbuilder.cpp
533 -+++ b/components/detournavigator/recastmeshbuilder.cpp
534 -@@ -163,15 +163,15 @@ namespace DetourNavigator
535 -
536 - transformBoundingBox(transform, aabbMin, aabbMax);
537 -
538 -- aabbMin.setX(std::max(mBounds.mMin.x(), aabbMin.x()));
539 -- aabbMin.setX(std::min(mBounds.mMax.x(), aabbMin.x()));
540 -- aabbMin.setY(std::max(mBounds.mMin.y(), aabbMin.y()));
541 -- aabbMin.setY(std::min(mBounds.mMax.y(), aabbMin.y()));
542 --
543 -- aabbMax.setX(std::max(mBounds.mMin.x(), aabbMax.x()));
544 -- aabbMax.setX(std::min(mBounds.mMax.x(), aabbMax.x()));
545 -- aabbMax.setY(std::max(mBounds.mMin.y(), aabbMax.y()));
546 -- aabbMax.setY(std::min(mBounds.mMax.y(), aabbMax.y()));
547 -+ aabbMin.setX(std::max(static_cast<btScalar>(mBounds.mMin.x()), aabbMin.x()));
548 -+ aabbMin.setX(std::min(static_cast<btScalar>(mBounds.mMax.x()), aabbMin.x()));
549 -+ aabbMin.setY(std::max(static_cast<btScalar>(mBounds.mMin.y()), aabbMin.y()));
550 -+ aabbMin.setY(std::min(static_cast<btScalar>(mBounds.mMax.y()), aabbMin.y()));
551 -+
552 -+ aabbMax.setX(std::max(static_cast<btScalar>(mBounds.mMin.x()), aabbMax.x()));
553 -+ aabbMax.setX(std::min(static_cast<btScalar>(mBounds.mMax.x()), aabbMax.x()));
554 -+ aabbMax.setY(std::max(static_cast<btScalar>(mBounds.mMin.y()), aabbMax.y()));
555 -+ aabbMax.setY(std::min(static_cast<btScalar>(mBounds.mMax.y()), aabbMax.y()));
556 -
557 - transformBoundingBox(transform.inverse(), aabbMin, aabbMax);
558 -
559 -
560 -From ef5a5ef43f9a91795339ef3ea97c505c1e9dc28d Mon Sep 17 00:00:00 2001
561 -From: elsid <elsid.mail@×××××.com>
562 -Date: Sun, 25 Nov 2018 14:03:28 +0300
563 -Subject: [PATCH 2/4] Print not matched values with full precision
564 -
565 ----
566 - .../detournavigator/operators.hpp | 62 +++++++++++++++----
567 - 1 file changed, 51 insertions(+), 11 deletions(-)
568 -
569 -diff --git a/apps/openmw_test_suite/detournavigator/operators.hpp b/apps/openmw_test_suite/detournavigator/operators.hpp
570 -index a473632bab..e34d6278a7 100644
571 ---- a/apps/openmw_test_suite/detournavigator/operators.hpp
572 -+++ b/apps/openmw_test_suite/detournavigator/operators.hpp
573 -@@ -20,22 +20,62 @@ namespace DetourNavigator
574 - }
575 - }
576 -
577 -+namespace
578 -+{
579 -+ template <class T>
580 -+ struct Wrapper {
581 -+ const T& mValue;
582 -+ };
583 -+
584 -+ template <class Range>
585 -+ inline testing::Message& writeRange(testing::Message& message, const Range& range)
586 -+ {
587 -+ message << "{\n";
588 -+ for (const auto& v : range)
589 -+ message << Wrapper<typename std::decay<decltype(v)>::type> {v} << ",\n";
590 -+ return message << "}";
591 -+ }
592 -+}
593 -+
594 - namespace testing
595 - {
596 -+ template <>
597 -+ inline testing::Message& Message::operator <<(const osg::Vec3f& value)
598 -+ {
599 -+ return (*this) << "osg::Vec3f(" << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.x()
600 -+ << ", " << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.y()
601 -+ << ", " << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.z()
602 -+ << ')';
603 -+ }
604 -+
605 -+ template <>
606 -+ inline testing::Message& Message::operator <<(const Wrapper<osg::Vec3f>& value)
607 -+ {
608 -+ return (*this) << value.mValue;
609 -+ }
610 -+
611 -+ template <>
612 -+ inline testing::Message& Message::operator <<(const Wrapper<float>& value)
613 -+ {
614 -+ return (*this) << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.mValue;
615 -+ }
616 -+
617 - template <>
618 - inline testing::Message& Message::operator <<(const std::deque<osg::Vec3f>& value)
619 - {
620 -- (*this) << "{\n";
621 -- for (const auto& v : value)
622 -- {
623 -- std::ostringstream stream;
624 -- stream << "osg::Vec3f("
625 -- << std::setprecision(std::numeric_limits<float>::max_exponent10) << v.x() << ", "
626 -- << std::setprecision(std::numeric_limits<float>::max_exponent10) << v.y() << ", "
627 -- << std::setprecision(std::numeric_limits<float>::max_exponent10) << v.z() << ")";
628 -- (*this) << stream.str() << ",\n";
629 -- }
630 -- return (*this) << "}";
631 -+ return writeRange(*this, value);
632 -+ }
633 -+
634 -+ template <>
635 -+ inline testing::Message& Message::operator <<(const std::vector<osg::Vec3f>& value)
636 -+ {
637 -+ return writeRange(*this, value);
638 -+ }
639 -+
640 -+ template <>
641 -+ inline testing::Message& Message::operator <<(const std::vector<float>& value)
642 -+ {
643 -+ return writeRange(*this, value);
644 - }
645 - }
646 -
647 -
648 -From 2d7c3bae6127fc3717d5e3a8e8830215450fb47f Mon Sep 17 00:00:00 2001
649 -From: elsid <elsid.mail@×××××.com>
650 -Date: Sun, 25 Nov 2018 11:46:09 +0300
651 -Subject: [PATCH 3/4] Support bullet with double precision
652 -
653 ----
654 - apps/openmw/mwphysics/heightfield.cpp | 38 ++++++++++++++++++-
655 - apps/openmw/mwphysics/heightfield.hpp | 5 +++
656 - .../detournavigator/recastmeshbuilder.cpp | 4 +-
657 - .../nifloader/testbulletnifloader.cpp | 36 ++++++++++++++++--
658 - 4 files changed, 77 insertions(+), 6 deletions(-)
659 -
660 -diff --git a/apps/openmw/mwphysics/heightfield.cpp b/apps/openmw/mwphysics/heightfield.cpp
661 -index 52aed9c072..e1448116bf 100644
662 ---- a/apps/openmw/mwphysics/heightfield.cpp
663 -+++ b/apps/openmw/mwphysics/heightfield.cpp
664 -@@ -7,12 +7,48 @@
665 -
666 - #include <LinearMath/btTransform.h>
667 -
668 -+#include <type_traits>
669 -+
670 -+namespace
671 -+{
672 -+ template <class T>
673 -+ auto makeHeights(const T* heights, float sqrtVerts)
674 -+ -> std::enable_if_t<std::is_same<btScalar, T>::value, std::vector<btScalar>>
675 -+ {
676 -+ return {};
677 -+ }
678 -+
679 -+ template <class T>
680 -+ auto makeHeights(const T* heights, float sqrtVerts)
681 -+ -> std::enable_if_t<!std::is_same<btScalar, T>::value, std::vector<btScalar>>
682 -+ {
683 -+ return std::vector<btScalar>(heights, heights + static_cast<std::ptrdiff_t>(sqrtVerts * sqrtVerts));
684 -+ }
685 -+
686 -+ template <class T>
687 -+ auto getHeights(const T* floatHeights, const std::vector<btScalar>&)
688 -+ -> std::enable_if_t<std::is_same<btScalar, T>::value, const btScalar*>
689 -+ {
690 -+ return floatHeights;
691 -+ }
692 -+
693 -+ template <class T>
694 -+ auto getHeights(const T*, const std::vector<btScalar>& btScalarHeights)
695 -+ -> std::enable_if_t<!std::is_same<btScalar, T>::value, const btScalar*>
696 -+ {
697 -+ return btScalarHeights.data();
698 -+ }
699 -+}
700 -+
701 - namespace MWPhysics
702 - {
703 - HeightField::HeightField(const float* heights, int x, int y, float triSize, float sqrtVerts, float minH, float maxH, const osg::Object* holdObject)
704 -+ : mHeights(makeHeights(heights, sqrtVerts))
705 - {
706 - mShape = new btHeightfieldTerrainShape(
707 -- sqrtVerts, sqrtVerts, heights, 1,
708 -+ sqrtVerts, sqrtVerts,
709 -+ getHeights(heights, mHeights),
710 -+ 1,
711 - minH, maxH, 2,
712 - PHY_FLOAT, false
713 - );
714 -diff --git a/apps/openmw/mwphysics/heightfield.hpp b/apps/openmw/mwphysics/heightfield.hpp
715 -index f248186db3..2ba58afff8 100644
716 ---- a/apps/openmw/mwphysics/heightfield.hpp
717 -+++ b/apps/openmw/mwphysics/heightfield.hpp
718 -@@ -3,6 +3,10 @@
719 -
720 - #include <osg/ref_ptr>
721 -
722 -+#include <LinearMath/btScalar.h>
723 -+
724 -+#include <vector>
725 -+
726 - class btCollisionObject;
727 - class btHeightfieldTerrainShape;
728 -
729 -@@ -27,6 +31,7 @@ namespace MWPhysics
730 - btHeightfieldTerrainShape* mShape;
731 - btCollisionObject* mCollisionObject;
732 - osg::ref_ptr<const osg::Object> mHoldObject;
733 -+ std::vector<btScalar> mHeights;
734 -
735 - void operator=(const HeightField&);
736 - HeightField(const HeightField&);
737 -diff --git a/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp b/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp
738 -index 6c474765de..c86dee6e55 100644
739 ---- a/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp
740 -+++ b/apps/openmw_test_suite/detournavigator/recastmeshbuilder.cpp
741 -@@ -363,11 +363,11 @@ namespace
742 - AreaType_ground
743 - );
744 - const auto recastMesh = builder.create(mGeneration, mRevision);
745 -- EXPECT_EQ(recastMesh->getVertices(), std::vector<float>({
746 -+ EXPECT_THAT(recastMesh->getVertices(), Pointwise(FloatNear(1e-5), std::vector<float>({
747 - 1.41421353816986083984375, 0, 1.1920928955078125e-07,
748 - -1.41421353816986083984375, 0, -1.1920928955078125e-07,
749 - 1.1920928955078125e-07, 0, -1.41421353816986083984375,
750 -- }));
751 -+ })));
752 - EXPECT_EQ(recastMesh->getIndices(), std::vector<int>({0, 1, 2}));
753 - EXPECT_EQ(recastMesh->getAreaTypes(), std::vector<AreaType>({AreaType_ground}));
754 - }
755 -diff --git a/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp b/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp
756 -index 36f2512462..6ec94fd68f 100644
757 ---- a/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp
758 -+++ b/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp
759 -@@ -9,6 +9,8 @@
760 - #include <gtest/gtest.h>
761 - #include <gmock/gmock.h>
762 -
763 -+#include <algorithm>
764 -+
765 - namespace
766 - {
767 - template <class T>
768 -@@ -30,6 +32,34 @@ namespace
769 - shape.processAllTriangles(&callback, aabbMin, aabbMax);
770 - return result;
771 - }
772 -+
773 -+ bool isNear(btScalar lhs, btScalar rhs)
774 -+ {
775 -+ return std::abs(lhs - rhs) <= 1e-5;
776 -+ }
777 -+
778 -+ bool isNear(const btVector3& lhs, const btVector3& rhs)
779 -+ {
780 -+ return std::equal(
781 -+ static_cast<const btScalar*>(lhs),
782 -+ static_cast<const btScalar*>(lhs) + 3,
783 -+ static_cast<const btScalar*>(rhs),
784 -+ [] (btScalar lhs, btScalar rhs) { return isNear(lhs, rhs); }
785 -+ );
786 -+ }
787 -+
788 -+ bool isNear(const btMatrix3x3& lhs, const btMatrix3x3& rhs)
789 -+ {
790 -+ for (int i = 0; i < 3; ++i)
791 -+ if (!isNear(lhs[i], rhs[i]))
792 -+ return false;
793 -+ return true;
794 -+ }
795 -+
796 -+ bool isNear(const btTransform& lhs, const btTransform& rhs)
797 -+ {
798 -+ return isNear(lhs.getOrigin(), rhs.getOrigin()) && isNear(lhs.getBasis(), rhs.getBasis());
799 -+ }
800 - }
801 -
802 - static std::ostream& operator <<(std::ostream& stream, const btVector3& value)
803 -@@ -157,7 +187,7 @@ static bool operator ==(const btCompoundShape& lhs, const btCompoundShape& rhs)
804 - for (int i = 0; i < lhs.getNumChildShapes(); ++i)
805 - {
806 - if (!compareObjects(lhs.getChildShape(i), rhs.getChildShape(i))
807 -- || !(lhs.getChildTransform(i) == rhs.getChildTransform(i)))
808 -+ || !isNear(lhs.getChildTransform(i), rhs.getChildTransform(i)))
809 - return false;
810 - }
811 - return true;
812 -@@ -165,13 +195,13 @@ static bool operator ==(const btCompoundShape& lhs, const btCompoundShape& rhs)
813 -
814 - static bool operator ==(const btBoxShape& lhs, const btBoxShape& rhs)
815 - {
816 -- return lhs.getLocalScaling() == rhs.getLocalScaling()
817 -+ return isNear(lhs.getLocalScaling(), rhs.getLocalScaling())
818 - && lhs.getHalfExtentsWithoutMargin() == rhs.getHalfExtentsWithoutMargin();
819 - }
820 -
821 - static bool operator ==(const btBvhTriangleMeshShape& lhs, const btBvhTriangleMeshShape& rhs)
822 - {
823 -- return lhs.getLocalScaling() == rhs.getLocalScaling()
824 -+ return isNear(lhs.getLocalScaling(), rhs.getLocalScaling())
825 - && lhs.usesQuantizedAabbCompression() == rhs.usesQuantizedAabbCompression()
826 - && lhs.getOwnsBvh() == rhs.getOwnsBvh()
827 - && getTriangles(lhs) == getTriangles(rhs);
828 -
829 -From 66da72048a5893bc8c9b20f6f7210fd45b6a74bf Mon Sep 17 00:00:00 2001
830 -From: elsid <elsid.mail@×××××.com>
831 -Date: Wed, 20 Feb 2019 23:41:16 +0300
832 -Subject: [PATCH 4/4] Update bullet for windows up to 2.87
833 -
834 ----
835 - CI/before_script.msvc.sh | 12 ++++++------
836 - appveyor.yml | 4 ++--
837 - 2 files changed, 8 insertions(+), 8 deletions(-)
838 -
839 -diff --git a/appveyor.yml b/appveyor.yml
840 -index 3057cc7257..e2c13ed948 100644
841 ---- a/appveyor.yml
842 -+++ b/appveyor.yml
843 -@@ -30,8 +30,8 @@ configuration:
844 - clone_depth: 1
845 -
846 - cache:
847 -- - C:\projects\openmw\deps\Bullet-2.86-msvc2015-win32.7z
848 -- - C:\projects\openmw\deps\Bullet-2.86-msvc2015-win64.7z
849 -+ - C:\projects\openmw\deps\Bullet-2.87-msvc2015-win32.7z
850 -+ - C:\projects\openmw\deps\Bullet-2.87-msvc2015-win64.7z
851 - - C:\projects\openmw\deps\MyGUI-3.2.2-msvc2015-win32.7z
852 - - C:\projects\openmw\deps\MyGUI-3.2.2-msvc2015-win64.7z
853 - - C:\projects\openmw\deps\OSG-3.4.1-scrawl-msvc2015-win32.7z
854
855 diff --git a/games-engines/openmw/files/openmw-0.46.0-recastnavigation.patch b/games-engines/openmw/files/openmw-0.46.0-recastnavigation.patch
856 deleted file mode 100644
857 index ea3242d73ca8..000000000000
858 --- a/games-engines/openmw/files/openmw-0.46.0-recastnavigation.patch
859 +++ /dev/null
860 @@ -1,24 +0,0 @@
861 -Use system recastnavigation instead of bundled one
862 -
863 -diff --git a/CMakeLists.txt b/CMakeLists.txt
864 -index d69352c94..cfb53dc5b 100644
865 ---- a/CMakeLists.txt
866 -+++ b/CMakeLists.txt
867 -@@ -596,7 +596,16 @@ endif(WIN32)
868 - # Extern
869 - set(RECASTNAVIGATION_STATIC ON CACHE BOOL "Build recastnavigation static libraries")
870 -
871 --add_subdirectory (extern/recastnavigation EXCLUDE_FROM_ALL)
872 -+add_library(RecastNavigation::DebugUtils SHARED IMPORTED)
873 -+add_library(RecastNavigation::Detour SHARED IMPORTED)
874 -+add_library(RecastNavigation::Recast SHARED IMPORTED)
875 -+set_target_properties(RecastNavigation::DebugUtils PROPERTIES
876 -+ IMPORTED_LOCATION GENTOO_RECAST_LIBDIR/libDebugUtils.so)
877 -+set_target_properties(RecastNavigation::Detour PROPERTIES
878 -+ IMPORTED_LOCATION GENTOO_RECAST_LIBDIR/libDetour.so)
879 -+set_target_properties(RecastNavigation::Recast PROPERTIES
880 -+ IMPORTED_LOCATION GENTOO_RECAST_LIBDIR/libRecast.so)
881 -+
882 - add_subdirectory (extern/osg-ffmpeg-videoplayer)
883 - add_subdirectory (extern/oics)
884 - if (BUILD_OPENCS)
885
886 diff --git a/games-engines/openmw/openmw-0.46.0-r2.ebuild b/games-engines/openmw/openmw-0.46.0-r2.ebuild
887 deleted file mode 100644
888 index 24532e11f3da..000000000000
889 --- a/games-engines/openmw/openmw-0.46.0-r2.ebuild
890 +++ /dev/null
891 @@ -1,163 +0,0 @@
892 -# Copyright 1999-2021 Gentoo Authors
893 -# Distributed under the terms of the GNU General Public License v2
894 -
895 -EAPI=7
896 -
897 -inherit cmake flag-o-matic xdg-utils readme.gentoo-r1
898 -
899 -DESCRIPTION="Open source reimplementation of TES III: Morrowind"
900 -HOMEPAGE="https://openmw.org/ https://gitlab.com/OpenMW/openmw"
901 -
902 -if [[ ${PV} == *9999* ]]; then
903 - inherit git-r3
904 - EGIT_REPO_URI="https://github.com/OpenMW/openmw.git"
905 -else
906 - SRC_URI="
907 - https://github.com/OpenMW/openmw/archive/${P}.tar.gz
908 - https://gitlab.com/OpenMW/openmw/-/merge_requests/163.patch -> ${P}-floattest.patch
909 - "
910 - KEYWORDS="~amd64 ~x86"
911 - S="${WORKDIR}/${PN}-${P}"
912 -fi
913 -
914 -LICENSE="GPL-3 MIT BitstreamVera ZLIB"
915 -SLOT="0"
916 -IUSE="doc devtools +osg-fork test +qt5"
917 -RESTRICT="!test? ( test )"
918 -
919 -# FIXME: Unbundle dev-games/openscenegraph-qt in extern/osgQt directory,
920 -# used when BUILD_OPENCS flag is enabled. See bug #676266.
921 -
922 -RDEPEND="
923 - dev-games/mygui
924 - dev-games/recastnavigation
925 - dev-libs/boost:=[threads(+),zlib]
926 - dev-libs/tinyxml:=[stl]
927 - media-libs/libsdl2[joystick,opengl,video]
928 - media-libs/openal
929 - media-video/ffmpeg:=
930 - >=sci-physics/bullet-2.86:=[-double-precision]
931 - virtual/opengl
932 - osg-fork? ( =dev-games/openscenegraph-openmw-3.4*:=[ffmpeg,jpeg,png,sdl,svg,truetype,zlib] )
933 - !osg-fork? ( >=dev-games/openscenegraph-3.5.5:=[ffmpeg,jpeg,png,sdl,svg,truetype,zlib] )
934 - qt5? (
935 - app-arch/unshield
936 - dev-qt/qtcore:5
937 - dev-qt/qtgui:5
938 - dev-qt/qtnetwork:5
939 - dev-qt/qtopengl:5
940 - dev-qt/qtwidgets:5
941 - )
942 -"
943 -
944 -DEPEND="${RDEPEND}"
945 -
946 -BDEPEND="
947 - virtual/pkgconfig
948 - doc? (
949 - app-doc/doxygen[doc]
950 - dev-python/sphinx
951 - )
952 - test? (
953 - dev-cpp/gtest
954 - )
955 -"
956 -
957 -PATCHES=(
958 - "${FILESDIR}"/openmw-0.46.0-mygui-license.patch
959 - "${FILESDIR}"/openmw-0.46.0-recastnavigation.patch
960 - "${FILESDIR}"/openmw-0.46.0-missing-include.patch
961 - "${FILESDIR}"/openmw-0.46.0-fix-cast.patch
962 - "${FILESDIR}"/openmw-0.46.0-nifbullet-test.patch
963 - # https://gitlab.com/OpenMW/openmw/-/merge_requests/163
964 - "${DISTDIR}"/openmw-0.46.0-floattest.patch
965 - "${FILESDIR}"/openmw-0.46.0-floattest2.patch
966 - "${FILESDIR}"/openmw-0.46.0-gcc11.patch
967 - "${FILESDIR}"/openmw-0.46.0-boost-1.77.patch
968 -)
969 -
970 -src_prepare() {
971 - cmake_src_prepare
972 -
973 - # Use the system tinyxml headers
974 - rm -v extern/oics/tiny{str,xml}* || die
975 -
976 - # Unbundle recastnavigation
977 - rm -vr extern/recastnavigation || die
978 - sed -i "s#GENTOO_RECAST_LIBDIR#${EPREFIX}/usr/$(get_libdir)#" CMakeLists.txt || die
979 -}
980 -
981 -src_configure() {
982 - use devtools && ! use qt5 && \
983 - elog "'qt5' USE flag is disabled, 'openmw-cs' will not be installed"
984 -
985 - append-cxxflags "-I${EPREFIX}/usr/include/recastnavigation"
986 -
987 - local mycmakeargs=(
988 - -DBUILD_BSATOOL=$(usex devtools)
989 - -DBUILD_DOCS=$(usex doc)
990 - -DBUILD_ESMTOOL=$(usex devtools)
991 - -DBUILD_LAUNCHER=$(usex qt5)
992 - -DBUILD_NIFTEST=$(usex devtools)
993 - -DBUILD_OPENCS=$(usex devtools $(usex qt5))
994 - -DBUILD_WIZARD=$(usex qt5)
995 - -DBUILD_UNITTESTS=$(usex test)
996 - -DGLOBAL_DATA_PATH="${EPREFIX}/usr/share"
997 - -DICONDIR="${EPREFIX}/usr/share/icons/hicolor/256x256/apps"
998 - -DMORROWIND_DATA_FILES="${EPREFIX}/usr/share/morrowind-data"
999 - -DUSE_SYSTEM_TINYXML=ON
1000 - -DDESIRED_QT_VERSION=5
1001 - )
1002 -
1003 - cmake_src_configure
1004 -}
1005 -
1006 -src_compile() {
1007 - cmake_src_compile
1008 -
1009 - if use doc ; then
1010 - cmake_src_compile doc
1011 - find "${CMAKE_BUILD_DIR}"/docs/Doxygen/html \
1012 - -name '*.md5' -type f -delete || die
1013 - HTML_DOCS=( "${CMAKE_BUILD_DIR}"/docs/Doxygen/html/. )
1014 - fi
1015 -}
1016 -
1017 -src_test() {
1018 - "${BUILD_DIR}/openmw_test_suite" || die
1019 -}
1020 -
1021 -src_install() {
1022 - cmake_src_install
1023 -
1024 - local DOC_CONTENTS="
1025 - You need the original Morrowind data files. If you haven't
1026 - installed them yet, you can install them straight via the
1027 - installation wizard which is the officially supported method
1028 - (either by using the launcher or by calling 'openmw-wizard'
1029 - directly).\n"
1030 -
1031 - if ! use qt5; then
1032 - local DOC_CONTENTS+="\n\n
1033 - USE flag 'qt5' is disabled, 'openmw-launcher' and
1034 - 'openmw-wizard' are not available. You are on your own for
1035 - making the Morrowind data files available and pointing
1036 - openmw at them.\n\n
1037 - Additionally; you must import the Morrowind.ini file before
1038 - running openmw with the Morrowind data files for the first
1039 - time. Typically this can be done like so:\n\n
1040 - \t mkdir -p ~/.config/openmw\n
1041 - \t openmw-iniimporter /path/to/Morrowind.ini ~/.config/openmw/openmw.cfg"
1042 - fi
1043 -
1044 - readme.gentoo_create_doc
1045 -}
1046 -
1047 -pkg_postinst() {
1048 - xdg_icon_cache_update
1049 - readme.gentoo_print_elog
1050 -}
1051 -
1052 -pkg_postrm() {
1053 - xdg_icon_cache_update
1054 -}