CommonLibVR
NiInterpolator.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiObject.h"
4 
5 namespace RE
6 {
7  class NiAVObjectPalette;
8  class NiBoolInterpolator;
9  class NiColorA;
10  class NiObjectNET;
11  class NiPoint3;
12  class NiQuaternion;
13  class NiQuatTransform;
14 
15  class NiInterpolator : public NiObject
16  {
17  public:
18  inline static constexpr auto RTTI = RTTI_NiInterpolator;
19  inline static constexpr auto Ni_RTTI = NiRTTI_NiInterpolator;
20  inline static constexpr auto VTABLE = VTABLE_NiInterpolator;
21 
22  ~NiInterpolator() override; // 00
23 
24  // override (NiObject)
25  const NiRTTI* GetRTTI() const override; // 02
26  void LoadBinary(NiStream& a_stream) override; // 18 - { NiObject::LoadBinary(a_stream); }
27  void LinkObject(NiStream& a_stream) override; // 19 - { NiObject::LinkObject(a_stream); }
28  bool RegisterStreamables(NiStream& a_stream) override; // 1A - { return NiObject::RegisterStreamables(a_stream); }
29  void SaveBinary(NiStream& a_stream) override; // 1B - { NiObject::SaveBinary(a_stream); }
30  bool IsEqual(NiObject* a_object) override; // 1C - { return NiObject::IsEqual(a_stream); }
31 
32  // add
33  virtual bool Update1(float a_time, NiObjectNET* a_interpTarget, NiQuatTransform& a_value); // 25 - { return false; }
34  virtual bool Update2(float a_time, NiObjectNET* a_interpTarget, NiColorA& a_value); // 26 - { return false; }
35  virtual bool Update3(float a_time, NiObjectNET* a_interpTarget, NiPoint3& a_value); // 27 - { return false; }
36  virtual bool Update4(float a_time, NiObjectNET* a_interpTarget, NiQuaternion& a_value); // 28 - { return false; }
37  virtual bool Update5(float a_time, NiObjectNET* a_interpTarget, float& a_value); // 29 - { return false; }
38  virtual bool Update6(float a_time, NiObjectNET* a_interpTarget, bool& a_value); // 2A - { return false; }
39  [[nodiscard]] virtual bool IsBoolValueSupported() const; // 2B - { return false; }
40  [[nodiscard]] virtual bool IsFloatValueSupported() const; // 2C - { return false; }
41  [[nodiscard]] virtual bool IsQuaternionValueSupported() const; // 2D - { return false; }
42  [[nodiscard]] virtual bool IsPoint3ValueSupported() const; // 2E - { return false; }
43  [[nodiscard]] virtual bool IsColorAValueSupported() const; // 2F - { return false; }
44  [[nodiscard]] virtual bool IsTransformValueSupported() const; // 30 - { return false; }
45  virtual void Collapse(); // 31 - { return; }
46  virtual void GetActiveTimeRange(float& a_beginKeyTime, float& a_endKeyTime) const; // 32 - { a_beginKeyTime = 0.0; a_endKeyTime = 0.0; }
47  virtual void GuaranteeTimeRange(float a_startTime, float a_endTime); // 33 - { return; }
48  virtual NiInterpolator* GetSequenceInterpolator(float a_startTime, float a_endTime); // 34
49  virtual bool ResolveDependencies(NiAVObjectPalette* a_palette); // 35 - { return true; }
50  virtual bool SetUpDependencies(); // 36 - { return true; }
51  [[nodiscard]] virtual bool AlwaysUpdate() const; // 37 - { return false; }
52  virtual NiBoolInterpolator* AsNiBoolInterpolator(); // 38 - { return 0; }
53 
54  bool Update(float a_time, NiObjectNET* a_interpTarget, NiQuatTransform& a_value);
55  bool Update(float a_time, NiObjectNET* a_interpTarget, NiColorA& a_value);
56  bool Update(float a_time, NiObjectNET* a_interpTarget, NiPoint3& a_value);
57  bool Update(float a_time, NiObjectNET* a_interpTarget, NiQuaternion& a_value);
58  bool Update(float a_time, NiObjectNET* a_interpTarget, float& a_value);
59  bool Update(float a_time, NiObjectNET* a_interpTarget, bool& a_value);
60 
61  // members
62  float lastTime; // 10
63  std::uint32_t pad14; // 14
64  private:
65  KEEP_FOR_RE()
66  };
67  static_assert(sizeof(NiInterpolator) == 0x18);
68 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: NiColor.h:283
Definition: NiInterpolator.h:16
virtual bool IsFloatValueSupported() const
virtual bool Update5(float a_time, NiObjectNET *a_interpTarget, float &a_value)
static constexpr auto VTABLE
Definition: NiInterpolator.h:20
bool Update(float a_time, NiObjectNET *a_interpTarget, NiQuaternion &a_value)
const NiRTTI * GetRTTI() const override
virtual bool AlwaysUpdate() const
virtual NiInterpolator * GetSequenceInterpolator(float a_startTime, float a_endTime)
virtual bool Update1(float a_time, NiObjectNET *a_interpTarget, NiQuatTransform &a_value)
virtual void GuaranteeTimeRange(float a_startTime, float a_endTime)
virtual bool SetUpDependencies()
~NiInterpolator() override
bool IsEqual(NiObject *a_object) override
virtual void GetActiveTimeRange(float &a_beginKeyTime, float &a_endKeyTime) const
virtual bool IsColorAValueSupported() const
bool Update(float a_time, NiObjectNET *a_interpTarget, float &a_value)
virtual bool Update2(float a_time, NiObjectNET *a_interpTarget, NiColorA &a_value)
std::uint32_t pad14
Definition: NiInterpolator.h:63
void SaveBinary(NiStream &a_stream) override
bool Update(float a_time, NiObjectNET *a_interpTarget, NiColorA &a_value)
virtual bool IsQuaternionValueSupported() const
static constexpr auto Ni_RTTI
Definition: NiInterpolator.h:19
bool RegisterStreamables(NiStream &a_stream) override
void LoadBinary(NiStream &a_stream) override
virtual bool IsBoolValueSupported() const
virtual NiBoolInterpolator * AsNiBoolInterpolator()
void LinkObject(NiStream &a_stream) override
virtual bool Update4(float a_time, NiObjectNET *a_interpTarget, NiQuaternion &a_value)
bool Update(float a_time, NiObjectNET *a_interpTarget, NiQuatTransform &a_value)
static constexpr auto RTTI
Definition: NiInterpolator.h:18
bool Update(float a_time, NiObjectNET *a_interpTarget, NiPoint3 &a_value)
virtual bool Update6(float a_time, NiObjectNET *a_interpTarget, bool &a_value)
virtual bool Update3(float a_time, NiObjectNET *a_interpTarget, NiPoint3 &a_value)
float lastTime
Definition: NiInterpolator.h:62
virtual bool IsTransformValueSupported() const
virtual void Collapse()
virtual bool ResolveDependencies(NiAVObjectPalette *a_palette)
bool Update(float a_time, NiObjectNET *a_interpTarget, bool &a_value)
virtual bool IsPoint3ValueSupported() const
Definition: NiObjectNET.h:13
Definition: NiObject.h:37
Definition: NiPoint3.h:6
Definition: NiQuaternion.h:6
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_NiInterpolator(static_cast< std::uint64_t >(524353))
constexpr REL::ID RTTI_NiInterpolator(static_cast< std::uint64_t >(690508))
constexpr std::array< REL::ID, 1 > VTABLE_NiInterpolator
Definition: Offsets_VTABLE.h:12221