From 5268d97828f9b41473ed3c5f1319ed2b7ec88c38 Mon Sep 17 00:00:00 2001 From: copygirl Date: Thu, 29 Dec 2022 03:40:43 +0100 Subject: [PATCH] Big refactor and Entity Inspector - Split core ECS wrapper into gaemstone.ECS project - Module loading part of gaemstone, still - Remove ComponentHooks (for now) - Fix IL for nullable references in IterActionGenerator - Move from Silk.NET.Maths to System.Numerics - Add Flecs.Core.Component and .Identifier - Add Flecs.Doc module - Add gaemstone.Doc module - Add [Symbol] to register entities with symbols This decision will probably be reversed. - World generator picks random blocks, more color! Changes relating to ImGui: - Use custom ImGUI.NET version with local changes to get access to internal functions. Currently waiting for upstream to implement this functionality. - Add font support, and the fonts OpenSans and ForkAwesome - Add an entity inspector window to browse entities, see their contents and find references to other entities. --- .editorconfig | 4 +- .gitmodules | 6 +- gaemstone.sln | 103 ++- src/Immersion/Immersion.csproj | 1 + src/Immersion/ObserverTest.cs | 2 +- src/Immersion/Program.cs | 17 +- src/flecs-cs | 1 - src/gaemstone.Bloxel/BlockFacing.cs | 16 +- src/gaemstone.Bloxel/BlockPos.cs | 8 +- src/gaemstone.Bloxel/ChunkPos.cs | 8 +- .../Client/Systems/ChunkMeshGenerator.cs | 34 +- .../Components/CoreComponents.cs | 4 +- src/gaemstone.Bloxel/Neighbor.cs | 4 +- .../Systems/BasicWorldGenerator.cs | 28 +- src/gaemstone.Bloxel/Utility/ChunkedOctree.cs | 2 +- src/gaemstone.Bloxel/gaemstone.Bloxel.csproj | 5 + src/gaemstone.Client/Color.cs | 88 +- .../Components/CameraComponents.cs | 6 +- .../Components/InputComponents.cs | 20 +- .../Components/RenderingComponents.cs | 16 +- .../Components/ResourceComponents.cs | 6 +- .../Resources/ForkAwesome.ttf | Bin 0 -> 219004 bytes .../Resources/LICENSE_ForkAwesome.txt | 95 ++ .../Resources/LICENSE_OpenSans.txt | 93 ++ .../Resources/OpenSans.Bold.ttf | Bin 0 -> 129784 bytes .../Resources/OpenSans.Italic.ttf | Bin 0 -> 579296 bytes src/gaemstone.Client/Resources/OpenSans.ttf | Bin 0 -> 129796 bytes .../Systems/EntityInspector.cs | 763 ++++++++++++++++ .../Systems/FreeCameraController.cs | 38 +- .../Systems/ImGuiDemoWindow.cs | 20 + .../Systems/ImGuiInputDebug.cs | 233 ++--- src/gaemstone.Client/Systems/ImGuiManager.cs | 96 +- src/gaemstone.Client/Systems/InputManager.cs | 24 +- src/gaemstone.Client/Systems/MeshManager.cs | 10 +- src/gaemstone.Client/Systems/Renderer.cs | 32 +- src/gaemstone.Client/Systems/Windowing.cs | 6 +- src/gaemstone.Client/Utility/ForkAwesome.cs | 819 ++++++++++++++++++ src/gaemstone.Client/Utility/ImGuiUtility.cs | 55 ++ src/gaemstone.Client/gaemstone.Client.csproj | 5 +- src/gaemstone.ECS | 1 + .../Components/TransformComponents.cs | 12 +- src/gaemstone/Doc.cs | 86 ++ src/gaemstone/ECS/Attributes.cs | 53 +- src/gaemstone/ECS/Component.cs | 36 - src/gaemstone/ECS/ComponentHooks.cs | 90 -- src/gaemstone/ECS/Entity.cs | 48 - src/gaemstone/ECS/EntityBase.cs | 48 - src/gaemstone/ECS/EntityBuilder.cs | 116 --- src/gaemstone/ECS/EntityPath.cs | 233 ----- src/gaemstone/ECS/EntityRef.cs | 169 ---- src/gaemstone/ECS/EntityType.cs | 25 - src/gaemstone/ECS/Filter.cs | 87 -- src/gaemstone/ECS/FilterExtensions.cs | 16 + src/gaemstone/ECS/Game.cs | 2 +- src/gaemstone/ECS/Identifier.cs | 54 -- src/gaemstone/ECS/IdentifierRef.cs | 41 - src/gaemstone/ECS/Iterator.cs | 116 --- src/gaemstone/ECS/Module.cs | 6 +- src/gaemstone/ECS/Observer.cs | 32 +- src/gaemstone/ECS/Query.cs | 46 - src/gaemstone/ECS/Relation.cs | 22 - src/gaemstone/ECS/Rule.cs | 31 - src/gaemstone/ECS/System.cs | 71 +- src/gaemstone/ECS/Term.cs | 116 --- src/gaemstone/ECS/Universe+Lookup.cs | 63 -- src/gaemstone/ECS/Universe.cs | 51 -- src/gaemstone/Flecs/Core.cs | 53 +- src/gaemstone/Flecs/DeletionEvent.cs | 4 +- src/gaemstone/Flecs/Doc.cs | 81 ++ src/gaemstone/Flecs/FlecsException.cs | 36 - src/gaemstone/Flecs/ObserverEvent.cs | 2 +- src/gaemstone/Flecs/Pipeline.cs | 2 +- src/gaemstone/Flecs/SystemPhase.cs | 2 +- src/gaemstone/Flecs/Systems/Monitor.cs | 4 +- src/gaemstone/Flecs/Systems/Rest.cs | 6 +- src/gaemstone/{ECS => }/Universe+Modules.cs | 188 ++-- src/gaemstone/Universe.cs | 35 + src/gaemstone/Utility/Allocators.cs | 167 ---- src/gaemstone/Utility/CStringExtensions.cs | 34 - .../Utility/CallbackContextHelper.cs | 14 - src/gaemstone/Utility/CollectionExtensions.cs | 6 - .../Utility/IL/IterActionGenerator.cs | 78 +- src/gaemstone/Utility/SpanToRef.cs | 19 - src/gaemstone/gaemstone.csproj | 4 +- 84 files changed, 2818 insertions(+), 2256 deletions(-) delete mode 160000 src/flecs-cs create mode 100644 src/gaemstone.Client/Resources/ForkAwesome.ttf create mode 100644 src/gaemstone.Client/Resources/LICENSE_ForkAwesome.txt create mode 100644 src/gaemstone.Client/Resources/LICENSE_OpenSans.txt create mode 100644 src/gaemstone.Client/Resources/OpenSans.Bold.ttf create mode 100644 src/gaemstone.Client/Resources/OpenSans.Italic.ttf create mode 100644 src/gaemstone.Client/Resources/OpenSans.ttf create mode 100644 src/gaemstone.Client/Systems/EntityInspector.cs create mode 100644 src/gaemstone.Client/Systems/ImGuiDemoWindow.cs create mode 100644 src/gaemstone.Client/Utility/ForkAwesome.cs create mode 100644 src/gaemstone.Client/Utility/ImGuiUtility.cs create mode 160000 src/gaemstone.ECS create mode 100644 src/gaemstone/Doc.cs delete mode 100644 src/gaemstone/ECS/Component.cs delete mode 100644 src/gaemstone/ECS/ComponentHooks.cs delete mode 100644 src/gaemstone/ECS/Entity.cs delete mode 100644 src/gaemstone/ECS/EntityBase.cs delete mode 100644 src/gaemstone/ECS/EntityBuilder.cs delete mode 100644 src/gaemstone/ECS/EntityPath.cs delete mode 100644 src/gaemstone/ECS/EntityRef.cs delete mode 100644 src/gaemstone/ECS/EntityType.cs delete mode 100644 src/gaemstone/ECS/Filter.cs create mode 100644 src/gaemstone/ECS/FilterExtensions.cs delete mode 100644 src/gaemstone/ECS/Identifier.cs delete mode 100644 src/gaemstone/ECS/IdentifierRef.cs delete mode 100644 src/gaemstone/ECS/Iterator.cs delete mode 100644 src/gaemstone/ECS/Query.cs delete mode 100644 src/gaemstone/ECS/Relation.cs delete mode 100644 src/gaemstone/ECS/Rule.cs delete mode 100644 src/gaemstone/ECS/Term.cs delete mode 100644 src/gaemstone/ECS/Universe+Lookup.cs delete mode 100644 src/gaemstone/ECS/Universe.cs create mode 100644 src/gaemstone/Flecs/Doc.cs delete mode 100644 src/gaemstone/Flecs/FlecsException.cs rename src/gaemstone/{ECS => }/Universe+Modules.cs (50%) create mode 100644 src/gaemstone/Universe.cs delete mode 100644 src/gaemstone/Utility/Allocators.cs delete mode 100644 src/gaemstone/Utility/CStringExtensions.cs delete mode 100644 src/gaemstone/Utility/CallbackContextHelper.cs delete mode 100644 src/gaemstone/Utility/SpanToRef.cs diff --git a/.editorconfig b/.editorconfig index 5e91147..c9e2b95 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,8 +14,10 @@ indent_size = 4 dotnet_diagnostic.IDE0005.severity = suggestion # IDE0047: Parentheses can be removed dotnet_diagnostic.IDE0047.severity = none +# IDE0055: Fix formatting +dotnet_diagnostic.IDE0055.severity = none -[src/{FastNoiseLite,flecs-cs}/**] +[src/{FastNoiseLite,ImGui.NET}/**] # Suppress compiler and analyer warnings in dependencies. dotnet_analyzer_diagnostic.severity = none dotnet_diagnostic.IDE0005.severity = none diff --git a/.gitmodules b/.gitmodules index 8a9c26f..5d071b1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ -[submodule "src/flecs-cs"] - path = src/flecs-cs - url = https://github.com/flecs-hub/flecs-cs [submodule "src/FastNoiseLite"] path = src/FastNoiseLite url = https://github.com/Auburn/FastNoiseLite.git +[submodule "src/gaemstone.ECS"] + path = src/gaemstone.ECS + url = https://git.mcft.net/copygirl/gaemstone.ECS.git diff --git a/gaemstone.sln b/gaemstone.sln index ff837b3..45da22d 100644 --- a/gaemstone.sln +++ b/gaemstone.sln @@ -1,48 +1,55 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30114.105 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{599B7E67-7F73-4301-A9C6-E8DF286A2625}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gaemstone.Bloxel", "src\gaemstone.Bloxel\gaemstone.Bloxel.csproj", "{7A80D49C-6768-4803-9866-691C7AD80817}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gaemstone.Client", "src\gaemstone.Client\gaemstone.Client.csproj", "{67B9B2D4-FCB7-4642-B584-A0186CAB2969}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gaemstone", "src\gaemstone\gaemstone.csproj", "{7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Immersion", "src\Immersion\Immersion.csproj", "{4B9C20F6-0793-4E85-863A-2E14230A028F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7A80D49C-6768-4803-9866-691C7AD80817}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7A80D49C-6768-4803-9866-691C7AD80817}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A80D49C-6768-4803-9866-691C7AD80817}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7A80D49C-6768-4803-9866-691C7AD80817}.Release|Any CPU.Build.0 = Release|Any CPU - {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Debug|Any CPU.Build.0 = Debug|Any CPU - {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Release|Any CPU.ActiveCfg = Release|Any CPU - {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Release|Any CPU.Build.0 = Release|Any CPU - {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Release|Any CPU.Build.0 = Release|Any CPU - {4B9C20F6-0793-4E85-863A-2E14230A028F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B9C20F6-0793-4E85-863A-2E14230A028F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B9C20F6-0793-4E85-863A-2E14230A028F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B9C20F6-0793-4E85-863A-2E14230A028F}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {7A80D49C-6768-4803-9866-691C7AD80817} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} - {67B9B2D4-FCB7-4642-B584-A0186CAB2969} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} - {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} - {4B9C20F6-0793-4E85-863A-2E14230A028F} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{599B7E67-7F73-4301-A9C6-E8DF286A2625}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gaemstone.Bloxel", "src\gaemstone.Bloxel\gaemstone.Bloxel.csproj", "{7A80D49C-6768-4803-9866-691C7AD80817}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gaemstone.Client", "src\gaemstone.Client\gaemstone.Client.csproj", "{67B9B2D4-FCB7-4642-B584-A0186CAB2969}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gaemstone.ECS", "src\gaemstone.ECS\gaemstone.ECS.csproj", "{EB4F82C0-1BDF-4404-84FB-F0A4E1E4DA67}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gaemstone", "src\gaemstone\gaemstone.csproj", "{7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Immersion", "src\Immersion\Immersion.csproj", "{4B9C20F6-0793-4E85-863A-2E14230A028F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7A80D49C-6768-4803-9866-691C7AD80817}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7A80D49C-6768-4803-9866-691C7AD80817}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7A80D49C-6768-4803-9866-691C7AD80817}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7A80D49C-6768-4803-9866-691C7AD80817}.Release|Any CPU.Build.0 = Release|Any CPU + {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67B9B2D4-FCB7-4642-B584-A0186CAB2969}.Release|Any CPU.Build.0 = Release|Any CPU + {EB4F82C0-1BDF-4404-84FB-F0A4E1E4DA67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB4F82C0-1BDF-4404-84FB-F0A4E1E4DA67}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB4F82C0-1BDF-4404-84FB-F0A4E1E4DA67}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB4F82C0-1BDF-4404-84FB-F0A4E1E4DA67}.Release|Any CPU.Build.0 = Release|Any CPU + {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0}.Release|Any CPU.Build.0 = Release|Any CPU + {4B9C20F6-0793-4E85-863A-2E14230A028F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B9C20F6-0793-4E85-863A-2E14230A028F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B9C20F6-0793-4E85-863A-2E14230A028F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B9C20F6-0793-4E85-863A-2E14230A028F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {7A80D49C-6768-4803-9866-691C7AD80817} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} + {67B9B2D4-FCB7-4642-B584-A0186CAB2969} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} + {EB4F82C0-1BDF-4404-84FB-F0A4E1E4DA67} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} + {7744A8A5-7D9A-474C-BC24-1CF0A8CB7EC0} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} + {4B9C20F6-0793-4E85-863A-2E14230A028F} = {599B7E67-7F73-4301-A9C6-E8DF286A2625} + EndGlobalSection +EndGlobal diff --git a/src/Immersion/Immersion.csproj b/src/Immersion/Immersion.csproj index f96793f..732fd8b 100644 --- a/src/Immersion/Immersion.csproj +++ b/src/Immersion/Immersion.csproj @@ -15,6 +15,7 @@ + diff --git a/src/Immersion/ObserverTest.cs b/src/Immersion/ObserverTest.cs index b2fceb0..48d1582 100644 --- a/src/Immersion/ObserverTest.cs +++ b/src/Immersion/ObserverTest.cs @@ -11,7 +11,7 @@ namespace Immersion; public class ObserverTest { [Observer] - [Expression("[in] Chunk, [none] (Mesh, *)")] + [Expression("[in] Chunk, [none] (MeshHandle, *)")] public static void DoObserver(in Chunk chunk) => Console.WriteLine($"Chunk at {chunk.Position} now has a Mesh!"); } diff --git a/src/Immersion/Program.cs b/src/Immersion/Program.cs index d522861..3a234ea 100644 --- a/src/Immersion/Program.cs +++ b/src/Immersion/Program.cs @@ -1,12 +1,12 @@ using System; using System.Diagnostics; using System.Globalization; +using System.Numerics; using System.Threading; +using gaemstone; using gaemstone.Bloxel; using gaemstone.ECS; -using gaemstone.Flecs; using gaemstone.Utility; -using Silk.NET.Maths; using Silk.NET.Windowing; using static gaemstone.Bloxel.Components.CoreComponents; using static gaemstone.Client.Components.CameraComponents; @@ -20,9 +20,8 @@ var culture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentCulture = culture; CultureInfo.DefaultThreadCurrentCulture = culture; -FlecsAbortException.SetupHook(); var universe = new Universe(); -var game = universe.LookupOrThrow(); +var game = universe.LookupByTypeOrThrow(); universe.Modules.Register(); universe.Modules.Register(); @@ -43,6 +42,7 @@ universe.Modules.Register(); universe.Modules.Register(); universe.Modules.Register(); universe.Modules.Register(); +universe.Modules.Register(); universe.Modules.Register(); universe.Modules.Register(); @@ -51,6 +51,7 @@ universe.Modules.Register(); universe.Modules.Register(); universe.Modules.Register(); universe.Modules.Register(); +universe.Modules.Register(); universe.Modules.Register(); universe.Modules.Register(); @@ -60,7 +61,7 @@ game.Set(new GameWindow(window)); universe.New("MainCamera") .Set(Camera.Default3D) - .Set((GlobalTransform) Matrix4X4.CreateTranslation(0.0F, 2.0F, 0.0F)) + .Set((GlobalTransform)Matrix4x4.CreateTranslation(0.0F, 2.0F, 0.0F)) .Set(new CameraController { MouseSensitivity = 12.0F }) .Build(); @@ -71,8 +72,8 @@ var entities = universe.New("Entities").Build(); var rnd = new Random(); for (var x = -12; x <= 12; x++) for (var z = -12; z <= 12; z++) { - var position = Matrix4X4.CreateTranslation(x * 2, 0.0F, z * 2); - var rotation = Matrix4X4.CreateRotationY(rnd.NextFloat(MathF.PI * 2)); + var position = Matrix4x4.CreateTranslation(x * 2, 0.0F, z * 2); + var rotation = Matrix4x4.CreateRotationY(rnd.NextFloat(MathF.PI * 2)); var (type, mesh) = rnd.Pick(("Heart", heartMesh), ("Sword", swordMesh)); entities.NewChild() .Set((GlobalTransform)(rotation * position)) @@ -98,7 +99,7 @@ for (var cz = -sizeH; cz < sizeH; cz++) { var pos = new ChunkPos(cx, cy - 2, cz); var storage = new ChunkStoreBlocks(); chunks.NewChild() - .Set((GlobalTransform)Matrix4X4.CreateTranslation(pos.GetOrigin())) + .Set((GlobalTransform)Matrix4x4.CreateTranslation(pos.GetOrigin())) .Set(new Chunk(pos)) .Set(storage) .Add(texture) diff --git a/src/flecs-cs b/src/flecs-cs deleted file mode 160000 index a204798..0000000 --- a/src/flecs-cs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a2047983917aa462a8c2f34d5315aea48502f4d8 diff --git a/src/gaemstone.Bloxel/BlockFacing.cs b/src/gaemstone.Bloxel/BlockFacing.cs index 3982b1b..8957106 100644 --- a/src/gaemstone.Bloxel/BlockFacing.cs +++ b/src/gaemstone.Bloxel/BlockFacing.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Immutable; -using Silk.NET.Maths; +using System.Numerics; namespace gaemstone.Bloxel; @@ -47,14 +47,14 @@ public static class BlockFacingExtensions public static BlockFacing GetOpposite(this BlockFacing self) => (BlockFacing)((int)self ^ 0b1); - public static Vector3D ToVector3(this BlockFacing self) + public static Vector3 ToVector3(this BlockFacing self) => self switch { - BlockFacing.East => Vector3D.UnitX, - BlockFacing.West => -Vector3D.UnitX, - BlockFacing.Up => Vector3D.UnitY, - BlockFacing.Down => -Vector3D.UnitY, - BlockFacing.South => Vector3D.UnitZ, - BlockFacing.North => -Vector3D.UnitZ, + BlockFacing.East => Vector3.UnitX, + BlockFacing.West => -Vector3.UnitX, + BlockFacing.Up => Vector3.UnitY, + BlockFacing.Down => -Vector3.UnitY, + BlockFacing.South => Vector3.UnitZ, + BlockFacing.North => -Vector3.UnitZ, _ => throw new ArgumentException( $"'{self}' is not a valid BlockFacing", nameof(self)) }; diff --git a/src/gaemstone.Bloxel/BlockPos.cs b/src/gaemstone.Bloxel/BlockPos.cs index cfb093e..ef42540 100644 --- a/src/gaemstone.Bloxel/BlockPos.cs +++ b/src/gaemstone.Bloxel/BlockPos.cs @@ -1,5 +1,5 @@ using System; -using Silk.NET.Maths; +using System.Numerics; namespace gaemstone.Bloxel; @@ -15,8 +15,8 @@ public readonly struct BlockPos public BlockPos(int x, int y, int z) => (X, Y, Z) = (x, y, z); public void Deconstruct(out int x, out int y, out int z) => (x, y, z) = (X, Y, Z); - public Vector3D GetOrigin() => new(X, Y, Z); - public Vector3D GetCenter() => new(X + 0.5f, Y + 0.5f, Z + 0.5f); + public Vector3 GetOrigin() => new(X, Y, Z); + public Vector3 GetCenter() => new(X + 0.5f, Y + 0.5f, Z + 0.5f); public BlockPos Add(int x, int y, int z) => new(X + x, Y + y, Z + z); @@ -70,6 +70,6 @@ public readonly struct BlockPos public static class BlockPosExtensions { - public static BlockPos ToBlockPos(this Vector3D self) + public static BlockPos ToBlockPos(this Vector3 self) => new((int)MathF.Floor(self.X), (int)MathF.Floor(self.Y), (int)MathF.Floor(self.Z)); } diff --git a/src/gaemstone.Bloxel/ChunkPos.cs b/src/gaemstone.Bloxel/ChunkPos.cs index 1234afe..5e3e6b5 100644 --- a/src/gaemstone.Bloxel/ChunkPos.cs +++ b/src/gaemstone.Bloxel/ChunkPos.cs @@ -1,5 +1,5 @@ using System; -using Silk.NET.Maths; +using System.Numerics; using static gaemstone.Bloxel.Constants; namespace gaemstone.Bloxel; @@ -16,9 +16,9 @@ public readonly struct ChunkPos public ChunkPos(int x, int y, int z) => (X, Y, Z) = (x, y, z); public void Deconstruct(out int x, out int y, out int z) => (x, y, z) = (X, Y, Z); - public Vector3D GetOrigin() => new( + public Vector3 GetOrigin() => new( X << ChunkBitShift, Y << ChunkBitShift, Z << ChunkBitShift); - public Vector3D GetCenter() => new( + public Vector3 GetCenter() => new( (X << ChunkBitShift) + ChunkLength / 2, (Y << ChunkBitShift) + ChunkLength / 2, (Z << ChunkBitShift) + ChunkLength / 2); @@ -66,7 +66,7 @@ public readonly struct ChunkPos public static class ChunkPosExtensions { - public static ChunkPos ToChunkPos(this Vector3D pos) => new( + public static ChunkPos ToChunkPos(this Vector3 pos) => new( (int)MathF.Floor(pos.X) >> ChunkBitShift, (int)MathF.Floor(pos.Y) >> ChunkBitShift, (int)MathF.Floor(pos.Z) >> ChunkBitShift); diff --git a/src/gaemstone.Bloxel/Client/Systems/ChunkMeshGenerator.cs b/src/gaemstone.Bloxel/Client/Systems/ChunkMeshGenerator.cs index 45350a3..be81e2d 100644 --- a/src/gaemstone.Bloxel/Client/Systems/ChunkMeshGenerator.cs +++ b/src/gaemstone.Bloxel/Client/Systems/ChunkMeshGenerator.cs @@ -1,7 +1,7 @@ using System; +using System.Numerics; using gaemstone.Client.Systems; using gaemstone.ECS; -using Silk.NET.Maths; using static gaemstone.Bloxel.Components.CoreComponents; using static gaemstone.Client.Components.RenderingComponents; using static gaemstone.Client.Components.ResourceComponents; @@ -14,13 +14,13 @@ public class ChunkMeshGenerator { private const int StartingCapacity = 1024; - private static readonly Vector3D[][] OffsetPerFacing = { - new Vector3D[]{ new(1,1,1), new(1,0,1), new(1,0,0), new(1,1,0) }, // East (+X) - new Vector3D[]{ new(0,1,0), new(0,0,0), new(0,0,1), new(0,1,1) }, // West (-X) - new Vector3D[]{ new(1,1,0), new(0,1,0), new(0,1,1), new(1,1,1) }, // Up (+Y) - new Vector3D[]{ new(1,0,1), new(0,0,1), new(0,0,0), new(1,0,0) }, // Down (-Y) - new Vector3D[]{ new(0,1,1), new(0,0,1), new(1,0,1), new(1,1,1) }, // South (+Z) - new Vector3D[]{ new(1,1,0), new(1,0,0), new(0,0,0), new(0,1,0) } // North (-Z) + private static readonly Vector3[][] OffsetPerFacing = { + new Vector3[]{ new(1,1,1), new(1,0,1), new(1,0,0), new(1,1,0) }, // East (+X) + new Vector3[]{ new(0,1,0), new(0,0,0), new(0,0,1), new(0,1,1) }, // West (-X) + new Vector3[]{ new(1,1,0), new(0,1,0), new(0,1,1), new(1,1,1) }, // Up (+Y) + new Vector3[]{ new(1,0,1), new(0,0,1), new(0,0,0), new(1,0,0) }, // Down (-Y) + new Vector3[]{ new(0,1,1), new(0,0,1), new(1,0,1), new(1,1,1) }, // South (+Z) + new Vector3[]{ new(1,1,0), new(1,0,0), new(0,0,0), new(0,1,0) } // North (-Z) }; private static readonly int[] TriangleIndices @@ -28,9 +28,9 @@ public class ChunkMeshGenerator private ushort[] _indices = new ushort[StartingCapacity]; - private Vector3D[] _vertices = new Vector3D[StartingCapacity]; - private Vector3D[] _normals = new Vector3D[StartingCapacity]; - private Vector2D[] _uvs = new Vector2D[StartingCapacity]; + private Vector3[] _vertices = new Vector3[StartingCapacity]; + private Vector3[] _normals = new Vector3[StartingCapacity]; + private Vector2[] _uvs = new Vector2[StartingCapacity]; [System] [Expression("[in] Chunk, ChunkStoreBlocks, HasBasicWorldGeneration, !(Mesh, *)")] @@ -48,8 +48,8 @@ public class ChunkMeshGenerator // TODO: We'll need a way to get neighbors again. // var storages = new ChunkStoreBlocks[3, 3, 3]; // foreach (var (x, y, z) in Neighbors.ALL.Prepend(Neighbor.None)) - // if (_chunkStore.TryGetEntityID(chunkPos.Add(x, y, z), out var neighborID)) - // if (_storageStore.TryGet(neighborID, out var storage)) + // if (_chunkStore.TryGetEntityId(chunkPos.Add(x, y, z), out var neighborId)) + // if (_storageStore.TryGet(neighborId, out var storage)) // storages[x+1, y+1, z+1] = storage; // var centerStorage = storages[1, 1, 1]; @@ -61,11 +61,11 @@ public class ChunkMeshGenerator for (var x = 0; x < 16; x++) for (var y = 0; y < 16; y++) for (var z = 0; z < 16; z++) { - var block = universe.Lookup(centerBlocks[x, y, z]); + var block = universe.LookupAlive(centerBlocks[x, y, z]); if (block == null) continue; - var blockVertex = new Vector3D(x, y, z); - var textureCell = block.Get(); + var blockVertex = new Vector3(x, y, z); + var textureCell = block.GetOrThrow(); foreach (var facing in BlockFacings.All) { if (!IsNeighborEmpty(storages, x, y, z, facing)) continue; @@ -99,7 +99,7 @@ public class ChunkMeshGenerator } // TODO: Should dynamically generating meshes require getting GL this way? - var GL = universe.LookupOrThrow().Get().GL; + var GL = universe.LookupByTypeOrThrow().GetOrThrow().GL; return (indexCount > 0) ? MeshManager.Create(GL, _indices.AsSpan(0, indexCount), _vertices.AsSpan(0, vertexCount), diff --git a/src/gaemstone.Bloxel/Components/CoreComponents.cs b/src/gaemstone.Bloxel/Components/CoreComponents.cs index d1ea141..2fd60ef 100644 --- a/src/gaemstone.Bloxel/Components/CoreComponents.cs +++ b/src/gaemstone.Bloxel/Components/CoreComponents.cs @@ -5,14 +5,14 @@ namespace gaemstone.Bloxel.Components; [Module] public partial class CoreComponents { - [Component] + [Symbol, Component] public readonly struct Chunk { public ChunkPos Position { get; } public Chunk(ChunkPos pos) => Position = pos; } - [Component] + [Symbol, Component] public class ChunkStoreBlocks : ChunkPaletteStorage { diff --git a/src/gaemstone.Bloxel/Neighbor.cs b/src/gaemstone.Bloxel/Neighbor.cs index c16b084..a71bc4c 100644 --- a/src/gaemstone.Bloxel/Neighbor.cs +++ b/src/gaemstone.Bloxel/Neighbor.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Immutable; +using System.Numerics; using System.Text; -using Silk.NET.Maths; namespace gaemstone.Bloxel; @@ -174,7 +174,7 @@ public static class NeighborExtensions public static BlockPos ToProperPos(this Neighbor self) { var (x, y, z) = self; return new(x, y, z); } - public static Vector3D ToVector3(this Neighbor self) + public static Vector3 ToVector3(this Neighbor self) { var (x, y, z) = self; return new(x, y, z); } diff --git a/src/gaemstone.Bloxel/Systems/BasicWorldGenerator.cs b/src/gaemstone.Bloxel/Systems/BasicWorldGenerator.cs index 25bad8d..b3ea9d0 100644 --- a/src/gaemstone.Bloxel/Systems/BasicWorldGenerator.cs +++ b/src/gaemstone.Bloxel/Systems/BasicWorldGenerator.cs @@ -1,5 +1,6 @@ using System; using gaemstone.ECS; +using gaemstone.Utility; using static gaemstone.Bloxel.Components.CoreComponents; using static gaemstone.Bloxel.Constants; @@ -10,6 +11,7 @@ namespace gaemstone.Bloxel.Systems; public class BasicWorldGenerator { private readonly FastNoiseLite _noise; + private readonly Random _rnd = new(); public BasicWorldGenerator() { @@ -20,24 +22,26 @@ public class BasicWorldGenerator _noise.SetFractalGain(0.6f); } - [Tag] + [Symbol, Tag] public struct HasBasicWorldGeneration { } [System] - public void Populate(Universe universe, EntityRef entity, + public void Populate(World world, EntityRef entity, in Chunk chunk, ChunkStoreBlocks blocks, [Not] HasBasicWorldGeneration _) { - var stone = universe.LookupOrThrow("Stone"); - for (var lx = 0; lx < ChunkLength; lx++) - for (var ly = 0; ly < ChunkLength; ly++) - for (var lz = 0; lz < ChunkLength; lz++) { - var gx = chunk.Position.X << ChunkBitShift | lx; - var gy = chunk.Position.Y << ChunkBitShift | ly; - var gz = chunk.Position.Z << ChunkBitShift | lz; - var bias = Math.Clamp(gy / 32.0f + 1.0f, 0.0f, 1.0f); - if (_noise.GetNoise(gx, gy, gz) > bias) - blocks[lx, ly, lz] = stone; + var stone = world.LookupByPathOrThrow("Stone"); + var dirt = world.LookupByPathOrThrow("Dirt"); + var grass = world.LookupByPathOrThrow("Grass"); + for (var localX = 0; localX < ChunkLength; localX++) + for (var localY = 0; localY < ChunkLength; localY++) + for (var localZ = 0; localZ < ChunkLength; localZ++) { + var globalX = chunk.Position.X << ChunkBitShift | localX; + var globalY = chunk.Position.Y << ChunkBitShift | localY; + var globalZ = chunk.Position.Z << ChunkBitShift | localZ; + var bias = Math.Clamp((globalY / 32.0f + 1.0f), 0.0f, 1.0f); + if (_noise.GetNoise(globalX, globalY, globalZ) > bias) + blocks[localX, localY, localZ] = _rnd.Pick(stone, dirt, grass); } entity.Add(); } diff --git a/src/gaemstone.Bloxel/Utility/ChunkedOctree.cs b/src/gaemstone.Bloxel/Utility/ChunkedOctree.cs index 103c455..8e61c50 100644 --- a/src/gaemstone.Bloxel/Utility/ChunkedOctree.cs +++ b/src/gaemstone.Bloxel/Utility/ChunkedOctree.cs @@ -72,7 +72,7 @@ public class ChunkedOctree while (enumerator.MoveNext()) yield return enumerator.Current; } - public sealed class Enumerator + public class Enumerator : IEnumerator<(ChunkPos ChunkPos, T Value, float Weight)> { private readonly ChunkedOctree _octree; diff --git a/src/gaemstone.Bloxel/gaemstone.Bloxel.csproj b/src/gaemstone.Bloxel/gaemstone.Bloxel.csproj index 6f48946..36abede 100644 --- a/src/gaemstone.Bloxel/gaemstone.Bloxel.csproj +++ b/src/gaemstone.Bloxel/gaemstone.Bloxel.csproj @@ -14,6 +14,11 @@ + + + + + diff --git a/src/gaemstone.Client/Color.cs b/src/gaemstone.Client/Color.cs index 721c857..4b96c27 100644 --- a/src/gaemstone.Client/Color.cs +++ b/src/gaemstone.Client/Color.cs @@ -1,8 +1,9 @@ using System; using System.Diagnostics.CodeAnalysis; -using System.Runtime.CompilerServices; +using System.Globalization; +using System.Numerics; using System.Runtime.InteropServices; -using Silk.NET.Maths; +using System.Text.RegularExpressions; namespace gaemstone.Client; @@ -11,8 +12,8 @@ public readonly struct Color : IEquatable { public static readonly Color Transparent = default; - public static readonly Color Black = FromRGB(0x000000); - public static readonly Color White = FromRGB(0xFFFFFF); + public static readonly Color Black = FromRGB(0.0f, 0.0f, 0.0f); + public static readonly Color White = FromRGB(1.0f, 1.0f, 1.0f); [FieldOffset(0)] public readonly uint RGBA; @@ -26,19 +27,62 @@ public readonly struct Color [FieldOffset(3)] public readonly byte A; - private Color(uint rgba) - { Unsafe.SkipInit(out this); RGBA = rgba; } + private Color(uint rgba) => RGBA = rgba; private Color(byte r, byte g, byte b, byte a) - { Unsafe.SkipInit(out this); R = r; G = g; B = b; A = a; } + { R = r; G = g; B = b; A = a; } - public static Color FromRGBA(uint rgba) => new(rgba); - public static Color FromRGBA(byte r, byte g, byte b, byte a) => new(r, g, b, a); + public static Color FromRGBA(uint value) => new((byte)(value >> 24), (byte)(value >> 16), (byte)(value >> 8), (byte)value); + public static Color FromRGBA(float r, float g, float b, float a = 1.0f) => new(F2B(r), F2B(g), F2B(b), F2B(a)); + public static Color FromRGBA(Vector4 vec) => FromRGBA(vec.X, vec.Y, vec.Z, vec.W); - public static Color FromRGB(uint rgb) => new(rgb | 0xFF000000); - public static Color FromRGB(byte r, byte g, byte b) => new(r, g, b, 0xFF); + public static Color FromRGB(uint value) => new((byte)(value >> 16), (byte)(value >> 8), (byte)value, 0xFF); + public static Color FromRGB(float r, float g, float b) => new(F2B(r), F2B(g), F2B(b), 0xFF); + public static Color FromRGB(Vector3 vec) => FromRGB(vec.X, vec.Y, vec.Z); - public static Color FromGrayscale(byte gray) => new(gray, gray, gray, 0xFF); - public static Color FromGrayscale(byte gray, byte alpha) => new(gray, gray, gray, alpha); + public static Color FromGrayscale(float value, float alpha = 1.0f) => FromRGBA(value, value, value, alpha); + + public static Color FromHSV(float hue, float saturation, float value, float alpha = 1.0f) + { + if (saturation <= 0.0f) return FromGrayscale(value, alpha); + + var h = (((hue % 360f) + 360f) % 360f) / 60f; + var s = Math.Clamp(saturation, 0.0f, 1.0f); + var v = Math.Clamp(value , 0.0f, 1.0f); + var f = h % 1f; + var p = v * (1.0f - s); + var q = v * (1.0f - s * f); + var t = v * (1.0f - s * (1.0f - f)); + + return (int)h switch { + 0 => FromRGBA(v, t, p, alpha), + 1 => FromRGBA(q, v, p, alpha), + 2 => FromRGBA(p, v, t, alpha), + 3 => FromRGBA(p, q, v, alpha), + 4 => FromRGBA(t, p, v, alpha), + 5 => FromRGBA(v, p, q, alpha), + _ => throw new InvalidOperationException() + }; + } + + private static readonly Regex _hexRegex = new("^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"); + public static Color? TryParseHex(string? str) + { + if (str == null) return null; + var match = _hexRegex.Match(str); + if (!match.Success) return null; + var hex = match.Value.AsSpan()[1..]; + var value = uint.Parse(hex, NumberStyles.HexNumber); + return (hex.Length == 8) ? FromRGBA(value) : FromRGB(value); + } + + public Color WithAlpha(float alpha) + => new(R, G, B, F2B(alpha)); + + public static Color Mix(Color a, Color b, float ratio) + => FromRGBA((B2F(a.R) * (1 - ratio) + B2F(b.R) * ratio) / 2, + (B2F(a.G) * (1 - ratio) + B2F(b.G) * ratio) / 2, + (B2F(a.B) * (1 - ratio) + B2F(b.B) * ratio) / 2, + (B2F(a.A) * (1 - ratio) + B2F(b.A) * ratio) / 2); public bool Equals(Color other) => RGBA == other.RGBA; @@ -46,13 +90,23 @@ public readonly struct Color => (obj is Color color) && Equals(color); public override int GetHashCode() => RGBA.GetHashCode(); - public override string? ToString() + public override string ToString() => $"Color(0x{RGBA:X8})"; + public Vector4 ToVector4() => new(B2F(R), B2F(G), B2F(B), B2F(A)); + public Vector3 ToVector3() => new(B2F(R), B2F(G), B2F(B)); + public string ToHexString() => (A < byte.MaxValue) ? $"#{RGBA:X8}" : $"#{R:X2}{G:X2}{B:X2}"; + public static bool operator ==(Color left, Color right) => left.Equals(right); public static bool operator !=(Color left, Color right) => !left.Equals(right); - public static implicit operator System.Drawing.Color(Color color) => System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B); - public static implicit operator Vector4D(Color color) => new(color.R / 255F, color.G / 255F, color.B / 255F, color.A / 255F); - public static implicit operator Vector4D(Color color) => new(color.R, color.G, color.B, color.A); + public static implicit operator System.Drawing.Color(Color color) + => System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B); + + + /// Converts a float clamped to range [0.0, 1.0] into a byte in range [0, 255]. + private static byte F2B(float f) => (byte)(Math.Clamp(f, 0.0f, 1.0f) * 255); + + /// Converts a byte in range [0, 255] into a float in range [0.0, 1.0]. + private static float B2F(byte b) => b / 255f; } diff --git a/src/gaemstone.Client/Components/CameraComponents.cs b/src/gaemstone.Client/Components/CameraComponents.cs index ba553db..0518c51 100644 --- a/src/gaemstone.Client/Components/CameraComponents.cs +++ b/src/gaemstone.Client/Components/CameraComponents.cs @@ -1,5 +1,5 @@ +using System.Drawing; using gaemstone.ECS; -using Silk.NET.Maths; namespace gaemstone.Client.Components; @@ -27,7 +27,7 @@ public class CameraComponents [Component] public struct CameraViewport { - public Vector4D ClearColor { get; set; } - public Rectangle Viewport { get; set; } + public Color ClearColor { get; set; } + public Rectangle Viewport { get; set; } } } diff --git a/src/gaemstone.Client/Components/InputComponents.cs b/src/gaemstone.Client/Components/InputComponents.cs index 72261a5..d0b137f 100644 --- a/src/gaemstone.Client/Components/InputComponents.cs +++ b/src/gaemstone.Client/Components/InputComponents.cs @@ -7,30 +7,30 @@ namespace gaemstone.Client.Components; [Module] public class InputComponents { - [Entity(Global = true)] + [Symbol, Path("/Input")] [Add] public struct Input { } - [Entity("Input", "Mouse", Global = true)] + [Symbol, Path("/Input/Mouse")] [Add] public struct Mouse { } - [Entity("Input", "Keyboard", Global = true)] + [Symbol, Path("/Input/Keyboard")] [Add] public struct Keyboard { } - [Tag] + [Symbol, Tag] public struct Gamepad { } /// Present on inputs / actions that are currently active. - [Component] public struct Active { public TimeSpan Duration; } + [Symbol, Component] public struct Active { public TimeSpan Duration; } /// Present on inputs / actions were activated this frame. - [Tag] public struct Activated { } + [Symbol, Tag] public struct Activated { } /// Present on inputs / actions were deactivated this frame. - [Tag] public struct Deactivated { } + [Symbol, Tag] public struct Deactivated { } /// @@ -41,7 +41,7 @@ public class InputComponents /// This is set if a UI element is focused that captures /// navigational or text input. /// - [Tag, Relation, Exclusive] + [Symbol, Relation, Tag, Exclusive] public struct InputCapturedBy { } /// @@ -52,7 +52,7 @@ public class InputComponents /// This could for example include the mouse currently being over /// a UI element, preventing the game from handling mouse input. /// - [Tag, Relation, Exclusive] + [Symbol, Relation, Tag, Exclusive] public struct MouseInputCapturedBy { } /// @@ -62,7 +62,7 @@ public class InputComponents /// /// This is set when a camera controller assumes control of the mouse. /// - [Tag, Relation, Exclusive] + [Symbol, Relation, Tag, Exclusive] [With] [With] public struct CursorCapturedBy { } diff --git a/src/gaemstone.Client/Components/RenderingComponents.cs b/src/gaemstone.Client/Components/RenderingComponents.cs index 1ab7603..bd605e1 100644 --- a/src/gaemstone.Client/Components/RenderingComponents.cs +++ b/src/gaemstone.Client/Components/RenderingComponents.cs @@ -1,6 +1,6 @@ using System.Drawing; +using System.Numerics; using gaemstone.ECS; -using Silk.NET.Maths; using Silk.NET.OpenGL; namespace gaemstone.Client.Components; @@ -8,7 +8,7 @@ namespace gaemstone.Client.Components; [Module] public class RenderingComponents { - [Component] + [Symbol, Component] public readonly struct MeshHandle { public uint Handle { get; } @@ -19,7 +19,7 @@ public class RenderingComponents { Handle = handle; Count = count; IsIndexed = indexed; } } - [Component] + [Symbol, Component] public readonly struct TextureHandle { public TextureTarget Target { get; } @@ -29,13 +29,13 @@ public class RenderingComponents => (Target, Handle) = (target, handle); } - [Component] + [Symbol, Component] public readonly struct TextureCoords4 { - public Vector2D TopLeft { get; } - public Vector2D TopRight { get; } - public Vector2D BottomLeft { get; } - public Vector2D BottomRight { get; } + public Vector2 TopLeft { get; } + public Vector2 TopRight { get; } + public Vector2 BottomLeft { get; } + public Vector2 BottomRight { get; } public TextureCoords4(float x1, float y1, float x2, float y2) { diff --git a/src/gaemstone.Client/Components/ResourceComponents.cs b/src/gaemstone.Client/Components/ResourceComponents.cs index dcb566a..148a3e7 100644 --- a/src/gaemstone.Client/Components/ResourceComponents.cs +++ b/src/gaemstone.Client/Components/ResourceComponents.cs @@ -5,7 +5,7 @@ namespace gaemstone.Client.Components; [Module] public class ResourceComponents { - [Tag] + [Symbol, Tag] public struct Resource { } // Entities can have for example Texture as a tag, in which case @@ -14,9 +14,9 @@ public class ResourceComponents // Entities can also have a (Texture, $T) pair where $T is a resource, // meaning the entity has that resource assigned as their texture. - [Relation, Tag, IsA] + [Symbol, Relation, Tag, IsA] public struct Texture { } - [Relation, Tag, IsA] + [Symbol, Relation, Tag, IsA] public struct Mesh { } } diff --git a/src/gaemstone.Client/Resources/ForkAwesome.ttf b/src/gaemstone.Client/Resources/ForkAwesome.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1f1d8f34c4a741f7a4497f5d98924563503e6f9f GIT binary patch literal 219004 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�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

