diff --git a/include/RE/B/BSTerrainEffect.h b/include/RE/B/BSTerrainEffect.h index c089990f2..22a1414ce 100644 --- a/include/RE/B/BSTerrainEffect.h +++ b/include/RE/B/BSTerrainEffect.h @@ -3,6 +3,7 @@ #include "RE/B/BSPointerHandle.h" #include "RE/B/BSTEvent.h" #include "RE/B/BSTempEffect.h" +#include "RE/I/ID.h" #include "RE/N/NiQuaternion.h" #include "RE/N/NiSmartPointer.h" @@ -21,6 +22,16 @@ namespace RE inline static constexpr auto VTABLE = VTABLE_BSTerrainEffect; inline static constexpr auto TYPE = TEMP_EFFECT_TYPE::kTerrain; + struct BoneAdjustment + { + public: + // members + NiMatrix3 rotation; // 00 + NiAVObject* bone; // 28 + float zOffset; // 30 + }; + static_assert(sizeof(BoneAdjustment) == 0x38); + ~BSTerrainEffect() override; // 00 // override (BSTempEffect) @@ -37,18 +48,18 @@ namespace RE BSEventNotifyControl ProcessEvent(const PositionPlayerEvent* a_event, BSTEventSource* a_eventSource) override; // 01 - { return BSEventNotifyControl::kContinue; } // members; - NiQuaternion orientation; // 38 - NiPoint3 location; // 48 - std::uint32_t unk54; // 54 - BSTArray unk58; // 58 - BSTArray unk70; // 70 - NiPointer effectModel; // 88 - NiPoint3 unk90; // 90 - ObjectRefHandle unk9C; // 9C - NiPointer physicsWorld; // A0 - std::uint32_t collisionFilter; // A8 - std::uint32_t unkAC; // AC - NiPointer followNode; // B0 + NiQuaternion orientation; // 38 + NiPoint3 location; // 48 + std::uint32_t pad54; // 54 + BSTArray terrainAdjustments; // 58 + BSTArray dynamicAdjustments; // 70 + NiPointer model; // 88 + BSResource::ID modelID; // 90 + ObjectRefHandle target; // 9C + NiPointer physicsWorld; // A0 + std::uint32_t collisionFilter; // A8 + std::uint32_t padAC; // AC + NiPointer followNode; // B0 }; static_assert(sizeof(BSTerrainEffect) == 0xB8); }