mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-06 00:48:18 -07:00
games-engines/openmw: drop old
Closes: https://github.com/gentoo/gentoo/pull/23194 Closes: https://bugs.gentoo.org/794538 Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Alexey Sokolov <alexey+gentoo@asokolov.org> Signed-off-by: David Seifert <soap@gentoo.org>
This commit is contained in:
committed by
David Seifert
parent
55b046348e
commit
7d9a09fdbb
@@ -1,3 +1 @@
|
||||
DIST openmw-0.46.0-floattest.patch 43168 BLAKE2B 060b529fd4cd01f0fc723bb5a00a256b9c1ae4413c7b22581467cce75416e01041c3af22f0215ad9b1c475965a988065e0860c01c1e71d97454b022eec4779ea SHA512 0e165417e9ae047231fdc27b62251b33867f3782c1753f81705c886d6d3a433c8bbc3b4653a2555bc644bad11db9769d4bc2abcc84ca3ab23fabb6b80347bc32
|
||||
DIST openmw-0.46.0.tar.gz 5155004 BLAKE2B 8ad94a7fffe5a0739c56c778efe2ec17ef66c312a7fe5caf015cf3cad2bc17d2abe8cdc3f4134049a32fe55c4f4b3f72678d2d0ce1037fd02f6ac753b9d89b2c SHA512 da384aead300552817c0d0ce03515a5ccc95dcab4e02d4c1dd0d6c5f1b01ee01209bbaea74e2d12021e3465e49b051823bb018de39675c5a22c6892893624486
|
||||
DIST openmw-0.47.0.tar.gz 5156857 BLAKE2B 40e8b9670423259fa0cc03ef000c17ebe06d1d58c2527b51b25cea3b54978b8a698984371eac14ff212f9550253ab17d41b83d37426371f12f5ce2d30b240d3d SHA512 517e650d0054cdba8d38de05ed3975b0fcf8de32fda59c8df7c34b973e5390efa0dd9ec79babdfdaa79dee7aa8a75009776f62fad91b9aa9aa28016c5032652b
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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")
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -1,163 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit cmake flag-o-matic xdg-utils readme.gentoo-r1
|
||||
|
||||
DESCRIPTION="Open source reimplementation of TES III: Morrowind"
|
||||
HOMEPAGE="https://openmw.org/ https://gitlab.com/OpenMW/openmw"
|
||||
|
||||
if [[ ${PV} == *9999* ]]; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://github.com/OpenMW/openmw.git"
|
||||
else
|
||||
SRC_URI="
|
||||
https://github.com/OpenMW/openmw/archive/${P}.tar.gz
|
||||
https://gitlab.com/OpenMW/openmw/-/merge_requests/163.patch -> ${P}-floattest.patch
|
||||
"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
S="${WORKDIR}/${PN}-${P}"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-3 MIT BitstreamVera ZLIB"
|
||||
SLOT="0"
|
||||
IUSE="doc devtools +osg-fork test +qt5"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
# FIXME: Unbundle dev-games/openscenegraph-qt in extern/osgQt directory,
|
||||
# used when BUILD_OPENCS flag is enabled. See bug #676266.
|
||||
|
||||
RDEPEND="
|
||||
dev-games/mygui
|
||||
dev-games/recastnavigation
|
||||
dev-libs/boost:=[threads(+),zlib]
|
||||
dev-libs/tinyxml:=[stl]
|
||||
media-libs/libsdl2[joystick,opengl,video]
|
||||
media-libs/openal
|
||||
media-video/ffmpeg:=
|
||||
>=sci-physics/bullet-2.86:=[-double-precision]
|
||||
virtual/opengl
|
||||
osg-fork? ( =dev-games/openscenegraph-openmw-3.4*:=[ffmpeg,jpeg,png,sdl,svg,truetype,zlib] )
|
||||
!osg-fork? ( >=dev-games/openscenegraph-3.5.5:=[ffmpeg,jpeg,png,sdl,svg,truetype,zlib] )
|
||||
qt5? (
|
||||
app-arch/unshield
|
||||
dev-qt/qtcore:5
|
||||
dev-qt/qtgui:5
|
||||
dev-qt/qtnetwork:5
|
||||
dev-qt/qtopengl:5
|
||||
dev-qt/qtwidgets:5
|
||||
)
|
||||
"
|
||||
|
||||
DEPEND="${RDEPEND}"
|
||||
|
||||
BDEPEND="
|
||||
virtual/pkgconfig
|
||||
doc? (
|
||||
app-doc/doxygen[doc]
|
||||
dev-python/sphinx
|
||||
)
|
||||
test? (
|
||||
dev-cpp/gtest
|
||||
)
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/openmw-0.46.0-mygui-license.patch
|
||||
"${FILESDIR}"/openmw-0.46.0-recastnavigation.patch
|
||||
"${FILESDIR}"/openmw-0.46.0-missing-include.patch
|
||||
"${FILESDIR}"/openmw-0.46.0-fix-cast.patch
|
||||
"${FILESDIR}"/openmw-0.46.0-nifbullet-test.patch
|
||||
# https://gitlab.com/OpenMW/openmw/-/merge_requests/163
|
||||
"${DISTDIR}"/openmw-0.46.0-floattest.patch
|
||||
"${FILESDIR}"/openmw-0.46.0-floattest2.patch
|
||||
"${FILESDIR}"/openmw-0.46.0-gcc11.patch
|
||||
"${FILESDIR}"/openmw-0.46.0-boost-1.77.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
cmake_src_prepare
|
||||
|
||||
# Use the system tinyxml headers
|
||||
rm -v extern/oics/tiny{str,xml}* || die
|
||||
|
||||
# Unbundle recastnavigation
|
||||
rm -vr extern/recastnavigation || die
|
||||
sed -i "s#GENTOO_RECAST_LIBDIR#${EPREFIX}/usr/$(get_libdir)#" CMakeLists.txt || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
use devtools && ! use qt5 && \
|
||||
elog "'qt5' USE flag is disabled, 'openmw-cs' will not be installed"
|
||||
|
||||
append-cxxflags "-I${EPREFIX}/usr/include/recastnavigation"
|
||||
|
||||
local mycmakeargs=(
|
||||
-DBUILD_BSATOOL=$(usex devtools)
|
||||
-DBUILD_DOCS=$(usex doc)
|
||||
-DBUILD_ESMTOOL=$(usex devtools)
|
||||
-DBUILD_LAUNCHER=$(usex qt5)
|
||||
-DBUILD_NIFTEST=$(usex devtools)
|
||||
-DBUILD_OPENCS=$(usex devtools $(usex qt5))
|
||||
-DBUILD_WIZARD=$(usex qt5)
|
||||
-DBUILD_UNITTESTS=$(usex test)
|
||||
-DGLOBAL_DATA_PATH="${EPREFIX}/usr/share"
|
||||
-DICONDIR="${EPREFIX}/usr/share/icons/hicolor/256x256/apps"
|
||||
-DMORROWIND_DATA_FILES="${EPREFIX}/usr/share/morrowind-data"
|
||||
-DUSE_SYSTEM_TINYXML=ON
|
||||
-DDESIRED_QT_VERSION=5
|
||||
)
|
||||
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
cmake_src_compile
|
||||
|
||||
if use doc ; then
|
||||
cmake_src_compile doc
|
||||
find "${CMAKE_BUILD_DIR}"/docs/Doxygen/html \
|
||||
-name '*.md5' -type f -delete || die
|
||||
HTML_DOCS=( "${CMAKE_BUILD_DIR}"/docs/Doxygen/html/. )
|
||||
fi
|
||||
}
|
||||
|
||||
src_test() {
|
||||
"${BUILD_DIR}/openmw_test_suite" || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cmake_src_install
|
||||
|
||||
local DOC_CONTENTS="
|
||||
You need the original Morrowind data files. If you haven't
|
||||
installed them yet, you can install them straight via the
|
||||
installation wizard which is the officially supported method
|
||||
(either by using the launcher or by calling 'openmw-wizard'
|
||||
directly).\n"
|
||||
|
||||
if ! use qt5; then
|
||||
local DOC_CONTENTS+="\n\n
|
||||
USE flag 'qt5' is disabled, 'openmw-launcher' and
|
||||
'openmw-wizard' are not available. You are on your own for
|
||||
making the Morrowind data files available and pointing
|
||||
openmw at them.\n\n
|
||||
Additionally; you must import the Morrowind.ini file before
|
||||
running openmw with the Morrowind data files for the first
|
||||
time. Typically this can be done like so:\n\n
|
||||
\t mkdir -p ~/.config/openmw\n
|
||||
\t openmw-iniimporter /path/to/Morrowind.ini ~/.config/openmw/openmw.cfg"
|
||||
fi
|
||||
|
||||
readme.gentoo_create_doc
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
xdg_icon_cache_update
|
||||
readme.gentoo_print_elog
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_icon_cache_update
|
||||
}
|
||||
Reference in New Issue
Block a user