1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-30 07:21:12 +00:00

Add RefId::is

This commit is contained in:
Evil Eye 2023-04-13 17:43:13 +02:00
parent 4e0eb75094
commit 97fb06d8c9
3 changed files with 9 additions and 14 deletions

View File

@ -114,13 +114,8 @@ namespace MWGui
store->listIdentifier(ids);
for (auto id : ids)
{
visit(
[&](auto&& variant) {
using T = std::decay_t<decltype(variant)>;
if constexpr (std::is_same_v<T, ESM::StringRefId>)
mNames.push_back(id.getRefIdString());
},
id);
if (id.is<ESM::StringRefId>())
mNames.push_back(id.getRefIdString());
}
ids.clear();
}

View File

@ -3359,13 +3359,7 @@ namespace MWWorld
if (!ref.mRef.getTeleport())
continue;
bool isExterior = visit(
[](auto&& variant) {
using T = std::decay_t<decltype(variant)>;
return std::is_same_v<T, ESM::ESM3ExteriorCellRefId>;
},
ref.mRef.getDestCell());
if (isExterior)
if (ref.mRef.getDestCell().is<ESM::ESM3ExteriorCellRefId>())
{
osg::Vec3f worldPos = ref.mRef.getDoorDest().asVec3();
return getClosestMarkerFromExteriorPosition(worldPos, id);

View File

@ -142,6 +142,12 @@ namespace ESM
return std::get_if<T>(&mValue);
}
template <class T>
bool is() const
{
return std::holds_alternative<T>(mValue);
}
friend constexpr bool operator==(const RefId& l, const RefId& r) { return l.mValue == r.mValue; }
bool operator==(std::string_view rhs) const;