?)`AA>ZrYe2`UGje5_s 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 literal 0 HcmV?d00001 diff --git a/src/gaemstone.Client/Resources/LICENSE_ForkAwesome.txt b/src/gaemstone.Client/Resources/LICENSE_ForkAwesome.txt new file mode 100644 index 0000000..ba28031 --- /dev/null +++ b/src/gaemstone.Client/Resources/LICENSE_ForkAwesome.txt @@ -0,0 +1,95 @@ +Copyright (c) 2018, Fork Awesome (https://forkawesome.github.io), +with Reserved Font Name Fork Awesome. + + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/gaemstone.Client/Resources/LICENSE_OpenSans.txt b/src/gaemstone.Client/Resources/LICENSE_OpenSans.txt new file mode 100644 index 0000000..9b448d4 --- /dev/null +++ b/src/gaemstone.Client/Resources/LICENSE_OpenSans.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Open Sans Project Authors (https://github.com/googlefonts/opensans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/gaemstone.Client/Resources/OpenSans.Bold.ttf b/src/gaemstone.Client/Resources/OpenSans.Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a1398b338084cbaf0e99d89cb6089715baa78a6d GIT binary patch literal 129784 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≤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 z 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

TVG@#@W(NZH&TH-=P1XH84-AMY| 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

=fZ z%QHs~yo;5z2qhW<_96QTcD0@CUUob5?lwaOZvkX(L)joUgiT~;qNCh1>}ovjXK!Im zjKyi&&OvPB03&(#lW)Gh1gN#Eri|eZ>p18mN?WuVy``*0pBviUMQTd*2AvghF(y-6 zb6d&T)90>0cNXiRx~8Hy|Hh@OwL>T?2BHJm4S|9|in6l;AT$i$MB6!! zNoFLmVctFpP_fa&5{2t+%>#^x3r%LLxwok&HwEI-o0B3VBgZ88bDZq35aZE#;7x2b z7jZK#VPpApM6}~;fCA`Cfd65rmx0860qpGy#P#oHlUM>L6Z!;9UCc-_#>bEM#swK3 z>}I%~RrOj%#2;wu9vZA`9(ppT7hz6swwcqf+01FeJR|)}7Te6}Wj1pf>;^U`2vYsf z_J!g{RTr&vbMmS!Ew8R?`0%5T4xcNju5$_s4fl~DW6JoV1?o@_bUphtI&B?ro<}Wr zbULut?_*1;L`5Plad>!uU9K2j05&BH-3PI+?8mtZWGlAMpXpj%Trhvp>bXhd)1i}k z9uo|0*u>kX&C>Mtb@muB3xCCV?1Li1W-N1c1vzcn0=S7UuMKl`jTn_Y*2BZy)!I?p zOsWui269EB!A?XZ{X>mexW4zW3lxovlN7^StpDlLAJV9OWZUBGTCyku>5E{1HxjCw z`c<@ZZ^`u=H!C#QGN7&_avv3$v~EjK&~qfj-nl6q_vW#KsJ07l2nx!W@zkWSuwWl! z+4UlZd*{yO>f99T(~9h$E?>TU^+v(jQzwrfKmPs_R8X(6dSUwC#pdt;K+0X9mVdD4 z*tam=VZXt%B8az_vh8dowvbi`7)-(fcpvwBu=K*kk}^i38K^F5CN#>MA2M9M0it+( znlfs2V4|Nt|7UG(gw{&Hez`*ItaQQbvOuA@wxz0t=zw;CGGrR+>1(TbP*Pgo2hAhK z*EHCpR|T^Wnrv@G>Vh-GiDFqFA2*QDe6be<`ZL_d#uiO(gd?^Cq&9RSP;UVic3U*g z$r)MxzDn=#Fo{qql{@}W-8;DD3gf>hwd|8U(iZ}yBuYnG=ZCMS(gnKgg=3p=(i zOQO7SEp#S@?&_HwaUbm>!g`m*J;g{{nuvre$ms^%0K<)poEZ3I_LH9Gu{N_m)@Js{ zV)p-MeaLv5+3zZ_SHVN^^mZmCm5}`cO-YiwS%5~RI5hior zQ162WO>U#-tX{o(%L^~6U7e~P+_+qD9t-cxPmU_Iew9*vb@!drt`TE`T|o`>j2x9T zVFGjjf^hv@JXLB}uC}jd*kmH*+~D!x5%sJFnyYp#M%N5>)M(+ zwW~!c6LHaD5?K|huAr;FyTfBGM+Qs;q6+2$-YLdBz_;872 zu8BKLxC7>X5oSP;cWDGuif|>EQehl0CHl`5BZ$&MHV>_->4rku z1gu_4_kcv;g6AXq{C{FtlGXn+p7fvR6E>0a$(|<|R!$0a0|0$BoWn)zYvi0mHRPQ4 zMC6?19{)P$|HKv$VnkOx=VgY0Bhh! z0LrQ!qdNb2*8jwj{^zrDA0KWAg+n-M9+(49(5ubt4?wR>R3rJl1`1^O;e!g2C+HPX zx_r%M)v0an=NtH}MCtN1n?1+2YeNbwigqB`h7Wl4R%=D!u zwb#A-4;$J$U)b~f(xlO&MkORfee><%ACE=Fxb_!Z&HFhG+Sm)Nb9wj6+J*;GA%?w` z|K_1XtEiidSV~!FaKRli5ykw5bi`FEkE#U)potq2CK_O9j|J(--~2uj6MiFE>cX-{ zp_5dq`5_fS!Wc@b=Kpr;Vt#pD8n*Vs)H}|bGsY&2jSKht=;Ken_Y~;&C|9S@tvXJ3u80pgpSfMr~I$irsEr$$xMkO?R&rR5m?gsrw9%Z$Ofcky}9KLP`}99Bo~FIyh=p zJ%lq&184(h;h@qP?LG8-wf*FAVcshD;qD>6S6Eo6m&!LCz|TR%_4}zD&Z33e=O80zN0 z<7}ueK%89C0|^iTV3grOSxnNf+J4uX%($>nU+<{Q)##SHZo@N6sGCUfT*fg^;j9PY zP(Og}vFcC=?Vz*}IrpM^Qd#+K-{&$yar@oc z+EyKnV!v|eaq0Sdx^qKUEJ%%Tk?t`BNn^(a2gX0OVD{|A>o-3&ZLF`u z>{(e8;=-`h_T#rx!&DI)Txs`ByG9 zXzyJnll~XX@P8oGJ0XbASPzcc>*>TF2Kab`Iv`w3T}BSRbu_v~WK&P$$Q2c6wJFQW zs;B@YGAYpAODSO{gLpy4dxB>ZWkqMsoKXuu{Ia$FlOI2NBNZ*5dg%lE=ApxbJ))4Z zkH(Hhho;YkO9~#jNVVBuoqAm7#*!tu3f8y{xxoq!ar(aoC@KHMk5Ux z6XAn8VzvL^fW@jAV%fH4lL7QTQubYR?mNSeXY&fc6}VNX!)BfBXa=<(V%}oFa3tqy zMQRsQNgz+RnwOY$EMBYncrHc)LiPJDc5 zsMQ)88Xr$+HqfAVz;O^kG&N`(903}s{dv5=C_8@p0MFXik}x?IX?t<|nfK~%muOUw z>GGDfle_E)De*|NIWp3PC?+|$2DwXl5XwaJM!nD{9DeqbJj)u)H(RCB-8S=WKjzyS z%(pc*^KFfdWsRw-c?2W}&FTh_O#bo6;opA$?weoFUHlVCsw?;I*LDozI<^;HfJi17 zW*4Z-41>fnEphRPjz;TJAA=z}x|MXOg0jBOLKPR6H}&hR2uz%uoJE%2VztbVH;k)b zG!L{I_%u-qdJ~d&FTX&PDBg71y5qSQfW7WsoD^wig2`}8m<^@?k!H>zgR_*{iWAzo zNH|*S)vHP+>f{lO1?|3^w)$fEk4&=V!XB%O_DUwA`eLf&NgV!bb_#V2=XO?c zXshtE&w_&)NTPlA+5ClQvoSF$&dEyc*|TLvpyCno4ONv;*qgLRorW~ZSnGE5K>Npm zH-Dil-~agGKT~09z3GqNpAV6zP^%P7h1>8>$S7j9_pKiN;X zE@VuD0sabaqrc$S@88b$_NHlIuC%u|2Vm=mlAaD8KBTPP%b7&Q5xSm^)+#ENWn>Y!9c&sl<(tvHq1s%X#Z{500b8gsB5s;wS&4AQn$R%=7%Y=2Qnt=oXa!YC^vko)^P4pGRj;RXw}<#~B(acpd;s~GlB z+nHkBjApf2RHt zWKGSOFe+jZ(SkU}TOJ=8v3@$%jhR4EF!&p30WG5)$e_+~Haz{zWGWl}(D!I+IuBds zjS(8Lbl}qA!)h@k(1M5tS08lAA|dMZSOR~q_;$dYIp2MEv0pkfgGl9LoCL00NPEe0 zv*5_@VDs7GkwH|pKL70JW1k;d1G`US3EcoHwF*7RxRypsg{7N~1l8wd_84%hHnxKm zV02*zX&4!=u;W-SOTXoo<+SC3rIO_$EGWSHYr6Q`73j{W{S1a74JjcO$hv_Um$_Trqm=pkjH*C=f7G)Qb>6gp2ZVeQwxu zTUH~LIBy=RMLmt$#Va=NdTq}OFYkEiwY{(HSTSW>{7ZYr#3v>uE`90c5e$m|`tIG& zQ%i6X$T)Do8dUrB_nSDV+CZ6_k2^L!7bk9iKk7k{KZkkl8|>%ubHi57PeM{LG*~Q& z2p4l=$4y_keb<)Fo1fnO;?5;;p7steye1|7S^AD0M5OK${_8Klv;l4v3WoVsG~P6; z{d#*@As1({a=elAmkBI`y}gh)G;4)O#Gnw+?A3b{X_rD5m-?)DL_5;*R zf`VwrleoCKF@8E-TU#HI+%g!WMuD)bgnh?`B;y+!a0hSSu~>7RCr?QMt1o`c)}37g zyZ0ug&zb+!=G`FI@RrV8wD5&A%;THX9eT;sOhiW)Fzv~J5{_uwmR)=I0u_H9CxmBa z?5L|_{9Ij;Qw#=hCgc8m93m`5(u9PjCY?kTF$Vzfb1&Hma)q0BY+SHl!5qj3{Yssu zYg^pIw2ij^u5BqHcq6_Z4z`hpI{OvNph3kpQ10Hxc7+{V(4BwmN*^2@E&v*I-a6 zICoB8sK(0bXx8d;W5Bus3&2Xjd*Uh_IXrj)=ndJ~qt{p!PIgu0M5+yq9kEEzallGd z;^6(ADD=TL;s>^?2xuqDmyid_ z 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 AT>t<8 literal 0 HcmV?d00001 diff --git a/src/gaemstone.Client/Resources/OpenSans.ttf b/src/gaemstone.Client/Resources/OpenSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1dc226ddc00a11a9813844b00fb5edaf87921c38 GIT binary patch literal 129796 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°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 G@Baau^V-P( literal 0 HcmV?d00001 diff --git a/src/gaemstone.Client/Systems/EntityInspector.cs b/src/gaemstone.Client/Systems/EntityInspector.cs new file mode 100644 index 0000000..cb0e0a2 --- /dev/null +++ b/src/gaemstone.Client/Systems/EntityInspector.cs @@ -0,0 +1,763 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using gaemstone.Client.Utility; +using gaemstone.ECS; +using gaemstone.Flecs; +using gaemstone.Utility; +using ImGuiNET; +using static gaemstone.Client.Systems.ImGuiManager; +using Icon = gaemstone.Client.Utility.ForkAwesome; +using ImGuiInternal = ImGuiNET.Internal.ImGui; + +namespace gaemstone.Client.Systems; + +[Module] +[DependsOn] +public class EntityInspector + : IModuleInitializer +{ + [Tag] + public struct InspectorWindow { } + + [Relation, Exclusive] + [Add] + public struct Selected { } + + [Tag] + public struct ScrollToSelected { } + + [Relation] + public struct Expanded { } + + [Component] + public class History + { + public Entry? Current { get; set; } = null; + + public class Entry + { + public Entity Entity { get; } + public EntityPath? Path { get; } + + public Entry? Prev { get; set; } + public Entry? Next { get; set; } + + public Entry(EntityRef entity, Entry? prev, Entry? next) + { + Entity = entity; + Path = entity.GetFullPath(); + if ((Prev = prev) != null) Prev.Next = this; + if ((Next = next) != null) Next.Prev = this; + } + } + } + + + [Component] + public struct DocPriority { public float Value; } + + [Component] + public struct DocIcon { public char Value; } + + + public void Initialize(EntityRef module) + { + void SetDocInfo(string path, float priority, string icon, float r, float g, float b) + => module.World.LookupByPathOrThrow(path) + .Add() + .Set(new DocPriority { Value = priority }) + .Set(new DocIcon { Value = icon[0] }) + .SetDocColor(Color.FromRGB(r, g, b).ToHexString()); + + SetDocInfo("/flecs/core/Module" , 0 , Icon.Archive , 1.0f, 0.9f, 0.7f); + SetDocInfo("/flecs/system/System" , 1 , Icon.Cog , 1.0f, 0.7f, 0.7f); + SetDocInfo("/flecs/core/Observer" , 2 , Icon.Eye , 1.0f, 0.8f, 0.8f); + SetDocInfo("/gaemstone/Doc/Relation" , 3 , Icon.ShareAlt , 0.7f, 1.0f, 0.8f); + SetDocInfo("/flecs/core/Tag" , 4 , Icon.Tag , 0.7f, 0.8f, 1.0f); + SetDocInfo("/flecs/core/Component" , 5 , Icon.PencilSquare , 0.6f, 0.6f, 1.0f); + SetDocInfo("/flecs/core/Prefab" , 6 , Icon.Cube , 0.9f, 0.8f, 1.0f); + } + + + [System] + public void ShowUIButton(World world, ImGuiData _) + { + var hasAnyInspector = false; + var inspectorWindow = world.LookupByTypeOrThrow(); + foreach (var entity in Iterator.FromTerm(world, new(inspectorWindow))) + { hasAnyInspector = true; break; } + + if (ImGuiUtility.UIButton(0, Icon.Search, "Entity Inspector", hasAnyInspector)) + NewEntityInspectorWindow(world); + } + + [System] + public void ShowExplorerWindow(EntityRef window, InspectorWindow _, History? history) + { + var isOpen = true; + var fontSize = ImGui.GetFontSize(); + var viewCenter = ImGui.GetMainViewport().GetCenter(); + ImGui.SetNextWindowPos(viewCenter, ImGuiCond.Appearing, new(0.5f, 0.5f)); + ImGui.SetNextWindowSize(new(fontSize * 40, fontSize * 25), ImGuiCond.Appearing); + ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[1]); + if (ImGui.Begin($"{Icon.Search} Entity Inspector##{window.Id}", + ref isOpen, ImGuiWindowFlags.NoScrollbar)) { + ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[0]); + + var selected = window.GetTargets().FirstOrDefault(); + ActionBarAndPath(window, history, selected); + + ImGui.BeginTable("Views", 2, ImGuiTableFlags.Resizable); + ImGui.TableSetupColumn("Explorer", ImGuiTableColumnFlags.WidthFixed, fontSize * 12); + ImGui.TableSetupColumn("Entity", ImGuiTableColumnFlags.WidthStretch); + + ImGui.TableNextColumn(); + ImGui.BeginChild("ExplorerView", new(-float.Epsilon, -float.Epsilon)); + ExplorerView(window, history, selected); + ImGui.EndChild(); + + void Tab(string name, Action contentMethod) + { + if (!ImGui.BeginTabItem(name)) return; + ImGui.BeginChild($"{name}Tab", new(-float.Epsilon, -float.Epsilon)); + contentMethod(window, history, selected); + ImGui.EndChild(); + ImGui.EndTabItem(); + } + + ImGui.TableNextColumn(); + ImGui.BeginChild("EntityView", new(-float.Epsilon, -float.Epsilon)); + if (!ImGui.BeginTabBar("Tabs")) return; + Tab($"{Icon.PencilSquare} Components", ComponentsTab); + Tab($"{Icon.ShareAlt} References", ReferencesTab); + Tab($"{Icon.InfoCircle} Documentation", DocumentationTab); + ImGui.EndTabBar(); + ImGui.EndChild(); + + ImGui.EndTable(); + + ImGui.PopFont(); + } + ImGui.PopFont(); + ImGui.End(); + + // If window is closed, delete the entity. + if (!isOpen) window.Delete(); + } + + [Observer] + public void ClearStorageOnRemove(EntityRef _1, InspectorWindow _2) + { + // TODO: Clear out settings store for the window. + } + + private void ActionBarAndPath(EntityRef window, History? history, EntityRef? selected) + { + var world = window.World; + + static bool IconButtonWithToolTip(string icon, string tooltip, bool enabled = true) { + if (!enabled) ImGui.BeginDisabled(); + var clicked = ImGui.Button(icon); + if (!enabled) ImGui.EndDisabled(); + if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled)) + ImGui.SetTooltip(tooltip); + return clicked; + } + + ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(2, ImGui.GetStyle().ItemSpacing.Y)); + ImGui.BeginTable("ActionBar", 3); + ImGui.TableSetupColumn("Explorer", ImGuiTableColumnFlags.WidthFixed); + ImGui.TableSetupColumn("Path", ImGuiTableColumnFlags.WidthStretch); + ImGui.TableSetupColumn("Entity", ImGuiTableColumnFlags.WidthFixed); + + ImGui.TableNextColumn(); + var hasExpanded = window.Has(); + if (IconButtonWithToolTip(Icon.Outdent, "Collapse all items in the Explorer View", hasExpanded)) + window.Remove(); + + if (history != null) { + var hasPrev = ((selected != null) ? history.Current?.Prev : history.Current) != null; + var hasNext = history.Current?.Next != null; + ImGui.SameLine(); + if (IconButtonWithToolTip(Icon.ArrowLeft, "Go to the previously viewed entity", hasPrev)) + GoToPrevious(window, history, selected); + ImGui.SameLine(); + if (IconButtonWithToolTip(Icon.ArrowRight, "Go to the next viewed entity", hasNext)) + GoToNext(window, history); + } + + ImGui.SameLine(); + if (IconButtonWithToolTip(Icon.Crosshairs, "Scroll to the current entity in the Explorer View", (selected != null))) + window.Add(); + + ImGui.TableNextColumn(); + var availableWidth = ImGui.GetColumnWidth() - ImGui.GetStyle().CellPadding.X * 2; + PathInput(window, history, selected, availableWidth); + + ImGui.TableNextColumn(); + if (IconButtonWithToolTip(Icon.PlusCircle, "Create a new child entity", (selected != null))) + // FIXME: Replace this once Flecs has been fixed. + SetSelected(window, history, world.New().Build().ChildOf(selected)); + // SelectAndScrollTo(windowEntity, windowData, selected!.NewChild().Build(), selected); + + ImGui.SameLine(); + if (IconButtonWithToolTip(Icon.Pencil, "Rename the current entity", false && (selected != null))) + { } // TODO: Implement this! + + ImGui.SameLine(); + var isDisabled = (selected?.IsDisabled == true); + var icon = !isDisabled ? Icon.BellSlash : Icon.Bell; + var tooltip = $"{(!isDisabled ? "Disable" : "Enable")} the current entity"; + if (IconButtonWithToolTip(icon, tooltip, (selected != null))) + { if (isDisabled) selected!.Enable(); else selected!.Disable(); } + + ImGui.SameLine(); + if (IconButtonWithToolTip(Icon.Trash, "Delete the current entity", (selected != null))) { + SetSelected(window, history, selected!.Parent); + selected.Delete(); // TODO: Confirmation dialog? + } + + ImGui.EndTable(); + ImGui.PopStyleVar(); + } + + private void PathInput(EntityRef window, History? history, EntityRef? selected, float availableWidth) + { + var style = ImGui.GetStyle(); + ImGui.AlignTextToFramePadding(); + ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(1, style.ItemSpacing.Y)); + + var path = selected?.GetFullPath() ?? null; + + if (path != null) { + var visiblePath = path.GetParts().ToList(); + var visiblePathTextSize = ImGui.CalcTextSize(path.ToString()).X + + style.ItemSpacing.X * 2 * (path.Count - 0.5f) + + style.FramePadding.X * 2 * path.Count; + while ((visiblePath.Count > 3) && (visiblePathTextSize > availableWidth)) { + if (visiblePath[1] != "...") { + visiblePathTextSize -= ImGui.CalcTextSize(visiblePath[1]).X - ImGui.CalcTextSize("...").X; + visiblePath[1] = "..."; + } else { + visiblePathTextSize -= ImGui.CalcTextSize(visiblePath[2] + "/").X + + (style.ItemSpacing.X + style.FramePadding.X) * 2; + visiblePath.RemoveAt(2); + } + } + + var numHiddenItems = path.Count - visiblePath.Count; + for (var i = 0; i < visiblePath.Count - 1; i++) { + var actualIndex = (i == 0) ? 0 : i + numHiddenItems; + ImGui.Text("/"); + ImGui.SameLine(); + if (visiblePath[i] == "...") { + ImGui.BeginDisabled(); + ImGui.Button("..."); + ImGui.EndDisabled(); + if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled)) + ImGui.SetTooltip(path[1..(numHiddenItems+2)].ToString()); + } else if (ImGui.Button(visiblePath[i])) + SetSelected(window, history, window.World.LookupByPath(path[..(actualIndex+1)])); + ImGui.SameLine(); + } + } + + ImGui.Text("/"); ImGui.SameLine(); + var name = path?.Name.ToString() ?? ""; + ImGui.SetNextItemWidth(-float.Epsilon); + ImGui.InputText("##Path", ref name, 256); + + ImGui.PopStyleVar(); + } + + private struct EntitySummary + : IComparable + { + public Entity Entity { get; init; } + public SpecialType? Type { get; init; } + public string? Name { get; init; } + public string? DocName { get; init; } + public Color? DocColor { get; init; } + public bool HasChildren { get; init; } + public bool IsExpanded { get; init; } + public bool IsDisabled { get; init; } + + public int CompareTo(EntitySummary other) + { + static int? Compare(T x, T y) { + if (x is null) { if (y is null) return null; else return 1; } + else if (y is null) return -1; + var result = Comparer.Default.Compare(x, y); + return (result != 0) ? result : null; + } + + return Compare(Type, other.Type) + ?? Compare(Name, other.Name) + ?? Compare(DocName, other.DocName) + ?? Compare(Entity.Id, other.Entity.Id) + ?? 0; + } + + public string DisplayName { get { + var name = (DocName != null) ? $"\"{DocName}\"" : Name ?? Entity.Id.ToString(); + if (Type != null) name = $"{DisplayIcon} {name}"; + return name; + } } + + public string? DisplayIcon => Type switch { + SpecialType.Module => Icon.Archive, + SpecialType.System => Icon.Cog, + SpecialType.Relation => Icon.ShareAlt, + SpecialType.Component => Icon.PencilSquare, + SpecialType.Tag => Icon.Tag, + SpecialType.Prefab => Icon.Cube, + _ => null, + }; + + public Color? DisplayColor => DocColor ?? Type switch { + SpecialType.Module => Color.FromRGB(1.0f, 0.9f, 0.7f), + SpecialType.System => Color.FromRGB(1.0f, 0.7f, 0.7f), + SpecialType.Relation => Color.FromRGB(0.7f, 1.0f, 0.8f), + SpecialType.Component => Color.FromRGB(0.6f, 0.6f, 1.0f), + SpecialType.Tag => Color.FromRGB(0.7f, 0.8f, 1.0f), + SpecialType.Prefab => Color.FromRGB(0.9f, 0.8f, 1.0f), + _ => null, + }; + } + + public enum SpecialType + { + Module, + System, + Relation, + Component, + Tag, + Prefab, + } + + private const int MAX_CHILDREN = 64; + private void ExplorerView(EntityRef window, History? history, EntityRef? selected) + { + var Expanded = window.World.LookupByTypeOrThrow(); + + List GetSummaries(Entity? parent) { + var result = new List(); + var expression = $"(ChildOf, {parent?.Id ?? 0})" // Must be child of parent, or root entity. + + ",?(Identifier, Name)" // Name (in hierarchy) + + ",?(flecs.doc.Description, Name)" // DocName (human-readable) + + ",?(flecs.doc.Description, flecs.doc.Color)" // DocColor + + ",[none] ?ChildOf(_, $This)" // HasChildren + + $",?{Expanded.Id}({window.Id}, $This)" // IsExpanded + + ",?Disabled" // IsDisabled + + ",?Module,?flecs.system.System,?gaemstone.Doc.Relation,?Component,?Tag,?Prefab"; // Type + + using (var rule = new Rule(window.World, new(expression))) { + foreach (var iter in rule.Iter()) { + var names = iter.FieldOrEmpty(2); + var docNames = iter.FieldOrEmpty(3); + var docColors = iter.FieldOrEmpty(4); + + var hasChildren = iter.FieldIsSet(5); + var isExpanded = iter.FieldIsSet(6); + var isDisabled = iter.FieldIsSet(7); + + var isModule = iter.FieldIsSet(8); + var isSystem = iter.FieldIsSet(9); + var isRelation = iter.FieldIsSet(10); + var components = iter.FieldOrEmpty(11); + var isTag = iter.FieldIsSet(12); + var isPrefab = iter.FieldIsSet(13); + + for (var i = 0; i < iter.Count; i++) { + // Certain built-in components in Flecs actually have a size of 0, + // thus don't actually hold any value and behave more like tags. + // We pretend they are just tags and mark them as such. + var component = components.GetOrNull(i); + var isComponent = (component?.Size > 0); + var isTagEquiv = (component?.Size == 0) || isTag; + + var type = isModule ? SpecialType.Module + : isSystem ? SpecialType.System + : isRelation ? SpecialType.Relation + : isComponent ? SpecialType.Component + : isTagEquiv ? SpecialType.Tag + : isPrefab ? SpecialType.Prefab + : (SpecialType?)null; + result.Add(new() { + Entity = iter.Entity(i), + Type = type, + Name = names.GetOrNull(i)?.ToString(), + DocName = docNames.GetOrNull(i)?.ToString(), + DocColor = Color.TryParseHex(docColors.GetOrNull(i)?.ToString()), + HasChildren = hasChildren, + IsExpanded = isExpanded, + IsDisabled = isDisabled, + }); + if (result.Count > MAX_CHILDREN) + return result; + } + } + } + + result.Sort(); + return result; + } + + void EntryNode(EntitySummary summary) { + var entity = new EntityRef(window.World, summary.Entity); + var isExpanded = summary.IsExpanded; + var isSelected = (selected == entity); + + var flags = ImGuiTreeNodeFlags.OpenOnArrow + | ImGuiTreeNodeFlags.OpenOnDoubleClick + | ImGuiTreeNodeFlags.SpanAvailWidth; + if (!summary.HasChildren) flags |= ImGuiTreeNodeFlags.Leaf + | ImGuiTreeNodeFlags.Bullet + | ImGuiTreeNodeFlags.NoTreePushOnOpen; + if (isSelected) flags |= ImGuiTreeNodeFlags.Selected; + + var hasColor = false; + if (summary.DisplayColor is Color color) { ImGui.PushStyleColor(ImGuiCol.Text, color.RGBA); hasColor = true; } + if (summary.DocName != null) ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[2]); + if (summary.IsDisabled) ImGui.PushStyleVar(ImGuiStyleVar.Alpha, ImGui.GetStyle().DisabledAlpha); + ImGui.SetNextItemOpen(isExpanded); + ImGui.TreeNodeEx(summary.DisplayName, flags); + if (summary.IsDisabled) ImGui.PopStyleVar(); + if (summary.DocName != null) ImGui.PopFont(); + if (hasColor) ImGui.PopStyleColor(); + + // When hovering over the node, display brief description (if available). + if (ImGui.IsItemHovered() && entity.GetDocBrief() is string brief) + ImGui.SetTooltip(brief); + + // When node is clicked (but not on the arrow), select this entity. + if (ImGui.IsItemClicked() && !ImGui.IsItemToggledOpen()) + SetSelected(window, history, entity, scrollTo: false); + + // When node is toggled, toggle (Expanded, entity) + // relation on the inspector window entity. + if (ImGui.IsItemToggledOpen()) { + if (isExpanded) { + isExpanded = false; + window.Remove(Expanded, entity); + } else if (summary.HasChildren) { + isExpanded = true; + window.Add(Expanded, entity); + } + } + + if (window.Has() && isSelected) { + ImGui.SetScrollHereY(); + window.Remove(); + } + + if (isExpanded && summary.HasChildren) { + var children = GetSummaries(entity); + if (children.Count > MAX_CHILDREN) { + ImGui.TreePush(); + ImGui.TextWrapped($"{Icon.ExclamationTriangle} Too many children. " + + "If an entity's full path is known, it can be entered in the path input."); + ImGui.TreePop(); + } else foreach (var child in children) + EntryNode(child); + ImGui.TreePop(); + } + } + + foreach (var summary in GetSummaries(Entity.None)) + EntryNode(summary); + } + + private void ComponentsTab(EntityRef window, History? history, EntityRef? selected) + { + if (selected == null) return; + var ChildOf = window.World.LookupByTypeOrThrow(); + foreach (var id in selected.Type) { + // Hide ChildOf relations, as they are visible in the explorer. + if (id.IsPair && (id.Id.RelationUnsafe == ChildOf)) continue; + RenderIdentifier(window, history, id); + } + } + + private void ReferencesTab(EntityRef window, History? history, EntityRef? selected) + { + if (selected == null) return; + var world = window.World; + var ChildOf = world.LookupByTypeOrThrow(); + var Wildcard = world.LookupByTypeOrThrow(); + + if (ImGui.CollapsingHeader($"As {Icon.Tag} Entity", ImGuiTreeNodeFlags.DefaultOpen)) + foreach (var iter in Iterator.FromTerm(world, new(selected))) + for (var i = 0; i < iter.Count; i++) + RenderEntity(window, history, iter.Entity(i)); + + if (ImGui.CollapsingHeader($"As {Icon.ShareAlt} Relation", ImGuiTreeNodeFlags.DefaultOpen)) + foreach (var iter in Iterator.FromTerm(world, new(selected, Wildcard))) { + var id = iter.FieldId(1); + if (id.AsPair() is not (EntityRef relation, EntityRef target)) throw new InvalidOperationException(); + if (relation == ChildOf) continue; // Hide ChildOf relations. + + for (var i = 0; i < iter.Count; i++) { + RenderEntity(window, history, iter.Entity(i)); + ImGui.SameLine(); ImGui.TextUnformatted("has"); ImGui.SameLine(); + RenderIdentifier(window, history, id); + } + } + + if (ImGui.CollapsingHeader($"As {Icon.Bullseye} Target", ImGuiTreeNodeFlags.DefaultOpen)) + foreach (var iter in Iterator.FromTerm(world, new(Wildcard, selected))) { + var id = iter.FieldId(1); + if (id.AsPair() is not (EntityRef relation, EntityRef target)) throw new InvalidOperationException(); + if (relation == ChildOf) continue; // Hide ChildOf relations. + + for (var i = 0; i < iter.Count; i++) { + RenderEntity(window, history, iter.Entity(i)); + ImGui.SameLine(); ImGui.TextUnformatted("has"); ImGui.SameLine(); + RenderIdentifier(window, history, id); + } + } + } + + private void DocumentationTab(EntityRef _1, History? _2, EntityRef? selected) + { + var hasSelected = (selected != null); + + ImGui.BeginTable("Documentation", 2); + ImGui.TableSetupColumn("Label", ImGuiTableColumnFlags.WidthFixed); + ImGui.TableSetupColumn("Value", ImGuiTableColumnFlags.WidthStretch); + + static void Column(string label, string? tooltip, bool fill = true) { + ImGui.TableNextColumn(); + ImGui.AlignTextToFramePadding(); + ImGui.TextUnformatted(label); + if (ImGui.IsItemHovered() && (tooltip != null)) + ImGui.SetTooltip(tooltip); + ImGui.TableNextColumn(); + if (fill) ImGui.SetNextItemWidth(-float.Epsilon); + } + + Column($"{Icon.Tag} Display Name", """ + A display name for this entity. + Names in the entity hierarchy must be unique within the parent entity, + This doesn't apply to display names - they are mostly informational. + """); + if (!hasSelected) ImGui.BeginDisabled(); + var name = selected?.GetDocName(false) ?? ""; + if (ImGui.InputText("##Name", ref name, 256)) + selected!.SetDocName((name.Length > 0) ? name : null); + if (!hasSelected) ImGui.EndDisabled(); + + Column($"{Icon.Comment} Description", + "A brief description of this entity."); + if (!hasSelected) ImGui.BeginDisabled(); + var brief = selected?.GetDocBrief() ?? ""; + if (ImGui.InputText("##Brief", ref brief, 256)) + selected!.SetDocBrief((brief.Length > 0) ? brief : null); + if (!hasSelected) ImGui.EndDisabled(); + + Column($"{Icon.FileText} Documentation", """ + A detailed description, or full documentation, of this entity's purpose and behaviors. + It's encouraged to use multiple paragraphs and markdown formatting if necessary. + """); + var cellPadding = ImGui.GetStyle().CellPadding.Y; + var minHeight = ImGui.GetTextLineHeightWithSpacing() * 4; + var availHeight = ImGui.GetContentRegionAvail().Y + - (ImGui.GetFrameHeight() + cellPadding * 2) * 2 - cellPadding; + if (!hasSelected) ImGui.BeginDisabled(); + var detail = selected?.GetDocDetail() ?? ""; + // TODO: Needs wordwrap. + if (ImGui.InputTextMultiline("##Detail", ref detail, 2048, + new(-float.Epsilon, Math.Max(minHeight, availHeight)))) + selected!.SetDocDetail((detail.Length > 0) ? detail : null); + if (!hasSelected) ImGui.EndDisabled(); + + Column($"{Icon.Link} Link", """ + A link to a website relating to this entity, such as + a module's repository, or further documentation. + """); + if (!hasSelected) ImGui.BeginDisabled(); + var link = selected?.GetDocLink() ?? ""; + if (ImGui.InputText("##Link", ref link, 256)) + selected!.SetDocLink((link.Length > 0) ? link : null); + if (!hasSelected) ImGui.EndDisabled(); + + Column($"{Icon.PaintBrush} Color", """ + A custom color to represent this entity. + Used in the entity inspector's explorer view. + """, false); + if (!hasSelected) ImGui.BeginDisabled(); + var maybeColor = Color.TryParseHex(selected?.GetDocColor()); + var hasColor = (maybeColor != null); + var color = maybeColor ?? Color.White; + if (ImGui.Checkbox("##HasColor", ref hasColor)) { + if (hasColor) selected!.SetDocColor(color.ToHexString()); + else selected!.SetDocColor(null); + } + ImGui.SameLine(); + if (!hasColor) ImGui.BeginDisabled(); + ImGui.SetNextItemWidth(-float.Epsilon); + var colorVec = color.ToVector3(); + if (ImGui.ColorEdit3("##Color", ref colorVec)) + selected!.SetDocColor(Color.FromRGB(colorVec).ToHexString()); + if (!hasColor) ImGui.EndDisabled(); + if (!hasSelected) ImGui.EndDisabled(); + + ImGui.EndTable(); + ImGui.EndTabItem(); + } + + + // ======================= + // == Utility Functions == + // ======================= + + private EntityRef NewEntityInspectorWindow(World world) + => world.New().Add().Set(new History()) + .Build().SetDocName("Entity Inspector"); + + private void SetSelected( + EntityRef window, // The InspectorWindow entity. + History? history, // InspectorWindow's History component, null if it shouldn't be changed. + EntityRef? entity, // Entity to set as selected or null to unset. + bool scrollTo = true) // Should entity be scrolled to in the explorer view? + { + if (entity != null) window.Add(entity); + else window.Remove(); + + for (var parent = entity?.Parent; parent != null; parent = parent.Parent) + window.Add(parent); + + if ((entity != null) && scrollTo) + window.Add(); + + if (history != null) { + if (entity != null) history.Current = new History.Entry(entity, history.Current, null); + else if (history.Current is History.Entry entry) entry.Next = null; + } + } + + private void GoToPrevious(EntityRef window, History history, EntityRef? selected) + { + if (selected != null) { + if (history.Current?.Prev == null) return; + history.Current = history.Current.Prev; + } else if (history.Current == null) return; + + var entity = EntityRef.CreateOrNull(window.World, history.Current.Entity); + SetSelected(window, null, entity); + // TODO: Set path if entity could not be found. + } + + private void GoToNext(EntityRef window, History history) + { + if (history.Current?.Next == null) return; + history.Current = history.Current.Next; + + var entity = EntityRef.CreateOrNull(window.World, history.Current.Entity); + SetSelected(window, null, entity); + // TODO: Set path if entity could not be found. + } + + private Rule? _findDisplayTypeRule; + private EntityRef? FindDisplayType(EntityRef entity) + { + var world = entity.World; + var component = world.LookupByTypeOrThrow(); + + var rule = _findDisplayTypeRule ??= new Rule(world, new( + $"$Type, gaemstone.Doc.DisplayType($Type)")); + var typeVar = rule.Variables["Type"]!; + + var curType = (EntityRef?)null; + var curPriority = float.MaxValue; + foreach (var iter in _findDisplayTypeRule.Iter().SetVar(rule.ThisVar!, entity)) + for (var i = 0; i < iter.Count; i++) { + var type = iter.GetVar(typeVar); + if ((type == component) && (entity.GetOrNull(component)?.Size == 0)) + type = world.LookupByTypeOrThrow(); + var priority = type.GetOrNull()?.Value ?? float.MaxValue; + if (priority <= curPriority) { curType = type; curPriority = priority; } + } + + return curType; + } + + + // ============================= + // == Utility ImGui Functions == + // ============================= + + private void RenderIdentifier(EntityRef window, History? history, IdentifierRef id) + { + ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(2, ImGui.GetStyle().ItemSpacing.Y)); + if (id.AsPair() is (EntityRef relation, EntityRef target)) { + ImGui.TextUnformatted("("); ImGui.SameLine(); + RenderEntity(window, history, relation); + ImGui.SameLine(); ImGui.TextUnformatted(","); ImGui.SameLine(); + RenderEntity(window, history, target); + ImGui.SameLine(); ImGui.TextUnformatted(")"); + } else if (id.AsEntity() is EntityRef entity) + RenderEntity(window, history, entity); + else + ImGui.TextUnformatted(id.ToString()); + ImGui.PopStyleVar(); + } + + private void RenderEntity(EntityRef window, History? history, EntityRef entity) + { + var pos = ImGui.GetCursorScreenPos(); + // Adjust based on AlignTextToFramePadding() or similar. + pos.Y += ImGuiInternal.GetCurrentWindow().DC.CurrLineTextBaseOffset; + + // TODO: Calculate the size properly. + var dummySize = new Vector2(20, ImGui.GetTextLineHeight()); + if (!ImGui.IsRectVisible(pos, pos + dummySize)) { ImGui.Dummy(dummySize); return; } + + var displayType = FindDisplayType(entity); + var docColor = Color.TryParseHex(entity.GetDocColor()) ?? Color.TryParseHex(displayType?.GetDocColor()); + var docIcon = entity.GetOrNull()?.Value.ToString() ?? displayType?.GetOrNull()?.Value.ToString(); + var docName = entity.GetDocName(false); + + var isDisabled = entity.IsDisabled; + var displayName = (docName != null) ? $"\"{docName}\"" : entity.Name ?? entity.Id.ToString(); + if (docIcon is string icon) displayName = $"{icon} {displayName}"; + + var font = ImGui.GetIO().Fonts.Fonts[(docName != null) ? 2 : 0]; + ImGui.PushFont(font); var size = ImGui.CalcTextSize(displayName); ImGui.PopFont(); + var color = docColor ?? Color.FromRGBA(ImGui.GetColorU32(ImGuiCol.Text)); + if (isDisabled) color = color.WithAlpha(ImGui.GetStyle().DisabledAlpha); + + var ctrl = ImGui.IsKeyDown(ImGuiKey.ModCtrl); + var shift = ImGui.IsKeyDown(ImGuiKey.ModShift); + if (ImGui.InvisibleButton(entity.Id.ToString(), size) && (ctrl || shift)) { + if (shift) window = NewEntityInspectorWindow(window.World); + SetSelected(window, history, entity); + } + + var drawList = ImGui.GetWindowDrawList(); + drawList.AddText(font, ImGui.GetFontSize(), pos, color.RGBA, displayName); + // Draw an underscore (like a hyperlink) if hovered and Ctrl key is held. + if (ImGui.IsItemHovered() && (ctrl || shift)) { + pos.Y -= 1.75f; + drawList.AddLine(pos + new Vector2(0, size.Y), pos + size, color.RGBA); + ImGui.SetMouseCursor(ImGuiMouseCursor.Hand); + } + + if (ImGui.IsItemHovered()) { + ImGui.BeginTooltip(); + ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[1]); + ImGui.TextUnformatted(entity.GetFullPath().ToString()); + ImGui.PopFont(); + if (isDisabled) { + ImGui.SameLine(); + ImGui.BeginDisabled(); + ImGui.TextUnformatted(" (disabled)"); + ImGui.EndDisabled(); + } + if (entity.GetDocBrief() is string brief) ImGui.Text(brief); + ImGui.EndTooltip(); + } + } +} diff --git a/src/gaemstone.Client/Systems/FreeCameraController.cs b/src/gaemstone.Client/Systems/FreeCameraController.cs index 1296e4b..e988a76 100644 --- a/src/gaemstone.Client/Systems/FreeCameraController.cs +++ b/src/gaemstone.Client/Systems/FreeCameraController.cs @@ -1,7 +1,7 @@ using System; +using System.Linq; using System.Numerics; using gaemstone.ECS; -using Silk.NET.Maths; using static gaemstone.Client.Components.CameraComponents; using static gaemstone.Client.Components.InputComponents; using static gaemstone.Components.TransformComponents; @@ -25,20 +25,20 @@ public class FreeCameraController Universe universe, TimeSpan delta, in Camera camera, ref GlobalTransform transform, ref CameraController controller) { - var input = universe.Lookup(); - var mouse = universe.Lookup(); - var keyboard = universe.Lookup(); + var input = universe.LookupByType(); + var mouse = universe.LookupByType(); + var keyboard = universe.LookupByType(); if ((input == null) || (mouse == null) || (keyboard == null)) return; - var module = universe.LookupOrThrow(); - var capturedBy = input.GetTarget(); - var inputCapturedBy = input.GetTarget(); + var module = universe.LookupByTypeOrThrow(); + var capturedBy = input.GetTargets().FirstOrDefault(); + var inputCapturedBy = input.GetTargets().FirstOrDefault(); var isCaptured = (capturedBy != null); // If another system has the mouse captured, don't do anything here. if (isCaptured && (capturedBy != module)) return; var isMouseDown = ((inputCapturedBy == null) || (inputCapturedBy == module)) - && mouse.Lookup("Buttons/Right")?.Has() == true; + && mouse.LookupChild("Buttons/Right")?.Has() == true; if (isMouseDown != isCaptured) { if (isMouseDown) input.Add(module); @@ -51,27 +51,27 @@ public class FreeCameraController var mouseMovement = Vector2.Zero; if (isCaptured) { - var raw = (Vector2?)mouse.Lookup("Delta")?.Get() ?? default; + var raw = (Vector2?)mouse.LookupChild("Delta")?.GetOrThrow() ?? default; mouseMovement = raw * controller.MouseSensitivity * (float)delta.TotalSeconds; } if (camera.IsOrthographic) { - transform *= Matrix4X4.CreateTranslation(-mouseMovement.X, -mouseMovement.Y, 0); + transform *= Matrix4x4.CreateTranslation(-mouseMovement.X, -mouseMovement.Y, 0); } else { - var shift = keyboard.Lookup("ShiftLeft")?.Has() == true; - var w = keyboard.Lookup("W")?.Has() == true; - var a = keyboard.Lookup("A")?.Has() == true; - var s = keyboard.Lookup("S")?.Has() == true; - var d = keyboard.Lookup("D")?.Has() == true; + var shift = keyboard.LookupChild("ShiftLeft")?.Has() == true; + var w = keyboard.LookupChild("W")?.Has() == true; + var a = keyboard.LookupChild("A")?.Has() == true; + var s = keyboard.LookupChild("S")?.Has() == true; + var d = keyboard.LookupChild("D")?.Has() == true; var speed = (shift ? 12 : 4) * (float)delta.TotalSeconds; var forwardMovement = ((w ? -1 : 0) + (s ? 1 : 0)) * speed; var sideMovement = ((a ? -1 : 0) + (d ? 1 : 0)) * speed; - var curTranslation = new Vector3D(transform.Value.M41, transform.Value.M42, transform.Value.M43); - var yawRotation = Matrix4X4.CreateRotationY(-mouseMovement.X / 100, curTranslation); - var pitchRotation = Matrix4X4.CreateRotationX(-mouseMovement.Y / 100); - var translation = Matrix4X4.CreateTranslation(sideMovement, 0, forwardMovement); + var curTranslation = new Vector3(transform.Value.M41, transform.Value.M42, transform.Value.M43); + var yawRotation = Matrix4x4.CreateRotationY(-mouseMovement.X / 100, curTranslation); + var pitchRotation = Matrix4x4.CreateRotationX(-mouseMovement.Y / 100); + var translation = Matrix4x4.CreateTranslation(sideMovement, 0, forwardMovement); transform = translation * pitchRotation * transform * yawRotation; } diff --git a/src/gaemstone.Client/Systems/ImGuiDemoWindow.cs b/src/gaemstone.Client/Systems/ImGuiDemoWindow.cs new file mode 100644 index 0000000..6e8ca98 --- /dev/null +++ b/src/gaemstone.Client/Systems/ImGuiDemoWindow.cs @@ -0,0 +1,20 @@ +using gaemstone.Client.Utility; +using gaemstone.ECS; +using ImGuiNET; +using static gaemstone.Client.Systems.ImGuiManager; + +namespace gaemstone.Client.Systems; + +[Module] +[DependsOn] +public class ImGuiDemoWindow +{ + private bool _isOpen = false; + + [System] + public void Show(ImGuiData _) + { + if (ImGuiUtility.UIButtonToggle(2, ForkAwesome.WindowMaximize, "ImGui Demo Window", ref _isOpen)) + ImGui.ShowDemoWindow(ref _isOpen); + } +} diff --git a/src/gaemstone.Client/Systems/ImGuiInputDebug.cs b/src/gaemstone.Client/Systems/ImGuiInputDebug.cs index dbb02df..a8cf9d3 100644 --- a/src/gaemstone.Client/Systems/ImGuiInputDebug.cs +++ b/src/gaemstone.Client/Systems/ImGuiInputDebug.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Numerics; +using gaemstone.Client.Utility; using gaemstone.ECS; using ImGuiNET; using Silk.NET.GLFW; @@ -16,88 +17,101 @@ namespace gaemstone.Client.Systems; [DependsOn] public class ImGuiInputDebug { + private bool _isOpen = false; + [System] - public static void ShowInputDebugWindow(Universe universe, ImGuiData _) + public void ShowInputDebugWindow(Universe universe, ImGuiData _) { - var input = universe.Lookup(); + var input = universe.LookupByType(); if (input == null) return; - ImGui.Begin("Input Information", ImGuiWindowFlags.NoResize); + if (!ImGuiUtility.UIButtonToggle(1, ForkAwesome.Gamepad, "Input Information", ref _isOpen)) return; - if (universe.Lookup() is EntityRef keyboard) - DrawKeyboard(keyboard); + var center = ImGui.GetMainViewport().GetCenter(); + ImGui.SetNextWindowPos(center, ImGuiCond.Appearing, new(0.5f, 0.5f)); + ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[1]); + if (ImGui.Begin($"{ForkAwesome.Gamepad} Input Information", ref _isOpen, + ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize)) { + ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[0]); - if (universe.Lookup() is EntityRef mouse) { - ImGui.BeginChild("Mouse Info", new(160, 180), true); + if (universe.LookupByType() is EntityRef keyboard) + DrawKeyboard(keyboard); - ImGui.Text("Position: " + (Vector2?)mouse.Lookup("Position")?.MaybeGet()); - ImGui.Text("Delta: " + (Vector2?)mouse.Lookup("Delta" )?.MaybeGet()); - ImGui.Text("Wheel: " + (float?) mouse.Lookup("Wheel" )?.MaybeGet()); + if (universe.LookupByType() is EntityRef mouse) { + ImGui.BeginChild("Mouse Info", new(160, 180), true); - ImGui.Spacing(); + ImGui.Text("Position: " + (Vector2?)mouse.LookupChild("Position")?.GetOrNull()); + ImGui.Text("Delta: " + (Vector2?)mouse.LookupChild("Delta" )?.GetOrNull()); + ImGui.Text("Wheel: " + (float?) mouse.LookupChild("Wheel" )?.GetOrNull()); - var buttons = mouse.Lookup("Buttons")?.GetChildren().ToArray() ?? Array.Empty(); - ImGui.Text("Buttons: " + string.Join(" ", buttons - .Where (button => button.Has()) - .Select(button => $"{button.Name} ({button.Get().Duration.TotalSeconds:f2}s)"))); - ImGui.Text(" Pressed: " + string.Join(" ", buttons - .Where (button => button.Has()) - .Select(button => button.Name))); - ImGui.Text(" Released: " + string.Join(" ", buttons - .Where (button => button.Has()) - .Select(button => button.Name))); + ImGui.Spacing(); - ImGui.EndChild(); - } + var buttons = mouse.LookupChild("Buttons")?.GetChildren().ToArray() ?? Array.Empty(); + ImGui.Text("Buttons: " + string.Join(" ", buttons + .Where (button => button.Has()) + .Select(button => $"{button.Name} ({button.GetOrThrow().Duration.TotalSeconds:f2}s)"))); + ImGui.Text(" Pressed: " + string.Join(" ", buttons + .Where (button => button.Has()) + .Select(button => button.Name))); + ImGui.Text(" Released: " + string.Join(" ", buttons + .Where (button => button.Has()) + .Select(button => button.Name))); - for (var index = 0; input.Lookup("Gamepad" + index) is EntityRef gamepad; index++) { - ImGui.SameLine(); - ImGui.BeginChild($"{gamepad.Name} Info", new(160, 180), true); - - var buttons = gamepad.Lookup("Buttons")?.GetChildren().ToArray() ?? Array.Empty(); - ImGui.Text("Buttons: " + string.Join(" ", buttons.Where(b => b.Has()) - .Select(b => $"{b.Name} ({b.Get().Duration.TotalSeconds:f2}s)"))); - ImGui.Text(" Pressed: " + string.Join(" ", buttons.Where(b => b.Has()).Select(b => b.Name))); - ImGui.Text(" Released: " + string.Join(" ", buttons.Where(b => b.Has()).Select(b => b.Name))); - - ImGui.Spacing(); - - ImGui.Text("Triggers:"); - for (var i = 0; gamepad.Lookup("Trigger" + i) is EntityRef trigger; i++) { - var text = $" {i}: {(float?)trigger.MaybeGet() ?? default:f2}"; - if (trigger.Has()) text += " pressed!"; - else if (trigger.Has()) text += " released!"; - else if (trigger.MaybeGet() is Active active) - text += $" ({active.Duration.TotalSeconds:f2}s)"; - ImGui.Text(text); + ImGui.EndChild(); } - ImGui.Text("Thumbsticks:"); - for (var i = 0; gamepad.Lookup("Thumbstick" + i) is EntityRef thumbstick; i++) - ImGui.Text($" {i}: {(Vector2?)thumbstick.MaybeGet() ?? default:f2}"); + for (var index = 0; input.LookupChild("Gamepad" + index) is EntityRef gamepad; index++) { + ImGui.SameLine(); + ImGui.BeginChild($"{gamepad.Name} Info", new(160, 180), true); + + var buttons = gamepad.LookupChild("Buttons")?.GetChildren().ToArray() ?? Array.Empty(); + ImGui.Text("Buttons: " + string.Join(" ", buttons.Where(b => b.Has()) + .Select(b => $"{b.Name} ({b.GetOrThrow().Duration.TotalSeconds:f2}s)"))); + ImGui.Text(" Pressed: " + string.Join(" ", buttons.Where(b => b.Has()).Select(b => b.Name))); + ImGui.Text(" Released: " + string.Join(" ", buttons.Where(b => b.Has()).Select(b => b.Name))); + + ImGui.Spacing(); + + ImGui.Text("Triggers:"); + for (var i = 0; gamepad.LookupChild("Trigger" + i) is EntityRef trigger; i++) { + var text = $" {i}: {(float?)trigger.GetOrNull() ?? default:f2}"; + if (trigger.Has()) text += " pressed!"; + else if (trigger.Has()) text += " released!"; + else if (trigger.GetOrNull() is Active active) + text += $" ({active.Duration.TotalSeconds:f2}s)"; + ImGui.Text(text); + } + + ImGui.Text("Thumbsticks:"); + for (var i = 0; gamepad.LookupChild("Thumbstick" + i) is EntityRef thumbstick; i++) + ImGui.Text($" {i}: {(Vector2?)thumbstick.GetOrNull() ?? default:f2}"); - ImGui.EndChild(); - } + ImGui.EndChild(); + } + + ImGui.PopFont(); + } + ImGui.PopFont(); ImGui.End(); } - private const float U = 1.00F; - private const float SM = 1.25F; + private const float U = 1.00f; + private const float SM = 1.25f; // Spacing (invisible) - private const float I = -0.50F; - private const float _ = -1.00F; - private const float ER = -1.25F; + private const float I = -0.50f; + private const float _ = -1.00f; + private const float ER = -1.25f; // Special - private const float T = -11.00F; - private const float ENT = -11.50F; + private const float T = -11.00f; + private const float ENT = -11.50f; private static readonly float[][] KeyboardLayout = { new[] { U, _, U, U, U, U,I,U, U, U, U,I, U, U, U, U, I,U, U, U }, - new[] { U, U, U, U, U, U, U, U, U, U, U, U, U, 2.0F, I,U, U, U,I, U, U, U, U }, - new[] { 1.5F, U, U, U, U, U, U, U, U, U, U, U, U, ENT, I,U, U, U,I, U, U, U, T }, - new[] { 1.75F, U, U, U, U, U, U, U, U, U, U, U, U, ER, I,_, _, _,I, U, U, U, _ }, - new[] { SM, U, U, U, U, U, U, U, U, U, U, U, 2.75F, I,_, U, _,I, U, U, U, T }, - new[] { SM, SM, SM, 6.25F, SM, SM, SM, SM, I,U, U, U,I, 2.0F, U, _ }, + new[] { U, U, U, U, U, U, U, U, U, U, U, U, U, 2.0f, I,U, U, U,I, U, U, U, U }, + new[] { 1.5f, U, U, U, U, U, U, U, U, U, U, U, U, ENT, I,U, U, U,I, U, U, U, T }, + new[] { 1.75f, U, U, U, U, U, U, U, U, U, U, U, U, ER, I,_, _, _,I, U, U, U, _ }, + new[] { SM, U, U, U, U, U, U, U, U, U, U, U, 2.75f, I,_, U, _,I, U, U, U, T }, + new[] { SM, SM, SM, 6.25f, SM, SM, SM, SM, I,U, U, U,I, 2.0f, U, _ }, }; private static readonly Key?[][] KeyboardKeys = { new Key?[] { Key.Escape, null, Key.F1, Key.F2, Key.F3, Key.F4, null, Key.F5, Key.F6, Key.F7, Key.F8, null, Key.F9, Key.F10, Key.F11, Key.F12, null, Key.PrintScreen, Key.ScrollLock, Key.Pause }, @@ -108,7 +122,7 @@ public class ImGuiInputDebug new Key?[] { Key.ControlLeft, Key.SuperLeft, Key.AltLeft, Key.Space, Key.AltRight, Key.SuperRight, Key.Menu, Key.ControlRight, null, Key.Left, Key.Down, Key.Right, null, Key.Keypad0, Key.KeypadDecimal, null }, }; private static readonly Dictionary KeyToNameMapping = new() { - [Key.Escape] = "Ecs", [Key.PrintScreen] = "Prn\nScr", [Key.ScrollLock] = "Scr\nLck", [Key.Pause] = "Pause", + [Key.Escape] = "Esc", [Key.PrintScreen] = "Prn\nScr", [Key.ScrollLock] = "Scr\nLck", [Key.Pause] = "Pause", [Key.F1] = "F1", [Key.F2] = "F2", [Key.F3] = "F3", [Key.F4] = "F4", [Key.F5] = "F5", [Key.F6] = "F6", [Key.F7] = "F7", [Key.F8] = "F8", [Key.F9] = "F9", [Key.F10] = "F10", [Key.F11] = "F11", [Key.F12] = "F12", [Key.Tab] = "Tab", [Key.CapsLock] = "Caps\nLock", [Key.Menu] = "Menu", @@ -122,72 +136,77 @@ public class ImGuiInputDebug [Key.Insert] = "Ins", [Key.Delete] = "Del", [Key.Home] = "Home", [Key.End] = "End", [Key.PageUp] = "PgUp", [Key.PageDown] = "PgDn", - [Key.NumLock] = "Num\nLck", [Key.KeypadEnter] = "Enter", + [Key.NumLock] = "Num\nLck", [Key.KeypadEnter] = "=", }; public static void DrawKeyboard(EntityRef keyboard) { - var GLFW = Glfw.GetApi(); - const float UnitKeySize = 32.0F; - Vector2 Size = new Vector2(23, 6.5F) * UnitKeySize; + const float UnitKeySize = 32.0f; - Vector2 Border = new(1, 1); - Vector2 LabelOffset = new(7, 3); - Vector2 FaceStartOffset = new(5, 3); - Vector2 FaceEndOffset = new(5, 6); - - uint BorderColor = Color.FromGrayscale(24).RGBA; - uint LabelColor = Color.FromGrayscale(64).RGBA; + var GLFW = Glfw.GetApi(); + var draw = ImGui.GetWindowDrawList(); - var draw = ImGui.GetWindowDrawList(); var offset = ImGui.GetCursorScreenPos(); var current = Vector2.Zero; foreach (var (widths, keys) in KeyboardLayout.Zip(KeyboardKeys)) { foreach (var (width, key) in widths.Zip(keys)) { - uint KeyColor(byte lightness) - => (key != null) && (keyboard.Lookup(key.Value.ToString())?.Has() == true) - ? Color.FromRGB(lightness, (byte)(lightness / 2), (byte)(lightness / 2)).RGBA - : Color.FromGrayscale(lightness).RGBA; + var active = (key != null) && (keyboard.LookupChild(key.Value.ToString())?.Has() == true); - var start = offset + current; - var keySize = new Vector2(width, 1.0F); - - if (width == T) keySize = new Vector2((-keySize.X - 10), 2.0F); - else if (width < -10) keySize = new Vector2((-keySize.X - 10), 1.0F); + var keySize = new Vector2(width, 1.0f); + if (width == T) keySize = new Vector2((-keySize.X - 10), 2.0f); + else if (width < -10) keySize = new Vector2((-keySize.X - 10), 1.0f); else if (width < 0) { current += new Vector2(-keySize.X * UnitKeySize, 0); continue; } var label = (key != null) ? KeyToNameMapping.GetValueOrDefault(key.Value) ?? GLFW.GetKeyName((int)key.Value, 0)?.ToUpper() : null; - - var end = start + keySize * UnitKeySize; if (width == ENT) { - var start2 = start + new Vector2(0.25F * UnitKeySize, 0); - var end2 = end + new Vector2(0, 1 * UnitKeySize); - draw.AddRectFilled(start , end , BorderColor, 3); - draw.AddRectFilled(start2 , end2 , BorderColor, 3); - draw.AddRectFilled(start + Border, end - Border, KeyColor(204), 3); - draw.AddRectFilled(start2 + Border, end2 - Border, KeyColor(204), 3); - var faceStart = start + FaceStartOffset; - var faceEnd = end - FaceEndOffset; - draw.AddRectFilled(faceStart , faceEnd , KeyColor(252), 2); - var faceStart2 = start2 + FaceStartOffset; - var faceEnd2 = end2 - FaceEndOffset; - draw.AddRectFilled(faceStart2, faceEnd2, KeyColor(252), 2); - if (label != null) draw.AddText(start + LabelOffset, LabelColor, label); - } else { - draw.AddRectFilled(start , end , BorderColor, 3); - draw.AddRectFilled(start + Border, end - Border, KeyColor(204), 3); - var faceStart = start + FaceStartOffset; - var faceEnd = end - FaceEndOffset; - draw.AddRectFilled(faceStart, faceEnd, KeyColor(252), 2); - if (label != null) draw.AddText(start + LabelOffset, LabelColor, label); - } - current += new Vector2(keySize.X * UnitKeySize, 0); + DrawButton(draw, label, active, + (offset + current, keySize * UnitKeySize), + (offset + current + new Vector2(0.25f * UnitKeySize, 0), (keySize + new Vector2(-0.25f, 1)) * UnitKeySize)); + } else DrawButton(draw, label, active, + (offset + current, keySize * UnitKeySize)); + current += new Vector2(keySize.X * UnitKeySize, 0); } current = new Vector2(0, current.Y + UnitKeySize); if (widths == KeyboardLayout[0]) current += new Vector2(0, UnitKeySize / 2); } - ImGui.Dummy(Size); + + ImGui.Dummy(new Vector2(23, 6.5f) * UnitKeySize); + } + + private static void DrawButton(ImDrawListPtr draw, string? label, + bool active, params (Vector2 Pos, Vector2 Size)[] parts) + { + const int Rounding = 3; + var Border = new Vector2(1, 1); + var LabelOffset = new Vector2(7, 3); + var FaceStartOffset = new Vector2(5, 3); + var FaceEndOffset = new Vector2(5, 6); + + var BorderColor = Color.FromGrayscale(0.10f); + var LabelColor = Color.FromGrayscale(0.25f); + var OuterKeyColorActive = Color.FromRGB(0.8f, 0.4f, 0.4f); + var OuterKeyColorInactive = Color.FromGrayscale(0.8f); + var InnerKeyColorActive = Color.FromRGB(1.0f, 0.0f, 0.0f); + var InnerKeyColorInactive = Color.FromGrayscale(1.0f); + + var outerKeyColor = active ? OuterKeyColorActive : OuterKeyColorInactive; + var innerKeyColor = active ? InnerKeyColorActive : InnerKeyColorInactive; + + foreach (var (pos, size) in parts) + draw.AddRectFilled(pos, pos + size, BorderColor.RGBA, Rounding); + foreach (var (pos, size) in parts) + draw.AddRectFilled(pos + Border, pos + size - Border, outerKeyColor.RGBA, Rounding); + foreach (var (pos, size) in parts) + draw.AddRectFilled(pos + FaceStartOffset, pos + size - FaceEndOffset, innerKeyColor.RGBA, Rounding - 1); + if (label != null) { + var pos = parts[0].Pos + LabelOffset; + var height = ImGui.GetTextLineHeight() - 4; + foreach (var line in label.Split('\n')) { + draw.AddText(pos, LabelColor.RGBA, line); + pos += new Vector2(0, height); + } + } } } diff --git a/src/gaemstone.Client/Systems/ImGuiManager.cs b/src/gaemstone.Client/Systems/ImGuiManager.cs index bd12c7d..2ca6ec9 100644 --- a/src/gaemstone.Client/Systems/ImGuiManager.cs +++ b/src/gaemstone.Client/Systems/ImGuiManager.cs @@ -1,6 +1,11 @@ using System; +using System.IO; +using System.Linq; +using System.Text; +using gaemstone.Client.Utility; using gaemstone.ECS; using gaemstone.Flecs; +using gaemstone.Utility; using ImGuiNET; using Silk.NET.Input; using Silk.NET.OpenGL.Extensions.ImGui; @@ -23,29 +28,92 @@ public class ImGuiManager [DependsOn] public struct ImGuiRenderPhase { } - [Component, Singleton] + [Component, Singleton(AutoAdd = false)] public class ImGuiData { public ImGuiController Controller { get; } internal ImGuiData(ImGuiController controller) => Controller = controller; } + private unsafe static ImFontPtr AddFontFromResources( + ImGuiIOPtr io, string name, int size, Action? cfgAction = null, + float offset = 0, float minAdvance = 0, + (int Min, int Max)[]? ranges = null, bool merge = false) + { + // TODO: FontConfig can be freed at the end of this method. + // Unfortunately, data has to stick around until font atlas is built. + var cfg = new ImFontConfigPtr(ImGuiNative.ImFontConfig_ImFontConfig()) { + GlyphOffset = new(0, offset), + GlyphMinAdvanceX = minAdvance, + MergeMode = merge, + }; + // Set cfg.Name so the font has a nice display name in ImGui. + var fullName = $"{name.Replace('.', ' ')} {size}px"; + Encoding.UTF8.GetBytes(fullName, new Span(cfg.Name.Data, cfg.Name.Count)); + // If glyph ranges are specified, allocate unmanaged heap memory for them. + if (ranges != null) { + var rangesSpan = GlobalHeapAllocator.Instance.Allocate(ranges.Length * 2 + 1); + for (var i = 0; i < ranges.Length; i++) { + rangesSpan[i * 2 ] = (char)ranges[i].Min; + rangesSpan[i * 2 + 1] = (char)ranges[i].Max; + } + rangesSpan[^1] = default; + fixed (void* rangesPtr = rangesSpan) + cfg.GlyphRanges = (IntPtr)rangesPtr; + } + // Use cfgAction to allow changing other font configs. + cfgAction?.Invoke(cfg); + + // Grab the stream for this font from the assembly's resources. + var file = $"gaemstone.Client.Resources.{name}.ttf"; + using var stream = typeof(Resources).Assembly.GetManifestResourceStream(file) + ?? throw new InvalidOperationException($"Resource '{file}' was not found"); + + using var memoryStream = new MemoryStream(); + stream.CopyTo(memoryStream); // Write font file from resources to memory stream. + memoryStream.WriteByte(0); // Add a NUL termination character. + + // Copy the data into unmanaged memory and pass it to ImGui. + var fontData = memoryStream.ToArray(); + var fontDataSpan = GlobalHeapAllocator.Instance.AllocateCopy(fontData); + fixed (byte* dataPtr = fontDataSpan) + return io.Fonts.AddFontFromMemoryTTF((IntPtr)dataPtr, size, size, cfg); + } + [System] public unsafe void Initialize(Universe universe, GameWindow window, Canvas canvas, [Source] IInputContext inputContext, [Not] ImGuiData _) - => universe.LookupOrThrow().Set(new ImGuiData( + => universe.LookupByTypeOrThrow().Set(new ImGuiData( new(canvas.GL, window.Handle, inputContext, () => { - var IO = ImGui.GetIO(); + var io = ImGui.GetIO(); + var style = ImGui.GetStyle(); + + var fontSize = 16; + void MergeIcons() => AddFontFromResources(io, "ForkAwesome", fontSize, + minAdvance: 18, ranges: new[]{ (ForkAwesome.Min, ForkAwesome.Max) }, merge: true); + AddFontFromResources(io, "OpenSans" , fontSize, offset: -1); MergeIcons(); + AddFontFromResources(io, "OpenSans.Bold" , fontSize, offset: -1); MergeIcons(); + AddFontFromResources(io, "OpenSans.Italic", fontSize, offset: -1); MergeIcons(); // Do not save a settings or log file. - IO.NativePtr->IniFilename = null; - IO.NativePtr->LogFilename = null; + io.NativePtr->IniFilename = null; + io.NativePtr->LogFilename = null; - IO.BackendFlags |= ImGuiBackendFlags.HasMouseCursors + io.BackendFlags |= ImGuiBackendFlags.HasMouseCursors | ImGuiBackendFlags.HasSetMousePos; - IO.ConfigFlags |= ImGuiConfigFlags.NavEnableKeyboard + io.ConfigFlags |= ImGuiConfigFlags.NavEnableKeyboard | ImGuiConfigFlags.NavEnableSetMousePos; - IO.ConfigWindowsResizeFromEdges = true; + // | ImGuiConfigFlags.DockingEnable; + io.ConfigWindowsResizeFromEdges = true; + io.ConfigWindowsMoveFromTitleBarOnly = true; + + style.WindowRounding = style.ChildRounding + = style.PopupRounding = style.TabRounding + = style.FrameRounding = style.ScrollbarRounding = 6; + + style.WindowTitleAlign = new(0.5f, 0.5f); + style.ColorButtonPosition = ImGuiDir.Left; + style.IndentSpacing = 8; // Set up key mappings. foreach (var imguiKey in Enum.GetValues()) { @@ -62,7 +130,7 @@ public class ImGuiManager } if (Enum.TryParse(name, true, out var silkKey)) - IO.KeyMap[(int)imguiKey] = (int)silkKey; + io.KeyMap[(int)imguiKey] = (int)silkKey; } }))); @@ -70,9 +138,9 @@ public class ImGuiManager public static void UpdateMouse(Universe universe, [Source] IMouse impl, ImGuiData _) { - var input = universe.LookupOrThrow(); - var module = universe.LookupOrThrow(); - var capturedBy = input.GetTarget(); + var input = universe.LookupByTypeOrThrow(); + var module = universe.LookupByTypeOrThrow(); + var capturedBy = input.GetTargets().FirstOrDefault();; var isCaptured = (capturedBy != null); // If another system has the mouse captured, don't do anything here. if (isCaptured && (capturedBy != module)) return; @@ -110,10 +178,6 @@ public class ImGuiManager public static void Update(TimeSpan delta, ImGuiData imgui) => imgui.Controller.Update((float)delta.TotalSeconds); - [System] - public static void ShowDemoWindow(ImGuiData _) - => ImGui.ShowDemoWindow(); - [System] public static void Render(ImGuiData imgui) => imgui.Controller.Render(); diff --git a/src/gaemstone.Client/Systems/InputManager.cs b/src/gaemstone.Client/Systems/InputManager.cs index 9ea0337..904c104 100644 --- a/src/gaemstone.Client/Systems/InputManager.cs +++ b/src/gaemstone.Client/Systems/InputManager.cs @@ -15,28 +15,29 @@ namespace gaemstone.Client.Systems; [DependsOn] public class InputManager { - [Component("InputContext"), Proxy] public struct ContextProxy { } + [Component, Path("InputContext"), Proxy] public struct ContextProxy { } - [Component("MouseImpl" ), Proxy] public struct MouseProxy { } - [Component("KeyboardImpl"), Proxy] public struct KeyboardProxy { } - [Component("GamepadImpl" ), Proxy] public struct GamepadProxy { } + [Component, Path("MouseImpl" ), Proxy] public struct MouseProxy { } + [Component, Path("KeyboardImpl"), Proxy] public struct KeyboardProxy { } + [Component, Path("GamepadImpl" ), Proxy] public struct GamepadProxy { } [System] public static void Initialize(Universe universe, [Game] GameWindow window, [Source, Not] IInputContext _) { - var input = universe.LookupOrThrow(); + var input = universe.LookupByTypeOrThrow(); var context = window.Handle.CreateInput(); input.Set(context); // TODO: Add device names as documentation names to these entities. foreach (var impl in context.Mice.Take(1)) - input.LookupOrThrow("Mouse").Set(impl); + input.LookupChildOrThrow("Mouse").Set(impl); foreach (var impl in context.Keyboards.Take(1)) - input.LookupOrThrow("Keyboard").Set(impl); + input.LookupChildOrThrow("Keyboard").Set(impl); foreach (var impl in context.Gamepads) input.NewChild("Gamepad" + impl.Index).Add().Set(impl).Build(); + // TODO: Should we even support joysticks? } @@ -44,13 +45,13 @@ public class InputManager [Observer] [Expression("CursorCapturedBy(Input, *)")] public static void OnCursorCaptured(Universe universe) - => universe.LookupOrThrow().Get() + => universe.LookupByTypeOrThrow().GetOrThrow() .Cursor.CursorMode = CursorMode.Raw; [Observer] [Expression("CursorCapturedBy(Input, *)")] public static void OnCursorReleased(Universe universe) - => universe.LookupOrThrow().Get() + => universe.LookupByTypeOrThrow().GetOrThrow() .Cursor.CursorMode = CursorMode.Normal; @@ -94,8 +95,8 @@ public class InputManager } - private const float ActivationThreshold = 0.90F; - private const float DeactivationThreshold = 0.75F; + private const float ActivationThreshold = 0.90f; + private const float DeactivationThreshold = 0.75f; private static void Update1D(TimeSpan delta, EntityRef entity, float current) { @@ -135,7 +136,6 @@ public class InputManager => entity.Add(); [System] - // [Expression("Activated || Deactivated")] public static void ClearDeActivated(EntityRef entity, [Or] Activated _1, [Or] Deactivated _2) => entity.Remove().Remove(); } diff --git a/src/gaemstone.Client/Systems/MeshManager.cs b/src/gaemstone.Client/Systems/MeshManager.cs index 139183e..6eda563 100644 --- a/src/gaemstone.Client/Systems/MeshManager.cs +++ b/src/gaemstone.Client/Systems/MeshManager.cs @@ -1,7 +1,7 @@ using System; using System.IO; +using System.Numerics; using gaemstone.ECS; -using Silk.NET.Maths; using Silk.NET.OpenGL; using static gaemstone.Client.Components.RenderingComponents; using static gaemstone.Client.Components.ResourceComponents; @@ -63,8 +63,8 @@ public class MeshManager } public static MeshHandle Create(GL GL, - ReadOnlySpan indices, ReadOnlySpan> vertices, - ReadOnlySpan> normals, ReadOnlySpan> uvs) + ReadOnlySpan indices, ReadOnlySpan vertices, + ReadOnlySpan normals, ReadOnlySpan uvs) { var vao = GL.GenVertexArray(); GL.BindVertexArray(vao); @@ -90,8 +90,8 @@ public class MeshManager return new(vao, indices.Length); } - public static MeshHandle Create(GL GL, ReadOnlySpan> vertices, - ReadOnlySpan> normals, ReadOnlySpan> uvs) + public static MeshHandle Create(GL GL, ReadOnlySpan vertices, + ReadOnlySpan normals, ReadOnlySpan uvs) { var vao = GL.GenVertexArray(); GL.BindVertexArray(vao); diff --git a/src/gaemstone.Client/Systems/Renderer.cs b/src/gaemstone.Client/Systems/Renderer.cs index 455d6c9..7259c6d 100644 --- a/src/gaemstone.Client/Systems/Renderer.cs +++ b/src/gaemstone.Client/Systems/Renderer.cs @@ -1,10 +1,10 @@ using System; using System.Diagnostics; +using System.Numerics; using System.Runtime.InteropServices; using gaemstone.ECS; using gaemstone.Flecs; using gaemstone.Utility; -using Silk.NET.Maths; using Silk.NET.OpenGL; using Silk.NET.Windowing; using static gaemstone.Client.Components.CameraComponents; @@ -60,7 +60,7 @@ public class Renderer var GL = canvas.GL; GL.UseProgram(_program); GL.Viewport(canvas.Size); - GL.ClearColor(Color.Black); + GL.ClearColor(canvas.BackgroundColor); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); } @@ -68,53 +68,53 @@ public class Renderer public void Render(Universe universe, [Game] Canvas canvas, in GlobalTransform cameraTransform, in Camera camera, CameraViewport? viewport) { - var color = viewport?.ClearColor ?? new(0x4B, 0x00, 0x82, 255); + var color = viewport?.ClearColor ?? Color.FromRGB(0.3f, 0.0f, 0.5f); var bounds = viewport?.Viewport ?? new(default, canvas.Size); var GL = canvas.GL; GL.Enable(EnableCap.ScissorTest); - GL.Viewport(bounds); GL.Scissor(bounds.Origin.X, bounds.Origin.Y, (uint)bounds.Size.X, (uint)bounds.Size.Y); + GL.Viewport(bounds); GL.Scissor(bounds.Left, bounds.Top, (uint)bounds.Width, (uint)bounds.Height); GL.ClearColor(color); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); GL.Disable(EnableCap.ScissorTest); // Create the camera's projection matrix. var cameraProjection = camera.IsOrthographic - ? Matrix4X4.CreateOrthographic( - bounds.Size.X, -bounds.Size.Y, + ? Matrix4x4.CreateOrthographic( + bounds.Width, -bounds.Height, camera.NearPlane, camera.FarPlane) - : Matrix4X4.CreatePerspectiveFieldOfView( + : Matrix4x4.CreatePerspectiveFieldOfView( camera.FieldOfView * MathF.PI / 180, // Degrees => Radians - (float)bounds.Size.X / bounds.Size.Y, // Aspect Ratio + (float)bounds.Width / bounds.Height, // Aspect Ratio camera.NearPlane, camera.FarPlane); // Get the camera's transform matrix and invert it. - Matrix4X4.Invert(cameraTransform, out var invertedTransform); + Matrix4x4.Invert(cameraTransform, out var invertedTransform); // Set the uniform to the combined transform and projection. var cameraMatrix = invertedTransform * cameraProjection; - GL.UniformMatrix4(_cameraMatrixUniform, 1, false, in cameraMatrix.Row1.X); + GL.UniformMatrix4(_cameraMatrixUniform, 1, false, in cameraMatrix.M11); - _renderEntityRule ??= new(universe, new(@" + _renderEntityRule ??= new(universe, new(""" GlobalTransform, (Mesh, $mesh), MeshHandle($mesh), ?(Texture, $tex), ?TextureHandle($tex) - ")); + """)); foreach (var iter in _renderEntityRule.Iter()) { var transforms = iter.Field(1); var meshes = iter.Field(3); - // var texPairs = iter.MaybeField(4); - var textures = iter.MaybeField(5); + // var texPairs = iter.FieldOrEmpty(4); + var textures = iter.FieldOrEmpty(5); for (var i = 0; i < iter.Count; i++) { var rTransform = transforms[i]; var mesh = meshes[i]; // var hasTexture = (texPairs.Length > 0); - var texture = textures.MaybeGet(i); + var texture = textures.GetOrNull(i); // If entity has Texture, bind it now. if (texture.HasValue) GL.BindTexture(texture.Value.Target, texture.Value.Handle); // Draw the mesh. - GL.UniformMatrix4(_modelMatrixUniform, 1, false, in rTransform.Value.Row1.X); + GL.UniformMatrix4(_modelMatrixUniform, 1, false, in rTransform.Value.M11); GL.BindVertexArray(mesh.Handle); if (!mesh.IsIndexed) GL.DrawArrays(PrimitiveType.Triangles, 0, (uint)mesh.Count); else unsafe { GL.DrawElements(PrimitiveType.Triangles, (uint)mesh.Count, DrawElementsType.UnsignedShort, null); } diff --git a/src/gaemstone.Client/Systems/Windowing.cs b/src/gaemstone.Client/Systems/Windowing.cs index 2782bb0..24de8c9 100644 --- a/src/gaemstone.Client/Systems/Windowing.cs +++ b/src/gaemstone.Client/Systems/Windowing.cs @@ -1,6 +1,6 @@ +using System.Drawing; using gaemstone.ECS; using gaemstone.Flecs; -using Silk.NET.Maths; using Silk.NET.OpenGL; using Silk.NET.Windowing; @@ -15,7 +15,7 @@ public class Windowing public GL GL { get; } public Canvas(GL gl) => GL = gl; - public Vector2D Size { get; set; } + public Size Size { get; set; } public Color BackgroundColor { get; set; } } @@ -29,7 +29,7 @@ public class Windowing [System] public static void ProcessWindow(GameWindow window, Canvas canvas) { - canvas.Size = window.Handle.Size; + canvas.Size = new(window.Handle.Size.X, window.Handle.Size.Y); window.Handle.DoEvents(); } } diff --git a/src/gaemstone.Client/Utility/ForkAwesome.cs b/src/gaemstone.Client/Utility/ForkAwesome.cs new file mode 100644 index 0000000..f917f77 --- /dev/null +++ b/src/gaemstone.Client/Utility/ForkAwesome.cs @@ -0,0 +1,819 @@ +namespace gaemstone.Client.Utility; + +public class ForkAwesome +{ + public const int Min = 0xf000; + public const int Max = 0xf372; + + public const string Glass = "\uF000"; + public const string Music = "\uF001"; + public const string Search = "\uF002"; + public const string EnvelopeO = "\uF003"; + public const string Heart = "\uF004"; + public const string Star = "\uF005"; + public const string StarO = "\uF006"; + public const string User = "\uF007"; + public const string Film = "\uF008"; + public const string ThLarge = "\uF009"; + public const string Th = "\uF00A"; + public const string ThList = "\uF00B"; + public const string Check = "\uF00C"; + public const string Times = "\uF00D"; + public const string SearchPlus = "\uF00E"; + public const string SearchMinus = "\uF010"; + public const string PowerOff = "\uF011"; + public const string Signal = "\uF012"; + public const string Cog = "\uF013"; + public const string TrashO = "\uF014"; + public const string Home = "\uF015"; + public const string FileO = "\uF016"; + public const string ClockO = "\uF017"; + public const string Road = "\uF018"; + public const string Download = "\uF019"; + public const string ArrowCircleODown = "\uF01A"; + public const string ArrowCircleOUp = "\uF01B"; + public const string Inbox = "\uF01C"; + public const string PlayCircleO = "\uF01D"; + public const string Repeat = "\uF01E"; + public const string Refresh = "\uF021"; + public const string ListAlt = "\uF022"; + public const string Lock = "\uF023"; + public const string Flag = "\uF024"; + public const string Headphones = "\uF025"; + public const string VolumeOff = "\uF026"; + public const string VolumeDown = "\uF027"; + public const string VolumeUp = "\uF028"; + public const string Qrcode = "\uF029"; + public const string Barcode = "\uF02A"; + public const string Tag = "\uF02B"; + public const string Tags = "\uF02C"; + public const string Book = "\uF02D"; + public const string Bookmark = "\uF02E"; + public const string Print = "\uF02F"; + public const string Camera = "\uF030"; + public const string Font = "\uF031"; + public const string Bold = "\uF032"; + public const string Italic = "\uF033"; + public const string TextHeight = "\uF034"; + public const string TextWidth = "\uF035"; + public const string AlignLeft = "\uF036"; + public const string AlignCenter = "\uF037"; + public const string AlignRight = "\uF038"; + public const string AlignJustify = "\uF039"; + public const string List = "\uF03A"; + public const string Outdent = "\uF03B"; + public const string Indent = "\uF03C"; + public const string VideoCamera = "\uF03D"; + public const string PictureO = "\uF03E"; + public const string Pencil = "\uF040"; + public const string MapMarker = "\uF041"; + public const string Adjust = "\uF042"; + public const string Tint = "\uF043"; + public const string PencilSquareO = "\uF044"; + public const string ShareSquareO = "\uF045"; + public const string CheckSquareO = "\uF046"; + public const string Arrows = "\uF047"; + public const string StepBackward = "\uF048"; + public const string FastBackward = "\uF049"; + public const string Backward = "\uF04A"; + public const string Play = "\uF04B"; + public const string Pause = "\uF04C"; + public const string Stop = "\uF04D"; + public const string Forward = "\uF04E"; + public const string FastForward = "\uF050"; + public const string StepForward = "\uF051"; + public const string Eject = "\uF052"; + public const string ChevronLeft = "\uF053"; + public const string ChevronRight = "\uF054"; + public const string PlusCircle = "\uF055"; + public const string MinusCircle = "\uF056"; + public const string TimesCircle = "\uF057"; + public const string CheckCircle = "\uF058"; + public const string QuestionCircle = "\uF059"; + public const string InfoCircle = "\uF05A"; + public const string Crosshairs = "\uF05B"; + public const string TimesCircleO = "\uF05C"; + public const string CheckCircleO = "\uF05D"; + public const string Ban = "\uF05E"; + public const string ArrowLeft = "\uF060"; + public const string ArrowRight = "\uF061"; + public const string ArrowUp = "\uF062"; + public const string ArrowDown = "\uF063"; + public const string Share = "\uF064"; + public const string Expand = "\uF065"; + public const string Compress = "\uF066"; + public const string Plus = "\uF067"; + public const string Minus = "\uF068"; + public const string Asterisk = "\uF069"; + public const string ExclamationCircle = "\uF06A"; + public const string Gift = "\uF06B"; + public const string Leaf = "\uF06C"; + public const string Fire = "\uF06D"; + public const string Eye = "\uF06E"; + public const string EyeSlash = "\uF070"; + public const string ExclamationTriangle = "\uF071"; + public const string Plane = "\uF072"; + public const string Calendar = "\uF073"; + public const string Random = "\uF074"; + public const string Comment = "\uF075"; + public const string Magnet = "\uF076"; + public const string ChevronUp = "\uF077"; + public const string ChevronDown = "\uF078"; + public const string Retweet = "\uF079"; + public const string ShoppingCart = "\uF07A"; + public const string Folder = "\uF07B"; + public const string FolderOpen = "\uF07C"; + public const string ArrowsV = "\uF07D"; + public const string ArrowsH = "\uF07E"; + public const string BarChart = "\uF080"; + public const string TwitterSquare = "\uF081"; + public const string FacebookSquare = "\uF082"; + public const string CameraRetro = "\uF083"; + public const string Key = "\uF084"; + public const string Cogs = "\uF085"; + public const string Comments = "\uF086"; + public const string ThumbsOUp = "\uF087"; + public const string ThumbsODown = "\uF088"; + public const string StarHalf = "\uF089"; + public const string HeartO = "\uF08A"; + public const string SignOut = "\uF08B"; + public const string LinkedinSquare = "\uF08C"; + public const string ThumbTack = "\uF08D"; + public const string ExternalLink = "\uF08E"; + public const string SignIn = "\uF090"; + public const string Trophy = "\uF091"; + public const string GithubSquare = "\uF092"; + public const string Upload = "\uF093"; + public const string LemonO = "\uF094"; + public const string Phone = "\uF095"; + public const string SquareO = "\uF096"; + public const string BookmarkO = "\uF097"; + public const string PhoneSquare = "\uF098"; + public const string Twitter = "\uF099"; + public const string Facebook = "\uF09A"; + public const string Github = "\uF09B"; + public const string Unlock = "\uF09C"; + public const string CreditCard = "\uF09D"; + public const string Rss = "\uF09E"; + public const string HddO = "\uF0A0"; + public const string Bullhorn = "\uF0A1"; + public const string BellO = "\uF0F3"; + public const string Certificate = "\uF0A3"; + public const string HandORight = "\uF0A4"; + public const string HandOLeft = "\uF0A5"; + public const string HandOUp = "\uF0A6"; + public const string HandODown = "\uF0A7"; + public const string ArrowCircleLeft = "\uF0A8"; + public const string ArrowCircleRight = "\uF0A9"; + public const string ArrowCircleUp = "\uF0AA"; + public const string ArrowCircleDown = "\uF0AB"; + public const string Globe = "\uF0AC"; + public const string GlobeE = "\uF304"; + public const string GlobeW = "\uF305"; + public const string Wrench = "\uF0AD"; + public const string Tasks = "\uF0AE"; + public const string Filter = "\uF0B0"; + public const string Briefcase = "\uF0B1"; + public const string ArrowsAlt = "\uF0B2"; + public const string Users = "\uF0C0"; + public const string Link = "\uF0C1"; + public const string Cloud = "\uF0C2"; + public const string Flask = "\uF0C3"; + public const string Scissors = "\uF0C4"; + public const string FilesO = "\uF0C5"; + public const string Paperclip = "\uF0C6"; + public const string FloppyO = "\uF0C7"; + public const string Square = "\uF0C8"; + public const string Bars = "\uF0C9"; + public const string ListUl = "\uF0CA"; + public const string ListOl = "\uF0CB"; + public const string Strikethrough = "\uF0CC"; + public const string Underline = "\uF0CD"; + public const string Table = "\uF0CE"; + public const string Magic = "\uF0D0"; + public const string Truck = "\uF0D1"; + public const string Pinterest = "\uF0D2"; + public const string PinterestSquare = "\uF0D3"; + public const string GooglePlusSquare = "\uF0D4"; + public const string GooglePlus = "\uF0D5"; + public const string Money = "\uF0D6"; + public const string CaretDown = "\uF0D7"; + public const string CaretUp = "\uF0D8"; + public const string CaretLeft = "\uF0D9"; + public const string CaretRight = "\uF0DA"; + public const string Columns = "\uF0DB"; + public const string Sort = "\uF0DC"; + public const string SortDesc = "\uF0DD"; + public const string SortAsc = "\uF0DE"; + public const string Envelope = "\uF0E0"; + public const string Linkedin = "\uF0E1"; + public const string Undo = "\uF0E2"; + public const string Gavel = "\uF0E3"; + public const string Tachometer = "\uF0E4"; + public const string CommentO = "\uF0E5"; + public const string CommentsO = "\uF0E6"; + public const string Bolt = "\uF0E7"; + public const string Sitemap = "\uF0E8"; + public const string Umbrella = "\uF0E9"; + public const string Clipboard = "\uF0EA"; + public const string LightbulbO = "\uF0EB"; + public const string Exchange = "\uF0EC"; + public const string CloudDownload = "\uF0ED"; + public const string CloudUpload = "\uF0EE"; + public const string UserMd = "\uF0F0"; + public const string Stethoscope = "\uF0F1"; + public const string Suitcase = "\uF0F2"; + public const string Bell = "\uF0A2"; + public const string Coffee = "\uF0F4"; + public const string Cutlery = "\uF0F5"; + public const string FileTextO = "\uF0F6"; + public const string BuildingO = "\uF0F7"; + public const string HospitalO = "\uF0F8"; + public const string Ambulance = "\uF0F9"; + public const string Medkit = "\uF0FA"; + public const string FighterJet = "\uF0FB"; + public const string Beer = "\uF0FC"; + public const string HSquare = "\uF0FD"; + public const string PlusSquare = "\uF0FE"; + public const string AngleDoubleLeft = "\uF100"; + public const string AngleDoubleRight = "\uF101"; + public const string AngleDoubleUp = "\uF102"; + public const string AngleDoubleDown = "\uF103"; + public const string AngleLeft = "\uF104"; + public const string AngleRight = "\uF105"; + public const string AngleUp = "\uF106"; + public const string AngleDown = "\uF107"; + public const string Desktop = "\uF108"; + public const string Laptop = "\uF109"; + public const string Tablet = "\uF10A"; + public const string Mobile = "\uF10B"; + public const string CircleO = "\uF10C"; + public const string QuoteLeft = "\uF10D"; + public const string QuoteRight = "\uF10E"; + public const string Spinner = "\uF110"; + public const string Circle = "\uF111"; + public const string Reply = "\uF112"; + public const string GithubAlt = "\uF113"; + public const string FolderO = "\uF114"; + public const string FolderOpenO = "\uF115"; + public const string SmileO = "\uF118"; + public const string FrownO = "\uF119"; + public const string MehO = "\uF11A"; + public const string Gamepad = "\uF11B"; + public const string KeyboardO = "\uF11C"; + public const string FlagO = "\uF11D"; + public const string FlagCheckered = "\uF11E"; + public const string Terminal = "\uF120"; + public const string Code = "\uF121"; + public const string ReplyAll = "\uF122"; + public const string StarHalfO = "\uF123"; + public const string LocationArrow = "\uF124"; + public const string Crop = "\uF125"; + public const string CodeFork = "\uF126"; + public const string ChainBroken = "\uF127"; + public const string Question = "\uF128"; + public const string Info = "\uF129"; + public const string Exclamation = "\uF12A"; + public const string Superscript = "\uF12B"; + public const string Subscript = "\uF12C"; + public const string Eraser = "\uF12D"; + public const string PuzzlePiece = "\uF12E"; + public const string Microphone = "\uF130"; + public const string MicrophoneSlash = "\uF131"; + public const string Shield = "\uF132"; + public const string CalendarO = "\uF133"; + public const string FireExtinguisher = "\uF134"; + public const string Rocket = "\uF135"; + public const string Maxcdn = "\uF136"; + public const string ChevronCircleLeft = "\uF137"; + public const string ChevronCircleRight = "\uF138"; + public const string ChevronCircleUp = "\uF139"; + public const string ChevronCircleDown = "\uF13A"; + public const string Html5 = "\uF13B"; + public const string Css3 = "\uF13C"; + public const string Anchor = "\uF13D"; + public const string UnlockAlt = "\uF13E"; + public const string Bullseye = "\uF140"; + public const string EllipsisH = "\uF141"; + public const string EllipsisV = "\uF142"; + public const string RssSquare = "\uF143"; + public const string PlayCircle = "\uF144"; + public const string Ticket = "\uF145"; + public const string MinusSquare = "\uF146"; + public const string MinusSquareO = "\uF147"; + public const string LevelUp = "\uF148"; + public const string LevelDown = "\uF149"; + public const string CheckSquare = "\uF14A"; + public const string PencilSquare = "\uF14B"; + public const string ExternalLinkSquare = "\uF14C"; + public const string ShareSquare = "\uF14D"; + public const string Compass = "\uF14E"; + public const string CaretSquareODown = "\uF150"; + public const string CaretSquareOUp = "\uF151"; + public const string CaretSquareORight = "\uF152"; + public const string Eur = "\uF153"; + public const string Gbp = "\uF154"; + public const string Usd = "\uF155"; + public const string Inr = "\uF156"; + public const string Jpy = "\uF157"; + public const string Rub = "\uF158"; + public const string Krw = "\uF159"; + public const string Btc = "\uF15A"; + public const string File = "\uF15B"; + public const string FileText = "\uF15C"; + public const string SortAlphaAsc = "\uF15D"; + public const string SortAlphaDesc = "\uF15E"; + public const string SortAmountAsc = "\uF160"; + public const string SortAmountDesc = "\uF161"; + public const string SortNumericAsc = "\uF162"; + public const string SortNumericDesc = "\uF163"; + public const string ThumbsUp = "\uF164"; + public const string ThumbsDown = "\uF165"; + public const string YoutubeSquare = "\uF166"; + public const string Youtube = "\uF167"; + public const string Xing = "\uF168"; + public const string XingSquare = "\uF169"; + public const string YoutubePlay = "\uF16A"; + public const string Dropbox = "\uF16B"; + public const string StackOverflow = "\uF16C"; + public const string Instagram = "\uF16D"; + public const string Flickr = "\uF16E"; + public const string Adn = "\uF170"; + public const string Bitbucket = "\uF171"; + public const string BitbucketSquare = "\uF172"; + public const string Tumblr = "\uF173"; + public const string TumblrSquare = "\uF174"; + public const string LongArrowDown = "\uF175"; + public const string LongArrowUp = "\uF176"; + public const string LongArrowLeft = "\uF177"; + public const string LongArrowRight = "\uF178"; + public const string Apple = "\uF179"; + public const string Windows = "\uF17A"; + public const string Android = "\uF17B"; + public const string Linux = "\uF17C"; + public const string Dribbble = "\uF17D"; + public const string Skype = "\uF17E"; + public const string Foursquare = "\uF180"; + public const string Trello = "\uF181"; + public const string Female = "\uF182"; + public const string Male = "\uF183"; + public const string Gratipay = "\uF184"; + public const string SunO = "\uF185"; + public const string MoonO = "\uF186"; + public const string Archive = "\uF187"; + public const string Bug = "\uF188"; + public const string Vk = "\uF189"; + public const string Weibo = "\uF18A"; + public const string Renren = "\uF18B"; + public const string Pagelines = "\uF18C"; + public const string StackExchange = "\uF18D"; + public const string ArrowCircleORight = "\uF18E"; + public const string ArrowCircleOLeft = "\uF190"; + public const string CaretSquareOLeft = "\uF191"; + public const string DotCircleO = "\uF192"; + public const string Wheelchair = "\uF193"; + public const string VimeoSquare = "\uF194"; + public const string Try = "\uF195"; + public const string PlusSquareO = "\uF196"; + public const string SpaceShuttle = "\uF197"; + public const string Slack = "\uF198"; + public const string EnvelopeSquare = "\uF199"; + public const string Wordpress = "\uF19A"; + public const string Openid = "\uF19B"; + public const string University = "\uF19C"; + public const string GraduationCap = "\uF19D"; + public const string Yahoo = "\uF19E"; + public const string Google = "\uF1A0"; + public const string Reddit = "\uF1A1"; + public const string RedditSquare = "\uF1A2"; + public const string StumbleuponCircle = "\uF1A3"; + public const string Stumbleupon = "\uF1A4"; + public const string Delicious = "\uF1A5"; + public const string Digg = "\uF1A6"; + public const string Drupal = "\uF1A9"; + public const string Joomla = "\uF1AA"; + public const string Language = "\uF1AB"; + public const string Fax = "\uF1AC"; + public const string Building = "\uF1AD"; + public const string Child = "\uF1AE"; + public const string Paw = "\uF1B0"; + public const string Spoon = "\uF1B1"; + public const string Cube = "\uF1B2"; + public const string Cubes = "\uF1B3"; + public const string Behance = "\uF1B4"; + public const string BehanceSquare = "\uF1B5"; + public const string Steam = "\uF1B6"; + public const string SteamSquare = "\uF1B7"; + public const string Recycle = "\uF1B8"; + public const string Car = "\uF1B9"; + public const string Taxi = "\uF1BA"; + public const string Tree = "\uF1BB"; + public const string Spotify = "\uF1BC"; + public const string Deviantart = "\uF1BD"; + public const string Soundcloud = "\uF1BE"; + public const string Database = "\uF1C0"; + public const string FilePdfO = "\uF1C1"; + public const string FileWordO = "\uF1C2"; + public const string FileExcelO = "\uF1C3"; + public const string FilePowerpointO = "\uF1C4"; + public const string FileImageO = "\uF1C5"; + public const string FileArchiveO = "\uF1C6"; + public const string FileAudioO = "\uF1C7"; + public const string FileVideoO = "\uF1C8"; + public const string FileCodeO = "\uF1C9"; + public const string Vine = "\uF1CA"; + public const string Codepen = "\uF1CB"; + public const string Jsfiddle = "\uF1CC"; + public const string LifeRing = "\uF1CD"; + public const string CircleONotch = "\uF1CE"; + public const string Rebel = "\uF1D0"; + public const string Empire = "\uF1D1"; + public const string GitSquare = "\uF1D2"; + public const string Git = "\uF1D3"; + public const string HackerNews = "\uF1D4"; + public const string TencentWeibo = "\uF1D5"; + public const string Qq = "\uF1D6"; + public const string Weixin = "\uF1D7"; + public const string PaperPlane = "\uF1D8"; + public const string PaperPlaneO = "\uF1D9"; + public const string History = "\uF1DA"; + public const string CircleThin = "\uF1DB"; + public const string Header = "\uF1DC"; + public const string Paragraph = "\uF1DD"; + public const string Sliders = "\uF1DE"; + public const string ShareAlt = "\uF1E0"; + public const string ShareAltSquare = "\uF1E1"; + public const string Bomb = "\uF1E2"; + public const string FutbolO = "\uF1E3"; + public const string Tty = "\uF1E4"; + public const string Binoculars = "\uF1E5"; + public const string Plug = "\uF1E6"; + public const string Slideshare = "\uF1E7"; + public const string Twitch = "\uF1E8"; + public const string Yelp = "\uF1E9"; + public const string NewspaperO = "\uF1EA"; + public const string Wifi = "\uF1EB"; + public const string Calculator = "\uF1EC"; + public const string Paypal = "\uF1ED"; + public const string GoogleWallet = "\uF1EE"; + public const string CcVisa = "\uF1F0"; + public const string CcMastercard = "\uF1F1"; + public const string CcDiscover = "\uF1F2"; + public const string CcAmex = "\uF1F3"; + public const string CcPaypal = "\uF1F4"; + public const string CcStripe = "\uF1F5"; + public const string BellSlash = "\uF1F6"; + public const string BellSlashO = "\uF1F7"; + public const string Trash = "\uF1F8"; + public const string Copyright = "\uF1F9"; + public const string At = "\uF1FA"; + public const string Eyedropper = "\uF1FB"; + public const string PaintBrush = "\uF1FC"; + public const string BirthdayCake = "\uF1FD"; + public const string AreaChart = "\uF1FE"; + public const string PieChart = "\uF200"; + public const string LineChart = "\uF201"; + public const string Lastfm = "\uF202"; + public const string LastfmSquare = "\uF203"; + public const string ToggleOff = "\uF204"; + public const string ToggleOn = "\uF205"; + public const string Bicycle = "\uF206"; + public const string Bus = "\uF207"; + public const string Ioxhost = "\uF208"; + public const string Angellist = "\uF209"; + public const string Cc = "\uF20A"; + public const string Ils = "\uF20B"; + public const string Meanpath = "\uF20C"; + public const string Buysellads = "\uF20D"; + public const string Connectdevelop = "\uF20E"; + public const string Dashcube = "\uF210"; + public const string Forumbee = "\uF211"; + public const string Leanpub = "\uF212"; + public const string Sellsy = "\uF213"; + public const string Shirtsinbulk = "\uF214"; + public const string Simplybuilt = "\uF215"; + public const string Skyatlas = "\uF216"; + public const string CartPlus = "\uF217"; + public const string CartArrowDown = "\uF218"; + public const string Diamond = "\uF219"; + public const string Ship = "\uF21A"; + public const string UserSecret = "\uF21B"; + public const string Motorcycle = "\uF21C"; + public const string StreetView = "\uF21D"; + public const string Heartbeat = "\uF21E"; + public const string Venus = "\uF221"; + public const string Mars = "\uF222"; + public const string Mercury = "\uF223"; + public const string Transgender = "\uF224"; + public const string TransgenderAlt = "\uF225"; + public const string VenusDouble = "\uF226"; + public const string MarsDouble = "\uF227"; + public const string VenusMars = "\uF228"; + public const string MarsStroke = "\uF229"; + public const string MarsStrokeV = "\uF22A"; + public const string MarsStrokeH = "\uF22B"; + public const string Neuter = "\uF22C"; + public const string Genderless = "\uF22D"; + public const string FacebookOfficial = "\uF230"; + public const string PinterestP = "\uF231"; + public const string Whatsapp = "\uF232"; + public const string Server = "\uF233"; + public const string UserPlus = "\uF234"; + public const string UserTimes = "\uF235"; + public const string Bed = "\uF236"; + public const string Viacoin = "\uF237"; + public const string Train = "\uF238"; + public const string Subway = "\uF239"; + public const string Medium = "\uF23A"; + public const string MediumSquare = "\uF2F8"; + public const string YCombinator = "\uF23B"; + public const string OptinMonster = "\uF23C"; + public const string Opencart = "\uF23D"; + public const string Expeditedssl = "\uF23E"; + public const string BatteryFull = "\uF240"; + public const string BatteryThreeQuarters = "\uF241"; + public const string BatteryHalf = "\uF242"; + public const string BatteryQuarter = "\uF243"; + public const string BatteryEmpty = "\uF244"; + public const string MousePointer = "\uF245"; + public const string ICursor = "\uF246"; + public const string ObjectGroup = "\uF247"; + public const string ObjectUngroup = "\uF248"; + public const string StickyNote = "\uF249"; + public const string StickyNoteO = "\uF24A"; + public const string CcJcb = "\uF24B"; + public const string CcDinersClub = "\uF24C"; + public const string Clone = "\uF24D"; + public const string BalanceScale = "\uF24E"; + public const string HourglassO = "\uF250"; + public const string HourglassStart = "\uF251"; + public const string HourglassHalf = "\uF252"; + public const string HourglassEnd = "\uF253"; + public const string Hourglass = "\uF254"; + public const string HandRockO = "\uF255"; + public const string HandPaperO = "\uF256"; + public const string HandScissorsO = "\uF257"; + public const string HandLizardO = "\uF258"; + public const string HandSpockO = "\uF259"; + public const string HandPointerO = "\uF25A"; + public const string HandPeaceO = "\uF25B"; + public const string Trademark = "\uF25C"; + public const string Registered = "\uF25D"; + public const string CreativeCommons = "\uF25E"; + public const string Gg = "\uF260"; + public const string GgCircle = "\uF261"; + public const string Tripadvisor = "\uF262"; + public const string Odnoklassniki = "\uF263"; + public const string OdnoklassnikiSquare = "\uF264"; + public const string GetPocket = "\uF265"; + public const string WikipediaW = "\uF266"; + public const string Safari = "\uF267"; + public const string Chrome = "\uF268"; + public const string Firefox = "\uF269"; + public const string Opera = "\uF26A"; + public const string InternetExplorer = "\uF26B"; + public const string Television = "\uF26C"; + public const string Contao = "\uF26D"; + public const string Num500px = "\uF26E"; + public const string Amazon = "\uF270"; + public const string CalendarPlusO = "\uF271"; + public const string CalendarMinusO = "\uF272"; + public const string CalendarTimesO = "\uF273"; + public const string CalendarCheckO = "\uF274"; + public const string Industry = "\uF275"; + public const string MapPin = "\uF276"; + public const string MapSigns = "\uF277"; + public const string MapO = "\uF278"; + public const string Map = "\uF279"; + public const string Commenting = "\uF27A"; + public const string CommentingO = "\uF27B"; + public const string Houzz = "\uF27C"; + public const string Vimeo = "\uF27D"; + public const string BlackTie = "\uF27E"; + public const string Fonticons = "\uF280"; + public const string RedditAlien = "\uF281"; + public const string Edge = "\uF282"; + public const string CreditCardAlt = "\uF283"; + public const string Codiepie = "\uF284"; + public const string Modx = "\uF285"; + public const string FortAwesome = "\uF286"; + public const string Usb = "\uF287"; + public const string ProductHunt = "\uF288"; + public const string Mixcloud = "\uF289"; + public const string Scribd = "\uF28A"; + public const string PauseCircle = "\uF28B"; + public const string PauseCircleO = "\uF28C"; + public const string StopCircle = "\uF28D"; + public const string StopCircleO = "\uF28E"; + public const string ShoppingBag = "\uF290"; + public const string ShoppingBasket = "\uF291"; + public const string Hashtag = "\uF292"; + public const string Bluetooth = "\uF293"; + public const string BluetoothB = "\uF294"; + public const string Percent = "\uF295"; + public const string Gitlab = "\uF296"; + public const string Wpbeginner = "\uF297"; + public const string Wpforms = "\uF298"; + public const string Envira = "\uF299"; + public const string UniversalAccess = "\uF29A"; + public const string WheelchairAlt = "\uF29B"; + public const string QuestionCircleO = "\uF29C"; + public const string Blind = "\uF29D"; + public const string AudioDescription = "\uF29E"; + public const string VolumeControlPhone = "\uF2A0"; + public const string Braille = "\uF2A1"; + public const string AssistiveListeningSystems = "\uF2A2"; + public const string AmericanSignLanguageInterpreting = "\uF2A3"; + public const string Deaf = "\uF2A4"; + public const string Glide = "\uF2A5"; + public const string GlideG = "\uF2A6"; + public const string SignLanguage = "\uF2A7"; + public const string LowVision = "\uF2A8"; + public const string Viadeo = "\uF2A9"; + public const string ViadeoSquare = "\uF2AA"; + public const string Snapchat = "\uF2AB"; + public const string SnapchatGhost = "\uF2AC"; + public const string SnapchatSquare = "\uF2AD"; + public const string FirstOrder = "\uF2B0"; + public const string Yoast = "\uF2B1"; + public const string Themeisle = "\uF2B2"; + public const string GooglePlusOfficial = "\uF2B3"; + public const string FontAwesome = "\uF2B4"; + public const string HandshakeO = "\uF2B5"; + public const string EnvelopeOpen = "\uF2B6"; + public const string EnvelopeOpenO = "\uF2B7"; + public const string Linode = "\uF2B8"; + public const string AddressBook = "\uF2B9"; + public const string AddressBookO = "\uF2BA"; + public const string AddressCard = "\uF2BB"; + public const string AddressCardO = "\uF2BC"; + public const string UserCircle = "\uF2BD"; + public const string UserCircleO = "\uF2BE"; + public const string UserO = "\uF2C0"; + public const string IdBadge = "\uF2C1"; + public const string IdCard = "\uF2C2"; + public const string IdCardO = "\uF2C3"; + public const string Quora = "\uF2C4"; + public const string FreeCodeCamp = "\uF2C5"; + public const string Telegram = "\uF2C6"; + public const string ThermometerFull = "\uF2C7"; + public const string ThermometerThreeQuarters = "\uF2C8"; + public const string ThermometerHalf = "\uF2C9"; + public const string ThermometerQuarter = "\uF2CA"; + public const string ThermometerEmpty = "\uF2CB"; + public const string Shower = "\uF2CC"; + public const string Bath = "\uF2CD"; + public const string Podcast = "\uF2CE"; + public const string WindowMaximize = "\uF2D0"; + public const string WindowMinimize = "\uF2D1"; + public const string WindowRestore = "\uF2D2"; + public const string WindowClose = "\uF2D3"; + public const string WindowCloseO = "\uF2D4"; + public const string Bandcamp = "\uF2D5"; + public const string Grav = "\uF2D6"; + public const string Etsy = "\uF2D7"; + public const string Imdb = "\uF2D8"; + public const string Ravelry = "\uF2D9"; + public const string Eercast = "\uF2DA"; + public const string Microchip = "\uF2DB"; + public const string SnowflakeO = "\uF2DC"; + public const string Superpowers = "\uF2DD"; + public const string Wpexplorer = "\uF2DE"; + public const string Meetup = "\uF2E0"; + public const string Mastodon = "\uF2E1"; + public const string MastodonAlt = "\uF2E2"; + public const string ForkAwesomeIcon = "\uF2E3"; + public const string Peertube = "\uF2E4"; + public const string Diaspora = "\uF2E5"; + public const string Friendica = "\uF2E6"; + public const string GnuSocial = "\uF2E7"; + public const string LiberapaySquare = "\uF2E8"; + public const string Liberapay = "\uF2E9"; + public const string Scuttlebutt = "\uF2EA"; + public const string Hubzilla = "\uF2EB"; + public const string SocialHome = "\uF2EC"; + public const string Artstation = "\uF2ED"; + public const string Discord = "\uF2EE"; + public const string DiscordAlt = "\uF2EF"; + public const string Patreon = "\uF2F0"; + public const string Snowdrift = "\uF2F1"; + public const string Activitypub = "\uF2F2"; + public const string Ethereum = "\uF2F3"; + public const string Keybase = "\uF2F4"; + public const string Shaarli = "\uF2F5"; + public const string ShaarliO = "\uF2F6"; + public const string KeyModern = "\uF2F7"; + public const string Xmpp = "\uF2F9"; + public const string ArchiveOrg = "\uF2FC"; + public const string Freedombox = "\uF2FD"; + public const string FacebookMessenger = "\uF2FE"; + public const string Debian = "\uF2FF"; + public const string MastodonSquare = "\uF300"; + public const string Tipeee = "\uF301"; + public const string React = "\uF302"; + public const string Dogmazic = "\uF303"; + public const string Zotero = "\uF309"; + public const string Nodejs = "\uF308"; + public const string Nextcloud = "\uF306"; + public const string NextcloudSquare = "\uF307"; + public const string Hackaday = "\uF30A"; + public const string Laravel = "\uF30B"; + public const string Signalapp = "\uF30C"; + public const string Gnupg = "\uF30D"; + public const string Php = "\uF30E"; + public const string Ffmpeg = "\uF30F"; + public const string Joplin = "\uF310"; + public const string Syncthing = "\uF311"; + public const string Inkscape = "\uF312"; + public const string MatrixOrg = "\uF313"; + public const string Pixelfed = "\uF314"; + public const string Bootstrap = "\uF315"; + public const string DevTo = "\uF316"; + public const string Hashnode = "\uF317"; + public const string Jirafeau = "\uF318"; + public const string Emby = "\uF319"; + public const string Wikidata = "\uF31A"; + public const string Gimp = "\uF31B"; + public const string C = "\uF31C"; + public const string Digitalocean = "\uF31D"; + public const string Att = "\uF31E"; + public const string Gitea = "\uF31F"; + public const string FileEpub = "\uF321"; + public const string Python = "\uF322"; + public const string Archlinux = "\uF323"; + public const string Pleroma = "\uF324"; + public const string Unsplash = "\uF325"; + public const string Hackster = "\uF326"; + public const string SpellCheck = "\uF327"; + public const string Moon = "\uF328"; + public const string Sun = "\uF329"; + public const string FDroid = "\uF32A"; + public const string Biometric = "\uF32B"; + public const string Wire = "\uF32C"; + public const string TorOnion = "\uF32E"; + public const string VolumeMute = "\uF32F"; + public const string BellRinging = "\uF32D"; + public const string BellRingingO = "\uF330"; + public const string Hal = "\uF333"; + public const string Jupyter = "\uF335"; + public const string Julia = "\uF334"; + public const string Classicpress = "\uF331"; + public const string ClassicpressCircle = "\uF332"; + public const string OpenCollective = "\uF336"; + public const string Orcid = "\uF337"; + public const string Researchgate = "\uF338"; + public const string Funkwhale = "\uF339"; + public const string Askfm = "\uF33A"; + public const string Blockstack = "\uF33B"; + public const string Boardgamegeek = "\uF33C"; + public const string Bunny = "\uF35F"; + public const string Buymeacoffee = "\uF33D"; + public const string CcBy = "\uF33E"; + public const string CcCc = "\uF33F"; + public const string CcNcEu = "\uF341"; + public const string CcNcJp = "\uF342"; + public const string CcNc = "\uF340"; + public const string CcNd = "\uF343"; + public const string CcPd = "\uF344"; + public const string CcRemix = "\uF345"; + public const string CcSa = "\uF346"; + public const string CcShare = "\uF347"; + public const string CcZero = "\uF348"; + public const string ConwayGlider = "\uF349"; + public const string Csharp = "\uF34A"; + public const string EmailBulk = "\uF34B"; + public const string EmailBulkO = "\uF34C"; + public const string Gnu = "\uF34D"; + public const string GooglePlay = "\uF34E"; + public const string Heroku = "\uF34F"; + public const string HomeAssistant = "\uF350"; + public const string Java = "\uF351"; + public const string Mariadb = "\uF352"; + public const string Markdown = "\uF353"; + public const string Mysql = "\uF354"; + public const string Nordcast = "\uF355"; + public const string Plume = "\uF356"; + public const string Postgresql = "\uF357"; + public const string SassAlt = "\uF359"; + public const string Sass = "\uF358"; + public const string Skate = "\uF35A"; + public const string Sketchfab = "\uF35B"; + public const string Tex = "\uF35C"; + public const string Textpattern = "\uF35D"; + public const string Unity = "\uF35E"; + public const string Hedgedoc = "\uF360"; + public const string Fediverse = "\uF361"; + public const string Proftpd = "\uF362"; + public const string Osi = "\uF363"; + public const string Eyeem = "\uF364"; + public const string EyeemO = "\uF365"; + public const string Codeberg = "\uF366"; + public const string Discourse = "\uF367"; + public const string Mumble = "\uF368"; + public const string Freedesktop = "\uF369"; + public const string Javascript = "\uF370"; + public const string Lemmy = "\uF371"; + public const string Ipfs = "\uF372"; + public const string Canonical = "\uF36A"; + public const string Ubuntu = "\uF36B"; +} diff --git a/src/gaemstone.Client/Utility/ImGuiUtility.cs b/src/gaemstone.Client/Utility/ImGuiUtility.cs new file mode 100644 index 0000000..92f5283 --- /dev/null +++ b/src/gaemstone.Client/Utility/ImGuiUtility.cs @@ -0,0 +1,55 @@ +using System.Numerics; +using ImGuiNET; +using ImGuiInternal = ImGuiNET.Internal.ImGui; + +namespace gaemstone.Client.Utility; + +public static class ImGuiUtility +{ + public static bool UIButtonToggle(int index, string label, string tooltip, ref bool enabled) + { if (UIButton(index, label, tooltip, enabled)) enabled = !enabled; return enabled; } + public static bool UIButton(int index, string label, string tooltip, bool active) + { + var start = new Vector2(4, 4); + var buttonSize = new Vector2(32, 32); + var pos = start + new Vector2(buttonSize.X + 4, 0) * index; + + ImGui.SetNextWindowPos(pos, ImGuiCond.Always); + ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, Vector2.Zero); + ImGui.Begin("UIToggle" + index, + ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoBackground | + ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize | + ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoDocking); + ImGui.PopStyleVar(); + + if (!active) ImGui.PushStyleVar(ImGuiStyleVar.Alpha, 0.6f); + var clicked = ImGui.Button(label, buttonSize); + if (!active) ImGui.PopStyleVar(); + if (ImGui.IsItemHovered()) ImGui.SetTooltip(tooltip); + + ImGui.End(); + return clicked; + } + + // public static void AdvancedTooltip(string brief, string detail) + // { + // if (!ImGui.IsItemHovered()) return; + // ImGui.BeginTooltip(); + // ImGui.PushFont(ImGui.GetIO().Fonts.Fonts[1]); + // ImGui.TextUnformatted(brief); + // ImGui.PopFont(); + // ImGui.Text(detail); + // ImGui.EndTooltip(); + // } + + public static void TextCentered(string text, Vector2 size) + { + var pos = ImGui.GetCursorScreenPos(); + ImGuiInternal.ItemSize(size, 0); + if (!ImGuiInternal.ItemAdd(new() { Min = pos, Max = pos + size }, 0)) return; + + var textSize = ImGui.CalcTextSize(text); + var textPos = pos + (size - textSize) / 2; + ImGuiInternal.RenderText(textPos, text); + } +} diff --git a/src/gaemstone.Client/gaemstone.Client.csproj b/src/gaemstone.Client/gaemstone.Client.csproj index fb6d528..9965755 100644 --- a/src/gaemstone.Client/gaemstone.Client.csproj +++ b/src/gaemstone.Client/gaemstone.Client.csproj @@ -3,9 +3,9 @@ preview net7.0 + true disable enable - true @@ -13,8 +13,9 @@ - + + diff --git a/src/gaemstone.ECS b/src/gaemstone.ECS new file mode 160000 index 0000000..f9fa808 --- /dev/null +++ b/src/gaemstone.ECS @@ -0,0 +1 @@ +Subproject commit f9fa808d6842f5b208bbdfa1925f156342ed8a60 diff --git a/src/gaemstone/Components/TransformComponents.cs b/src/gaemstone/Components/TransformComponents.cs index d536c64..5ef5736 100644 --- a/src/gaemstone/Components/TransformComponents.cs +++ b/src/gaemstone/Components/TransformComponents.cs @@ -1,17 +1,17 @@ +using System.Numerics; using gaemstone.ECS; -using Silk.NET.Maths; namespace gaemstone.Components; [Module] public class TransformComponents { - [Component] + [Symbol, Component] public struct GlobalTransform { - public Matrix4X4 Value; - public GlobalTransform(Matrix4X4 value) => Value = value; - public static implicit operator GlobalTransform(in Matrix4X4 value) => new(value); - public static implicit operator Matrix4X4(in GlobalTransform index) => index.Value; + public Matrix4x4 Value; + public GlobalTransform(Matrix4x4 value) => Value = value; + public static implicit operator GlobalTransform(in Matrix4x4 value) => new(value); + public static implicit operator Matrix4x4(in GlobalTransform index) => index.Value; } } diff --git a/src/gaemstone/Doc.cs b/src/gaemstone/Doc.cs new file mode 100644 index 0000000..6534099 --- /dev/null +++ b/src/gaemstone/Doc.cs @@ -0,0 +1,86 @@ +using System; +using gaemstone.ECS; +using static gaemstone.Flecs.Core; + +namespace gaemstone; + +[Module] +public class Doc +{ + [Tag] + public struct DisplayType { } + + [Tag] + public struct Relation { } + + + // TODO: These need to actually be read at some point. + + ///

+ /// A display name for this entity. + /// Names in the entity hierarchy must be unique within the parent entity, + /// This doesn't apply to display names - they are mostly informational. + /// Displayed in the Entity Inspector. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] + public class Name : Attribute + { + public string Value { get; } + public Name(string value) => Value = value; + } + + /// + /// A brief description of this entity. + /// Displayed in the Entity Inspector. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] + public class Brief : Attribute + { + public string Value { get; } + public Brief(string value) => Value = value; + } + + /// + /// A detailed description, or full documentation, of this entity's purpose and behaviors. + /// It's encouraged to use multiple paragraphs and markdown formatting if necessary. + /// Displayed in the Entity Inspector. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] + public class Detail : Attribute + { + public string Value { get; } + public Detail(string value) => Value = value; + } + + /// + /// A link to a website relating to this entity, such as + /// a module's repository, or further documentation. + /// Displayed in the Entity Inspector. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] + public class Link : Attribute + { + public string Value { get; } + public Link(string value) => Value = value; + } + + /// + /// A custom color to represent this entity. + /// Displayed in the Entity Inspector. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] + public class Color : Attribute + { + public float Red { get; } + public float Green { get; } + public float Blue { get; } + + public Color(float red, float green, float blue) + { + if ((red < 0.0f) || (red > 1.0f)) throw new ArgumentOutOfRangeException(nameof(red )); + if ((green < 0.0f) || (green > 1.0f)) throw new ArgumentOutOfRangeException(nameof(green)); + if ((blue < 0.0f) || (blue > 1.0f)) throw new ArgumentOutOfRangeException(nameof(blue )); + Red = red; Green = green; Blue = blue; + } + } +} diff --git a/src/gaemstone/ECS/Attributes.cs b/src/gaemstone/ECS/Attributes.cs index e59b81b..3ccf709 100644 --- a/src/gaemstone/ECS/Attributes.cs +++ b/src/gaemstone/ECS/Attributes.cs @@ -7,21 +7,43 @@ namespace gaemstone.ECS; /// When present on an attribute attached to a type that's part of a module /// being registered automatically through , /// an entity is automatically created and -/// called on it, meaning it can be looked up using . +/// called on it, meaning it can be looked up using . ///
public interface ICreateEntityAttribute { } +[AttributeUsage(AttributeTargets.Struct)] +public class EntityAttribute : Attribute, ICreateEntityAttribute { } + +/// +/// Use a custom name or path for this entity instead of the type's name. +/// +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] +public class PathAttribute : Attribute, ICreateEntityAttribute +{ + public string Value { get; } + public PathAttribute(string value) => Value = value; +} + +/// +/// Register the entity under a globally unique symbol. +/// Uses the type's name by default. +/// +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] +public class SymbolAttribute : Attribute, ICreateEntityAttribute +{ + public string? Value { get; } + public SymbolAttribute() { } + public SymbolAttribute(string value) => Value = value; +} + /// /// A singleton is a single instance of a tag or component that can be retrieved /// without explicitly specifying an entity in a query, where it is equivalent /// to with itself as the generic type parameter. /// [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] -public class SingletonAttribute : Attribute -{ - /// Whether to add the entity to itself on registration. - public bool AutoAdd { get; init; } = false; -} +public class SingletonAttribute : Attribute, ICreateEntityAttribute + { public bool AutoAdd { get; init; } = true; } /// /// Register the proxied type instead of the one marked with this attribute. @@ -46,6 +68,25 @@ public class AddAttribute : AddEntityAttribute public class AddAttribute : AddRelationAttribute { public AddAttribute() : base(typeof(TRelation), typeof(TTarget)) { } } +/// +/// Marked entity represents a relationship type. +/// It may be used as the "relation" in a pair. +/// +/// +/// The relationship may have component data associated with +/// it when added to an entity under these circumstances: +/// +/// If marked as a , does not carry data. +/// If marked as a , carries the relation's data. +/// If marked with neither, will carry the target's data, if it's a component. +/// +/// +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] +public class RelationAttribute : Attribute, ICreateEntityAttribute { } + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] +public class ComponentAttribute : Attribute, ICreateEntityAttribute { } + /// [AttributeUsage(AttributeTargets.Struct)] public class TagAttribute : AddAttribute, ICreateEntityAttribute { } diff --git a/src/gaemstone/ECS/Component.cs b/src/gaemstone/ECS/Component.cs deleted file mode 100644 index 1e66053..0000000 --- a/src/gaemstone/ECS/Component.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] -public class ComponentAttribute : EntityAttribute -{ - public ComponentAttribute() { } - public ComponentAttribute(params string[] path) : base(path) { } -} - -public static class ComponentExtensions -{ - public unsafe static EntityRef CreateComponent(this EntityRef entity) - => entity.CreateComponent(typeof(T)); - public unsafe static EntityRef CreateComponent(this EntityRef entity, Type type) - { - // TODO: Do some additional sanity checking for this type. - - var typeInfo = default(ecs_type_info_t); - if (type.IsPrimitive) throw new ArgumentException( - "Must not be primitive", nameof(type)); - var wrapper = TypeWrapper.For(type); - if (type.IsValueType && !wrapper.IsUnmanaged) throw new Exception( - "Struct component must satisfy the unmanaged constraint. " + - "Consider making it a class if you need to store references."); - typeInfo.size = wrapper.Size; - typeInfo.alignment = wrapper.Size; - - var desc = new ecs_component_desc_t { entity = entity, type = typeInfo }; - ecs_component_init(entity.Universe, &desc); - return entity.CreateLookup(type); - } -} diff --git a/src/gaemstone/ECS/ComponentHooks.cs b/src/gaemstone/ECS/ComponentHooks.cs deleted file mode 100644 index 427add4..0000000 --- a/src/gaemstone/ECS/ComponentHooks.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -// FIXME: This API is flawed. -public unsafe class ComponentHooks -{ - public EntityRef Entity { get; } - public ecs_type_hooks_t* Handle { get; } - - private Action? _onAdd; - public event Action? OnAdd { - add { if ((_onAdd += value) != null) Handle->on_add.Data.Pointer = &CallbackOnAdd; } - remove { if ((_onAdd -= value) == null) Handle->on_add.Data.Pointer = null; } - } - private Action? _onSet; - public event Action? OnSet { - add { if ((_onSet += value) != null) Handle->on_set.Data.Pointer = &CallbackOnSet; } - remove { if ((_onSet -= value) == null) Handle->on_set.Data.Pointer = null; } - } - private Action? _onRemove; - public event Action? OnRemove { - add { if ((_onRemove += value) != null) Handle->on_remove.Data.Pointer = &CallbackOnRemove; } - remove { if ((_onRemove -= value) == null) Handle->on_remove.Data.Pointer = null; } - } - - private Action? _constructor; - public event Action? Construct { - add { if ((_constructor += value) != null) Handle->ctor.Data.Pointer = &CallbackConstructor; } - remove { if ((_constructor -= value) == null) Handle->ctor.Data.Pointer = null; } - } - private Action? _destructor; - public event Action? Destruct { - add { if ((_destructor += value) != null) Handle->dtor.Data.Pointer = &CallbackDestructor; } - remove { if ((_destructor -= value) == null) Handle->dtor.Data.Pointer = null; } - } - private Action? _copy; - public event Action? Copy { - add { if ((_copy += value) != null) Handle->copy.Data.Pointer = &CallbackCopy; } - remove { if ((_copy -= value) == null) Handle->copy.Data.Pointer = null; } - } - private Action? _move; - public event Action? Move { - add { if ((_move += value) != null) Handle->move.Data.Pointer = &CallbackMove; } - remove { if ((_move -= value) == null) Handle->move.Data.Pointer = null; } - } - - internal ComponentHooks(EntityRef entity, ecs_type_hooks_t* handle) - { Entity = entity; Handle = handle; } - - - private static ComponentHooks Get(void* ptr) - => CallbackContextHelper.Get((nint)ptr); - - [UnmanagedCallersOnly] private static void CallbackOnAdd(ecs_iter_t* it) - { var hooks = Get(it->binding_ctx); hooks._onAdd?.Invoke(new(hooks.Entity.Universe, null, *it)); } - [UnmanagedCallersOnly] private static void CallbackOnSet(ecs_iter_t* it) - { var hooks = Get(it->binding_ctx); hooks._onSet?.Invoke(new(hooks.Entity.Universe, null, *it)); } - [UnmanagedCallersOnly] private static void CallbackOnRemove(ecs_iter_t* it) - { var hooks = Get(it->binding_ctx); hooks._onRemove?.Invoke(new(hooks.Entity.Universe, null, *it)); } - - [UnmanagedCallersOnly] private static void CallbackConstructor(void* ptr, int count, ecs_type_info_t* type) - => Get(type->hooks.binding_ctx)._constructor?.Invoke((nint)ptr, count); - [UnmanagedCallersOnly] private static void CallbackDestructor(void* ptr, int count, ecs_type_info_t* type) - => Get(type->hooks.binding_ctx)._destructor?.Invoke((nint)ptr, count); - [UnmanagedCallersOnly] private static void CallbackCopy(void* dest, void* src, int count, ecs_type_info_t* type) - => Get(type->hooks.binding_ctx)._copy?.Invoke((nint)dest, (nint)src, count); - [UnmanagedCallersOnly] private static void CallbackMove(void* dest, void* src, int count, ecs_type_info_t* type) - => Get(type->hooks.binding_ctx)._move?.Invoke((nint)dest, (nint)src, count); -} - -public unsafe static class ComponentHooksExtensions -{ - public static ComponentHooks GetComponentHooks(this EntityRef entity) - { - var handle = ecs_get_hooks_id(entity.Universe, entity); - if (handle == null) throw new ArgumentException($"No type info found for {entity}"); - - if (handle->binding_ctx == null) { - var hooks = new ComponentHooks(entity, handle); - handle->binding_ctx = (void*)CallbackContextHelper.Create(hooks); - return hooks; - } else { - return CallbackContextHelper.Get((nint)handle->binding_ctx); - } - } -} diff --git a/src/gaemstone/ECS/Entity.cs b/src/gaemstone/ECS/Entity.cs deleted file mode 100644 index b64df7d..0000000 --- a/src/gaemstone/ECS/Entity.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -[AttributeUsage(AttributeTargets.Struct)] -public class EntityAttribute : Attribute, ICreateEntityAttribute -{ - /// If specified, uses this path instead of the default name. - public string[]? Path { get; } - - /// If true, the path will be absolute instead of relative. - public bool Global { get; init; } - - public EntityAttribute() { } - public EntityAttribute(params string[] path) - { - if (path.Length == 0) throw new ArgumentException( - "Path must not be empty", nameof(path)); - Path = path; - } -} - -public readonly struct Entity - : IEquatable -{ - public static readonly Entity None = default; - - public readonly ecs_entity_t Value; - public uint ID => (uint)Value.Data; - - public bool IsSome => Value.Data != 0; - public bool IsNone => Value.Data == 0; - - public Entity(ecs_entity_t value) => Value = value; - - public bool Equals(Entity other) => Value.Data == other.Value.Data; - public override bool Equals(object? obj) => (obj is Entity other) && Equals(other); - public override int GetHashCode() => Value.Data.GetHashCode(); - public override string? ToString() => $"Entity(0x{Value.Data.Data:X})"; - - public static bool operator ==(Entity left, Entity right) => left.Equals(right); - public static bool operator !=(Entity left, Entity right) => !left.Equals(right); - - public static implicit operator ecs_entity_t(Entity e) => e.Value; - public static implicit operator Identifier(Entity e) => new(e.Value.Data); - public static implicit operator ecs_id_t(Entity e) => e.Value.Data; -} diff --git a/src/gaemstone/ECS/EntityBase.cs b/src/gaemstone/ECS/EntityBase.cs deleted file mode 100644 index a494627..0000000 --- a/src/gaemstone/ECS/EntityBase.cs +++ /dev/null @@ -1,48 +0,0 @@ -using static gaemstone.Flecs.Core; - -namespace gaemstone.ECS; - -public abstract class EntityBase -{ - public abstract Universe Universe { get; } - - public abstract TReturn Add(Identifier id); - public abstract TReturn Remove(Identifier id); - public abstract bool Has(Identifier id); - - public abstract T Get(); - public abstract T? MaybeGet() where T : unmanaged; - public abstract T? MaybeGet(T _ = null!) where T : class; - public abstract ref T GetMut() where T : unmanaged; - public abstract ref T GetRefOrNull() where T : unmanaged; - public abstract ref T GetRefOrThrow() where T : unmanaged; - public abstract void Modified(); - - public abstract TReturn Set(in T value) where T : unmanaged; - public abstract TReturn Set(T obj) where T : class; - - public TReturn Add(string symbol) => Add(Universe.LookupSymbolOrThrow(symbol)); - public TReturn Add() => Add(Universe.LookupOrThrow(typeof(T))); - public TReturn Add(Entity relation, Entity target) => Add(Identifier.Pair(relation, target)); - public TReturn Add(Entity target) => Add(Universe.LookupOrThrow(), target); - public TReturn Add() => Add(Universe.LookupOrThrow(), Universe.LookupOrThrow()); - - public TReturn Remove(string symbol) => Remove(Universe.LookupSymbolOrThrow(symbol)); - public TReturn Remove() => Remove(Universe.LookupOrThrow(typeof(T))); - public TReturn Remove(Entity relation, Entity target) => Remove(Identifier.Pair(relation, target)); - public TReturn Remove(Entity target) => Remove(Universe.LookupOrThrow(), target); - public TReturn Remove() => Remove(Universe.LookupOrThrow(), Universe.LookupOrThrow()); - - public bool Has(string symbol) => Has(Universe.LookupSymbolOrThrow(symbol)); - public bool Has() => Has(Universe.LookupOrThrow(typeof(T))); - public bool Has(Entity relation, Entity target) => Has(Identifier.Pair(relation, target)); - public bool Has(Entity target) => Has(Universe.LookupOrThrow(), target); - public bool Has() => Has(Universe.LookupOrThrow(), Universe.LookupOrThrow()); - - public TReturn ChildOf(Entity parent) => Add(parent); - public TReturn ChildOf() => Add(); - - public TReturn Disable() => Add(); - public TReturn Enable() => Remove(); - public bool IsDisabled => Has(); -} diff --git a/src/gaemstone/ECS/EntityBuilder.cs b/src/gaemstone/ECS/EntityBuilder.cs deleted file mode 100644 index be80477..0000000 --- a/src/gaemstone/ECS/EntityBuilder.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.Collections.Generic; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public class EntityBuilder - : EntityBase -{ - public override Universe Universe { get; } - - /// Set to modify existing entity (optional). - public Entity ID { get; set; } - - /// - /// Path of the entity. If no entity is provided, an entity with this path - /// will be looked up first. When an entity is provided, the path will be - /// verified with the existing entity. - /// - public EntityPath? Path { get; set; } - - /// - /// Optional entity symbol. A symbol is an unscoped identifier that can - /// be used to lookup an entity. The primary use case for this is to - /// associate the entity with a language identifier, such as a type or - /// function name, where these identifiers differ from the name they are - /// registered with in flecs. - /// - public EntityBuilder Symbol(string symbol) { _symbol = symbol; return this; } - private string? _symbol = null; - - /// - /// When set to true, a low id (typically reserved for components) - /// will be used to create the entity, if no id is specified. - /// - public bool UseLowID { get; set; } - - /// IDs to add to the new or existing entity. - private readonly HashSet _toAdd = new(); - private Entity _parent = Entity.None; - - /// String expression with components to add. - public string? Expression { get; } - - /// Actions to run once the entity has been created. - private readonly List> _toSet = new(); - - public EntityBuilder(Universe universe, EntityPath? path = null) - { Universe = universe; Path = path; } - - public override EntityBuilder Add(Identifier id) - { - // If adding a ChildOf relation, store the parent separately. - if (id.AsPair(Universe) is (EntityRef relation, EntityRef target) && - (relation == Universe.ChildOf)) { _parent = target; return this; } - - if (_toAdd.Count == 31) throw new NotSupportedException( - "Must not add more than 31 IDs at once with EntityBuilder"); - _toAdd.Add(id); - - return this; - } - public override EntityBuilder Remove(Identifier id) - => throw new NotSupportedException(); - public override bool Has(Identifier id) - => !ecs_id_is_wildcard(id) ? _toAdd.Contains(id) - : throw new NotSupportedException(); // TODO: Support wildcard. - - public override T Get() => throw new NotSupportedException(); - public override T? MaybeGet() => throw new NotSupportedException(); - public override T? MaybeGet(T _ = null!) where T : class => throw new NotSupportedException(); - public override ref T GetMut() => throw new NotSupportedException(); - public override ref T GetRefOrNull() => throw new NotSupportedException(); - public override ref T GetRefOrThrow() => throw new NotSupportedException(); - public override void Modified() => throw new NotImplementedException(); - - public override EntityBuilder Set(in T value) - // "in" can't be used with lambdas, so we make a local copy. - { var copy = value; _toSet.Add(e => e.Set(copy)); return this; } - - public override EntityBuilder Set(T obj) - { _toSet.Add(e => e.Set(obj)); return this; } - - public unsafe EntityRef Build() - { - var parent = _parent; - - if (Path != null) { - if (parent.IsSome && Path.IsAbsolute) throw new InvalidOperationException( - "Entity already has parent set (via ChildOf), so path must not be absolute"); - // If path specifies more than just a name, ensure the parent entity exists. - if (Path.Count > 1) parent = EntityPath.EnsureEntityExists(Universe, parent, Path.Parent!); - } - - using var alloc = TempAllocator.Use(); - var desc = new ecs_entity_desc_t { - id = ID, - name = (Path != null) ? alloc.AllocateCString(Path.Name.AsSpan()) : default, - symbol = alloc.AllocateCString(_symbol), - add_expr = alloc.AllocateCString(Expression), - use_low_id = UseLowID, - sep = CStringExtensions.ETX, - }; - - var add = desc.add; var index = 0; - if (parent.IsSome) add[index++] = Identifier.Pair(Universe.ChildOf, parent); - foreach (var id in _toAdd) add[index++] = id; - - var entityID = ecs_entity_init(Universe, &desc); - var entity = new EntityRef(Universe, new(entityID)); - foreach (var action in _toSet) action(entity); - - return entity; - } -} diff --git a/src/gaemstone/ECS/EntityPath.cs b/src/gaemstone/ECS/EntityPath.cs deleted file mode 100644 index 48f7ce1..0000000 --- a/src/gaemstone/ECS/EntityPath.cs +++ /dev/null @@ -1,233 +0,0 @@ -using System; -using System.Buffers; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Text; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public class EntityPath -{ - private readonly byte[][] _parts; - - public bool IsAbsolute { get; } - public bool IsRelative => !IsAbsolute; - public int Count => _parts.Length; - - public UTF8View Name => this[^1]; - public EntityPath? Parent => (Count > 1) ? new(IsAbsolute, _parts[..^1]) : null; - - public UTF8View this[int index] - => (index >= 0 && index < Count) ? new(_parts[index].AsSpan()[..^1]) - : throw new ArgumentOutOfRangeException(nameof(index)); - - public EntityPath this[Range range] - => new(IsAbsolute && (range.GetOffsetAndLength(Count).Offset == 0), _parts[range]); - - internal EntityPath(bool absolute, params byte[][] parts) - { - if (parts.Length == 0) throw new ArgumentException( - "Must have at least one part", nameof(parts)); - IsAbsolute = absolute; - _parts = parts; - } - - public EntityPath(params string[] parts) - : this(false, parts) { } - public EntityPath(bool absolute, params string[] parts) - : this(absolute, parts.Select(part => { - if (GetNameValidationError(part) is string error) - throw new ArgumentException(error); - var byteCount = Encoding.UTF8.GetByteCount(part); - // Includes NUL character at the end of bytes. - var bytes = new byte[byteCount + 1]; - Encoding.UTF8.GetBytes(part, bytes); - return bytes; - }).ToArray()) { } - - public static bool TryParse(string str, [NotNullWhen(true)] out EntityPath? result) - { - result = null; - if (str.Length == 0) return false; - - var strSpan = str.AsSpan(); - var isAbsolute = (str[0] == '/'); - if (isAbsolute) strSpan = strSpan[1..]; - - var numSeparators = 0; - foreach (var chr in strSpan) if (chr == '/') numSeparators++; - - var index = 0; - var parts = new byte[numSeparators + 1][]; - foreach (var part in strSpan.Split('/')) { - if (GetNameValidationError(part) != null) return false; - var byteCount = Encoding.UTF8.GetByteCount(part); - // Includes NUL character at the end of bytes. - var bytes = new byte[byteCount + 1]; - Encoding.UTF8.GetBytes(part, bytes); - parts[index++] = bytes; - } - - result = new(isAbsolute, parts); - return true; - } - - public static EntityPath Parse(string str) - { - if (str.Length == 0) throw new ArgumentException( - "String must not be empty", nameof(str)); - var parts = str.Split('/'); - // If string starts with a slash, first part will be empty, so create an absolute path. - return (parts[0].Length == 0) ? new(true, parts[1..]) : new(parts); - } - - public static string? GetNameValidationError(ReadOnlySpan name) - { - if (name.Length == 0) return "Must not be empty"; - // NOTE: This is a hopefully straightforward way to also prevent "." - // and ".." to be part of paths which may access the file system. - if (name[0] == '.') return "Must not begin with a dot"; - foreach (var chr in name) if (char.IsControl(chr)) - return "Must not contain contol characters"; - return null; - } - - // private static readonly Rune[] _validRunes = { (Rune)'-', (Rune)'.', (Rune)'_' }; - // private static readonly UnicodeCategory[] _validCategories = { - // UnicodeCategory.LowercaseLetter, UnicodeCategory.UppercaseLetter, - // UnicodeCategory.OtherLetter, UnicodeCategory.DecimalDigitNumber }; - - // private static void ValidateRune(Rune rune) - // { - // if (!_validRunes.Contains(rune) && !_validCategories.Contains(Rune.GetUnicodeCategory(rune))) - // throw new ArgumentException($"Must not contain {Rune.GetUnicodeCategory(rune)} character"); - // } - - public string[] GetParts() - { - var result = new string[Count]; - for (var i = 0; i < Count; i++) result[i] = this[i]; - return result; - } - - public override string ToString() - { - var builder = new StringBuilder(); - if (IsAbsolute) builder.Append('/'); - foreach (var part in this) builder.Append(part).Append('/'); - return builder.ToString(0, builder.Length - 1); - } - - public static implicit operator EntityPath(string path) => Parse(path); - - public Enumerator GetEnumerator() => new(this); - public ref struct Enumerator - { - private readonly EntityPath _path; - private int index = -1; - public UTF8View Current => _path[index]; - internal Enumerator(EntityPath path) => _path = path; - public bool MoveNext() => (++index < _path.Count); - } - - - internal static unsafe Entity Lookup(Universe universe, Entity parent, EntityPath path) - { - // If path is absolute, ignore parent and start at root. - if (path.IsAbsolute) parent = default; - // Otherwise, if no parent is specified, use the current scope. - else if (parent.IsNone) parent = new(ecs_get_scope(universe)); - - foreach (var part in path) - fixed (byte* ptr = part.AsSpan()) { - // FIXME: This breaks when using large entity IDs. - parent = new(ecs_lookup_child(universe, parent, ptr)); - if (parent.IsNone || !ecs_is_alive(universe, parent)) - return Entity.None; - } - - return parent; - } - - /// Used by . - internal static unsafe Entity EnsureEntityExists( - Universe universe, Entity parent, EntityPath path) - { - // If no parent is specified and path is relative, use the current scope. - if (parent.IsNone && path.IsRelative) parent = new(ecs_get_scope(universe)); - - var skipLookup = parent.IsNone; - foreach (var part in path) - fixed (byte* ptr = part.AsSpan()) - if (skipLookup || (parent = new(ecs_lookup_child(universe, parent, ptr))).IsNone) { - var desc = new ecs_entity_desc_t { name = ptr, sep = CStringExtensions.ETX }; - if (parent.IsSome) desc.add[0] = Identifier.Pair(universe.ChildOf, parent); - parent = new(ecs_entity_init(universe, &desc)); - skipLookup = true; - } - - return parent; - } -} - -public static class EntityPathExtensions -{ - public static unsafe EntityPath GetFullPath(this EntityRef entity) - { - var current = (Entity)entity; - var parts = new List(32); - - do { - var name = ecs_get_name(entity.Universe, current).FlecsToBytes(); - if (name != null) parts.Add(name); - else { - // If name is not set, use the numeric ID, instead. - var id = current.ID.ToString(); - var bytes = new byte[Encoding.UTF8.GetByteCount(id) + 1]; - Encoding.UTF8.GetBytes(id, bytes); - parts.Add(bytes); - } - } while ((current = new(ecs_get_target(entity.Universe, current, EcsChildOf, 0))).IsSome); - - parts.Reverse(); - return new(true, parts.ToArray()); - } -} - -public readonly ref struct UTF8View -{ - private readonly ReadOnlySpan _bytes; - public UTF8View(ReadOnlySpan bytes) - => _bytes = bytes; - - public int Length => _bytes.Length; - public byte this[int index] => _bytes[index]; - - public ReadOnlySpan AsSpan() => _bytes; - public override string ToString() => Encoding.UTF8.GetString(_bytes); - public static implicit operator string(UTF8View view) => view.ToString(); - - public Enumerator GetEnumerator() => new(_bytes); - public ref struct Enumerator - { - private readonly ReadOnlySpan _bytes; - private int index = 0; - private Rune _current = default; - public Rune Current => _current; - - internal Enumerator(ReadOnlySpan bytes) - => _bytes = bytes; - - public bool MoveNext() - { - if (index >= _bytes.Length) return false; - if (Rune.DecodeFromUtf8(_bytes[index..], out _current, out var consumed) != OperationStatus.Done) - throw new InvalidOperationException("Contains invalid UTF8"); - index += consumed; - return true; - } - } -} diff --git a/src/gaemstone/ECS/EntityRef.cs b/src/gaemstone/ECS/EntityRef.cs deleted file mode 100644 index f660077..0000000 --- a/src/gaemstone/ECS/EntityRef.cs +++ /dev/null @@ -1,169 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe sealed class EntityRef - : EntityBase - , IEquatable -{ - public override Universe Universe { get; } - public Entity Entity { get; } - public uint ID => Entity.ID; - - public bool IsAlive => ecs_is_alive(Universe, this); - public EntityType Type => new(Universe, ecs_get_type(Universe, this)); - - public string? Name { - get => ecs_get_name(Universe, this).FlecsToString()!; - set { using var alloc = TempAllocator.Use(); - ecs_set_name(Universe, this, alloc.AllocateCString(value)); } - } - public string? Symbol { - get => ecs_get_symbol(Universe, this).FlecsToString()!; - set { using var alloc = TempAllocator.Use(); - ecs_set_symbol(Universe, this, alloc.AllocateCString(value)); } - } - - - private EntityRef(Universe universe, Entity entity, bool throwOnInvalid) - { - if (throwOnInvalid && !ecs_is_valid(universe, entity)) - throw new InvalidOperationException($"The entity {entity} is not valid"); - Universe = universe; - Entity = entity; - } - - public EntityRef(Universe universe, Entity entity) - : this(universe, entity, true) { } - - public static EntityRef? CreateOrNull(Universe universe, Entity entity) - => ecs_is_valid(universe, entity) ? new(universe, entity) : null; - - - public void Delete() - => ecs_delete(Universe, this); - - public EntityBuilder NewChild(EntityPath? path = null) - => Universe.New(EnsureRelativePath(path)).ChildOf(this); - public EntityRef? Lookup(EntityPath path) - => Universe.Lookup(this, EnsureRelativePath(path)!); - public EntityRef LookupOrThrow(EntityPath path) - => Universe.LookupOrThrow(this, EnsureRelativePath(path)!); - - private static EntityPath? EnsureRelativePath(EntityPath? path) - { if (path?.IsAbsolute == true) throw new ArgumentException("path must not be absolute", nameof(path)); return path; } - - - public EntityRef? Parent - => GetTarget(Universe.ChildOf); - - public IEnumerable GetChildren() - { - foreach (var iter in Iterator.FromTerm(Universe, new(Universe.ChildOf, this))) - for (var i = 0; i < iter.Count; i++) - yield return iter.Entity(i); - } - - - public override EntityRef Add(Identifier id) { ecs_add_id(Universe, this, id); return this; } - public override EntityRef Remove(Identifier id) { ecs_remove_id(Universe, this, id); return this; } - public override bool Has(Identifier id) => ecs_has_id(Universe, this, id); - - public override T Get() - { - var comp = Universe.LookupOrThrow(); - var ptr = ecs_get_id(Universe, this, comp); - if (ptr == null) throw new Exception($"Component {typeof(T)} not found on {this}"); - return typeof(T).IsValueType ? Unsafe.Read(ptr) - : (T)((GCHandle)Unsafe.Read(ptr)).Target!; - } - - public override T? MaybeGet() - { - var comp = Universe.LookupOrThrow(); - var ptr = ecs_get_id(Universe, this, comp); - return (ptr != null) ? Unsafe.Read(ptr) : null; - } - - public override T? MaybeGet(T _ = null!) - where T : class - { - var comp = Universe.LookupOrThrow(); - var ptr = ecs_get_id(Universe, this, comp); - return (ptr != null) ? (T)((GCHandle)Unsafe.Read(ptr)).Target! : null; - } - - public override ref T GetRefOrNull() - { - var comp = Universe.LookupOrThrow(); - var @ref = ecs_ref_init_id(Universe, this, comp); - var ptr = ecs_ref_get_id(Universe, &@ref, comp); - return ref (ptr != null) ? ref Unsafe.AsRef(ptr) : ref Unsafe.NullRef(); - } - - public override ref T GetRefOrThrow() - { - ref var ptr = ref GetRefOrNull(); - if (Unsafe.IsNullRef(ref ptr)) throw new Exception( - $"Component {typeof(T)} not found on {this}"); - return ref ptr; - } - - public override ref T GetMut() - { - var comp = Universe.LookupOrThrow(); - var ptr = ecs_get_mut_id(Universe, this, comp); - // NOTE: Value is added if it doesn't exist on the entity. - return ref Unsafe.AsRef(ptr); - } - - public override void Modified() - => ecs_modified_id(Universe, this, Universe.LookupOrThrow()); - - public override EntityRef Set(in T value) - { - var comp = Universe.LookupOrThrow(); - var size = (ulong)Unsafe.SizeOf(); - fixed (T* ptr = &value) - if (ecs_set_id(Universe, this, comp, size, ptr).Data == 0) - throw new InvalidOperationException(); - return this; - } - - public override EntityRef Set(T obj) where T : class - { - var comp = Universe.LookupOrThrow(); - var handle = (nint)GCHandle.Alloc(obj); - // FIXME: Previous handle needs to be freed. - if (ecs_set_id(Universe, this, comp, (ulong)sizeof(nint), &handle).Data == 0) - throw new InvalidOperationException(); - // FIXME: Handle needs to be freed when component is removed! - return this; - } - - public EntityRef? GetTarget(Entity relation, int index = 0) - => CreateOrNull(Universe, new(ecs_get_target(Universe, this, relation, index))); - public EntityRef? GetTarget(string symbol, int index = 0) - => GetTarget(Universe.LookupSymbolOrThrow(symbol), index); - public EntityRef? GetTarget(int index = 0) - => GetTarget(Universe.LookupOrThrow(typeof(T)), index); - - public bool Equals(EntityRef? other) => (other is not null) && (Universe == other.Universe) && (Entity == other.Entity); - public override bool Equals(object? obj) => Equals(obj as EntityRef); - public override int GetHashCode() => HashCode.Combine(Universe, Entity); - public override string? ToString() => ecs_entity_str(Universe, this).FlecsToStringAndFree()!; - - public static bool operator ==(EntityRef? left, EntityRef? right) => ReferenceEquals(left, right) || (left?.Equals(right) ?? false); - public static bool operator !=(EntityRef? left, EntityRef? right) => !(left == right); - - public static implicit operator Entity(EntityRef? e) => e?.Entity ?? default; - public static implicit operator ecs_entity_t(EntityRef? e) => e?.Entity.Value ?? default; - - public static implicit operator Identifier(EntityRef? e) => new(e?.Entity.Value.Data ?? default); - public static implicit operator ecs_id_t(EntityRef? e) => e?.Entity.Value.Data ?? default; -} diff --git a/src/gaemstone/ECS/EntityType.cs b/src/gaemstone/ECS/EntityType.cs deleted file mode 100644 index 543e4c3..0000000 --- a/src/gaemstone/ECS/EntityType.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe readonly struct EntityType - : IReadOnlyList -{ - public Universe Universe { get; } - public ecs_type_t* Handle { get; } - - public EntityType(Universe universe, ecs_type_t* handle) - { Universe = universe; Handle = handle; } - - public override string ToString() - => ecs_type_str(Universe, Handle).FlecsToStringAndFree()!; - - // IReadOnlyList implementation - public int Count => Handle->count; - public IdentifierRef this[int index] => new(Universe, new(Handle->array[index])); - public IEnumerator GetEnumerator() { for (var i = 0; i < Count; i++) yield return this[i]; } - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); -} diff --git a/src/gaemstone/ECS/Filter.cs b/src/gaemstone/ECS/Filter.cs deleted file mode 100644 index a1cf8bf..0000000 --- a/src/gaemstone/ECS/Filter.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; -using gaemstone.Utility; -using gaemstone.Utility.IL; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe sealed class Filter - : IDisposable -{ - public Universe Universe { get; } - public ecs_filter_t* Handle { get; } - - public Filter(Universe universe, FilterDesc desc) - { - using var alloc = TempAllocator.Use(); - var flecsDesc = desc.ToFlecs(alloc); - Universe = universe; - Handle = ecs_filter_init(universe, &flecsDesc); - } - - public static void RunOnce(Universe universe, Delegate action) - { - var gen = IterActionGenerator.GetOrBuild(universe, action.Method); - var desc = new FilterDesc(gen.Terms.ToArray()); - using var filter = new Filter(universe, desc); - foreach (var iter in filter.Iter()) gen.RunWithTryCatch(action.Target, iter); - } - - public void Dispose() - => ecs_filter_fini(Handle); - - public Iterator Iter() - => new(Universe, IteratorType.Filter, ecs_filter_iter(Universe, this)); - - public override string ToString() - => ecs_filter_str(Universe, Handle).FlecsToStringAndFree()!; - - public static implicit operator ecs_filter_t*(Filter q) => q.Handle; -} - -public class FilterDesc -{ - public IReadOnlyList Terms { get; } - - public string? Expression { get; } - - /// - /// When true, terms returned by an iterator may either contain 1 or N - /// elements, where terms with N elements are owned, and terms with 1 - /// element are shared, for example from a parent or base entity. When - /// false, the iterator will at most return 1 element when the result - /// contains both owned and shared terms. - /// - public bool Instanced { get; set; } - - /// - /// Entity associated with query (optional). - /// - public Entity Entity { get; set; } - - public FilterDesc(params Term[] terms) - => Terms = terms; - public FilterDesc(string expression) : this() - => Expression = expression; - - public unsafe ecs_filter_desc_t ToFlecs(IAllocator allocator) - { - var desc = new ecs_filter_desc_t { - expr = allocator.AllocateCString(Expression), - instanced = Instanced, - entity = Entity, - }; - var span = desc.terms; - if (Terms.Count > span.Length) { - span = allocator.Allocate(Terms.Count); - desc.terms_buffer = (ecs_term_t*)Unsafe.AsPointer(ref span[0]); - desc.terms_buffer_count = Terms.Count; - } - for (var i = 0; i < Terms.Count; i++) - span[i] = Terms[i].ToFlecs(allocator); - return desc; - } -} diff --git a/src/gaemstone/ECS/FilterExtensions.cs b/src/gaemstone/ECS/FilterExtensions.cs new file mode 100644 index 0000000..48f69f8 --- /dev/null +++ b/src/gaemstone/ECS/FilterExtensions.cs @@ -0,0 +1,16 @@ +using System; +using System.Linq; +using gaemstone.Utility.IL; + +namespace gaemstone.ECS; + +public static class FilterExtensions +{ + public static void RunOnce(World world, Delegate action) + { + var gen = IterActionGenerator.GetOrBuild(world, action.Method); + var desc = new FilterDesc(gen.Terms.ToArray()); + using var filter = new Filter(world, desc); + foreach (var iter in filter.Iter()) gen.RunWithTryCatch(action.Target, iter); + } +} diff --git a/src/gaemstone/ECS/Game.cs b/src/gaemstone/ECS/Game.cs index 4ab62a9..1b4d2b1 100644 --- a/src/gaemstone/ECS/Game.cs +++ b/src/gaemstone/ECS/Game.cs @@ -6,7 +6,7 @@ namespace gaemstone.ECS; /// Entity for storing global game state and configuration. /// Parameters can use to source this entity. /// -[Entity, Add] +[Singleton] public struct Game { } /// Equivalent to . diff --git a/src/gaemstone/ECS/Identifier.cs b/src/gaemstone/ECS/Identifier.cs deleted file mode 100644 index b157a4f..0000000 --- a/src/gaemstone/ECS/Identifier.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public readonly struct Identifier - : IEquatable -{ - public readonly ecs_id_t Value; - - public bool IsPair => ecs_id_is_pair(Value); - public bool IsWildcard => ecs_id_is_wildcard(Value); - - public IdentifierFlags Flags => (IdentifierFlags)(Value & ECS_ID_FLAGS_MASK); - - public Entity RelationUnsafe => new(new() { Data = (Value & ECS_COMPONENT_MASK) >> 32 }); - public Entity TargetUnsafe => new(new() { Data = Value & ECS_ENTITY_MASK }); - - public Identifier(ecs_id_t value) => Value = value; - - public static Identifier Combine(IdentifierFlags flags, Identifier id) - => new((ulong)flags | id.Value); - - public static Identifier Pair(Entity relation, Entity target) - => Combine(IdentifierFlags.Pair, new( - ((relation.Value.Data << 32) & ECS_COMPONENT_MASK) | - ( target.Value.Data & ECS_ENTITY_MASK ))); - - public (EntityRef Relation, EntityRef Target)? AsPair(Universe universe) - => new IdentifierRef(universe, this).AsPair(); - - public bool Equals(Identifier other) => Value.Data == other.Value.Data; - public override bool Equals(object? obj) => (obj is Identifier other) && Equals(other); - public override int GetHashCode() => Value.Data.GetHashCode(); - public override string? ToString() - => (Flags != default) ? $"Identifier(0x{Value.Data:X}, Flags={Flags})" - : $"Identifier(0x{Value.Data:X})"; - - public static bool operator ==(Identifier left, Identifier right) => left.Equals(right); - public static bool operator !=(Identifier left, Identifier right) => !left.Equals(right); - - public static implicit operator ecs_id_t(Identifier i) => i.Value; -} - -[Flags] -public enum IdentifierFlags : ulong -{ - Pair = 1ul << 63, - Override = 1ul << 62, - Toggle = 1ul << 61, - Or = 1ul << 60, - And = 1ul << 59, - Not = 1ul << 58, -} diff --git a/src/gaemstone/ECS/IdentifierRef.cs b/src/gaemstone/ECS/IdentifierRef.cs deleted file mode 100644 index 82b7de7..0000000 --- a/src/gaemstone/ECS/IdentifierRef.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe class IdentifierRef - : IEquatable -{ - public Universe Universe { get; } - public Identifier ID { get; } - - public IdentifierFlags Flags => ID.Flags; - public bool IsPair => ID.IsPair; - public bool IsWildcard => ID.IsWildcard; - public bool IsValid => ecs_id_is_valid(Universe, ID); - - public IdentifierRef(Universe universe, Identifier id) - { Universe = universe; ID = id; } - - public static IdentifierRef Combine(IdentifierFlags flags, IdentifierRef id) - => new(id.Universe, Identifier.Combine(flags, id)); - public static IdentifierRef Pair(EntityRef relation, Entity target) - => new(relation.Universe, Identifier.Pair(relation, target)); - public static IdentifierRef Pair(Entity relation, EntityRef target) - => new(target.Universe, Identifier.Pair(relation, target)); - - public (EntityRef Relation, EntityRef Target)? AsPair() - => IsPair ? (Universe.LookupOrThrow(ID.RelationUnsafe), Universe.LookupOrThrow(ID.TargetUnsafe)) : null; - - public bool Equals(IdentifierRef? other) => (other is not null) && (Universe == other.Universe) && (ID == other.ID); - public override bool Equals(object? obj) => Equals(obj as IdentifierRef); - public override int GetHashCode() => HashCode.Combine(Universe, ID); - public override string? ToString() => ecs_id_str(Universe, this).FlecsToStringAndFree()!; - - public static bool operator ==(IdentifierRef? left, IdentifierRef? right) => ReferenceEquals(left, right) || (left?.Equals(right) ?? false); - public static bool operator !=(IdentifierRef? left, IdentifierRef? right) => !(left == right); - - public static implicit operator Identifier(IdentifierRef i) => i.ID; - public static implicit operator ecs_id_t(IdentifierRef i) => i.ID.Value; -} diff --git a/src/gaemstone/ECS/Iterator.cs b/src/gaemstone/ECS/Iterator.cs deleted file mode 100644 index fd097e8..0000000 --- a/src/gaemstone/ECS/Iterator.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Runtime.CompilerServices; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe class Iterator - : IEnumerable - , IDisposable -{ - public Universe Universe { get; } - public IteratorType? Type { get; } - public ecs_iter_t Value; - - public bool Completed { get; private set; } - public int Count => Value.count; - public TimeSpan DeltaTime => TimeSpan.FromSeconds(Value.delta_time); - public TimeSpan DeltaSystemTime => TimeSpan.FromSeconds(Value.delta_system_time); - - public Iterator(Universe universe, IteratorType? type, ecs_iter_t value) - { Universe = universe; Type = type; Value = value; } - - public static Iterator FromTerm(Universe universe, Term term) - { - using var alloc = TempAllocator.Use(); - var flecsTerm = term.ToFlecs(alloc); - var flecsIter = ecs_term_iter(universe, &flecsTerm); - return new(universe, IteratorType.Term, flecsIter); - } - - public void Dispose() - { - GC.SuppressFinalize(this); - // NOTE: When an iterator is iterated until completion, resources are automatically freed. - if (!Completed) - fixed (ecs_iter_t* ptr = &Value) - ecs_iter_fini(ptr); - } - - public void SetThis(Entity entity) - { - fixed (ecs_iter_t* ptr = &Value) - ecs_iter_set_var(ptr, 0, entity); - } - - public bool Next() - { - fixed (ecs_iter_t* ptr = &Value) { - var result = Type switch { - IteratorType.Term => ecs_term_next(ptr), - IteratorType.Filter => ecs_filter_next(ptr), - IteratorType.Query => ecs_query_next(ptr), - IteratorType.Rule => ecs_rule_next(ptr), - _ => ecs_iter_next(ptr), - }; - Completed = !result; - return result; - } - } - - public EntityRef Entity(int index) - => new(Universe, new(Value.entities[index])); - - public Span Field(int index) - where T : unmanaged - { - fixed (ecs_iter_t* ptr = &Value) { - var size = (ulong)Unsafe.SizeOf(); - var isSelf = ecs_field_is_self(ptr, index); - var pointer = ecs_field_w_size(ptr, size, index); - return new(pointer, isSelf ? Count : 1); - } - } - - public Span MaybeField(int index) - where T : unmanaged => FieldIsSet(index) ? Field(index) : default; - - public SpanToRef FieldRef(int index) - where T : class => new(Field(index)); - - public bool FieldIsSet(int index) - { - fixed (ecs_iter_t* ptr = &Value) - return ecs_field_is_set(ptr, index); - } - - public bool FieldIs(int index) - { - fixed (ecs_iter_t* ptr = &Value) { - var id = ecs_field_id(ptr, index); - var comp = Universe.LookupOrThrow(); - return id == comp.Entity.Value.Data; - } - } - - public override string ToString() - { - fixed (ecs_iter_t* ptr = &Value) - return ecs_iter_str(ptr).FlecsToStringAndFree()!; - } - - // IEnumerable implementation - public IEnumerator GetEnumerator() { while (Next()) yield return this; } - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); -} - -public enum IteratorType -{ - Term, - Filter, - Query, - Rule, -} diff --git a/src/gaemstone/ECS/Module.cs b/src/gaemstone/ECS/Module.cs index 7644352..6522474 100644 --- a/src/gaemstone/ECS/Module.cs +++ b/src/gaemstone/ECS/Module.cs @@ -3,11 +3,7 @@ using System; namespace gaemstone.ECS; [AttributeUsage(AttributeTargets.Class)] -public class ModuleAttribute : EntityAttribute -{ - public ModuleAttribute() { } - public ModuleAttribute(params string[] path) : base(path) { } -} +public class ModuleAttribute : Attribute { } public interface IModuleInitializer { diff --git a/src/gaemstone/ECS/Observer.cs b/src/gaemstone/ECS/Observer.cs index 6f6b9d1..245025d 100644 --- a/src/gaemstone/ECS/Observer.cs +++ b/src/gaemstone/ECS/Observer.cs @@ -1,10 +1,8 @@ using System; using System.Linq; using System.Reflection; -using System.Runtime.InteropServices; using gaemstone.Utility; using gaemstone.Utility.IL; -using static flecs_hub.flecs; namespace gaemstone.ECS; @@ -19,21 +17,7 @@ public class ObserverAttribute : ObserverAttribute public static class ObserverExtensions { - public static unsafe EntityRef RegisterObserver(this Universe universe, - string? name, FilterDesc filter, Entity @event, Action callback) - { - using var alloc = TempAllocator.Use(); - var desc = new ecs_observer_desc_t { - filter = filter.ToFlecs(alloc), - entity = universe.New((name != null) ? EntityPath.Parse(name) : null).Build(), - binding_ctx = (void*)CallbackContextHelper.Create((universe, callback)), - callback = new() { Data = new() { Pointer = &Callback } }, - }; - desc.events[0] = @event; - return new(universe, new(ecs_observer_init(universe, &desc))); - } - - public static EntityRef RegisterObserver(this Universe universe, + public static EntityRef InitObserver(this World world, object? instance, MethodInfo method) { var attr = method.Get() ?? throw new ArgumentException( @@ -50,20 +34,12 @@ public static class ObserverExtensions iterAction = (Action)Delegate.CreateDelegate( typeof(Action), instance, method); } else { - var gen = IterActionGenerator.GetOrBuild(universe, method); + var gen = IterActionGenerator.GetOrBuild(world, method); filter = (expr != null) ? new(expr) : new(gen.Terms.ToArray()); iterAction = iter => gen.RunWithTryCatch(instance, iter); } - var @event = universe.LookupOrThrow(attr.Event); - return universe.RegisterObserver(method.Name, filter, @event, iterAction); - } - - [UnmanagedCallersOnly] - private static unsafe void Callback(ecs_iter_t* iter) - { - var (universe, callback) = CallbackContextHelper - .Get<(Universe, Action)>((nint)iter->binding_ctx); - callback(new Iterator(universe, null, *iter)); + var @event = world.LookupByTypeOrThrow(attr.Event); + return world.New(method.Name).Build().InitObserver(@event, filter, iterAction); } } diff --git a/src/gaemstone/ECS/Query.cs b/src/gaemstone/ECS/Query.cs deleted file mode 100644 index 2138b3c..0000000 --- a/src/gaemstone/ECS/Query.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe sealed class Query - : IDisposable -{ - public Universe Universe { get; } - public ecs_query_t* Handle { get; } - - public Query(Universe universe, QueryDesc desc) - { - using var alloc = TempAllocator.Use(); - var flecsDesc = desc.ToFlecs(alloc); - Universe = universe; - Handle = ecs_query_init(universe, &flecsDesc); - } - - public void Dispose() - => ecs_query_fini(this); - - public Iterator Iter() - => new(Universe, IteratorType.Query, ecs_query_iter(Universe, this)); - - public override string ToString() - => ecs_query_str(Handle).FlecsToStringAndFree()!; - - public static implicit operator ecs_query_t*(Query q) => q.Handle; -} - -public class QueryDesc : FilterDesc -{ - public QueryDesc(string expression) : base(expression) { } - public QueryDesc(params Term[] terms) : base(terms) { } - - public new unsafe ecs_query_desc_t ToFlecs(IAllocator allocator) - { - var desc = new ecs_query_desc_t { - filter = base.ToFlecs(allocator), - // TODO: Implement more Query features. - }; - return desc; - } -} diff --git a/src/gaemstone/ECS/Relation.cs b/src/gaemstone/ECS/Relation.cs deleted file mode 100644 index 5b564e0..0000000 --- a/src/gaemstone/ECS/Relation.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace gaemstone.ECS; - -[Tag] -public struct Relation { } - -/// -/// Marked entity represents a relationship type. -/// It may be used as the "relation" in a pair. -/// -/// -/// The relationship may have component data associated with -/// it when added to an entity under these circumstances: -/// -/// If marked as a , does not carry data. -/// If marked as a , carries the relation's data. -/// If marked with neither, will carry the target's data, if it's a component. -/// -/// -[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum)] -public class RelationAttribute : Attribute, ICreateEntityAttribute { } diff --git a/src/gaemstone/ECS/Rule.cs b/src/gaemstone/ECS/Rule.cs deleted file mode 100644 index 44b116a..0000000 --- a/src/gaemstone/ECS/Rule.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe sealed class Rule - : IDisposable -{ - public Universe Universe { get; } - public ecs_rule_t* Handle { get; } - - public Rule(Universe universe, FilterDesc desc) - { - using var alloc = TempAllocator.Use(); - var flecsDesc = desc.ToFlecs(alloc); - Universe = universe; - Handle = ecs_rule_init(universe, &flecsDesc); - } - - public void Dispose() - => ecs_rule_fini(this); - - public Iterator Iter() - => new(Universe, IteratorType.Rule, ecs_rule_iter(Universe, this)); - - public override string ToString() - => ecs_rule_str(Handle).FlecsToStringAndFree()!; - - public static implicit operator ecs_rule_t*(Rule q) => q.Handle; -} diff --git a/src/gaemstone/ECS/System.cs b/src/gaemstone/ECS/System.cs index 4f3d490..9195a6b 100644 --- a/src/gaemstone/ECS/System.cs +++ b/src/gaemstone/ECS/System.cs @@ -1,12 +1,9 @@ using System; using System.Linq; using System.Reflection; -using System.Runtime.InteropServices; using gaemstone.Flecs; using gaemstone.Utility; using gaemstone.Utility.IL; -using static flecs_hub.flecs; -using static gaemstone.Flecs.Core; namespace gaemstone.ECS; @@ -29,22 +26,7 @@ public class ExpressionAttribute : Attribute public static class SystemExtensions { - private static unsafe EntityRef RegisterSystem(this Universe universe, - string? name, QueryDesc query, Entity phase, CallbackContext callback) - { - using var alloc = TempAllocator.Use(); - var desc = new ecs_system_desc_t { - query = query.ToFlecs(alloc), - entity = universe.New((name != null) ? EntityPath.Parse(name) : null) - .Add(phase).Add(phase).Build(), - binding_ctx = (void*)CallbackContextHelper.Create(callback), - // TODO: Use binding_ctx_free to remove clear the context. - run = new() { Data = new() { Pointer = &Run } }, - }; - return new(universe, new(ecs_system_init(universe, &desc))); - } - - public static EntityRef RegisterSystem(this Universe universe, Delegate action) + public static EntityRef InitSystem(this World world, Delegate action) { var attr = action.Method.Get(); var expr = action.Method.Get()?.Value; @@ -54,17 +36,16 @@ public static class SystemExtensions query = new(expr ?? throw new ArgumentException( "System must specify ExpressionAttribute", nameof(action))); } else { - var gen = IterActionGenerator.GetOrBuild(universe, action.Method); + var gen = IterActionGenerator.GetOrBuild(world, action.Method); query = (expr != null) ? new(expr) : new(gen.Terms.ToArray()); callback = iter => gen.RunWithTryCatch(action.Target, iter); } - var phase = universe.LookupOrThrow(attr?.Phase ?? typeof(SystemPhase.OnUpdate)); - return universe.RegisterSystem(action.Method.Name, - query, phase, new(universe, action.Method, callback)); + var phase = world.LookupByTypeOrThrow(attr?.Phase ?? typeof(SystemPhase.OnUpdate)); + return world.New(action.Method.Name).Build().InitSystem(phase, query, callback); } - public static EntityRef RegisterSystem(this Universe universe, + public static EntityRef InitSystem(this World world, object? instance, MethodInfo method) { var attr = method.Get(); @@ -78,48 +59,12 @@ public static class SystemExtensions "System must specify ExpressionAttribute", nameof(method))); callback = (Action)Delegate.CreateDelegate(typeof(Action), instance, method); } else { - var gen = IterActionGenerator.GetOrBuild(universe, method); + var gen = IterActionGenerator.GetOrBuild(world, method); query = (expr != null) ? new(expr) : new(gen.Terms.ToArray()); callback = iter => gen.RunWithTryCatch(instance, iter); } - var phase = universe.LookupOrThrow(attr?.Phase ?? typeof(SystemPhase.OnUpdate)); - return universe.RegisterSystem(method.Name, - query, phase, new(universe, method, callback)); - } - - private class CallbackContext - { - public Universe Universe { get; } - public MethodInfo Method { get; } - public Action Callback { get; } - - public CallbackContext(Universe universe, MethodInfo method, Action callback) - { Universe = universe; Method = method; Callback = callback; } - - public void Prepare(Iterator iter) - { - // If the method is marked with [Source], set the $This variable. - if (Method.Get()?.Type is Type sourceType) - iter.SetThis(Universe.LookupOrThrow(sourceType)); - } - } - - [UnmanagedCallersOnly] - private static unsafe void Run(ecs_iter_t* flecsIter) - { - var callback = CallbackContextHelper.Get((nint)flecsIter->binding_ctx); - - // This is what flecs does, so I guess we'll do it too! - var type = (&flecsIter->next == (delegate*)&ecs_query_next) - ? IteratorType.Query : (IteratorType?)null; - using var iter = new Iterator(callback.Universe, type, *flecsIter); - - callback.Prepare(iter); - - if (flecsIter->field_count == 0) - callback.Callback(iter); - else while (iter.Next()) - callback.Callback(iter); + var phase = world.LookupByTypeOrThrow(attr?.Phase ?? typeof(SystemPhase.OnUpdate)); + return world.New(method.Name).Build().InitSystem(phase, query, callback); } } diff --git a/src/gaemstone/ECS/Term.cs b/src/gaemstone/ECS/Term.cs deleted file mode 100644 index ec733dd..0000000 --- a/src/gaemstone/ECS/Term.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public class Term -{ - public Identifier ID { get; set; } - public TermID? Source { get; set; } - public TermID? Relation { get; set; } - public TermID? Target { get; set; } - public TermInOutKind InOut { get; set; } - public TermOperKind Oper { get; set; } - public IdentifierFlags Flags { get; set; } - - public Term() { } - public Term(Identifier id) => ID = id; - public Term(TermID relation, TermID target) - { Relation = relation; Target = target; } - - public static implicit operator Term(EntityRef entity) => new(entity); - public static implicit operator Term(Entity entity) => new(entity); - public static implicit operator Term(IdentifierRef id) => new(id); - public static implicit operator Term(Identifier id) => new(id); - - public Term None { get { InOut = TermInOutKind.None; return this; } } - public Term In { get { InOut = TermInOutKind.In; return this; } } - public Term Out { get { InOut = TermInOutKind.Out; return this; } } - - public Term Or { get { Oper = TermOperKind.Or; return this; } } - public Term Not { get { Oper = TermOperKind.Not; return this; } } - public Term Optional { get { Oper = TermOperKind.Optional; return this; } } - - public ecs_term_t ToFlecs(IAllocator allocator) => new() { - id = ID, - src = Source?.ToFlecs(allocator) ?? default, - first = Relation?.ToFlecs(allocator) ?? default, - second = Target?.ToFlecs(allocator) ?? default, - inout = (ecs_inout_kind_t)InOut, - oper = (ecs_oper_kind_t)Oper, - id_flags = (ecs_id_t)(ulong)Flags, - }; -} - -public enum TermInOutKind -{ - Default = ecs_inout_kind_t.EcsInOutDefault, - None = ecs_inout_kind_t.EcsInOutNone, - InOut = ecs_inout_kind_t.EcsInOut, - In = ecs_inout_kind_t.EcsIn, - Out = ecs_inout_kind_t.EcsOut, -} - -public enum TermOperKind -{ - And = ecs_oper_kind_t.EcsAnd, - Or = ecs_oper_kind_t.EcsOr, - Not = ecs_oper_kind_t.EcsNot, - Optional = ecs_oper_kind_t.EcsOptional, - AndFrom = ecs_oper_kind_t.EcsAndFrom, - OrFrom = ecs_oper_kind_t.EcsOrFrom, - NotFrom = ecs_oper_kind_t.EcsNotFrom, -} - -public class TermID -{ - public static TermID This { get; } = new("$This"); - - public Entity ID { get; } - public string? Name { get; } - public Entity Traverse { get; set; } - public TermTraversalFlags Flags { get; set; } - - public TermID(Entity id) - => ID = id; - public TermID(string name) - { - if (name[0] == '$') { - Name = name[1..]; - Flags = TermTraversalFlags.IsVariable; - } else Name = name; - } - - public static implicit operator TermID(EntityRef entity) => new(entity); - public static implicit operator TermID(Entity entity) => new(entity); - public static implicit operator TermID(string name) => new(name); - - public ecs_term_id_t ToFlecs(IAllocator allocator) => new() { - id = ID, - name = allocator.AllocateCString(Name), - trav = Traverse, - flags = (ecs_flags32_t)(uint)Flags - }; -} - -[Flags] -public enum TermTraversalFlags : uint -{ - /// Match on self. - Self = EcsSelf, - /// Match by traversing upwards. - Up = EcsUp, - /// Match by traversing downwards (derived, cannot be set). - Down = EcsDown, - /// Sort results breadth first. - Cascade = EcsCascade, - /// Short for up(ChildOf). - Parent = EcsParent, - /// Term id is a variable. - IsVariable = EcsIsVariable, - /// Term id is an entity. - IsEntity = EcsIsEntity, - /// Prevent observer from triggering on term. - Filter = EcsFilter, -} diff --git a/src/gaemstone/ECS/Universe+Lookup.cs b/src/gaemstone/ECS/Universe+Lookup.cs deleted file mode 100644 index b38e018..0000000 --- a/src/gaemstone/ECS/Universe+Lookup.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Collections.Generic; -using gaemstone.Utility; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe partial class Universe -{ - private readonly Dictionary _lookupByType = new(); - - public void AddLookupByType(Type type, Entity entity) - => _lookupByType.Add(type, entity); - public void RemoveLookupByType(Type type) - { if (!_lookupByType.Remove(type)) throw new InvalidOperationException( - $"Lookup for {type} does not exist"); } - - - private EntityRef? CreateOrNull(Entity entity) - => EntityRef.CreateOrNull(this, entity); - - public EntityRef? Lookup() - => Lookup(typeof(T)); - public EntityRef? Lookup(Type type) - => Lookup(_lookupByType.GetValueOrDefault(type)); - - public EntityRef? Lookup(Entity value) - => CreateOrNull(new(ecs_get_alive(this, value))); - - public EntityRef? Lookup(EntityPath path) - => Lookup(default, path); - public EntityRef? Lookup(Entity parent, EntityPath path) - => CreateOrNull(EntityPath.Lookup(this, parent, path)); - public EntityRef? LookupSymbol(string symbol) - { - using var alloc = TempAllocator.Use(); - return CreateOrNull(new(ecs_lookup_symbol(this, alloc.AllocateCString(symbol), false))); - } - - public EntityRef LookupOrThrow() => LookupOrThrow(typeof(T)); - public EntityRef LookupOrThrow(Type type) => Lookup(type) - ?? throw new EntityNotFoundException($"Entity of type {type} not found"); - public EntityRef LookupOrThrow(Entity entity) => Lookup(entity) - ?? throw new EntityNotFoundException($"Entity {entity} not alive"); - public EntityRef LookupOrThrow(EntityPath path) => Lookup(default, path) - ?? throw new EntityNotFoundException($"Entity '{path}' not found"); - public EntityRef LookupOrThrow(Entity parent, EntityPath path) => Lookup(parent, path) - ?? throw new EntityNotFoundException($"Child entity of {parent} '{path}' not found"); - public EntityRef LookupSymbolOrThrow(string symbol) => LookupSymbol(symbol) - ?? throw new EntityNotFoundException($"Entity with symbol '{symbol}' not found"); - - - public class EntityNotFoundException : Exception - { public EntityNotFoundException(string message) : base(message) { } } -} - -public static class LookupExtensions -{ - public static EntityRef CreateLookup(this EntityRef entity) - => entity.CreateLookup(typeof(T)); - public static EntityRef CreateLookup(this EntityRef entity, Type type) - { entity.Universe.AddLookupByType(type, entity); return entity; } -} diff --git a/src/gaemstone/ECS/Universe.cs b/src/gaemstone/ECS/Universe.cs deleted file mode 100644 index 14f2707..0000000 --- a/src/gaemstone/ECS/Universe.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Linq; -using static flecs_hub.flecs; - -namespace gaemstone.ECS; - -public unsafe partial class Universe -{ - public ecs_world_t* Handle { get; } - public ModuleManager Modules { get; } - - public EntityRef Wildcard { get; } - public EntityRef Any { get; } - public EntityRef ChildOf { get; } - - public bool IsDeferred => ecs_is_deferred(this); - - public Universe(params string[] args) - { - Handle = ecs_init_w_args(args.Length, null); - Modules = new(this); - - // Bootstrap flecs built-ins that are important to internals. - Wildcard = LookupOrThrow("/flecs/core/*"); - Any = LookupOrThrow("/flecs/core/_"); - ChildOf = LookupOrThrow("/flecs/core/ChildOf"); - - // Bootstrap custom "Relation" tag. - // This will be retrofitted to certain flecs built-ins. - New("/gaemstone/Relation") - .Add(LookupOrThrow("/flecs/core/Tag")) - .Build().CreateLookup(); - - // Register built-in (static) modules, which - // are defined in the "gaemstone.Flecs" namespace. - Modules.RegisterAll(GetType().Assembly.GetTypes() - .Where(t => t.IsAbstract && t.IsSealed)); - - // Create "Game" entity to store global state. - New("/Game").Symbol("Game").Build() - .CreateLookup().Add(); - } - - public EntityBuilder New(EntityPath? path = null) - => new(this, path); - - public bool Progress(TimeSpan delta) - => ecs_progress(this, (float)delta.TotalSeconds); - - public static implicit operator ecs_world_t*(Universe w) => w.Handle; -} diff --git a/src/gaemstone/Flecs/Core.cs b/src/gaemstone/Flecs/Core.cs index 78bd04e..731973a 100644 --- a/src/gaemstone/Flecs/Core.cs +++ b/src/gaemstone/Flecs/Core.cs @@ -2,25 +2,33 @@ using gaemstone.ECS; namespace gaemstone.Flecs; -[Module("flecs", "core")] +[Module, Path("/flecs/core")] public static class Core { // Entity Tags + [Tag] public struct Name { } + [Tag] public struct Symbol { } + [Tag] public struct Alias { } + [Tag] public struct Module { } [Tag] public struct Prefab { } [Tag] public struct SlotOf { } [Tag] public struct Disabled { } [Tag] public struct Empty { } + // Can't be in a module class with the same name. + [Path("/flecs/system/System")] + [Tag] public struct System { } + // Entities - [Entity] public struct World { } - [Entity("*")] public struct Wildcard { } - [Entity("_")] public struct Any { } - [Entity] public struct This { } - [Entity("$")] public struct Variable { } - [Entity] public struct Flag { } + [Entity] public struct World { } + [Path("*")] public struct Wildcard { } + [Path("_")] public struct Any { } + [Entity] public struct This { } + [Path("$")] public struct Variable { } + [Entity] public struct Flag { } // Entity Relationships @@ -41,4 +49,35 @@ public static class Core [Tag] public struct Acyclic { } [Relation, Tag] public struct With { } [Tag] public struct OneOf { } + + // Components + + [Component] + public readonly struct Component + { + public int Size { get; } + public int Alignment { get; } + } + + [Relation, Component] + public readonly struct Identifier + { +#pragma warning disable IDE0051 // Disable "unused" hint. +#pragma warning disable CS0169 // Disable "unused" warning. +#pragma warning disable CS0649 // Disable "never assigned to" warning. + private unsafe readonly void* _value; + private readonly nint _length; + private readonly ulong _hash; + private readonly ulong _indexHash; + private unsafe readonly void* _index; +#pragma warning restore + + public override string? ToString() { unsafe { + if ((_value == null) || (_length == 0)) return null; + else return new UTF8View(new(_value, (int)_length)).ToString(); + } } + + public static implicit operator string?(Identifier id) + => id.ToString(); + } } diff --git a/src/gaemstone/Flecs/DeletionEvent.cs b/src/gaemstone/Flecs/DeletionEvent.cs index 1263254..69003da 100644 --- a/src/gaemstone/Flecs/DeletionEvent.cs +++ b/src/gaemstone/Flecs/DeletionEvent.cs @@ -2,14 +2,14 @@ using gaemstone.ECS; namespace gaemstone.Flecs; -[Module("flecs", "core")] +[Module, Path("/flecs/core")] public static class DeletionEvent { [Relation, Tag] public struct OnDelete { } [Relation, Tag] public struct OnDeleteTarget { } } -[Module("flecs", "core")] +[Module, Path("/flecs/core")] public static class DeletionBehavior { [Tag] public struct Remove { } diff --git a/src/gaemstone/Flecs/Doc.cs b/src/gaemstone/Flecs/Doc.cs new file mode 100644 index 0000000..c3409e9 --- /dev/null +++ b/src/gaemstone/Flecs/Doc.cs @@ -0,0 +1,81 @@ +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using gaemstone.ECS; +using gaemstone.Utility; +using static flecs_hub.flecs; + +namespace gaemstone.Flecs; + +[Module, Path("/flecs/doc")] +public static class Doc +{ + [Tag] public struct Brief { } + [Tag] public struct Detail { } + [Tag] public struct Link { } + [Tag] public struct Color { } + + [Relation, Component] + public struct Description + { + internal unsafe void* Value; + + public override string? ToString() + { unsafe { return Marshal.PtrToStringUTF8((nint)Value); } } + public static implicit operator string?(Description desc) + => desc.ToString(); + } +} + +public static unsafe class DocExtensions +{ + private static EntityRef Set(EntityRef entity, string? value) + { + var world = entity.World; + var descEntity = world.LookupByTypeOrThrow(); + var docEntity = world.LookupByTypeOrThrow(); + var id = Identifier.Pair(descEntity, docEntity); + + var has = entity.Has(id); + var alloc = GlobalHeapAllocator.Instance; + if (value != null) { + var ptr = ecs_get_mut_id(world, entity, id); + ref var desc = ref Unsafe.AsRef(ptr); + // FIXME: Why does freeing these cause crashes? + // if (has) alloc.Free((nint)desc.Value); // Free previous value. + desc.Value = (void*)(nint)alloc.AllocateCString(value); + } else if (has) { + // var @ref = ecs_ref_init_id(world, entity, id); + // var ptr = ecs_ref_get_id(world, &@ref, id); + // var desc = Unsafe.AsRef(ptr); + // alloc.Free((nint)desc.Value); // Free previous value. + entity.Remove(id); + } + return entity; + } + + public static string? GetDocName(this EntityRef entity, bool fallbackToEntityName = true) + => fallbackToEntityName || entity.Has() + ? ecs_doc_get_name(entity.World, entity).FlecsToString() : null; + public static EntityRef SetDocName(this EntityRef entity, string? value) + => Set(entity, value); + + public static string? GetDocBrief(this EntityRef entity) + => ecs_doc_get_brief(entity.World, entity).FlecsToString()!; + public static EntityRef SetDocBrief(this EntityRef entity, string? value) + => Set(entity, value); + + public static string? GetDocDetail(this EntityRef entity) + => ecs_doc_get_detail(entity.World, entity).FlecsToString()!; + public static EntityRef SetDocDetail(this EntityRef entity, string? value) + => Set(entity, value); + + public static string? GetDocLink(this EntityRef entity) + => ecs_doc_get_link(entity.World, entity).FlecsToString()!; + public static EntityRef SetDocLink(this EntityRef entity, string? value) + => Set(entity, value); + + public static string? GetDocColor(this EntityRef entity) + => ecs_doc_get_color(entity.World, entity).FlecsToString()!; + public static EntityRef SetDocColor(this EntityRef entity, string? value) + => Set(entity, value); +} diff --git a/src/gaemstone/Flecs/FlecsException.cs b/src/gaemstone/Flecs/FlecsException.cs deleted file mode 100644 index d280d8e..0000000 --- a/src/gaemstone/Flecs/FlecsException.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; -using static flecs_hub.flecs; - -namespace gaemstone.Flecs; - -public class FlecsException - : Exception -{ - public FlecsException() : base() { } - public FlecsException(string message) : base(message) { } -} - -public class FlecsAbortException - : FlecsException -{ - private readonly string _stackTrace = new StackTrace(2, true).ToString(); - public override string? StackTrace => _stackTrace; - - private FlecsAbortException() - : base("Abort was called by flecs") { } - - // TODO: This might not be ideal if we ever want to set other OS API settings. - public unsafe static void SetupHook() - { - ecs_os_set_api_defaults(); - var api = ecs_os_get_api(); - api.abort_ = new FnPtr_Void { Pointer = &Abort }; - ecs_os_set_api(&api); - } - - [UnmanagedCallersOnly] - private static void Abort() - => throw new FlecsAbortException(); -} diff --git a/src/gaemstone/Flecs/ObserverEvent.cs b/src/gaemstone/Flecs/ObserverEvent.cs index 2cfbb74..698ca75 100644 --- a/src/gaemstone/Flecs/ObserverEvent.cs +++ b/src/gaemstone/Flecs/ObserverEvent.cs @@ -2,7 +2,7 @@ using gaemstone.ECS; namespace gaemstone.Flecs; -[Module("flecs", "core")] +[Module, Path("/flecs/core")] public static class ObserverEvent { [Entity] public struct OnAdd { } diff --git a/src/gaemstone/Flecs/Pipeline.cs b/src/gaemstone/Flecs/Pipeline.cs index 8736b1c..939a676 100644 --- a/src/gaemstone/Flecs/Pipeline.cs +++ b/src/gaemstone/Flecs/Pipeline.cs @@ -2,7 +2,7 @@ using gaemstone.ECS; namespace gaemstone.Flecs; -[Module("flecs", "pipeline")] +[Module, Path("/flecs/pipeline")] public static class Pipeline { [Entity] public struct Phase { } diff --git a/src/gaemstone/Flecs/SystemPhase.cs b/src/gaemstone/Flecs/SystemPhase.cs index 1f2cd85..891b0de 100644 --- a/src/gaemstone/Flecs/SystemPhase.cs +++ b/src/gaemstone/Flecs/SystemPhase.cs @@ -3,7 +3,7 @@ using static gaemstone.Flecs.Pipeline; namespace gaemstone.Flecs; -[Module("flecs", "pipeline")] +[Module, Path("/flecs/pipeline")] public static class SystemPhase { [Entity, Add] diff --git a/src/gaemstone/Flecs/Systems/Monitor.cs b/src/gaemstone/Flecs/Systems/Monitor.cs index 865b1b5..e9d1c51 100644 --- a/src/gaemstone/Flecs/Systems/Monitor.cs +++ b/src/gaemstone/Flecs/Systems/Monitor.cs @@ -5,14 +5,14 @@ using static flecs_hub.flecs; namespace gaemstone.Flecs.Systems; -[Module("flecs", "monitor")] +[Module, Path("/flecs/monitor")] public unsafe class Monitor : IModuleInitializer { public void Initialize(EntityRef module) { using var alloc = TempAllocator.Use(); - ecs_import_c(module.Universe, new() { Data = new() { + ecs_import_c(module.World, new() { Data = new() { Pointer = &MonitorImport } }, alloc.AllocateCString("FlecsMonitor")); } diff --git a/src/gaemstone/Flecs/Systems/Rest.cs b/src/gaemstone/Flecs/Systems/Rest.cs index 53722d3..a057002 100644 --- a/src/gaemstone/Flecs/Systems/Rest.cs +++ b/src/gaemstone/Flecs/Systems/Rest.cs @@ -5,14 +5,14 @@ using static flecs_hub.flecs; namespace gaemstone.Flecs.Systems; -[Module("flecs", "rest")] +[Module, Path("/flecs/rest")] public unsafe class Rest : IModuleInitializer { public void Initialize(EntityRef module) { using (var alloc = TempAllocator.Use()) - ecs_import_c(module.Universe, new() { Data = new() { + ecs_import_c(module.World, new() { Data = new() { Pointer = &RestImport } }, alloc.AllocateCString("FlecsRest")); module.NewChild("Rest").Build() @@ -21,6 +21,6 @@ public unsafe class Rest } [UnmanagedCallersOnly] - static void RestImport(ecs_world_t* world) + private static void RestImport(ecs_world_t* world) => FlecsRestImport(world); } diff --git a/src/gaemstone/ECS/Universe+Modules.cs b/src/gaemstone/Universe+Modules.cs similarity index 50% rename from src/gaemstone/ECS/Universe+Modules.cs rename to src/gaemstone/Universe+Modules.cs index 942e54a..641108d 100644 --- a/src/gaemstone/ECS/Universe+Modules.cs +++ b/src/gaemstone/Universe+Modules.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; +using gaemstone.ECS; using gaemstone.Utility; using static gaemstone.Flecs.Core; using BindingFlags = System.Reflection.BindingFlags; -namespace gaemstone.ECS; +namespace gaemstone; public class ModuleManager { @@ -33,7 +34,7 @@ public class ModuleManager { if (!moduleType.IsClass || moduleType.IsGenericType || moduleType.IsGenericTypeDefinition) throw new Exception( $"Module {moduleType} must be a non-generic class"); - if (moduleType.Get() is not ModuleAttribute attr) throw new Exception( + if (moduleType.Get() is not ModuleAttribute moduleAttr) throw new Exception( $"Module {moduleType} must be marked with ModuleAttribute"); // Check if module type is static. @@ -43,11 +44,11 @@ public class ModuleManager // create entities, only look up existing ones to add type lookups // for use with the Lookup(Type) method. - if (attr.Path == null) throw new Exception( - $"Existing module {moduleType} must have ModuleAttribute.Name set"); - var path = new EntityPath(true, attr.Path); - var module = Universe.Lookup(path) ?? throw new Exception( - $"Existing module {moduleType} with name '{path}' not found"); + if (moduleType.Get()?.Value is not string modulePathStr) throw new Exception( + $"Existing module {moduleType} must have {nameof(PathAttribute)} set"); + var modulePath = EntityPath.Parse(modulePathStr); + var moduleEntity = Universe.LookupByPath(modulePath) ?? throw new Exception( + $"Existing module {moduleType} with name '{modulePath}' not found"); // This implementation is pretty naive. It simply gets all nested // types which are tagged with an ICreateEntityAttribute base @@ -55,13 +56,16 @@ public class ModuleManager foreach (var type in moduleType.GetNestedTypes()) { if (!type.GetCustomAttributes(true).OfType().Any()) continue; - var name = type.Get()?.Path?.Single() ?? type.Name; - var entity = Universe.LookupOrThrow(module, name); + + var attr = type.Get(); + var path = EntityPath.Parse(attr?.Value ?? type.Name); + var entity = Universe.LookupByPathOrThrow(moduleEntity, path); entity.CreateLookup(type); - if (type.Has()) entity.Add(); + + if (type.Has()) entity.Add(); } - return module; + return moduleEntity; } else { @@ -100,12 +104,12 @@ public class ModuleManager if (attr == null) throw new ArgumentException( $"Module {type} must be marked with ModuleAttribute", nameof(type)); - // If module is static, its path will be implictly global. - var global = (type.IsAbstract && type.IsSealed) || attr.Global; + var path = EntityPath.Parse( + (type.Get() is PathAttribute pathAttr) + ? pathAttr.Value : type.Name); - // If global or path are specified in the attribute, return an absolute path. - if (global || attr.Path != null) - return new(true, attr.Path ?? new[] { type.Name }); + // If specified path is absolute, return it now. + if (path.IsAbsolute) return path; // Otherwise, create it based on the type's assembly, namespace and name. var assemblyName = type.Assembly.GetName().Name!; @@ -114,115 +118,113 @@ public class ModuleManager $"Module {type} must be defined under namespace {assemblyName}"); var fullNameWithoutAssembly = type.FullName![(assemblyName.Length + 1)..]; - var parts = fullNameWithoutAssembly.Split('.'); - return new(true, parts.Prepend(assemblyName).ToArray()); + var parts = fullNameWithoutAssembly.Split('.')[..^1]; + return new(true, parts.Prepend(assemblyName).Concat(path.GetParts()).ToArray()); } -} - -internal class ModuleInfo -{ - public Universe Universe { get; } - public Type Type { get; } - public EntityPath Path { get; } - public EntityRef Entity { get; } - public object? Instance { get; internal set; } - public bool IsActive => Instance != null; - - public HashSet MetDependencies { get; } = new(); - public HashSet UnmetDependencies { get; } = new(); - - public ModuleInfo(Universe universe, Type type, EntityPath path) + internal class ModuleInfo { - Universe = universe; - Type = type; - Path = path; - - if (Type.IsAbstract || Type.IsSealed) throw new Exception( - $"Module {Type} must not be abstract or sealed"); - if (Type.GetConstructor(Type.EmptyTypes) == null) throw new Exception( - $"Module {Type} must define public parameterless constructor"); - - var module = Universe.New(Path).Add(); - - // Add module dependencies from [DependsOn<>] attributes. - foreach (var dependsAttr in Type.GetMultiple().Where(attr => - attr.GetType().GetGenericTypeDefinition() == typeof(DependsOnAttribute<>))) { - var dependsPath = ModuleManager.GetModulePath(dependsAttr.Target); - var dependency = Universe.Lookup(dependsPath) ?? - Universe.New(dependsPath).Add().Disable().Build(); + public Universe Universe { get; } + public Type Type { get; } + public EntityPath Path { get; } + + public EntityRef Entity { get; } + public object? Instance { get; internal set; } + public bool IsActive => Instance != null; + + public HashSet MetDependencies { get; } = new(); + public HashSet UnmetDependencies { get; } = new(); + + public ModuleInfo(Universe universe, Type type, EntityPath path) + { + Universe = universe; + Type = type; + Path = path; + + if (Type.IsAbstract || Type.IsSealed) throw new Exception( + $"Module {Type} must not be abstract, sealed or static"); + if (Type.GetConstructor(Type.EmptyTypes) == null) throw new Exception( + $"Module {Type} must define public parameterless constructor"); + + var module = Universe.New(Path).Add(); + + // Add module dependencies from [DependsOn<>] attributes. + foreach (var dependsAttr in Type.GetMultiple().Where(attr => + attr.GetType().GetGenericTypeDefinition() == typeof(DependsOnAttribute<>))) { + var dependsPath = GetModulePath(dependsAttr.Target); + var dependency = Universe.LookupByPath(dependsPath) ?? + Universe.New(dependsPath).Add().Disable().Build(); + + var depModule = Universe.Modules.Lookup(dependency); + if (depModule?.IsActive == true) MetDependencies.Add(depModule); + else { UnmetDependencies.Add(dependency); module.Disable(); } + + module.Add(dependency); + } - var depModule = Universe.Modules.Lookup(dependency); - if (depModule?.IsActive == true) MetDependencies.Add(depModule); - else { UnmetDependencies.Add(dependency); module.Disable(); } + Entity = module.Build().CreateLookup(Type); - module.Add(dependency); + // Ensure all parent entities have Module set. + for (var p = Entity.Parent; p != null; p = p.Parent) + p.Add(); } - Entity = module.Build().CreateLookup(Type); - - // Ensure that all the parent entities have Module set, too. - for (var p = Entity.Parent; p != null; p = p.Parent) - p.Add(); - } + public void Enable() + { + Entity.Enable(); + Instance = Activator.CreateInstance(Type)!; + foreach (var type in Type.GetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic)) + RegisterNestedType(type); + (Instance as IModuleInitializer)?.Initialize(Entity); + RegisterMethods(Instance); + } - public void Enable() - { - Entity.Enable(); - Instance = Activator.CreateInstance(Type)!; - RegisterNestedTypes(); - (Instance as IModuleInitializer)?.Initialize(Entity); - RegisterMethods(Instance); - } - - private void RegisterNestedTypes() - { - foreach (var type in Type.GetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic)) { - if (!type.GetCustomAttributes(true).OfType().Any()) continue; + private void RegisterNestedType(Type type) + { + if (!type.GetCustomAttributes(true).OfType().Any()) return; // If proxied type is specified, use it instead of the marked type. // Attributes are still read from the original type. var proxyType = type.Get()?.Type ?? type; - if (!type.Has() && (!proxyType.IsValueType || proxyType.GetFields().Length > 0)) { + if (!type.Has() && (!proxyType.IsValueType || (proxyType.GetFields().Length > 0))) { var typeHint = (proxyType != type) ? $"{proxyType.Name} (proxied by {type})" : type.ToString(); throw new Exception($"Type {typeHint} must be an empty, used-defined struct."); } - var path = (type.Get() is EntityAttribute entityAttr) - ? new EntityPath(entityAttr.Global, entityAttr.Path ?? new[] { proxyType.Name }) - : new EntityPath(false, proxyType.Name); - + var path = EntityPath.Parse(type.Get()?.Value ?? proxyType.Name); var builder = path.IsAbsolute ? Universe.New(path) : Entity.NewChild(path); - if (!type.IsPublic) builder.Symbol(path.Name); - if (type.Has()) builder.Add(); + if (type.Get() is SymbolAttribute symbolAttr) + builder.Symbol(symbolAttr.Value ?? path.Name); var entity = builder.Build(); EntityRef Lookup(Type toLookup) - => (type != toLookup) ? Universe.LookupOrThrow(toLookup) : entity; + => (type != toLookup) ? Universe.LookupByTypeOrThrow(toLookup) : entity; foreach (var attr in type.GetMultiple()) entity.Add(Lookup(attr.Entity)); foreach (var attr in type.GetMultiple()) entity.Add(Lookup(attr.Relation), Lookup(attr.Target)); if (type.Get()?.AutoAdd == true) entity.Add(entity); - if (type.Has()) entity.CreateComponent(proxyType); + if (type.Has()) entity.InitComponent(proxyType); else entity.CreateLookup(proxyType); + if (type.Has()) entity.Add(); + if (type.Has()) entity.Add(); } - } - private void RegisterMethods(object? instance) - { - foreach (var method in Type.GetMethods( - BindingFlags.Public | BindingFlags.NonPublic | - BindingFlags.Static | BindingFlags.Instance - )) { - if (method.Has()) - Universe.RegisterSystem(instance, method).ChildOf(Entity); - if (method.Has()) - Universe.RegisterObserver(instance, method).ChildOf(Entity); + private void RegisterMethods(object? instance) + { + foreach (var method in Type.GetMethods( + BindingFlags.Public | BindingFlags.NonPublic | + BindingFlags.Static | BindingFlags.Instance + )) { + if (method.Has()) + Universe.InitSystem(instance, method).ChildOf(Entity); + if (method.Has()) + Universe.InitObserver(instance, method).ChildOf(Entity); + } } } } diff --git a/src/gaemstone/Universe.cs b/src/gaemstone/Universe.cs new file mode 100644 index 0000000..2bb676d --- /dev/null +++ b/src/gaemstone/Universe.cs @@ -0,0 +1,35 @@ +using System.Linq; +using gaemstone.ECS; + +namespace gaemstone; + +public class Universe : World +{ + public ModuleManager Modules { get; } + + public Universe(params string[] args) + : base(args) + { + Modules = new(this); + + // Bootstrap some stuff, so we can register flecs properly. + New("/gaemstone/Doc/DisplayType") + .Add(LookupByPathOrThrow("/flecs/core/Exclusive")) + .Build().CreateLookup(); + New("/gaemstone/Doc/Relation").Build().CreateLookup(); + LookupByPathOrThrow("/flecs/core/Module" ).CreateLookup(); + LookupByPathOrThrow("/flecs/core/Component").CreateLookup(); + LookupByPathOrThrow("/flecs/core/Tag" ).CreateLookup(); + + // Register built-in (static) modules, which + // are defined in the "gaemstone.Flecs" namespace. + Modules.RegisterAll(GetType().Assembly.GetTypes() + .Where(t => t.IsAbstract && t.IsSealed)); + + Modules.Register(); + + // Create "Game" entity to store global state. + New("/Game").Symbol("Game").Build() + .CreateLookup().Add(); + } +} diff --git a/src/gaemstone/Utility/Allocators.cs b/src/gaemstone/Utility/Allocators.cs deleted file mode 100644 index 5aa3eeb..0000000 --- a/src/gaemstone/Utility/Allocators.cs +++ /dev/null @@ -1,167 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading; -using static flecs_hub.flecs.Runtime; - -namespace gaemstone.Utility; - -public interface IAllocator -{ - nint Allocate(int byteCount); - void Free(nint pointer); -} - -public unsafe static class AllocatorExtensions -{ - public static Span Allocate(this IAllocator allocator, int count) where T : unmanaged - => new((void*)allocator.Allocate(sizeof(T) * count), count); - public static void Free(this IAllocator allocator, Span span) where T : unmanaged - => allocator.Free((nint)Unsafe.AsPointer(ref span[0])); - - public static Span AllocateCopy(this IAllocator allocator, ReadOnlySpan orig) where T : unmanaged - { var copy = allocator.Allocate(orig.Length); orig.CopyTo(copy); return copy; } - - public static ref T Allocate(this IAllocator allocator) where T : unmanaged - => ref Unsafe.AsRef((void*)allocator.Allocate(sizeof(T))); - public static void Free(this IAllocator allocator, ref T value) where T : unmanaged - => allocator.Free((nint)Unsafe.AsPointer(ref value)); - - public static CString AllocateCString(this IAllocator allocator, string? value) - { - if (value == null) return default; - var bytes = Encoding.UTF8.GetByteCount(value); - var span = allocator.Allocate(bytes + 1); - Encoding.UTF8.GetBytes(value, span); - span[^1] = 0; // In case the allocated span is not cleared. - return new((nint)Unsafe.AsPointer(ref span[0])); - } - - public static CString AllocateCString(this IAllocator allocator, ReadOnlySpan utf8) - { - var copy = allocator.Allocate(utf8.Length + 1); - utf8.CopyTo(copy); - copy[^1] = 0; // In case the allocated span is not cleared. - return new((nint)Unsafe.AsPointer(ref copy[0])); - } -} - -public static class TempAllocator -{ - public const int Capacity = 1024 * 1024; // 1 MB - private static readonly ThreadLocal _allocator - = new(() => new(Capacity)); - - public static ResetOnDispose Use() - { - var allocator = _allocator.Value!; - return new(allocator, allocator.Used); - } - - public sealed class ResetOnDispose - : IAllocator - , IDisposable - { - private readonly ArenaAllocator _allocator; - private readonly int _start; - - public ResetOnDispose(ArenaAllocator allocator, int start) - { _allocator = allocator; _start = start; } - - // IAllocator implementation - public nint Allocate(int byteCount) => _allocator.Allocate(byteCount); - public void Free(nint pointer) { /* Do nothing. */ } - - // IDisposable implementation - public void Dispose() => _allocator.Reset(_start); - } -} - -public class GlobalHeapAllocator - : IAllocator -{ - public nint Allocate(int byteCount) - => Marshal.AllocHGlobal(byteCount); - public void Free(nint pointer) - => Marshal.FreeHGlobal(pointer); -} - -public sealed class ArenaAllocator - : IAllocator - , IDisposable -{ - private nint _buffer; - public int Capacity { get; private set; } - public int Used { get; private set; } = 0; - - public ArenaAllocator(int capacity) - { - if (capacity <= 0) throw new ArgumentOutOfRangeException(nameof(capacity)); - _buffer = Marshal.AllocHGlobal(capacity); - Capacity = capacity; - } - - public void Dispose() - { - Marshal.FreeHGlobal(_buffer); - _buffer = default; - Capacity = 0; - } - - public nint Allocate(int byteCount) - { - if (_buffer == default) throw new ObjectDisposedException(nameof(ArenaAllocator)); - if (Used + byteCount > Capacity) throw new InvalidOperationException( - $"Cannot allocate more than {Capacity} bytes with this {nameof(ArenaAllocator)}"); - var ptr = _buffer + Used; - Used += byteCount; - return ptr; - } - - public void Free(nint pointer) - { /* Do nothing. */ } - - public unsafe void Reset(int start = 0) - { - if (start > Used) throw new ArgumentOutOfRangeException(nameof(start)); - new Span((void*)(_buffer + start), Used - start).Clear(); - Used = start; - } -} - -public sealed class RingAllocator - : IAllocator - , IDisposable -{ - private nint _buffer; - private int _current = 0; - public int Capacity { get; private set; } - - public RingAllocator(int capacity) - { - if (capacity <= 0) throw new ArgumentOutOfRangeException(nameof(capacity)); - _buffer = Marshal.AllocHGlobal(capacity); - Capacity = capacity; - } - - public void Dispose() - { - Marshal.FreeHGlobal(_buffer); - _buffer = default; - Capacity = 0; - } - - public nint Allocate(int byteCount) - { - if (_buffer == default) throw new ObjectDisposedException(nameof(RingAllocator)); - if (byteCount > Capacity) throw new ArgumentOutOfRangeException(nameof(byteCount)); - if (_current + byteCount > Capacity) _current = 0; - var ptr = _buffer + _current; - _current += byteCount; - return ptr; - } - - public void Free(nint pointer) - { /* IGNORE */ } -} diff --git a/src/gaemstone/Utility/CStringExtensions.cs b/src/gaemstone/Utility/CStringExtensions.cs deleted file mode 100644 index 0cc756b..0000000 --- a/src/gaemstone/Utility/CStringExtensions.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using static flecs_hub.flecs; -using static flecs_hub.flecs.Runtime; - -namespace gaemstone.Utility; - -public unsafe static class CStringExtensions -{ - public static CString Empty { get; } = (CString)""; - public static CString ETX { get; } = (CString)"\x3"; // TODO: Temporary, until flecs supports Empty. - - public static unsafe byte[]? FlecsToBytes(this CString str) - { - if (str.IsNull) return null; - var pointer = (byte*)(nint)str; - // Find length of the string by locating the NUL character. - var length = 0; while (true) if (pointer[length++] == 0) break; - // Create span over the region, NUL included, copy it into an array. - return new Span(pointer, length).ToArray(); - } - - public static byte[]? FlecsToBytesAndFree(this CString str) - { var result = str.FlecsToBytes(); str.FlecsFree(); return result; } - - public static string? FlecsToString(this CString str) - => Marshal.PtrToStringUTF8(str); - - public static string? FlecsToStringAndFree(this CString str) - { var result = str.FlecsToString(); str.FlecsFree(); return result; } - - public static void FlecsFree(this CString str) - { if (!str.IsNull) ecs_os_get_api().free_.Data.Pointer((void*)(nint)str); } -} diff --git a/src/gaemstone/Utility/CallbackContextHelper.cs b/src/gaemstone/Utility/CallbackContextHelper.cs deleted file mode 100644 index 4bca09d..0000000 --- a/src/gaemstone/Utility/CallbackContextHelper.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; - -namespace gaemstone.Utility; - -public static class CallbackContextHelper -{ - private static readonly List _contexts = new(); - - public static nint Create(T context) where T : notnull - { _contexts.Add(context); return _contexts.Count; } - - public static T Get(nint context) - => (T)_contexts[(int)context - 1]; -} diff --git a/src/gaemstone/Utility/CollectionExtensions.cs b/src/gaemstone/Utility/CollectionExtensions.cs index f40bc7e..ef9afae 100644 --- a/src/gaemstone/Utility/CollectionExtensions.cs +++ b/src/gaemstone/Utility/CollectionExtensions.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; namespace gaemstone.Utility; @@ -8,11 +7,6 @@ public static class CollectionExtensions // public static TValue GetOrAdd(this IDictionary dict, // TKey key, Func valueFactory) { } - public static T? MaybeGet(this Span span, int index) - where T : struct => MaybeGet((ReadOnlySpan)span, index); - public static T? MaybeGet(this ReadOnlySpan span, int index) - where T : struct => (index >= 0 && index < span.Length) ? span[index] : null; - public static T? FirstOrNull(this IEnumerable enumerable) where T : struct { diff --git a/src/gaemstone/Utility/IL/IterActionGenerator.cs b/src/gaemstone/Utility/IL/IterActionGenerator.cs index 7de3703..ece7f46 100644 --- a/src/gaemstone/Utility/IL/IterActionGenerator.cs +++ b/src/gaemstone/Utility/IL/IterActionGenerator.cs @@ -15,19 +15,20 @@ public unsafe class IterActionGenerator { private static readonly ConstructorInfo _entityRefCtor = typeof(EntityRef).GetConstructors().Single(); - private static readonly PropertyInfo _iteratorUniverseProp = typeof(Iterator).GetProperty(nameof(Iterator.Universe))!; + private static readonly PropertyInfo _iteratorWorldProp = typeof(Iterator).GetProperty(nameof(Iterator.World))!; private static readonly PropertyInfo _iteratorDeltaTimeProp = typeof(Iterator).GetProperty(nameof(Iterator.DeltaTime))!; private static readonly PropertyInfo _iteratorCountProp = typeof(Iterator).GetProperty(nameof(Iterator.Count))!; private static readonly MethodInfo _iteratorEntityMethod = typeof(Iterator).GetMethod(nameof(Iterator.Entity))!; private static readonly MethodInfo _iteratorFieldMethod = typeof(Iterator).GetMethod(nameof(Iterator.Field))!; - private static readonly MethodInfo _iteratorMaybeFieldMethod = typeof(Iterator).GetMethod(nameof(Iterator.MaybeField))!; + private static readonly MethodInfo _iteratorFieldOrEmptyMethod = typeof(Iterator).GetMethod(nameof(Iterator.FieldOrEmpty))!; private static readonly MethodInfo _handleFromIntPtrMethod = typeof(GCHandle).GetMethod(nameof(GCHandle.FromIntPtr))!; private static readonly PropertyInfo _handleTargetProp = typeof(GCHandle).GetProperty(nameof(GCHandle.Target))!; private static readonly ConditionalWeakTable _cache = new(); private static readonly Dictionary>> _globalUniqueParameters = new() { - [typeof(Universe)] = (IL, iter) => { IL.Load(iter, _iteratorUniverseProp); }, + [typeof(World)] = (IL, iter) => { IL.Load(iter, _iteratorWorldProp); }, + [typeof(Universe)] = (IL, iter) => { IL.Load(iter, _iteratorWorldProp); IL.Cast(typeof(Universe)); }, [typeof(TimeSpan)] = (IL, iter) => { IL.Load(iter, _iteratorDeltaTimeProp); }, }; private static readonly Dictionary, ILocal>> _uniqueParameters = new() { @@ -35,7 +36,7 @@ public unsafe class IterActionGenerator [typeof(EntityRef)] = (IL, iter, i) => { IL.Load(iter); IL.Load(i); IL.Call(_iteratorEntityMethod); }, }; - public Universe Universe { get; } + public World World { get; } public MethodInfo Method { get; } public IReadOnlyList Parameters { get; } @@ -49,9 +50,9 @@ public unsafe class IterActionGenerator catch { Console.Error.WriteLine(ReadableString); throw; } } - public IterActionGenerator(Universe universe, MethodInfo method) + public IterActionGenerator(World world, MethodInfo method) { - Universe = universe; + World = world; Method = method; Parameters = method.GetParameters().Select(ParamInfo.Build).ToImmutableArray(); @@ -70,8 +71,8 @@ public unsafe class IterActionGenerator { paramData.Add((p, null, null, null)); continue; } // Create a term to add to the query. - var term = new Term(universe.LookupOrThrow(p.UnderlyingType)) { - Source = (p.Source != null) ? (TermID)Universe.LookupOrThrow(p.Source) : null, + var term = new Term(world.LookupByTypeOrThrow(p.UnderlyingType)) { + Source = (p.Source != null) ? (TermId)World.LookupByTypeOrThrow(p.Source) : null, InOut = p.Kind switch { ParamKind.In => TermInOutKind.In, ParamKind.Out => TermInOutKind.Out, @@ -107,17 +108,19 @@ public unsafe class IterActionGenerator break; case ParamKind.Nullable or ParamKind.Or: - IL.Comment($"{p.Info.Name}Field = iterator.MaybeField<{p.FieldType.Name}>({fieldIndex})"); + IL.Comment($"{p.Info.Name}Field = iterator.FieldOrEmpty<{p.FieldType.Name}>({fieldIndex})"); fieldLocal = IL.Local(spanType, $"{p.Info.Name}Field"); IL.Load(iteratorArg); IL.LoadConst(fieldIndex); - IL.Call(_iteratorMaybeFieldMethod.MakeGenericMethod(p.FieldType)); + IL.Call(_iteratorFieldOrEmptyMethod.MakeGenericMethod(p.FieldType)); IL.Store(fieldLocal); - IL.Comment($"{p.Info.Name}Temp = default({p.ParameterType});"); - tempLocal = IL.Local(p.ParameterType); - IL.LoadAddr(tempLocal); - IL.Init(tempLocal.LocalType); + if (p.UnderlyingType.IsValueType) { + IL.Comment($"{p.Info.Name}Temp = default({p.ParameterType});"); + tempLocal = IL.Local(p.ParameterType); + IL.LoadAddr(tempLocal); + IL.Init(tempLocal.LocalType); + } break; default: @@ -164,20 +167,22 @@ public unsafe class IterActionGenerator foreach (var (info, term, fieldLocal, tempLocal) in paramData) { var isValueType = info.UnderlyingType.IsValueType; + var paramName = info.ParameterType.GetFriendlyName(); switch (info.Kind) { case ParamKind.GlobalUnique: - IL.Comment($"Global unique parameter {info.ParameterType.GetFriendlyName()}"); + IL.Comment($"Global unique parameter {paramName}"); _globalUniqueParameters[info.ParameterType](IL, iteratorArg); break; case ParamKind.Unique: - IL.Comment($"Unique parameter {info.ParameterType.GetFriendlyName()}"); + IL.Comment($"Unique parameter {paramName}"); _uniqueParameters[info.ParameterType](IL, iteratorArg, indexLocal!); break; // FIXME: Currently would not work with [Or]'d components. case ParamKind.Has or ParamKind.Not or ParamKind.Or: + IL.Comment($"Has parameter {paramName}"); if (isValueType) IL.LoadObj(tempLocal!); else IL.LoadNull(); break; @@ -187,7 +192,7 @@ public unsafe class IterActionGenerator var spanItemMethod = spanType.GetProperty("Item")!.GetMethod!; var spanLengthMethod = spanType.GetProperty("Length")!.GetMethod!; - IL.Comment($"Parameter {info.ParameterType.GetFriendlyName()}"); + IL.Comment($"Parameter {paramName}"); if (info.IsByRef) { IL.LoadAddr(fieldLocal!); if (info.IsFixed) IL.LoadConst(0); @@ -199,6 +204,15 @@ public unsafe class IterActionGenerator else IL.Load(indexLocal!); IL.Call(spanItemMethod); IL.LoadObj(info.FieldType); + + if (!isValueType) { + IL.Comment($"Convert nint to {paramName}"); + IL.Call(_handleFromIntPtrMethod); + IL.Store(handleLocal!); + IL.LoadAddr(handleLocal!); + IL.Call(_handleTargetProp.GetMethod!); + IL.Cast(info.UnderlyingType); + } } else { var elseLabel = IL.DefineLabel(); var doneLabel = IL.DefineLabel(); @@ -210,24 +224,20 @@ public unsafe class IterActionGenerator else IL.Load(indexLocal!); IL.Call(spanItemMethod); IL.LoadObj(info.FieldType); - if (info.Kind == ParamKind.Nullable) - IL.New(info.ParameterType); + if (!isValueType) { + IL.Comment($"Convert nint to {paramName}"); + IL.Call(_handleFromIntPtrMethod); + IL.Store(handleLocal!); + IL.LoadAddr(handleLocal!); + IL.Call(_handleTargetProp.GetMethod!); + IL.Cast(info.UnderlyingType); + } else IL.New(info.ParameterType); IL.Goto(doneLabel); IL.MarkLabel(elseLabel); - if (info.Kind == ParamKind.Nullable) - IL.LoadObj(tempLocal!); - else IL.LoadNull(); + if (!isValueType) IL.LoadNull(); + else IL.LoadObj(tempLocal!); IL.MarkLabel(doneLabel); } - - if (!isValueType) { - IL.Comment($"Convert nint to {info.UnderlyingType.GetFriendlyName()}"); - IL.Call(_handleFromIntPtrMethod); - IL.Store(handleLocal!); - IL.LoadAddr(handleLocal!); - IL.Call(_handleTargetProp.GetMethod!); - IL.Cast(info.UnderlyingType); - } break; } } @@ -243,8 +253,8 @@ public unsafe class IterActionGenerator ReadableString = IL.ToReadableString(); } - public static IterActionGenerator GetOrBuild(Universe universe, MethodInfo method) - =>_cache.GetValue(method, m => new IterActionGenerator(universe, m)); + public static IterActionGenerator GetOrBuild(World world, MethodInfo method) + =>_cache.GetValue(method, m => new IterActionGenerator(world, m)); public class ParamInfo { @@ -352,7 +362,7 @@ public unsafe class IterActionGenerator /// /// Not part of the resulting query's terms. /// Same value across a single invocation of a callback. - /// For example or . + /// For example or . /// GlobalUnique, diff --git a/src/gaemstone/Utility/SpanToRef.cs b/src/gaemstone/Utility/SpanToRef.cs deleted file mode 100644 index b9f169b..0000000 --- a/src/gaemstone/Utility/SpanToRef.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace gaemstone.Utility; - -public readonly ref struct SpanToRef - where T : class -{ - private readonly Span _span; - - public int Length => _span.Length; - public T? this[int index] => (_span[index] != 0) - ? (T)((GCHandle)_span[index]).Target! : null; - - internal SpanToRef(Span span) => _span = span; - - public void Clear() => _span.Clear(); - public void CopyTo(SpanToRef dest) => _span.CopyTo(dest._span); -} diff --git a/src/gaemstone/gaemstone.csproj b/src/gaemstone/gaemstone.csproj index ff3667a..aeb1b19 100644 --- a/src/gaemstone/gaemstone.csproj +++ b/src/gaemstone/gaemstone.csproj @@ -3,13 +3,13 @@ preview net7.0 + true disable enable - true - +