22 virtual void Create()
override;
23 virtual void Destroy()
override;
24 virtual void Tick(
float deltaTime)
override;
30 virtual bool IsNode3D()
const override;
32 void AttachToBone(
SkeletalMesh3D* parent,
const char* boneName,
bool keepWorldTransform =
false, int32_t childIndex = -1);
33 void AttachToBone(
SkeletalMesh3D* parent, int32_t boneIndex,
bool keepWorldTransform =
false, int32_t childIndex = -1);
39 void AttachToSocket(
SkeletalMesh3D* parent,
const char* socketName,
bool keepWorldTransform =
false, int32_t childIndex = -1);
40 void SetAttachSocket(
const char* socketName);
41 const std::string& GetAttachSocket()
const;
43 void MarkTransformDirty();
44 bool IsTransformDirty()
const;
45 virtual void UpdateTransform(
bool updateChildren);
49 virtual void GatherProxyDraws(std::vector<DebugDraw>& inoutDraws);
52 virtual void OnDrawGizmos();
53 virtual void OnDrawGizmosSelected();
57 glm::vec3 GetPosition()
const;
58 glm::vec3 GetRotationEuler()
const;
59 glm::quat GetRotationQuat()
const;
60 glm::vec3 GetScale()
const;
62 glm::vec3& GetPositionRef();
63 glm::vec3& GetRotationEulerRef();
64 glm::quat& GetRotationQuatRef();
65 glm::vec3& GetScaleRef();
67 const glm::mat4& GetTransform();
69 void SetPosition(glm::vec3 position);
70 void SetRotation(glm::vec3 rotation);
71 void SetRotation(glm::quat quat);
72 void SetScale(glm::vec3 scale);
73 virtual void SetTransform(
const glm::mat4& transform);
75 glm::vec3 GetWorldPosition();
76 glm::vec3 GetWorldRotationEuler();
77 glm::quat GetWorldRotationQuat();
78 glm::vec3 GetWorldScale();
80 void SetWorldPosition(glm::vec3 position);
81 void SetWorldRotation(glm::vec3 rotation);
82 void SetWorldRotation(glm::quat rotation);
83 void SetWorldScale(glm::vec3 scale);
85 void AddRotation(glm::quat rotation);
86 void AddRotation(glm::vec3 rotation);
87 void AddWorldRotation(glm::quat rotation);
88 void AddWorldRotation(glm::vec3 rotation);
89 void RotateAround(glm::vec3 pivot, glm::vec3 axis,
float degrees);
91 void LookAt(glm::vec3 target, glm::vec3 up);
96 virtual AABB GetAABB()
const;
100 AABB GetHierarchyAABB(
bool includeSelf =
true)
const;
102 glm::vec3 GetCachedEulerRotation()
const;
104 glm::vec3 GetForwardVector();
105 glm::vec3 GetRightVector();
106 glm::vec3 GetUpVector();
108 glm::mat4 GetParentTransform();
109 int32_t GetParentBoneIndex()
const;
111 bool GetInheritTransform()
const;
112 void SetInheritTransform(
bool inheritTransform);
114 virtual void Attach(
Node* parent,
bool keepWorldTransform =
false, int32_t index = -1)
override;
116 static bool OnRep_RootPosition(
Datum* datum, uint32_t index,
const void* newValue);
117 static bool OnRep_RootRotation(
Datum* datum, uint32_t index,
const void* newValue);
118 static bool OnRep_RootScale(
Datum* datum, uint32_t index,
const void* newValue);
140 int32_t mAttachSocketIndex = -1;
141 bool mAttachResolved =
false;
143 bool mInheritTransform =
true;
151 void ResolveAttachSocket();
152 void InvalidateAttachSocket();