106 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| 
 | |
| namespace Syntriax.Engine.Core.Abstract;
 | |
| 
 | |
| /// <summary>
 | |
| /// Represents the transformation properties of an object such as position, scale, and rotation.
 | |
| /// </summary>
 | |
| public interface ITransform : IAssignableGameObject, IEnumerable<ITransform>
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Event triggered when the <see cref="Position"/> of the <see cref="ITransform"/> changes.
 | |
|     /// </summary>
 | |
|     event OnPositionChangedDelegate? OnPositionChanged;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Event triggered when the <see cref="Scale"/> of the <see cref="ITransform"/> changes.
 | |
|     /// </summary>
 | |
|     event OnScaleChangedDelegate? OnScaleChanged;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Event triggered when the <see cref="Rotation"/> of the <see cref="ITransform"/> changes.
 | |
|     /// </summary>
 | |
|     event OnRotationChangedDelegate? OnRotationChanged;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Event triggered when the <see cref="Parent"/> of the <see cref="ITransform"/> changes. The second parameter is the old <see cref="ITransform"/>.
 | |
|     /// </summary>
 | |
|     event OnParentChangedDelegate? OnParentChanged;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Event triggered when a new <see cref="ITransform"/> is added to the <see cref="Children"/>.
 | |
|     /// </summary>
 | |
|     event OnChildrenAddedDelegate? OnChildrenAdded;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Event triggered when an <see cref="ITransform"/> is removed from the <see cref="Children"/>.
 | |
|     /// </summary>
 | |
|     event OnChildrenRemovedDelegate? OnChildrenRemoved;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The world position of the <see cref="ITransform"/> in 2D space.
 | |
|     /// </summary>
 | |
|     Vector2D Position { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The world scale of the <see cref="ITransform"/>.
 | |
|     /// </summary>
 | |
|     Vector2D Scale { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The world rotation of the <see cref="ITransform"/> in degrees.
 | |
|     /// </summary>
 | |
|     float Rotation { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The local position of the <see cref="ITransform"/> in 2D space.
 | |
|     /// </summary>
 | |
|     Vector2D LocalPosition { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The local scale of the <see cref="ITransform"/>.
 | |
|     /// </summary>
 | |
|     Vector2D LocalScale { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The local rotation of the <see cref="ITransform"/> in degrees.
 | |
|     /// </summary>
 | |
|     float LocalRotation { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The parent <see cref="ITransform"/> of the <see cref="ITransform"/>.
 | |
|     /// </summary>
 | |
|     ITransform? Parent { get; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// The <see cref="ITransform"/>s that have this <see cref="ITransform"/> as their <see cref="Parent"/>.
 | |
|     /// </summary>
 | |
|     IReadOnlyList<ITransform> Children { get; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Sets the parent <see cref="ITransform"/> of this <see cref="ITransform"/>.
 | |
|     /// </summary>
 | |
|     /// <param name="transform">The parent <see cref="ITransform"/> to set.</param>
 | |
|     void SetParent(ITransform? transform);
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Adds a child <see cref="ITransform"/> to this <see cref="ITransform"/>.
 | |
|     /// </summary>
 | |
|     /// <param name="transform">The child <see cref="ITransform"/> to add.</param>
 | |
|     void AddChild(ITransform transform);
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Removes a child <see cref="ITransform"/> from this <see cref="ITransform"/>.
 | |
|     /// </summary>
 | |
|     /// <param name="transform">The child <see cref="ITransform"/> to remove.</param>
 | |
|     void RemoveChild(ITransform transform);
 | |
| 
 | |
|     delegate void OnPositionChangedDelegate(ITransform sender);
 | |
|     delegate void OnScaleChangedDelegate(ITransform sender);
 | |
|     delegate void OnRotationChangedDelegate(ITransform sender);
 | |
|     delegate void OnParentChangedDelegate(ITransform sender, ITransform? previousParent, ITransform? newParent);
 | |
|     delegate void OnChildrenAddedDelegate(ITransform sender, ITransform childrenAdded);
 | |
|     delegate void OnChildrenRemovedDelegate(ITransform sender, ITransform childrenRemoved);
 | |
| }
 |