#pragma once #include "DirectXCore.h" // The object node contains all of the methods and variables needed to move a node using pitch, yaw, roll, and the directions // It should be inherited by another node so that it doesnt interupt with the normal rendering functions and saves us having to // duplicate code for every time, it also allows the child classes to be accessed by the ObjectNode type when needed class ObjectNode { public: ObjectNode(); void Update(XMFLOAT4X4& currentWorldTransform); XMVECTOR GetNodePosition(); void SetNodePosition(XMVECTOR vectorIn); void SetNodePosition(XMFLOAT4 floatIn); void SetNodePosition(float x, float y, float z); void SetPitch(float pitch); void SetTotalPitch(float pitch); float GetPitch() const; void SetYaw(float yaw); void SetTotalYaw(float yaw); float GetYaw() const; void SetRoll(float roll); void SetTotalRoll(float roll); float GetRoll() const; void SetLeftRight(float leftRight); float GetLeftRight() const; void SetForwardBack(float forwardBack); float GetForwardBack() const; void SetStartOrientation(FXMMATRIX originalOrientation); protected: XMFLOAT4 _nodeRootPosition; float _moveLeftRight; float _moveForwardBack; float _nodeYaw; float _nodePitch; float _nodeRoll; XMFLOAT4X4 _originalOrientation; };