mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-03 17:37:18 +00:00
ed73d130f9
Use LRU modification to hold currently used items. Use RecastMesh binary data for item key. Store original pointer of btCollisionShape in user pointer to make available it as an identifier within all duplicates. Use pointer to heights data array for btHeightfieldTerrainShape.
51 lines
1.0 KiB
C++
51 lines
1.0 KiB
C++
#ifndef OPENMW_COMPONENTS_DETOURNAVIGATOR_OBJECTID_H
|
|
#define OPENMW_COMPONENTS_DETOURNAVIGATOR_OBJECTID_H
|
|
|
|
#include <cstddef>
|
|
#include <unordered_map>
|
|
|
|
namespace DetourNavigator
|
|
{
|
|
class ObjectId
|
|
{
|
|
public:
|
|
template <class T>
|
|
explicit ObjectId(const T value) throw()
|
|
: mValue(reinterpret_cast<std::size_t>(value))
|
|
{
|
|
}
|
|
|
|
std::size_t value() const throw()
|
|
{
|
|
return mValue;
|
|
}
|
|
|
|
friend bool operator <(const ObjectId lhs, const ObjectId rhs) throw()
|
|
{
|
|
return lhs.mValue < rhs.mValue;
|
|
}
|
|
|
|
friend bool operator ==(const ObjectId lhs, const ObjectId rhs) throw()
|
|
{
|
|
return lhs.mValue == rhs.mValue;
|
|
}
|
|
|
|
private:
|
|
std::size_t mValue;
|
|
};
|
|
}
|
|
|
|
namespace std
|
|
{
|
|
template <>
|
|
struct hash<DetourNavigator::ObjectId>
|
|
{
|
|
std::size_t operator ()(const DetourNavigator::ObjectId value) const throw()
|
|
{
|
|
return value.value();
|
|
}
|
|
};
|
|
}
|
|
|
|
#endif
|