diff --git a/components/esm3/esmreader.hpp b/components/esm3/esmreader.hpp index 606d2a1e32..bd66b13b5f 100644 --- a/components/esm3/esmreader.hpp +++ b/components/esm3/esmreader.hpp @@ -17,8 +17,25 @@ namespace ESM { template - constexpr bool IsReadable - = std::is_arithmetic_v || std::is_enum_v || (std::is_array_v && IsReadable>); + struct GetArray + { + using type = void; + }; + template + struct GetArray> + { + using type = T; + }; + template + struct GetArray + { + using type = T; + }; + + template + constexpr bool IsReadable = std::is_arithmetic_v || std::is_enum_v || IsReadable::type>; + template <> + constexpr bool IsReadable = false; class ReadersCache; diff --git a/components/esm3/loadcont.cpp b/components/esm3/loadcont.cpp index e71352412b..d016654fea 100644 --- a/components/esm3/loadcont.cpp +++ b/components/esm3/loadcont.cpp @@ -53,11 +53,11 @@ namespace ESM mName = esm.getHString(); break; case fourCC("CNDT"): - esm.getHTSized<4>(mWeight); + esm.getHT(mWeight); hasWeight = true; break; case fourCC("FLAG"): - esm.getHTSized<4>(mFlags); + esm.getHT(mFlags); if (mFlags & 0xf4) esm.fail("Unknown flags"); if (!(mFlags & 0x8)) diff --git a/components/esm3/loadsndg.cpp b/components/esm3/loadsndg.cpp index 3e5d8f373e..4e2e2aa3f9 100644 --- a/components/esm3/loadsndg.cpp +++ b/components/esm3/loadsndg.cpp @@ -23,7 +23,7 @@ namespace ESM hasName = true; break; case fourCC("DATA"): - esm.getHTSized<4>(mType); + esm.getHT(mType); hasData = true; break; case fourCC("CNAM"): diff --git a/components/esm3/objectstate.cpp b/components/esm3/objectstate.cpp index 308d953451..a56988843a 100644 --- a/components/esm3/objectstate.cpp +++ b/components/esm3/objectstate.cpp @@ -35,7 +35,7 @@ namespace ESM if (esm.isNextSub("POS_")) { std::array pos; - esm.getHTSized<24>(pos); + esm.getHT(pos); memcpy(mPosition.pos, pos.data(), sizeof(float) * 3); memcpy(mPosition.rot, pos.data() + 3, sizeof(float) * 3); }