namespace Engine.Core; /// /// Represents the transformation properties of an object such as position, scale, and rotation in 3D space. /// public interface ITransform3D : IBehaviour { /// /// Event triggered when the of the changes. /// Event OnPositionChanged { get; } /// /// Event triggered when the of the changes. /// Event OnScaleChanged { get; } /// /// Event triggered when the of the changes. /// Event OnRotationChanged { get; } /// /// Event triggered when any of the properties of the gets updated. /// Event OnTransformUpdated { get; } /// /// The pointing upwards in world space. /// Vector3D Up { get; } /// /// The pointing upwards in world space. /// Vector3D Down { get; } /// /// The pointing upwards in world space. /// Vector3D Left { get; } /// /// The pointing upwards in world space. /// Vector3D Right { get; } /// /// The pointing forwards in world space. /// Vector3D Forward { get; } /// /// The pointing backwards in world space. /// Vector3D Backward { get; } /// /// The world position of the in 3D space. /// Vector3D Position { get; set; } /// /// The world scale of the . /// Vector3D Scale { get; set; } /// /// The world rotation of the in degrees. /// Quaternion Rotation { get; set; } /// /// The local position of the in 3D space. /// Vector3D LocalPosition { get; set; } /// /// The local scale of the . /// Vector3D LocalScale { get; set; } /// /// The local rotation of the in degrees. /// Quaternion LocalRotation { get; set; } /// /// Arguments for the event triggered when the 's rotation changes. /// /// The previous of the . readonly record struct PositionChangedArguments(Vector3D PreviousPosition); /// /// Arguments for the event triggered when the 's rotation changes. /// /// The previous of the . readonly record struct ScaleChangedArguments(Vector3D PreviousScale); /// /// Arguments for the event triggered when the 's rotation changes. /// /// The previous of the . readonly record struct RotationChangedArguments(Quaternion PreviousRotation); }