Compare commits
19 Commits
c234315ee3
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ba515502f9 | |||
| 3c2ad05cab | |||
| abbfe285b6 | |||
| c81b942f2b | |||
| 283cadc490 | |||
| 1f96b653ad | |||
| de8e9aca44 | |||
| 0e21432ffb | |||
| 31566cb64c | |||
| 10bc10062f | |||
| 4ac4c39d2f | |||
| 843979e10b | |||
| 44a9ce41f3 | |||
| 6cb3c2e53f | |||
| bdd9b7bed8 | |||
| fd4c07844b | |||
| 8bfc8437dc | |||
| 9d8593a3f5 | |||
| e9ede187c7 |
306
.idea/.idea.Awperative/.idea/workspace.xml
generated
Normal file
306
.idea/.idea.Awperative/.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,306 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="a0780d2b-c545-4e94-9f04-a86ef3682e61" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.dll" beforeDir="false" afterPath="$PROJECT_DIR$/AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.dll" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.pdb" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs" beforeDir="false" afterPath="$PROJECT_DIR$/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache" beforeDir="false" afterPath="$PROJECT_DIR$/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
<option name="RESET_MODE" value="HARD" />
|
||||
</component>
|
||||
<component name="GitHubPullRequestSearchHistory">{
|
||||
"lastFilter": {
|
||||
"state": "OPEN",
|
||||
"assignee": "BlazeyDotOrg"
|
||||
}
|
||||
}</component>
|
||||
<component name="GithubPullRequestsUISettings">{
|
||||
"selectedUrlAndAccountId": {
|
||||
"url": "https://github.com/BlazeyDotOrg/Awperative.git",
|
||||
"accountId": "344e2461-798d-4d88-a9cb-8af344064ac4"
|
||||
}
|
||||
}</component>
|
||||
<component name="HighlightingSettingsPerFile">
|
||||
<setting file="file://$PROJECT_DIR$/AwperativeKernel/.config/dotnet-tools.json" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/AwperativeKernel/Kernel/Component/Component.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/AwperativeKernel/Kernel/ComponentDocker/ComponentDocker.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/AwperativeKernel/Kernel/Debug/Debug.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/AwperativeKernel/Kernel/Overhead/Base/Base.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/AwperativeKernel/Kernel/Scene/Scene.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
</component>
|
||||
<component name="MetaFilesCheckinStateConfiguration" checkMetaFiles="true" />
|
||||
<component name="ProblemsViewState">
|
||||
<option name="selectedTabId" value="CurrentFile" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"associatedIndex": 2
|
||||
}</component>
|
||||
<component name="ProjectId" id="38ULMW7J55snE1NrOYpCSyseES9" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||
"git-widget-placeholder": "main",
|
||||
"junie.onboarding.icon.badge.shown": "true",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "preferences.pluginManager",
|
||||
"to.speed.mode.migration.done": "true",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="a0780d2b-c545-4e94-9f04-a86ef3682e61" name="Changes" comment="" />
|
||||
<created>1768849154932</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1768849154932</updated>
|
||||
<workItem from="1768849155978" duration="441000" />
|
||||
<workItem from="1768849620634" duration="6151000" />
|
||||
<workItem from="1768861303093" duration="3811000" />
|
||||
<workItem from="1768872615185" duration="711000" />
|
||||
<workItem from="1768886562898" duration="7000" />
|
||||
<workItem from="1768886596003" duration="316000" />
|
||||
<workItem from="1768927033736" duration="244000" />
|
||||
<workItem from="1768934765323" duration="2244000" />
|
||||
<workItem from="1769097334164" duration="30000" />
|
||||
<workItem from="1769098276943" duration="14000" />
|
||||
<workItem from="1769098781841" duration="1162000" />
|
||||
<workItem from="1769795388086" duration="489000" />
|
||||
<workItem from="1769821910140" duration="55000" />
|
||||
<workItem from="1769821972103" duration="3036000" />
|
||||
<workItem from="1769883377911" duration="132000" />
|
||||
<workItem from="1769962701776" duration="4162000" />
|
||||
<workItem from="1769997445805" duration="5322000" />
|
||||
<workItem from="1770004954148" duration="524000" />
|
||||
<workItem from="1770065212824" duration="1444000" />
|
||||
<workItem from="1770164825511" duration="1170000" />
|
||||
<workItem from="1770326257383" duration="2548000" />
|
||||
<workItem from="1770508284646" duration="1792000" />
|
||||
<workItem from="1770573413396" duration="12078000" />
|
||||
<workItem from="1771107787272" duration="423000" />
|
||||
<workItem from="1771108231868" duration="10705000" />
|
||||
<workItem from="1771178686137" duration="6030000" />
|
||||
<workItem from="1771184740961" duration="118000" />
|
||||
<workItem from="1771184893794" duration="11065000" />
|
||||
<workItem from="1771210274167" duration="133000" />
|
||||
<workItem from="1771263045596" duration="650000" />
|
||||
<workItem from="1771265712703" duration="2201000" />
|
||||
<workItem from="1771268603392" duration="4948000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="Pre initialize removal">
|
||||
<option name="closed" value="true" />
|
||||
<created>1769822570538</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1769822570538</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="Removed Initialize()">
|
||||
<option name="closed" value="true" />
|
||||
<created>1769823457825</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1769823457825</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00003" summary="Changed terminate into unload">
|
||||
<option name="closed" value="true" />
|
||||
<created>1769823754859</created>
|
||||
<option name="number" value="00003" />
|
||||
<option name="presentableId" value="LOCAL-00003" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1769823754859</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00004" summary="Going to bed but i wanna show off my cool debugging system">
|
||||
<option name="closed" value="true" />
|
||||
<created>1770004973461</created>
|
||||
<option name="number" value="00004" />
|
||||
<option name="presentableId" value="LOCAL-00004" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1770004973461</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00005" summary="Near V1.0">
|
||||
<option name="closed" value="true" />
|
||||
<created>1770573442920</created>
|
||||
<option name="number" value="00005" />
|
||||
<option name="presentableId" value="LOCAL-00005" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1770573442920</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00006" summary="Merging Components And Behaviors">
|
||||
<option name="closed" value="true" />
|
||||
<created>1770584193348</created>
|
||||
<option name="number" value="00006" />
|
||||
<option name="presentableId" value="LOCAL-00006" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1770584193348</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00007" summary="Testing gittea">
|
||||
<option name="closed" value="true" />
|
||||
<created>1770585216828</created>
|
||||
<option name="number" value="00007" />
|
||||
<option name="presentableId" value="LOCAL-00007" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1770585216828</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00008" summary="Messing with stuff idk if i like">
|
||||
<option name="closed" value="true" />
|
||||
<created>1770593582353</created>
|
||||
<option name="number" value="00008" />
|
||||
<option name="presentableId" value="LOCAL-00008" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1770593582354</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00009" summary="Messing with stuff idk if i like">
|
||||
<option name="closed" value="true" />
|
||||
<created>1770593737356</created>
|
||||
<option name="number" value="00009" />
|
||||
<option name="presentableId" value="LOCAL-00009" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1770593737356</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00010" summary="Big work">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771167742821</created>
|
||||
<option name="number" value="00010" />
|
||||
<option name="presentableId" value="LOCAL-00010" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771167742821</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00011" summary="COOKING">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771181234503</created>
|
||||
<option name="number" value="00011" />
|
||||
<option name="presentableId" value="LOCAL-00011" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771181234503</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00012" summary="Finished component docker mostly!">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771184252214</created>
|
||||
<option name="number" value="00012" />
|
||||
<option name="presentableId" value="LOCAL-00012" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771184252214</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00013" summary="Closing in on beta">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771188148264</created>
|
||||
<option name="number" value="00013" />
|
||||
<option name="presentableId" value="LOCAL-00013" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771188148264</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00014" summary="Awperative Beta 1.0 Complete!">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771189947056</created>
|
||||
<option name="number" value="00014" />
|
||||
<option name="presentableId" value="LOCAL-00014" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771189947056</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00015" summary="Awperative Beta!">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771205670552</created>
|
||||
<option name="number" value="00015" />
|
||||
<option name="presentableId" value="LOCAL-00015" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771205670552</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00016" summary="Awperative Beta Complete! V1.0">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771205931449</created>
|
||||
<option name="number" value="00016" />
|
||||
<option name="presentableId" value="LOCAL-00016" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771205931449</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00017" summary="Renamed To Kernel">
|
||||
<option name="closed" value="true" />
|
||||
<created>1771282809574</created>
|
||||
<option name="number" value="00017" />
|
||||
<option name="presentableId" value="LOCAL-00017" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1771282809574</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="18" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="UnityCheckinConfiguration" checkUnsavedScenes="true" />
|
||||
<component name="UnityProjectConfiguration" hasMinimizedUI="false" />
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
|
||||
<MESSAGE value="Pre initialize removal" />
|
||||
<MESSAGE value="Removed Initialize()" />
|
||||
<MESSAGE value="Changed terminate into unload" />
|
||||
<MESSAGE value="Going to bed but i wanna show off my cool debugging system" />
|
||||
<MESSAGE value="Near V1.0" />
|
||||
<MESSAGE value="Merging Components And Behaviors" />
|
||||
<MESSAGE value="Testing gittea" />
|
||||
<MESSAGE value="Not happy with changes" />
|
||||
<MESSAGE value="Messing with stuff idk if i like" />
|
||||
<MESSAGE value="Big work" />
|
||||
<MESSAGE value="COOKING" />
|
||||
<MESSAGE value="Finished component docker mostly!" />
|
||||
<MESSAGE value="Closing in on beta" />
|
||||
<MESSAGE value="Awperative Beta 1.0 Complete!" />
|
||||
<MESSAGE value="Awperative Beta!" />
|
||||
<MESSAGE value="Awperative Beta Complete! V1.0" />
|
||||
<MESSAGE value="Renamed To Kernel" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Renamed To Kernel" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<breakpoint enabled="true" type="DotNet_Exception_Breakpoints">
|
||||
<properties exception="System.OperationCanceledException" breakIfHandledByOtherCode="false" displayValue="System.OperationCanceledException" />
|
||||
<option name="timeStamp" value="1" />
|
||||
</breakpoint>
|
||||
<breakpoint enabled="true" type="DotNet_Exception_Breakpoints">
|
||||
<properties exception="System.Threading.Tasks.TaskCanceledException" breakIfHandledByOtherCode="false" displayValue="System.Threading.Tasks.TaskCanceledException" />
|
||||
<option name="timeStamp" value="2" />
|
||||
</breakpoint>
|
||||
<breakpoint enabled="true" type="DotNet_Exception_Breakpoints">
|
||||
<properties exception="System.Threading.ThreadAbortException" breakIfHandledByOtherCode="false" displayValue="System.Threading.ThreadAbortException" />
|
||||
<option name="timeStamp" value="3" />
|
||||
</breakpoint>
|
||||
</breakpoints>
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
</project>
|
||||
1
.idea/.idea.AwperativeKernel/.idea/.name
generated
Normal file
1
.idea/.idea.AwperativeKernel/.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
||||
AwperativeKernel
|
||||
@@ -2,6 +2,8 @@
|
||||
<dictionary name="project">
|
||||
<words>
|
||||
<w>awlf</w>
|
||||
<w>awperative</w>
|
||||
<w>awperative's</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</component>
|
||||
14
.idea/.idea.AwperativeKernel/.idea/discord.xml
generated
Normal file
14
.idea/.idea.AwperativeKernel/.idea/discord.xml
generated
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="PROJECT" />
|
||||
<option name="description" value="" />
|
||||
<option name="applicationTheme" value="default" />
|
||||
<option name="iconsTheme" value="default" />
|
||||
<option name="button1Title" value="" />
|
||||
<option name="button1Url" value="" />
|
||||
<option name="button2Title" value="" />
|
||||
<option name="button2Url" value="" />
|
||||
<option name="customApplicationId" value="" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,10 +0,0 @@
|
||||
namespace Awperative.Kernel.Communication.Config;
|
||||
|
||||
|
||||
|
||||
//TEMPORARY LIST OF VARIABLES, CONFIG DOESNT EXIST YET SO IM MAKING A VARIABLE LIST TO SEE WHAT I NEED TO REPLACE
|
||||
public static class Config
|
||||
{
|
||||
|
||||
public static string logFileName = "log";
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
todo: make a yaml file for the kernel config and this can find it outside of the kernel
|
||||
@@ -1,37 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Awperative.Kernel.Communication.Config;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
public static partial class Debug
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// True path of the log file Awperative dumps to.
|
||||
/// </summary>
|
||||
public static string LogFilePath { get; private set; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Sets up the Awperative debugger and finds the log file.
|
||||
/// </summary>
|
||||
internal static void Initiate() {
|
||||
string directoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
if(directoryPath == null) throw new Exception("Failed to get directory path!");
|
||||
|
||||
if(!Directory.GetFiles(directoryPath).Contains(Config.logFileName + ".awlf")) throw new Exception("Failed to find log file!");
|
||||
LogFilePath = Path.Join(directoryPath, Config.logFileName + ".awlf");
|
||||
}
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
public sealed partial class Body : DockerEntity
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Current scene the body exists in
|
||||
/// </summary>
|
||||
public Scene Scene { get; internal set; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// All components attached to the body
|
||||
/// </summary>
|
||||
public List<Component> Components => _components.ToList();
|
||||
internal HashSet<Component> _components { get; private set; } = [];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// All tags attached to the body
|
||||
/// </summary>
|
||||
public List<string> Tags => _tags.ToList();
|
||||
internal HashSet<string> _tags { get; private set; }= [];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Position of the body
|
||||
/// </summary>
|
||||
public Transform transform { get; internal set; } = new();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//Prevents outside construction
|
||||
internal Body() {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a body in the given scene
|
||||
/// </summary>
|
||||
/// <param name="__scene"></param>
|
||||
internal Body(Scene __scene) {
|
||||
Scene = __scene;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a body with a scene and transform
|
||||
/// </summary>
|
||||
/// <param name="__scene"></param>
|
||||
/// <param name="__transform"></param>
|
||||
internal Body(Scene __scene, Transform __transform) {
|
||||
Scene = __scene;
|
||||
transform = __transform;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
internal void Unload() { foreach (Component component in _components) component.Unload(); }
|
||||
internal void Load() { foreach (Component component in _components) { component.Load(); } }
|
||||
|
||||
|
||||
|
||||
internal void Update(GameTime __gameTime) { foreach (Component component in _components) { component.Update(__gameTime); } }
|
||||
internal void Draw(GameTime __gameTime) { foreach (Component component in _components) { component.Draw(__gameTime); } }
|
||||
|
||||
|
||||
|
||||
internal void Destroy() { foreach(Component component in _components) component.Destroy(); }
|
||||
internal void Create() { foreach (Component component in _components) component.Create(); }
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
public abstract partial class DockerEntity
|
||||
{
|
||||
|
||||
public Component AddComponent<Generic>() where Generic : Component => AddComponent<Generic>([]);
|
||||
public Component AddComponent<Generic>(object[] __args) where Generic : Component {
|
||||
if(typeof(Generic).GetConstructor((Type[]) __args) == null) { Debug.LogError("Component does not contain a valid constructor"); return null; };
|
||||
|
||||
try {
|
||||
Component component = (Generic)Activator.CreateInstance(typeof(Generic), __args);
|
||||
|
||||
if(component == null) { Debug.LogError("Failed to create component"); return null; }
|
||||
|
||||
_components.Add(component);
|
||||
component.Initiate(this);
|
||||
return component;
|
||||
|
||||
}catch { Debug.LogError("Failed to create component"); return null; }
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Base class for all Awperative entities, manages components as a requirement because that is the job of all entities.
|
||||
/// </summary>
|
||||
public abstract partial class DockerEntity
|
||||
{
|
||||
public Scene Scene;
|
||||
|
||||
internal HashSet<Component> _components;
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
public abstract partial class DockerEntity
|
||||
{
|
||||
public Component GetComponent<Generic>() where Generic : Component => GetComponents<Generic>()[0];
|
||||
public Component[] GetComponents<Generic>() where Generic : Component {
|
||||
|
||||
List<Component> returnValue = [];
|
||||
foreach (Component component in _components)
|
||||
if (component is Generic) returnValue.Add(component);
|
||||
|
||||
if(returnValue.Count == 0) { Debug.LogWarning("Scene has no components of this type"); return null; }
|
||||
|
||||
return returnValue.ToArray();
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
public abstract partial class DockerEntity
|
||||
{
|
||||
public void RemoveComponent(Component __component) {
|
||||
|
||||
if(!_components.Contains(__component)) { Debug.LogError("Body does not have a component of this type"); return; }
|
||||
|
||||
__component.End();
|
||||
_components.Remove(__component);
|
||||
}
|
||||
|
||||
public void RemoveComponent<Generic>() where Generic : Component {
|
||||
try
|
||||
{
|
||||
Component foundComponent = GetComponent<Generic>();
|
||||
|
||||
foundComponent.End();
|
||||
_components.Remove(foundComponent);
|
||||
}catch { Debug.LogError("Removal failed"); }
|
||||
}
|
||||
|
||||
public void RemoveComponents<Generic>() where Generic : Component {
|
||||
try {
|
||||
foreach (Component component in GetComponents<Generic>()) {
|
||||
component.End();
|
||||
_components.Remove(component);
|
||||
}
|
||||
}catch { Debug.LogError("Removal failed"); }
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
public sealed partial class Scene : DockerEntity
|
||||
{
|
||||
public Body AddBody(Transform __transform) {
|
||||
Body body = new Body(this, __transform);
|
||||
bodies.Add(body);
|
||||
body.Create();
|
||||
|
||||
BodyCreatedEvent?.Invoke(this, new BodyCreateEvent(body, this));
|
||||
|
||||
return body;
|
||||
}
|
||||
|
||||
public Body AddBody() {
|
||||
Body body = new Body(this, new Transform());
|
||||
bodies.Add(body);
|
||||
body.Create();
|
||||
|
||||
BodyCreatedEvent?.Invoke(this, new BodyCreateEvent(body, this));
|
||||
|
||||
return body;
|
||||
}
|
||||
|
||||
public Body[] GetBodies(string tag) {
|
||||
List<Body> _bodies = new List<Body>();
|
||||
|
||||
foreach (Body body in bodies)
|
||||
if (body._tags.Contains(tag))
|
||||
_bodies.Add(body);
|
||||
|
||||
|
||||
if(_bodies.Count == 0)
|
||||
throw new Exception("No Bodies found with the tag " + tag);
|
||||
|
||||
return _bodies.ToArray();
|
||||
}
|
||||
|
||||
public Body GetBody(string tag) {
|
||||
foreach (Body body in bodies)
|
||||
if (body._tags.Contains(tag))
|
||||
return body;
|
||||
|
||||
throw new Exception("No Body found with the tag " + tag);
|
||||
}
|
||||
|
||||
public void DestroyBody(Body __body) {
|
||||
__body.Destroy();
|
||||
BodyDestroyedEvent?.Invoke(this, new BodyDestroyEvent(__body, this));
|
||||
if (!bodies.Remove(__body))
|
||||
throw new Exception("Removal Failed! Does the Body Exist?");
|
||||
}
|
||||
|
||||
//todo: add destroying and creating bodies with tags
|
||||
|
||||
|
||||
//TAG SYSTEM IN V4
|
||||
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
public sealed partial class Scene : DockerEntity
|
||||
{
|
||||
|
||||
public List<Body> bodies { get; private set; } = [];
|
||||
|
||||
public void Unload() {
|
||||
foreach (Component component in _components) component.Unload();
|
||||
foreach (Body body in bodies.ToList()) body.Unload();
|
||||
}
|
||||
|
||||
public void Load() {
|
||||
foreach (Component component in _components) component.Load();
|
||||
foreach (Body body in bodies.ToList()) { body.Load(); }
|
||||
}
|
||||
|
||||
public void Update(GameTime __gameTime) {
|
||||
foreach (Component component in _components) component.Update(__gameTime);
|
||||
foreach (Body body in bodies.ToList()) { body.Update(__gameTime); }
|
||||
}
|
||||
|
||||
public void Draw(GameTime __gameTime) {
|
||||
foreach (Component component in _components) component.Draw(__gameTime);
|
||||
foreach (Body body in bodies.ToList()) { body.Draw(__gameTime); }
|
||||
}
|
||||
|
||||
//todo: add scene.destroy in v5
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
public sealed partial class Scene : DockerEntity
|
||||
{
|
||||
|
||||
public event EventHandler<BodyCreateEvent> BodyCreatedEvent;
|
||||
public event EventHandler<BodyDestroyEvent> BodyDestroyedEvent;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
public sealed record BodyCreateEvent
|
||||
{
|
||||
public readonly Body body;
|
||||
public readonly Scene scene;
|
||||
|
||||
internal BodyCreateEvent() {}
|
||||
|
||||
internal BodyCreateEvent(Body __body, Scene __scene)
|
||||
{
|
||||
body = __body;
|
||||
scene = __scene;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
public sealed record BodyDestroyEvent
|
||||
{
|
||||
public readonly Body body;
|
||||
public readonly Scene scene;
|
||||
|
||||
internal BodyDestroyEvent() {}
|
||||
|
||||
internal BodyDestroyEvent(Body __body, Scene __scene)
|
||||
{
|
||||
body = __body;
|
||||
scene = __scene;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
public sealed record ComponentCreateEvent
|
||||
{
|
||||
public readonly Component component;
|
||||
public readonly Body body;
|
||||
public readonly Scene scene;
|
||||
|
||||
internal ComponentCreateEvent() {}
|
||||
|
||||
internal ComponentCreateEvent(Component __component, Body __body, Scene __scene)
|
||||
{
|
||||
component = __component;
|
||||
body = __body;
|
||||
scene = __scene;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
public sealed record ComponentDestroyEvent
|
||||
{
|
||||
public readonly Component component;
|
||||
public readonly Body body;
|
||||
public readonly Scene scene;
|
||||
|
||||
internal ComponentDestroyEvent() {}
|
||||
|
||||
internal ComponentDestroyEvent(Component __component, Body __body, Scene __scene)
|
||||
{
|
||||
component = __component;
|
||||
body = __body;
|
||||
scene = __scene;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
public sealed record SceneCreateEvent
|
||||
{
|
||||
public Scene scene;
|
||||
|
||||
internal SceneCreateEvent() {}
|
||||
|
||||
internal SceneCreateEvent(Scene __scene)
|
||||
{
|
||||
scene = __scene;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
public sealed record SceneDestroyEvent
|
||||
{
|
||||
public Scene scene;
|
||||
|
||||
internal SceneDestroyEvent() {}
|
||||
|
||||
internal SceneDestroyEvent(Scene __scene)
|
||||
{
|
||||
scene = __scene;
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
public sealed record TransformModifyEvent
|
||||
{
|
||||
public readonly Transform before;
|
||||
public readonly Transform after;
|
||||
|
||||
internal TransformModifyEvent() {}
|
||||
|
||||
internal TransformModifyEvent(Transform __before, Transform __after)
|
||||
{
|
||||
before = __before;
|
||||
after = __after;
|
||||
}
|
||||
|
||||
internal static TransformModifyEvent FromTransforms(Transform __previous, Transform __after)
|
||||
{
|
||||
Transform before = __previous;
|
||||
Transform after = new Transform(__after.Origin, __after.Position, __after.Depth, __after.Rotation, __after.Scale);
|
||||
return new TransformModifyEvent(before, after);
|
||||
}
|
||||
|
||||
internal static TransformModifyEvent FromOrigin(Transform __previous, Vector2 __origin)
|
||||
{
|
||||
Transform before = __previous;
|
||||
Transform after = new Transform(__origin, __previous.Position, __previous.Depth, __previous.Rotation, __previous.Scale);
|
||||
return new TransformModifyEvent(before, after);
|
||||
}
|
||||
|
||||
internal static TransformModifyEvent FromPosition(Transform __previous, Vector2 __position)
|
||||
{
|
||||
Transform before = __previous;
|
||||
Transform after = new Transform(__previous.Origin, __position, __previous.Depth, __previous.Rotation, __previous.Scale);
|
||||
return new TransformModifyEvent(before, after);
|
||||
}
|
||||
|
||||
internal static TransformModifyEvent FromDepth(Transform __previous, float __depth)
|
||||
{
|
||||
Transform before = __previous;
|
||||
Transform after = new Transform(__previous.Origin, __previous.Position, __depth, __previous.Rotation, __previous.Scale);
|
||||
return new TransformModifyEvent(before, after);
|
||||
}
|
||||
|
||||
internal static TransformModifyEvent FromRotation(Transform __previous, float __rotation)
|
||||
{
|
||||
Transform before = __previous;
|
||||
Transform after = new Transform(__previous.Origin, __previous.Position, __previous.Depth, __rotation, __previous.Scale);
|
||||
return new TransformModifyEvent(before, after);
|
||||
}
|
||||
|
||||
internal static TransformModifyEvent FromScale(Transform __previous, Vector2 __scale)
|
||||
{
|
||||
Transform before = __previous;
|
||||
Transform after = new Transform(__previous.Origin, __previous.Position, __previous.Depth, __previous.Rotation, __scale);
|
||||
return new TransformModifyEvent(before, after);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
ESSENTIAL TO THE FUNCTION OF THE GAME,
|
||||
|
||||
Component entity system!
|
||||
@@ -1,25 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
/// <summary>
|
||||
/// Awperative hooks are the source of entry for scripts using Awperative. Create a hook and send into Start() to be recognized by the engine.
|
||||
/// </summary>
|
||||
/// <author> Avery Norris </author>
|
||||
public interface AwperativeHook
|
||||
{
|
||||
/// <summary>
|
||||
/// Called when the program starts; It is not recommended you load assets here.
|
||||
/// </summary>
|
||||
public void Load() {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called when the program closes.
|
||||
/// </summary>
|
||||
public void Unload() {}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
using System.Linq;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Base class of Awperative. Carries events from MonoGame into scenes and hooks.
|
||||
/// </summary>
|
||||
/// <author> Avery Norris </author>
|
||||
public sealed class Base : Game
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Start of Awperative. Please do not try to call this.
|
||||
/// </summary>
|
||||
internal Base() {
|
||||
Awperative.GraphicsDeviceManager = new GraphicsDeviceManager(this);
|
||||
Content.RootDirectory = "Content";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Initialize() is called when the program starts. Goes before LoadContent(). And prepares the kernel for use.
|
||||
/// </summary>
|
||||
/// <remarks> It is recommended not to load content in Initialize()</remarks>
|
||||
protected override void Initialize() {
|
||||
Awperative.ContentManager = Content;
|
||||
Awperative.SpriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LoadContent() is called when the program starts; right after Initialize(). Override Load() in scripting tools or use hooks to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> It is recommended to load content during LoadContent()</remarks>
|
||||
protected override void LoadContent() {
|
||||
foreach (AwperativeHook hook in Awperative.EventHooks.ToList()) hook.Load();
|
||||
foreach(Scene scene in Awperative.LoadedScenes.ToList()) scene.Load();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Update() is called every frame; before Draw(). Override Update() in scripting tools to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> Hooks are unable to receive both Update() and Draw()</remarks>
|
||||
protected override void Update(GameTime __gameTime) {
|
||||
foreach(Scene scene in Awperative.LoadedScenes.ToList()) scene.Update(__gameTime);
|
||||
base.Update(__gameTime);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Draw() is called every frame; after Update(). Override Draw() in scripting tools to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> Hooks are unable to receive both Update() and Draw()</remarks>
|
||||
protected override void Draw(GameTime __gameTime) {
|
||||
foreach(Scene scene in Awperative.LoadedScenes.ToList()) scene.Draw(__gameTime);
|
||||
base.Draw(__gameTime);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// EndRun() is called if the program closes. Override Terminate() in scripting tools or use hooks to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> This event may not trigger if the program is force closed.</remarks>
|
||||
protected override void EndRun() {
|
||||
foreach (AwperativeHook hook in Awperative.EventHooks.ToList()) hook.Unload();
|
||||
foreach (Scene scene in Awperative.LoadedScenes.ToList()) scene.Unload();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Content;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
/// <summary>
|
||||
/// Initiating class of Awperative. Call Start() to start the kernel.
|
||||
/// </summary>
|
||||
/// <author> Avery Norris </author>
|
||||
public static class Awperative
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Bottom class of Awperative. Contains the MonoGame instance.
|
||||
/// </summary>
|
||||
public static Base Base { get; internal set; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Handles graphics settings through MonoGame.
|
||||
/// </summary>
|
||||
public static GraphicsDeviceManager GraphicsDeviceManager { get; internal set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Handles drawing sprites to the screen through MonoGame.
|
||||
/// </summary>
|
||||
public static SpriteBatch SpriteBatch { get; internal set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Handles loading content through MonoGame.
|
||||
/// </summary>
|
||||
public static ContentManager ContentManager { get; internal set; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// List of all scenes currently loaded in the kernel.
|
||||
/// </summary>
|
||||
public static List<Scene> LoadedScenes => _loadedScenes.ToList();
|
||||
internal static HashSet<Scene> _loadedScenes { get; private set; }= [];
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// List of all event hooks currently loaded in the kernel.
|
||||
/// </summary>
|
||||
public static List<AwperativeHook> EventHooks => _eventHooks.ToList();
|
||||
internal static HashSet<AwperativeHook> _eventHooks { get; private set; } = [];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Start() begins the game; and begins communication with all event hooks.
|
||||
/// </summary>
|
||||
/// <param name="__hooks"> List of all event hooks you wish to use. </param>
|
||||
/// <remarks> You cannot add new hooks later; so make sure to register all of them in the Start() method.</remarks>
|
||||
public static void Start(List<AwperativeHook> __hooks) {
|
||||
|
||||
_eventHooks = new HashSet<AwperativeHook>(__hooks);
|
||||
|
||||
Base = new Base();
|
||||
Base.Run();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
public class BodyComponent : Component
|
||||
{
|
||||
|
||||
|
||||
public Body Body;
|
||||
|
||||
internal override void Initiate(DockerEntity __docker) {
|
||||
Docker = __docker;
|
||||
|
||||
Body = (Body)__docker;
|
||||
Create();
|
||||
}
|
||||
|
||||
public Transform Transform => Body.transform;
|
||||
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The lowest level scripting class in Awperative. Components are scene level and provide access to all scene level methods, can be applied to any docker and inherited
|
||||
/// Sadly component does not have excessive access to specific types.
|
||||
/// Anything that inherits Component is built to work in any DockerEntity, which leads to generic
|
||||
/// Assumptions. If you want to make a body specific or scene specific component both classes are available.
|
||||
/// </summary>
|
||||
public abstract partial class Component
|
||||
{
|
||||
public Scene Scene { get; set; }
|
||||
internal DockerEntity Docker;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
internal virtual void Initiate(DockerEntity __docker) {
|
||||
Docker = __docker;
|
||||
Create();
|
||||
}
|
||||
|
||||
|
||||
|
||||
internal virtual void End() {
|
||||
Destroy();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//GAME HAS JUST BEGUN/ended
|
||||
public virtual void Unload() {}
|
||||
|
||||
//WE ARE LOADING STUFF
|
||||
public virtual void Load() {}
|
||||
|
||||
//You know what these do
|
||||
public virtual void Update(GameTime __gameTime) {}
|
||||
public virtual void Draw(GameTime __gameTime) {}
|
||||
|
||||
//component/body/scene is being created or destroyed
|
||||
public virtual void Create() {}
|
||||
public virtual void Destroy() {}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
public abstract partial class Component
|
||||
{
|
||||
|
||||
protected Body AddBody() => Scene.AddBody();
|
||||
protected Body AddBody(Transform __transform) => Scene.AddBody(__transform);
|
||||
|
||||
protected Body GetBody(string __tag) => Scene.GetBody(__tag);
|
||||
protected Body[] GetBodies(string __tag) => Scene.GetBodies(__tag);
|
||||
|
||||
protected void DestroyBody(Body __body) => Scene.DestroyBody(__body);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public Component AddComponent<Generic>() where Generic : Component => Docker.AddComponent<Generic>();
|
||||
public Component AddComponent<Generic>(object[] __args) where Generic : Component => Docker.AddComponent<Generic>(__args);
|
||||
|
||||
public Component GetComponent<Generic>() where Generic : Component => Docker.GetComponent<Generic>();
|
||||
public Component[] GetComponents<Generic>() where Generic : Component => Docker.GetComponents<Generic>();
|
||||
|
||||
public void RemoveComponent<Generic>() where Generic : Component => Docker.RemoveComponent<Generic>();
|
||||
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace Awperative;
|
||||
|
||||
|
||||
public class SceneComponent : Component
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
using System;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
public sealed class Transform
|
||||
{
|
||||
|
||||
public event EventHandler<TransformModifyEvent> OnTransformChangedEvent;
|
||||
|
||||
|
||||
public Vector2 Origin {
|
||||
get => _origin; set {
|
||||
if(!value.Equals(_origin))
|
||||
OnTransformChangedEvent?.Invoke(this, TransformModifyEvent.FromPosition(this, value)); _origin = value;
|
||||
}
|
||||
}
|
||||
private Vector2 _origin = Vector2.Zero;
|
||||
|
||||
public Vector2 Position {
|
||||
get => _position; set {
|
||||
if(!value.Equals(_position))
|
||||
OnTransformChangedEvent?.Invoke(this, TransformModifyEvent.FromPosition(this, value)); _position = value;
|
||||
}
|
||||
}
|
||||
private Vector2 _position = Vector2.Zero;
|
||||
|
||||
public float Depth {
|
||||
get => _depth; set {
|
||||
if(!value.Equals(_depth))
|
||||
OnTransformChangedEvent?.Invoke(this, TransformModifyEvent.FromDepth(this, value)); _depth = value;
|
||||
}
|
||||
}
|
||||
private float _depth = 0f;
|
||||
|
||||
public float Rotation {
|
||||
get => _rotation; set {
|
||||
if(!value.Equals(_rotation))
|
||||
OnTransformChangedEvent?.Invoke(this, TransformModifyEvent.FromRotation(this, value)); _rotation = value;
|
||||
}
|
||||
}
|
||||
private float _rotation = 0f;
|
||||
|
||||
public Vector2 Scale {
|
||||
get => _scale; set {
|
||||
if(!value.Equals(_scale))
|
||||
OnTransformChangedEvent?.Invoke(this, TransformModifyEvent.FromScale(this, value)); _scale = value;
|
||||
}
|
||||
}
|
||||
private Vector2 _scale = Vector2.One;
|
||||
|
||||
public void Set(Vector2 __origin, Vector2 __position, float __depth, float __rotation, Vector2 __scale)
|
||||
{
|
||||
//todo: rename to previous and check names`
|
||||
var previous = Clone();
|
||||
bool changed = false;
|
||||
|
||||
if (!_origin.Equals(_origin)) { _origin = __origin; changed = true; }
|
||||
if (!_position.Equals(_position)) { _position = __position; changed = true; }
|
||||
if (!_depth.Equals(_depth)) { _depth = __depth; changed = true; }
|
||||
if (!_rotation.Equals(_rotation)) { _rotation = __rotation; changed = true; }
|
||||
if (!_scale.Equals(_scale)) { _scale = __scale; changed = true; }
|
||||
|
||||
if (changed)
|
||||
OnTransformChangedEvent?.Invoke(this, TransformModifyEvent.FromTransforms(this, previous));
|
||||
}
|
||||
|
||||
public Transform() {}
|
||||
|
||||
public Transform(Vector2 __origin, Vector2 __position, float __depth, float __rotation, Vector2 __scale) {
|
||||
Origin = __origin; Position = __position; Depth = __depth; Rotation = __rotation; Scale = __scale;
|
||||
}
|
||||
|
||||
|
||||
//todo: operators?
|
||||
|
||||
public Transform Clone()
|
||||
{
|
||||
return new Transform(Origin, Position, Depth, Rotation, Scale);
|
||||
}
|
||||
|
||||
public Matrix ToMatrix()
|
||||
{
|
||||
return
|
||||
Matrix.CreateTranslation(new Vector3(-Position, 0f)) *
|
||||
Matrix.CreateTranslation(new Vector3(-Origin, 0f)) *
|
||||
Matrix.CreateRotationZ(Rotation) *
|
||||
Matrix.CreateScale(new Vector3(Scale, 1f)) *
|
||||
Matrix.CreateTranslation(new Vector3(Origin, 0f));
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
events system
|
||||
|
||||
json parser
|
||||
|
||||
cool lossless compressor to make my files look more complex
|
||||
|
||||
name save files something like ansf
|
||||
|
||||
//todo: spinny loady wheel, error graphic and make it so multiple scenes can be loaded and modularized, make it so behaviors can be enabled and disabled and merging scenes loading
|
||||
|
||||
body tags, behavior and component tags search methods add a way to enforce one component between all scenes, behaviors and components upgrade base script
|
||||
|
||||
show colliders option
|
||||
|
||||
streamline asset registries
|
||||
|
||||
make the grass go in blocks kinda
|
||||
and add a fading border to the edge of grass
|
||||
|
||||
add multiple languages
|
||||
|
||||
add collision layers and triggers
|
||||
|
||||
add aabb change events
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
||||
fa2b4821447810806d3afc7ff154ca6553ecde4f605fa901efe2c43ad8759842
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
95848c046b9b32c14cf563754dd778d9bd1782510c1ef05d43cd25a8dc421370
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"documents":{"/Users/averynorris/RiderProjects/Awperative/*":"https://raw.githubusercontent.com/BlazeyDotOrg/Awperative/67fca0c271ce945c612999f54223bca0718349dc/*"}}
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
||||
d05380611b45c280c2c51346ebb3590dc0f2639035a478a07d822a068d5cc4af
|
||||
Binary file not shown.
@@ -1,354 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net8.0": {
|
||||
"MonoGame.Framework.DesktopGL/3.8.4.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"MonoGame.Library.OpenAL": "1.24.3.2",
|
||||
"MonoGame.Library.SDL": "2.32.2.1",
|
||||
"NVorbis": "0.10.4"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net8.0/MonoGame.Framework.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/MonoGame.Framework.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"build/MonoGame.Framework.DesktopGL.targets": {}
|
||||
}
|
||||
},
|
||||
"MonoGame.Library.OpenAL/1.24.3.2": {
|
||||
"type": "package",
|
||||
"runtimeTargets": {
|
||||
"runtimes/android-arm/native/libopenal.so": {
|
||||
"assetType": "native",
|
||||
"rid": "android-arm"
|
||||
},
|
||||
"runtimes/android-arm64/native/libopenal.so": {
|
||||
"assetType": "native",
|
||||
"rid": "android-arm64"
|
||||
},
|
||||
"runtimes/android-x64/native/libopenal.so": {
|
||||
"assetType": "native",
|
||||
"rid": "android-x64"
|
||||
},
|
||||
"runtimes/android-x86/native/libopenal.so": {
|
||||
"assetType": "native",
|
||||
"rid": "android-x86"
|
||||
},
|
||||
"runtimes/ios-arm64/native/libopenal.a": {
|
||||
"assetType": "native",
|
||||
"rid": "ios-arm64"
|
||||
},
|
||||
"runtimes/iossimulator-arm64/native/libopenal.a": {
|
||||
"assetType": "native",
|
||||
"rid": "iossimulator-arm64"
|
||||
},
|
||||
"runtimes/iossimulator-x64/native/libopenal.a": {
|
||||
"assetType": "native",
|
||||
"rid": "iossimulator-x64"
|
||||
},
|
||||
"runtimes/linux-arm64/native/libopenal.so": {
|
||||
"assetType": "native",
|
||||
"rid": "linux-arm64"
|
||||
},
|
||||
"runtimes/linux-x64/native/libopenal.so": {
|
||||
"assetType": "native",
|
||||
"rid": "linux-x64"
|
||||
},
|
||||
"runtimes/osx/native/libopenal.dylib": {
|
||||
"assetType": "native",
|
||||
"rid": "osx"
|
||||
},
|
||||
"runtimes/win-x64/native/openal.dll": {
|
||||
"assetType": "native",
|
||||
"rid": "win-x64"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MonoGame.Library.SDL/2.32.2.1": {
|
||||
"type": "package",
|
||||
"runtimeTargets": {
|
||||
"runtimes/linux-x64/native/libSDL2-2.0.so.0": {
|
||||
"assetType": "native",
|
||||
"rid": "linux-x64"
|
||||
},
|
||||
"runtimes/osx/native/libSDL2-2.0.0.dylib": {
|
||||
"assetType": "native",
|
||||
"rid": "osx"
|
||||
},
|
||||
"runtimes/win-x64/native/SDL2.dll": {
|
||||
"assetType": "native",
|
||||
"rid": "win-x64"
|
||||
}
|
||||
}
|
||||
},
|
||||
"NVorbis/0.10.4": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.3",
|
||||
"System.ValueTuple": "4.5.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/NVorbis.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/NVorbis.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.1/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.1/_._": {}
|
||||
}
|
||||
},
|
||||
"System.ValueTuple/4.5.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"MonoGame.Framework.DesktopGL/3.8.4.1": {
|
||||
"sha512": "YybxIIT5+Ky78E/XdkS0glyluMr2EeDZwx2LqXULAOCqiKt1+aDrjPZaqLL5qpNgBcMEHUeZJ4YjWe4TAZlWLw==",
|
||||
"type": "package",
|
||||
"path": "monogame.framework.desktopgl/3.8.4.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"README-packages.md",
|
||||
"build/MonoGame.Framework.DesktopGL.targets",
|
||||
"lib/net8.0/MonoGame.Framework.dll",
|
||||
"lib/net8.0/MonoGame.Framework.xml",
|
||||
"monogame.framework.desktopgl.3.8.4.1.nupkg.sha512",
|
||||
"monogame.framework.desktopgl.nuspec"
|
||||
]
|
||||
},
|
||||
"MonoGame.Library.OpenAL/1.24.3.2": {
|
||||
"sha512": "nGRsXQXs+NSUC3C5w90hFQfyKdZPpBnHnyg2w+Dw/2pUH7s+CoRWTJNYbzzdJf3+aeUvfvG4rTbFvMKDDj5olA==",
|
||||
"type": "package",
|
||||
"path": "monogame.library.openal/1.24.3.2",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
"monogame.library.openal.1.24.3.2.nupkg.sha512",
|
||||
"monogame.library.openal.nuspec",
|
||||
"runtimes/android-arm/native/libopenal.so",
|
||||
"runtimes/android-arm64/native/libopenal.so",
|
||||
"runtimes/android-x64/native/libopenal.so",
|
||||
"runtimes/android-x86/native/libopenal.so",
|
||||
"runtimes/ios-arm64/native/libopenal.a",
|
||||
"runtimes/iossimulator-arm64/native/libopenal.a",
|
||||
"runtimes/iossimulator-x64/native/libopenal.a",
|
||||
"runtimes/linux-arm64/native/libopenal.so",
|
||||
"runtimes/linux-x64/native/libopenal.so",
|
||||
"runtimes/osx/native/libopenal.dylib",
|
||||
"runtimes/win-x64/native/openal.dll"
|
||||
]
|
||||
},
|
||||
"MonoGame.Library.SDL/2.32.2.1": {
|
||||
"sha512": "T4E2ppGlSTC2L9US1rxtdg3qTbarRzNId31xZoumUW9cf9Nq8nRQPMu9GzvZGrhfSySf0+UWPEj1rlicps+P/w==",
|
||||
"type": "package",
|
||||
"path": "monogame.library.sdl/2.32.2.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.txt",
|
||||
"README.md",
|
||||
"monogame.library.sdl.2.32.2.1.nupkg.sha512",
|
||||
"monogame.library.sdl.nuspec",
|
||||
"runtimes/linux-x64/native/libSDL2-2.0.so.0",
|
||||
"runtimes/osx/native/libSDL2-2.0.0.dylib",
|
||||
"runtimes/win-x64/native/SDL2.dll"
|
||||
]
|
||||
},
|
||||
"NVorbis/0.10.4": {
|
||||
"sha512": "WYnil3DhQHzjCY0dM9I2B3r1vWip90AOuQd25KE4NrjPQBg0tBJFluRLm5YPnO5ZLDmwrfosY8jCQGQRmWI/Pg==",
|
||||
"type": "package",
|
||||
"path": "nvorbis/0.10.4",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE",
|
||||
"lib/net45/NVorbis.dll",
|
||||
"lib/net45/NVorbis.xml",
|
||||
"lib/netstandard2.0/NVorbis.dll",
|
||||
"lib/netstandard2.0/NVorbis.xml",
|
||||
"nvorbis.0.10.4.nupkg.sha512",
|
||||
"nvorbis.nuspec"
|
||||
]
|
||||
},
|
||||
"System.Memory/4.5.3": {
|
||||
"sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==",
|
||||
"type": "package",
|
||||
"path": "system.memory/4.5.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/netcoreapp2.1/_._",
|
||||
"lib/netstandard1.1/System.Memory.dll",
|
||||
"lib/netstandard1.1/System.Memory.xml",
|
||||
"lib/netstandard2.0/System.Memory.dll",
|
||||
"lib/netstandard2.0/System.Memory.xml",
|
||||
"ref/netcoreapp2.1/_._",
|
||||
"system.memory.4.5.3.nupkg.sha512",
|
||||
"system.memory.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.ValueTuple/4.5.0": {
|
||||
"sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
||||
"type": "package",
|
||||
"path": "system.valuetuple/4.5.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/MonoAndroid10/_._",
|
||||
"lib/MonoTouch10/_._",
|
||||
"lib/net461/System.ValueTuple.dll",
|
||||
"lib/net461/System.ValueTuple.xml",
|
||||
"lib/net47/System.ValueTuple.dll",
|
||||
"lib/net47/System.ValueTuple.xml",
|
||||
"lib/netcoreapp2.0/_._",
|
||||
"lib/netstandard1.0/System.ValueTuple.dll",
|
||||
"lib/netstandard1.0/System.ValueTuple.xml",
|
||||
"lib/netstandard2.0/_._",
|
||||
"lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll",
|
||||
"lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"lib/xamarinios10/_._",
|
||||
"lib/xamarinmac20/_._",
|
||||
"lib/xamarintvos10/_._",
|
||||
"lib/xamarinwatchos10/_._",
|
||||
"ref/MonoAndroid10/_._",
|
||||
"ref/MonoTouch10/_._",
|
||||
"ref/net461/System.ValueTuple.dll",
|
||||
"ref/net47/System.ValueTuple.dll",
|
||||
"ref/netcoreapp2.0/_._",
|
||||
"ref/netstandard2.0/_._",
|
||||
"ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"ref/xamarinios10/_._",
|
||||
"ref/xamarinmac20/_._",
|
||||
"ref/xamarintvos10/_._",
|
||||
"ref/xamarinwatchos10/_._",
|
||||
"system.valuetuple.4.5.0.nupkg.sha512",
|
||||
"system.valuetuple.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net8.0": [
|
||||
"MonoGame.Framework.DesktopGL >= 3.8.*"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"/Users/averynorris/.nuget/packages/": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj",
|
||||
"projectName": "Awperative",
|
||||
"projectPath": "/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj",
|
||||
"packagesPath": "/Users/averynorris/.nuget/packages/",
|
||||
"outputPath": "/Users/averynorris/RiderProjects/Awperative/Awperative/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/Users/averynorris/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"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": {
|
||||
"MonoGame.Framework.DesktopGL": {
|
||||
"suppressParent": "All",
|
||||
"target": "Package",
|
||||
"version": "[3.8.*, )"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "ojSTLhU2/W4=",
|
||||
"success": true,
|
||||
"projectFilePath": "/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"/Users/averynorris/.nuget/packages/monogame.framework.desktopgl/3.8.4.1/monogame.framework.desktopgl.3.8.4.1.nupkg.sha512",
|
||||
"/Users/averynorris/.nuget/packages/monogame.library.openal/1.24.3.2/monogame.library.openal.1.24.3.2.nupkg.sha512",
|
||||
"/Users/averynorris/.nuget/packages/monogame.library.sdl/2.32.2.1/monogame.library.sdl.2.32.2.1.nupkg.sha512",
|
||||
"/Users/averynorris/.nuget/packages/nvorbis/0.10.4/nvorbis.0.10.4.nupkg.sha512",
|
||||
"/Users/averynorris/.nuget/packages/system.memory/4.5.3/system.memory.4.5.3.nupkg.sha512",
|
||||
"/Users/averynorris/.nuget/packages/system.valuetuple/4.5.0/system.valuetuple.4.5.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"
|
||||
],
|
||||
"logs": []
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
"restore":{"projectUniqueName":"/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj","projectName":"Awperative","projectPath":"/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj","outputPath":"/Users/averynorris/RiderProjects/Awperative/Awperative/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":{"MonoGame.Framework.DesktopGL":{"suppressParent":"All","target":"Package","version":"[3.8.*, )"}},"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"}}
|
||||
@@ -1 +0,0 @@
|
||||
17706725730840864
|
||||
@@ -1 +0,0 @@
|
||||
17706725730840864
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Awperative", "Awperative\Awperative.csproj", "{0130E4FD-B03B-4A9F-8431-B602C98BE466}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AwperativeKernel", "AwperativeKernel\AwperativeKernel.csproj", "{0130E4FD-B03B-4A9F-8431-B602C98BE466}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
4
AwperativeKernel.sln.DotSettings.user
Normal file
4
AwperativeKernel.sln.DotSettings.user
Normal file
@@ -0,0 +1,4 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/Environment/AssemblyExplorer/XmlDocument/@EntryValue"><AssemblyExplorer>
|
||||
<Assembly Path="/Users/averynorris/Programming/Test/Awperative/Awperative/bin/Debug/net8.0/Awperative.dll" />
|
||||
</AssemblyExplorer></s:String></wpf:ResourceDictionary>
|
||||
@@ -2,10 +2,9 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>Awperative</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.*">
|
||||
<PrivateAssets>All</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="OpenTK" Version="5.0.0-pre.15" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
0
docs/_site/public/main.css → AwperativeKernel/Kernel.md
Executable file → Normal file
0
docs/_site/public/main.css → AwperativeKernel/Kernel.md
Executable file → Normal file
230
AwperativeKernel/Kernel/Component/Component.cs
Normal file
230
AwperativeKernel/Kernel/Component/Component.cs
Normal file
@@ -0,0 +1,230 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
|
||||
|
||||
namespace AwperativeKernel;
|
||||
|
||||
|
||||
|
||||
|
||||
public abstract partial class Component : ComponentDocker
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Current parent of the Component. Can be either Scene or another Component.
|
||||
/// </summary>
|
||||
public ComponentDocker ComponentDocker { get; internal set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// If the component receives time events or not.
|
||||
/// </summary>
|
||||
public bool Enabled = true;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Order for when Components are called on. Only applies between Components on the same Docker.
|
||||
/// </summary>
|
||||
public int Priority {
|
||||
get => _priority; set => ComponentDocker.UpdatePriority(this, value);
|
||||
} internal int _priority;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// To be called when the Component is created.
|
||||
/// </summary>
|
||||
/// <param name="__parent"> Docker that this spawned in this Component</param>
|
||||
internal void Initiate(ComponentDocker __parent) {
|
||||
ComponentDocker = __parent;
|
||||
Create();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called when the Game is Closing; does not always happen depending on if it is Force Closed.
|
||||
/// </summary>
|
||||
protected internal virtual void Unload() {}
|
||||
|
||||
/// <summary>
|
||||
/// Called when the Game is Loading.
|
||||
/// </summary>
|
||||
protected internal virtual void Load() {}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called every frame before Draw, it is recommended to do any Non-Drawing update logic here.
|
||||
/// </summary>
|
||||
protected internal virtual void Update() {}
|
||||
|
||||
/// <summary>
|
||||
/// Called after Update when the screen is being drawn. Please only put Drawing related logic here.
|
||||
/// </summary>
|
||||
protected internal virtual void Draw() {}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called when the Component is created.
|
||||
/// </summary>
|
||||
protected internal virtual void Create() {}
|
||||
|
||||
/// <summary>
|
||||
/// Called when the Component is destroyed. Not called when the Game is closed.
|
||||
/// </summary>
|
||||
protected internal virtual void Destroy() {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Scene the Component resides in.
|
||||
/// </summary>
|
||||
public Scene Scene => __QueryScene();
|
||||
protected Scene __QueryScene() {
|
||||
if (ComponentDocker is Scene scene) return scene;
|
||||
if (ComponentDocker is Component Component) return Component.__QueryScene();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Identifiers for Components.
|
||||
/// </summary>
|
||||
public ImmutableArray<string> Tags => [.._tags];
|
||||
internal HashSet<string> _tags = [];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Adds a new tag to the Component
|
||||
/// </summary>
|
||||
/// <param name="__tag"> The tag to add</param>
|
||||
public void AddTag(string __tag) => ComponentDocker.HashTaggedComponent(this, __tag);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Removes a tag from the Component
|
||||
/// </summary>
|
||||
/// <param name="__tag"> The tag to remove</param>
|
||||
public void RemoveTag(string __tag) => ComponentDocker.UnhashTaggedComponent(this, __tag);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// All parent Dockers and the parents of the parents up until the Scene. Will only list parents of parents, not uncle dockers.
|
||||
/// </summary>
|
||||
/// <remarks> Dockers[0] is the parent of this object, and Dockers[^1] is the Scene.</remarks>
|
||||
public ImmutableArray<ComponentDocker> Dockers => __QueryDockers();
|
||||
protected ImmutableArray<ComponentDocker> __QueryDockers() {
|
||||
List<ComponentDocker> returnValue = [];
|
||||
ComponentDocker currentComponentDocker = ComponentDocker;
|
||||
|
||||
while (!(currentComponentDocker is Scene)) {
|
||||
if (currentComponentDocker is Component Component) {
|
||||
returnValue.Add(currentComponentDocker);
|
||||
currentComponentDocker = Component.ComponentDocker;
|
||||
} else {
|
||||
Debug.LogError("Component has a Parent that is not a Scene or Component, Please do not use the Docker class unless you know what you are doing!", ["Component", "Type", "Docker"],
|
||||
[GetHashCode().ToString(), GetType().ToString(), ComponentDocker.GetHashCode().ToString()]);
|
||||
}
|
||||
}
|
||||
|
||||
returnValue.Add(currentComponentDocker);
|
||||
|
||||
return [..returnValue];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns the Parent Component. Will be null if the Component is under a scene.
|
||||
/// </summary>
|
||||
public Component Parent => __QueryParent();
|
||||
protected Component __QueryParent() {
|
||||
if (ComponentDocker is Component Component)
|
||||
return Component;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// All parent Components and the parents of the parents up until the Scene. Will only list parents of parents, not uncle Components.
|
||||
/// </summary>
|
||||
public ImmutableArray<Component> Parents => __QueryComponents();
|
||||
protected ImmutableArray<Component> __QueryComponents() {
|
||||
List<Component> returnValue = [];
|
||||
ComponentDocker currentComponentDocker = ComponentDocker;
|
||||
|
||||
while (!(currentComponentDocker is Scene))
|
||||
if (currentComponentDocker is Component Component) {
|
||||
returnValue.Add(Component);
|
||||
currentComponentDocker = Component.ComponentDocker;
|
||||
}
|
||||
return [..returnValue];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Scene
|
||||
/// </summary>
|
||||
/// <param name="__name">Name of the Scene</param>
|
||||
public Scene CreateScene(string __name) => Awperative.CreateScene(__name);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Finds a scene.
|
||||
/// </summary>
|
||||
/// <param name="__name">Name of the Scene</param>
|
||||
/// <returns></returns>
|
||||
public Scene GetScene(string __name) => Awperative.GetScene(__name);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Destroys a Scene forever
|
||||
/// </summary>
|
||||
/// <param name="__scene"> Target scene</param>
|
||||
public void RemoveScene(Scene __scene) => Awperative.CloseScene(__scene);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Destroys a Scene forever
|
||||
/// </summary>
|
||||
/// <param name="__name">Name of the Scene</param>
|
||||
public void RemoveScene(string __name) => Awperative.CloseScene(__name);
|
||||
}
|
||||
237
AwperativeKernel/Kernel/Component/Component.md
Normal file
237
AwperativeKernel/Kernel/Component/Component.md
Normal file
@@ -0,0 +1,237 @@
|
||||
# Awperative Components
|
||||
|
||||
### Code and Documentation by Avery Norris
|
||||
|
||||
---
|
||||
|
||||
|
||||
Components are the main innovation in Awperative's take on a modern, unbiased
|
||||
**ECS** [(Entity Component System)](https://en.wikipedia.org/wiki/Entity_component_system); traditionally,
|
||||
an Entity Component system involves 2/3 types of data.
|
||||
|
||||
Parent Scene/World :
|
||||
|
||||
Children GameObjects/Actors :
|
||||
|
||||
Children Components/Scripts
|
||||
|
||||
- **Components** are what we actually care about, shockingly, they are the
|
||||
"Component" in Entity Component System, and you can think about them as the actual
|
||||
scripts or program in your Game, but a little more object-oriented.
|
||||
|
||||
|
||||
- **GameObjects** are the parents components are glued to, in most Game Libraries and Engines
|
||||
they are also treated as physical objects; and often given properties like **Transform** and **Tags**.
|
||||
GameObjects can also commonly nest in each other. I find it useful *(Especially in Awperative)* to view
|
||||
these as Directories for components.
|
||||
|
||||
|
||||
|
||||
- **Scenes** are basically the worlds these objects inhabit. Common *synonyms* are Worlds or Levels. If GameObjects
|
||||
are files in our analogy, then scenes are separate hard drives. The scene's jobs mainly center around being a
|
||||
Docker. *(Rather than an object of functionality)*
|
||||
|
||||
**Keep in mind** that this is a general description of **other** Game Development Platforms. It's impossible to summarize
|
||||
every single **ECS** in the world.
|
||||
|
||||
## How Awperative Differs
|
||||
|
||||
As of this current version, Awperative's **ECS** has taken on a different form than most.
|
||||
|
||||
Parent Scene/World
|
||||
|
||||
Components :
|
||||
|
||||
Children Components
|
||||
|
||||
One of the main **Awperative Principles** is **Generalization**; and during development it became clear
|
||||
GameObjects are unnecessary, which caused them to be replaced by: the **Component**.
|
||||
|
||||
While they are still called **Components**, Awperative's Components are actually a combination of the **GameObjects** and **Components** we discussed earlier. Awperative
|
||||
does not implement many fancy features out of the box; because of that the traditionally useful GameObjects became
|
||||
obsolete. Objects are also not built to be flexible like Components, leaving empty, nearly static objects floating in
|
||||
our Scenes.
|
||||
|
||||
Because of this it was decided to make a more flexible type of entity that can act as GameObject and Component at once.
|
||||
However, Components still do not implement many features out of the box, instead we use their **expandability** to our advantage.
|
||||
|
||||
## How To Use
|
||||
|
||||
Components are rather easy to control, similar to Engines like Unity, you can make your own custom script by inheriting the abstract "**Component**" class.
|
||||
|
||||
public class MyScript : Component {}
|
||||
|
||||
On the surface level, Components provide you with your current scene and parents.
|
||||
|
||||
They also give very handy Game Events which are present in 99% of Game Development Platforms.
|
||||
|
||||
public virtual void Load();
|
||||
public virtual void Unload();
|
||||
|
||||
public virtual void Update();
|
||||
public virtual void Draw();
|
||||
|
||||
public virtual void Create();
|
||||
public virtual void Destroy();
|
||||
|
||||
- Load and Unload provides a call when the Game is opened and closed respectively, please be wary: these will not call under a force close.
|
||||
|
||||
|
||||
|
||||
- Update and Draw both trigger each frame, starting with Update. It is recommended to put your non-graphics related
|
||||
code there; and vice versa for Draw.
|
||||
|
||||
|
||||
- Finally Create and Destroy are called when the Component is spawned In/Out. It should be noted that Create is called **after** the constructor.
|
||||
If you try to make certain references or calls in the constructor it may not fully work, as the object is half instantiated. It is recommended to use Create when possible. Also, Destroy will not be called if the program is closed, just Unload.
|
||||
|
||||
If you want to hook onto any of these methods it is quite simple using the override keyword.
|
||||
|
||||
public override void Update() {}
|
||||
|
||||
Putting this code inside any Component inheriting class, will create a method that gets called every single frame, just like that!
|
||||
|
||||
For any further documentation, please refer to the API section of our glorious website!
|
||||
|
||||
## Examples and Good Practice
|
||||
|
||||
First let's see how we can recreate typical GameObject Component. I would most recommend using **Nested Components** to achieve this.
|
||||
If we pretend we have implemented a few modules for basic transform profiles and sprite management, then we can easily make a basic movable sprite object.
|
||||
Like so :
|
||||
|
||||
Parent Scene/World
|
||||
|
||||
Empty Component :
|
||||
|
||||
Transform Component
|
||||
|
||||
Sprite Component
|
||||
|
||||
We can expand upon this easily as well. Say we want to make it into a moveable player character, we can modify the Empty Component to
|
||||
carry some additional functionality.
|
||||
|
||||
Parent Scene/World
|
||||
|
||||
Player Controller Component : <--
|
||||
|
||||
Transform Component
|
||||
|
||||
Sprite Component
|
||||
|
||||
If we want to give it a hitbox.
|
||||
|
||||
Parent Scene/World
|
||||
|
||||
Player Controller Component :
|
||||
|
||||
Transform Component
|
||||
|
||||
Sprite Component
|
||||
|
||||
Hitbox Component <--
|
||||
|
||||
And maybe let's say we want to scale or offset that
|
||||
|
||||
Parent Scene/World
|
||||
|
||||
Player Controller Component :
|
||||
|
||||
Transform Component
|
||||
|
||||
Sprite Component
|
||||
|
||||
Hitbox Component
|
||||
|
||||
Transform Component <--
|
||||
|
||||
Of course, there is some additional programming that would be needed between each step.
|
||||
**(Ex. Hitboxes listening to the child transform)**, but you can see how this data structure
|
||||
builds intuitively.
|
||||
|
||||
I would recommend compartmentalizing any repeating pieces of code or types into a **Component**. It is also
|
||||
not immediately obvious at first, But I would say one of the largest utilities from an **object free component** system is the ability
|
||||
to function at a high level in the scene.
|
||||
|
||||
Often times in component-object **ECS**' you will have a static object/s that stores important one off Components, such as the *Camera*,
|
||||
or the *Game's Asset Loader*. I've always found this to be unsatisfying. Luckily because Components can operate as standalone objects
|
||||
you can instead insert a standalone Camera Component into the scene. Which makes more logical and grammatical sense.
|
||||
|
||||
Parent Scene/World
|
||||
|
||||
Camera
|
||||
|
||||
Asset Loader
|
||||
|
||||
## Under the Hood
|
||||
|
||||
As you've seen part of what makes **Components** so great is the fact that they can nest within themselves infinitely.
|
||||
This is possible because of an essential piece known as the **Docker**.
|
||||
|
||||
Dockers are seen everywhere in Awperative. They are built to store child Components. The Component class carries a Docker like so.
|
||||
|
||||
Component : Docker
|
||||
|
||||
Dockers also provide the Add, Get and Remove functions we all know and love, along with the list of child Components.
|
||||
It is also responsible for Awperative Events being passed through the Scene, for Example, an Update call would look like this
|
||||
|
||||
Scene -> Docker -> Component(Docker's child)
|
||||
Update() -> ChainUpdate() -> Update()
|
||||
|
||||
Of course, the Update call would be redirected to a different spot if you were to override it, but the idea stays the same.
|
||||
|
||||
For more details, please look at Docker in the API and the file in Awperative!
|
||||
## Specialized Components
|
||||
|
||||
Because of its focus on **Expandability**, Awperative also allows **third-party** Components to enter the Scene.
|
||||
This allows for specialized Component or streamlined development, if you are willing to make assumptions.
|
||||
|
||||
Let's imagine you are making an enemy for an RPG and your Component Layout looks somewhat like this
|
||||
|
||||
Parent Scene/World
|
||||
|
||||
Enemy Pathfinding Component :
|
||||
|
||||
Transform Component
|
||||
|
||||
Sprite Component
|
||||
|
||||
Hitbox Component
|
||||
|
||||
Health Component
|
||||
|
||||
UNIQUE Component
|
||||
|
||||
In this diagram, **UNIQUE Component** is just a placeholder for any future or enemy specific Components, and it is critical to our example.
|
||||
And let's imagine that any time you add an enemy, then you will probably be adding some sort of "UNIQUE Component" there; And this unique Component often
|
||||
uses aspects from the others present.
|
||||
|
||||
In a scenario like this, it would likely behoove you to create a specialized Component type. As mentioned earlier, Components are identified by inheriting the
|
||||
abstract Component class. But it is possible to build an in-between class for additional functionality.
|
||||
|
||||
- Traditional Pattern
|
||||
|
||||
|
||||
Your Script : Component : Docker
|
||||
|
||||
- Example Specialized Pattern
|
||||
|
||||
|
||||
Your Script : EnemyComponent : Component : Docker
|
||||
|
||||
As you can see we inherited through EnemyComponent rather than Component. This is perfectly legal; and intended!
|
||||
You can do virtually anything in your specialized Component in-between. I most recommend making use of **lambda** in situations like this.
|
||||
|
||||
For instance, you can provide simpler access to another Component like so
|
||||
|
||||
int Health => Parent.Get<Health>().Health;
|
||||
|
||||
Any future EnemyComponents can simply put "**Health**" and it will correctly retrieve the dynamic value.
|
||||
|
||||
I should mention that this power comes with **great responsibility**. In this case: using EnemyComponent without a Health Component
|
||||
will cause logged errors, and possibly a runtime error/halt.
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
# End Of Documentation
|
||||
### Code and Documentation by Avery Norris
|
||||
528
AwperativeKernel/Kernel/ComponentDocker/ComponentDocker.cs
Normal file
528
AwperativeKernel/Kernel/ComponentDocker/ComponentDocker.cs
Normal file
@@ -0,0 +1,528 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
|
||||
namespace AwperativeKernel;
|
||||
|
||||
/// <summary>
|
||||
/// Base class for all Awperative Entities. 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.
|
||||
/// </summary>
|
||||
/// <remarks> Please don't inherit this. I don't know why you would</remarks>
|
||||
/// <author> Avery Norris </author>
|
||||
public abstract class ComponentDocker
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// List of all Components belonging to the Docker, Please Use Add, Get, Move and Destroy to modify it.
|
||||
/// </summary>
|
||||
public ImmutableArray<Component> Components => [.._Components];
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Amount of all Components in the Docker
|
||||
/// </summary>
|
||||
public int Count => _Components.Count;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Core of Docker, contains all of our precious Components. Sorts them by their priorities with highest going first.
|
||||
/// If they are equal it defaults to hash codes to ensure consistent Behavior
|
||||
/// </summary>
|
||||
internal SortedSet<Component> _Components = new(_componentSorter);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// How Priority is sorted.
|
||||
/// </summary>
|
||||
private readonly static Comparer<Component> _componentSorter = Comparer<Component>.Create((a, b) => {
|
||||
int result = b.Priority.CompareTo(a.Priority);
|
||||
return (result != 0) ? result : a.GetHashCode().CompareTo(b.GetHashCode());
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Resorts member of Component list to match the Priority.
|
||||
/// </summary>
|
||||
/// <param name="__component"> Component to modify</param>
|
||||
/// <param name="__priority"> New priority for Component</param>
|
||||
internal void UpdatePriority(Component __component, int __priority) {
|
||||
foreach (String tag in __component._tags) {
|
||||
_taggedComponents[tag].Remove(__component);
|
||||
} _Components.Remove(__component);
|
||||
|
||||
__component._priority = __priority;
|
||||
|
||||
foreach (String tag in __component._tags) {
|
||||
_taggedComponents[tag].Add(__component);
|
||||
} _Components.Add(__component);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called by Awperative when the game is Closed, sends the event to all children; and they send it to their children.
|
||||
/// </summary>
|
||||
/// <remarks> Will not always trigger if the program is force closed </remarks>
|
||||
internal virtual void ChainUnload() { foreach (Component component in (Component[])[.._Components]) { if(component.Enabled) { component.Unload(); component.ChainUnload(); } } }
|
||||
|
||||
/// <summary>
|
||||
/// Called by Awperative when the game is Opened, sends the event to all children; and they send it to their children.
|
||||
/// </summary>
|
||||
internal virtual void ChainLoad() { foreach (Component component in (Component[])[.._Components]) { if(component.Enabled) { component.Load(); component.ChainLoad(); } } }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called by Awperative when the game is Updated sends the event to all children; and they send it to their children.
|
||||
/// </summary>
|
||||
internal virtual void ChainUpdate() { foreach (Component component in (Component[])[.._Components]) { if(component.Enabled) { component.Update(); component.ChainUpdate(); } } }
|
||||
|
||||
/// <summary>
|
||||
/// Called by Awperative when the game is Drawn, sends the event to all children; and they send it to their children.
|
||||
/// </summary>
|
||||
/// <remarks> Only use this method for drawing methods</remarks>
|
||||
internal virtual void ChainDraw() { foreach (Component component in (Component[])[.._Components]) { if(component.Enabled) { component.Draw(); component.ChainDraw(); } } }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called by Awperative when this is Created, sends the event to all children; and they send it to their children.
|
||||
/// </summary>
|
||||
internal virtual void ChainCreate() { foreach (Component component in (Component[])[.._Components]) { if(component.Enabled) { component.Create(); component.ChainCreate(); } } }
|
||||
|
||||
/// <summary>
|
||||
/// Called by Awperative when this Component is destroyed, sends the event to all children; since they will be Destroyed too. And they send it to their children.
|
||||
/// </summary>
|
||||
/// <remarks> Not called when the game is closed</remarks>
|
||||
internal virtual void ChainDestroy() { foreach(Component component in (Component[])[.._Components]) { if(component.Enabled) { component.Destroy(); component.ChainDestroy(); } } }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Add a new Component to the Docker; This is the only way they should be created.
|
||||
/// </summary>
|
||||
/// <param name="__args"> Arguments to construct the Component with</param>
|
||||
/// <typeparam name="__Type"> Type of Component to instantiate</typeparam>
|
||||
/// <returns></returns>
|
||||
public __Type Add<__Type>(object[] __args) where __Type : Component {
|
||||
|
||||
|
||||
|
||||
//Component does not have a constructor that matches the given args
|
||||
if (typeof(__Type).GetConstructor(__args.Select(x => x.GetType()).ToArray()) == null) {
|
||||
Debug.LogError("Component cannot be constructed with the given arguments",
|
||||
["Type", "Args"],
|
||||
[typeof(__Type).ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]"]); return null;
|
||||
};
|
||||
|
||||
|
||||
Component newComponent;
|
||||
|
||||
|
||||
//Tries to instantiate Component, and sends a fail call if an issue occurs.
|
||||
try { newComponent = (__Type)Activator.CreateInstance(typeof(__Type), __args); }
|
||||
catch {
|
||||
Debug.LogError("Component creation failed!", ["Type", "Args", "Docker"],
|
||||
[typeof(__Type).ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]", GetHashCode().ToString()]); return null;
|
||||
}
|
||||
|
||||
|
||||
//If Component is null do not add
|
||||
if(newComponent == null) {
|
||||
Debug.LogError("Activator created Null Component", ["Type", "Args", "Docker"],
|
||||
[typeof(__Type).ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]", GetHashCode().ToString()]); return null;
|
||||
}
|
||||
|
||||
|
||||
//Add to docker and initialize the new Component
|
||||
_Components.Add(newComponent);
|
||||
newComponent.Initiate(this);
|
||||
|
||||
|
||||
return (__Type) newComponent;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Adds a new Component to the Docker; This is the only way they should be created.
|
||||
/// </summary>
|
||||
/// <typeparam name="__Type"></typeparam>
|
||||
/// <returns></returns>
|
||||
public __Type Add<__Type>() where __Type : Component => Add<__Type>([]);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Transfers a child Component to another Docker
|
||||
/// </summary>
|
||||
/// <param name="__component"> Component to move</param>
|
||||
/// <param name="__componentDocker"> Docker to move component to</param>
|
||||
/// <remarks> Components cannot transfer themselves with this Method!</remarks>
|
||||
public void Move(Component __component, ComponentDocker __componentDocker) {
|
||||
|
||||
|
||||
|
||||
//This allows self transfer behavior while preserving Docker's actual job, Before all other statements to prevent Double-Debugging.
|
||||
if (__component == this) { __component.ComponentDocker.Move(__component, __componentDocker); return; }
|
||||
|
||||
|
||||
|
||||
if (__component == null) {
|
||||
Debug.LogError("Component is null!", ["CurrentDocker", "NewDocker"],
|
||||
[GetHashCode().ToString(), __componentDocker.GetHashCode().ToString()]); return; }
|
||||
|
||||
|
||||
|
||||
if (!_Components.Contains(__component)) {
|
||||
Debug.LogError("Docker does not have ownership of Component", ["Component", "Type", "CurrentDocker", "NewDocker"],
|
||||
[__component.GetHashCode().ToString(), __component.GetType().ToString(), GetHashCode().ToString(), __componentDocker.GetHashCode().ToString()]); return; }
|
||||
|
||||
|
||||
|
||||
//Update docker lists
|
||||
__componentDocker._Components.Add(__component);
|
||||
_Components.Remove(__component);
|
||||
|
||||
|
||||
|
||||
//Update components parent
|
||||
__component.ComponentDocker = __componentDocker;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Transfers the first found Component of a specific type to another Docker
|
||||
/// </summary>
|
||||
/// <param name="__componentDocker"> Docker to move component to</param>
|
||||
/// <typeparam name="__Type"> Type of component</typeparam>
|
||||
public void Move<__Type>(ComponentDocker __componentDocker) where __Type : Component => Move(Get<__Type>(), __componentDocker);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Transfers all Components in a list to another Docker.
|
||||
/// </summary>
|
||||
/// <param name="__Components"> List of Components to transfer</param>
|
||||
/// <param name="__componentDocker"> Docker to move Component to</param>
|
||||
public void MoveAll(IEnumerable<Component> __Components, ComponentDocker __componentDocker) { foreach (Component Component in (Component[])[..__Components]) Move(Component, __componentDocker); }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Transfers all Components of a type to another Docker.
|
||||
/// </summary>
|
||||
/// <param name="__componentDocker"> Target Docker</param>
|
||||
/// <typeparam name="__Type"> Type of Components to transfer</typeparam>
|
||||
public void MoveAll<__Type>(ComponentDocker __componentDocker) where __Type : Component => MoveAll(GetAll<__Type>(), __componentDocker);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// /// <summary>
|
||||
/// Holds Components at Keys of their tags.
|
||||
/// </summary>
|
||||
internal Dictionary<string, SortedSet<Component>> _taggedComponents = [];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Add component to its proper place in the dictionary and resort values to match priorities.
|
||||
/// </summary>
|
||||
/// <param name="__component"> Component to hash</param>
|
||||
/// <param name="__tag"> Value to try and hash</param>
|
||||
internal void HashTaggedComponent(Component __component, string __tag) {
|
||||
|
||||
if (!__component._tags.Add(__tag)) {
|
||||
Debug.LogError("Component already has tag!", ["Component", "Type", "Tag", "Docker"],
|
||||
[__component.GetHashCode().ToString(), __component.GetType().ToString(), __tag, GetHashCode().ToString()]); return;
|
||||
}
|
||||
|
||||
if (_taggedComponents.TryGetValue(__tag, out SortedSet<Component> components)) {
|
||||
components.Add(__component);
|
||||
|
||||
} else { _taggedComponents.Add(__tag, new SortedSet<Component>(_componentSorter)); _taggedComponents[__tag].Add(__component); }
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="__component"></param>
|
||||
/// <param name="__tag"></param>
|
||||
internal void UnhashTaggedComponent(Component __component, string __tag) {
|
||||
|
||||
if (!__component._tags.Remove(__tag)) {
|
||||
Debug.LogError("Component already doesn't have that tag!", ["Component", "Type", "Tag", "Docker"],
|
||||
[__component.GetHashCode().ToString(), __component.GetType().ToString(), __tag, GetHashCode().ToString()]); return;
|
||||
}
|
||||
|
||||
|
||||
if (_taggedComponents.TryGetValue(__tag, out SortedSet<Component> components)) {
|
||||
components.Remove(__component);
|
||||
|
||||
if(components.Count == 0)
|
||||
_taggedComponents.Remove(__tag);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Finds the first instance of a component with a given tag
|
||||
/// </summary>
|
||||
/// <param name="__tag"></param>
|
||||
/// <returns></returns>
|
||||
internal Component Get(string __tag) {
|
||||
if (_taggedComponents.TryGetValue(__tag, out SortedSet<Component> components))
|
||||
return ((Component[])[..components])[0];
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Finds all Components with a given tag
|
||||
/// </summary>
|
||||
/// <param name="__tag"></param>
|
||||
/// <returns></returns>
|
||||
internal ImmutableArray<Component> GetAll(string __tag) {
|
||||
if (_taggedComponents.TryGetValue(__tag, out SortedSet<Component> components))
|
||||
return [..components];
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Finds the first Component that has all the given tags
|
||||
/// </summary>
|
||||
/// <param name="__tags"></param>
|
||||
/// <returns></returns>
|
||||
internal Component Get(List<string> __tags) { ImmutableArray<Component> returnValue = GetAll(__tags); return returnValue.Length > 0 ? returnValue[0] : null; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Finds all Components that have all the given tags
|
||||
/// </summary>
|
||||
/// <param name="__tags"></param>
|
||||
/// <returns></returns>
|
||||
internal ImmutableArray<Component> GetAll(List<string> __tags) {
|
||||
|
||||
if (__tags.Count == 0)
|
||||
return [];
|
||||
|
||||
SortedSet<Component> foundComponents = _taggedComponents[__tags[0]];
|
||||
|
||||
for (int i = 1; i < __tags.Count; i++) {
|
||||
foreach (Component component in (Component[])[..foundComponents]) {
|
||||
if (!_taggedComponents[__tags[i]].Contains(component)) foundComponents.Remove(component);
|
||||
}
|
||||
}
|
||||
|
||||
return [..foundComponents];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Searches and returns the first Component of a type found on the Docker.
|
||||
/// </summary>
|
||||
/// <typeparam name="__Type"> The Type of Component to search for</typeparam>
|
||||
/// <returns></returns>
|
||||
public __Type Get<__Type>() where __Type : Component {
|
||||
|
||||
|
||||
|
||||
//Iterates through the loop and returns if a match is found
|
||||
foreach (Component component in (Component[])[.._Components])
|
||||
if (component is __Type foundComponent) return foundComponent;
|
||||
|
||||
|
||||
|
||||
//Throws error if there is no Component found
|
||||
Debug.LogError("Docker does not have target Component", ["Type", "Docker"],
|
||||
[typeof(__Type).ToString(), GetHashCode().ToString()]); return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Searches and returns all Components of a type found on the Docker.
|
||||
/// </summary>
|
||||
/// <typeparam name="__Type"> The Type of Components to search for</typeparam>
|
||||
/// <returns></returns>
|
||||
public ImmutableArray<__Type> GetAll<__Type>() where __Type : Component {
|
||||
|
||||
|
||||
|
||||
List<__Type> foundComponents = [];
|
||||
|
||||
|
||||
//Iterates through the loop and returns if a match is found
|
||||
foreach (Component component in (Component[])[.._Components]) {
|
||||
if (component is __Type foundComponent) {
|
||||
foundComponents.Add(foundComponent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Throws error if there is no Component found
|
||||
if (foundComponents.Count == 0) {
|
||||
Debug.LogError("Docker does not have target Component", ["Type", "Docker"],
|
||||
[typeof(__Type).ToString(), GetHashCode().ToString()]);
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
|
||||
return [..foundComponents];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns a bool based on if the Docker contains a Component with the given tag or not
|
||||
/// </summary>
|
||||
/// <param name="__tag"></param>
|
||||
/// <returns></returns>
|
||||
public bool Contains(string __tag) => _taggedComponents.ContainsKey(__tag);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns a bool based on if the Docker contains a Component of that type or not
|
||||
/// </summary>
|
||||
/// <typeparam name="__Type">Type of the Component</typeparam>
|
||||
/// <returns></returns>
|
||||
public bool Contains<__Type>() where __Type : Component => _Components.Any(x => x is __Type);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns a bool based on if the current __Component is owned by this Docker
|
||||
/// </summary>
|
||||
/// <param name="__component"></param>
|
||||
/// <returns></returns>
|
||||
public bool Contains(Component __component) => _Components.Contains(__component);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Destroys a Component attached to docker
|
||||
/// </summary>
|
||||
/// <param name="__component"></param>
|
||||
public void Remove(Component __component) {
|
||||
|
||||
//Component is null
|
||||
if (__component == null) {
|
||||
Debug.LogError("Component is null", ["CurrentDocker"],
|
||||
[GetHashCode().ToString()]); return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Docker doesn't have Component
|
||||
if (!_Components.Contains(__component)) {
|
||||
Debug.LogError("Docker does not have ownership of Component", ["Component", "Type", "CurrentDocker"],
|
||||
[__component.GetHashCode().ToString(), __component.GetType().ToString(), GetHashCode().ToString()]); return;
|
||||
}
|
||||
|
||||
__component.Destroy();
|
||||
__component.ChainDestroy();
|
||||
foreach (string tag in __component._tags) UnhashTaggedComponent(__component, tag);
|
||||
__component.ComponentDocker = null;
|
||||
|
||||
_Components.Remove(__component);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Destroys the first found Component of a given type
|
||||
/// </summary>
|
||||
/// <typeparam name="__Type"> Type of Component to destroy</typeparam>
|
||||
public void Remove<__Type>() where __Type : Component => Remove(Get<__Type>());
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Destroys all Components from a given collection.
|
||||
/// </summary>
|
||||
/// <param name="__Components"></param>
|
||||
public void RemoveAll(IEnumerable<Component> __Components) { foreach (Component component in (Component[])[..__Components]) { Remove(component); } }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Destroys all Components of a given type
|
||||
/// </summary>
|
||||
/// <typeparam name="__Type"></typeparam>
|
||||
public void RemoveAll<__Type>() where __Type : Component => RemoveAll(GetAll<__Type>());
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Destroys all Components attached to Docker
|
||||
/// </summary>
|
||||
public void RemoveAll() { foreach (Component component in (Component[])[.._Components]) { Remove(component); } }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,12 +1,46 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
|
||||
namespace Awperative;
|
||||
|
||||
namespace AwperativeKernel;
|
||||
|
||||
|
||||
public static partial class Debug
|
||||
public static class Debug
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// True path of the log file Awperative dumps to.
|
||||
/// </summary>
|
||||
public static string LogFilePath { get; private set; }
|
||||
|
||||
|
||||
|
||||
public static string LogFileName { get; private set; } = "Log";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Sets up the Awperative debugger and finds the log file.
|
||||
/// </summary>
|
||||
internal static void Initiate() {
|
||||
string directoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
if(directoryPath == null) throw new Exception("Failed to get directory path!");
|
||||
|
||||
LogFilePath = Path.Join(directoryPath, LogFileName + ".awlf");
|
||||
|
||||
if(!Directory.GetFiles(directoryPath).Contains(LogFileName + ".awlf")) { File.Create(LogFilePath).Close(); }
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Writes the current message to the log file.
|
||||
/// </summary>
|
||||
106
AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
Normal file
106
AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
|
||||
namespace AwperativeKernel;
|
||||
|
||||
/// <summary>
|
||||
/// Initiating class of Awperative. Call Start() to start the kernel.
|
||||
/// </summary>
|
||||
/// <author> Avery Norris </author>
|
||||
public static class Awperative
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Bottom class of Awperative. Contains the MonoGame instance.
|
||||
/// </summary>
|
||||
public static Base Base { get; internal set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// List of all scenes currently loaded in the kernel.
|
||||
/// </summary>
|
||||
public static ImmutableArray<Scene> Scenes => [.._scenes];
|
||||
internal static HashSet<Scene> _scenes { get; private set; } = [];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Scene
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Finds a Scene from a given name
|
||||
/// </summary>
|
||||
/// <param name="__name"> Name to search for</param>
|
||||
/// <returns></returns>
|
||||
public static Scene GetScene(string __name) => _scenes.FirstOrDefault(scene => scene.Name == __name, null);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns bool based on whether there a scene with the given name or not.
|
||||
/// </summary>
|
||||
/// <param name="__name"> Name of the Scene</param>
|
||||
/// <returns></returns>
|
||||
public static bool ContainsScene(string __name) => _scenes.Any(scene => scene.Name == __name);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Closes a Scene
|
||||
/// </summary>
|
||||
/// <param name="__scene"> Scene to close</param>
|
||||
public static void CloseScene(Scene __scene) => Scenes.Remove(__scene);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Closes a Scene
|
||||
/// </summary>
|
||||
/// <param name="__name"> Name of the scene</param>
|
||||
public static void CloseScene(string __name) => Scenes.Remove(GetScene(__name));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets Awperative ready to roll!
|
||||
/// </summary>
|
||||
/// <param name="__hooks"> List of all event hooks you wish to use. </param>
|
||||
/// <remarks> You cannot add new hooks later; so make sure to register all of them in the Start() method.</remarks>
|
||||
public static void Start() {
|
||||
Debug.Initiate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Starts Awperative up! This method runs forever.
|
||||
/// </summary>
|
||||
public static void Run() {
|
||||
Base = new Base();
|
||||
Base.Run();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
60
AwperativeKernel/Kernel/Overhead/Base/Base.cs
Normal file
60
AwperativeKernel/Kernel/Overhead/Base/Base.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using OpenTK;
|
||||
using OpenTK.Windowing.Common;
|
||||
using OpenTK.Windowing.Desktop;
|
||||
|
||||
|
||||
|
||||
namespace AwperativeKernel;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Base class of Awperative. Carries events from MonoGame into scenes and hooks.
|
||||
/// </summary>
|
||||
/// <author> Avery Norris </author>
|
||||
public sealed class Base() : GameWindow(GameWindowSettings.Default, new NativeWindowSettings() { })
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LoadContent() is called when the program starts; right after Initialize(). Override Load() in scripting tools or use hooks to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> It is recommended to load content during LoadContent()</remarks>
|
||||
protected override void OnLoad() { foreach(Scene scene in Awperative.Scenes.ToList()) if(scene.Enabled) scene.ChainLoad(); }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Update() is called every frame; before Draw(). Override Update() in scripting tools to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> Hooks are unable to receive both Update() and Draw()</remarks>
|
||||
protected override void OnUpdateFrame(FrameEventArgs __args) { foreach(Scene scene in Awperative.Scenes.ToList()) if(scene.Enabled) scene.ChainUpdate(); base.OnUpdateFrame(__args); }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Draw() is called every frame; after Update(). Override Draw() in scripting tools to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> Hooks are unable to receive both Update() and Draw()</remarks>
|
||||
protected override void OnRenderFrame(FrameEventArgs __args) { foreach(Scene scene in Awperative.Scenes.ToList()) if(scene.Enabled) scene.ChainDraw(); base.OnRenderFrame(__args); }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// EndRun() is called if the program closes. Override Terminate() in scripting tools or use hooks to call from this event.
|
||||
/// </summary>
|
||||
/// <remarks> This event may not trigger if the program is force closed.</remarks>
|
||||
protected override void OnClosing(CancelEventArgs __args) { foreach (Scene scene in Awperative.Scenes.ToList()) if(scene.Enabled) scene.ChainUnload(); base.OnClosing(__args); }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
0
AwperativeKernel/Kernel/Overhead/Base/Base.md
Normal file
0
AwperativeKernel/Kernel/Overhead/Base/Base.md
Normal file
25
AwperativeKernel/Kernel/Scene/Scene.cs
Normal file
25
AwperativeKernel/Kernel/Scene/Scene.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
namespace AwperativeKernel;
|
||||
|
||||
public sealed partial class Scene : ComponentDocker
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Whether the scene is enabled or not.
|
||||
/// </summary>
|
||||
public bool Enabled = true;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Unique Name of the Scene
|
||||
/// </summary>
|
||||
public string Name;
|
||||
|
||||
|
||||
|
||||
internal Scene() {}
|
||||
|
||||
|
||||
|
||||
internal Scene(string __name) { Name = __name; }
|
||||
}
|
||||
0
AwperativeKernel/Kernel/Scene/Scene.md
Normal file
0
AwperativeKernel/Kernel/Scene/Scene.md
Normal file
30
AwperativeKernel/VersionHistory.md
Normal file
30
AwperativeKernel/VersionHistory.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Awperative V1.0!
|
||||
|
||||
### Made by Avery Norris!
|
||||
|
||||
---
|
||||
|
||||
This is the very **first official** development version of Awperative! Out of the box Awperative has come with the following :
|
||||
|
||||
* Entity Component System using Components, Scenes and Dockers!
|
||||
|
||||
|
||||
* Dynamic Debugging System which is used in multiple modules already
|
||||
|
||||
|
||||
* Simple Overhead Modules
|
||||
|
||||
Current plans are to finish some unit tests, check Awperative up and down for naming consistency,
|
||||
syntax, and bugs and begin building a Game Engine on top of it.
|
||||
|
||||
A few modules have been given documentation and the website is currently underway.
|
||||
|
||||
---
|
||||
|
||||
# Awperative V1.1
|
||||
|
||||
### Feb 17th 2026
|
||||
|
||||
---
|
||||
|
||||
Awperative is officially moved to Open TK!
|
||||
173
AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.deps.json
Normal file
173
AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.deps.json
Normal file
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v8.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"AwperativeKernel/1.0.0": {
|
||||
"dependencies": {
|
||||
"MonoGame.Framework.DesktopGL": "3.8.4.1"
|
||||
},
|
||||
"runtime": {
|
||||
"AwperativeKernel.dll": {}
|
||||
}
|
||||
},
|
||||
"MonoGame.Framework.DesktopGL/3.8.4.1": {
|
||||
"dependencies": {
|
||||
"MonoGame.Library.OpenAL": "1.24.3.2",
|
||||
"MonoGame.Library.SDL": "2.32.2.1",
|
||||
"NVorbis": "0.10.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/MonoGame.Framework.dll": {
|
||||
"assemblyVersion": "3.8.4.1",
|
||||
"fileVersion": "3.8.4.1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MonoGame.Library.OpenAL/1.24.3.2": {
|
||||
"runtimeTargets": {
|
||||
"runtimes/android-arm/native/libopenal.so": {
|
||||
"rid": "android-arm",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/android-arm64/native/libopenal.so": {
|
||||
"rid": "android-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/android-x64/native/libopenal.so": {
|
||||
"rid": "android-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/android-x86/native/libopenal.so": {
|
||||
"rid": "android-x86",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/ios-arm64/native/libopenal.a": {
|
||||
"rid": "ios-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/iossimulator-arm64/native/libopenal.a": {
|
||||
"rid": "iossimulator-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/iossimulator-x64/native/libopenal.a": {
|
||||
"rid": "iossimulator-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-arm64/native/libopenal.so": {
|
||||
"rid": "linux-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-x64/native/libopenal.so": {
|
||||
"rid": "linux-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/osx/native/libopenal.dylib": {
|
||||
"rid": "osx",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/win-x64/native/openal.dll": {
|
||||
"rid": "win-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MonoGame.Library.SDL/2.32.2.1": {
|
||||
"runtimeTargets": {
|
||||
"runtimes/linux-x64/native/libSDL2-2.0.so.0": {
|
||||
"rid": "linux-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/osx/native/libSDL2-2.0.0.dylib": {
|
||||
"rid": "osx",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/win-x64/native/SDL2.dll": {
|
||||
"rid": "win-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"NVorbis/0.10.4": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.3",
|
||||
"System.ValueTuple": "4.5.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/NVorbis.dll": {
|
||||
"assemblyVersion": "0.10.4.0",
|
||||
"fileVersion": "0.10.4.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.3": {},
|
||||
"System.ValueTuple/4.5.0": {}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"AwperativeKernel/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"MonoGame.Framework.DesktopGL/3.8.4.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YybxIIT5+Ky78E/XdkS0glyluMr2EeDZwx2LqXULAOCqiKt1+aDrjPZaqLL5qpNgBcMEHUeZJ4YjWe4TAZlWLw==",
|
||||
"path": "monogame.framework.desktopgl/3.8.4.1",
|
||||
"hashPath": "monogame.framework.desktopgl.3.8.4.1.nupkg.sha512"
|
||||
},
|
||||
"MonoGame.Library.OpenAL/1.24.3.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-nGRsXQXs+NSUC3C5w90hFQfyKdZPpBnHnyg2w+Dw/2pUH7s+CoRWTJNYbzzdJf3+aeUvfvG4rTbFvMKDDj5olA==",
|
||||
"path": "monogame.library.openal/1.24.3.2",
|
||||
"hashPath": "monogame.library.openal.1.24.3.2.nupkg.sha512"
|
||||
},
|
||||
"MonoGame.Library.SDL/2.32.2.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-T4E2ppGlSTC2L9US1rxtdg3qTbarRzNId31xZoumUW9cf9Nq8nRQPMu9GzvZGrhfSySf0+UWPEj1rlicps+P/w==",
|
||||
"path": "monogame.library.sdl/2.32.2.1",
|
||||
"hashPath": "monogame.library.sdl.2.32.2.1.nupkg.sha512"
|
||||
},
|
||||
"NVorbis/0.10.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-WYnil3DhQHzjCY0dM9I2B3r1vWip90AOuQd25KE4NrjPQBg0tBJFluRLm5YPnO5ZLDmwrfosY8jCQGQRmWI/Pg==",
|
||||
"path": "nvorbis/0.10.4",
|
||||
"hashPath": "nvorbis.0.10.4.nupkg.sha512"
|
||||
},
|
||||
"System.Memory/4.5.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==",
|
||||
"path": "system.memory/4.5.3",
|
||||
"hashPath": "system.memory.4.5.3.nupkg.sha512"
|
||||
},
|
||||
"System.ValueTuple/4.5.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
||||
"path": "system.valuetuple/4.5.0",
|
||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.dll
Normal file
BIN
AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.dll
Normal file
Binary file not shown.
BIN
AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.pdb
Normal file
BIN
AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.pdb
Normal file
Binary file not shown.
1
AwperativeKernel/bin/Debug/net8.0/Log.awlf
Normal file
1
AwperativeKernel/bin/Debug/net8.0/Log.awlf
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj": {}
|
||||
"/home/avery/Programming/Awperative/Awperative/Awperative.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj": {
|
||||
"/home/avery/Programming/Awperative/Awperative/Awperative.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj",
|
||||
"projectUniqueName": "/home/avery/Programming/Awperative/Awperative/Awperative.csproj",
|
||||
"projectName": "Awperative",
|
||||
"projectPath": "/Users/averynorris/RiderProjects/Awperative/Awperative/Awperative.csproj",
|
||||
"packagesPath": "/Users/averynorris/.nuget/packages/",
|
||||
"outputPath": "/Users/averynorris/RiderProjects/Awperative/Awperative/obj/",
|
||||
"projectPath": "/home/avery/Programming/Awperative/Awperative/Awperative.csproj",
|
||||
"packagesPath": "/home/avery/.nuget/packages/",
|
||||
"outputPath": "/home/avery/Programming/Awperative/Awperative/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": {
|
||||
@@ -64,11 +64,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": {
|
||||
@@ -76,7 +76,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/10.0.102/PortableRuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "/home/avery/.dotnet/sdk/9.0.311/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/averynorris/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/averynorris/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/avery/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/avery/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/Users/averynorris/.nuget/packages/" />
|
||||
<SourceRoot Include="/home/avery/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/home/avery/Programming/Awperative/AwperativeKernel/AwperativeKernel.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/home/avery/Programming/Awperative/AwperativeKernel/AwperativeKernel.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/avery/Programming/Awperative/AwperativeKernel/AwperativeKernel.csproj",
|
||||
"projectName": "AwperativeKernel",
|
||||
"projectPath": "/home/avery/Programming/Awperative/AwperativeKernel/AwperativeKernel.csproj",
|
||||
"packagesPath": "/home/avery/.nuget/packages/",
|
||||
"outputPath": "/home/avery/Programming/Awperative/AwperativeKernel/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/avery/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
AwperativeKernel/obj/AwperativeKernel.csproj.nuget.g.props
Normal file
15
AwperativeKernel/obj/AwperativeKernel.csproj.nuget.g.props
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/avery/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/avery/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/avery/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Awperative")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+221a768384535c7c1db461439acf325320cebd56")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c81b942f2b46144917d85dfd8159eaa5d9120941")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Awperative")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Awperative")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
@@ -0,0 +1 @@
|
||||
953f3f98ae3da4f892b118b7b9915819e49a4cb67f398f505cf730550f31333e
|
||||
@@ -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/Awperative/Awperative/
|
||||
build_property.ProjectDir = /home/avery/Programming/Awperative/Awperative/
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 8.0
|
||||
BIN
AwperativeKernel/obj/Debug/net8.0/Awperative.assets.cache
Normal file
BIN
AwperativeKernel/obj/Debug/net8.0/Awperative.assets.cache
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
c7dc8b93be48955f50d651d9fc41697472d7005471fa74c204470fc68053332a
|
||||
@@ -18,7 +18,6 @@
|
||||
/home/avery/Programming/Awperative/Awperative/obj/Debug/net8.0/Awperative.AssemblyInfoInputs.cache
|
||||
/home/avery/Programming/Awperative/Awperative/obj/Debug/net8.0/Awperative.AssemblyInfo.cs
|
||||
/home/avery/Programming/Awperative/Awperative/obj/Debug/net8.0/Awperative.csproj.CoreCompileInputs.cache
|
||||
/home/avery/Programming/Awperative/Awperative/obj/Debug/net8.0/Awperative.sourcelink.json
|
||||
/home/avery/Programming/Awperative/Awperative/obj/Debug/net8.0/Awperative.dll
|
||||
/home/avery/Programming/Awperative/Awperative/obj/Debug/net8.0/refint/Awperative.dll
|
||||
/home/avery/Programming/Awperative/Awperative/obj/Debug/net8.0/Awperative.pdb
|
||||
BIN
AwperativeKernel/obj/Debug/net8.0/Awperative.dll
Normal file
BIN
AwperativeKernel/obj/Debug/net8.0/Awperative.dll
Normal file
Binary file not shown.
BIN
AwperativeKernel/obj/Debug/net8.0/Awperative.pdb
Normal file
BIN
AwperativeKernel/obj/Debug/net8.0/Awperative.pdb
Normal file
Binary file not shown.
@@ -0,0 +1,22 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
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+abbfe285b60980c87843f0d8d7b4ea19917da2a8")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("AwperativeKernel")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("AwperativeKernel")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
afcbbfcb5273145965d51705620a76d1fee510766d5b39f039949033afa2aa6e
|
||||
@@ -0,0 +1,15 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net8.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Awperative
|
||||
build_property.ProjectDir = /home/avery/Programming/Awperative/AwperativeKernel/
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 8.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
BIN
AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.assets.cache
Normal file
BIN
AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.assets.cache
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
8ec553de34db90589bbf9af1b072687839f0d55b05f58bc6b36b3fe0aa05bceb
|
||||
@@ -0,0 +1,12 @@
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.deps.json
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.dll
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/bin/Debug/net8.0/AwperativeKernel.pdb
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.AssemblyReference.cache
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.GeneratedMSBuildEditorConfig.editorconfig
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.csproj.CoreCompileInputs.cache
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/refint/AwperativeKernel.dll
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb
|
||||
/home/avery/Programming/Awperative/AwperativeKernel/obj/Debug/net8.0/ref/AwperativeKernel.dll
|
||||
BIN
AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll
Normal file
BIN
AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll
Normal file
Binary file not shown.
BIN
AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb
Normal file
BIN
AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user