CommonLibSSE (powerof3)
Loading...
Searching...
No Matches
hkpMotion.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/H/hkBaseTypes.h"
6#include "RE/H/hkVector4.h"
7
8namespace RE
9{
10 class hkMatrix3;
11 class hkQuaternion;
12 class hkTransform;
13 class hkpMaxSizeMotion;
14
16 {
17 public:
18 inline static constexpr auto RTTI = RTTI_hkpMotion;
19
20 enum
21 {
23 };
24
25 enum class MotionType
26 {
32 kFixed,
35
36 kTotal
37 };
38
39 ~hkpMotion() override; // 00
40
41 // add
42 virtual void SetMass(float a_mass); // 03 - { SetMassInv(a_mass); }
43 virtual void SetMassInv(float a_massInv); // 04 - { inertiaAndMassInv.quad.m128_f32[3] = a_massInv; }
44 virtual void GetInertiaLocal(hkMatrix3& a_inertiaOut) const = 0; // 05
45 virtual void GetInertiaWorld(hkMatrix3& a_inertiaOut) const = 0; // 06
46 virtual void SetInertiaLocal(const hkMatrix3& a_inertia) = 0; // 07
47 virtual void SetInertiaInvLocal(const hkMatrix3& a_inertiaInv) = 0; // 08
48 virtual void GetInertiaInvLocal(hkMatrix3& a_inertiaInvOut) const = 0; // 09
49 virtual void GetInertiaInvWorld(hkMatrix3& a_inertiaInvOut) const = 0; // 0A
50 virtual void SetCenterOfMassInLocal(const hkVector4& a_centerOfMass); // 0B
51 virtual void SetPosition(const hkVector4& a_position); // 0C
52 virtual void SetRotation(const hkQuaternion& a_rotation); // 0D
53 virtual void SetPositionAndRotation(const hkVector4& a_position, const hkQuaternion& a_rotation); // 0E
54 virtual void SetTransform(const hkTransform& a_transform); // 0F
55 virtual void SetLinearVelocity(const hkVector4& a_newVel); // 10 - { linearVelocity = a_newVel; }
56 virtual void SetAngularVelocity(const hkVector4& a_newVel); // 11 - { angularVelocity = a_newVel; }
57 virtual void GetProjectedPointVelocity(const hkVector4& a_point, const hkVector4& a_normal, float& a_velOut, float& a_invVirtMassOut) const = 0; // 12
58 virtual void ApplyLinearImpulse(const hkVector4& a_impulse); // 13
59 virtual void ApplyPointImpulse(const hkVector4& a_impulse, const hkVector4& a_point) = 0; // 14
60 virtual void ApplyAngularImpulse(const hkVector4& a_impulse) = 0; // 15
61 virtual void ApplyForce(const float a_deltaTime, const hkVector4& a_force) = 0; // 16
62 virtual void ApplyForce(const float a_deltaTime, const hkVector4& a_force, const hkVector4& a_point) = 0; // 17
63 virtual void ApplyTorque(const float a_deltaTime, const hkVector4& a_torque) = 0; // 18
65
66 float GetMass()
67 {
68 float mass = inertiaAndMassInv.quad.m128_f32[3];
69 if (mass != 0.0f) {
70 return 1.0f / mass;
71 }
72 return 0.0f;
73 }
74
75 // members
77 std::uint8_t deactivationIntegrateCounter; // 011
78 std::uint16_t deactivationNumInactiveFrames[2]; // 012
79 std::uint16_t pad016; // 016
80 std::uint64_t pad018; // 018
86 std::uint32_t deactivationRefOrientation[2]; // 120
88 std::uint16_t savedQualityTypeIndex; // 130
89 std::uint16_t pad132; // 132
91 std::uint64_t pad138; // 138
92 };
93 static_assert(sizeof(hkpMotion) == 0x140);
94}
Definition: hkBaseTypes.h:16
Definition: hkMatrix3.h:8
Definition: hkMotionState.h:11
Definition: hkQuaternion.h:8
Definition: hkReferencedObject.h:11
Definition: hkTransform.h:9
Definition: hkVector4.h:9
hkQuadReal quad
Definition: hkVector4.h:53
Definition: hkpKeyframedRigidMotion.h:46
Definition: hkpMotion.h:16
std::uint8_t deactivationIntegrateCounter
Definition: hkpMotion.h:77
stl::enumeration< MotionType, std::uint8_t > type
Definition: hkpMotion.h:76
virtual void GetInertiaInvWorld(hkMatrix3 &a_inertiaInvOut) const =0
hkpMaxSizeMotion * savedMotion
Definition: hkpMotion.h:87
virtual void GetInertiaLocal(hkMatrix3 &a_inertiaOut) const =0
~hkpMotion() override
std::uint64_t pad138
Definition: hkpMotion.h:91
virtual void ApplyAngularImpulse(const hkVector4 &a_impulse)=0
virtual void SetAngularVelocity(const hkVector4 &a_newVel)
virtual void SetInertiaInvLocal(const hkMatrix3 &a_inertiaInv)=0
hkVector4 angularVelocity
Definition: hkpMotion.h:84
virtual void ApplyLinearImpulse(const hkVector4 &a_impulse)
virtual void SetPosition(const hkVector4 &a_position)
virtual void SetRotation(const hkQuaternion &a_rotation)
std::uint16_t pad016
Definition: hkpMotion.h:79
std::uint16_t deactivationNumInactiveFrames[2]
Definition: hkpMotion.h:78
@ kNumInactiveFramesToDeactivate
Definition: hkpMotion.h:22
virtual void GetMotionStateAndVelocitiesAndDeactivationType(hkpMotion *a_motionOut)
std::uint64_t pad018
Definition: hkpMotion.h:80
virtual void SetCenterOfMassInLocal(const hkVector4 &a_centerOfMass)
virtual void GetInertiaWorld(hkMatrix3 &a_inertiaOut) const =0
virtual void SetMassInv(float a_massInv)
virtual void GetProjectedPointVelocity(const hkVector4 &a_point, const hkVector4 &a_normal, float &a_velOut, float &a_invVirtMassOut) const =0
virtual void SetPositionAndRotation(const hkVector4 &a_position, const hkQuaternion &a_rotation)
virtual void SetTransform(const hkTransform &a_transform)
static constexpr auto RTTI
Definition: hkpMotion.h:18
virtual void ApplyPointImpulse(const hkVector4 &a_impulse, const hkVector4 &a_point)=0
virtual void ApplyTorque(const float a_deltaTime, const hkVector4 &a_torque)=0
virtual void ApplyForce(const float a_deltaTime, const hkVector4 &a_force)=0
virtual void ApplyForce(const float a_deltaTime, const hkVector4 &a_force, const hkVector4 &a_point)=0
hkVector4 inertiaAndMassInv
Definition: hkpMotion.h:82
virtual void SetMass(float a_mass)
hkMotionState motionState
Definition: hkpMotion.h:81
hkVector4 deactivationRefPosition[2]
Definition: hkpMotion.h:85
std::uint16_t savedQualityTypeIndex
Definition: hkpMotion.h:88
float GetMass()
Definition: hkpMotion.h:66
MotionType
Definition: hkpMotion.h:26
virtual void GetInertiaInvLocal(hkMatrix3 &a_inertiaInvOut) const =0
hkHalf gravityFactor
Definition: hkpMotion.h:90
std::uint32_t deactivationRefOrientation[2]
Definition: hkpMotion.h:86
hkVector4 linearVelocity
Definition: hkpMotion.h:83
virtual void SetLinearVelocity(const hkVector4 &a_newVel)
virtual void SetInertiaLocal(const hkMatrix3 &a_inertia)=0
std::uint16_t pad132
Definition: hkpMotion.h:89
Definition: PCH.h:217
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_hkpMotion(static_cast< std::uint64_t >(689848))