#pragma once namespace RE { template class hkRelArray { public: hkRelArray(){}; T& operator[](const std::int32_t a_index) { assert(a_index >= 0); assert(a_index < m_size); return reinterpret_cast(reinterpret_cast(this) + m_offset)[a_index]; } const T& operator[](const std::int32_t a_index) const { assert(a_index >= 0); assert(a_index < m_size); return reinterpret_cast(reinterpret_cast(this) + m_offset)[a_index]; } T* begin() { return reinterpret_cast(reinterpret_cast(this) + m_offset); } const T* begin() const { return reinterpret_cast(reinterpret_cast(this) + m_offset); } protected: std::uint16_t m_size; // 0x00 std::uint16_t m_offset; // 0x02 }; static_assert(sizeof(hkRelArray) == 0x4); }