This commit is contained in:
2026-02-08 15:31:07 -05:00
parent 6f16a1170f
commit a78b5aef96
4 changed files with 10 additions and 24 deletions

View File

@@ -12,15 +12,12 @@ public sealed partial class Body
if(typeof(Generic).GetConstructor((Type[]) __args) == null) { Debug.LogError("Component does not contain a valid constructor"); return null; };
try {
Component component = (Generic)Activator.CreateInstance(typeof(Generic), __args);
if(component == null) { Debug.LogError("Failed to create component"); return null; };
if(component == null) { Debug.LogError("Failed to create component"); return null; }
_components.Add(component);
component.Initiate(this);
ComponentCreatedEvent?.Invoke(this, new ComponentCreateEvent(component, this, Scene));
return component;
}catch { Debug.LogError("Failed to create component"); return null; }

View File

@@ -17,16 +17,17 @@ public sealed partial class Body
return returnValue.ToArray();
}
public Generic FindSingleton<Generic>() where Generic : Component
{
public Component FindSingleton<Generic>() where Generic : Component {
foreach (Component component in _components)
if (component.GetType() == typeof(Generic))
if(component.EnforceSingleton)
return (Generic) component;
else
throw new Exception("Component is not a singleton");
throw new Exception("Component not found");
return component;
else {
Debug.LogError("Component is not a singleton");
return null;
}
Debug.LogError("Scene does not contain a component of this type");
return null;
}

View File

@@ -17,7 +17,6 @@ public sealed partial class Body
foundComponent.End();
_components.Remove(foundComponent);
ComponentDestroyedEvent?.Invoke(this, new ComponentDestroyEvent(foundComponent, this, Scene));
}catch { Debug.LogError("Removal failed"); }
}
@@ -26,7 +25,6 @@ public sealed partial class Body
foreach (Component component in GetComponents<Generic>()) {
component.End();
_components.Remove(component);
ComponentDestroyedEvent?.Invoke(this, new ComponentDestroyEvent(component, this, Scene));
}
}catch { Debug.LogError("Removal failed"); }
}

View File

@@ -1,10 +0,0 @@
using System;
namespace Awperative;
public sealed partial class Body
{
public event EventHandler<ComponentCreateEvent> ComponentCreatedEvent;
public event EventHandler<ComponentDestroyEvent> ComponentDestroyedEvent;
}