#pragma once struct TransformationBindings { static TransformationBindings CreateDefault() { TransformationBindings bindings; bindings.WorldMatrixSemanticName = "WorldMatrix"; bindings.LocalMatrixSemanticName = "LocalMatrix"; bindings.WorldPositionSemanticName = "WorldPosition"; bindings.LocalPositionSemanticName = "LocalPosition"; bindings.WorldDirectionSemanticName = "WorldDirection"; bindings.LocalDirectionSemanticName = "LocalDirection"; bindings.WorldUpDirectionSemanticName = "WorldUpDirection"; bindings.LocalUpDirectionSemanticName = "LocalUpDirection"; bindings.WorldRightDirectionSemanticName = "WorldUpDirection"; bindings.LocalRightDirectionSemanticName = "LocalUpDirection"; return bindings; } string8 WorldMatrixSemanticName; string8 LocalMatrixSemanticName; string8 WorldPositionSemanticName; string8 LocalPositionSemanticName; string8 WorldDirectionSemanticName; string8 LocalDirectionSemanticName; string8 WorldUpDirectionSemanticName; string8 LocalUpDirectionSemanticName; string8 WorldRightDirectionSemanticName; string8 LocalRightDirectionSemanticName; }; struct __declspec(novtable) ITransformation { virtual void set_TransformationBindings(const TransformationBindings& argData) = 0; virtual TransformationBindings get_TransformationBindings() const = 0; virtual void set_LocalPosition(const D3DXVECTOR3& argValue) = 0; virtual const D3DXVECTOR3& get_LocalPosition() const = 0; virtual const D3DXVECTOR3& get_WorldPosition() const = 0; virtual void set_LocalRotationYPR(const D3DXVECTOR3& argValue) = 0; virtual const D3DXVECTOR3& get_LocalRotationYPR() const = 0; virtual void set_LocalRotation(const D3DXQUATERNION& argValue) = 0; virtual const D3DXQUATERNION& get_LocalRotation() const = 0; virtual const D3DXQUATERNION& get_WorldRotation() const = 0; virtual const D3DXVECTOR3& get_LocalDirection() const = 0; virtual const D3DXVECTOR3& get_WorldDirection() const = 0; virtual const D3DXVECTOR3& get_LocalUpDirection() const = 0; virtual const D3DXVECTOR3& get_WorldUpDirection() const = 0; virtual D3DXVECTOR3 get_LocalRightDirection() const = 0; virtual D3DXVECTOR3 get_WorldRightDirection() const = 0; virtual void set_LocalScale(const D3DXVECTOR3& argValue) = 0; virtual const D3DXVECTOR3& get_LocalScale() const = 0; virtual const D3DXVECTOR3& get_WorldScale() const = 0; virtual const D3DXMATRIX& get_WorldMatrix() const = 0; virtual const D3DXMATRIX& get_LocalMatrix() const = 0; virtual void set_TransformationParent(ITransformation* argValue) = 0; virtual ITransformation* get_TransformationParent() const = 0; virtual void AddTransformation(ITransformation& argTransformation) = 0; virtual void RemoveTransformation(ITransformation& argTransformation) = 0; virtual const std::vector& get_Transformations() const = 0; };