feat: ITransform.OnTransformUpdated event added

This commit is contained in:
2025-10-19 00:22:30 +03:00
parent f753da1f87
commit 2f5c04e66b
2 changed files with 17 additions and 1 deletions

View File

@@ -16,10 +16,15 @@ public interface ITransform2D : IBehaviour
Event<ITransform2D, ScaleChangedArguments> OnScaleChanged { get; } Event<ITransform2D, ScaleChangedArguments> OnScaleChanged { get; }
/// <summary> /// <summary>
/// Event triggered when the <see cref="Rotation"/> of the <see cref="ITransform"/> changes. /// Event triggered when the <see cref="Rotation"/> of the <see cref="ITransform2D"/> changes.
/// </summary> /// </summary>
Event<ITransform2D, RotationChangedArguments> OnRotationChanged { get; } Event<ITransform2D, RotationChangedArguments> OnRotationChanged { get; }
/// <summary>
/// Event triggered when any of the properties of the <see cref="ITransform2D"/> gets updated.
/// </summary>
Event<ITransform2D> OnTransformUpdated { get; }
/// <summary> /// <summary>
/// The <see cref="Vector2D"/> pointing upwards in world space. /// The <see cref="Vector2D"/> pointing upwards in world space.
/// </summary> /// </summary>

View File

@@ -8,6 +8,7 @@ public class Transform2D : Behaviour, ITransform2D
public Event<ITransform2D, ITransform2D.PositionChangedArguments> OnPositionChanged { get; } = new(); public Event<ITransform2D, ITransform2D.PositionChangedArguments> OnPositionChanged { get; } = new();
public Event<ITransform2D, ITransform2D.ScaleChangedArguments> OnScaleChanged { get; } = new(); public Event<ITransform2D, ITransform2D.ScaleChangedArguments> OnScaleChanged { get; } = new();
public Event<ITransform2D, ITransform2D.RotationChangedArguments> OnRotationChanged { get; } = new(); public Event<ITransform2D, ITransform2D.RotationChangedArguments> OnRotationChanged { get; } = new();
public Event<ITransform2D> OnTransformUpdated { get; } = new();
private Vector2D _position = Vector2D.Zero; private Vector2D _position = Vector2D.Zero;
private Vector2D _scale = Vector2D.One; private Vector2D _scale = Vector2D.One;
@@ -37,6 +38,7 @@ public class Transform2D : Behaviour, ITransform2D
UpdateLocalPosition(); UpdateLocalPosition();
OnPositionChanged.Invoke(this, new(previousPosition)); OnPositionChanged.Invoke(this, new(previousPosition));
OnTransformUpdated.Invoke(this);
} }
} }
@@ -53,6 +55,7 @@ public class Transform2D : Behaviour, ITransform2D
UpdateLocalScale(); UpdateLocalScale();
OnScaleChanged.Invoke(this, new(previousScale)); OnScaleChanged.Invoke(this, new(previousScale));
OnTransformUpdated.Invoke(this);
} }
} }
@@ -69,6 +72,7 @@ public class Transform2D : Behaviour, ITransform2D
UpdateLocalRotation(); UpdateLocalRotation();
OnRotationChanged.Invoke(this, new(previousRotation)); OnRotationChanged.Invoke(this, new(previousRotation));
OnTransformUpdated.Invoke(this);
} }
} }
@@ -85,6 +89,7 @@ public class Transform2D : Behaviour, ITransform2D
UpdatePosition(); UpdatePosition();
OnPositionChanged.Invoke(this, new(previousPosition)); OnPositionChanged.Invoke(this, new(previousPosition));
OnTransformUpdated.Invoke(this);
} }
} }
@@ -104,6 +109,7 @@ public class Transform2D : Behaviour, ITransform2D
UpdatePosition(); UpdatePosition();
OnScaleChanged.Invoke(this, new(previousScale)); OnScaleChanged.Invoke(this, new(previousScale));
OnPositionChanged.Invoke(this, new(previousPosition)); OnPositionChanged.Invoke(this, new(previousPosition));
OnTransformUpdated.Invoke(this);
} }
} }
@@ -120,6 +126,7 @@ public class Transform2D : Behaviour, ITransform2D
UpdateRotation(); UpdateRotation();
OnRotationChanged.Invoke(this, new(previousRotation)); OnRotationChanged.Invoke(this, new(previousRotation));
OnTransformUpdated.Invoke(this);
} }
} }
@@ -131,6 +138,7 @@ public class Transform2D : Behaviour, ITransform2D
UpdatePosition(); UpdatePosition();
OnPositionChanged.Invoke(this, args); OnPositionChanged.Invoke(this, args);
OnTransformUpdated.Invoke(this);
} }
private void RecalculateScale(ITransform2D _, ITransform2D.ScaleChangedArguments args) private void RecalculateScale(ITransform2D _, ITransform2D.ScaleChangedArguments args)
@@ -145,6 +153,7 @@ public class Transform2D : Behaviour, ITransform2D
OnScaleChanged.Invoke(this, args); OnScaleChanged.Invoke(this, args);
OnPositionChanged.Invoke(this, new(previousPosition)); OnPositionChanged.Invoke(this, new(previousPosition));
OnTransformUpdated.Invoke(this);
} }
private void RecalculateRotation(ITransform2D _, ITransform2D.RotationChangedArguments args) private void RecalculateRotation(ITransform2D _, ITransform2D.RotationChangedArguments args)
@@ -159,6 +168,7 @@ public class Transform2D : Behaviour, ITransform2D
OnRotationChanged.Invoke(this, args); OnRotationChanged.Invoke(this, args);
OnPositionChanged.Invoke(this, new(previousPosition)); OnPositionChanged.Invoke(this, new(previousPosition));
OnTransformUpdated.Invoke(this);
} }
private void UpdateLocalPosition() private void UpdateLocalPosition()
@@ -255,6 +265,7 @@ public class Transform2D : Behaviour, ITransform2D
OnPositionChanged.Invoke(this, new(Position)); OnPositionChanged.Invoke(this, new(Position));
OnScaleChanged.Invoke(this, new(Scale)); OnScaleChanged.Invoke(this, new(Scale));
OnRotationChanged.Invoke(this, new(Rotation)); OnRotationChanged.Invoke(this, new(Rotation));
OnTransformUpdated.Invoke(this);
} }
private void LookForTransform2D(IBehaviourController sender, IBehaviourController.BehaviourAddedArguments args) private void LookForTransform2D(IBehaviourController sender, IBehaviourController.BehaviourAddedArguments args)