#pragma once #include "RE/B/BSFixedString.h" #include "RE/B/BSResource_Stream.h" #include "RE/B/BSTSmartPointer.h" #include "RE/N/NiObject.h" namespace RE { namespace BSGraphics { class Texture; } namespace BSTextureArray { class Texture; } class __declspec(novtable) NiTexture : public NiObject // 00 { public: static constexpr auto RTTI{ RTTI::NiTexture }; static constexpr auto VTABLE{ VTABLE::NiTexture }; static constexpr auto Ni_RTTI{ Ni_RTTI::NiTexture }; // add virtual BSTextureArray::Texture* IsBSTextureArray() { return nullptr; } // 28 static void SetAllowDegrade(bool a_allow) { using func_t = decltype(&NiTexture::SetAllowDegrade); static REL::Relocation func{ ID::NiTexture::SetAllowDegrade }; return func(a_allow); } [[nodiscard]] std::string_view GetName() const { return name; } // members BSFixedString name; // 10 std::uint32_t flags; // 18 NiTexture* prev; // 29 NiTexture* next; // 28 BSTSmartPointer stream; // 30 BSGraphics::Texture* rendererTexture; // 38 std::int8_t desiredDegradeLevel; // 40 std::int8_t savedDegradeLevel; // 41 bool isDDX: 1; // 42:0 bool isSRGB: 1; // 42:1 }; static_assert(sizeof(NiTexture) == 0x48); }