#pragma once #include "RE/B/BSMagicShaderParticles.h" #include "RE/B/BSModelDB.h" #include "RE/B/BSSoundHandle.h" #include "RE/B/BSTArray.h" #include "RE/B/BSTTuple.h" #include "RE/N/NiPointer.h" #include "RE/R/ReferenceEffect.h" namespace RE { class BSEffectShaderData; class NiAVObject; class NiSourceTexture; class NiTexture; class __declspec(novtable) ShaderReferenceEffect : public ReferenceEffect // 00 { public: static constexpr auto RTTI{ RTTI::ShaderReferenceEffect }; static constexpr auto VTABLE{ VTABLE::ShaderReferenceEffect }; static constexpr auto Ni_RTTI{ Ni_RTTI::ShaderReferenceEffect }; static constexpr auto TYPE{ TEMP_EFFECT_TYPE::kRefShader }; ~ShaderReferenceEffect() override; enum class Flag { kThirdPerson = 0x0, kInterfaceEffect = 0x1, kRestart = 0x2, kAllTexturesAvailable = 0x3, kParticleShadersStarted = 0x4, kSuspended = 0x5, kDisallowTargetRoot = 0x6 }; // members BSMagicShaderParticles particles; // 048 BSTArray*>> textureRequests; // 068 - TextureDB::Handle BSTArray> addOnObjects; // 080 BSTArray modelHandles; // 098 - BSModelDB::Handle BSTArray> targetArray; // 0B0 BSSoundHandle soundHandle; // 0C8 NiPointer textureShaderTexture; // 0D0 NiPointer textureBlockOutTexture; // 0D8 NiPointer texturePaletteTexture; // 0E0 TESBoundObject* wornObject; // 0E8 TESEffectShader* effectData; // 0F0 BSEffectShaderData* effectShaderData; // 0F8 NiPointer lastRootNode; // 100 float alphaTimer; // 104 float addonAlpha; // 108 float addonScale; // 10C float effectShaderAge; // 110 std::uint32_t flags; // 114 std::uint32_t pushCount; // 118 }; static_assert(sizeof(ShaderReferenceEffect) == 0x120); }