Development Merge 2025.10.18 #4
@@ -7,7 +7,7 @@ namespace Syntriax.Engine.Core;
 | 
				
			|||||||
/// This interface allows for tracking the object's presence in the universe and provides events 
 | 
					/// This interface allows for tracking the object's presence in the universe and provides events 
 | 
				
			||||||
/// for notifying when the see enters or exits the universe.
 | 
					/// for notifying when the see enters or exits the universe.
 | 
				
			||||||
/// </summary>
 | 
					/// </summary>
 | 
				
			||||||
public interface IUniverseObject : IEntity, IActive, INameable, IHasBehaviourController, IEnumerable<IUniverseObject>
 | 
					public interface IUniverseObject : IEntity, IActive, INameable, IHasBehaviourController
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// Event triggered when the <see cref="IUniverseObject"/> enters the universe.
 | 
					    /// Event triggered when the <see cref="IUniverseObject"/> enters the universe.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -140,7 +140,7 @@ public static class BehaviourControllerExtensions
 | 
				
			|||||||
        if (behaviourController.GetBehaviour<T>() is T localBehaviour)
 | 
					        if (behaviourController.GetBehaviour<T>() is T localBehaviour)
 | 
				
			||||||
            return localBehaviour;
 | 
					            return localBehaviour;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        foreach (IUniverseObject child in behaviourController.UniverseObject)
 | 
					        foreach (IUniverseObject child in behaviourController.UniverseObject.Children)
 | 
				
			||||||
            if (GetBehaviourInChildren<T>(child.BehaviourController) is T behaviour)
 | 
					            if (GetBehaviourInChildren<T>(child.BehaviourController) is T behaviour)
 | 
				
			||||||
                return behaviour;
 | 
					                return behaviour;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -176,7 +176,7 @@ public static class BehaviourControllerExtensions
 | 
				
			|||||||
        foreach (T behaviour in cache)
 | 
					        foreach (T behaviour in cache)
 | 
				
			||||||
            behaviours.Add(behaviour);
 | 
					            behaviours.Add(behaviour);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        foreach (IUniverseObject child in universeObject)
 | 
					        foreach (IUniverseObject child in universeObject.Children)
 | 
				
			||||||
            TraverseChildrenForBehaviour(child, behaviours, cache);
 | 
					            TraverseChildrenForBehaviour(child, behaviours, cache);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,7 +81,7 @@ public static class UniverseObjectExtensions
 | 
				
			|||||||
    /// <returns>The <see cref="IUniverseObject"/> of the specified type if found; otherwise, null.</returns>
 | 
					    /// <returns>The <see cref="IUniverseObject"/> of the specified type if found; otherwise, null.</returns>
 | 
				
			||||||
    public static T? GetUniverseObjectInParent<T>(this IUniverseObject universeObject) where T : class
 | 
					    public static T? GetUniverseObjectInParent<T>(this IUniverseObject universeObject) where T : class
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (universeObject.GetUniverseObject<T>() is T localUniverseObject)
 | 
					        if (universeObject.Children.GetUniverseObject<T>() is T localUniverseObject)
 | 
				
			||||||
            return localUniverseObject;
 | 
					            return localUniverseObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        IUniverseObject? parent = universeObject;
 | 
					        IUniverseObject? parent = universeObject;
 | 
				
			||||||
@@ -129,10 +129,10 @@ public static class UniverseObjectExtensions
 | 
				
			|||||||
    /// <returns>The <see cref="IUniverseObject"/> of the specified type if found; otherwise, null.</returns>
 | 
					    /// <returns>The <see cref="IUniverseObject"/> of the specified type if found; otherwise, null.</returns>
 | 
				
			||||||
    public static T? GetUniverseObjectInChildren<T>(this IUniverseObject universeObject) where T : class
 | 
					    public static T? GetUniverseObjectInChildren<T>(this IUniverseObject universeObject) where T : class
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (universeObject.GetUniverseObject<T>() is T localUniverseObject)
 | 
					        if (universeObject.Children.GetUniverseObject<T>() is T localUniverseObject)
 | 
				
			||||||
            return localUniverseObject;
 | 
					            return localUniverseObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        foreach (IUniverseObject child in universeObject)
 | 
					        foreach (IUniverseObject child in universeObject.Children)
 | 
				
			||||||
            if (GetUniverseObjectInChildren<T>(child) is T behaviour)
 | 
					            if (GetUniverseObjectInChildren<T>(child) is T behaviour)
 | 
				
			||||||
                return behaviour;
 | 
					                return behaviour;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -246,7 +246,7 @@ public static class UniverseObjectExtensions
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        foreach (IUniverseObject universeObject in universeObjects)
 | 
					        foreach (IUniverseObject universeObject in universeObjects)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            universeObject.Find(cache);
 | 
					            universeObject.Children.Find(cache);
 | 
				
			||||||
            foreach (T behaviour in cache)
 | 
					            foreach (T behaviour in cache)
 | 
				
			||||||
                instances.Add(behaviour);
 | 
					                instances.Add(behaviour);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -165,7 +165,4 @@ public class UniverseObject : BaseEntity, IUniverseObject
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        _name = GetType().Name;
 | 
					        _name = GetType().Name;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public IEnumerator<IUniverseObject> GetEnumerator() => _children.GetEnumerator();
 | 
					 | 
				
			||||||
    IEnumerator IEnumerable.GetEnumerator() => _children.GetEnumerator();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user