CommonLibVR
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 constexpr auto Ni_RTTI = NiRTTI_NiInterpController;
15  inline static constexpr auto VTABLE = VTABLE_NiInterpController;
16 
17  ~NiInterpController() override; // 00
18 
19  // override (NiTimeController)
20  const NiRTTI* GetRTTI() const override; // 02
21  void LoadBinary(NiStream& a_stream) override; // 18 - { NiTimeController::LoadBinary(a_stream); }
22  void LinkObject(NiStream& a_stream) override; // 19 - { NiTimeController::LinkObject(a_stream); }
23  bool RegisterStreamables(NiStream& a_stream) override; // 1A - { return NiTimeController::RegisterStreamables(a_stream); }
24  void SaveBinary(NiStream& a_stream) override; // 1B - { NiTimeController::SaveBinary(a_stream); }
25  bool IsEqual(NiObject* a_object) override; // 1C - { NiTimeController::IsEqual(a_object); }
26 
27  // add
28  [[nodiscard]] virtual std::uint16_t GetInterpolatorCount() const = 0; // 2F
29  virtual const char* GetInterpolatorID(std::uint16_t a_index = 0) = 0; // 30
30  virtual std::uint16_t GetInterpolatorIndex(const char* a_id) const = 0; // 31
31  [[nodiscard]] virtual std::uint16_t GetInterpolatorIndexFx(const BSFixedString& a_id) const = 0; // 32
32  [[nodiscard]] virtual NiInterpolator* GetInterpolator(std::uint16_t a_index = 0) const = 0; // 33
33  virtual void SetInterpolator(NiInterpolator* a_interpolator, std::uint16_t a_index = 0) = 0; // 34
34  virtual void ResetTimeExtrema(); // 35
35  virtual const char* GetCtlrID(); // 36 - { return 0; }
36  virtual NiInterpolator* CreatePoseInterpolator(std::uint16_t a_index) = 0; // 37
37  virtual void SynchronizePoseInterpolator(NiInterpolator* a_interp, std::uint16_t a_index = 0) = 0; // 38
38  [[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
39  virtual void GuaranteeTimeRange(float a_startTime, float a_endTime) = 0; // 3A
40  virtual bool InterpolatorIsCorrectType(NiInterpolator* a_interpolator, std::uint16_t a_index) const = 0; // 3B
41  private:
42  KEEP_FOR_RE()
43  };
44  static_assert(sizeof(NiInterpController) == 0x48);
45 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: NiInterpController.h:11
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
static constexpr auto Ni_RTTI
Definition: NiInterpController.h:14
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
static constexpr auto VTABLE
Definition: NiInterpController.h:15
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::ID NiRTTI_NiInterpController(static_cast< std::uint64_t >(524063))
constexpr std::array< REL::ID, 1 > VTABLE_NiInterpController
Definition: Offsets_VTABLE.h:12220
constexpr REL::ID RTTI_NiInterpController(static_cast< std::uint64_t >(690506))