CommonLibSSE NG
NiInterpController.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 namespace RE
6 {
7  class NiBlendInterpolator;
8  class NiInterpolator;
9 
11  {
12  public:
13  inline static constexpr auto RTTI = RTTI_NiInterpController;
14  inline static auto Ni_RTTI = NiRTTI_NiInterpController;
15 
16  ~NiInterpController() override; // 00
17 
18  // override (NiTimeController)
19  const NiRTTI* GetRTTI() const override; // 02
20  void LoadBinary(NiStream& a_stream) override; // 18 - { NiTimeController::LoadBinary(a_stream); }
21  void LinkObject(NiStream& a_stream) override; // 19 - { NiTimeController::LinkObject(a_stream); }
22  bool RegisterStreamables(NiStream& a_stream) override; // 1A - { return NiTimeController::RegisterStreamables(a_stream); }
23  void SaveBinary(NiStream& a_stream) override; // 1B - { NiTimeController::SaveBinary(a_stream); }
24  bool IsEqual(NiObject* a_object) override; // 1C - { NiTimeController::IsEqual(a_object); }
25 
26  // add
27  [[nodiscard]] virtual std::uint16_t GetInterpolatorCount() const = 0; // 2F
28  virtual const char* GetInterpolatorID(std::uint16_t a_index = 0) = 0; // 30
29  virtual std::uint16_t GetInterpolatorIndex(const char* a_id) const = 0; // 31
30  [[nodiscard]] virtual std::uint16_t GetInterpolatorIndexFx(const BSFixedString& a_id) const = 0; // 32
31  [[nodiscard]] virtual NiInterpolator* GetInterpolator(std::uint16_t a_index = 0) const = 0; // 33
32  virtual void SetInterpolator(NiInterpolator* a_interpolator, std::uint16_t a_index = 0) = 0; // 34
33  virtual void ResetTimeExtrema(); // 35
34  virtual const char* GetCtlrID(); // 36 - { return 0; }
35  virtual NiInterpolator* CreatePoseInterpolator(std::uint16_t a_index) = 0; // 37
36  virtual void SynchronizePoseInterpolator(NiInterpolator* a_interp, std::uint16_t a_index = 0) = 0; // 38
37  [[nodiscard]] virtual NiBlendInterpolator* CreateBlendInterpolator(std::uint16_t a_index = 0, bool a_managerControlled = false, bool a_accumulateAnimations = false, float a_weightThreshold = 0.0, std::uint8_t a_arraySize = 2) const = 0; // 39
38  virtual void GuaranteeTimeRange(float a_startTime, float a_endTime) = 0; // 3A
39  virtual bool InterpolatorIsCorrectType(NiInterpolator* a_interpolator, std::uint16_t a_index) const = 0; // 3B
40  };
41  static_assert(sizeof(NiInterpController) == 0x48);
42 }
Definition: NiInterpController.h:11
static auto Ni_RTTI
Definition: NiInterpController.h:14
virtual std::uint16_t GetInterpolatorCount() const =0
virtual const char * GetInterpolatorID(std::uint16_t a_index=0)=0
virtual std::uint16_t GetInterpolatorIndexFx(const BSFixedString &a_id) const =0
bool IsEqual(NiObject *a_object) override
virtual NiBlendInterpolator * CreateBlendInterpolator(std::uint16_t a_index=0, bool a_managerControlled=false, bool a_accumulateAnimations=false, float a_weightThreshold=0.0, std::uint8_t a_arraySize=2) const =0
void LoadBinary(NiStream &a_stream) override
virtual NiInterpolator * CreatePoseInterpolator(std::uint16_t a_index)=0
virtual void GuaranteeTimeRange(float a_startTime, float a_endTime)=0
virtual NiInterpolator * GetInterpolator(std::uint16_t a_index=0) const =0
~NiInterpController() override
virtual void ResetTimeExtrema()
virtual void SynchronizePoseInterpolator(NiInterpolator *a_interp, std::uint16_t a_index=0)=0
static constexpr auto RTTI
Definition: NiInterpController.h:13
void LinkObject(NiStream &a_stream) override
bool RegisterStreamables(NiStream &a_stream) override
const NiRTTI * GetRTTI() const override
virtual std::uint16_t GetInterpolatorIndex(const char *a_id) const =0
void SaveBinary(NiStream &a_stream) override
virtual void SetInterpolator(NiInterpolator *a_interpolator, std::uint16_t a_index=0)=0
virtual bool InterpolatorIsCorrectType(NiInterpolator *a_interpolator, std::uint16_t a_index) const =0
virtual const char * GetCtlrID()
Definition: NiInterpolator.h:16
Definition: NiObject.h:37
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: NiTimeController.h:13
Definition: AbsorbEffect.h:6
constexpr REL::VariantID NiRTTI_NiInterpController(524063, 410644, 0x316c4d8)
constexpr REL::VariantID RTTI_NiInterpController(690506, 398361, 0x1f62e98)