diff --git a/AwperativeKernel/Kernel/Atrributes/DebugAttributes.cs b/AwperativeKernel/Kernel/Atrributes/DebugAttributes.cs
index 9329fb9..d220e4f 100644
--- a/AwperativeKernel/Kernel/Atrributes/DebugAttributes.cs
+++ b/AwperativeKernel/Kernel/Atrributes/DebugAttributes.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
namespace AwperativeKernel;
@@ -181,39 +182,39 @@ public static class DebugAttributes
}
}
- #endregion
-
- #region Null/Collection
-
- /// Requires all elements in a Collection are not null
+ /// Requires that a given Scene is not null
[AttributeUsage(AttributeTargets.All)]
- public class CollectionNotNull : Attribute
+ public class SceneDoesNotExist : Attribute
{
///
- public static bool VerifyOrThrow(ICollection __collection) {
- foreach (object obj in __collection) {
- if (obj == null) {
- Awperative.Debug.LogError("A given enumerator has null members!", ["Type"], [__collection.GetType().Name]);
- return Awperative.Debug.IgnoreErrors;
- }
- }
+ [MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
+ public static bool VerifyOrThrow(Scene __scene) {
+ if (Awperative._scenes.Contains(__scene)) return true;
- return true;
+ Awperative.Debug.LogError("Scene already exists!");
+
+ return Awperative.Debug.IgnoreErrors;
}
}
+
+ #endregion
+
+ #region Null/Collection
/// Requires all elements in an Enumerator are not null
[AttributeUsage(AttributeTargets.All)]
- public class EnumeratorNotNull : Attribute
+ public class EnumerableNotNull : Attribute
{
///
public static bool VerifyOrThrow(IEnumerable __enumerator) {
+ if (__enumerator == null) { Awperative.Debug.LogError("A given enumerator is null!"); return Awperative.Debug.IgnoreErrors; }
+
foreach (object obj in __enumerator) {
if (obj == null) {
Awperative.Debug.LogError("A given enumerator has null members!", ["Type"], [__enumerator.GetType().Name]);
@@ -224,6 +225,42 @@ public static class DebugAttributes
return true;
}
}
+
+
+
+ /// Requires that the enumerator contains a certain element.
+ [AttributeUsage(AttributeTargets.All)]
+ public class EnumerableContains : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(IEnumerable __enumerator, object __object) {
+ if (__enumerator.Contains(__object)) return true;
+
+ Awperative.Debug.LogError("A given enumerator does not contains an object!", ["EnumeratorType", "ObjectType", "Value"], [__enumerator.GetType().Name, __object.GetType().Name, __object.ToString()]);
+
+ return Awperative.Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that the enumerator does not contain a certain element.
+ [AttributeUsage(AttributeTargets.All)]
+ public class EnumerableDoesntContain : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(IEnumerable __enumerator, object __object) {
+ if (!__enumerator.Contains(__object)) return true;
+
+ Awperative.Debug.LogError("A given enumerator already contains the object object!", ["EnumeratorType", "ObjectType", "Value"], [__enumerator.GetType().Name, __object.GetType().Name, __object.ToString()]);
+
+ return Awperative.Debug.IgnoreErrors;
+ }
+ }
@@ -260,42 +297,6 @@ public static class DebugAttributes
return Awperative.Debug.IgnoreErrors;
}
}
-
-
-
- /// Requires that a collection contains the given item
- [AttributeUsage(AttributeTargets.All)]
- public class CollectionContains : Attribute
- {
-
-
- ///
- public static bool VerifyOrThrow<__Type>(__Type __object, ICollection<__Type> __collection) {
- if (__collection.Contains(__object)) return true;
-
- Awperative.Debug.LogError("Collection does not contain object!", ["ObjectType"], [__object.GetType().Name]);
-
- return Awperative.Debug.IgnoreErrors;
- }
- }
-
-
-
- /// Requires that a collection does not contain the given item
- [AttributeUsage(AttributeTargets.All)]
- public class CollectionDoesntContain : Attribute
- {
-
-
- ///
- public static bool VerifyOrThrow<__Type>(__Type __object, ICollection<__Type> __collection) {
- if (!__collection.Contains(__object)) return true;
-
- Awperative.Debug.LogError("Collection already contains object!", ["ObjectType"], [__object.GetType().Name]);
-
- return Awperative.Debug.IgnoreErrors;
- }
- }
#endregion
}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Atrributes/DependencyAttributes.cs b/AwperativeKernel/Kernel/Atrributes/DependencyAttributes.cs
new file mode 100644
index 0000000..9c5f4c7
--- /dev/null
+++ b/AwperativeKernel/Kernel/Atrributes/DependencyAttributes.cs
@@ -0,0 +1,28 @@
+using System;
+
+
+namespace AwperativeKernel;
+
+
+internal static class DependencyAttributes
+{
+
+
+
+ /// Shows the source for a given module interface
+ [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Property)]
+ public class RequiredModule : Attribute
+ {
+ /// Where to assign in the Awperative class.
+ public string Source { get; set; }
+
+ public RequiredModule() {}
+
+ public RequiredModule(string Source) {
+ this.Source = Source;
+ }
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Component/Component.cs b/AwperativeKernel/Kernel/Component/Component.cs
index 521e398..ff0334b 100644
--- a/AwperativeKernel/Kernel/Component/Component.cs
+++ b/AwperativeKernel/Kernel/Component/Component.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using Awperative.Kernel.Overhead.Reflection;
namespace AwperativeKernel;
@@ -59,16 +60,16 @@ public abstract partial class Component : ComponentDocker
/// Attempts to send an event to the component, and quietly exits if not.
[MarkerAttributes.UnsafeInternal]
internal void TryEvent(int __timeEvent) {
- Awperative._TypeAssociatedTimeEvents[GetType()][__timeEvent]?.Invoke(this);
+ EventManager._TypeAssociatedTimeEvents[GetType()][__timeEvent]?.Invoke(this);
}
/// Adds a new tag to the component
[MarkerAttributes.CalculatedProperty, MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Low), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public void AddTag([DebugAttributes.NotNull, DebugAttributes.CollectionDoesntContain] string __tag) {
+ public void AddTag([DebugAttributes.NotNull, DebugAttributes.EnumerableDoesntContain] string __tag) {
if(!DebugAttributes.NotNull.VerifyOrThrow(__tag)) return;
- if(!DebugAttributes.CollectionDoesntContain.VerifyOrThrow(__tag, _tags)) return;
+ if(!DebugAttributes.EnumerableDoesntContain.VerifyOrThrow(_tags, __tag)) return;
_tags.Add(__tag);
ComponentDocker.HashTaggedComponent(__tag, this);
@@ -80,9 +81,9 @@ public abstract partial class Component : ComponentDocker
/// Removes a tag from the component.
[MarkerAttributes.CalculatedProperty, MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Low), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public void RemoveTag([DebugAttributes.NotNull,DebugAttributes.CollectionContains] string __tag) {
+ public void RemoveTag([DebugAttributes.NotNull,DebugAttributes.EnumerableContains] string __tag) {
if (!DebugAttributes.NotNull.VerifyOrThrow(__tag)) return;
- if(!DebugAttributes.CollectionContains.VerifyOrThrow(__tag, _tags)) return;
+ if(!DebugAttributes.EnumerableContains.VerifyOrThrow(_tags, __tag)) return;
_tags.Remove(__tag);
ComponentDocker.UnhashTaggedComponent(__tag, this);
diff --git a/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerExposure.cs b/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerExposure.cs
index 5783494..e025b24 100644
--- a/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerExposure.cs
+++ b/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerExposure.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
@@ -24,19 +25,25 @@ public abstract partial class ComponentDocker
/// Tells you whether the docker contains a component with all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public bool Contains(IEnumerable __tags) => GetAll(__tags).Any();
+ public bool Contains([DebugAttributes.EnumerableNotNull] IEnumerable __tags) => GetAll(__tags).Any();
/// Tells you whether the docker contains a component with all the given tags and the type
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public bool Contains<__Type>(IEnumerable __tags) where __Type : Component => GetAll<__Type>(__tags).Any();
+ public bool Contains<__Type>([DebugAttributes.EnumerableNotNull] IEnumerable __tags) where __Type : Component => GetAll<__Type>(__tags).Any();
/// Tells you whether the docker contains the given component.
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
public bool Contains([DebugAttributes.ComponentNotNull] Component __component) => DebugAttributes.NotNull.VerifyOrThrow(__component) && _componentTypeDictionary.TryGetValue(__component.GetType(), out var components) && components.Contains(__component);
+
+ /// Tells you whether the docker contains the all the given components.
+ [MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Medium), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
+ public bool ContainsAll([DebugAttributes.EnumerableNotNull] IEnumerable __components) => __components.All(x => _components.Contains(x));
-
-
+
+ /// Gets all components of a given type
+ [MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
+ public IEnumerable GetAll() => _components;
/// Finds the first component with a given Type
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
@@ -50,7 +57,7 @@ public abstract partial class ComponentDocker
/// Gets all components of a given type
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public IEnumerable<__Type> GetAll<__Type>() where __Type : Component => _componentTypeDictionary.TryGetValue(typeof(__Type), out var components) ? components.OfType<__Type>().ToList() : [];
+ public IEnumerable<__Type> GetAll<__Type>() where __Type : Component => _componentTypeDictionary.TryGetValue(typeof(__Type), out HashSet components) ? components.OfType<__Type>().ToList() : [];
/// Tries to get all components of a given type and returns false if there are none
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
@@ -60,10 +67,10 @@ public abstract partial class ComponentDocker
/// Finds all components that have all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public IEnumerable GetAll(IEnumerable __tags) {
+ public IEnumerable GetAll([DebugAttributes.EnumerableNotNull] IEnumerable __tags) {
+ if (!DebugAttributes.EnumerableNotNull.VerifyOrThrow(__tags)) return [];
HashSet components;
-
if (_componentTagDictionary.TryGetValue(__tags.First(), out var firstComponents)) components = firstComponents; else return [];
foreach(var tag in __tags)
@@ -75,7 +82,7 @@ public abstract partial class ComponentDocker
/// Tries to find all components that have all the given tags, returns false if there are none
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public bool TryGetAll(IEnumerable __tags, out IEnumerable __components)
+ public bool TryGetAll([DebugAttributes.EnumerableNotNull] IEnumerable __tags, out IEnumerable __components)
{ __components = GetAll(__tags); return __components.Any(); }
@@ -84,7 +91,7 @@ public abstract partial class ComponentDocker
/// Finds all Components that have the given type, and all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public IEnumerable<__Type> GetAll<__Type>(IEnumerable __tags) where __Type : Component {
+ public IEnumerable<__Type> GetAll<__Type>([DebugAttributes.EnumerableNotNull] IEnumerable __tags) where __Type : Component {
if (!__tags.Any())
return [];
@@ -103,9 +110,8 @@ public abstract partial class ComponentDocker
/// Tries to find all the components that have the given tags and type, returns false if there are none
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public bool TryGetAll<__Type>(IEnumerable __tags, out IEnumerable<__Type> __components) where __Type : Component {
- __components = GetAll<__Type>(__tags); return __components.Any();
- }
+ public bool TryGetAll<__Type>([DebugAttributes.EnumerableNotNull] IEnumerable __tags, out IEnumerable<__Type> __components) where __Type : Component
+ { __components = GetAll<__Type>(__tags); return __components.Any(); }
@@ -117,47 +123,47 @@ public abstract partial class ComponentDocker
/// Tries to get all the components with the given tag, returns false if there are none
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public bool TryGetAll(string __tag, out IEnumerable __components) { __components = GetAll(__tag); return __components.Any(); }
+ public bool TryGetAll([DebugAttributes.NotNull] string __tag, out IEnumerable __components) { __components = GetAll(__tag); return __components.Any(); }
/// Gets all the components that have a certain type, and a certain tag
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public IEnumerable<__Type> GetAll<__Type>(string __tag) where __Type : Component => GetAll<__Type>([__tag]);
+ public IEnumerable<__Type> GetAll<__Type>([DebugAttributes.NotNull] string __tag) where __Type : Component => GetAll<__Type>([__tag]);
/// Tries to get all the components with a certain tag, and a type. Returns false if there are none
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public bool TryGetAll<__Type>(string __tag, out IEnumerable<__Type> __components) where __Type : Component { __components = GetAll<__Type>(__tag); return __components.Any(); }
+ public bool TryGetAll<__Type>([DebugAttributes.NotNull] string __tag, out IEnumerable<__Type> __components) where __Type : Component { __components = GetAll<__Type>(__tag); return __components.Any(); }
/// Gets the first component with all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public Component Get(IEnumerable __tags) => GetAll(__tags).FirstOrDefault();
+ public Component Get([DebugAttributes.EnumerableNotNull] IEnumerable __tags) => GetAll(__tags).FirstOrDefault();
/// Tries to get the first component with all the given tags. Returns false if there are none
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public bool TryGet(IEnumerable __tags, out Component __component) { __component = Get(__tags); return __component != null; }
+ public bool TryGet([DebugAttributes.EnumerableNotNull] IEnumerable __tags, out Component __component) { __component = Get(__tags); return __component != null; }
/// Finds the first component with the given tag
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public Component Get(string __tag) => GetAll([__tag]).FirstOrDefault();
+ public Component Get([DebugAttributes.NotNull] string __tag) => GetAll([__tag]).FirstOrDefault();
/// Tries to find the first component with the given tag, returns false if there is none
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public bool TryGet(string __tag, out Component __component) { __component = Get(__tag); return __component != null; }
+ public bool TryGet([DebugAttributes.NotNull] string __tag, out Component __component) { __component = Get(__tag); return __component != null; }
/// Gets the first component with the given type and tag
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public __Type Get<__Type>(string __tag) where __Type : Component => GetAll<__Type>(__tag).FirstOrDefault();
+ public __Type Get<__Type>([DebugAttributes.NotNull] string __tag) where __Type : Component => GetAll<__Type>(__tag).FirstOrDefault();
/// Tries to get the first component with the given type and tag, returns false if there is none.
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public bool TryGet<__Type>(string __tag, out __Type __component) where __Type : Component { __component = Get<__Type>(__tag); return __component != null; }
+ public bool TryGet<__Type>([DebugAttributes.NotNull] string __tag, out __Type __component) where __Type : Component { __component = Get<__Type>(__tag); return __component != null; }
diff --git a/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMovement.cs b/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMovement.cs
index 1a50caf..04a976f 100644
--- a/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMovement.cs
+++ b/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMovement.cs
@@ -25,8 +25,8 @@ public abstract partial class ComponentDocker
/// Moves all components in a list to another docker
- public void MoveAll([DebugAttributes.EnumeratorNotNull, DebugAttributes.DockerOwns] IEnumerable __Components, [DebugAttributes.DockerNotNull, DebugAttributes.DifferentDocker] ComponentDocker __componentDocker) {
- if(!DebugAttributes.EnumeratorNotNull.VerifyOrThrow(__Components)) return;
+ public void MoveAll([DebugAttributes.EnumerableNotNull, DebugAttributes.DockerOwns] IEnumerable __Components, [DebugAttributes.DockerNotNull, DebugAttributes.DifferentDocker] ComponentDocker __componentDocker) {
+ if(!DebugAttributes.EnumerableNotNull.VerifyOrThrow(__Components)) return;
if(!DebugAttributes.DockerNotNull.VerifyOrThrow(__componentDocker)) return;
if(!DebugAttributes.DifferentDocker.VerifyOrThrow(this, __componentDocker)) return;
@@ -35,6 +35,10 @@ public abstract partial class ComponentDocker
Move(Component, __componentDocker);
}
}
+
+ /// Gets all components of a given type
+ [MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
+ public void MoveAll([DebugAttributes.DockerNotNull, DebugAttributes.DifferentDocker] ComponentDocker __componentDocker) => MoveAll(GetAll(), __componentDocker);
/// Moves the first component with a given Type
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
@@ -50,14 +54,14 @@ public abstract partial class ComponentDocker
/// Moves all components that have all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public void MoveAll([DebugAttributes.EnumeratorNotNull] IEnumerable __tags, [DebugAttributes.DockerNotNull, DebugAttributes.DifferentDocker] ComponentDocker __componentDocker) => MoveAll(GetAll(__tags), __componentDocker);
+ public void MoveAll([DebugAttributes.EnumerableNotNull] IEnumerable __tags, [DebugAttributes.DockerNotNull, DebugAttributes.DifferentDocker] ComponentDocker __componentDocker) => MoveAll(GetAll(__tags), __componentDocker);
/// Moves all Components that have the given type, and all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.VeryLow), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public void MoveAll<__Type>([DebugAttributes.EnumeratorNotNull] IEnumerable __tags, [DebugAttributes.DockerNotNull, DebugAttributes.DifferentDocker] ComponentDocker __componentDocker) where __Type : Component => MoveAll(GetAll<__Type>(__tags), __componentDocker);
+ public void MoveAll<__Type>([DebugAttributes.EnumerableNotNull] IEnumerable __tags, [DebugAttributes.DockerNotNull, DebugAttributes.DifferentDocker] ComponentDocker __componentDocker) where __Type : Component => MoveAll(GetAll<__Type>(__tags), __componentDocker);
diff --git a/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMutation.cs b/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMutation.cs
index 194bbb3..d404836 100644
--- a/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMutation.cs
+++ b/AwperativeKernel/Kernel/ComponentDocker/ComponentDockerMutation.cs
@@ -75,9 +75,15 @@ public abstract partial class ComponentDocker
+ /// Destroys all the components in a given list
+ [MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Medium), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
+ public void DestroyAll() => DestroyAll(GetAll());
+
+
+
/// Destroys all the components in a given list
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Medium), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public void DestroyAll([DebugAttributes.EnumeratorNotNull, DebugAttributes.DockerOwns] IEnumerable __Components) { foreach (Component component in __Components) Destroy(component); }
+ public void DestroyAll([DebugAttributes.EnumerableNotNull, DebugAttributes.DockerOwns] IEnumerable __Components) { foreach (Component component in __Components.ToArray()) Destroy(component); }
@@ -95,14 +101,14 @@ public abstract partial class ComponentDocker
/// Destroys all components that have all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Medium), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public void DestroyAll([DebugAttributes.EnumeratorNotNull] IEnumerable __tags) => DestroyAll(GetAll(__tags));
+ public void DestroyAll([DebugAttributes.EnumerableNotNull] IEnumerable __tags) => DestroyAll(GetAll(__tags));
/// Destroys all Components that have the given type, and all the given tags
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Medium), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public void DestroyAll<__Type>([DebugAttributes.EnumeratorNotNull] IEnumerable __tags) where __Type : Component => DestroyAll(GetAll<__Type>(__tags));
+ public void DestroyAll<__Type>([DebugAttributes.EnumerableNotNull] IEnumerable __tags) where __Type : Component => DestroyAll(GetAll<__Type>(__tags));
diff --git a/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs b/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
index c1c4e68..92df3bc 100644
--- a/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
+++ b/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
@@ -5,6 +5,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
+using Awperative.Kernel.Overhead.Reflection;
namespace AwperativeKernel;
@@ -42,41 +43,40 @@ public static partial class Awperative
/// Awperative's debugger of choice, found from the module manager.
- [MarkerAttributes.UnsafeInternal]
- public static IDebugger Debug { get; set; }
- /// Awperative's module manager of choice, sent in through the Start() function
- [MarkerAttributes.UnsafeInternal]
- public static IModuleManager ModuleManager { get; private set; }
+ [MarkerAttributes.UnsafeInternal, DependencyAttributes.RequiredModule]
+ public static IDebugger Debug { get; internal set; }
/// Creates a new Scene with the given name
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Low), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public static Scene CreateScene(string __name) {
- if (!ContainsScene(__name)) {
- Scene newScene = new Scene(__name);
- _scenes.Add(newScene);
- return newScene;
- } else Debug.LogError("Awperative already has a Scene with that name!", ["Scene", "Name"], [GetScene(__name).GetHashCode().ToString(), __name]); return null;
+ public static Scene CreateScene([DebugAttributes.NotNull, DebugAttributes.SceneDoesNotExist] string __name) {
+ if (!DebugAttributes.NotNull.VerifyOrThrow(__name)) return null;
+ if (!DebugAttributes.SceneDoesNotExist.VerifyOrThrow(GetScene(__name))) return null;
+
+ Scene newScene = new Scene(__name);
+ _scenes.Add(newScene);
+ return newScene;
}
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Low), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.O1)]
- public static void AddScene(Scene __scene) {
- if (!ContainsScene(__scene.Name)) {
- _scenes.Add(__scene);
- } else Debug.LogError("Awperative already has a Scene with that name!", ["Scene", "Name"], [GetScene(__scene.Name).GetHashCode().ToString(), __scene.Name]); return;
+ public static void AddScene([DebugAttributes.SceneNotNull, DebugAttributes.SceneDoesNotExist] Scene __scene) {
+ if (!DebugAttributes.SceneNotNull.VerifyOrThrow(__scene)) return;
+ if (!DebugAttributes.SceneDoesNotExist.VerifyOrThrow(__scene)) return;
+
+ _scenes.Add(__scene);
}
-
-
+
+
/// Finds a Scene from a given name
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Medium), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
- public static Scene GetScene(string __name) => _scenes.FirstOrDefault(scene => scene.Name == __name, null);
-
-
-
+ public static Scene GetScene([DebugAttributes.NotNull] string __name) => !DebugAttributes.NotNull.VerifyOrThrow(__name) ? null : _scenes.FirstOrDefault(scene => scene.Name == __name, null);
+
+
+
/// Returns bool based on whether there a scene with the given name or not.
[MarkerAttributes.Expense(MarkerAttributes.Expense.ExpenseLevel.Medium), MarkerAttributes.Complexity(MarkerAttributes.Complexity.TimeComplexity.ON)]
public static bool ContainsScene(string __name) => _scenes.Any(scene => scene.Name == __name);
@@ -102,65 +102,8 @@ public static partial class Awperative
if (IsStarted) return;
IsStarted = true;
- //SPAGHETTI CODE FIX LATER! maybe move to static method in IModuleManager
- foreach (Type type in Assembly.LoadFrom(moduleManagerPath).GetTypes()) {
- Console.WriteLine(type.Name);
- if (type.GetInterfaces().Contains(typeof(IModuleManager))) {
- ModuleManager = (IModuleManager)Activator.CreateInstance(type);
- }
- }
-
- List targets = [Assembly.GetCallingAssembly()];
- foreach (Assembly module in ModuleManager.GetDependencies()) {
- targets.Add(module);
- }
-
- //Load in all Components nd find the associated types.
- foreach (var t in targets) {
- Console.WriteLine(t.FullName);
- foreach (Type type in t.GetTypes()) {
- if (type.IsSubclassOf(typeof(Component))) {
-
-
- Action[] timeEvents = new Action[ComponentEvents.Count];
-
- byte eventProfile = 0;
- List debugProfile = [];
-
- for (int i = 0; i < ComponentEvents.Count; i++) {
- MethodInfo eventMethod = type.GetMethod(ComponentEvents[i]);
-
- if (eventMethod != null) {
-
- var ComponentInstanceParameter = Expression.Parameter(typeof(Component), "__component");
- var Casting = Expression.Convert(ComponentInstanceParameter, type);
- var Call = Expression.Call(Casting, eventMethod);
- var Lambda = Expression.Lambda>(Call, ComponentInstanceParameter);
- timeEvents[i] = Lambda.Compile();
-
- } else timeEvents[i] = null;
- }
-
- _TypeAssociatedTimeEvents.Add(type, timeEvents);
- }
-
- if (type.GetInterfaces().Contains(typeof(IDebugger))) {
- if (Debug == null) {
- if (type.GetConstructor(Type.EmptyTypes) != null)
- Debug = (IDebugger)Activator.CreateInstance(type);
- else throw new Exception("Awperative doesn't support IDebugger constructor!");
- } else {
- throw new Exception("Awperative found multiple debuggers! There can only be one.");
- }
- }
- }
- }
+ ReflectionManager.ResolveModules(AppDomain.CurrentDomain.GetAssemblies());
- if (Debug == null)
- throw new Exception("Awperative doesn't have a Debugger!");
-
- Debug.Start();
-
Debug.LogAction("Successfully Compiled Classes!");
}
@@ -202,17 +145,13 @@ public static partial class Awperative
scene.ChainEvent(3);
}
}
-
-
- internal static ReadOnlyCollection ComponentEvents = new(["Load", "Unload", "Update", "Draw", "Create", "Remove"]);
-
+
///
/// List of all type of components and the associated time events
/// Each event is a 0 or 1 based on true or false, stored at their index in the byte
///
- internal static Dictionary[]> _TypeAssociatedTimeEvents = [];
//What to do if there is an error, keep in mind low and none still can have errors, because you are turning off validation checking
diff --git a/AwperativeKernel/Kernel/Overhead/Reflection/DependencyManager.cs b/AwperativeKernel/Kernel/Overhead/Reflection/DependencyManager.cs
new file mode 100644
index 0000000..fa994c3
--- /dev/null
+++ b/AwperativeKernel/Kernel/Overhead/Reflection/DependencyManager.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using AwperativeKernel;
+
+
+namespace Awperative.Kernel.Overhead.Reflection;
+
+
+internal static class DependencyManager
+{
+
+ /// Resolves any needed Awperative dependencies! Given the Type, it searches recursively for all interfaces. If any of the interfaces
+ /// Has the RequiredModule() attribute, or one of the interfaces in required modules. It will assign it to the assosiated field in the Awperative class.
+ [MarkerAttributes.UnsafeInternal]
+ internal static void ResolveDependency(Type __type) {
+
+ Console.WriteLine(__type.FullName);
+
+ foreach (Type typeInterface in __type.GetInterfaces()) {
+ //Console.WriteLine(" " + typeInterface.FullName);
+ object[] dependencyInfo = typeInterface.GetCustomAttributes(typeof(DependencyAttribute), true);
+
+ if (dependencyInfo.Length == 0) continue;
+
+ foreach (object attribute in dependencyInfo) {
+ if (attribute is not DependencyAttributes.RequiredModule moduleAttribute) continue;
+
+ PropertyInfo data = typeof(AwperativeKernel.Awperative).GetProperty(moduleAttribute.Source, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
+ if (data != null) data.SetValue(null, Activator.CreateInstance(__type));
+ }
+ }
+ }
+
+ /// Checks all dependency marked variables in Awperative, and ensures that all are present!
+ [MarkerAttributes.UnsafeInternal]
+ internal static void ResolveFulfillment() {
+
+ foreach (PropertyInfo propertyInfo in typeof(AwperativeKernel.Awperative).GetProperties(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) {
+ object[] attributes = propertyInfo.GetCustomAttributes(typeof(DependencyAttribute), true);
+
+ if (attributes.Length == 0) continue;
+
+ IModule module = propertyInfo.GetValue(null) as IModule;
+
+ if (module == null) throw new Exception("Failed to find dependency! " + propertyInfo.Name);
+
+ ReflectionManager._modules.Add(module);
+ module.Start();
+ }
+ }
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Overhead/Reflection/EventManager.cs b/AwperativeKernel/Kernel/Overhead/Reflection/EventManager.cs
new file mode 100644
index 0000000..d187158
--- /dev/null
+++ b/AwperativeKernel/Kernel/Overhead/Reflection/EventManager.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using AwperativeKernel;
+
+
+namespace Awperative.Kernel.Overhead.Reflection;
+
+
+internal static class EventManager
+{
+ /// Holds an associated action for each component and a time event. Is built with CompileType() during Start().
+ [MarkerAttributes.UnsafeInternal]
+ internal static Dictionary[]> _TypeAssociatedTimeEvents = [];
+
+
+ /// All types of time based events in Awperative.
+ internal static readonly ImmutableArray Events = ["Load", "Unload", "Update", "Draw", "Create", "Remove"];
+
+
+ /// Compiles a single type, and stores its events in the dictionary.
+ [MarkerAttributes.UnsafeInternal]
+ internal static void CompileType(Type __type) {
+ if (!__type.IsSubclassOf(typeof(Component))) return;
+
+
+ List> timeEvents = [];
+
+ foreach (MethodInfo eventMethod in Events.Select(__type.GetMethod)) {
+ if (eventMethod == null) { timeEvents.Add(null); continue; }
+
+ ParameterExpression ComponentInstanceParameter = Expression.Parameter(typeof(Component), "__component");
+ UnaryExpression Casting = Expression.Convert(ComponentInstanceParameter, __type);
+ MethodCallExpression Call = Expression.Call(Casting, eventMethod);
+ Expression> Lambda = Expression.Lambda>(Call, ComponentInstanceParameter);
+ timeEvents.Add(Lambda.Compile());
+ }
+
+ _TypeAssociatedTimeEvents.Add(__type, timeEvents.ToArray());
+ }
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Overhead/Reflection/ReflectionManager.cs b/AwperativeKernel/Kernel/Overhead/Reflection/ReflectionManager.cs
new file mode 100644
index 0000000..9c9053a
--- /dev/null
+++ b/AwperativeKernel/Kernel/Overhead/Reflection/ReflectionManager.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using AwperativeKernel;
+
+
+namespace Awperative.Kernel.Overhead.Reflection;
+
+
+internal static class ReflectionManager
+{
+
+ /// List of all modules in Awperative
+ [MarkerAttributes.UnsafeInternal]
+ internal static List _modules = [];
+
+ /// Resolves all the modules from the calling assembly and module manager
+ [MarkerAttributes.UnsafeInternal]
+ internal static void ResolveModules(Assembly[] __assemblies) {
+ foreach (Assembly assembly in __assemblies) ResolveAssembly(assembly);
+
+ DependencyManager.ResolveFulfillment();
+ }
+
+ /// Resolves all the types in an assembly.
+ [MarkerAttributes.UnsafeInternal]
+ internal static void ResolveAssembly(Assembly __assembly) {
+ foreach (Type type in __assembly.GetTypes()) {
+ DependencyManager.ResolveDependency(type);
+ EventManager.CompileType(type);
+ }
+ }
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/RequiredModules/IDebugger.cs b/AwperativeKernel/Kernel/RequiredModules/IDebugger.cs
index 78669c6..1805754 100644
--- a/AwperativeKernel/Kernel/RequiredModules/IDebugger.cs
+++ b/AwperativeKernel/Kernel/RequiredModules/IDebugger.cs
@@ -1,20 +1,14 @@
-using System;
using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Reflection;
namespace AwperativeKernel;
-public interface IDebugger
+
+[DependencyAttributes.RequiredModule(Source: "Debug")]
+public interface IDebugger : IModule
{
-
- public void Start();
- public void Stop();
public void LogAction(string __message);
public void LogAction(string __message, IEnumerable __values, IEnumerable __args);
diff --git a/AwperativeKernel/Kernel/RequiredModules/IModule.cs b/AwperativeKernel/Kernel/RequiredModules/IModule.cs
new file mode 100644
index 0000000..b7a7783
--- /dev/null
+++ b/AwperativeKernel/Kernel/RequiredModules/IModule.cs
@@ -0,0 +1,12 @@
+namespace AwperativeKernel;
+
+
+public interface IModule
+{
+
+
+ public void Start();
+ public void Stop();
+
+
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/RequiredModules/IModuleManager.cs b/AwperativeKernel/Kernel/RequiredModules/IModuleManager.cs
deleted file mode 100644
index b4683f7..0000000
--- a/AwperativeKernel/Kernel/RequiredModules/IModuleManager.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Collections.Generic;
-using System.Reflection;
-
-
-namespace AwperativeKernel;
-
-
-public interface IModuleManager
-{
- public IEnumerable GetDependencies();
-}
\ No newline at end of file
diff --git a/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.dgspec.json b/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.dgspec.json
index 93d3527..9bb9d23 100644
--- a/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.dgspec.json
+++ b/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.dgspec.json
@@ -1,20 +1,20 @@
{
"format": 1,
"restore": {
- "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj": {}
+ "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj": {}
},
"projects": {
- "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj": {
+ "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj": {
"version": "1.0.0",
"restore": {
- "projectUniqueName": "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
+ "projectUniqueName": "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
"projectName": "AwperativeKernel",
- "projectPath": "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
- "packagesPath": "/Users/averynorris/.nuget/packages/",
- "outputPath": "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/obj/",
+ "projectPath": "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
+ "packagesPath": "/home/avery/.nuget/packages/",
+ "outputPath": "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
- "/Users/averynorris/.nuget/NuGet/NuGet.Config"
+ "/home/avery/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
@@ -38,7 +38,7 @@
"auditLevel": "low",
"auditMode": "direct"
},
- "SdkAnalysisLevel": "10.0.100"
+ "SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net8.0": {
@@ -63,11 +63,11 @@
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
- "version": "[8.0.23, 8.0.23]"
+ "version": "[8.0.24, 8.0.24]"
},
{
"name": "Microsoft.NETCore.App.Ref",
- "version": "[8.0.23, 8.0.23]"
+ "version": "[8.0.24, 8.0.24]"
}
],
"frameworkReferences": {
@@ -75,7 +75,7 @@
"privateAssets": "all"
}
},
- "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/10.0.102/PortableRuntimeIdentifierGraph.json"
+ "runtimeIdentifierGraphPath": "/home/avery/.dotnet/sdk/9.0.311/PortableRuntimeIdentifierGraph.json"
}
}
}
diff --git a/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.g.props b/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.g.props
index 25b6aa4..08dec0c 100644
--- a/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.g.props
+++ b/AwperativeKernel/obj/AwperativeKernel.csproj.nuget.g.props
@@ -4,12 +4,12 @@
True
NuGet
$(MSBuildThisFileDirectory)project.assets.json
- /Users/averynorris/.nuget/packages/
- /Users/averynorris/.nuget/packages/
+ /home/avery/.nuget/packages/
+ /home/avery/.nuget/packages/
PackageReference
- 7.0.0
+ 6.14.0
-
+
\ No newline at end of file
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs
index bbec80c..6c7d647 100644
--- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs
+++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("AwperativeKernel")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+daff25af555790c4cc665d8158c8ec80cf2d5cf2")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+227e70219acaaa9bbd4981af01eb79aaf1d96e0e")]
[assembly: System.Reflection.AssemblyProductAttribute("AwperativeKernel")]
[assembly: System.Reflection.AssemblyTitleAttribute("AwperativeKernel")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache
index 84431c9..476eba4 100644
--- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache
+++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache
@@ -1 +1 @@
-0205d8c69e5e58efd9ceec6d025aa71702700c3efb6b0341b64d64d2efcda724
+5f132d4abe29f474cced3dd72be32c95430c59618df6c594ae25e534fec8180c
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.GeneratedMSBuildEditorConfig.editorconfig b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.GeneratedMSBuildEditorConfig.editorconfig
index cb335e2..cbacfa1 100644
--- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.GeneratedMSBuildEditorConfig.editorconfig
+++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.GeneratedMSBuildEditorConfig.editorconfig
@@ -1,7 +1,5 @@
is_global = true
build_property.TargetFramework = net8.0
-build_property.TargetFrameworkIdentifier = .NETCoreApp
-build_property.TargetFrameworkVersion = v8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
@@ -10,7 +8,7 @@ build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Awperative
-build_property.ProjectDir = /Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/
+build_property.ProjectDir = /home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.assets.cache b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.assets.cache
index 8dcee15..3412d35 100644
Binary files a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.assets.cache and b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.assets.cache differ
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.AssemblyReference.cache b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.AssemblyReference.cache
index 2b06060..2072822 100644
Binary files a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.AssemblyReference.cache and b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.AssemblyReference.cache differ
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.CoreCompileInputs.cache b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.CoreCompileInputs.cache
index d4a5a71..025b8ab 100644
--- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.CoreCompileInputs.cache
+++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-5635b864dfc1ecaa0f2c52b65d178dd300857fd622e8afa48acfcadbd77f72d1
+33413ce2ba51fbf0a7062dcd01f5b1a867dc2f45dcea968b5bdf25fdfd4515ac
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll
index 84430ca..6be7dbc 100644
Binary files a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll and b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll differ
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb
index 5104910..74bce2a 100644
Binary files a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb and b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb differ
diff --git a/AwperativeKernel/obj/Debug/net8.0/ref/AwperativeKernel.dll b/AwperativeKernel/obj/Debug/net8.0/ref/AwperativeKernel.dll
index 8609238..d640c5e 100644
Binary files a/AwperativeKernel/obj/Debug/net8.0/ref/AwperativeKernel.dll and b/AwperativeKernel/obj/Debug/net8.0/ref/AwperativeKernel.dll differ
diff --git a/AwperativeKernel/obj/Debug/net8.0/refint/AwperativeKernel.dll b/AwperativeKernel/obj/Debug/net8.0/refint/AwperativeKernel.dll
index 8609238..d640c5e 100644
Binary files a/AwperativeKernel/obj/Debug/net8.0/refint/AwperativeKernel.dll and b/AwperativeKernel/obj/Debug/net8.0/refint/AwperativeKernel.dll differ
diff --git a/AwperativeKernel/obj/project.assets.json b/AwperativeKernel/obj/project.assets.json
index b070dd3..40c44ad 100644
--- a/AwperativeKernel/obj/project.assets.json
+++ b/AwperativeKernel/obj/project.assets.json
@@ -442,19 +442,19 @@
]
},
"packageFolders": {
- "/Users/averynorris/.nuget/packages/": {}
+ "/home/avery/.nuget/packages/": {}
},
"project": {
"version": "1.0.0",
"restore": {
- "projectUniqueName": "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
+ "projectUniqueName": "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
"projectName": "AwperativeKernel",
- "projectPath": "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
- "packagesPath": "/Users/averynorris/.nuget/packages/",
- "outputPath": "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/obj/",
+ "projectPath": "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
+ "packagesPath": "/home/avery/.nuget/packages/",
+ "outputPath": "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
- "/Users/averynorris/.nuget/NuGet/NuGet.Config"
+ "/home/avery/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
@@ -478,7 +478,7 @@
"auditLevel": "low",
"auditMode": "direct"
},
- "SdkAnalysisLevel": "10.0.100"
+ "SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net8.0": {
@@ -503,11 +503,11 @@
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
- "version": "[8.0.23, 8.0.23]"
+ "version": "[8.0.24, 8.0.24]"
},
{
"name": "Microsoft.NETCore.App.Ref",
- "version": "[8.0.23, 8.0.23]"
+ "version": "[8.0.24, 8.0.24]"
}
],
"frameworkReferences": {
@@ -515,7 +515,7 @@
"privateAssets": "all"
}
},
- "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/10.0.102/PortableRuntimeIdentifierGraph.json"
+ "runtimeIdentifierGraphPath": "/home/avery/.dotnet/sdk/9.0.311/PortableRuntimeIdentifierGraph.json"
}
}
}
diff --git a/AwperativeKernel/obj/project.nuget.cache b/AwperativeKernel/obj/project.nuget.cache
index 009fa49..6b1e1e9 100644
--- a/AwperativeKernel/obj/project.nuget.cache
+++ b/AwperativeKernel/obj/project.nuget.cache
@@ -1,24 +1,24 @@
{
"version": 2,
- "dgSpecHash": "LpP/nHq7BJc=",
+ "dgSpecHash": "nvLY3cNblzg=",
"success": true,
- "projectFilePath": "/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
+ "projectFilePath": "/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj",
"expectedPackageFiles": [
- "/Users/averynorris/.nuget/packages/opentk/5.0.0-pre.15/opentk.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.audio/5.0.0-pre.15/opentk.audio.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.compute/5.0.0-pre.15/opentk.compute.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.core/5.0.0-pre.15/opentk.core.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.graphics/5.0.0-pre.15/opentk.graphics.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.input/5.0.0-pre.15/opentk.input.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.mathematics/5.0.0-pre.15/opentk.mathematics.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.platform/5.0.0-pre.15/opentk.platform.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.redist.glfw/3.4.0.44/opentk.redist.glfw.3.4.0.44.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.windowing.common/5.0.0-pre.15/opentk.windowing.common.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.windowing.desktop/5.0.0-pre.15/opentk.windowing.desktop.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/opentk.windowing.graphicslibraryframework/5.0.0-pre.15/opentk.windowing.graphicslibraryframework.5.0.0-pre.15.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/microsoft.netcore.app.ref/8.0.23/microsoft.netcore.app.ref.8.0.23.nupkg.sha512",
- "/Users/averynorris/.nuget/packages/microsoft.aspnetcore.app.ref/8.0.23/microsoft.aspnetcore.app.ref.8.0.23.nupkg.sha512"
+ "/home/avery/.nuget/packages/opentk/5.0.0-pre.15/opentk.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.audio/5.0.0-pre.15/opentk.audio.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.compute/5.0.0-pre.15/opentk.compute.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.core/5.0.0-pre.15/opentk.core.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.graphics/5.0.0-pre.15/opentk.graphics.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.input/5.0.0-pre.15/opentk.input.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.mathematics/5.0.0-pre.15/opentk.mathematics.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.platform/5.0.0-pre.15/opentk.platform.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.redist.glfw/3.4.0.44/opentk.redist.glfw.3.4.0.44.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.windowing.common/5.0.0-pre.15/opentk.windowing.common.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.windowing.desktop/5.0.0-pre.15/opentk.windowing.desktop.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/opentk.windowing.graphicslibraryframework/5.0.0-pre.15/opentk.windowing.graphicslibraryframework.5.0.0-pre.15.nupkg.sha512",
+ "/home/avery/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
+ "/home/avery/.nuget/packages/microsoft.netcore.app.ref/8.0.24/microsoft.netcore.app.ref.8.0.24.nupkg.sha512",
+ "/home/avery/.nuget/packages/microsoft.aspnetcore.app.ref/8.0.24/microsoft.aspnetcore.app.ref.8.0.24.nupkg.sha512"
],
"logs": []
}
\ No newline at end of file
diff --git a/AwperativeKernel/obj/project.packagespec.json b/AwperativeKernel/obj/project.packagespec.json
index 0a76f1a..b42190b 100644
--- a/AwperativeKernel/obj/project.packagespec.json
+++ b/AwperativeKernel/obj/project.packagespec.json
@@ -1 +1 @@
-"restore":{"projectUniqueName":"/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj","projectName":"AwperativeKernel","projectPath":"/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj","outputPath":"/Users/averynorris/RiderProjects/AwperativeKernel/AwperativeKernel/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"10.0.100"}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"OpenTK":{"target":"Package","version":"[5.0.0-pre.15, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"downloadDependencies":[{"name":"Microsoft.AspNetCore.App.Ref","version":"[8.0.23, 8.0.23]"},{"name":"Microsoft.NETCore.App.Ref","version":"[8.0.23, 8.0.23]"}],"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/10.0.102/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
+"restore":{"projectUniqueName":"/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj","projectName":"AwperativeKernel","projectPath":"/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/AwperativeKernel.csproj","outputPath":"/home/avery/Projects/Awperative/AwperativeKernel/AwperativeKernel/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.300"}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"OpenTK":{"target":"Package","version":"[5.0.0-pre.15, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"downloadDependencies":[{"name":"Microsoft.AspNetCore.App.Ref","version":"[8.0.24, 8.0.24]"},{"name":"Microsoft.NETCore.App.Ref","version":"[8.0.24, 8.0.24]"}],"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/home/avery/.dotnet/sdk/9.0.311/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/AwperativeKernel/obj/rider.project.model.nuget.info b/AwperativeKernel/obj/rider.project.model.nuget.info
index 6f3cc58..79973e2 100644
--- a/AwperativeKernel/obj/rider.project.model.nuget.info
+++ b/AwperativeKernel/obj/rider.project.model.nuget.info
@@ -1 +1 @@
-17724711122635060
\ No newline at end of file
+17724794171898753
\ No newline at end of file
diff --git a/AwperativeKernel/obj/rider.project.restore.info b/AwperativeKernel/obj/rider.project.restore.info
index a1020ce..a594047 100644
--- a/AwperativeKernel/obj/rider.project.restore.info
+++ b/AwperativeKernel/obj/rider.project.restore.info
@@ -1 +1 @@
-17724711517868833
\ No newline at end of file
+17724794196898973
\ No newline at end of file