CommonLibSSE (powerof3)
hkaAnimation.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/H/hkRefPtr.h"
7 
8 namespace RE
9 {
10  class hkaChunkCache;
11 
13  {
14  public:
15  inline static constexpr auto RTTI = RTTI_hkaAnimation;
16  inline static constexpr auto VTABLE = VTABLE_hkaAnimation;
17 
18  enum class AnimationType
19  {
27  };
28 
29  struct DataChunk
30  {
31  const void* data; // 00
32  std::uint32_t size; // 08
33  std::uint8_t offset; // 0C
34  };
35 
37  {
38  // The bone ID which is annotated
39  std::uint16_t trackID;
41  };
42 
43  // add
44  virtual void SampleTracks(float a_time, hkQsTransform* a_transformTracksOut, float* a_floatTracksOut, hkaChunkCache* cache) const = 0; // 03
45  virtual void SamplePartialTracks(float a_time, std::uint32_t a_maxNumTransformTracks, hkQsTransform* a_transformTracksOut, std::uint32_t a_maxNumFloatTracks, float* a_floatTracksOut, hkaChunkCache* a_cache) const; // 04
46  virtual void ClearAllCacheKeys(hkaChunkCache* a_cache) const; // 05
47  virtual void SampleIndividualTransformTracks(float a_time, const std::uint16_t* a_tracks, std::uint32_t a_numTracks, hkQsTransform* a_transformOut) const = 0; // 06
48  virtual void SampleIndividualFloatTracks(float a_time, const std::uint16_t* a_tracks, std::uint32_t a_numTracks, float* a_out) const = 0; // 07
49  virtual std::int32_t GetNumOriginalFrames() const = 0; // 08
50  virtual std::int32_t GetNumDataChunks(std::uint32_t a_frame, float a_delta) const; // 09
51  virtual void GetDataChunks(std::uint32_t a_frame, float a_delta, DataChunk* a_dataChunks, std::int32_t a_numDataChunks) const; // 0A
52  virtual std::int32_t GetMaxSizeOfCombinedDataChunks() const; // 0B
53  virtual void GetExtractedMotionReferenceFrame(float a_time, hkQsTransform& a_motionOut) const; // 0C
54  virtual void GetExtractedMotionDeltaReferenceFrame(float a_time, float a_nextTime, std::int32_t a_loops, hkQsTransform& a_deltaMotionOut, float a_cropStartAmount, float a_cropEndAmount) const; // 0D
55  virtual std::uint32_t GetNumAnnotations(float a_startTime, float a_deltaTime) const; // 0E
56  virtual std::uint32_t GetAnnotations(float a_startTime, float a_deltaTime, TrackAnnotation* a_annotationsOut, std::uint32_t a_maxAnnotations) const; // 0F
57 
58  // members
60  float duration; // 14
61  std::int32_t numberOfTransformTracks; // 18
62  std::int32_t numberOfFloatTracks; // 1C
65  };
66  static_assert(sizeof(hkaAnimation) == 0x38);
67 }
Definition: hkArray.h:190
Definition: hkQsTransform.h:9
Definition: hkRefPtr.h:7
Definition: hkReferencedObject.h:11
Definition: hkaAnimation.h:13
REX::EnumSet< AnimationType, std::uint32_t > type
Definition: hkaAnimation.h:59
std::int32_t numberOfTransformTracks
Definition: hkaAnimation.h:61
hkRefPtr< hkaAnimatedReferenceFrame > extractedMotion
Definition: hkaAnimation.h:63
virtual std::int32_t GetMaxSizeOfCombinedDataChunks() const
float duration
Definition: hkaAnimation.h:60
virtual void SampleTracks(float a_time, hkQsTransform *a_transformTracksOut, float *a_floatTracksOut, hkaChunkCache *cache) const =0
virtual void ClearAllCacheKeys(hkaChunkCache *a_cache) const
virtual void GetDataChunks(std::uint32_t a_frame, float a_delta, DataChunk *a_dataChunks, std::int32_t a_numDataChunks) const
virtual std::uint32_t GetNumAnnotations(float a_startTime, float a_deltaTime) const
virtual void GetExtractedMotionReferenceFrame(float a_time, hkQsTransform &a_motionOut) const
virtual std::int32_t GetNumOriginalFrames() const =0
virtual std::int32_t GetNumDataChunks(std::uint32_t a_frame, float a_delta) const
static constexpr auto VTABLE
Definition: hkaAnimation.h:16
AnimationType
Definition: hkaAnimation.h:19
virtual void GetExtractedMotionDeltaReferenceFrame(float a_time, float a_nextTime, std::int32_t a_loops, hkQsTransform &a_deltaMotionOut, float a_cropStartAmount, float a_cropEndAmount) const
virtual void SampleIndividualFloatTracks(float a_time, const std::uint16_t *a_tracks, std::uint32_t a_numTracks, float *a_out) const =0
static constexpr auto RTTI
Definition: hkaAnimation.h:15
virtual std::uint32_t GetAnnotations(float a_startTime, float a_deltaTime, TrackAnnotation *a_annotationsOut, std::uint32_t a_maxAnnotations) const
std::int32_t numberOfFloatTracks
Definition: hkaAnimation.h:62
virtual void SamplePartialTracks(float a_time, std::uint32_t a_maxNumTransformTracks, hkQsTransform *a_transformTracksOut, std::uint32_t a_maxNumFloatTracks, float *a_floatTracksOut, hkaChunkCache *a_cache) const
hkArray< hkaAnnotationTrack > annotationTracks
Definition: hkaAnimation.h:64
virtual void SampleIndividualTransformTracks(float a_time, const std::uint16_t *a_tracks, std::uint32_t a_numTracks, hkQsTransform *a_transformOut) const =0
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_hkaAnimation(static_cast< std::uint64_t >(690064))
constexpr std::array< REL::ID, 1 > VTABLE_hkaAnimation
Definition: Offsets_VTABLE.h:13917
Definition: hkaAnimation.h:30
const void * data
Definition: hkaAnimation.h:31
std::uint8_t offset
Definition: hkaAnimation.h:33
std::uint32_t size
Definition: hkaAnimation.h:32
Definition: hkaAnimation.h:37
std::uint16_t trackID
Definition: hkaAnimation.h:39
hkaAnnotationTrack::Annotation annotation
Definition: hkaAnimation.h:40
Definition: hkaAnnotationTrack.h:12