CommonLibSSE (powerof3)
NiControllerSequence.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSFixedString.h"
4 #include "RE/M/MemoryManager.h"
5 #include "RE/N/NiObject.h"
6 #include "RE/N/NiSmartPointer.h"
8 
9 namespace RE
10 {
11  class BSAnimNote;
12  class NiAVObject;
13  class NiBlendInterpolator;
14  class NiControllerManager;
15  class NiInterpController;
16  class NiInterpolator;
17  class NiStringPalette;
18  class NiTextKeyExtraData;
19 
21 
23  {
24  public:
25  inline static constexpr auto RTTI = RTTI_NiControllerSequence;
26  inline static constexpr auto Ni_RTTI = NiRTTI_NiControllerSequence;
27 
28  enum class AnimState
29  {
30  kInactive,
31  kAnimating,
32  kEaseIn,
33  kEaseOut,
35  kTransDest,
37  };
38 
40  {
41  public:
42  // members
45  NiBlendInterpolator* blendInterp; // 10
46  std::uint8_t blendIdx; // 18
47  std::uint8_t pad19; // 19
48  std::uint16_t pad1A; // 1A
49  std::uint32_t pad1C; // 1C
50  };
51  static_assert(sizeof(InterpArrayItem) == 0x20);
52 
53  struct IDTag
54  {
55  public:
56  // members
62  };
63  static_assert(sizeof(IDTag) == 0x28);
64 
65  ~NiControllerSequence() override; // 00
66 
67  // override (NiObject)
68  const NiRTTI* GetRTTI() const override; // 02
69  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
70  void LoadBinary(NiStream& a_stream) override; // 18
71  void LinkObject(NiStream& a_stream) override; // 19
72  bool RegisterStreamables(NiStream& a_stream) override; // 1A
73  void SaveBinary(NiStream& a_stream) override; // 1B
74  bool IsEqual(NiObject* a_object) override; // 1C
75  void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
76  void PostLinkObject(NiStream& a_stream) override; // 1E
77 
78  // add
79  virtual bool Deactivate(float a_easeOutTime, bool a_transition); // 25
80 
81  [[nodiscard]] constexpr bool Animating() const noexcept { return state == AnimState::kAnimating; }
82  [[nodiscard]] constexpr bool Inactive() const noexcept { return state == AnimState::kInactive; }
83 
84  // members
86  std::uint32_t arraySize; // 18
87  std::uint32_t arrayGrowBy; // 1C
90  float seqWeight; // 30
91  std::uint32_t pad34; // 30
94  float frequency; // 44
95  float beginKeyTime; // 48
96  float endKeyTime; // 4C
97  float lastTime; // 50
98  float weightedLastTime; // 54
99  float lastScaledTime; // 58
100  std::uint32_t pad5C; // 5C
103  float offset; // 6C
104  float startTime; // 70
105  float endTime; // 74
106  float destFrame; // 78
107  std::uint32_t pad7C; // 7C
112  std::int16_t curAnimNIdx; // A0
113  std::uint16_t unkA2; // A2
114  std::uint32_t unkA4; // A4
116  std::uint16_t numNotes; // B0
117  bool removableObjects; // B2
118  std::uint8_t unkB3; // B3
119  std::uint32_t unkB4; // B4
120  };
121  static_assert(sizeof(NiControllerSequence) == 0xB8);
122 }
Definition: NiAVObject.h:45
Definition: NiControllerManager.h:17
Definition: NiControllerSequence.h:23
NiObject * CreateClone(NiCloningProcess &a_cloning) override
BSFixedString name
Definition: NiControllerSequence.h:85
bool RegisterStreamables(NiStream &a_stream) override
float startTime
Definition: NiControllerSequence.h:104
void ProcessClone(NiCloningProcess &a_cloning) override
std::uint32_t unkB4
Definition: NiControllerSequence.h:119
void LinkObject(NiStream &a_stream) override
void SaveBinary(NiStream &a_stream) override
constexpr bool Inactive() const noexcept
Definition: NiControllerSequence.h:82
std::uint32_t pad34
Definition: NiControllerSequence.h:91
std::uint32_t pad7C
Definition: NiControllerSequence.h:107
float endTime
Definition: NiControllerSequence.h:105
stl::enumeration< AnimState, std::uint32_t > state
Definition: NiControllerSequence.h:102
SimpleArray< IDTag > idTagArray
Definition: NiControllerSequence.h:89
float beginKeyTime
Definition: NiControllerSequence.h:95
std::uint16_t numNotes
Definition: NiControllerSequence.h:116
bool removableObjects
Definition: NiControllerSequence.h:117
NiPointer< NiTextKeyExtraData > textKeys
Definition: NiControllerSequence.h:92
void PostLinkObject(NiStream &a_stream) override
std::uint32_t arraySize
Definition: NiControllerSequence.h:86
AnimState
Definition: NiControllerSequence.h:29
float endKeyTime
Definition: NiControllerSequence.h:96
BSFixedString accumRootName
Definition: NiControllerSequence.h:109
std::uint32_t arrayGrowBy
Definition: NiControllerSequence.h:87
virtual bool Deactivate(float a_easeOutTime, bool a_transition)
float seqWeight
Definition: NiControllerSequence.h:90
NiPointer< NiStringPalette > deprecatedStringPalette
Definition: NiControllerSequence.h:111
float offset
Definition: NiControllerSequence.h:103
float weightedLastTime
Definition: NiControllerSequence.h:98
float lastTime
Definition: NiControllerSequence.h:97
std::uint16_t unkA2
Definition: NiControllerSequence.h:113
bool IsEqual(NiObject *a_object) override
void LoadBinary(NiStream &a_stream) override
const NiRTTI * GetRTTI() const override
NiControllerSequence * partnerSequence
Definition: NiControllerSequence.h:108
float destFrame
Definition: NiControllerSequence.h:106
NiControllerManager * owner
Definition: NiControllerSequence.h:101
float lastScaledTime
Definition: NiControllerSequence.h:99
SimpleArray< InterpArrayItem > interpArray
Definition: NiControllerSequence.h:88
std::int16_t curAnimNIdx
Definition: NiControllerSequence.h:112
~NiControllerSequence() override
std::uint8_t unkB3
Definition: NiControllerSequence.h:118
std::uint32_t unkA4
Definition: NiControllerSequence.h:114
static constexpr auto Ni_RTTI
Definition: NiControllerSequence.h:26
SimpleArray< NiPointer< BSAnimNote > > animNotes
Definition: NiControllerSequence.h:115
float frequency
Definition: NiControllerSequence.h:94
NiAVObject * accumRoot
Definition: NiControllerSequence.h:110
constexpr bool Animating() const noexcept
Definition: NiControllerSequence.h:81
stl::enumeration< NiTimeController::CycleType, std::uint32_t > cycleType
Definition: NiControllerSequence.h:93
std::uint32_t pad5C
Definition: NiControllerSequence.h:100
static constexpr auto RTTI
Definition: NiControllerSequence.h:25
Definition: NiObject.h:37
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiStream.h:6
Definition: MemoryManager.h:240
Definition: AbsorbEffect.h:6
NiSmartPointer(Actor)
constexpr REL::ID NiRTTI_NiControllerSequence
Definition: Offsets_NiRTTI.h:182
constexpr REL::ID RTTI_NiControllerSequence
Definition: Offsets_RTTI.h:5351
Definition: NiControllerSequence.h:54
BSFixedString avObjectName
Definition: NiControllerSequence.h:57
BSFixedString ctlrID
Definition: NiControllerSequence.h:60
BSFixedString interpolatorID
Definition: NiControllerSequence.h:61
BSFixedString ctlrType
Definition: NiControllerSequence.h:59
BSFixedString propertyType
Definition: NiControllerSequence.h:58
Definition: NiControllerSequence.h:40
std::uint32_t pad1C
Definition: NiControllerSequence.h:49
NiBlendInterpolator * blendInterp
Definition: NiControllerSequence.h:45
NiPointer< NiInterpolator > interpolator
Definition: NiControllerSequence.h:43
NiPointer< NiInterpController > interpCtlr
Definition: NiControllerSequence.h:44
std::uint16_t pad1A
Definition: NiControllerSequence.h:48
std::uint8_t blendIdx
Definition: NiControllerSequence.h:46
std::uint8_t pad19
Definition: NiControllerSequence.h:47