mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-16 15:29:55 +00:00
Fix unity build
This commit is contained in:
parent
3ea4305a60
commit
ce7f8c90f8
5 changed files with 76 additions and 63 deletions
|
@ -26,10 +26,10 @@
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
|
namespace DetourNavigator
|
||||||
|
{
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
using namespace DetourNavigator;
|
|
||||||
|
|
||||||
struct Rectangle
|
struct Rectangle
|
||||||
{
|
{
|
||||||
TileBounds mBounds;
|
TileBounds mBounds;
|
||||||
|
@ -388,6 +388,7 @@ namespace
|
||||||
return power;
|
return power;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} // namespace DetourNavigator
|
||||||
|
|
||||||
namespace DetourNavigator
|
namespace DetourNavigator
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,14 +9,11 @@
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
namespace
|
inline bool operator==(const dtMeshHeader& lhs, const dtMeshHeader& rhs) noexcept
|
||||||
|
{
|
||||||
|
const auto makeTuple = [] (const dtMeshHeader& v)
|
||||||
{
|
{
|
||||||
using DetourNavigator::ArrayRef;
|
using DetourNavigator::ArrayRef;
|
||||||
using DetourNavigator::Ref;
|
|
||||||
using DetourNavigator::Span;
|
|
||||||
|
|
||||||
auto makeTuple(const dtMeshHeader& v)
|
|
||||||
{
|
|
||||||
return std::tuple(
|
return std::tuple(
|
||||||
v.x,
|
v.x,
|
||||||
v.y,
|
v.y,
|
||||||
|
@ -39,47 +36,46 @@ namespace
|
||||||
ArrayRef(v.bmax),
|
ArrayRef(v.bmax),
|
||||||
v.bvQuantFactor
|
v.bvQuantFactor
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto makeTuple(const dtPoly& v)
|
inline bool operator==(const dtPoly& lhs, const dtPoly& rhs) noexcept
|
||||||
{
|
{
|
||||||
|
const auto makeTuple = [] (const dtPoly& v)
|
||||||
|
{
|
||||||
|
using DetourNavigator::ArrayRef;
|
||||||
return std::tuple(ArrayRef(v.verts), ArrayRef(v.neis), v.flags, v.vertCount, v.areaAndtype);
|
return std::tuple(ArrayRef(v.verts), ArrayRef(v.neis), v.flags, v.vertCount, v.areaAndtype);
|
||||||
|
};
|
||||||
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto makeTuple(const dtPolyDetail& v)
|
inline bool operator==(const dtPolyDetail& lhs, const dtPolyDetail& rhs) noexcept
|
||||||
|
{
|
||||||
|
const auto makeTuple = [] (const dtPolyDetail& v)
|
||||||
{
|
{
|
||||||
return std::tuple(v.vertBase, v.triBase, v.vertCount, v.triCount);
|
return std::tuple(v.vertBase, v.triBase, v.vertCount, v.triCount);
|
||||||
|
};
|
||||||
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto makeTuple(const dtBVNode& v)
|
inline bool operator==(const dtBVNode& lhs, const dtBVNode& rhs) noexcept
|
||||||
{
|
{
|
||||||
|
const auto makeTuple = [] (const dtBVNode& v)
|
||||||
|
{
|
||||||
|
using DetourNavigator::ArrayRef;
|
||||||
return std::tuple(ArrayRef(v.bmin), ArrayRef(v.bmax), v.i);
|
return std::tuple(ArrayRef(v.bmin), ArrayRef(v.bmax), v.i);
|
||||||
|
};
|
||||||
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto makeTuple(const dtOffMeshConnection& v)
|
inline bool operator==(const dtOffMeshConnection& lhs, const dtOffMeshConnection& rhs) noexcept
|
||||||
{
|
{
|
||||||
|
const auto makeTuple = [] (const dtOffMeshConnection& v)
|
||||||
|
{
|
||||||
|
using DetourNavigator::ArrayRef;
|
||||||
return std::tuple(ArrayRef(v.pos), v.rad, v.poly, v.flags, v.side, v.userId);
|
return std::tuple(ArrayRef(v.pos), v.rad, v.poly, v.flags, v.side, v.userId);
|
||||||
}
|
};
|
||||||
|
|
||||||
auto makeTuple(const DetourNavigator::NavMeshTileConstView& v)
|
|
||||||
{
|
|
||||||
return std::tuple(
|
|
||||||
Ref(*v.mHeader),
|
|
||||||
Span(v.mPolys, v.mHeader->polyCount),
|
|
||||||
Span(v.mVerts, v.mHeader->vertCount),
|
|
||||||
Span(v.mDetailMeshes, v.mHeader->detailMeshCount),
|
|
||||||
Span(v.mDetailVerts, v.mHeader->detailVertCount),
|
|
||||||
Span(v.mDetailTris, v.mHeader->detailTriCount),
|
|
||||||
Span(v.mBvTree, v.mHeader->bvNodeCount),
|
|
||||||
Span(v.mOffMeshCons, v.mHeader->offMeshConCount)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
inline auto operator==(const T& lhs, const T& rhs)
|
|
||||||
-> std::enable_if_t<std::is_same_v<std::void_t<decltype(makeTuple(lhs))>, void>, bool>
|
|
||||||
{
|
|
||||||
return makeTuple(lhs) == makeTuple(rhs);
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,8 +135,23 @@ namespace DetourNavigator
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const NavMeshTileConstView& lhs, const NavMeshTileConstView& rhs)
|
bool operator==(const NavMeshTileConstView& lhs, const NavMeshTileConstView& rhs) noexcept
|
||||||
{
|
{
|
||||||
|
using DetourNavigator::Ref;
|
||||||
|
using DetourNavigator::Span;
|
||||||
|
const auto makeTuple = [] (const DetourNavigator::NavMeshTileConstView& v)
|
||||||
|
{
|
||||||
|
return std::tuple(
|
||||||
|
Ref(*v.mHeader),
|
||||||
|
Span(v.mPolys, v.mHeader->polyCount),
|
||||||
|
Span(v.mVerts, v.mHeader->vertCount),
|
||||||
|
Span(v.mDetailMeshes, v.mHeader->detailMeshCount),
|
||||||
|
Span(v.mDetailVerts, v.mHeader->detailVertCount),
|
||||||
|
Span(v.mDetailTris, v.mHeader->detailTriCount),
|
||||||
|
Span(v.mBvTree, v.mHeader->bvNodeCount),
|
||||||
|
Span(v.mOffMeshCons, v.mHeader->offMeshConCount)
|
||||||
|
);
|
||||||
|
};
|
||||||
return makeTuple(lhs) == makeTuple(rhs);
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace DetourNavigator
|
||||||
const dtBVNode* mBvTree;
|
const dtBVNode* mBvTree;
|
||||||
const dtOffMeshConnection* mOffMeshCons;
|
const dtOffMeshConnection* mOffMeshCons;
|
||||||
|
|
||||||
friend bool operator==(const NavMeshTileConstView& lhs, const NavMeshTileConstView& rhs);
|
friend bool operator==(const NavMeshTileConstView& lhs, const NavMeshTileConstView& rhs) noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
NavMeshTileConstView asNavMeshTileConstView(const unsigned char* data);
|
NavMeshTileConstView asNavMeshTileConstView(const unsigned char* data);
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
using namespace DetourNavigator;
|
|
||||||
|
|
||||||
void initPolyMeshDetail(rcPolyMeshDetail& value) noexcept
|
void initPolyMeshDetail(rcPolyMeshDetail& value) noexcept
|
||||||
{
|
{
|
||||||
value.meshes = nullptr;
|
value.meshes = nullptr;
|
||||||
|
@ -26,13 +24,6 @@ namespace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
|
||||||
inline constexpr auto operator==(const T& lhs, const T& rhs) noexcept
|
|
||||||
-> std::enable_if_t<std::is_same_v<std::void_t<decltype(makeTuple(lhs))>, void>, bool>
|
|
||||||
{
|
|
||||||
return makeTuple(lhs) == makeTuple(rhs);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace DetourNavigator
|
namespace DetourNavigator
|
||||||
{
|
{
|
||||||
PreparedNavMeshData::PreparedNavMeshData() noexcept
|
PreparedNavMeshData::PreparedNavMeshData() noexcept
|
||||||
|
|
|
@ -9,10 +9,11 @@
|
||||||
|
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
namespace DetourNavigator
|
inline bool operator==(const rcPolyMesh& lhs, const rcPolyMesh& rhs) noexcept
|
||||||
{
|
{
|
||||||
constexpr auto makeTuple(const rcPolyMesh& v) noexcept
|
const auto makeTuple = [] (const rcPolyMesh& v)
|
||||||
{
|
{
|
||||||
|
using namespace DetourNavigator;
|
||||||
return std::tuple(
|
return std::tuple(
|
||||||
Span(v.verts, static_cast<int>(getVertsLength(v))),
|
Span(v.verts, static_cast<int>(getVertsLength(v))),
|
||||||
Span(v.polys, static_cast<int>(getPolysLength(v))),
|
Span(v.polys, static_cast<int>(getPolysLength(v))),
|
||||||
|
@ -26,18 +27,27 @@ namespace DetourNavigator
|
||||||
v.borderSize,
|
v.borderSize,
|
||||||
v.maxEdgeError
|
v.maxEdgeError
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr auto makeTuple(const rcPolyMeshDetail& v) noexcept
|
inline bool operator==(const rcPolyMeshDetail& lhs, const rcPolyMeshDetail& rhs) noexcept
|
||||||
{
|
{
|
||||||
|
const auto makeTuple = [] (const rcPolyMeshDetail& v)
|
||||||
|
{
|
||||||
|
using namespace DetourNavigator;
|
||||||
return std::tuple(
|
return std::tuple(
|
||||||
Span(v.meshes, static_cast<int>(getMeshesLength(v))),
|
Span(v.meshes, static_cast<int>(getMeshesLength(v))),
|
||||||
Span(v.verts, static_cast<int>(getVertsLength(v))),
|
Span(v.verts, static_cast<int>(getVertsLength(v))),
|
||||||
Span(v.tris, static_cast<int>(getTrisLength(v)))
|
Span(v.tris, static_cast<int>(getTrisLength(v)))
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
return makeTuple(lhs) == makeTuple(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr auto makeTuple(const PreparedNavMeshData& v) noexcept
|
namespace DetourNavigator
|
||||||
|
{
|
||||||
|
inline auto makeTuple(const PreparedNavMeshData& v) noexcept
|
||||||
{
|
{
|
||||||
return std::tuple(
|
return std::tuple(
|
||||||
v.mUserId,
|
v.mUserId,
|
||||||
|
|
Loading…
Reference in a new issue