diff --git a/AwperativeKernel/AwperativeKernel.csproj b/AwperativeKernel/AwperativeKernel.csproj
index 51ffc08..3debb06 100644
--- a/AwperativeKernel/AwperativeKernel.csproj
+++ b/AwperativeKernel/AwperativeKernel.csproj
@@ -10,7 +10,4 @@
-
-
-
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Atrributes/AwperativeAttributes.cs b/AwperativeKernel/Kernel/Atrributes/AwperativeAttributes.cs
deleted file mode 100644
index 95be806..0000000
--- a/AwperativeKernel/Kernel/Atrributes/AwperativeAttributes.cs
+++ /dev/null
@@ -1,368 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-
-
-namespace AwperativeKernel;
-
-
-///
-/// Requires that the Docker owns the parameter
-///
-[AttributeUsage(AttributeTargets.All)]
-public class DockerOwns : Attribute
-{
-
-
- ///
- /// Verifies if the Component is actually owned by Docker. Throws an error if not.
- ///
- /// Docker we are checking ownership for
- /// Component to check for
- public static bool VerifyOrThrow(ComponentDocker __docker, Component __component) {
- if (__docker.Contains(__component)) return true;
-
- Debug.LogError("Docker does not own the Component!", ["ComponentType", "ComponentName", "ComponentHash", "DockerType", "DockerName", "DockerHash"], [
- __component.GetType().Name,
- __component.Name,
- __component.GetHashCode().ToString("N0"),
- __docker.GetType().Name,
- __docker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
- __docker.GetHashCode().ToString("N0")
- ]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the Docker does not own the parameter
-///
-[AttributeUsage(AttributeTargets.All)]
-public class DockerDoesntOwn : Attribute
-{
-
-
- ///
- /// Verifies if the Component is actually not owned by Docker. Throws an error if not.
- ///
- /// Docker we are checking ownership for
- /// Component to check for
- public static bool VerifyOrThrow(ComponentDocker __docker, Component __component) {
- if (!__docker.Contains(__component)) return true;
-
- Debug.LogError("Docker owns the Component!", ["ComponentType", "ComponentName", "ComponentHash", "DockerType", "DockerName", "DockerHash"], [
- __component.GetType().Name,
- __component.Name,
- __component.GetHashCode().ToString("N0"),
- __docker.GetType().Name,
- __docker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
- __docker.GetHashCode().ToString("N0")
- ]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the component is not attached to any Docker
-///
-[AttributeUsage(AttributeTargets.All)]
-public class OrphanComponent : Attribute
-{
-
-
- ///
- /// Verifies if the Component is an orphan, not fully accurate, because it only checks if the docker is null, this means it is technically possible
- /// to have a component already attached to a docker, and still verify it as false if Docker is null, but this should be impossible in practice.
- ///
- ///
- ///
- public static bool VerifyOrThrow(Component __component) {
- if (__component.ComponentDocker == null) return true;
-
- Debug.LogError("Component is already owned!", ["ComponentType", "ComponentName", "ComponentHash", "DockerType", "DockerName", "DockerHash"], [
- __component.GetType().Name,
- __component.Name,
- __component.GetHashCode().ToString("N0"),
- __component.ComponentDocker.GetType().Name,
- __component.ComponentDocker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
- __component.ComponentDocker.GetHashCode().ToString("N0")
- ]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the Component is not null
-///
-[AttributeUsage(AttributeTargets.All)]
-public class ComponentNotNull : Attribute
-{
-
-
- ///
- /// Verifies if the Component is not null! Throws an error otherwise.
- ///
- ///
- ///
- public static bool VerifyOrThrow(Component __component) {
- if (__component != null) return true;
-
- Debug.LogError("Component is null!");
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the Docker is not null
-///
-[AttributeUsage(AttributeTargets.All)]
-public class DockerNotNull : Attribute
-{
-
-
- ///
- /// Verifies if the Docker is not null! Throws an error otherwise.
- ///
- ///
- ///
- public static bool VerifyOrThrow(ComponentDocker __componentDocker) {
- if (__componentDocker != null) return true;
-
- Debug.LogError("Docker is null!");
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the Scene is not null
-///
-[AttributeUsage(AttributeTargets.All)]
-public class SceneNotNull : Attribute
-{
-
-
- ///
- /// Verifies if the Scene is not null! Throws an error otherwise.
- ///
- ///
- public static bool VerifyOrThrow(Scene __scene) {
- if (__scene != null) return true;
-
- Debug.LogError("Scene is null!");
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that everything in the collection is not null
-///
-[AttributeUsage(AttributeTargets.All)]
-public class CollectionNotNull : Attribute
-{
-
-
- ///
- /// Verifies if the Scene is not null! Throws an error otherwise.
- ///
- ///
- public static bool VerifyOrThrow(Collection __collection) {
- for (var i = 0; i < __collection.Count; i++)
- if (__collection[i] == null)
- Debug.LogError("A Given Collection has null members!", ["Type"], [__collection.GetType().Name]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that everything in the collection is not null
-///
-[AttributeUsage(AttributeTargets.All)]
-public class EnumeratorNotNull : Attribute
-{
-
-
- ///
- /// Verifies if the Scene is not null! Throws an error otherwise.
- ///
- ///
- public static bool VerifyOrThrow(IEnumerable __enumerator) {
- foreach (object obj in __enumerator)
- if (obj == null)
- Debug.LogError("A Given Enumerator has null members!", ["Type"], [__enumerator.GetType().Name]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the object is not null
-///
-[AttributeUsage(AttributeTargets.All)]
-public class NotNull : Attribute
-{
-
-
- ///
- /// Verifies if the Scene is not null! Throws an error otherwise.
- ///
- ///
- public static bool VerifyOrThrow(Object __object) {
- if (__object != null) return true;
-
- Debug.LogError("A Given parameter is null!", ["Type"],
- [__object.GetType().Name
- ]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the Docker is a different docker than the one given
-///
-[AttributeUsage(AttributeTargets.All)]
-public class DifferentDocker : Attribute
-{
-
-
- ///
- /// Verifies if the Dockers are different!
- ///
- ///
- public static bool VerifyOrThrow(ComponentDocker __docker, ComponentDocker __other) {
- if (__docker != __other) return true;
-
- Debug.LogError("The Dockers are the same!", ["DockerType, DockerName, DockerHash"], [
- __docker.GetType().Name,
- __docker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
- __docker.GetHashCode().ToString("N0")
- ]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the index fits a given collection
-///
-[AttributeUsage(AttributeTargets.All)]
-public class ValueFitsRange : Attribute
-{
-
-
- ///
- /// Verifies if the value fits a range
- ///
- ///
- ///
- public static bool VerifyOrThrow(int __index, int __min, int __max) {
- if (__index >= __min && __index <= __max) return true;
-
- Debug.LogError("Value does not fit range!", ["Index"], [__index.ToString("N0")]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the index fits a given collection
-///
-[AttributeUsage(AttributeTargets.All)]
-public class CollectionContains : Attribute
-{
-
-
- ///
- /// Verifies if the value fits a range
- ///
- ///
- ///
- public static bool VerifyOrThrow<__Type>(__Type __object, ICollection<__Type> __collection) {
- if(__collection.Contains(__object)) return true;
-
- Debug.LogError("Collection does not contain object!", ["ObjectType"],
- [__object.GetType().Name]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Requires that the index fits a given collection
-///
-[AttributeUsage(AttributeTargets.All)]
-public class CollectionDoesntContain : Attribute
-{
-
-
- ///
- /// Verifies if the value fits a range
- ///
- ///
- ///
- public static bool VerifyOrThrow<__Type>(__Type __object, ICollection<__Type> __collection) {
- if(!__collection.Contains(__object)) return true;
-
- Debug.LogError("Collection already contains object!", ["ObjectType"],
- [__object.GetType().Name]);
-
- return Debug.IgnoreErrors;
- }
-}
-
-
-
-///
-/// Shows that the given object is unsafe (ex. it doesn't check for null values and such, or it doesn't have guardrails based on cases).
-/// This is just for internal/private methods to remind myself how to call it :) The reasoning is case by case, but most of the time,
-/// it is because all of the exposing public methods already check, and double checks would only slow me down
-///
-[AttributeUsage(AttributeTargets.All)]
-public class UnsafeInternal : Attribute { }
-
-
-
-///
-/// Shows that the given object (meant for external use) is calculated every time it is called! Good to know for performance heavy systems.
-///
-[AttributeUsage(AttributeTargets.All)]
-public class CalculatedProperty() : Attribute { }
-
-
-
-///
-/// Just a way to write how expensive a calculated property can be.
-///
-[AttributeUsage(AttributeTargets.All)]
-public class CalculatedPropertyExpense(string Expense) : Attribute { }
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Atrributes/DebugAttributes.cs b/AwperativeKernel/Kernel/Atrributes/DebugAttributes.cs
new file mode 100644
index 0000000..3e16cfc
--- /dev/null
+++ b/AwperativeKernel/Kernel/Atrributes/DebugAttributes.cs
@@ -0,0 +1,295 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+
+
+namespace AwperativeKernel;
+
+
+///
+/// Holds a myriad of useful attributes which you are more than welcome to use! These attributes are not meant for reflection, but merely as a means of straightforward debugging.
+/// Each attribute gives has a method called VerifyOrThrow() which can differ parameter wise. VerifyOrThrow() returns a bool based on if the condition is true or not.
+/// If it is false it will try to throw an error, and returns false as well.The only time this behavior differs, is if Awperative is set to IgnoreErrors. In that case it will return true no matter what.
+/// (However it will still debug unless that is disabled too).
+///
+///
+/// The attributes have been designed to be used in methods like so : if(!Attribute.VerifyOrThrow()) return; This usage allows the attribute to control the flow of output, and halt any unsafe process.
+/// However, nothing is stopping you from using them any other way, so go wild. Feel free to make more, or use these in your own code!
+///
+/// Avery Norris
+public static class DebugAttributes
+{
+ #region Docker/Entity
+
+ /// Requires that any Component is owned by the Docker
+ [AttributeUsage(AttributeTargets.All)]
+ public class DockerOwns : Attribute
+ {
+
+
+ /// Returns true or false based on the given condition from the attribute, unless Debug.IgnoreErrors is true, in which it will always return true, but still try to throw errors.
+ /// It is required to use VerifyOrThrow() to validate important conditions for methods within the kernel. You may also feel free to use this outside in any modules or games.
+ /// It is easiest to use VerifyOrThrow like : (In your method) if(!Attribute.VerifyOrThrow()) return; That way the attribute can exit the code if the condition is false.
+ public static bool VerifyOrThrow(ComponentDocker __docker, Component __component) {
+ if (__docker.Contains(__component)) return true;
+
+ Debug.LogError("Docker does not own the Component!",
+ ["ComponentType", "ComponentName", "ComponentHash", "DockerType", "DockerName", "DockerHash"], [
+ __component.GetType().Name,
+ __component.Name,
+ __component.GetHashCode().ToString("N0"),
+ __docker.GetType().Name,
+ __docker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
+ __docker.GetHashCode().ToString("N0")
+ ]);
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that the Docker does not own the given Component
+ [AttributeUsage(AttributeTargets.All)]
+ public class DockerDoesntOwn : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(ComponentDocker __docker, Component __component) {
+ if (!__docker.Contains(__component)) return true;
+
+ Debug.LogError("Docker owns the Component!",
+ ["ComponentType", "ComponentName", "ComponentHash", "DockerType", "DockerName", "DockerHash"], [
+ __component.GetType().Name,
+ __component.Name,
+ __component.GetHashCode().ToString("N0"),
+ __docker.GetType().Name,
+ __docker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
+ __docker.GetHashCode().ToString("N0")
+ ]);
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that the Component does not belong to a Docker
+ [AttributeUsage(AttributeTargets.All)]
+ public class OrphanComponent : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(Component __component) {
+ if (__component.ComponentDocker == null) return true;
+
+ Debug.LogError("Component is already owned!",
+ ["ComponentType", "ComponentName", "ComponentHash", "DockerType", "DockerName", "DockerHash"], [
+ __component.GetType().Name,
+ __component.Name,
+ __component.GetHashCode().ToString("N0"),
+ __component.ComponentDocker.GetType().Name,
+ __component.ComponentDocker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
+ __component.ComponentDocker.GetHashCode().ToString("N0")
+ ]);
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that a given Docker is not the same
+ [AttributeUsage(AttributeTargets.All)]
+ public class DifferentDocker : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(ComponentDocker __docker, ComponentDocker __other) {
+ if (!__docker.Equals(__other)) return true;
+
+ Debug.LogError("The dockers are the same!", ["DockerType", "DockerName", "DockerHash"], [
+ __docker.GetType().Name,
+ __docker switch { Scene scene => scene.Name, Component component => component.Name, _ => "unknown" },
+ __docker.GetHashCode().ToString("N0")
+ ]);
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that the Component is not null
+ [AttributeUsage(AttributeTargets.All)]
+ public class ComponentNotNull : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(Component __component) {
+ if (__component != null) return true;
+
+ Debug.LogError("Component is null!");
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that the Docker is not null
+ [AttributeUsage(AttributeTargets.All)]
+ public class DockerNotNull : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(ComponentDocker __componentDocker) {
+ if (__componentDocker != null) return true;
+
+ Debug.LogError("Docker is null!");
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that a given Scene is not null
+ [AttributeUsage(AttributeTargets.All)]
+ public class SceneNotNull : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(Scene __scene) {
+ if (__scene != null) return true;
+
+ Debug.LogError("Scene is null!");
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+ #endregion
+
+ #region Null/Collection
+
+ /// Requires all elements in a Collection are not null
+ [AttributeUsage(AttributeTargets.All)]
+ public class CollectionNotNull : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(ICollection __collection) {
+ foreach (object obj in __collection) {
+ if (obj == null) {
+ Debug.LogError("A given enumerator has null members!", ["Type"], [__collection.GetType().Name]);
+ return Debug.IgnoreErrors;
+ }
+ }
+
+ return true;
+ }
+ }
+
+
+
+ /// Requires all elements in an Enumerator are not null
+ [AttributeUsage(AttributeTargets.All)]
+ public class EnumeratorNotNull : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(IEnumerable __enumerator) {
+ foreach (object obj in __enumerator) {
+ if (obj == null) {
+ Debug.LogError("A given enumerator has null members!", ["Type"], [__enumerator.GetType().Name]);
+ return Debug.IgnoreErrors;
+ }
+ }
+
+ return true;
+ }
+ }
+
+
+
+ /// Requires a given object is not null
+ [AttributeUsage(AttributeTargets.All)]
+ public class NotNull : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(Object __object) {
+ if (__object != null) return true;
+
+ Debug.LogError("A given object is null!");
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+
+
+ /// Requires that an integer fits a range
+ [AttributeUsage(AttributeTargets.All)]
+ public class ValueFitsRange : Attribute
+ {
+
+
+ ///
+ public static bool VerifyOrThrow(int __index, int __min, int __max) {
+ if (__index >= __min && __index <= __max) return true;
+
+ Debug.LogError("Value does not fit range!", ["Index"], [__index.ToString("N0")]);
+
+ return 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;
+
+ Debug.LogError("Collection does not contain object!", ["ObjectType"], [__object.GetType().Name]);
+
+ return 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;
+
+ Debug.LogError("Collection already contains object!", ["ObjectType"], [__object.GetType().Name]);
+
+ return Debug.IgnoreErrors;
+ }
+ }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Atrributes/MarkerAttributes.cs b/AwperativeKernel/Kernel/Atrributes/MarkerAttributes.cs
new file mode 100644
index 0000000..2161b04
--- /dev/null
+++ b/AwperativeKernel/Kernel/Atrributes/MarkerAttributes.cs
@@ -0,0 +1,33 @@
+using System;
+
+
+namespace AwperativeKernel;
+
+
+public static class MarkerAttributes
+{
+
+ ///
+ /// Shows that the given object is unsafe (ex. it doesn't check for null values and such, or it doesn't have guardrails based on cases).
+ /// This is just for internal/private methods to remind myself how to call it :) The reasoning is case by case, but most of the time,
+ /// it is because all of the exposing public methods already check, and double checks would only slow me down
+ ///
+ [AttributeUsage(AttributeTargets.All)]
+ public class UnsafeInternal : Attribute { }
+
+
+
+ ///
+ /// Shows that the given object (meant for external use) is calculated every time it is called! Good to know for performance heavy systems.
+ ///
+ [AttributeUsage(AttributeTargets.All)]
+ public class CalculatedProperty() : Attribute { }
+
+
+
+ ///
+ /// Just a way to write how expensive a calculated property can be.
+ ///
+ [AttributeUsage(AttributeTargets.All)]
+ public class CalculatedPropertyExpense(string Expense) : Attribute { }
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/Component/Component.cs b/AwperativeKernel/Kernel/Component/Component.cs
index 0bb47b0..2dfb875 100644
--- a/AwperativeKernel/Kernel/Component/Component.cs
+++ b/AwperativeKernel/Kernel/Component/Component.cs
@@ -13,14 +13,14 @@ namespace AwperativeKernel;
-public abstract partial class Component : ComponentDocker, IDisposable
+public abstract partial class Component : ComponentDocker
{
/// Current parent of the Component. Can be either Scene or another Component.
- [UnsafeInternal]
- internal ComponentDocker ComponentDocker { get; set; } = null;
+ [MarkerAttributes.UnsafeInternal]
+ public ComponentDocker ComponentDocker { get; set; } = null;
///
@@ -29,28 +29,28 @@ public abstract partial class Component : ComponentDocker, IDisposable
[NotNull]
public string Name {
get => _name;
- set { if (!NotNull.VerifyOrThrow(value)) return; _name = value; }
- } [UnsafeInternal] private string _name;
+ set { if (!DebugAttributes.NotNull.VerifyOrThrow(value)) return; _name = value; }
+ } [MarkerAttributes.UnsafeInternal] private string _name;
/// Represents the state of this Component, The largest bit represents if the Component is enabled or not, while the
/// next 7 represent its priority
- [UnsafeInternal]
+ [MarkerAttributes.UnsafeInternal]
private byte OrderProfile;
/// If the component receives time events or not.
- [CalculatedProperty, CalculatedPropertyExpense("Very Low")]
+ [MarkerAttributes.CalculatedProperty, MarkerAttributes.CalculatedPropertyExpense("Very Low")]
public bool Enabled {
get => (OrderProfile & 128) > 0;
set => OrderProfile = (byte)((OrderProfile & 127) | (value ? 128 : 0));
}
/// Represents the Component's Update priority, can be set to any value ranging from -64 to 63; otherwise an error will throw!
- [CalculatedProperty, CalculatedPropertyExpense("Very Low")]
+ [MarkerAttributes.CalculatedProperty, MarkerAttributes.CalculatedPropertyExpense("Very Low")]
public int Priority {
get => (sbyte)(OrderProfile << 1) >> 1;
set {
- if(!ValueFitsRange.VerifyOrThrow(value, -64, 63)) return;
+ if(!DebugAttributes.ValueFitsRange.VerifyOrThrow(value, -64, 63)) return;
OrderProfile = (byte)((OrderProfile & 0x80) | (value & 0x7F));
ComponentDocker.UpdatePriority(this, value);
}
@@ -64,7 +64,7 @@ public abstract partial class Component : ComponentDocker, IDisposable
/// Attempts to send an Event to the Component, terminates if the Component does not have the given Event
///
/// Type of Event
- [UnsafeInternal]
+ [MarkerAttributes.UnsafeInternal]
internal void TryEvent(int __timeEvent) {
Awperative._TypeAssociatedTimeEvents[GetType()][__timeEvent]?.Invoke(this);
}
@@ -75,7 +75,7 @@ public abstract partial class Component : ComponentDocker, IDisposable
/// Identifiers for Components.
///
public IReadOnlyList Tags => [.._tags];
- [UnsafeInternal] internal HashSet _tags = [];
+ [MarkerAttributes.UnsafeInternal] internal HashSet _tags = [];
@@ -85,10 +85,10 @@ public abstract partial class Component : ComponentDocker, IDisposable
/// Adds a new tag to the Component
///
/// The tag to add
- public void AddTag([NotNull, CollectionDoesntContain] string __tag)
+ public void AddTag([DebugAttributes.NotNull, DebugAttributes.CollectionDoesntContain] string __tag)
{
- if(!NotNull.VerifyOrThrow(__tag)) return;
- if(!CollectionDoesntContain.VerifyOrThrow(__tag, _tags)) return;
+ if(!DebugAttributes.NotNull.VerifyOrThrow(__tag)) return;
+ if(!DebugAttributes.CollectionDoesntContain.VerifyOrThrow(__tag, _tags)) return;
_tags.Add(__tag);
ComponentDocker.AddTagToComponent(__tag, this);
@@ -102,20 +102,14 @@ public abstract partial class Component : ComponentDocker, IDisposable
/// Adds a new tag to the Component
///
/// The tag to add
- public void RemoveTag([NotNull,CollectionContains] string __tag)
+ public void RemoveTag([DebugAttributes.NotNull,DebugAttributes.CollectionContains] string __tag)
{
- if (!NotNull.VerifyOrThrow(__tag)) return;
- if(!CollectionContains.VerifyOrThrow(__tag, _tags)) return;
+ if (!DebugAttributes.NotNull.VerifyOrThrow(__tag)) return;
+ if(!DebugAttributes.CollectionContains.VerifyOrThrow(__tag, _tags)) return;
_tags.Remove(__tag);
ComponentDocker.RemoveTagFromComponent(__tag, this);
}
-
-
-
-
-
- public virtual void Dispose() { GC.SuppressFinalize(this); }
public override string ToString() {
return this.Name;
diff --git a/AwperativeKernel/Kernel/Component/ComponentCalculatedProperty.cs b/AwperativeKernel/Kernel/Component/ComponentCalculatedProperty.cs
index 37a05d2..6f379c1 100644
--- a/AwperativeKernel/Kernel/Component/ComponentCalculatedProperty.cs
+++ b/AwperativeKernel/Kernel/Component/ComponentCalculatedProperty.cs
@@ -4,7 +4,7 @@ namespace AwperativeKernel;
public abstract partial class Component
{
- ///
+ ///
/// Scene the Component resides in.
///
[CalculatedProperty, CalculatedPropertyExpense("Medium: O(Parents)")]
diff --git a/AwperativeKernel/Kernel/Component/ComponentLambda.cs b/AwperativeKernel/Kernel/Component/ComponentLambda.cs
index 02c0253..8dc598e 100644
--- a/AwperativeKernel/Kernel/Component/ComponentLambda.cs
+++ b/AwperativeKernel/Kernel/Component/ComponentLambda.cs
@@ -24,5 +24,10 @@ public abstract partial class Component
///
public void Move(ComponentDocker __newDocker) => ComponentDocker.Move(this, __newDocker);
-
+
+
+
+ /// Makes the Component destroy itself
+ public void Destroy() => ComponentDocker.Destroy(this);
+
}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDocker.cs b/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDocker.cs
index d9d4eef..4709020 100644
--- a/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDocker.cs
+++ b/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDocker.cs
@@ -9,7 +9,7 @@ using System.Reflection;
namespace AwperativeKernel;
///
-/// Base class for all Awperative Entities. Responsible for Managing hierarchy between Components and Scenes, has Extensive Component Manipulation Available.
+/// Base class for all Awperative objects. Responsible for Managing hierarchy between Components and Scenes, has Extensive Component Manipulation Available.
/// Also transfers Time and Carries most of the responsibilities akin to the Component.
///
/// Please don't inherit this. I don't know why you would
@@ -107,7 +107,7 @@ public abstract partial class ComponentDocker : IEnumerable, IEnumerable
@@ -119,9 +119,9 @@ public abstract partial class ComponentDocker : IEnumerable, IEnumerable
@@ -165,5 +165,4 @@ public abstract partial class ComponentDocker : IEnumerable, IEnumerable
///
///
- public bool Contains([ComponentNotNull,DockerOwns] Component __component)
- => NotNull.VerifyOrThrow(__component) && DockerOwns.VerifyOrThrow(this, __component) && _components.Contains(__component);
+ public bool Contains([ComponentNotNull] Component __component)
+ => NotNull.VerifyOrThrow(__component) && _componentTypeDictionary.TryGetValue(__component.GetType(), out var components) && components.Contains(__component);
///
/// Finds all Components that have all the given tags
///
///
///
- public bool Contains<__Type>(string __tag) {
- return GetAll<__Type>(__tag).Any();
- }
+ public bool Contains<__Type>([NotNull] string __tag)
+ => NotNull.VerifyOrThrow(__tag) && GetAll<__Type>(__tag).Any();
///
/// Finds all Components that have all the given tags
@@ -116,7 +116,7 @@ public abstract partial class ComponentDocker
/// The Type of Components to search for
///
public IReadOnlyList<__Type> GetAll<__Type>() where __Type : Component {
- return (IReadOnlyList<__Type>)_componentTypeDictionary.GetValueOrDefault(typeof(__Type)).ToList();
+ return _componentTypeDictionary.TryGetValue(typeof(__Type), out var components) ? components.OfType<__Type>().ToList() : [];
}
///
diff --git a/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDockerManagement.cs b/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDockerManagement.cs
index 144a4f0..0357b89 100644
--- a/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDockerManagement.cs
+++ b/AwperativeKernel/Kernel/ComponentDocker/Core/ComponentDockerManagement.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
@@ -134,16 +135,17 @@ public abstract partial class ComponentDocker
/// Target Docker
/// Type of Components to transfer
public void MoveAll<__Type>([DockerNotNull, DifferentDocker] ComponentDocker __componentDocker) where __Type : Component => MoveAll(GetAll<__Type>(), __componentDocker);
-
-
-
-
-
+
+
+
+
+ public TimeSpan total;
///
/// Destroys a Component attached to the Docker
///
///
public void Destroy([ComponentNotNull,DockerOwns] Component __component) {
+ Stopwatch timer = Stopwatch.StartNew();
if(!ComponentNotNull.VerifyOrThrow(__component)) return;
if(!DockerOwns.VerifyOrThrow(this, __component)) return;
@@ -152,8 +154,8 @@ public abstract partial class ComponentDocker
RemoveComponentFromLists(__component);
__component.ComponentDocker = null;
-
- __component.Dispose();
+ timer.Stop();
+ total += timer.Elapsed;
}
@@ -162,7 +164,7 @@ public abstract partial class ComponentDocker
/// Destroys the first found Component of a given type
///
/// Type of Component to destroy
- public void Destroy<__Type>() where __Type : Component => Destroy(Get<__Type>());
+ public void Destroy<__Type>() where __Type : Component => DestroyAll(GetAll<__Type>());
diff --git a/AwperativeKernel/Kernel/Debug/Debug.cs b/AwperativeKernel/Kernel/Debug/Debug.cs
index 9575a44..8edcb95 100644
--- a/AwperativeKernel/Kernel/Debug/Debug.cs
+++ b/AwperativeKernel/Kernel/Debug/Debug.cs
@@ -145,7 +145,7 @@ public static class Debug
/// Writes the current message to the log file.
///
/// Message to debug
- public static void LogError(string __message) => LogGeneric(__message, "ERR", [], []);
+ public static void LogError(string __message) => LogGeneric(__message, "ERR", [], [], ThrowExceptions);
///
/// Writes the current message to the log file. With any given call sign.
diff --git a/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs b/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
index ec87d59..5d49957 100644
--- a/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
+++ b/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
@@ -44,6 +44,12 @@ public static partial class Awperative
public static bool IsStarted { get; private set; } = false;
/// Displays if the update loop is active
public static bool IsRunning { get; private set; } = false;
+
+
+
+ /// Awperative's debugger of choice
+ public static IDebugger Debug { get; set; }
+ public static IModuleManager ModuleManager { get; set; }
///
@@ -58,6 +64,14 @@ public static partial class Awperative
}
+
+ 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 null;
+ }
+
+
///
/// Finds a Scene from a given name
@@ -90,58 +104,81 @@ public static partial class Awperative
///
/// Name of the scene
public static void CloseScene(string __name) => _scenes.Remove(GetScene(__name));
-
-
-
-
+
+
+
+
///
/// Gets Awperative ready to begin! Compiles Component functions etc. Please call before doing anything Awperative
/// related!
///
- public static void Start() {
- if(IsStarted) return;
+ public static void Start(string moduleManagerPath) {
+ if (IsStarted) return;
IsStarted = true;
-
- Debug.Initiate();
-
+
+ //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.
- Debug.LogAction("Evaluating Components!");
- foreach (Type type in Assembly.GetCallingAssembly().GetTypes()) {
- if (type.IsSubclassOf(typeof(Component))) {
+ 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];
+ Action[] timeEvents = new Action[ComponentEvents.Count];
- byte eventProfile = 0;
- List debugProfile = [];
+ byte eventProfile = 0;
+ List debugProfile = [];
- for(int i = 0; i < ComponentEvents.Count; i++) {
- MethodInfo eventMethod = type.GetMethod(ComponentEvents[i]);
+ for (int i = 0; i < ComponentEvents.Count; i++) {
+ MethodInfo eventMethod = type.GetMethod(ComponentEvents[i]);
- if (eventMethod != null) {
-
- debugProfile.Add(ComponentEvents[i]);
-
- 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;
+ 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);
}
-
-
- Debug.LogAction("Evaluated Component! ", ["Type", "Time Events", "Profile"], [type.Name, "[" + string.Join(", ", debugProfile.Select(x => x.ToString())) + "]", eventProfile.ToString()]);
- _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.");
+ }
+ }
}
}
-
+ if (Debug == null)
+ throw new Exception("Awperative doesn't have a Debugger!");
+
+ Debug.Start();
+
+ Debug.LogAction("Successfully Compiled Classes!");
}
-
+
internal static Comparer _prioritySorter = Comparer.Create((a, b) => {
int result = b.Priority.CompareTo(a.Priority);
return (result != 0) ? result : a.GetHashCode().CompareTo(b.GetHashCode());
@@ -164,13 +201,25 @@ public static partial class Awperative
//Update, 2
//Draw 3
//Create, 4
- //Destroy, 5
+ //Remove, 5
// 0000 0000
//
+ public static void TestUpdate() {
+ foreach (Scene scene in Scenes) {
+ scene.ChainEvent(2);
+ }
+ }
+
+ public static void TestDraw() {
+ foreach (Scene scene in Scenes) {
+ scene.ChainEvent(3);
+ }
+ }
- internal static ReadOnlyCollection ComponentEvents = new(["Load", "Unload", "Update", "Draw", "Create", "Destroy"]);
+
+ internal static ReadOnlyCollection ComponentEvents = new(["Load", "Unload", "Update", "Draw", "Create", "Remove"]);
diff --git a/AwperativeKernel/Kernel/RequiredModules/IDebugger.cs b/AwperativeKernel/Kernel/RequiredModules/IDebugger.cs
new file mode 100644
index 0000000..ceb6f31
--- /dev/null
+++ b/AwperativeKernel/Kernel/RequiredModules/IDebugger.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+
+
+
+namespace AwperativeKernel;
+
+
+public interface IDebugger
+{
+
+ public void Start();
+ public void Stop();
+
+ public void LogAction(string __message);
+ public void LogAction(string __message, IReadOnlyList __values, IReadOnlyList __args);
+
+ public void LogWarning(string __message);
+ public void LogWarning(string __message, IReadOnlyList __values, IReadOnlyList __args);
+
+ public void LogError(string __message);
+ public void LogError(string __message, IReadOnlyList __values, IReadOnlyList __args);
+
+
+
+ public bool ThrowExceptions { get; set; }
+ public bool IgnoreErrors { get; set; }
+ public bool DebugErrors { get; set; }
+
+
+}
\ No newline at end of file
diff --git a/AwperativeKernel/Kernel/RequiredModules/IModuleManager.cs b/AwperativeKernel/Kernel/RequiredModules/IModuleManager.cs
new file mode 100644
index 0000000..b80d675
--- /dev/null
+++ b/AwperativeKernel/Kernel/RequiredModules/IModuleManager.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+using System.Reflection;
+
+
+namespace AwperativeKernel;
+
+
+public interface IModuleManager
+{
+ public IReadOnlyList 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 7e5e8ec..26a1202 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+4a9f3d4476aad85ea81cf5539e1cbe307a50bee5")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8c3803fcdf9411da13e462596847a88f1080bb39")]
[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 fa90c60..49ebfc5 100644
--- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache
+++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache
@@ -1 +1 @@
-d26fbee268a2a19e12312d333a763a70899a64f6b3b49b30e13a2696cde111a2
+1401ec548e06fa205cbd38d50de2d7971689c7694c0af3dc509c2945921d606a
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 7d8511c..be3a4c0 100644
--- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.CoreCompileInputs.cache
+++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-d99749faea945604824f7022f457f0974d512ed438f5f0cc6813de62d37d1f41
+22dd22d60e6c8fbd5110065c2450e37bceb89fe776160bf2e51e6a6a8825b2b1
diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll
index d1cc6e9..73c7ee2 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 4831b0d..347b73b 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 1b1cce7..1831c88 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 4c33175..1831c88 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 f9b028f..a14e091 100644
--- a/AwperativeKernel/obj/rider.project.model.nuget.info
+++ b/AwperativeKernel/obj/rider.project.model.nuget.info
@@ -1 +1 @@
-17722910163812180
\ No newline at end of file
+17722975223225869
\ No newline at end of file
diff --git a/AwperativeKernel/obj/rider.project.restore.info b/AwperativeKernel/obj/rider.project.restore.info
index 1212d84..88febf5 100644
--- a/AwperativeKernel/obj/rider.project.restore.info
+++ b/AwperativeKernel/obj/rider.project.restore.info
@@ -1 +1 @@
-17722910991366692
\ No newline at end of file
+17722975227348769
\ No newline at end of file