From dfd8cea6e7bc732bb063458d864ca172691f919f Mon Sep 17 00:00:00 2001 From: Antti Veikkolainen Date: Sat, 25 Oct 2025 20:51:33 +0300 Subject: [PATCH 1/4] #52 Modify folder structure --- .editorconfig => Engine/.editorconfig | 0 .../Directory.Build.props | 0 {Editor => Engine/Editor}/EditorSettings.cs | 0 {Editor => Engine/Editor}/EditorWindow.cs | 0 {Editor => Engine/Editor}/Program.cs | 0 {Editor => Engine/Editor}/SharpEngine.Editor.csproj | 0 {Editor => Engine/Editor}/SharpEngine.Editor.sln | 0 .../Editor}/Windows/ActionsMenuWindow.cs | 0 {Editor => Engine/Editor}/Windows/AssetsWindow.cs | 0 .../Editor}/Windows/ContextMenuWindow.cs | 0 .../Editor}/Windows/ImGuiWindowBase.cs | 0 .../Editor}/Windows/PropertiesWindow.cs | 0 {Editor => Engine/Editor}/Windows/SceneWindow.cs | 0 .../Examples}/MinecraftClone/Block/BlockBase.cs | 0 .../Examples}/MinecraftClone/Block/Dirt.cs | 0 .../Examples}/MinecraftClone/Block/Stone.cs | 0 .../Examples}/MinecraftClone/BlockFactory.cs | 0 .../Examples}/MinecraftClone/Input.cs | 0 .../Examples}/MinecraftClone/Inventory.cs | 0 .../Examples}/MinecraftClone/Minecraft.cs | 0 .../Examples}/MinecraftClone/Minecraft.csproj | 0 .../Examples}/MinecraftClone/Minecraft.sln | 0 .../Examples}/MinecraftClone/Program.cs | 0 .../MinecraftClone/Resources/container2.png | Bin .../Resources/container2_specular.png | Bin .../Examples}/MinecraftClone/Resources/grass.jpg | Bin .../Examples}/Minimal/Minimal.csproj | 0 {Examples => Engine/Examples}/Minimal/Minimal.sln | 0 {Examples => Engine/Examples}/Minimal/Program.cs | 0 .../MultipleWindows/MultipleWindows.csproj | 0 .../Examples}/MultipleWindows/Program.cs | 0 .../Tutorial 4.1 - Model Loading/Program.cs | 0 .../Tutorial 4.1 - Model Loading.csproj | 0 .../Tutorial 4.1 - Model Loading/shader2.vert | 0 .../Examples}/Tutorial 4.1 - Model Loading/silk.png | Bin {Launcher => Engine/Launcher}/App.xaml | 0 {Launcher => Engine/Launcher}/App.xaml.cs | 0 .../Launcher}/Attributes/FileAttribute.cs | 0 {Launcher => Engine/Launcher}/Enums/SvgIcon.cs | 0 {Launcher => Engine/Launcher}/Launcher.csproj | 0 {Launcher => Engine/Launcher}/Launcher.sln | 0 {Launcher => Engine/Launcher}/MainPage.xaml | 0 {Launcher => Engine/Launcher}/MainPage.xaml.cs | 0 {Launcher => Engine/Launcher}/MauiProgram.cs | 0 .../Launcher}/Platforms/Android/AndroidManifest.xml | 0 .../Launcher}/Platforms/Android/MainActivity.cs | 0 .../Launcher}/Platforms/Android/MainApplication.cs | 0 .../Platforms/Android/Resources/values/colors.xml | 0 .../Launcher}/Platforms/MacCatalyst/AppDelegate.cs | 0 .../Platforms/MacCatalyst/Entitlements.plist | 0 .../Launcher}/Platforms/MacCatalyst/Info.plist | 0 .../Launcher}/Platforms/MacCatalyst/Program.cs | 0 .../Launcher}/Platforms/Tizen/Main.cs | 0 .../Launcher}/Platforms/Tizen/tizen-manifest.xml | 0 .../Launcher}/Platforms/Windows/App.xaml | 0 .../Launcher}/Platforms/Windows/App.xaml.cs | 0 .../Platforms/Windows/Package.appxmanifest | 0 .../Launcher}/Platforms/Windows/app.manifest | 0 .../Launcher}/Platforms/iOS/AppDelegate.cs | 0 .../Launcher}/Platforms/iOS/Info.plist | 0 .../Launcher}/Platforms/iOS/Program.cs | 0 .../Platforms/iOS/Resources/PrivacyInfo.xcprivacy | 0 .../Launcher}/Properties/launchSettings.json | 0 .../Launcher}/Resources/AppIcon/appicon.svg | 0 .../Launcher}/Resources/AppIcon/appiconfg.svg | 0 .../Launcher}/Resources/AppIcon/icon.ico | Bin .../Launcher}/Resources/AppIcon/icon.png | Bin .../Launcher}/Resources/AppIcon/icon.svg | 0 .../Launcher}/Resources/Fonts/OpenSans-Regular.ttf | Bin .../Launcher}/Resources/Images/dotnet_bot.svg | 0 .../Launcher}/Resources/Raw/AboutAssets.txt | 0 .../Launcher}/Resources/Splash/splash.svg | 0 .../Launcher}/Services/EditorService.cs | 0 .../Launcher}/Services/NotificationService.cs | 0 {Launcher => Engine/Launcher}/TestData/TestData.cs | 0 .../Launcher}/UI/Components/ContextMenu.razor | 0 .../Launcher}/UI/Components/ContextMenu.razor.css | 0 .../UI/Components/ContextMenu.razor.min.css | 0 .../Launcher}/UI/Components/ContextMenu.razor.scss | 0 .../UI/Components/Dialogs/ConfirmDeleteDialog.razor | 0 .../Dialogs/ConfirmDeleteDialog.razor.css | 0 .../Dialogs/ConfirmDeleteDialog.razor.min.css | 0 .../Dialogs/ConfirmDeleteDialog.razor.scss | 0 .../UI/Components/Dialogs/CreateProjectDialog.razor | 0 .../Components/Dialogs/CreateProjectDialog.razor.cs | 0 .../Dialogs/CreateProjectDialog.razor.css | 0 .../Dialogs/CreateProjectDialog.razor.min.css | 0 .../Dialogs/CreateProjectDialog.razor.scss | 0 .../Launcher}/UI/Components/Dialogs/DialogBase.cs | 0 .../Launcher}/UI/Components/Flyouts/Flyout.razor | 0 .../UI/Components/Flyouts/Flyout.razor.css | 0 .../UI/Components/Flyouts/Flyout.razor.min.css | 0 .../UI/Components/Flyouts/Flyout.razor.scss | 0 .../Launcher}/UI/Components/Flyouts/FlyoutBase.cs | 0 .../UI/Components/Flyouts/SettingsFlyout.razor | 0 .../Launcher}/UI/Components/Grid/Grid.razor | 0 .../Launcher}/UI/Components/Grid/Grid.razor.css | 0 .../Launcher}/UI/Components/Grid/Grid.razor.min.css | 0 .../Launcher}/UI/Components/Grid/Grid.razor.scss | 0 .../Launcher}/UI/Components/Grid/GridHeader.cs | 0 .../Launcher}/UI/Components/Grid/GridHeader.razor | 0 .../UI/Components/Grid/GridHeader.razor.css | 0 .../UI/Components/Grid/GridHeader.razor.min.css | 0 .../UI/Components/Grid/GridHeader.razor.scss | 0 .../Launcher}/UI/Components/Grid/GridRow.razor | 0 .../Launcher}/UI/Components/Icons/DiscardIcon.razor | 0 .../Launcher}/UI/Components/Icons/Icon.razor | 0 .../Launcher}/UI/Components/Layout.razor | 0 .../Launcher}/UI/Components/Layout.razor.css | 0 .../Launcher}/UI/Components/Layout.razor.min.css | 0 .../Launcher}/UI/Components/Layout.razor.scss | 0 .../UI/Components/Navigation/SideBarItem.razor | 0 .../UI/Components/Navigation/SideBarItem.razor.css | 0 .../Components/Navigation/SideBarItem.razor.min.css | 0 .../UI/Components/Navigation/SideBarItem.razor.scss | 0 .../UI/Components/Navigation/Sidebar.razor | 0 .../UI/Components/Navigation/Sidebar.razor.css | 0 .../UI/Components/Navigation/Sidebar.razor.min.css | 0 .../UI/Components/Navigation/Sidebar.razor.scss | 0 .../UI/Components/Notification/Notification.razor | 0 .../Components/Notification/Notification.razor.css | 0 .../Notification/Notification.razor.min.css | 0 .../Components/Notification/Notification.razor.scss | 0 .../UI/Components/Notification/NotificationType.cs | 0 .../Notification/NotificationTypeExtensions.cs | 0 .../Launcher}/UI/Components/Searchbox.razor | 0 .../Launcher}/UI/Components/Searchbox.razor.css | 0 .../Launcher}/UI/Components/Searchbox.razor.min.css | 0 .../Launcher}/UI/Components/Searchbox.razor.scss | 0 {Launcher => Engine/Launcher}/UI/Home.razor | 0 {Launcher => Engine/Launcher}/UI/Home.razor.cs | 0 {Launcher => Engine/Launcher}/UI/Home.razor.css | 0 {Launcher => Engine/Launcher}/UI/Home.razor.min.css | 0 {Launcher => Engine/Launcher}/UI/Home.razor.scss | 0 {Launcher => Engine/Launcher}/UI/Routes.razor | 0 {Launcher => Engine/Launcher}/UI/_Imports.razor | 0 {Launcher => Engine/Launcher}/compilerconfig.json | 0 .../Launcher}/compilerconfig.json.defaults | 0 .../Launcher}/wwwroot/css/additional.css | 0 .../Launcher}/wwwroot/css/additional.min.css | 0 .../Launcher}/wwwroot/css/additional.scss | 0 {Launcher => Engine/Launcher}/wwwroot/css/app.css | 0 .../wwwroot/css/bootstrap/bootstrap.min.css | 0 .../wwwroot/css/bootstrap/bootstrap.min.css.map | 0 {Launcher => Engine/Launcher}/wwwroot/favicon.png | Bin {Launcher => Engine/Launcher}/wwwroot/index.html | 0 {ObjLoader => Engine/ObjLoader}/DataStore.cs | 0 .../ObjLoader}/Loaders/LoaderBase.cs | 0 .../MaterialLoader/IMaterialLibraryLoaderFacade.cs | 0 .../Loaders/MaterialLoader/MaterialLibraryLoader.cs | 0 .../MaterialLoader/MaterialLibraryLoaderFacade.cs | 0 .../ObjLoader}/Loaders/ObjLoader/ObjLoader.cs | 0 .../Loaders/ObjLoader/ObjLoaderFactory.cs | 0 .../ObjLoader}/SharpEngine.Core.ObjLoader.csproj | 0 .../ObjLoader}/TypeParsers/FaceParser.cs | 0 .../ObjLoader}/TypeParsers/GroupParser.cs | 0 .../ObjLoader}/TypeParsers/ITypeParser.cs | 0 .../ObjLoader}/TypeParsers/MaterialLibraryParser.cs | 0 .../ObjLoader}/TypeParsers/NormalParser.cs | 0 .../ObjLoader}/TypeParsers/TextureParser.cs | 0 .../ObjLoader}/TypeParsers/TypeParserBase.cs | 0 .../ObjLoader}/TypeParsers/UseMaterialParser.cs | 0 .../ObjLoader}/TypeParsers/VertexParser.cs | 0 .../Resources}/Screenshots/editor.png | Bin .../Resources}/Screenshots/launcher.png | Bin {Resources => Engine/Resources}/icon.ico | Bin {Resources => Engine/Resources}/icon.png | Bin {Resources => Engine/Resources}/icon.svg | 0 {Resources => Engine/Resources}/icon.xcf | Bin .../SharpEngine.Core.Components}/IComponent.cs | 0 .../Obsolete/ObjLoader/DataStore/IFaceGroup.cs | 0 .../Obsolete/ObjLoader/DataStore/IGroupDataStore.cs | 0 .../ObjLoader/DataStore/IMaterialLibrary.cs | 0 .../ObjLoader/DataStore/INormalDataStore.cs | 0 .../ObjLoader/DataStore/ITextureDataStore.cs | 0 .../ObjLoader/DataStore/IVertexDataStore.cs | 0 .../Properties/BoundingBox.cs | 0 .../Properties/ITransform.cs | 0 .../Properties/Material.cs | 0 .../Properties/Meshes/BufferObject.cs | 0 .../Properties/Meshes/Mesh.cs | 0 .../Properties/Meshes/MeshData/Face.cs | 0 .../Properties/Meshes/MeshData/Group.cs | 0 .../Properties/Meshes/MeshData/Normal.cs | 0 .../Properties/Meshes/MeshData/TextureCoordinate.cs | 0 .../Properties/Meshes/MeshData/Vertex.cs | 0 .../Properties/Meshes/MeshExtensions.cs | 0 .../Properties/Meshes/Model.cs | 0 .../Properties/Meshes/Model_Old.cs | 0 .../Properties/Meshes/ObjMeshData.cs | 0 .../Properties/Meshes/VertexArrayObject.cs | 0 .../Properties/Meshes/VertexData.cs | 0 .../Properties/Quaternion.cs | 0 .../Properties/Shaders/Shader.cs | 0 .../Properties/Shaders/ShaderAttributes.cs | 0 .../Properties/Shaders/ShaderExtensions.cs | 0 .../Properties/Textures/Texture.cs | 0 .../Properties/Textures/TextureExtensions.cs | 0 .../Properties/Transform.cs | 0 .../Properties/Transform2D.cs | 0 .../SharpEngine.Core.Components.csproj | 0 .../SharpEngine.Core.Numerics}/Float.cs | 0 .../SharpEngine.Core.Numerics}/HashCodeHelper.cs | 0 .../SharpEngine.Core.Numerics}/IVector.cs | 0 .../JitIntrinsicAttribute.cs | 0 .../SharpEngine.Core.Numerics.csproj | 0 .../SharpEngine.Core.Numerics}/Vector2.cs | 0 .../Vector2_Intrinsics.cs | 0 .../SharpEngine.Core.Numerics}/Vector3.cs | 0 .../Vector3_Intrinsics.cs | 0 .../SharpEngine.Core}/Abstractions/IGame.cs | 0 .../SharpEngine.Core}/Abstractions/IRenderable.cs | 0 .../SharpEngine.Core}/Abstractions/ISettings.cs | 0 .../SharpEngine.Core}/Audio/Audio.cs | 0 .../SharpEngine.Core}/Audio/AudioBuffer.cs | 0 .../SharpEngine.Core}/Audio/AudioDevice.cs | 0 .../SharpEngine.Core}/Audio/AudioFileExtensions.cs | 0 .../SharpEngine.Core}/Audio/AudioPlayerBase.cs | 0 .../SharpEngine.Core}/Audio/AudioProperties.cs | 0 .../SharpEngine.Core}/Audio/AudioSource.cs | 0 .../SharpEngine.Core}/Audio/WavData.cs | 0 .../SharpEngine.Core}/Audio/WavPlayer.cs | 0 .../SharpEngine.Core}/Entities/BezierCurve.cs | 0 .../SharpEngine.Core}/Entities/GameObject.cs | 0 .../Entities/Lights/DirectionalLight.cs | 0 .../SharpEngine.Core}/Entities/Lights/Light.cs | 0 .../SharpEngine.Core}/Entities/Lights/PointLight.cs | 0 .../SharpEngine.Core}/Entities/Lights/SpotLight.cs | 0 .../SharpEngine.Core}/Entities/MeshService.cs | 0 .../Entities/UI/Layouts/FlexLayout.cs | 0 .../Entities/UI/Layouts/GridLayout.cs | 0 .../Entities/UI/Layouts/LayoutBase.cs | 0 .../SharpEngine.Core}/Entities/UI/UIElement.cs | 0 .../SharpEngine.Core}/Entities/Views/CameraView.cs | 0 .../Entities/Views/Settings/DefaultViewSettings.cs | 0 .../Entities/Views/Settings/IViewSettings.cs | 0 .../Entities/Views/Settings/ViewSettings.cs | 0 .../SharpEngine.Core}/Entities/Views/View.cs | 0 .../Enums/MouseWheelScrollDirection.cs | 0 .../Extensions/CollectionExtensions.cs | 0 .../SharpEngine.Core}/Extensions/PathExtensions.cs | 0 .../SharpEngine.Core}/Primitives/Cube.cs | 0 .../SharpEngine.Core}/Primitives/Plane.cs | 0 .../Primitives/PrimitiveFactory.cs | 0 .../SharpEngine.Core}/Primitives/PrimitiveType.cs | 0 .../SharpEngine.Core}/Ray.cs | 0 .../SharpEngine.Core}/Renderers/RenderFlags.cs | 0 .../SharpEngine.Core}/Renderers/Renderer.cs | 0 .../SharpEngine.Core}/Renderers/RendererBase.cs | 0 .../SharpEngine.Core}/Renderers/TextRenderer.cs | 0 .../SharpEngine.Core}/Renderers/UIRenderer.cs | 0 .../SharpEngine.Core}/Scenes/Scene.cs | 0 .../SharpEngine.Core}/Scenes/SceneNode.cs | 0 .../SharpEngine.Core}/Shaders/LampShader.cs | 0 .../SharpEngine.Core}/Shaders/LightingShader.cs | 0 .../SharpEngine.Core}/Shaders/ShaderBase.cs | 0 .../SharpEngine.Core}/Shaders/ShaderService.cs | 0 .../SharpEngine.Core}/Shaders/UIShader.cs | 0 .../SharpEngine.Core}/SharpEngine.Core.csproj | 0 .../SharpEngine.Core}/Textures/TextureService.cs | 0 .../SharpEngine.Core}/Windowing/Frame.cs | 0 .../SharpEngine.Core}/Windowing/SilkWindow.cs | 0 .../SharpEngine.Core}/Windowing/Window.cs | 0 .../SharpEngine.Core}/_Resources/Default.cs | 0 .../_Resources/Shaders/Light/DirectionalLight.glsl | 0 .../_Resources/Shaders/Light/PointLight.glsl | 0 .../_Resources/Shaders/Light/SpotLight.glsl | 0 .../_Resources/Shaders/Material.glsl | 0 .../_Resources/Shaders/lighting.frag | 0 .../_Resources/Shaders/shader.frag | 0 .../_Resources/Shaders/shader.vert | 0 .../_Resources/Shaders/shader2.vert | 0 .../_Resources/Shaders/uiShader.frag | 0 .../_Resources/Shaders/uiShader.vert | 0 .../SharpEngine.Core}/_Resources/Textures/debug.jpg | Bin .../SharpEngine.Core}/_Resources/icon.png | Bin .../Attributes/FilterAttribute.cs | 0 .../Attributes/InspectorAttribute.cs | 0 .../SharpEngine.Shared}/Debug.cs | 0 .../SharpEngine.Shared}/Dto/Project.cs | 0 .../SharpEngine.Shared}/Dto/UserProfile.cs | 0 .../SharpEngine.Shared}/Enums/FilterMode.cs | 0 .../SharpEngine.Shared}/EnvironmentVariables.cs | 0 .../Extensions/OrderedEnumerableExtensions.cs | 0 .../Extensions/ProcessExtensions.cs | 0 .../Extensions/ReflectionExtensions.cs | 0 .../Extensions/StringExtensions.cs | 0 .../SharpEngine.Shared}/Math.cs | 0 .../SharpEngine.Shared}/NaturalStringComparer.cs | 0 .../SharpEngine.Shared}/SharpEngine.Shared.csproj | 0 SharpEngine.sln => Engine/SharpEngine.sln | 0 SharpEngine.slnx => Engine/SharpEngine.slnx | 0 .../Loaders/MaterialLibraryLoaderTests.cs | 0 .../Tests}/ObjLoader.Test/Loaders/ObjLoaderTests.cs | 0 .../Tests}/ObjLoader.Test/ObjLoader.Tests.csproj | 0 .../ObjLoader.Test/TypeParsers/FaceParserTests.cs | 0 .../ObjLoader.Test/TypeParsers/GroupParserTests.cs | 0 .../TypeParsers/MaterialLibraryParserTests.cs | 0 .../ObjLoader.Test/TypeParsers/NormalParserTests.cs | 0 .../TypeParsers/TextureParserTests.cs | 0 .../TypeParsers/UseMaterialParserTests.cs | 0 .../ObjLoader.Test/TypeParsers/VertexParserTests.cs | 0 .../Tests}/SharpEngine.Core.Tests/Class1.cs | 0 .../SharpEngine.Core.Tests.csproj | 0 .../Tests}/SharpEngine.Editor.Tests/Class1.cs | 0 .../SharpEngine.Editor.Tests.csproj | 0 .../Tests}/SharpEngine.Shared.Net8/Class1.cs | 0 .../SharpEngine.Shared.Net8.csproj | 0 .../Tests}/SharpEngine.Shared.Tests/Class1.cs | 0 .../SharpEngine.Shared.Tests.csproj | 0 {Tests => Engine/Tests}/Test.Directory.Build.props | 0 {docs => Engine/docs}/CODE_OF_CONDUCT.md | 0 {docs => Engine/docs}/CONTRIBUTING.md | 0 {docs => Engine/docs}/SECURITY.md | 0 {docs => Engine/docs}/materials_and_inspiration.md | 0 {docs => Engine/docs}/pull_request_template.md | 0 316 files changed, 0 insertions(+), 0 deletions(-) rename .editorconfig => Engine/.editorconfig (100%) rename Directory.Build.props => Engine/Directory.Build.props (100%) rename {Editor => Engine/Editor}/EditorSettings.cs (100%) rename {Editor => Engine/Editor}/EditorWindow.cs (100%) rename {Editor => Engine/Editor}/Program.cs (100%) rename {Editor => Engine/Editor}/SharpEngine.Editor.csproj (100%) rename {Editor => Engine/Editor}/SharpEngine.Editor.sln (100%) rename {Editor => Engine/Editor}/Windows/ActionsMenuWindow.cs (100%) rename {Editor => Engine/Editor}/Windows/AssetsWindow.cs (100%) rename {Editor => Engine/Editor}/Windows/ContextMenuWindow.cs (100%) rename {Editor => Engine/Editor}/Windows/ImGuiWindowBase.cs (100%) rename {Editor => Engine/Editor}/Windows/PropertiesWindow.cs (100%) rename {Editor => Engine/Editor}/Windows/SceneWindow.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Block/BlockBase.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Block/Dirt.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Block/Stone.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/BlockFactory.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Input.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Inventory.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Minecraft.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Minecraft.csproj (100%) rename {Examples => Engine/Examples}/MinecraftClone/Minecraft.sln (100%) rename {Examples => Engine/Examples}/MinecraftClone/Program.cs (100%) rename {Examples => Engine/Examples}/MinecraftClone/Resources/container2.png (100%) rename {Examples => Engine/Examples}/MinecraftClone/Resources/container2_specular.png (100%) rename {Examples => Engine/Examples}/MinecraftClone/Resources/grass.jpg (100%) rename {Examples => Engine/Examples}/Minimal/Minimal.csproj (100%) rename {Examples => Engine/Examples}/Minimal/Minimal.sln (100%) rename {Examples => Engine/Examples}/Minimal/Program.cs (100%) rename {Examples => Engine/Examples}/MultipleWindows/MultipleWindows.csproj (100%) rename {Examples => Engine/Examples}/MultipleWindows/Program.cs (100%) rename {Examples => Engine/Examples}/Tutorial 4.1 - Model Loading/Program.cs (100%) rename {Examples => Engine/Examples}/Tutorial 4.1 - Model Loading/Tutorial 4.1 - Model Loading.csproj (100%) rename {Examples => Engine/Examples}/Tutorial 4.1 - Model Loading/shader2.vert (100%) rename {Examples => Engine/Examples}/Tutorial 4.1 - Model Loading/silk.png (100%) rename {Launcher => Engine/Launcher}/App.xaml (100%) rename {Launcher => Engine/Launcher}/App.xaml.cs (100%) rename {Launcher => Engine/Launcher}/Attributes/FileAttribute.cs (100%) rename {Launcher => Engine/Launcher}/Enums/SvgIcon.cs (100%) rename {Launcher => Engine/Launcher}/Launcher.csproj (100%) rename {Launcher => Engine/Launcher}/Launcher.sln (100%) rename {Launcher => Engine/Launcher}/MainPage.xaml (100%) rename {Launcher => Engine/Launcher}/MainPage.xaml.cs (100%) rename {Launcher => Engine/Launcher}/MauiProgram.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/Android/AndroidManifest.xml (100%) rename {Launcher => Engine/Launcher}/Platforms/Android/MainActivity.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/Android/MainApplication.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/Android/Resources/values/colors.xml (100%) rename {Launcher => Engine/Launcher}/Platforms/MacCatalyst/AppDelegate.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/MacCatalyst/Entitlements.plist (100%) rename {Launcher => Engine/Launcher}/Platforms/MacCatalyst/Info.plist (100%) rename {Launcher => Engine/Launcher}/Platforms/MacCatalyst/Program.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/Tizen/Main.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/Tizen/tizen-manifest.xml (100%) rename {Launcher => Engine/Launcher}/Platforms/Windows/App.xaml (100%) rename {Launcher => Engine/Launcher}/Platforms/Windows/App.xaml.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/Windows/Package.appxmanifest (100%) rename {Launcher => Engine/Launcher}/Platforms/Windows/app.manifest (100%) rename {Launcher => Engine/Launcher}/Platforms/iOS/AppDelegate.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/iOS/Info.plist (100%) rename {Launcher => Engine/Launcher}/Platforms/iOS/Program.cs (100%) rename {Launcher => Engine/Launcher}/Platforms/iOS/Resources/PrivacyInfo.xcprivacy (100%) rename {Launcher => Engine/Launcher}/Properties/launchSettings.json (100%) rename {Launcher => Engine/Launcher}/Resources/AppIcon/appicon.svg (100%) rename {Launcher => Engine/Launcher}/Resources/AppIcon/appiconfg.svg (100%) rename {Launcher => Engine/Launcher}/Resources/AppIcon/icon.ico (100%) rename {Launcher => Engine/Launcher}/Resources/AppIcon/icon.png (100%) rename {Launcher => Engine/Launcher}/Resources/AppIcon/icon.svg (100%) rename {Launcher => Engine/Launcher}/Resources/Fonts/OpenSans-Regular.ttf (100%) rename {Launcher => Engine/Launcher}/Resources/Images/dotnet_bot.svg (100%) rename {Launcher => Engine/Launcher}/Resources/Raw/AboutAssets.txt (100%) rename {Launcher => Engine/Launcher}/Resources/Splash/splash.svg (100%) rename {Launcher => Engine/Launcher}/Services/EditorService.cs (100%) rename {Launcher => Engine/Launcher}/Services/NotificationService.cs (100%) rename {Launcher => Engine/Launcher}/TestData/TestData.cs (100%) rename {Launcher => Engine/Launcher}/UI/Components/ContextMenu.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/ContextMenu.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/ContextMenu.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/ContextMenu.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/ConfirmDeleteDialog.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/ConfirmDeleteDialog.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/ConfirmDeleteDialog.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/ConfirmDeleteDialog.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/CreateProjectDialog.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/CreateProjectDialog.razor.cs (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/CreateProjectDialog.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/CreateProjectDialog.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/CreateProjectDialog.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Dialogs/DialogBase.cs (100%) rename {Launcher => Engine/Launcher}/UI/Components/Flyouts/Flyout.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Flyouts/Flyout.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Flyouts/Flyout.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Flyouts/Flyout.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Flyouts/FlyoutBase.cs (100%) rename {Launcher => Engine/Launcher}/UI/Components/Flyouts/SettingsFlyout.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/Grid.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/Grid.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/Grid.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/Grid.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/GridHeader.cs (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/GridHeader.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/GridHeader.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/GridHeader.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/GridHeader.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Grid/GridRow.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Icons/DiscardIcon.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Icons/Icon.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Layout.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Layout.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Layout.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Layout.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/SideBarItem.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/SideBarItem.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/SideBarItem.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/SideBarItem.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/Sidebar.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/Sidebar.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/Sidebar.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Navigation/Sidebar.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Notification/Notification.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Notification/Notification.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Notification/Notification.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Notification/Notification.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Components/Notification/NotificationType.cs (100%) rename {Launcher => Engine/Launcher}/UI/Components/Notification/NotificationTypeExtensions.cs (100%) rename {Launcher => Engine/Launcher}/UI/Components/Searchbox.razor (100%) rename {Launcher => Engine/Launcher}/UI/Components/Searchbox.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Searchbox.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Components/Searchbox.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Home.razor (100%) rename {Launcher => Engine/Launcher}/UI/Home.razor.cs (100%) rename {Launcher => Engine/Launcher}/UI/Home.razor.css (100%) rename {Launcher => Engine/Launcher}/UI/Home.razor.min.css (100%) rename {Launcher => Engine/Launcher}/UI/Home.razor.scss (100%) rename {Launcher => Engine/Launcher}/UI/Routes.razor (100%) rename {Launcher => Engine/Launcher}/UI/_Imports.razor (100%) rename {Launcher => Engine/Launcher}/compilerconfig.json (100%) rename {Launcher => Engine/Launcher}/compilerconfig.json.defaults (100%) rename {Launcher => Engine/Launcher}/wwwroot/css/additional.css (100%) rename {Launcher => Engine/Launcher}/wwwroot/css/additional.min.css (100%) rename {Launcher => Engine/Launcher}/wwwroot/css/additional.scss (100%) rename {Launcher => Engine/Launcher}/wwwroot/css/app.css (100%) rename {Launcher => Engine/Launcher}/wwwroot/css/bootstrap/bootstrap.min.css (100%) rename {Launcher => Engine/Launcher}/wwwroot/css/bootstrap/bootstrap.min.css.map (100%) rename {Launcher => Engine/Launcher}/wwwroot/favicon.png (100%) rename {Launcher => Engine/Launcher}/wwwroot/index.html (100%) rename {ObjLoader => Engine/ObjLoader}/DataStore.cs (100%) rename {ObjLoader => Engine/ObjLoader}/Loaders/LoaderBase.cs (100%) rename {ObjLoader => Engine/ObjLoader}/Loaders/MaterialLoader/IMaterialLibraryLoaderFacade.cs (100%) rename {ObjLoader => Engine/ObjLoader}/Loaders/MaterialLoader/MaterialLibraryLoader.cs (100%) rename {ObjLoader => Engine/ObjLoader}/Loaders/MaterialLoader/MaterialLibraryLoaderFacade.cs (100%) rename {ObjLoader => Engine/ObjLoader}/Loaders/ObjLoader/ObjLoader.cs (100%) rename {ObjLoader => Engine/ObjLoader}/Loaders/ObjLoader/ObjLoaderFactory.cs (100%) rename {ObjLoader => Engine/ObjLoader}/SharpEngine.Core.ObjLoader.csproj (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/FaceParser.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/GroupParser.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/ITypeParser.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/MaterialLibraryParser.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/NormalParser.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/TextureParser.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/TypeParserBase.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/UseMaterialParser.cs (100%) rename {ObjLoader => Engine/ObjLoader}/TypeParsers/VertexParser.cs (100%) rename {Resources => Engine/Resources}/Screenshots/editor.png (100%) rename {Resources => Engine/Resources}/Screenshots/launcher.png (100%) rename {Resources => Engine/Resources}/icon.ico (100%) rename {Resources => Engine/Resources}/icon.png (100%) rename {Resources => Engine/Resources}/icon.svg (100%) rename {Resources => Engine/Resources}/icon.xcf (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/IComponent.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Obsolete/ObjLoader/DataStore/IFaceGroup.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Obsolete/ObjLoader/DataStore/IGroupDataStore.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Obsolete/ObjLoader/DataStore/IMaterialLibrary.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Obsolete/ObjLoader/DataStore/INormalDataStore.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Obsolete/ObjLoader/DataStore/ITextureDataStore.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Obsolete/ObjLoader/DataStore/IVertexDataStore.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/BoundingBox.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/ITransform.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Material.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/BufferObject.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/Mesh.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/MeshData/Face.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/MeshData/Group.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/MeshData/Normal.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/MeshData/TextureCoordinate.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/MeshData/Vertex.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/MeshExtensions.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/Model.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/Model_Old.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/ObjMeshData.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/VertexArrayObject.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Meshes/VertexData.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Quaternion.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Shaders/Shader.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Shaders/ShaderAttributes.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Shaders/ShaderExtensions.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Textures/Texture.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Textures/TextureExtensions.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Transform.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/Properties/Transform2D.cs (100%) rename {SharpEngine.Core.Components => Engine/SharpEngine.Core.Components}/SharpEngine.Core.Components.csproj (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/Float.cs (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/HashCodeHelper.cs (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/IVector.cs (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/JitIntrinsicAttribute.cs (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/SharpEngine.Core.Numerics.csproj (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/Vector2.cs (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/Vector2_Intrinsics.cs (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/Vector3.cs (100%) rename {SharpEngine.Core.Numerics => Engine/SharpEngine.Core.Numerics}/Vector3_Intrinsics.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Abstractions/IGame.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Abstractions/IRenderable.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Abstractions/ISettings.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/Audio.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/AudioBuffer.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/AudioDevice.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/AudioFileExtensions.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/AudioPlayerBase.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/AudioProperties.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/AudioSource.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/WavData.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Audio/WavPlayer.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/BezierCurve.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/GameObject.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Lights/DirectionalLight.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Lights/Light.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Lights/PointLight.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Lights/SpotLight.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/MeshService.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/UI/Layouts/FlexLayout.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/UI/Layouts/GridLayout.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/UI/Layouts/LayoutBase.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/UI/UIElement.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Views/CameraView.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Views/Settings/DefaultViewSettings.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Views/Settings/IViewSettings.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Views/Settings/ViewSettings.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Entities/Views/View.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Enums/MouseWheelScrollDirection.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Extensions/CollectionExtensions.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Extensions/PathExtensions.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Primitives/Cube.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Primitives/Plane.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Primitives/PrimitiveFactory.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Primitives/PrimitiveType.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Ray.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Renderers/RenderFlags.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Renderers/Renderer.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Renderers/RendererBase.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Renderers/TextRenderer.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Renderers/UIRenderer.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Scenes/Scene.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Scenes/SceneNode.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Shaders/LampShader.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Shaders/LightingShader.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Shaders/ShaderBase.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Shaders/ShaderService.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Shaders/UIShader.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/SharpEngine.Core.csproj (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Textures/TextureService.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Windowing/Frame.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Windowing/SilkWindow.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/Windowing/Window.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Default.cs (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/Light/DirectionalLight.glsl (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/Light/PointLight.glsl (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/Light/SpotLight.glsl (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/Material.glsl (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/lighting.frag (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/shader.frag (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/shader.vert (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/shader2.vert (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/uiShader.frag (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Shaders/uiShader.vert (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/Textures/debug.jpg (100%) rename {SharpEngine.Core => Engine/SharpEngine.Core}/_Resources/icon.png (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Attributes/FilterAttribute.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Attributes/InspectorAttribute.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Debug.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Dto/Project.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Dto/UserProfile.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Enums/FilterMode.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/EnvironmentVariables.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Extensions/OrderedEnumerableExtensions.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Extensions/ProcessExtensions.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Extensions/ReflectionExtensions.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Extensions/StringExtensions.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/Math.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/NaturalStringComparer.cs (100%) rename {SharpEngine.Shared => Engine/SharpEngine.Shared}/SharpEngine.Shared.csproj (100%) rename SharpEngine.sln => Engine/SharpEngine.sln (100%) rename SharpEngine.slnx => Engine/SharpEngine.slnx (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/Loaders/MaterialLibraryLoaderTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/Loaders/ObjLoaderTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/ObjLoader.Tests.csproj (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/TypeParsers/FaceParserTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/TypeParsers/GroupParserTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/TypeParsers/MaterialLibraryParserTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/TypeParsers/NormalParserTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/TypeParsers/TextureParserTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/TypeParsers/UseMaterialParserTests.cs (100%) rename {Tests => Engine/Tests}/ObjLoader.Test/TypeParsers/VertexParserTests.cs (100%) rename {Tests => Engine/Tests}/SharpEngine.Core.Tests/Class1.cs (100%) rename {Tests => Engine/Tests}/SharpEngine.Core.Tests/SharpEngine.Core.Tests.csproj (100%) rename {Tests => Engine/Tests}/SharpEngine.Editor.Tests/Class1.cs (100%) rename {Tests => Engine/Tests}/SharpEngine.Editor.Tests/SharpEngine.Editor.Tests.csproj (100%) rename {Tests => Engine/Tests}/SharpEngine.Shared.Net8/Class1.cs (100%) rename {Tests => Engine/Tests}/SharpEngine.Shared.Net8/SharpEngine.Shared.Net8.csproj (100%) rename {Tests => Engine/Tests}/SharpEngine.Shared.Tests/Class1.cs (100%) rename {Tests => Engine/Tests}/SharpEngine.Shared.Tests/SharpEngine.Shared.Tests.csproj (100%) rename {Tests => Engine/Tests}/Test.Directory.Build.props (100%) rename {docs => Engine/docs}/CODE_OF_CONDUCT.md (100%) rename {docs => Engine/docs}/CONTRIBUTING.md (100%) rename {docs => Engine/docs}/SECURITY.md (100%) rename {docs => Engine/docs}/materials_and_inspiration.md (100%) rename {docs => Engine/docs}/pull_request_template.md (100%) diff --git a/.editorconfig b/Engine/.editorconfig similarity index 100% rename from .editorconfig rename to Engine/.editorconfig diff --git a/Directory.Build.props b/Engine/Directory.Build.props similarity index 100% rename from Directory.Build.props rename to Engine/Directory.Build.props diff --git a/Editor/EditorSettings.cs b/Engine/Editor/EditorSettings.cs similarity index 100% rename from Editor/EditorSettings.cs rename to Engine/Editor/EditorSettings.cs diff --git a/Editor/EditorWindow.cs b/Engine/Editor/EditorWindow.cs similarity index 100% rename from Editor/EditorWindow.cs rename to Engine/Editor/EditorWindow.cs diff --git a/Editor/Program.cs b/Engine/Editor/Program.cs similarity index 100% rename from Editor/Program.cs rename to Engine/Editor/Program.cs diff --git a/Editor/SharpEngine.Editor.csproj b/Engine/Editor/SharpEngine.Editor.csproj similarity index 100% rename from Editor/SharpEngine.Editor.csproj rename to Engine/Editor/SharpEngine.Editor.csproj diff --git a/Editor/SharpEngine.Editor.sln b/Engine/Editor/SharpEngine.Editor.sln similarity index 100% rename from Editor/SharpEngine.Editor.sln rename to Engine/Editor/SharpEngine.Editor.sln diff --git a/Editor/Windows/ActionsMenuWindow.cs b/Engine/Editor/Windows/ActionsMenuWindow.cs similarity index 100% rename from Editor/Windows/ActionsMenuWindow.cs rename to Engine/Editor/Windows/ActionsMenuWindow.cs diff --git a/Editor/Windows/AssetsWindow.cs b/Engine/Editor/Windows/AssetsWindow.cs similarity index 100% rename from Editor/Windows/AssetsWindow.cs rename to Engine/Editor/Windows/AssetsWindow.cs diff --git a/Editor/Windows/ContextMenuWindow.cs b/Engine/Editor/Windows/ContextMenuWindow.cs similarity index 100% rename from Editor/Windows/ContextMenuWindow.cs rename to Engine/Editor/Windows/ContextMenuWindow.cs diff --git a/Editor/Windows/ImGuiWindowBase.cs b/Engine/Editor/Windows/ImGuiWindowBase.cs similarity index 100% rename from Editor/Windows/ImGuiWindowBase.cs rename to Engine/Editor/Windows/ImGuiWindowBase.cs diff --git a/Editor/Windows/PropertiesWindow.cs b/Engine/Editor/Windows/PropertiesWindow.cs similarity index 100% rename from Editor/Windows/PropertiesWindow.cs rename to Engine/Editor/Windows/PropertiesWindow.cs diff --git a/Editor/Windows/SceneWindow.cs b/Engine/Editor/Windows/SceneWindow.cs similarity index 100% rename from Editor/Windows/SceneWindow.cs rename to Engine/Editor/Windows/SceneWindow.cs diff --git a/Examples/MinecraftClone/Block/BlockBase.cs b/Engine/Examples/MinecraftClone/Block/BlockBase.cs similarity index 100% rename from Examples/MinecraftClone/Block/BlockBase.cs rename to Engine/Examples/MinecraftClone/Block/BlockBase.cs diff --git a/Examples/MinecraftClone/Block/Dirt.cs b/Engine/Examples/MinecraftClone/Block/Dirt.cs similarity index 100% rename from Examples/MinecraftClone/Block/Dirt.cs rename to Engine/Examples/MinecraftClone/Block/Dirt.cs diff --git a/Examples/MinecraftClone/Block/Stone.cs b/Engine/Examples/MinecraftClone/Block/Stone.cs similarity index 100% rename from Examples/MinecraftClone/Block/Stone.cs rename to Engine/Examples/MinecraftClone/Block/Stone.cs diff --git a/Examples/MinecraftClone/BlockFactory.cs b/Engine/Examples/MinecraftClone/BlockFactory.cs similarity index 100% rename from Examples/MinecraftClone/BlockFactory.cs rename to Engine/Examples/MinecraftClone/BlockFactory.cs diff --git a/Examples/MinecraftClone/Input.cs b/Engine/Examples/MinecraftClone/Input.cs similarity index 100% rename from Examples/MinecraftClone/Input.cs rename to Engine/Examples/MinecraftClone/Input.cs diff --git a/Examples/MinecraftClone/Inventory.cs b/Engine/Examples/MinecraftClone/Inventory.cs similarity index 100% rename from Examples/MinecraftClone/Inventory.cs rename to Engine/Examples/MinecraftClone/Inventory.cs diff --git a/Examples/MinecraftClone/Minecraft.cs b/Engine/Examples/MinecraftClone/Minecraft.cs similarity index 100% rename from Examples/MinecraftClone/Minecraft.cs rename to Engine/Examples/MinecraftClone/Minecraft.cs diff --git a/Examples/MinecraftClone/Minecraft.csproj b/Engine/Examples/MinecraftClone/Minecraft.csproj similarity index 100% rename from Examples/MinecraftClone/Minecraft.csproj rename to Engine/Examples/MinecraftClone/Minecraft.csproj diff --git a/Examples/MinecraftClone/Minecraft.sln b/Engine/Examples/MinecraftClone/Minecraft.sln similarity index 100% rename from Examples/MinecraftClone/Minecraft.sln rename to Engine/Examples/MinecraftClone/Minecraft.sln diff --git a/Examples/MinecraftClone/Program.cs b/Engine/Examples/MinecraftClone/Program.cs similarity index 100% rename from Examples/MinecraftClone/Program.cs rename to Engine/Examples/MinecraftClone/Program.cs diff --git a/Examples/MinecraftClone/Resources/container2.png b/Engine/Examples/MinecraftClone/Resources/container2.png similarity index 100% rename from Examples/MinecraftClone/Resources/container2.png rename to Engine/Examples/MinecraftClone/Resources/container2.png diff --git a/Examples/MinecraftClone/Resources/container2_specular.png b/Engine/Examples/MinecraftClone/Resources/container2_specular.png similarity index 100% rename from Examples/MinecraftClone/Resources/container2_specular.png rename to Engine/Examples/MinecraftClone/Resources/container2_specular.png diff --git a/Examples/MinecraftClone/Resources/grass.jpg b/Engine/Examples/MinecraftClone/Resources/grass.jpg similarity index 100% rename from Examples/MinecraftClone/Resources/grass.jpg rename to Engine/Examples/MinecraftClone/Resources/grass.jpg diff --git a/Examples/Minimal/Minimal.csproj b/Engine/Examples/Minimal/Minimal.csproj similarity index 100% rename from Examples/Minimal/Minimal.csproj rename to Engine/Examples/Minimal/Minimal.csproj diff --git a/Examples/Minimal/Minimal.sln b/Engine/Examples/Minimal/Minimal.sln similarity index 100% rename from Examples/Minimal/Minimal.sln rename to Engine/Examples/Minimal/Minimal.sln diff --git a/Examples/Minimal/Program.cs b/Engine/Examples/Minimal/Program.cs similarity index 100% rename from Examples/Minimal/Program.cs rename to Engine/Examples/Minimal/Program.cs diff --git a/Examples/MultipleWindows/MultipleWindows.csproj b/Engine/Examples/MultipleWindows/MultipleWindows.csproj similarity index 100% rename from Examples/MultipleWindows/MultipleWindows.csproj rename to Engine/Examples/MultipleWindows/MultipleWindows.csproj diff --git a/Examples/MultipleWindows/Program.cs b/Engine/Examples/MultipleWindows/Program.cs similarity index 100% rename from Examples/MultipleWindows/Program.cs rename to Engine/Examples/MultipleWindows/Program.cs diff --git a/Examples/Tutorial 4.1 - Model Loading/Program.cs b/Engine/Examples/Tutorial 4.1 - Model Loading/Program.cs similarity index 100% rename from Examples/Tutorial 4.1 - Model Loading/Program.cs rename to Engine/Examples/Tutorial 4.1 - Model Loading/Program.cs diff --git a/Examples/Tutorial 4.1 - Model Loading/Tutorial 4.1 - Model Loading.csproj b/Engine/Examples/Tutorial 4.1 - Model Loading/Tutorial 4.1 - Model Loading.csproj similarity index 100% rename from Examples/Tutorial 4.1 - Model Loading/Tutorial 4.1 - Model Loading.csproj rename to Engine/Examples/Tutorial 4.1 - Model Loading/Tutorial 4.1 - Model Loading.csproj diff --git a/Examples/Tutorial 4.1 - Model Loading/shader2.vert b/Engine/Examples/Tutorial 4.1 - Model Loading/shader2.vert similarity index 100% rename from Examples/Tutorial 4.1 - Model Loading/shader2.vert rename to Engine/Examples/Tutorial 4.1 - Model Loading/shader2.vert diff --git a/Examples/Tutorial 4.1 - Model Loading/silk.png b/Engine/Examples/Tutorial 4.1 - Model Loading/silk.png similarity index 100% rename from Examples/Tutorial 4.1 - Model Loading/silk.png rename to Engine/Examples/Tutorial 4.1 - Model Loading/silk.png diff --git a/Launcher/App.xaml b/Engine/Launcher/App.xaml similarity index 100% rename from Launcher/App.xaml rename to Engine/Launcher/App.xaml diff --git a/Launcher/App.xaml.cs b/Engine/Launcher/App.xaml.cs similarity index 100% rename from Launcher/App.xaml.cs rename to Engine/Launcher/App.xaml.cs diff --git a/Launcher/Attributes/FileAttribute.cs b/Engine/Launcher/Attributes/FileAttribute.cs similarity index 100% rename from Launcher/Attributes/FileAttribute.cs rename to Engine/Launcher/Attributes/FileAttribute.cs diff --git a/Launcher/Enums/SvgIcon.cs b/Engine/Launcher/Enums/SvgIcon.cs similarity index 100% rename from Launcher/Enums/SvgIcon.cs rename to Engine/Launcher/Enums/SvgIcon.cs diff --git a/Launcher/Launcher.csproj b/Engine/Launcher/Launcher.csproj similarity index 100% rename from Launcher/Launcher.csproj rename to Engine/Launcher/Launcher.csproj diff --git a/Launcher/Launcher.sln b/Engine/Launcher/Launcher.sln similarity index 100% rename from Launcher/Launcher.sln rename to Engine/Launcher/Launcher.sln diff --git a/Launcher/MainPage.xaml b/Engine/Launcher/MainPage.xaml similarity index 100% rename from Launcher/MainPage.xaml rename to Engine/Launcher/MainPage.xaml diff --git a/Launcher/MainPage.xaml.cs b/Engine/Launcher/MainPage.xaml.cs similarity index 100% rename from Launcher/MainPage.xaml.cs rename to Engine/Launcher/MainPage.xaml.cs diff --git a/Launcher/MauiProgram.cs b/Engine/Launcher/MauiProgram.cs similarity index 100% rename from Launcher/MauiProgram.cs rename to Engine/Launcher/MauiProgram.cs diff --git a/Launcher/Platforms/Android/AndroidManifest.xml b/Engine/Launcher/Platforms/Android/AndroidManifest.xml similarity index 100% rename from Launcher/Platforms/Android/AndroidManifest.xml rename to Engine/Launcher/Platforms/Android/AndroidManifest.xml diff --git a/Launcher/Platforms/Android/MainActivity.cs b/Engine/Launcher/Platforms/Android/MainActivity.cs similarity index 100% rename from Launcher/Platforms/Android/MainActivity.cs rename to Engine/Launcher/Platforms/Android/MainActivity.cs diff --git a/Launcher/Platforms/Android/MainApplication.cs b/Engine/Launcher/Platforms/Android/MainApplication.cs similarity index 100% rename from Launcher/Platforms/Android/MainApplication.cs rename to Engine/Launcher/Platforms/Android/MainApplication.cs diff --git a/Launcher/Platforms/Android/Resources/values/colors.xml b/Engine/Launcher/Platforms/Android/Resources/values/colors.xml similarity index 100% rename from Launcher/Platforms/Android/Resources/values/colors.xml rename to Engine/Launcher/Platforms/Android/Resources/values/colors.xml diff --git a/Launcher/Platforms/MacCatalyst/AppDelegate.cs b/Engine/Launcher/Platforms/MacCatalyst/AppDelegate.cs similarity index 100% rename from Launcher/Platforms/MacCatalyst/AppDelegate.cs rename to Engine/Launcher/Platforms/MacCatalyst/AppDelegate.cs diff --git a/Launcher/Platforms/MacCatalyst/Entitlements.plist b/Engine/Launcher/Platforms/MacCatalyst/Entitlements.plist similarity index 100% rename from Launcher/Platforms/MacCatalyst/Entitlements.plist rename to Engine/Launcher/Platforms/MacCatalyst/Entitlements.plist diff --git a/Launcher/Platforms/MacCatalyst/Info.plist b/Engine/Launcher/Platforms/MacCatalyst/Info.plist similarity index 100% rename from Launcher/Platforms/MacCatalyst/Info.plist rename to Engine/Launcher/Platforms/MacCatalyst/Info.plist diff --git a/Launcher/Platforms/MacCatalyst/Program.cs b/Engine/Launcher/Platforms/MacCatalyst/Program.cs similarity index 100% rename from Launcher/Platforms/MacCatalyst/Program.cs rename to Engine/Launcher/Platforms/MacCatalyst/Program.cs diff --git a/Launcher/Platforms/Tizen/Main.cs b/Engine/Launcher/Platforms/Tizen/Main.cs similarity index 100% rename from Launcher/Platforms/Tizen/Main.cs rename to Engine/Launcher/Platforms/Tizen/Main.cs diff --git a/Launcher/Platforms/Tizen/tizen-manifest.xml b/Engine/Launcher/Platforms/Tizen/tizen-manifest.xml similarity index 100% rename from Launcher/Platforms/Tizen/tizen-manifest.xml rename to Engine/Launcher/Platforms/Tizen/tizen-manifest.xml diff --git a/Launcher/Platforms/Windows/App.xaml b/Engine/Launcher/Platforms/Windows/App.xaml similarity index 100% rename from Launcher/Platforms/Windows/App.xaml rename to Engine/Launcher/Platforms/Windows/App.xaml diff --git a/Launcher/Platforms/Windows/App.xaml.cs b/Engine/Launcher/Platforms/Windows/App.xaml.cs similarity index 100% rename from Launcher/Platforms/Windows/App.xaml.cs rename to Engine/Launcher/Platforms/Windows/App.xaml.cs diff --git a/Launcher/Platforms/Windows/Package.appxmanifest b/Engine/Launcher/Platforms/Windows/Package.appxmanifest similarity index 100% rename from Launcher/Platforms/Windows/Package.appxmanifest rename to Engine/Launcher/Platforms/Windows/Package.appxmanifest diff --git a/Launcher/Platforms/Windows/app.manifest b/Engine/Launcher/Platforms/Windows/app.manifest similarity index 100% rename from Launcher/Platforms/Windows/app.manifest rename to Engine/Launcher/Platforms/Windows/app.manifest diff --git a/Launcher/Platforms/iOS/AppDelegate.cs b/Engine/Launcher/Platforms/iOS/AppDelegate.cs similarity index 100% rename from Launcher/Platforms/iOS/AppDelegate.cs rename to Engine/Launcher/Platforms/iOS/AppDelegate.cs diff --git a/Launcher/Platforms/iOS/Info.plist b/Engine/Launcher/Platforms/iOS/Info.plist similarity index 100% rename from Launcher/Platforms/iOS/Info.plist rename to Engine/Launcher/Platforms/iOS/Info.plist diff --git a/Launcher/Platforms/iOS/Program.cs b/Engine/Launcher/Platforms/iOS/Program.cs similarity index 100% rename from Launcher/Platforms/iOS/Program.cs rename to Engine/Launcher/Platforms/iOS/Program.cs diff --git a/Launcher/Platforms/iOS/Resources/PrivacyInfo.xcprivacy b/Engine/Launcher/Platforms/iOS/Resources/PrivacyInfo.xcprivacy similarity index 100% rename from Launcher/Platforms/iOS/Resources/PrivacyInfo.xcprivacy rename to Engine/Launcher/Platforms/iOS/Resources/PrivacyInfo.xcprivacy diff --git a/Launcher/Properties/launchSettings.json b/Engine/Launcher/Properties/launchSettings.json similarity index 100% rename from Launcher/Properties/launchSettings.json rename to Engine/Launcher/Properties/launchSettings.json diff --git a/Launcher/Resources/AppIcon/appicon.svg b/Engine/Launcher/Resources/AppIcon/appicon.svg similarity index 100% rename from Launcher/Resources/AppIcon/appicon.svg rename to Engine/Launcher/Resources/AppIcon/appicon.svg diff --git a/Launcher/Resources/AppIcon/appiconfg.svg b/Engine/Launcher/Resources/AppIcon/appiconfg.svg similarity index 100% rename from Launcher/Resources/AppIcon/appiconfg.svg rename to Engine/Launcher/Resources/AppIcon/appiconfg.svg diff --git a/Launcher/Resources/AppIcon/icon.ico b/Engine/Launcher/Resources/AppIcon/icon.ico similarity index 100% rename from Launcher/Resources/AppIcon/icon.ico rename to Engine/Launcher/Resources/AppIcon/icon.ico diff --git a/Launcher/Resources/AppIcon/icon.png b/Engine/Launcher/Resources/AppIcon/icon.png similarity index 100% rename from Launcher/Resources/AppIcon/icon.png rename to Engine/Launcher/Resources/AppIcon/icon.png diff --git a/Launcher/Resources/AppIcon/icon.svg b/Engine/Launcher/Resources/AppIcon/icon.svg similarity index 100% rename from Launcher/Resources/AppIcon/icon.svg rename to Engine/Launcher/Resources/AppIcon/icon.svg diff --git a/Launcher/Resources/Fonts/OpenSans-Regular.ttf b/Engine/Launcher/Resources/Fonts/OpenSans-Regular.ttf similarity index 100% rename from Launcher/Resources/Fonts/OpenSans-Regular.ttf rename to Engine/Launcher/Resources/Fonts/OpenSans-Regular.ttf diff --git a/Launcher/Resources/Images/dotnet_bot.svg b/Engine/Launcher/Resources/Images/dotnet_bot.svg similarity index 100% rename from Launcher/Resources/Images/dotnet_bot.svg rename to Engine/Launcher/Resources/Images/dotnet_bot.svg diff --git a/Launcher/Resources/Raw/AboutAssets.txt b/Engine/Launcher/Resources/Raw/AboutAssets.txt similarity index 100% rename from Launcher/Resources/Raw/AboutAssets.txt rename to Engine/Launcher/Resources/Raw/AboutAssets.txt diff --git a/Launcher/Resources/Splash/splash.svg b/Engine/Launcher/Resources/Splash/splash.svg similarity index 100% rename from Launcher/Resources/Splash/splash.svg rename to Engine/Launcher/Resources/Splash/splash.svg diff --git a/Launcher/Services/EditorService.cs b/Engine/Launcher/Services/EditorService.cs similarity index 100% rename from Launcher/Services/EditorService.cs rename to Engine/Launcher/Services/EditorService.cs diff --git a/Launcher/Services/NotificationService.cs b/Engine/Launcher/Services/NotificationService.cs similarity index 100% rename from Launcher/Services/NotificationService.cs rename to Engine/Launcher/Services/NotificationService.cs diff --git a/Launcher/TestData/TestData.cs b/Engine/Launcher/TestData/TestData.cs similarity index 100% rename from Launcher/TestData/TestData.cs rename to Engine/Launcher/TestData/TestData.cs diff --git a/Launcher/UI/Components/ContextMenu.razor b/Engine/Launcher/UI/Components/ContextMenu.razor similarity index 100% rename from Launcher/UI/Components/ContextMenu.razor rename to Engine/Launcher/UI/Components/ContextMenu.razor diff --git a/Launcher/UI/Components/ContextMenu.razor.css b/Engine/Launcher/UI/Components/ContextMenu.razor.css similarity index 100% rename from Launcher/UI/Components/ContextMenu.razor.css rename to Engine/Launcher/UI/Components/ContextMenu.razor.css diff --git a/Launcher/UI/Components/ContextMenu.razor.min.css b/Engine/Launcher/UI/Components/ContextMenu.razor.min.css similarity index 100% rename from Launcher/UI/Components/ContextMenu.razor.min.css rename to Engine/Launcher/UI/Components/ContextMenu.razor.min.css diff --git a/Launcher/UI/Components/ContextMenu.razor.scss b/Engine/Launcher/UI/Components/ContextMenu.razor.scss similarity index 100% rename from Launcher/UI/Components/ContextMenu.razor.scss rename to Engine/Launcher/UI/Components/ContextMenu.razor.scss diff --git a/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor b/Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor similarity index 100% rename from Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor rename to Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor diff --git a/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.css b/Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.css similarity index 100% rename from Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.css rename to Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.css diff --git a/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.min.css b/Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.min.css similarity index 100% rename from Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.min.css rename to Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.min.css diff --git a/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.scss b/Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.scss similarity index 100% rename from Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.scss rename to Engine/Launcher/UI/Components/Dialogs/ConfirmDeleteDialog.razor.scss diff --git a/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor b/Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor similarity index 100% rename from Launcher/UI/Components/Dialogs/CreateProjectDialog.razor rename to Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor diff --git a/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.cs b/Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.cs similarity index 100% rename from Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.cs rename to Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.cs diff --git a/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.css b/Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.css similarity index 100% rename from Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.css rename to Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.css diff --git a/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.min.css b/Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.min.css similarity index 100% rename from Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.min.css rename to Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.min.css diff --git a/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.scss b/Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.scss similarity index 100% rename from Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.scss rename to Engine/Launcher/UI/Components/Dialogs/CreateProjectDialog.razor.scss diff --git a/Launcher/UI/Components/Dialogs/DialogBase.cs b/Engine/Launcher/UI/Components/Dialogs/DialogBase.cs similarity index 100% rename from Launcher/UI/Components/Dialogs/DialogBase.cs rename to Engine/Launcher/UI/Components/Dialogs/DialogBase.cs diff --git a/Launcher/UI/Components/Flyouts/Flyout.razor b/Engine/Launcher/UI/Components/Flyouts/Flyout.razor similarity index 100% rename from Launcher/UI/Components/Flyouts/Flyout.razor rename to Engine/Launcher/UI/Components/Flyouts/Flyout.razor diff --git a/Launcher/UI/Components/Flyouts/Flyout.razor.css b/Engine/Launcher/UI/Components/Flyouts/Flyout.razor.css similarity index 100% rename from Launcher/UI/Components/Flyouts/Flyout.razor.css rename to Engine/Launcher/UI/Components/Flyouts/Flyout.razor.css diff --git a/Launcher/UI/Components/Flyouts/Flyout.razor.min.css b/Engine/Launcher/UI/Components/Flyouts/Flyout.razor.min.css similarity index 100% rename from Launcher/UI/Components/Flyouts/Flyout.razor.min.css rename to Engine/Launcher/UI/Components/Flyouts/Flyout.razor.min.css diff --git a/Launcher/UI/Components/Flyouts/Flyout.razor.scss b/Engine/Launcher/UI/Components/Flyouts/Flyout.razor.scss similarity index 100% rename from Launcher/UI/Components/Flyouts/Flyout.razor.scss rename to Engine/Launcher/UI/Components/Flyouts/Flyout.razor.scss diff --git a/Launcher/UI/Components/Flyouts/FlyoutBase.cs b/Engine/Launcher/UI/Components/Flyouts/FlyoutBase.cs similarity index 100% rename from Launcher/UI/Components/Flyouts/FlyoutBase.cs rename to Engine/Launcher/UI/Components/Flyouts/FlyoutBase.cs diff --git a/Launcher/UI/Components/Flyouts/SettingsFlyout.razor b/Engine/Launcher/UI/Components/Flyouts/SettingsFlyout.razor similarity index 100% rename from Launcher/UI/Components/Flyouts/SettingsFlyout.razor rename to Engine/Launcher/UI/Components/Flyouts/SettingsFlyout.razor diff --git a/Launcher/UI/Components/Grid/Grid.razor b/Engine/Launcher/UI/Components/Grid/Grid.razor similarity index 100% rename from Launcher/UI/Components/Grid/Grid.razor rename to Engine/Launcher/UI/Components/Grid/Grid.razor diff --git a/Launcher/UI/Components/Grid/Grid.razor.css b/Engine/Launcher/UI/Components/Grid/Grid.razor.css similarity index 100% rename from Launcher/UI/Components/Grid/Grid.razor.css rename to Engine/Launcher/UI/Components/Grid/Grid.razor.css diff --git a/Launcher/UI/Components/Grid/Grid.razor.min.css b/Engine/Launcher/UI/Components/Grid/Grid.razor.min.css similarity index 100% rename from Launcher/UI/Components/Grid/Grid.razor.min.css rename to Engine/Launcher/UI/Components/Grid/Grid.razor.min.css diff --git a/Launcher/UI/Components/Grid/Grid.razor.scss b/Engine/Launcher/UI/Components/Grid/Grid.razor.scss similarity index 100% rename from Launcher/UI/Components/Grid/Grid.razor.scss rename to Engine/Launcher/UI/Components/Grid/Grid.razor.scss diff --git a/Launcher/UI/Components/Grid/GridHeader.cs b/Engine/Launcher/UI/Components/Grid/GridHeader.cs similarity index 100% rename from Launcher/UI/Components/Grid/GridHeader.cs rename to Engine/Launcher/UI/Components/Grid/GridHeader.cs diff --git a/Launcher/UI/Components/Grid/GridHeader.razor b/Engine/Launcher/UI/Components/Grid/GridHeader.razor similarity index 100% rename from Launcher/UI/Components/Grid/GridHeader.razor rename to Engine/Launcher/UI/Components/Grid/GridHeader.razor diff --git a/Launcher/UI/Components/Grid/GridHeader.razor.css b/Engine/Launcher/UI/Components/Grid/GridHeader.razor.css similarity index 100% rename from Launcher/UI/Components/Grid/GridHeader.razor.css rename to Engine/Launcher/UI/Components/Grid/GridHeader.razor.css diff --git a/Launcher/UI/Components/Grid/GridHeader.razor.min.css b/Engine/Launcher/UI/Components/Grid/GridHeader.razor.min.css similarity index 100% rename from Launcher/UI/Components/Grid/GridHeader.razor.min.css rename to Engine/Launcher/UI/Components/Grid/GridHeader.razor.min.css diff --git a/Launcher/UI/Components/Grid/GridHeader.razor.scss b/Engine/Launcher/UI/Components/Grid/GridHeader.razor.scss similarity index 100% rename from Launcher/UI/Components/Grid/GridHeader.razor.scss rename to Engine/Launcher/UI/Components/Grid/GridHeader.razor.scss diff --git a/Launcher/UI/Components/Grid/GridRow.razor b/Engine/Launcher/UI/Components/Grid/GridRow.razor similarity index 100% rename from Launcher/UI/Components/Grid/GridRow.razor rename to Engine/Launcher/UI/Components/Grid/GridRow.razor diff --git a/Launcher/UI/Components/Icons/DiscardIcon.razor b/Engine/Launcher/UI/Components/Icons/DiscardIcon.razor similarity index 100% rename from Launcher/UI/Components/Icons/DiscardIcon.razor rename to Engine/Launcher/UI/Components/Icons/DiscardIcon.razor diff --git a/Launcher/UI/Components/Icons/Icon.razor b/Engine/Launcher/UI/Components/Icons/Icon.razor similarity index 100% rename from Launcher/UI/Components/Icons/Icon.razor rename to Engine/Launcher/UI/Components/Icons/Icon.razor diff --git a/Launcher/UI/Components/Layout.razor b/Engine/Launcher/UI/Components/Layout.razor similarity index 100% rename from Launcher/UI/Components/Layout.razor rename to Engine/Launcher/UI/Components/Layout.razor diff --git a/Launcher/UI/Components/Layout.razor.css b/Engine/Launcher/UI/Components/Layout.razor.css similarity index 100% rename from Launcher/UI/Components/Layout.razor.css rename to Engine/Launcher/UI/Components/Layout.razor.css diff --git a/Launcher/UI/Components/Layout.razor.min.css b/Engine/Launcher/UI/Components/Layout.razor.min.css similarity index 100% rename from Launcher/UI/Components/Layout.razor.min.css rename to Engine/Launcher/UI/Components/Layout.razor.min.css diff --git a/Launcher/UI/Components/Layout.razor.scss b/Engine/Launcher/UI/Components/Layout.razor.scss similarity index 100% rename from Launcher/UI/Components/Layout.razor.scss rename to Engine/Launcher/UI/Components/Layout.razor.scss diff --git a/Launcher/UI/Components/Navigation/SideBarItem.razor b/Engine/Launcher/UI/Components/Navigation/SideBarItem.razor similarity index 100% rename from Launcher/UI/Components/Navigation/SideBarItem.razor rename to Engine/Launcher/UI/Components/Navigation/SideBarItem.razor diff --git a/Launcher/UI/Components/Navigation/SideBarItem.razor.css b/Engine/Launcher/UI/Components/Navigation/SideBarItem.razor.css similarity index 100% rename from Launcher/UI/Components/Navigation/SideBarItem.razor.css rename to Engine/Launcher/UI/Components/Navigation/SideBarItem.razor.css diff --git a/Launcher/UI/Components/Navigation/SideBarItem.razor.min.css b/Engine/Launcher/UI/Components/Navigation/SideBarItem.razor.min.css similarity index 100% rename from Launcher/UI/Components/Navigation/SideBarItem.razor.min.css rename to Engine/Launcher/UI/Components/Navigation/SideBarItem.razor.min.css diff --git a/Launcher/UI/Components/Navigation/SideBarItem.razor.scss b/Engine/Launcher/UI/Components/Navigation/SideBarItem.razor.scss similarity index 100% rename from Launcher/UI/Components/Navigation/SideBarItem.razor.scss rename to Engine/Launcher/UI/Components/Navigation/SideBarItem.razor.scss diff --git a/Launcher/UI/Components/Navigation/Sidebar.razor b/Engine/Launcher/UI/Components/Navigation/Sidebar.razor similarity index 100% rename from Launcher/UI/Components/Navigation/Sidebar.razor rename to Engine/Launcher/UI/Components/Navigation/Sidebar.razor diff --git a/Launcher/UI/Components/Navigation/Sidebar.razor.css b/Engine/Launcher/UI/Components/Navigation/Sidebar.razor.css similarity index 100% rename from Launcher/UI/Components/Navigation/Sidebar.razor.css rename to Engine/Launcher/UI/Components/Navigation/Sidebar.razor.css diff --git a/Launcher/UI/Components/Navigation/Sidebar.razor.min.css b/Engine/Launcher/UI/Components/Navigation/Sidebar.razor.min.css similarity index 100% rename from Launcher/UI/Components/Navigation/Sidebar.razor.min.css rename to Engine/Launcher/UI/Components/Navigation/Sidebar.razor.min.css diff --git a/Launcher/UI/Components/Navigation/Sidebar.razor.scss b/Engine/Launcher/UI/Components/Navigation/Sidebar.razor.scss similarity index 100% rename from Launcher/UI/Components/Navigation/Sidebar.razor.scss rename to Engine/Launcher/UI/Components/Navigation/Sidebar.razor.scss diff --git a/Launcher/UI/Components/Notification/Notification.razor b/Engine/Launcher/UI/Components/Notification/Notification.razor similarity index 100% rename from Launcher/UI/Components/Notification/Notification.razor rename to Engine/Launcher/UI/Components/Notification/Notification.razor diff --git a/Launcher/UI/Components/Notification/Notification.razor.css b/Engine/Launcher/UI/Components/Notification/Notification.razor.css similarity index 100% rename from Launcher/UI/Components/Notification/Notification.razor.css rename to Engine/Launcher/UI/Components/Notification/Notification.razor.css diff --git a/Launcher/UI/Components/Notification/Notification.razor.min.css b/Engine/Launcher/UI/Components/Notification/Notification.razor.min.css similarity index 100% rename from Launcher/UI/Components/Notification/Notification.razor.min.css rename to Engine/Launcher/UI/Components/Notification/Notification.razor.min.css diff --git a/Launcher/UI/Components/Notification/Notification.razor.scss b/Engine/Launcher/UI/Components/Notification/Notification.razor.scss similarity index 100% rename from Launcher/UI/Components/Notification/Notification.razor.scss rename to Engine/Launcher/UI/Components/Notification/Notification.razor.scss diff --git a/Launcher/UI/Components/Notification/NotificationType.cs b/Engine/Launcher/UI/Components/Notification/NotificationType.cs similarity index 100% rename from Launcher/UI/Components/Notification/NotificationType.cs rename to Engine/Launcher/UI/Components/Notification/NotificationType.cs diff --git a/Launcher/UI/Components/Notification/NotificationTypeExtensions.cs b/Engine/Launcher/UI/Components/Notification/NotificationTypeExtensions.cs similarity index 100% rename from Launcher/UI/Components/Notification/NotificationTypeExtensions.cs rename to Engine/Launcher/UI/Components/Notification/NotificationTypeExtensions.cs diff --git a/Launcher/UI/Components/Searchbox.razor b/Engine/Launcher/UI/Components/Searchbox.razor similarity index 100% rename from Launcher/UI/Components/Searchbox.razor rename to Engine/Launcher/UI/Components/Searchbox.razor diff --git a/Launcher/UI/Components/Searchbox.razor.css b/Engine/Launcher/UI/Components/Searchbox.razor.css similarity index 100% rename from Launcher/UI/Components/Searchbox.razor.css rename to Engine/Launcher/UI/Components/Searchbox.razor.css diff --git a/Launcher/UI/Components/Searchbox.razor.min.css b/Engine/Launcher/UI/Components/Searchbox.razor.min.css similarity index 100% rename from Launcher/UI/Components/Searchbox.razor.min.css rename to Engine/Launcher/UI/Components/Searchbox.razor.min.css diff --git a/Launcher/UI/Components/Searchbox.razor.scss b/Engine/Launcher/UI/Components/Searchbox.razor.scss similarity index 100% rename from Launcher/UI/Components/Searchbox.razor.scss rename to Engine/Launcher/UI/Components/Searchbox.razor.scss diff --git a/Launcher/UI/Home.razor b/Engine/Launcher/UI/Home.razor similarity index 100% rename from Launcher/UI/Home.razor rename to Engine/Launcher/UI/Home.razor diff --git a/Launcher/UI/Home.razor.cs b/Engine/Launcher/UI/Home.razor.cs similarity index 100% rename from Launcher/UI/Home.razor.cs rename to Engine/Launcher/UI/Home.razor.cs diff --git a/Launcher/UI/Home.razor.css b/Engine/Launcher/UI/Home.razor.css similarity index 100% rename from Launcher/UI/Home.razor.css rename to Engine/Launcher/UI/Home.razor.css diff --git a/Launcher/UI/Home.razor.min.css b/Engine/Launcher/UI/Home.razor.min.css similarity index 100% rename from Launcher/UI/Home.razor.min.css rename to Engine/Launcher/UI/Home.razor.min.css diff --git a/Launcher/UI/Home.razor.scss b/Engine/Launcher/UI/Home.razor.scss similarity index 100% rename from Launcher/UI/Home.razor.scss rename to Engine/Launcher/UI/Home.razor.scss diff --git a/Launcher/UI/Routes.razor b/Engine/Launcher/UI/Routes.razor similarity index 100% rename from Launcher/UI/Routes.razor rename to Engine/Launcher/UI/Routes.razor diff --git a/Launcher/UI/_Imports.razor b/Engine/Launcher/UI/_Imports.razor similarity index 100% rename from Launcher/UI/_Imports.razor rename to Engine/Launcher/UI/_Imports.razor diff --git a/Launcher/compilerconfig.json b/Engine/Launcher/compilerconfig.json similarity index 100% rename from Launcher/compilerconfig.json rename to Engine/Launcher/compilerconfig.json diff --git a/Launcher/compilerconfig.json.defaults b/Engine/Launcher/compilerconfig.json.defaults similarity index 100% rename from Launcher/compilerconfig.json.defaults rename to Engine/Launcher/compilerconfig.json.defaults diff --git a/Launcher/wwwroot/css/additional.css b/Engine/Launcher/wwwroot/css/additional.css similarity index 100% rename from Launcher/wwwroot/css/additional.css rename to Engine/Launcher/wwwroot/css/additional.css diff --git a/Launcher/wwwroot/css/additional.min.css b/Engine/Launcher/wwwroot/css/additional.min.css similarity index 100% rename from Launcher/wwwroot/css/additional.min.css rename to Engine/Launcher/wwwroot/css/additional.min.css diff --git a/Launcher/wwwroot/css/additional.scss b/Engine/Launcher/wwwroot/css/additional.scss similarity index 100% rename from Launcher/wwwroot/css/additional.scss rename to Engine/Launcher/wwwroot/css/additional.scss diff --git a/Launcher/wwwroot/css/app.css b/Engine/Launcher/wwwroot/css/app.css similarity index 100% rename from Launcher/wwwroot/css/app.css rename to Engine/Launcher/wwwroot/css/app.css diff --git a/Launcher/wwwroot/css/bootstrap/bootstrap.min.css b/Engine/Launcher/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from Launcher/wwwroot/css/bootstrap/bootstrap.min.css rename to Engine/Launcher/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/Launcher/wwwroot/css/bootstrap/bootstrap.min.css.map b/Engine/Launcher/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from Launcher/wwwroot/css/bootstrap/bootstrap.min.css.map rename to Engine/Launcher/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/Launcher/wwwroot/favicon.png b/Engine/Launcher/wwwroot/favicon.png similarity index 100% rename from Launcher/wwwroot/favicon.png rename to Engine/Launcher/wwwroot/favicon.png diff --git a/Launcher/wwwroot/index.html b/Engine/Launcher/wwwroot/index.html similarity index 100% rename from Launcher/wwwroot/index.html rename to Engine/Launcher/wwwroot/index.html diff --git a/ObjLoader/DataStore.cs b/Engine/ObjLoader/DataStore.cs similarity index 100% rename from ObjLoader/DataStore.cs rename to Engine/ObjLoader/DataStore.cs diff --git a/ObjLoader/Loaders/LoaderBase.cs b/Engine/ObjLoader/Loaders/LoaderBase.cs similarity index 100% rename from ObjLoader/Loaders/LoaderBase.cs rename to Engine/ObjLoader/Loaders/LoaderBase.cs diff --git a/ObjLoader/Loaders/MaterialLoader/IMaterialLibraryLoaderFacade.cs b/Engine/ObjLoader/Loaders/MaterialLoader/IMaterialLibraryLoaderFacade.cs similarity index 100% rename from ObjLoader/Loaders/MaterialLoader/IMaterialLibraryLoaderFacade.cs rename to Engine/ObjLoader/Loaders/MaterialLoader/IMaterialLibraryLoaderFacade.cs diff --git a/ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoader.cs b/Engine/ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoader.cs similarity index 100% rename from ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoader.cs rename to Engine/ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoader.cs diff --git a/ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoaderFacade.cs b/Engine/ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoaderFacade.cs similarity index 100% rename from ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoaderFacade.cs rename to Engine/ObjLoader/Loaders/MaterialLoader/MaterialLibraryLoaderFacade.cs diff --git a/ObjLoader/Loaders/ObjLoader/ObjLoader.cs b/Engine/ObjLoader/Loaders/ObjLoader/ObjLoader.cs similarity index 100% rename from ObjLoader/Loaders/ObjLoader/ObjLoader.cs rename to Engine/ObjLoader/Loaders/ObjLoader/ObjLoader.cs diff --git a/ObjLoader/Loaders/ObjLoader/ObjLoaderFactory.cs b/Engine/ObjLoader/Loaders/ObjLoader/ObjLoaderFactory.cs similarity index 100% rename from ObjLoader/Loaders/ObjLoader/ObjLoaderFactory.cs rename to Engine/ObjLoader/Loaders/ObjLoader/ObjLoaderFactory.cs diff --git a/ObjLoader/SharpEngine.Core.ObjLoader.csproj b/Engine/ObjLoader/SharpEngine.Core.ObjLoader.csproj similarity index 100% rename from ObjLoader/SharpEngine.Core.ObjLoader.csproj rename to Engine/ObjLoader/SharpEngine.Core.ObjLoader.csproj diff --git a/ObjLoader/TypeParsers/FaceParser.cs b/Engine/ObjLoader/TypeParsers/FaceParser.cs similarity index 100% rename from ObjLoader/TypeParsers/FaceParser.cs rename to Engine/ObjLoader/TypeParsers/FaceParser.cs diff --git a/ObjLoader/TypeParsers/GroupParser.cs b/Engine/ObjLoader/TypeParsers/GroupParser.cs similarity index 100% rename from ObjLoader/TypeParsers/GroupParser.cs rename to Engine/ObjLoader/TypeParsers/GroupParser.cs diff --git a/ObjLoader/TypeParsers/ITypeParser.cs b/Engine/ObjLoader/TypeParsers/ITypeParser.cs similarity index 100% rename from ObjLoader/TypeParsers/ITypeParser.cs rename to Engine/ObjLoader/TypeParsers/ITypeParser.cs diff --git a/ObjLoader/TypeParsers/MaterialLibraryParser.cs b/Engine/ObjLoader/TypeParsers/MaterialLibraryParser.cs similarity index 100% rename from ObjLoader/TypeParsers/MaterialLibraryParser.cs rename to Engine/ObjLoader/TypeParsers/MaterialLibraryParser.cs diff --git a/ObjLoader/TypeParsers/NormalParser.cs b/Engine/ObjLoader/TypeParsers/NormalParser.cs similarity index 100% rename from ObjLoader/TypeParsers/NormalParser.cs rename to Engine/ObjLoader/TypeParsers/NormalParser.cs diff --git a/ObjLoader/TypeParsers/TextureParser.cs b/Engine/ObjLoader/TypeParsers/TextureParser.cs similarity index 100% rename from ObjLoader/TypeParsers/TextureParser.cs rename to Engine/ObjLoader/TypeParsers/TextureParser.cs diff --git a/ObjLoader/TypeParsers/TypeParserBase.cs b/Engine/ObjLoader/TypeParsers/TypeParserBase.cs similarity index 100% rename from ObjLoader/TypeParsers/TypeParserBase.cs rename to Engine/ObjLoader/TypeParsers/TypeParserBase.cs diff --git a/ObjLoader/TypeParsers/UseMaterialParser.cs b/Engine/ObjLoader/TypeParsers/UseMaterialParser.cs similarity index 100% rename from ObjLoader/TypeParsers/UseMaterialParser.cs rename to Engine/ObjLoader/TypeParsers/UseMaterialParser.cs diff --git a/ObjLoader/TypeParsers/VertexParser.cs b/Engine/ObjLoader/TypeParsers/VertexParser.cs similarity index 100% rename from ObjLoader/TypeParsers/VertexParser.cs rename to Engine/ObjLoader/TypeParsers/VertexParser.cs diff --git a/Resources/Screenshots/editor.png b/Engine/Resources/Screenshots/editor.png similarity index 100% rename from Resources/Screenshots/editor.png rename to Engine/Resources/Screenshots/editor.png diff --git a/Resources/Screenshots/launcher.png b/Engine/Resources/Screenshots/launcher.png similarity index 100% rename from Resources/Screenshots/launcher.png rename to Engine/Resources/Screenshots/launcher.png diff --git a/Resources/icon.ico b/Engine/Resources/icon.ico similarity index 100% rename from Resources/icon.ico rename to Engine/Resources/icon.ico diff --git a/Resources/icon.png b/Engine/Resources/icon.png similarity index 100% rename from Resources/icon.png rename to Engine/Resources/icon.png diff --git a/Resources/icon.svg b/Engine/Resources/icon.svg similarity index 100% rename from Resources/icon.svg rename to Engine/Resources/icon.svg diff --git a/Resources/icon.xcf b/Engine/Resources/icon.xcf similarity index 100% rename from Resources/icon.xcf rename to Engine/Resources/icon.xcf diff --git a/SharpEngine.Core.Components/IComponent.cs b/Engine/SharpEngine.Core.Components/IComponent.cs similarity index 100% rename from SharpEngine.Core.Components/IComponent.cs rename to Engine/SharpEngine.Core.Components/IComponent.cs diff --git a/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IFaceGroup.cs b/Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IFaceGroup.cs similarity index 100% rename from SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IFaceGroup.cs rename to Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IFaceGroup.cs diff --git a/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IGroupDataStore.cs b/Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IGroupDataStore.cs similarity index 100% rename from SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IGroupDataStore.cs rename to Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IGroupDataStore.cs diff --git a/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IMaterialLibrary.cs b/Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IMaterialLibrary.cs similarity index 100% rename from SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IMaterialLibrary.cs rename to Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IMaterialLibrary.cs diff --git a/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/INormalDataStore.cs b/Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/INormalDataStore.cs similarity index 100% rename from SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/INormalDataStore.cs rename to Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/INormalDataStore.cs diff --git a/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/ITextureDataStore.cs b/Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/ITextureDataStore.cs similarity index 100% rename from SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/ITextureDataStore.cs rename to Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/ITextureDataStore.cs diff --git a/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IVertexDataStore.cs b/Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IVertexDataStore.cs similarity index 100% rename from SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IVertexDataStore.cs rename to Engine/SharpEngine.Core.Components/Obsolete/ObjLoader/DataStore/IVertexDataStore.cs diff --git a/SharpEngine.Core.Components/Properties/BoundingBox.cs b/Engine/SharpEngine.Core.Components/Properties/BoundingBox.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/BoundingBox.cs rename to Engine/SharpEngine.Core.Components/Properties/BoundingBox.cs diff --git a/SharpEngine.Core.Components/Properties/ITransform.cs b/Engine/SharpEngine.Core.Components/Properties/ITransform.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/ITransform.cs rename to Engine/SharpEngine.Core.Components/Properties/ITransform.cs diff --git a/SharpEngine.Core.Components/Properties/Material.cs b/Engine/SharpEngine.Core.Components/Properties/Material.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Material.cs rename to Engine/SharpEngine.Core.Components/Properties/Material.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/BufferObject.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/BufferObject.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/BufferObject.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/BufferObject.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/Mesh.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/Mesh.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/Mesh.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/Mesh.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/MeshData/Face.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Face.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/MeshData/Face.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Face.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/MeshData/Group.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Group.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/MeshData/Group.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Group.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/MeshData/Normal.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Normal.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/MeshData/Normal.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Normal.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/MeshData/TextureCoordinate.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/TextureCoordinate.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/MeshData/TextureCoordinate.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/TextureCoordinate.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/MeshData/Vertex.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Vertex.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/MeshData/Vertex.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/MeshData/Vertex.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/MeshExtensions.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/MeshExtensions.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/MeshExtensions.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/MeshExtensions.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/Model.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/Model.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/Model.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/Model.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/Model_Old.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/Model_Old.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/Model_Old.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/Model_Old.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/ObjMeshData.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/ObjMeshData.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/ObjMeshData.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/ObjMeshData.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/VertexArrayObject.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/VertexArrayObject.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/VertexArrayObject.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/VertexArrayObject.cs diff --git a/SharpEngine.Core.Components/Properties/Meshes/VertexData.cs b/Engine/SharpEngine.Core.Components/Properties/Meshes/VertexData.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Meshes/VertexData.cs rename to Engine/SharpEngine.Core.Components/Properties/Meshes/VertexData.cs diff --git a/SharpEngine.Core.Components/Properties/Quaternion.cs b/Engine/SharpEngine.Core.Components/Properties/Quaternion.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Quaternion.cs rename to Engine/SharpEngine.Core.Components/Properties/Quaternion.cs diff --git a/SharpEngine.Core.Components/Properties/Shaders/Shader.cs b/Engine/SharpEngine.Core.Components/Properties/Shaders/Shader.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Shaders/Shader.cs rename to Engine/SharpEngine.Core.Components/Properties/Shaders/Shader.cs diff --git a/SharpEngine.Core.Components/Properties/Shaders/ShaderAttributes.cs b/Engine/SharpEngine.Core.Components/Properties/Shaders/ShaderAttributes.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Shaders/ShaderAttributes.cs rename to Engine/SharpEngine.Core.Components/Properties/Shaders/ShaderAttributes.cs diff --git a/SharpEngine.Core.Components/Properties/Shaders/ShaderExtensions.cs b/Engine/SharpEngine.Core.Components/Properties/Shaders/ShaderExtensions.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Shaders/ShaderExtensions.cs rename to Engine/SharpEngine.Core.Components/Properties/Shaders/ShaderExtensions.cs diff --git a/SharpEngine.Core.Components/Properties/Textures/Texture.cs b/Engine/SharpEngine.Core.Components/Properties/Textures/Texture.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Textures/Texture.cs rename to Engine/SharpEngine.Core.Components/Properties/Textures/Texture.cs diff --git a/SharpEngine.Core.Components/Properties/Textures/TextureExtensions.cs b/Engine/SharpEngine.Core.Components/Properties/Textures/TextureExtensions.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Textures/TextureExtensions.cs rename to Engine/SharpEngine.Core.Components/Properties/Textures/TextureExtensions.cs diff --git a/SharpEngine.Core.Components/Properties/Transform.cs b/Engine/SharpEngine.Core.Components/Properties/Transform.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Transform.cs rename to Engine/SharpEngine.Core.Components/Properties/Transform.cs diff --git a/SharpEngine.Core.Components/Properties/Transform2D.cs b/Engine/SharpEngine.Core.Components/Properties/Transform2D.cs similarity index 100% rename from SharpEngine.Core.Components/Properties/Transform2D.cs rename to Engine/SharpEngine.Core.Components/Properties/Transform2D.cs diff --git a/SharpEngine.Core.Components/SharpEngine.Core.Components.csproj b/Engine/SharpEngine.Core.Components/SharpEngine.Core.Components.csproj similarity index 100% rename from SharpEngine.Core.Components/SharpEngine.Core.Components.csproj rename to Engine/SharpEngine.Core.Components/SharpEngine.Core.Components.csproj diff --git a/SharpEngine.Core.Numerics/Float.cs b/Engine/SharpEngine.Core.Numerics/Float.cs similarity index 100% rename from SharpEngine.Core.Numerics/Float.cs rename to Engine/SharpEngine.Core.Numerics/Float.cs diff --git a/SharpEngine.Core.Numerics/HashCodeHelper.cs b/Engine/SharpEngine.Core.Numerics/HashCodeHelper.cs similarity index 100% rename from SharpEngine.Core.Numerics/HashCodeHelper.cs rename to Engine/SharpEngine.Core.Numerics/HashCodeHelper.cs diff --git a/SharpEngine.Core.Numerics/IVector.cs b/Engine/SharpEngine.Core.Numerics/IVector.cs similarity index 100% rename from SharpEngine.Core.Numerics/IVector.cs rename to Engine/SharpEngine.Core.Numerics/IVector.cs diff --git a/SharpEngine.Core.Numerics/JitIntrinsicAttribute.cs b/Engine/SharpEngine.Core.Numerics/JitIntrinsicAttribute.cs similarity index 100% rename from SharpEngine.Core.Numerics/JitIntrinsicAttribute.cs rename to Engine/SharpEngine.Core.Numerics/JitIntrinsicAttribute.cs diff --git a/SharpEngine.Core.Numerics/SharpEngine.Core.Numerics.csproj b/Engine/SharpEngine.Core.Numerics/SharpEngine.Core.Numerics.csproj similarity index 100% rename from SharpEngine.Core.Numerics/SharpEngine.Core.Numerics.csproj rename to Engine/SharpEngine.Core.Numerics/SharpEngine.Core.Numerics.csproj diff --git a/SharpEngine.Core.Numerics/Vector2.cs b/Engine/SharpEngine.Core.Numerics/Vector2.cs similarity index 100% rename from SharpEngine.Core.Numerics/Vector2.cs rename to Engine/SharpEngine.Core.Numerics/Vector2.cs diff --git a/SharpEngine.Core.Numerics/Vector2_Intrinsics.cs b/Engine/SharpEngine.Core.Numerics/Vector2_Intrinsics.cs similarity index 100% rename from SharpEngine.Core.Numerics/Vector2_Intrinsics.cs rename to Engine/SharpEngine.Core.Numerics/Vector2_Intrinsics.cs diff --git a/SharpEngine.Core.Numerics/Vector3.cs b/Engine/SharpEngine.Core.Numerics/Vector3.cs similarity index 100% rename from SharpEngine.Core.Numerics/Vector3.cs rename to Engine/SharpEngine.Core.Numerics/Vector3.cs diff --git a/SharpEngine.Core.Numerics/Vector3_Intrinsics.cs b/Engine/SharpEngine.Core.Numerics/Vector3_Intrinsics.cs similarity index 100% rename from SharpEngine.Core.Numerics/Vector3_Intrinsics.cs rename to Engine/SharpEngine.Core.Numerics/Vector3_Intrinsics.cs diff --git a/SharpEngine.Core/Abstractions/IGame.cs b/Engine/SharpEngine.Core/Abstractions/IGame.cs similarity index 100% rename from SharpEngine.Core/Abstractions/IGame.cs rename to Engine/SharpEngine.Core/Abstractions/IGame.cs diff --git a/SharpEngine.Core/Abstractions/IRenderable.cs b/Engine/SharpEngine.Core/Abstractions/IRenderable.cs similarity index 100% rename from SharpEngine.Core/Abstractions/IRenderable.cs rename to Engine/SharpEngine.Core/Abstractions/IRenderable.cs diff --git a/SharpEngine.Core/Abstractions/ISettings.cs b/Engine/SharpEngine.Core/Abstractions/ISettings.cs similarity index 100% rename from SharpEngine.Core/Abstractions/ISettings.cs rename to Engine/SharpEngine.Core/Abstractions/ISettings.cs diff --git a/SharpEngine.Core/Audio/Audio.cs b/Engine/SharpEngine.Core/Audio/Audio.cs similarity index 100% rename from SharpEngine.Core/Audio/Audio.cs rename to Engine/SharpEngine.Core/Audio/Audio.cs diff --git a/SharpEngine.Core/Audio/AudioBuffer.cs b/Engine/SharpEngine.Core/Audio/AudioBuffer.cs similarity index 100% rename from SharpEngine.Core/Audio/AudioBuffer.cs rename to Engine/SharpEngine.Core/Audio/AudioBuffer.cs diff --git a/SharpEngine.Core/Audio/AudioDevice.cs b/Engine/SharpEngine.Core/Audio/AudioDevice.cs similarity index 100% rename from SharpEngine.Core/Audio/AudioDevice.cs rename to Engine/SharpEngine.Core/Audio/AudioDevice.cs diff --git a/SharpEngine.Core/Audio/AudioFileExtensions.cs b/Engine/SharpEngine.Core/Audio/AudioFileExtensions.cs similarity index 100% rename from SharpEngine.Core/Audio/AudioFileExtensions.cs rename to Engine/SharpEngine.Core/Audio/AudioFileExtensions.cs diff --git a/SharpEngine.Core/Audio/AudioPlayerBase.cs b/Engine/SharpEngine.Core/Audio/AudioPlayerBase.cs similarity index 100% rename from SharpEngine.Core/Audio/AudioPlayerBase.cs rename to Engine/SharpEngine.Core/Audio/AudioPlayerBase.cs diff --git a/SharpEngine.Core/Audio/AudioProperties.cs b/Engine/SharpEngine.Core/Audio/AudioProperties.cs similarity index 100% rename from SharpEngine.Core/Audio/AudioProperties.cs rename to Engine/SharpEngine.Core/Audio/AudioProperties.cs diff --git a/SharpEngine.Core/Audio/AudioSource.cs b/Engine/SharpEngine.Core/Audio/AudioSource.cs similarity index 100% rename from SharpEngine.Core/Audio/AudioSource.cs rename to Engine/SharpEngine.Core/Audio/AudioSource.cs diff --git a/SharpEngine.Core/Audio/WavData.cs b/Engine/SharpEngine.Core/Audio/WavData.cs similarity index 100% rename from SharpEngine.Core/Audio/WavData.cs rename to Engine/SharpEngine.Core/Audio/WavData.cs diff --git a/SharpEngine.Core/Audio/WavPlayer.cs b/Engine/SharpEngine.Core/Audio/WavPlayer.cs similarity index 100% rename from SharpEngine.Core/Audio/WavPlayer.cs rename to Engine/SharpEngine.Core/Audio/WavPlayer.cs diff --git a/SharpEngine.Core/Entities/BezierCurve.cs b/Engine/SharpEngine.Core/Entities/BezierCurve.cs similarity index 100% rename from SharpEngine.Core/Entities/BezierCurve.cs rename to Engine/SharpEngine.Core/Entities/BezierCurve.cs diff --git a/SharpEngine.Core/Entities/GameObject.cs b/Engine/SharpEngine.Core/Entities/GameObject.cs similarity index 100% rename from SharpEngine.Core/Entities/GameObject.cs rename to Engine/SharpEngine.Core/Entities/GameObject.cs diff --git a/SharpEngine.Core/Entities/Lights/DirectionalLight.cs b/Engine/SharpEngine.Core/Entities/Lights/DirectionalLight.cs similarity index 100% rename from SharpEngine.Core/Entities/Lights/DirectionalLight.cs rename to Engine/SharpEngine.Core/Entities/Lights/DirectionalLight.cs diff --git a/SharpEngine.Core/Entities/Lights/Light.cs b/Engine/SharpEngine.Core/Entities/Lights/Light.cs similarity index 100% rename from SharpEngine.Core/Entities/Lights/Light.cs rename to Engine/SharpEngine.Core/Entities/Lights/Light.cs diff --git a/SharpEngine.Core/Entities/Lights/PointLight.cs b/Engine/SharpEngine.Core/Entities/Lights/PointLight.cs similarity index 100% rename from SharpEngine.Core/Entities/Lights/PointLight.cs rename to Engine/SharpEngine.Core/Entities/Lights/PointLight.cs diff --git a/SharpEngine.Core/Entities/Lights/SpotLight.cs b/Engine/SharpEngine.Core/Entities/Lights/SpotLight.cs similarity index 100% rename from SharpEngine.Core/Entities/Lights/SpotLight.cs rename to Engine/SharpEngine.Core/Entities/Lights/SpotLight.cs diff --git a/SharpEngine.Core/Entities/MeshService.cs b/Engine/SharpEngine.Core/Entities/MeshService.cs similarity index 100% rename from SharpEngine.Core/Entities/MeshService.cs rename to Engine/SharpEngine.Core/Entities/MeshService.cs diff --git a/SharpEngine.Core/Entities/UI/Layouts/FlexLayout.cs b/Engine/SharpEngine.Core/Entities/UI/Layouts/FlexLayout.cs similarity index 100% rename from SharpEngine.Core/Entities/UI/Layouts/FlexLayout.cs rename to Engine/SharpEngine.Core/Entities/UI/Layouts/FlexLayout.cs diff --git a/SharpEngine.Core/Entities/UI/Layouts/GridLayout.cs b/Engine/SharpEngine.Core/Entities/UI/Layouts/GridLayout.cs similarity index 100% rename from SharpEngine.Core/Entities/UI/Layouts/GridLayout.cs rename to Engine/SharpEngine.Core/Entities/UI/Layouts/GridLayout.cs diff --git a/SharpEngine.Core/Entities/UI/Layouts/LayoutBase.cs b/Engine/SharpEngine.Core/Entities/UI/Layouts/LayoutBase.cs similarity index 100% rename from SharpEngine.Core/Entities/UI/Layouts/LayoutBase.cs rename to Engine/SharpEngine.Core/Entities/UI/Layouts/LayoutBase.cs diff --git a/SharpEngine.Core/Entities/UI/UIElement.cs b/Engine/SharpEngine.Core/Entities/UI/UIElement.cs similarity index 100% rename from SharpEngine.Core/Entities/UI/UIElement.cs rename to Engine/SharpEngine.Core/Entities/UI/UIElement.cs diff --git a/SharpEngine.Core/Entities/Views/CameraView.cs b/Engine/SharpEngine.Core/Entities/Views/CameraView.cs similarity index 100% rename from SharpEngine.Core/Entities/Views/CameraView.cs rename to Engine/SharpEngine.Core/Entities/Views/CameraView.cs diff --git a/SharpEngine.Core/Entities/Views/Settings/DefaultViewSettings.cs b/Engine/SharpEngine.Core/Entities/Views/Settings/DefaultViewSettings.cs similarity index 100% rename from SharpEngine.Core/Entities/Views/Settings/DefaultViewSettings.cs rename to Engine/SharpEngine.Core/Entities/Views/Settings/DefaultViewSettings.cs diff --git a/SharpEngine.Core/Entities/Views/Settings/IViewSettings.cs b/Engine/SharpEngine.Core/Entities/Views/Settings/IViewSettings.cs similarity index 100% rename from SharpEngine.Core/Entities/Views/Settings/IViewSettings.cs rename to Engine/SharpEngine.Core/Entities/Views/Settings/IViewSettings.cs diff --git a/SharpEngine.Core/Entities/Views/Settings/ViewSettings.cs b/Engine/SharpEngine.Core/Entities/Views/Settings/ViewSettings.cs similarity index 100% rename from SharpEngine.Core/Entities/Views/Settings/ViewSettings.cs rename to Engine/SharpEngine.Core/Entities/Views/Settings/ViewSettings.cs diff --git a/SharpEngine.Core/Entities/Views/View.cs b/Engine/SharpEngine.Core/Entities/Views/View.cs similarity index 100% rename from SharpEngine.Core/Entities/Views/View.cs rename to Engine/SharpEngine.Core/Entities/Views/View.cs diff --git a/SharpEngine.Core/Enums/MouseWheelScrollDirection.cs b/Engine/SharpEngine.Core/Enums/MouseWheelScrollDirection.cs similarity index 100% rename from SharpEngine.Core/Enums/MouseWheelScrollDirection.cs rename to Engine/SharpEngine.Core/Enums/MouseWheelScrollDirection.cs diff --git a/SharpEngine.Core/Extensions/CollectionExtensions.cs b/Engine/SharpEngine.Core/Extensions/CollectionExtensions.cs similarity index 100% rename from SharpEngine.Core/Extensions/CollectionExtensions.cs rename to Engine/SharpEngine.Core/Extensions/CollectionExtensions.cs diff --git a/SharpEngine.Core/Extensions/PathExtensions.cs b/Engine/SharpEngine.Core/Extensions/PathExtensions.cs similarity index 100% rename from SharpEngine.Core/Extensions/PathExtensions.cs rename to Engine/SharpEngine.Core/Extensions/PathExtensions.cs diff --git a/SharpEngine.Core/Primitives/Cube.cs b/Engine/SharpEngine.Core/Primitives/Cube.cs similarity index 100% rename from SharpEngine.Core/Primitives/Cube.cs rename to Engine/SharpEngine.Core/Primitives/Cube.cs diff --git a/SharpEngine.Core/Primitives/Plane.cs b/Engine/SharpEngine.Core/Primitives/Plane.cs similarity index 100% rename from SharpEngine.Core/Primitives/Plane.cs rename to Engine/SharpEngine.Core/Primitives/Plane.cs diff --git a/SharpEngine.Core/Primitives/PrimitiveFactory.cs b/Engine/SharpEngine.Core/Primitives/PrimitiveFactory.cs similarity index 100% rename from SharpEngine.Core/Primitives/PrimitiveFactory.cs rename to Engine/SharpEngine.Core/Primitives/PrimitiveFactory.cs diff --git a/SharpEngine.Core/Primitives/PrimitiveType.cs b/Engine/SharpEngine.Core/Primitives/PrimitiveType.cs similarity index 100% rename from SharpEngine.Core/Primitives/PrimitiveType.cs rename to Engine/SharpEngine.Core/Primitives/PrimitiveType.cs diff --git a/SharpEngine.Core/Ray.cs b/Engine/SharpEngine.Core/Ray.cs similarity index 100% rename from SharpEngine.Core/Ray.cs rename to Engine/SharpEngine.Core/Ray.cs diff --git a/SharpEngine.Core/Renderers/RenderFlags.cs b/Engine/SharpEngine.Core/Renderers/RenderFlags.cs similarity index 100% rename from SharpEngine.Core/Renderers/RenderFlags.cs rename to Engine/SharpEngine.Core/Renderers/RenderFlags.cs diff --git a/SharpEngine.Core/Renderers/Renderer.cs b/Engine/SharpEngine.Core/Renderers/Renderer.cs similarity index 100% rename from SharpEngine.Core/Renderers/Renderer.cs rename to Engine/SharpEngine.Core/Renderers/Renderer.cs diff --git a/SharpEngine.Core/Renderers/RendererBase.cs b/Engine/SharpEngine.Core/Renderers/RendererBase.cs similarity index 100% rename from SharpEngine.Core/Renderers/RendererBase.cs rename to Engine/SharpEngine.Core/Renderers/RendererBase.cs diff --git a/SharpEngine.Core/Renderers/TextRenderer.cs b/Engine/SharpEngine.Core/Renderers/TextRenderer.cs similarity index 100% rename from SharpEngine.Core/Renderers/TextRenderer.cs rename to Engine/SharpEngine.Core/Renderers/TextRenderer.cs diff --git a/SharpEngine.Core/Renderers/UIRenderer.cs b/Engine/SharpEngine.Core/Renderers/UIRenderer.cs similarity index 100% rename from SharpEngine.Core/Renderers/UIRenderer.cs rename to Engine/SharpEngine.Core/Renderers/UIRenderer.cs diff --git a/SharpEngine.Core/Scenes/Scene.cs b/Engine/SharpEngine.Core/Scenes/Scene.cs similarity index 100% rename from SharpEngine.Core/Scenes/Scene.cs rename to Engine/SharpEngine.Core/Scenes/Scene.cs diff --git a/SharpEngine.Core/Scenes/SceneNode.cs b/Engine/SharpEngine.Core/Scenes/SceneNode.cs similarity index 100% rename from SharpEngine.Core/Scenes/SceneNode.cs rename to Engine/SharpEngine.Core/Scenes/SceneNode.cs diff --git a/SharpEngine.Core/Shaders/LampShader.cs b/Engine/SharpEngine.Core/Shaders/LampShader.cs similarity index 100% rename from SharpEngine.Core/Shaders/LampShader.cs rename to Engine/SharpEngine.Core/Shaders/LampShader.cs diff --git a/SharpEngine.Core/Shaders/LightingShader.cs b/Engine/SharpEngine.Core/Shaders/LightingShader.cs similarity index 100% rename from SharpEngine.Core/Shaders/LightingShader.cs rename to Engine/SharpEngine.Core/Shaders/LightingShader.cs diff --git a/SharpEngine.Core/Shaders/ShaderBase.cs b/Engine/SharpEngine.Core/Shaders/ShaderBase.cs similarity index 100% rename from SharpEngine.Core/Shaders/ShaderBase.cs rename to Engine/SharpEngine.Core/Shaders/ShaderBase.cs diff --git a/SharpEngine.Core/Shaders/ShaderService.cs b/Engine/SharpEngine.Core/Shaders/ShaderService.cs similarity index 100% rename from SharpEngine.Core/Shaders/ShaderService.cs rename to Engine/SharpEngine.Core/Shaders/ShaderService.cs diff --git a/SharpEngine.Core/Shaders/UIShader.cs b/Engine/SharpEngine.Core/Shaders/UIShader.cs similarity index 100% rename from SharpEngine.Core/Shaders/UIShader.cs rename to Engine/SharpEngine.Core/Shaders/UIShader.cs diff --git a/SharpEngine.Core/SharpEngine.Core.csproj b/Engine/SharpEngine.Core/SharpEngine.Core.csproj similarity index 100% rename from SharpEngine.Core/SharpEngine.Core.csproj rename to Engine/SharpEngine.Core/SharpEngine.Core.csproj diff --git a/SharpEngine.Core/Textures/TextureService.cs b/Engine/SharpEngine.Core/Textures/TextureService.cs similarity index 100% rename from SharpEngine.Core/Textures/TextureService.cs rename to Engine/SharpEngine.Core/Textures/TextureService.cs diff --git a/SharpEngine.Core/Windowing/Frame.cs b/Engine/SharpEngine.Core/Windowing/Frame.cs similarity index 100% rename from SharpEngine.Core/Windowing/Frame.cs rename to Engine/SharpEngine.Core/Windowing/Frame.cs diff --git a/SharpEngine.Core/Windowing/SilkWindow.cs b/Engine/SharpEngine.Core/Windowing/SilkWindow.cs similarity index 100% rename from SharpEngine.Core/Windowing/SilkWindow.cs rename to Engine/SharpEngine.Core/Windowing/SilkWindow.cs diff --git a/SharpEngine.Core/Windowing/Window.cs b/Engine/SharpEngine.Core/Windowing/Window.cs similarity index 100% rename from SharpEngine.Core/Windowing/Window.cs rename to Engine/SharpEngine.Core/Windowing/Window.cs diff --git a/SharpEngine.Core/_Resources/Default.cs b/Engine/SharpEngine.Core/_Resources/Default.cs similarity index 100% rename from SharpEngine.Core/_Resources/Default.cs rename to Engine/SharpEngine.Core/_Resources/Default.cs diff --git a/SharpEngine.Core/_Resources/Shaders/Light/DirectionalLight.glsl b/Engine/SharpEngine.Core/_Resources/Shaders/Light/DirectionalLight.glsl similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/Light/DirectionalLight.glsl rename to Engine/SharpEngine.Core/_Resources/Shaders/Light/DirectionalLight.glsl diff --git a/SharpEngine.Core/_Resources/Shaders/Light/PointLight.glsl b/Engine/SharpEngine.Core/_Resources/Shaders/Light/PointLight.glsl similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/Light/PointLight.glsl rename to Engine/SharpEngine.Core/_Resources/Shaders/Light/PointLight.glsl diff --git a/SharpEngine.Core/_Resources/Shaders/Light/SpotLight.glsl b/Engine/SharpEngine.Core/_Resources/Shaders/Light/SpotLight.glsl similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/Light/SpotLight.glsl rename to Engine/SharpEngine.Core/_Resources/Shaders/Light/SpotLight.glsl diff --git a/SharpEngine.Core/_Resources/Shaders/Material.glsl b/Engine/SharpEngine.Core/_Resources/Shaders/Material.glsl similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/Material.glsl rename to Engine/SharpEngine.Core/_Resources/Shaders/Material.glsl diff --git a/SharpEngine.Core/_Resources/Shaders/lighting.frag b/Engine/SharpEngine.Core/_Resources/Shaders/lighting.frag similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/lighting.frag rename to Engine/SharpEngine.Core/_Resources/Shaders/lighting.frag diff --git a/SharpEngine.Core/_Resources/Shaders/shader.frag b/Engine/SharpEngine.Core/_Resources/Shaders/shader.frag similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/shader.frag rename to Engine/SharpEngine.Core/_Resources/Shaders/shader.frag diff --git a/SharpEngine.Core/_Resources/Shaders/shader.vert b/Engine/SharpEngine.Core/_Resources/Shaders/shader.vert similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/shader.vert rename to Engine/SharpEngine.Core/_Resources/Shaders/shader.vert diff --git a/SharpEngine.Core/_Resources/Shaders/shader2.vert b/Engine/SharpEngine.Core/_Resources/Shaders/shader2.vert similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/shader2.vert rename to Engine/SharpEngine.Core/_Resources/Shaders/shader2.vert diff --git a/SharpEngine.Core/_Resources/Shaders/uiShader.frag b/Engine/SharpEngine.Core/_Resources/Shaders/uiShader.frag similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/uiShader.frag rename to Engine/SharpEngine.Core/_Resources/Shaders/uiShader.frag diff --git a/SharpEngine.Core/_Resources/Shaders/uiShader.vert b/Engine/SharpEngine.Core/_Resources/Shaders/uiShader.vert similarity index 100% rename from SharpEngine.Core/_Resources/Shaders/uiShader.vert rename to Engine/SharpEngine.Core/_Resources/Shaders/uiShader.vert diff --git a/SharpEngine.Core/_Resources/Textures/debug.jpg b/Engine/SharpEngine.Core/_Resources/Textures/debug.jpg similarity index 100% rename from SharpEngine.Core/_Resources/Textures/debug.jpg rename to Engine/SharpEngine.Core/_Resources/Textures/debug.jpg diff --git a/SharpEngine.Core/_Resources/icon.png b/Engine/SharpEngine.Core/_Resources/icon.png similarity index 100% rename from SharpEngine.Core/_Resources/icon.png rename to Engine/SharpEngine.Core/_Resources/icon.png diff --git a/SharpEngine.Shared/Attributes/FilterAttribute.cs b/Engine/SharpEngine.Shared/Attributes/FilterAttribute.cs similarity index 100% rename from SharpEngine.Shared/Attributes/FilterAttribute.cs rename to Engine/SharpEngine.Shared/Attributes/FilterAttribute.cs diff --git a/SharpEngine.Shared/Attributes/InspectorAttribute.cs b/Engine/SharpEngine.Shared/Attributes/InspectorAttribute.cs similarity index 100% rename from SharpEngine.Shared/Attributes/InspectorAttribute.cs rename to Engine/SharpEngine.Shared/Attributes/InspectorAttribute.cs diff --git a/SharpEngine.Shared/Debug.cs b/Engine/SharpEngine.Shared/Debug.cs similarity index 100% rename from SharpEngine.Shared/Debug.cs rename to Engine/SharpEngine.Shared/Debug.cs diff --git a/SharpEngine.Shared/Dto/Project.cs b/Engine/SharpEngine.Shared/Dto/Project.cs similarity index 100% rename from SharpEngine.Shared/Dto/Project.cs rename to Engine/SharpEngine.Shared/Dto/Project.cs diff --git a/SharpEngine.Shared/Dto/UserProfile.cs b/Engine/SharpEngine.Shared/Dto/UserProfile.cs similarity index 100% rename from SharpEngine.Shared/Dto/UserProfile.cs rename to Engine/SharpEngine.Shared/Dto/UserProfile.cs diff --git a/SharpEngine.Shared/Enums/FilterMode.cs b/Engine/SharpEngine.Shared/Enums/FilterMode.cs similarity index 100% rename from SharpEngine.Shared/Enums/FilterMode.cs rename to Engine/SharpEngine.Shared/Enums/FilterMode.cs diff --git a/SharpEngine.Shared/EnvironmentVariables.cs b/Engine/SharpEngine.Shared/EnvironmentVariables.cs similarity index 100% rename from SharpEngine.Shared/EnvironmentVariables.cs rename to Engine/SharpEngine.Shared/EnvironmentVariables.cs diff --git a/SharpEngine.Shared/Extensions/OrderedEnumerableExtensions.cs b/Engine/SharpEngine.Shared/Extensions/OrderedEnumerableExtensions.cs similarity index 100% rename from SharpEngine.Shared/Extensions/OrderedEnumerableExtensions.cs rename to Engine/SharpEngine.Shared/Extensions/OrderedEnumerableExtensions.cs diff --git a/SharpEngine.Shared/Extensions/ProcessExtensions.cs b/Engine/SharpEngine.Shared/Extensions/ProcessExtensions.cs similarity index 100% rename from SharpEngine.Shared/Extensions/ProcessExtensions.cs rename to Engine/SharpEngine.Shared/Extensions/ProcessExtensions.cs diff --git a/SharpEngine.Shared/Extensions/ReflectionExtensions.cs b/Engine/SharpEngine.Shared/Extensions/ReflectionExtensions.cs similarity index 100% rename from SharpEngine.Shared/Extensions/ReflectionExtensions.cs rename to Engine/SharpEngine.Shared/Extensions/ReflectionExtensions.cs diff --git a/SharpEngine.Shared/Extensions/StringExtensions.cs b/Engine/SharpEngine.Shared/Extensions/StringExtensions.cs similarity index 100% rename from SharpEngine.Shared/Extensions/StringExtensions.cs rename to Engine/SharpEngine.Shared/Extensions/StringExtensions.cs diff --git a/SharpEngine.Shared/Math.cs b/Engine/SharpEngine.Shared/Math.cs similarity index 100% rename from SharpEngine.Shared/Math.cs rename to Engine/SharpEngine.Shared/Math.cs diff --git a/SharpEngine.Shared/NaturalStringComparer.cs b/Engine/SharpEngine.Shared/NaturalStringComparer.cs similarity index 100% rename from SharpEngine.Shared/NaturalStringComparer.cs rename to Engine/SharpEngine.Shared/NaturalStringComparer.cs diff --git a/SharpEngine.Shared/SharpEngine.Shared.csproj b/Engine/SharpEngine.Shared/SharpEngine.Shared.csproj similarity index 100% rename from SharpEngine.Shared/SharpEngine.Shared.csproj rename to Engine/SharpEngine.Shared/SharpEngine.Shared.csproj diff --git a/SharpEngine.sln b/Engine/SharpEngine.sln similarity index 100% rename from SharpEngine.sln rename to Engine/SharpEngine.sln diff --git a/SharpEngine.slnx b/Engine/SharpEngine.slnx similarity index 100% rename from SharpEngine.slnx rename to Engine/SharpEngine.slnx diff --git a/Tests/ObjLoader.Test/Loaders/MaterialLibraryLoaderTests.cs b/Engine/Tests/ObjLoader.Test/Loaders/MaterialLibraryLoaderTests.cs similarity index 100% rename from Tests/ObjLoader.Test/Loaders/MaterialLibraryLoaderTests.cs rename to Engine/Tests/ObjLoader.Test/Loaders/MaterialLibraryLoaderTests.cs diff --git a/Tests/ObjLoader.Test/Loaders/ObjLoaderTests.cs b/Engine/Tests/ObjLoader.Test/Loaders/ObjLoaderTests.cs similarity index 100% rename from Tests/ObjLoader.Test/Loaders/ObjLoaderTests.cs rename to Engine/Tests/ObjLoader.Test/Loaders/ObjLoaderTests.cs diff --git a/Tests/ObjLoader.Test/ObjLoader.Tests.csproj b/Engine/Tests/ObjLoader.Test/ObjLoader.Tests.csproj similarity index 100% rename from Tests/ObjLoader.Test/ObjLoader.Tests.csproj rename to Engine/Tests/ObjLoader.Test/ObjLoader.Tests.csproj diff --git a/Tests/ObjLoader.Test/TypeParsers/FaceParserTests.cs b/Engine/Tests/ObjLoader.Test/TypeParsers/FaceParserTests.cs similarity index 100% rename from Tests/ObjLoader.Test/TypeParsers/FaceParserTests.cs rename to Engine/Tests/ObjLoader.Test/TypeParsers/FaceParserTests.cs diff --git a/Tests/ObjLoader.Test/TypeParsers/GroupParserTests.cs b/Engine/Tests/ObjLoader.Test/TypeParsers/GroupParserTests.cs similarity index 100% rename from Tests/ObjLoader.Test/TypeParsers/GroupParserTests.cs rename to Engine/Tests/ObjLoader.Test/TypeParsers/GroupParserTests.cs diff --git a/Tests/ObjLoader.Test/TypeParsers/MaterialLibraryParserTests.cs b/Engine/Tests/ObjLoader.Test/TypeParsers/MaterialLibraryParserTests.cs similarity index 100% rename from Tests/ObjLoader.Test/TypeParsers/MaterialLibraryParserTests.cs rename to Engine/Tests/ObjLoader.Test/TypeParsers/MaterialLibraryParserTests.cs diff --git a/Tests/ObjLoader.Test/TypeParsers/NormalParserTests.cs b/Engine/Tests/ObjLoader.Test/TypeParsers/NormalParserTests.cs similarity index 100% rename from Tests/ObjLoader.Test/TypeParsers/NormalParserTests.cs rename to Engine/Tests/ObjLoader.Test/TypeParsers/NormalParserTests.cs diff --git a/Tests/ObjLoader.Test/TypeParsers/TextureParserTests.cs b/Engine/Tests/ObjLoader.Test/TypeParsers/TextureParserTests.cs similarity index 100% rename from Tests/ObjLoader.Test/TypeParsers/TextureParserTests.cs rename to Engine/Tests/ObjLoader.Test/TypeParsers/TextureParserTests.cs diff --git a/Tests/ObjLoader.Test/TypeParsers/UseMaterialParserTests.cs b/Engine/Tests/ObjLoader.Test/TypeParsers/UseMaterialParserTests.cs similarity index 100% rename from Tests/ObjLoader.Test/TypeParsers/UseMaterialParserTests.cs rename to Engine/Tests/ObjLoader.Test/TypeParsers/UseMaterialParserTests.cs diff --git a/Tests/ObjLoader.Test/TypeParsers/VertexParserTests.cs b/Engine/Tests/ObjLoader.Test/TypeParsers/VertexParserTests.cs similarity index 100% rename from Tests/ObjLoader.Test/TypeParsers/VertexParserTests.cs rename to Engine/Tests/ObjLoader.Test/TypeParsers/VertexParserTests.cs diff --git a/Tests/SharpEngine.Core.Tests/Class1.cs b/Engine/Tests/SharpEngine.Core.Tests/Class1.cs similarity index 100% rename from Tests/SharpEngine.Core.Tests/Class1.cs rename to Engine/Tests/SharpEngine.Core.Tests/Class1.cs diff --git a/Tests/SharpEngine.Core.Tests/SharpEngine.Core.Tests.csproj b/Engine/Tests/SharpEngine.Core.Tests/SharpEngine.Core.Tests.csproj similarity index 100% rename from Tests/SharpEngine.Core.Tests/SharpEngine.Core.Tests.csproj rename to Engine/Tests/SharpEngine.Core.Tests/SharpEngine.Core.Tests.csproj diff --git a/Tests/SharpEngine.Editor.Tests/Class1.cs b/Engine/Tests/SharpEngine.Editor.Tests/Class1.cs similarity index 100% rename from Tests/SharpEngine.Editor.Tests/Class1.cs rename to Engine/Tests/SharpEngine.Editor.Tests/Class1.cs diff --git a/Tests/SharpEngine.Editor.Tests/SharpEngine.Editor.Tests.csproj b/Engine/Tests/SharpEngine.Editor.Tests/SharpEngine.Editor.Tests.csproj similarity index 100% rename from Tests/SharpEngine.Editor.Tests/SharpEngine.Editor.Tests.csproj rename to Engine/Tests/SharpEngine.Editor.Tests/SharpEngine.Editor.Tests.csproj diff --git a/Tests/SharpEngine.Shared.Net8/Class1.cs b/Engine/Tests/SharpEngine.Shared.Net8/Class1.cs similarity index 100% rename from Tests/SharpEngine.Shared.Net8/Class1.cs rename to Engine/Tests/SharpEngine.Shared.Net8/Class1.cs diff --git a/Tests/SharpEngine.Shared.Net8/SharpEngine.Shared.Net8.csproj b/Engine/Tests/SharpEngine.Shared.Net8/SharpEngine.Shared.Net8.csproj similarity index 100% rename from Tests/SharpEngine.Shared.Net8/SharpEngine.Shared.Net8.csproj rename to Engine/Tests/SharpEngine.Shared.Net8/SharpEngine.Shared.Net8.csproj diff --git a/Tests/SharpEngine.Shared.Tests/Class1.cs b/Engine/Tests/SharpEngine.Shared.Tests/Class1.cs similarity index 100% rename from Tests/SharpEngine.Shared.Tests/Class1.cs rename to Engine/Tests/SharpEngine.Shared.Tests/Class1.cs diff --git a/Tests/SharpEngine.Shared.Tests/SharpEngine.Shared.Tests.csproj b/Engine/Tests/SharpEngine.Shared.Tests/SharpEngine.Shared.Tests.csproj similarity index 100% rename from Tests/SharpEngine.Shared.Tests/SharpEngine.Shared.Tests.csproj rename to Engine/Tests/SharpEngine.Shared.Tests/SharpEngine.Shared.Tests.csproj diff --git a/Tests/Test.Directory.Build.props b/Engine/Tests/Test.Directory.Build.props similarity index 100% rename from Tests/Test.Directory.Build.props rename to Engine/Tests/Test.Directory.Build.props diff --git a/docs/CODE_OF_CONDUCT.md b/Engine/docs/CODE_OF_CONDUCT.md similarity index 100% rename from docs/CODE_OF_CONDUCT.md rename to Engine/docs/CODE_OF_CONDUCT.md diff --git a/docs/CONTRIBUTING.md b/Engine/docs/CONTRIBUTING.md similarity index 100% rename from docs/CONTRIBUTING.md rename to Engine/docs/CONTRIBUTING.md diff --git a/docs/SECURITY.md b/Engine/docs/SECURITY.md similarity index 100% rename from docs/SECURITY.md rename to Engine/docs/SECURITY.md diff --git a/docs/materials_and_inspiration.md b/Engine/docs/materials_and_inspiration.md similarity index 100% rename from docs/materials_and_inspiration.md rename to Engine/docs/materials_and_inspiration.md diff --git a/docs/pull_request_template.md b/Engine/docs/pull_request_template.md similarity index 100% rename from docs/pull_request_template.md rename to Engine/docs/pull_request_template.md From fcbece1b44640539ce3b92d4f52b995ec73a528f Mon Sep 17 00:00:00 2001 From: Antti Veikkolainen Date: Sat, 25 Oct 2025 20:54:47 +0300 Subject: [PATCH 2/4] #52 Initial backend project --- Asset Store/AssetStore/AssetStore.csproj | 13 ++++++++++ Asset Store/AssetStore/AssetStore.http | 6 +++++ Asset Store/AssetStore/AssetStore.slnx | 3 +++ .../Controllers/WeatherForecastController.cs | 26 +++++++++++++++++++ Asset Store/AssetStore/Program.cs | 23 ++++++++++++++++ .../AssetStore/Properties/launchSettings.json | 23 ++++++++++++++++ Asset Store/AssetStore/WeatherForecast.cs | 13 ++++++++++ .../AssetStore/appsettings.Development.json | 8 ++++++ Asset Store/AssetStore/appsettings.json | 9 +++++++ 9 files changed, 124 insertions(+) create mode 100644 Asset Store/AssetStore/AssetStore.csproj create mode 100644 Asset Store/AssetStore/AssetStore.http create mode 100644 Asset Store/AssetStore/AssetStore.slnx create mode 100644 Asset Store/AssetStore/Controllers/WeatherForecastController.cs create mode 100644 Asset Store/AssetStore/Program.cs create mode 100644 Asset Store/AssetStore/Properties/launchSettings.json create mode 100644 Asset Store/AssetStore/WeatherForecast.cs create mode 100644 Asset Store/AssetStore/appsettings.Development.json create mode 100644 Asset Store/AssetStore/appsettings.json diff --git a/Asset Store/AssetStore/AssetStore.csproj b/Asset Store/AssetStore/AssetStore.csproj new file mode 100644 index 0000000..11c94dc --- /dev/null +++ b/Asset Store/AssetStore/AssetStore.csproj @@ -0,0 +1,13 @@ + + + + net10.0 + enable + enable + + + + + + + diff --git a/Asset Store/AssetStore/AssetStore.http b/Asset Store/AssetStore/AssetStore.http new file mode 100644 index 0000000..2e4293e --- /dev/null +++ b/Asset Store/AssetStore/AssetStore.http @@ -0,0 +1,6 @@ +@AssetStore_HostAddress = http://localhost:5274 + +GET {{AssetStore_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/Asset Store/AssetStore/AssetStore.slnx b/Asset Store/AssetStore/AssetStore.slnx new file mode 100644 index 0000000..f2c75f6 --- /dev/null +++ b/Asset Store/AssetStore/AssetStore.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Asset Store/AssetStore/Controllers/WeatherForecastController.cs b/Asset Store/AssetStore/Controllers/WeatherForecastController.cs new file mode 100644 index 0000000..48a6c00 --- /dev/null +++ b/Asset Store/AssetStore/Controllers/WeatherForecastController.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Mvc; + +namespace AssetStore.Controllers +{ + [ApiController] + [Route("[controller]")] + public class WeatherForecastController : ControllerBase + { + private static readonly string[] Summaries = + [ + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + ]; + + [HttpGet(Name = "GetWeatherForecast")] + public IEnumerable Get() + { + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }) + .ToArray(); + } + } +} diff --git a/Asset Store/AssetStore/Program.cs b/Asset Store/AssetStore/Program.cs new file mode 100644 index 0000000..666a9c5 --- /dev/null +++ b/Asset Store/AssetStore/Program.cs @@ -0,0 +1,23 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi +builder.Services.AddOpenApi(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.MapOpenApi(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/Asset Store/AssetStore/Properties/launchSettings.json b/Asset Store/AssetStore/Properties/launchSettings.json new file mode 100644 index 0000000..4c87c24 --- /dev/null +++ b/Asset Store/AssetStore/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:5274", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "https://localhost:7215;http://localhost:5274", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Asset Store/AssetStore/WeatherForecast.cs b/Asset Store/AssetStore/WeatherForecast.cs new file mode 100644 index 0000000..9eaa789 --- /dev/null +++ b/Asset Store/AssetStore/WeatherForecast.cs @@ -0,0 +1,13 @@ +namespace AssetStore +{ + public class WeatherForecast + { + public DateOnly Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string? Summary { get; set; } + } +} diff --git a/Asset Store/AssetStore/appsettings.Development.json b/Asset Store/AssetStore/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Asset Store/AssetStore/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Asset Store/AssetStore/appsettings.json b/Asset Store/AssetStore/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Asset Store/AssetStore/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} From af2efb173ad91013bd979c36a2e08fc5045fb208 Mon Sep 17 00:00:00 2001 From: Antti Veikkolainen Date: Sat, 25 Oct 2025 22:58:56 +0300 Subject: [PATCH 3/4] #52 Initial databases --- .../AssetStore.Database.csproj | 17 ++++++ .../AssetStore.Database/DatabaseContext.cs | 17 ++++++ .../AssetStore.Database/Models/Asset.cs | 23 ++++++++ .../AssetStore.Database/Models/Comment.cs | 16 ++++++ Asset Store/AssetStore/AssetStore.csproj | 4 ++ Asset Store/AssetStore/AssetStore.slnx | 4 ++ .../AssetStore/Controllers/AssetController.cs | 57 +++++++++++++++++++ .../Controllers/CommentController.cs | 23 ++++++++ .../Controllers/WeatherForecastController.cs | 26 --------- Asset Store/AssetStore/WeatherForecast.cs | 13 ----- Engine/SharpEngine.Shared/AssetType.cs | 8 +++ .../Controllers/AchievementController.cs | 23 ++++++++ .../Controllers/UserController.cs | 23 ++++++++ Portal/Database/Portal.Backend/Database.http | 6 ++ .../Portal.Backend/Portal.Backend.csproj | 21 +++++++ Portal/Database/Portal.Backend/Program.cs | 23 ++++++++ .../Properties/launchSettings.json | 23 ++++++++ .../appsettings.Development.json | 8 +++ .../Database/Portal.Backend/appsettings.json | 9 +++ .../Portal.Database/DatabaseContext.cs | 18 ++++++ .../Portal.Database/Models/Achievement.cs | 9 +++ .../Database/Portal.Database/Models/User.cs | 10 ++++ .../Models/UserAchievements.cs | 9 +++ .../Portal.Database/Portal.Database.csproj | 17 ++++++ Portal/Database/Portal.slnx | 4 ++ 25 files changed, 372 insertions(+), 39 deletions(-) create mode 100644 Asset Store/AssetStore.Database/AssetStore.Database.csproj create mode 100644 Asset Store/AssetStore.Database/DatabaseContext.cs create mode 100644 Asset Store/AssetStore.Database/Models/Asset.cs create mode 100644 Asset Store/AssetStore.Database/Models/Comment.cs create mode 100644 Asset Store/AssetStore/Controllers/AssetController.cs create mode 100644 Asset Store/AssetStore/Controllers/CommentController.cs delete mode 100644 Asset Store/AssetStore/Controllers/WeatherForecastController.cs delete mode 100644 Asset Store/AssetStore/WeatherForecast.cs create mode 100644 Engine/SharpEngine.Shared/AssetType.cs create mode 100644 Portal/Database/Portal.Backend/Controllers/AchievementController.cs create mode 100644 Portal/Database/Portal.Backend/Controllers/UserController.cs create mode 100644 Portal/Database/Portal.Backend/Database.http create mode 100644 Portal/Database/Portal.Backend/Portal.Backend.csproj create mode 100644 Portal/Database/Portal.Backend/Program.cs create mode 100644 Portal/Database/Portal.Backend/Properties/launchSettings.json create mode 100644 Portal/Database/Portal.Backend/appsettings.Development.json create mode 100644 Portal/Database/Portal.Backend/appsettings.json create mode 100644 Portal/Database/Portal.Database/DatabaseContext.cs create mode 100644 Portal/Database/Portal.Database/Models/Achievement.cs create mode 100644 Portal/Database/Portal.Database/Models/User.cs create mode 100644 Portal/Database/Portal.Database/Models/UserAchievements.cs create mode 100644 Portal/Database/Portal.Database/Portal.Database.csproj create mode 100644 Portal/Database/Portal.slnx diff --git a/Asset Store/AssetStore.Database/AssetStore.Database.csproj b/Asset Store/AssetStore.Database/AssetStore.Database.csproj new file mode 100644 index 0000000..84b11b3 --- /dev/null +++ b/Asset Store/AssetStore.Database/AssetStore.Database.csproj @@ -0,0 +1,17 @@ + + + + net10.0 + enable + enable + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + diff --git a/Asset Store/AssetStore.Database/DatabaseContext.cs b/Asset Store/AssetStore.Database/DatabaseContext.cs new file mode 100644 index 0000000..b5c2de9 --- /dev/null +++ b/Asset Store/AssetStore.Database/DatabaseContext.cs @@ -0,0 +1,17 @@ +using AssetStore.Database.Models; +using Microsoft.EntityFrameworkCore; + +public class BloggingContext : DbContext +{ + public DbSet Assets { get; set; } + public DbSet Comments { get; set; } + + public BloggingContext() + { + } + + protected override void OnConfiguring(DbContextOptionsBuilder options) + { + + } +} \ No newline at end of file diff --git a/Asset Store/AssetStore.Database/Models/Asset.cs b/Asset Store/AssetStore.Database/Models/Asset.cs new file mode 100644 index 0000000..bdb0b28 --- /dev/null +++ b/Asset Store/AssetStore.Database/Models/Asset.cs @@ -0,0 +1,23 @@ +namespace AssetStore.Database.Models; + +public class Asset +{ + public Guid Id { get; set; } + public string Name { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; + public decimal Price { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime LastUpdatedAt { get; set; } + public IReadOnlyList Tags { get; set; } = []; + public IReadOnlyList Comments { get; set; } = []; + public Guid AuthorId { get; set; } + public bool Tombstoned { get; set; } + + // (e.g., model, texture, sound, etc.) + // public AssetType + + public required string BlobUri { get; set; } + public required string FileSize { get; set; } + + public required string Checksum { get; set; } +} \ No newline at end of file diff --git a/Asset Store/AssetStore.Database/Models/Comment.cs b/Asset Store/AssetStore.Database/Models/Comment.cs new file mode 100644 index 0000000..6a5e49b --- /dev/null +++ b/Asset Store/AssetStore.Database/Models/Comment.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace AssetStore.Database.Models; + +public class Comment +{ + public int Id { get; set; } + public Guid AssetId { get; set; } + public Guid UserId { get; set; } + public required string Content { get; set; } + public DateTime CreatedAt { get; set; } + public Comment? ParentComment { get; set; } + public IReadOnlyList Replies { get; set; } = []; +} diff --git a/Asset Store/AssetStore/AssetStore.csproj b/Asset Store/AssetStore/AssetStore.csproj index 11c94dc..79b90b4 100644 --- a/Asset Store/AssetStore/AssetStore.csproj +++ b/Asset Store/AssetStore/AssetStore.csproj @@ -10,4 +10,8 @@ + + + + diff --git a/Asset Store/AssetStore/AssetStore.slnx b/Asset Store/AssetStore/AssetStore.slnx index f2c75f6..52a9eaa 100644 --- a/Asset Store/AssetStore/AssetStore.slnx +++ b/Asset Store/AssetStore/AssetStore.slnx @@ -1,3 +1,7 @@ + + + + diff --git a/Asset Store/AssetStore/Controllers/AssetController.cs b/Asset Store/AssetStore/Controllers/AssetController.cs new file mode 100644 index 0000000..c3465c6 --- /dev/null +++ b/Asset Store/AssetStore/Controllers/AssetController.cs @@ -0,0 +1,57 @@ +using AssetStore.Database.Models; +using Microsoft.AspNetCore.Mvc; + +namespace AssetStore.Controllers +{ + [ApiController] + [Route("[controller]")] + public class AssetController : ControllerBase + { + private readonly ILogger _logger; + + public AssetController(ILogger logger) + { + _logger = logger; + } + + [HttpGet] + public IEnumerable GetAllAssets() + { + return new List(); + } + + [HttpGet] + public IEnumerable GetAllAssetsByKeyWord() + { + return new List(); + } + + [HttpGet] + public IEnumerable GetAllAssetsByAuthor() + { + return new List(); + } + + [HttpPost] + public Asset CreateAsset(Asset asset) + { + return asset; + } + + [HttpPut] + public Asset ReviseAsset(Asset asset) + { + // TODO: versioning logic + + // TODO: Replace existing with revised asset + return asset; + } + + [HttpDelete] + public bool DeleteAsset(Guid assetId) + { + + return true; + } + } +} diff --git a/Asset Store/AssetStore/Controllers/CommentController.cs b/Asset Store/AssetStore/Controllers/CommentController.cs new file mode 100644 index 0000000..f0294c3 --- /dev/null +++ b/Asset Store/AssetStore/Controllers/CommentController.cs @@ -0,0 +1,23 @@ +using AssetStore.Database.Models; +using Microsoft.AspNetCore.Mvc; + +namespace AssetStore.Controllers +{ + [ApiController] + [Route("[controller]")] + public class CommentController : ControllerBase + { + private readonly ILogger _logger; + + public CommentController(ILogger logger) + { + _logger = logger; + } + + [HttpGet] + public IEnumerable GetAssetComments(Guid assetId) + { + return new List(); + } + } +} diff --git a/Asset Store/AssetStore/Controllers/WeatherForecastController.cs b/Asset Store/AssetStore/Controllers/WeatherForecastController.cs deleted file mode 100644 index 48a6c00..0000000 --- a/Asset Store/AssetStore/Controllers/WeatherForecastController.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace AssetStore.Controllers -{ - [ApiController] - [Route("[controller]")] - public class WeatherForecastController : ControllerBase - { - private static readonly string[] Summaries = - [ - "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" - ]; - - [HttpGet(Name = "GetWeatherForecast")] - public IEnumerable Get() - { - return Enumerable.Range(1, 5).Select(index => new WeatherForecast - { - Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), - TemperatureC = Random.Shared.Next(-20, 55), - Summary = Summaries[Random.Shared.Next(Summaries.Length)] - }) - .ToArray(); - } - } -} diff --git a/Asset Store/AssetStore/WeatherForecast.cs b/Asset Store/AssetStore/WeatherForecast.cs deleted file mode 100644 index 9eaa789..0000000 --- a/Asset Store/AssetStore/WeatherForecast.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace AssetStore -{ - public class WeatherForecast - { - public DateOnly Date { get; set; } - - public int TemperatureC { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - - public string? Summary { get; set; } - } -} diff --git a/Engine/SharpEngine.Shared/AssetType.cs b/Engine/SharpEngine.Shared/AssetType.cs new file mode 100644 index 0000000..e460210 --- /dev/null +++ b/Engine/SharpEngine.Shared/AssetType.cs @@ -0,0 +1,8 @@ +namespace SharpEngine.Shared; + +public enum AssetType +{ + Shader, + Model, + Texture, +} diff --git a/Portal/Database/Portal.Backend/Controllers/AchievementController.cs b/Portal/Database/Portal.Backend/Controllers/AchievementController.cs new file mode 100644 index 0000000..40157d1 --- /dev/null +++ b/Portal/Database/Portal.Backend/Controllers/AchievementController.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Mvc; +using Portal.Database.Models; + +namespace Database.Controllers +{ + [ApiController] + [Route("[controller]")] + public class AchievementController : ControllerBase + { + private readonly ILogger _logger; + + public AchievementController(ILogger logger) + { + _logger = logger; + } + + [HttpGet] + public UserAchievements GetUserAchievements() + { + return new(); + } + } +} diff --git a/Portal/Database/Portal.Backend/Controllers/UserController.cs b/Portal/Database/Portal.Backend/Controllers/UserController.cs new file mode 100644 index 0000000..0e0be3f --- /dev/null +++ b/Portal/Database/Portal.Backend/Controllers/UserController.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Mvc; +using Portal.Database.Models; + +namespace Database.Controllers +{ + [ApiController] + [Route("[controller]")] + public class UserController : ControllerBase + { + private readonly ILogger _logger; + + public UserController(ILogger logger) + { + _logger = logger; + } + + [HttpGet] + public User Get() + { + return new(); + } + } +} diff --git a/Portal/Database/Portal.Backend/Database.http b/Portal/Database/Portal.Backend/Database.http new file mode 100644 index 0000000..7a874e2 --- /dev/null +++ b/Portal/Database/Portal.Backend/Database.http @@ -0,0 +1,6 @@ +@Database_HostAddress = http://localhost:5088 + +GET {{Database_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/Portal/Database/Portal.Backend/Portal.Backend.csproj b/Portal/Database/Portal.Backend/Portal.Backend.csproj new file mode 100644 index 0000000..d71ea0f --- /dev/null +++ b/Portal/Database/Portal.Backend/Portal.Backend.csproj @@ -0,0 +1,21 @@ + + + + net10.0 + enable + enable + + + + + + + + + + + + + + + diff --git a/Portal/Database/Portal.Backend/Program.cs b/Portal/Database/Portal.Backend/Program.cs new file mode 100644 index 0000000..666a9c5 --- /dev/null +++ b/Portal/Database/Portal.Backend/Program.cs @@ -0,0 +1,23 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi +builder.Services.AddOpenApi(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.MapOpenApi(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/Portal/Database/Portal.Backend/Properties/launchSettings.json b/Portal/Database/Portal.Backend/Properties/launchSettings.json new file mode 100644 index 0000000..20fd58f --- /dev/null +++ b/Portal/Database/Portal.Backend/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:5088", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "https://localhost:7063;http://localhost:5088", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Portal/Database/Portal.Backend/appsettings.Development.json b/Portal/Database/Portal.Backend/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Portal/Database/Portal.Backend/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Portal/Database/Portal.Backend/appsettings.json b/Portal/Database/Portal.Backend/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Portal/Database/Portal.Backend/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Portal/Database/Portal.Database/DatabaseContext.cs b/Portal/Database/Portal.Database/DatabaseContext.cs new file mode 100644 index 0000000..75bbecd --- /dev/null +++ b/Portal/Database/Portal.Database/DatabaseContext.cs @@ -0,0 +1,18 @@ +using Microsoft.EntityFrameworkCore; +using Portal.Database.Models; + +public class BloggingContext : DbContext +{ + public DbSet User { get; set; } + public DbSet Achievements { get; set; } + public DbSet UserAchievements { get; set; } + + public BloggingContext() + { + } + + protected override void OnConfiguring(DbContextOptionsBuilder options) + { + + } +} \ No newline at end of file diff --git a/Portal/Database/Portal.Database/Models/Achievement.cs b/Portal/Database/Portal.Database/Models/Achievement.cs new file mode 100644 index 0000000..b9aa35c --- /dev/null +++ b/Portal/Database/Portal.Database/Models/Achievement.cs @@ -0,0 +1,9 @@ +namespace Portal.Database.Models; + +public class Achievement +{ + public Guid Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public string IconUrl { get; set; } +} diff --git a/Portal/Database/Portal.Database/Models/User.cs b/Portal/Database/Portal.Database/Models/User.cs new file mode 100644 index 0000000..58e7876 --- /dev/null +++ b/Portal/Database/Portal.Database/Models/User.cs @@ -0,0 +1,10 @@ +namespace Portal.Database.Models; + +public class User +{ + public Guid Id { get; set; } + public string Username { get; set; } + public string Email { get; set; } + public string PasswordHash { get; set; } + public IReadOnlyList Achievements { get; set; } = []; +} diff --git a/Portal/Database/Portal.Database/Models/UserAchievements.cs b/Portal/Database/Portal.Database/Models/UserAchievements.cs new file mode 100644 index 0000000..160f939 --- /dev/null +++ b/Portal/Database/Portal.Database/Models/UserAchievements.cs @@ -0,0 +1,9 @@ +namespace Portal.Database.Models; + +public class UserAchievements +{ + public User User { get; set; } + public Achievement Achievement { get; set; } + public DateTime UnlockedAt { get; set; } + public int Progress { get; set; } +} diff --git a/Portal/Database/Portal.Database/Portal.Database.csproj b/Portal/Database/Portal.Database/Portal.Database.csproj new file mode 100644 index 0000000..1fbe411 --- /dev/null +++ b/Portal/Database/Portal.Database/Portal.Database.csproj @@ -0,0 +1,17 @@ + + + + net10.0 + enable + enable + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + diff --git a/Portal/Database/Portal.slnx b/Portal/Database/Portal.slnx new file mode 100644 index 0000000..e2b6f77 --- /dev/null +++ b/Portal/Database/Portal.slnx @@ -0,0 +1,4 @@ + + + + From 07c0a9ff275afd9d49ae8def01921a985563b848 Mon Sep 17 00:00:00 2001 From: Antti Veikkolainen Date: Mon, 27 Oct 2025 09:53:19 +0200 Subject: [PATCH 4/4] #52 Temp arch in place --- .../AssetStore.Database.csproj | 9 ++ .../AssetStore.Database/DatabaseContext.cs | 31 ++++++- .../AssetStore.Database/Models/Asset.cs | 31 +++++-- .../AssetStore.Database/Models/Comment.cs | 12 ++- Asset Store/AssetStore.slnx | 16 ++++ ...ssetStore.csproj => AssetStore.Api.csproj} | 4 + Asset Store/AssetStore/AssetStore.slnx | 7 -- .../AssetStore/Controllers/AssetController.cs | 83 ++++++++++++++--- .../Controllers/CommentController.cs | 7 ++ .../AssetStore/Services/Asset/AssetService.cs | 88 +++++++++++++++++++ .../Services/Asset/IAssetService.cs | 17 ++++ Asset Store/Directory.Build.props | 0 Asset Store/Readme.md | 0 .../AssetStore.Api.Tests.csproj | 9 ++ .../Controllers/AssetControllerTests.cs | 9 ++ .../Controllers/CommentControllerTests.cs | 9 ++ .../Services/AssetServiceTests.cs | 9 ++ .../Services/CommentServiceTests.cs | 9 ++ Asset Store/Tests/Directory.Build.props | 0 .../Clients/AssetStoreClient.cs | 12 +++ .../Clients/IAssetStoreClient.cs | 8 ++ .../SharpEngine.Rest/Clients/IPortalClient.cs | 5 ++ .../SharpEngine.Rest/Clients/PortalClient.cs | 12 +++ Engine/SharpEngine.Rest/Clients/RestClient.cs | 28 ++++++ .../SharpEngine.Rest/SharpEngine.Rest.csproj | 13 +++ Engine/SharpEngine.Rest/Urls/AssetStore.cs | 7 ++ Engine/SharpEngine.Rest/Urls/Portal.cs | 6 ++ .../Dto/AssetStore/AssetDto.cs | 33 +++++++ .../Dto/AssetStore/CommentDto.cs | 11 +++ .../Dto/Primitives/AssetId.cs | 8 ++ .../Dto/Primitives/CommentId.cs | 8 ++ .../Dto/Primitives/UserId.cs | 8 ++ Engine/SharpEngine.sln | 8 ++ .../Controllers/AchievementController.cs | 0 .../Controllers/UserController.cs | 0 .../Portal.Backend/Database.http | 0 .../Portal.Backend/Portal.Backend.csproj | 4 - .../{Database => }/Portal.Backend/Program.cs | 0 .../Properties/launchSettings.json | 0 .../Services/AchievementService.cs | 5 ++ .../appsettings.Development.json | 0 .../Portal.Backend/appsettings.json | 0 .../Portal.Database/DatabaseContext.cs | 0 .../Portal.Database/Models/Achievement.cs | 0 .../Portal.Database/Models/User.cs | 0 .../Models/UserAchievements.cs | 0 .../Portal.Database/Portal.Database.csproj | 0 Portal/Portal.Dto/Class1.cs | 6 ++ Portal/Portal.Dto/Portal.Dto.csproj | 9 ++ Portal/{Database => }/Portal.slnx | 3 + 50 files changed, 501 insertions(+), 43 deletions(-) create mode 100644 Asset Store/AssetStore.slnx rename Asset Store/AssetStore/{AssetStore.csproj => AssetStore.Api.csproj} (85%) delete mode 100644 Asset Store/AssetStore/AssetStore.slnx create mode 100644 Asset Store/AssetStore/Services/Asset/AssetService.cs create mode 100644 Asset Store/AssetStore/Services/Asset/IAssetService.cs create mode 100644 Asset Store/Directory.Build.props create mode 100644 Asset Store/Readme.md create mode 100644 Asset Store/Tests/AssetStore.API.Tests/AssetStore.Api.Tests.csproj create mode 100644 Asset Store/Tests/AssetStore.API.Tests/Controllers/AssetControllerTests.cs create mode 100644 Asset Store/Tests/AssetStore.API.Tests/Controllers/CommentControllerTests.cs create mode 100644 Asset Store/Tests/AssetStore.API.Tests/Services/AssetServiceTests.cs create mode 100644 Asset Store/Tests/AssetStore.API.Tests/Services/CommentServiceTests.cs create mode 100644 Asset Store/Tests/Directory.Build.props create mode 100644 Engine/SharpEngine.Rest/Clients/AssetStoreClient.cs create mode 100644 Engine/SharpEngine.Rest/Clients/IAssetStoreClient.cs create mode 100644 Engine/SharpEngine.Rest/Clients/IPortalClient.cs create mode 100644 Engine/SharpEngine.Rest/Clients/PortalClient.cs create mode 100644 Engine/SharpEngine.Rest/Clients/RestClient.cs create mode 100644 Engine/SharpEngine.Rest/SharpEngine.Rest.csproj create mode 100644 Engine/SharpEngine.Rest/Urls/AssetStore.cs create mode 100644 Engine/SharpEngine.Rest/Urls/Portal.cs create mode 100644 Engine/SharpEngine.Shared/Dto/AssetStore/AssetDto.cs create mode 100644 Engine/SharpEngine.Shared/Dto/AssetStore/CommentDto.cs create mode 100644 Engine/SharpEngine.Shared/Dto/Primitives/AssetId.cs create mode 100644 Engine/SharpEngine.Shared/Dto/Primitives/CommentId.cs create mode 100644 Engine/SharpEngine.Shared/Dto/Primitives/UserId.cs rename Portal/{Database => }/Portal.Backend/Controllers/AchievementController.cs (100%) rename Portal/{Database => }/Portal.Backend/Controllers/UserController.cs (100%) rename Portal/{Database => }/Portal.Backend/Database.http (100%) rename Portal/{Database => }/Portal.Backend/Portal.Backend.csproj (87%) rename Portal/{Database => }/Portal.Backend/Program.cs (100%) rename Portal/{Database => }/Portal.Backend/Properties/launchSettings.json (100%) create mode 100644 Portal/Portal.Backend/Services/AchievementService.cs rename Portal/{Database => }/Portal.Backend/appsettings.Development.json (100%) rename Portal/{Database => }/Portal.Backend/appsettings.json (100%) rename Portal/{Database => }/Portal.Database/DatabaseContext.cs (100%) rename Portal/{Database => }/Portal.Database/Models/Achievement.cs (100%) rename Portal/{Database => }/Portal.Database/Models/User.cs (100%) rename Portal/{Database => }/Portal.Database/Models/UserAchievements.cs (100%) rename Portal/{Database => }/Portal.Database/Portal.Database.csproj (100%) create mode 100644 Portal/Portal.Dto/Class1.cs create mode 100644 Portal/Portal.Dto/Portal.Dto.csproj rename Portal/{Database => }/Portal.slnx (61%) diff --git a/Asset Store/AssetStore.Database/AssetStore.Database.csproj b/Asset Store/AssetStore.Database/AssetStore.Database.csproj index 84b11b3..247bc9d 100644 --- a/Asset Store/AssetStore.Database/AssetStore.Database.csproj +++ b/Asset Store/AssetStore.Database/AssetStore.Database.csproj @@ -12,6 +12,15 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + diff --git a/Asset Store/AssetStore.Database/DatabaseContext.cs b/Asset Store/AssetStore.Database/DatabaseContext.cs index b5c2de9..344ae80 100644 --- a/Asset Store/AssetStore.Database/DatabaseContext.cs +++ b/Asset Store/AssetStore.Database/DatabaseContext.cs @@ -1,17 +1,44 @@ using AssetStore.Database.Models; using Microsoft.EntityFrameworkCore; +using SharpEngine.Shared.Dto.Primitives; -public class BloggingContext : DbContext +namespace AssetStore.Database; + +public class DatabaseContext : DbContext { public DbSet Assets { get; set; } public DbSet Comments { get; set; } - public BloggingContext() + public DatabaseContext() { } protected override void OnConfiguring(DbContextOptionsBuilder options) { + options.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFCoreExampleDB;Trusted_Connection=True;"); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.Entity(entity => + { + entity.HasMany(asset => asset.Comments); + + entity.Property(u => u.Id) + .HasConversion( + id => id.Value, + value => new AssetId(value)); + }); + + modelBuilder.Entity(entity => + { + entity.Property(u => u.Id) + .HasConversion( + id => id.Value, + value => new CommentId(value)); + }); } } \ No newline at end of file diff --git a/Asset Store/AssetStore.Database/Models/Asset.cs b/Asset Store/AssetStore.Database/Models/Asset.cs index bdb0b28..0ae9119 100644 --- a/Asset Store/AssetStore.Database/Models/Asset.cs +++ b/Asset Store/AssetStore.Database/Models/Asset.cs @@ -1,18 +1,21 @@ -namespace AssetStore.Database.Models; +using SharpEngine.Shared.Dto.AssetStore; +using SharpEngine.Shared.Dto.Primitives; + +namespace AssetStore.Database.Models; public class Asset { - public Guid Id { get; set; } - public string Name { get; set; } = string.Empty; + public AssetId Id { get; set; } + public required string Name { get; set; } public string Description { get; set; } = string.Empty; public decimal Price { get; set; } - public DateTime CreatedAt { get; set; } - public DateTime LastUpdatedAt { get; set; } - public IReadOnlyList Tags { get; set; } = []; + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; + public DateTime LastUpdatedAt { get; set; } = DateTime.UtcNow; + public IReadOnlyList KeyWords { get; set; } = []; public IReadOnlyList Comments { get; set; } = []; - public Guid AuthorId { get; set; } - public bool Tombstoned { get; set; } - + public UserId AuthorId { get; set; } + public bool Tombstoned { get; set; } = false; + public Version Version { get; set; } // (e.g., model, texture, sound, etc.) // public AssetType @@ -20,4 +23,14 @@ public class Asset public required string FileSize { get; set; } public required string Checksum { get; set; } + + public static explicit operator Asset(AssetDto dto) + { + throw new NotImplementedException(); + } + + public static explicit operator AssetDto(Asset? model) + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/Asset Store/AssetStore.Database/Models/Comment.cs b/Asset Store/AssetStore.Database/Models/Comment.cs index 6a5e49b..ef189ca 100644 --- a/Asset Store/AssetStore.Database/Models/Comment.cs +++ b/Asset Store/AssetStore.Database/Models/Comment.cs @@ -1,16 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Text; +using SharpEngine.Shared.Dto.Primitives; namespace AssetStore.Database.Models; public class Comment { - public int Id { get; set; } - public Guid AssetId { get; set; } - public Guid UserId { get; set; } + public CommentId Id { get; set; } + public AssetId AssetId { get; set; } + public UserId UserId { get; set; } public required string Content { get; set; } - public DateTime CreatedAt { get; set; } + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public Comment? ParentComment { get; set; } public IReadOnlyList Replies { get; set; } = []; } diff --git a/Asset Store/AssetStore.slnx b/Asset Store/AssetStore.slnx new file mode 100644 index 0000000..268f27a --- /dev/null +++ b/Asset Store/AssetStore.slnx @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Asset Store/AssetStore/AssetStore.csproj b/Asset Store/AssetStore/AssetStore.Api.csproj similarity index 85% rename from Asset Store/AssetStore/AssetStore.csproj rename to Asset Store/AssetStore/AssetStore.Api.csproj index 79b90b4..5fa94a2 100644 --- a/Asset Store/AssetStore/AssetStore.csproj +++ b/Asset Store/AssetStore/AssetStore.Api.csproj @@ -14,4 +14,8 @@ + + + + diff --git a/Asset Store/AssetStore/AssetStore.slnx b/Asset Store/AssetStore/AssetStore.slnx deleted file mode 100644 index 52a9eaa..0000000 --- a/Asset Store/AssetStore/AssetStore.slnx +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Asset Store/AssetStore/Controllers/AssetController.cs b/Asset Store/AssetStore/Controllers/AssetController.cs index c3465c6..4ea29c8 100644 --- a/Asset Store/AssetStore/Controllers/AssetController.cs +++ b/Asset Store/AssetStore/Controllers/AssetController.cs @@ -1,5 +1,7 @@ using AssetStore.Database.Models; +using AssetStore.Services.Asset; using Microsoft.AspNetCore.Mvc; +using SharpEngine.Shared.Dto.AssetStore; namespace AssetStore.Controllers { @@ -8,50 +10,103 @@ namespace AssetStore.Controllers public class AssetController : ControllerBase { private readonly ILogger _logger; + private readonly IAssetService _service; - public AssetController(ILogger logger) + public AssetController(ILogger logger, IAssetService service) { _logger = logger; + _service = service; } [HttpGet] - public IEnumerable GetAllAssets() + public ActionResult> GetAllAssets() { - return new List(); + _logger.LogDebug("Retrieving assets."); + + var assets = _service.GetAssets(); + _logger.LogDebug("Found {Count} assets.", assets.Count()); + + return StatusCode(StatusCodes.Status200OK, assets); } - [HttpGet] - public IEnumerable GetAllAssetsByKeyWord() + [HttpGet("{assetId}")] + public ActionResult GetById(Guid assetId) { - return new List(); + _logger.LogDebug("Retrieving asset with id '{assetId}'.", assetId); + var asset = _service.GetAsset(assetId); + + if (asset is null) + return StatusCode(StatusCodes.Status204NoContent, "Unable to find asset."); + + return StatusCode(StatusCodes.Status200OK, asset); } - [HttpGet] - public IEnumerable GetAllAssetsByAuthor() + [HttpGet("/keyword")] + public ActionResult> GetAllAssetsByKeyWord([FromBody] IReadOnlyList keywords) + { + var joinedKeyWords = string.Join(", ", keywords); + _logger.LogDebug("Retrieving assets for the given keywords: {KeyWords}.", joinedKeyWords); + + var assets = _service.GetAssets(keywords); + _logger.LogDebug("Found {Count} assets for the given keywords: {KeyWords}.", assets.Count(), joinedKeyWords); + + if (!assets.Any()) + return StatusCode(StatusCodes.Status204NoContent, $"Unable to find assets with keywords '{joinedKeyWords}'."); + + return StatusCode(StatusCodes.Status200OK, assets); + } + + [HttpGet("/author/{author}")] + public ActionResult> GetAllAssetsByAuthor(Guid authorId) { - return new List(); + _logger.LogDebug("Retrieving assets for author with id: '{Author}'.", authorId); + + var assets = _service.GetAssets(authorId); + _logger.LogDebug("Found {Count} assets for the given author: '{AuthorId}'.", assets.Count(), authorId); + + if (!assets.Any()) + return StatusCode(StatusCodes.Status204NoContent, $"Unable to find assets by author with id '{authorId}'."); + + return StatusCode(StatusCodes.Status200OK, assets); } [HttpPost] - public Asset CreateAsset(Asset asset) + public async Task> CreateAsset([FromBody] AssetDto asset) { - return asset; + _logger.LogDebug("Checking if asset already exists."); + if (asset.Id.Value != Guid.Empty) + { + _logger.LogDebug("Asset already exists."); + return ReviseAsset(asset); + } + + _logger.LogDebug("Creating asset '{Asset}'. Published by '{Author}'.", asset.Name, asset.AuthorId); + var result = await _service.CreateAsset(asset); + + _logger.LogDebug("Successfully created asset '{Asset}'. Published by '{Author}'.", asset.Name, asset.AuthorId); + return result; } [HttpPut] - public Asset ReviseAsset(Asset asset) + public AssetDto ReviseAsset([FromBody] AssetDto asset) { // TODO: versioning logic // TODO: Replace existing with revised asset + var result = _service.ReviseAsset(asset); + + _logger.LogDebug("Successfully revised asset '{Asset}'. Published by '{Author}'.", asset.Name, asset.AuthorId); return asset; } [HttpDelete] - public bool DeleteAsset(Guid assetId) + public async Task DeleteAsset(Guid assetId) { + bool removed = await _service.DeleteAsset(assetId); + if (!removed) + return StatusCode(StatusCodes.Status404NotFound); - return true; + return StatusCode(StatusCodes.Status200OK, "Asset successfully deleted."); } } } diff --git a/Asset Store/AssetStore/Controllers/CommentController.cs b/Asset Store/AssetStore/Controllers/CommentController.cs index f0294c3..ca4235c 100644 --- a/Asset Store/AssetStore/Controllers/CommentController.cs +++ b/Asset Store/AssetStore/Controllers/CommentController.cs @@ -1,5 +1,6 @@ using AssetStore.Database.Models; using Microsoft.AspNetCore.Mvc; +using SharpEngine.Shared.Dto.AssetStore; namespace AssetStore.Controllers { @@ -19,5 +20,11 @@ public IEnumerable GetAssetComments(Guid assetId) { return new List(); } + + [HttpPost] + public CommentDto PostComment(Guid assetId, CommentDto comment) + { + return new CommentDto(); + } } } diff --git a/Asset Store/AssetStore/Services/Asset/AssetService.cs b/Asset Store/AssetStore/Services/Asset/AssetService.cs new file mode 100644 index 0000000..a11c7e6 --- /dev/null +++ b/Asset Store/AssetStore/Services/Asset/AssetService.cs @@ -0,0 +1,88 @@ +using AssetStore.Database.Models; +using Microsoft.EntityFrameworkCore; +using SharpEngine.Shared.Dto.AssetStore; +using SharpEngine.Shared.Dto.Primitives; + +namespace AssetStore.Services.Asset; + +public class AssetService : IAssetService +{ + private readonly ILogger _logger; + private readonly Database.DatabaseContext _db; + + public AssetService(ILogger _logger, Database.DatabaseContext db) + { + _db = db; + } + + /// + /// + public async Task CreateAsset(AssetDto asset) + { + _logger.LogDebug("Creating asset."); + + var model = (Asset)asset; + await _db.Assets.AddAsync(model); + await _db.SaveChangesAsync(); + + return asset; + } + + /// + public async Task DeleteAsset(AssetId assetId) + { + var asset = await _db.Assets.FirstOrDefaultAsync(asset => asset.Id.Value == assetId.Value); + if (asset is null) + return false; + + _db.Assets.Remove(asset); + await _db.SaveChangesAsync(); + + return true; + } + + /// + public async Task GetAsset(AssetId assetId) + { + var asset = await _db.Assets.FirstOrDefaultAsync(asset => asset.Id.Value == assetId.Value); + return (AssetDto?)asset; + } + + /// + public IEnumerable GetAssets() + { + var assets = _db.Assets.AsNoTracking().Select(asset => (AssetDto)asset); + return assets; + } + + /// + public IEnumerable GetAssets(IReadOnlyList keywords) + { + var assets = _db.Assets.AsNoTracking() + .Where(asset => asset.KeyWords.Any(keyword => keywords.Contains(keyword))) + .Select(asset => (AssetDto)asset); + + return assets; + } + + /// + public IEnumerable GetAssets(UserId authorId) + { + var assets = _db.Assets.AsNoTracking() + .Where(asset => asset.AuthorId.Value == authorId.Value) + .Select(asset => (AssetDto)asset); + + return assets; + } + + /// + public AssetDto GetByChecksum(string checksum) => throw new NotImplementedException(); + + /// + public AssetDto ReviseAsset(AssetDto asset) + { + asset.Version = new Version(asset.Version.Major, asset.Version.Minor + 1); + + throw new NotImplementedException(); + } +} diff --git a/Asset Store/AssetStore/Services/Asset/IAssetService.cs b/Asset Store/AssetStore/Services/Asset/IAssetService.cs new file mode 100644 index 0000000..ad4df4c --- /dev/null +++ b/Asset Store/AssetStore/Services/Asset/IAssetService.cs @@ -0,0 +1,17 @@ +using AssetStore.Database.Models; +using SharpEngine.Shared.Dto.AssetStore; +using SharpEngine.Shared.Dto.Primitives; + +namespace AssetStore.Services.Asset; + +public interface IAssetService +{ + Task CreateAsset(AssetDto asset); + Task DeleteAsset(AssetId assetId); + Task GetAsset(AssetId assetId); + IEnumerable GetAssets(); + IEnumerable GetAssets(IReadOnlyList keywords); + IEnumerable GetAssets(UserId authorId); + AssetDto GetByChecksum(string checksum); + AssetDto ReviseAsset(AssetDto asset); +} \ No newline at end of file diff --git a/Asset Store/Directory.Build.props b/Asset Store/Directory.Build.props new file mode 100644 index 0000000..e69de29 diff --git a/Asset Store/Readme.md b/Asset Store/Readme.md new file mode 100644 index 0000000..e69de29 diff --git a/Asset Store/Tests/AssetStore.API.Tests/AssetStore.Api.Tests.csproj b/Asset Store/Tests/AssetStore.API.Tests/AssetStore.Api.Tests.csproj new file mode 100644 index 0000000..b760144 --- /dev/null +++ b/Asset Store/Tests/AssetStore.API.Tests/AssetStore.Api.Tests.csproj @@ -0,0 +1,9 @@ + + + + net10.0 + enable + enable + + + diff --git a/Asset Store/Tests/AssetStore.API.Tests/Controllers/AssetControllerTests.cs b/Asset Store/Tests/AssetStore.API.Tests/Controllers/AssetControllerTests.cs new file mode 100644 index 0000000..48fe198 --- /dev/null +++ b/Asset Store/Tests/AssetStore.API.Tests/Controllers/AssetControllerTests.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace AssetStore.Api.Tests.Controllers; + +internal class AssetControllerTests +{ +} diff --git a/Asset Store/Tests/AssetStore.API.Tests/Controllers/CommentControllerTests.cs b/Asset Store/Tests/AssetStore.API.Tests/Controllers/CommentControllerTests.cs new file mode 100644 index 0000000..1180378 --- /dev/null +++ b/Asset Store/Tests/AssetStore.API.Tests/Controllers/CommentControllerTests.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace AssetStore.Api.Tests.Controllers; + +internal class CommentControllerTests +{ +} diff --git a/Asset Store/Tests/AssetStore.API.Tests/Services/AssetServiceTests.cs b/Asset Store/Tests/AssetStore.API.Tests/Services/AssetServiceTests.cs new file mode 100644 index 0000000..44d8123 --- /dev/null +++ b/Asset Store/Tests/AssetStore.API.Tests/Services/AssetServiceTests.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace AssetStore.Api.Tests.Services; + +internal class AssetServiceTests +{ +} diff --git a/Asset Store/Tests/AssetStore.API.Tests/Services/CommentServiceTests.cs b/Asset Store/Tests/AssetStore.API.Tests/Services/CommentServiceTests.cs new file mode 100644 index 0000000..93698f0 --- /dev/null +++ b/Asset Store/Tests/AssetStore.API.Tests/Services/CommentServiceTests.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace AssetStore.Api.Tests.Services; + +internal class CommentServiceTests +{ +} diff --git a/Asset Store/Tests/Directory.Build.props b/Asset Store/Tests/Directory.Build.props new file mode 100644 index 0000000..e69de29 diff --git a/Engine/SharpEngine.Rest/Clients/AssetStoreClient.cs b/Engine/SharpEngine.Rest/Clients/AssetStoreClient.cs new file mode 100644 index 0000000..e209d12 --- /dev/null +++ b/Engine/SharpEngine.Rest/Clients/AssetStoreClient.cs @@ -0,0 +1,12 @@ +using SharpEngine.Rest.Urls; +using SharpEngine.Shared.Dto.AssetStore; + +namespace SharpEngine.Rest.Clients; + +public class AssetStoreClient : RestClient, IAssetStoreClient +{ + public AssetStoreClient(HttpClient httpClient) : base(httpClient) { } + + public async Task GetAssetAsync(Guid assetId) + => await GetAsync(AssetStore.GetById(assetId)); +} diff --git a/Engine/SharpEngine.Rest/Clients/IAssetStoreClient.cs b/Engine/SharpEngine.Rest/Clients/IAssetStoreClient.cs new file mode 100644 index 0000000..b99147a --- /dev/null +++ b/Engine/SharpEngine.Rest/Clients/IAssetStoreClient.cs @@ -0,0 +1,8 @@ +using SharpEngine.Shared.Dto.AssetStore; + +namespace SharpEngine.Rest.Clients; + +public interface IAssetStoreClient +{ + Task GetAssetAsync(Guid assetId); +} diff --git a/Engine/SharpEngine.Rest/Clients/IPortalClient.cs b/Engine/SharpEngine.Rest/Clients/IPortalClient.cs new file mode 100644 index 0000000..55de6a5 --- /dev/null +++ b/Engine/SharpEngine.Rest/Clients/IPortalClient.cs @@ -0,0 +1,5 @@ +namespace SharpEngine.Rest.Clients; + +internal interface IPortalClient +{ +} \ No newline at end of file diff --git a/Engine/SharpEngine.Rest/Clients/PortalClient.cs b/Engine/SharpEngine.Rest/Clients/PortalClient.cs new file mode 100644 index 0000000..f8213f6 --- /dev/null +++ b/Engine/SharpEngine.Rest/Clients/PortalClient.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SharpEngine.Rest.Clients; + +internal class PortalClient : RestClient, IPortalClient +{ + public PortalClient(HttpClient httpClient) : base(httpClient) { } +} diff --git a/Engine/SharpEngine.Rest/Clients/RestClient.cs b/Engine/SharpEngine.Rest/Clients/RestClient.cs new file mode 100644 index 0000000..3e96916 --- /dev/null +++ b/Engine/SharpEngine.Rest/Clients/RestClient.cs @@ -0,0 +1,28 @@ +using SharpEngine.Rest.Urls; +using System.Diagnostics; +using System.Text.Json; + +namespace SharpEngine.Rest.Clients; + +public abstract class RestClient +{ + private readonly HttpClient _httpClient; + public RestClient(HttpClient httpClient) + { + _httpClient = httpClient; + _httpClient.BaseAddress = new Uri(AssetStore.BaseUrl); + } + + public async Task GetAsync(string url) + { + var response = await _httpClient.GetAsync(url); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + + var result = JsonSerializer.Deserialize(json); + Debug.Assert(result is not null, "Deserialized result is null."); + + return result; + } +} diff --git a/Engine/SharpEngine.Rest/SharpEngine.Rest.csproj b/Engine/SharpEngine.Rest/SharpEngine.Rest.csproj new file mode 100644 index 0000000..d6ab7f9 --- /dev/null +++ b/Engine/SharpEngine.Rest/SharpEngine.Rest.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/Engine/SharpEngine.Rest/Urls/AssetStore.cs b/Engine/SharpEngine.Rest/Urls/AssetStore.cs new file mode 100644 index 0000000..e369a96 --- /dev/null +++ b/Engine/SharpEngine.Rest/Urls/AssetStore.cs @@ -0,0 +1,7 @@ +namespace SharpEngine.Rest.Urls; + +public static class AssetStore +{ + public const string BaseUrl = "https://assetstore.sharpengine.com/"; + public static string GetById(Guid assetId) => $"assets/{assetId}"; +} diff --git a/Engine/SharpEngine.Rest/Urls/Portal.cs b/Engine/SharpEngine.Rest/Urls/Portal.cs new file mode 100644 index 0000000..749348f --- /dev/null +++ b/Engine/SharpEngine.Rest/Urls/Portal.cs @@ -0,0 +1,6 @@ +namespace SharpEngine.Rest.Urls; + +public static class Portal +{ + public const string BaseUrl = "https://portal.sharpengine.com/"; +} diff --git a/Engine/SharpEngine.Shared/Dto/AssetStore/AssetDto.cs b/Engine/SharpEngine.Shared/Dto/AssetStore/AssetDto.cs new file mode 100644 index 0000000..1acf076 --- /dev/null +++ b/Engine/SharpEngine.Shared/Dto/AssetStore/AssetDto.cs @@ -0,0 +1,33 @@ +using SharpEngine.Shared.Dto.Primitives; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace SharpEngine.Shared.Dto.AssetStore; + +public class AssetDto +{ + public AssetId Id { get; init; } + public string Name { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; + public decimal Price { get; set; } + public DateTime CreatedAt { get; init; } + public DateTime LastUpdatedAt { get; init; } + public IReadOnlyList Tags { get; set; } = []; + public IReadOnlyList Comments { get; set; } = []; + public UserId AuthorId { get; init; } + public bool Tombstoned { get; set; } + public Version Version { get; set; } + + + // (e.g., model, texture, sound, etc.) + // public AssetType + + public required string BlobUri { get; set; } + public required string FileSize { get; set; } + + public required string Checksum { get; set; } +} diff --git a/Engine/SharpEngine.Shared/Dto/AssetStore/CommentDto.cs b/Engine/SharpEngine.Shared/Dto/AssetStore/CommentDto.cs new file mode 100644 index 0000000..053abeb --- /dev/null +++ b/Engine/SharpEngine.Shared/Dto/AssetStore/CommentDto.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SharpEngine.Shared.Dto.AssetStore; + +public class CommentDto +{ +} diff --git a/Engine/SharpEngine.Shared/Dto/Primitives/AssetId.cs b/Engine/SharpEngine.Shared/Dto/Primitives/AssetId.cs new file mode 100644 index 0000000..eada9db --- /dev/null +++ b/Engine/SharpEngine.Shared/Dto/Primitives/AssetId.cs @@ -0,0 +1,8 @@ +namespace SharpEngine.Shared.Dto.Primitives; + +public readonly record struct AssetId(Guid Value) +{ + public static AssetId New() => new(Guid.NewGuid()); + public static implicit operator Guid(AssetId id) => id.Value; + public static implicit operator AssetId(Guid value) => new(value); +} diff --git a/Engine/SharpEngine.Shared/Dto/Primitives/CommentId.cs b/Engine/SharpEngine.Shared/Dto/Primitives/CommentId.cs new file mode 100644 index 0000000..1ec8ef4 --- /dev/null +++ b/Engine/SharpEngine.Shared/Dto/Primitives/CommentId.cs @@ -0,0 +1,8 @@ +namespace SharpEngine.Shared.Dto.Primitives; + +public readonly record struct CommentId(Guid Value) +{ + public static CommentId New() => new(Guid.NewGuid()); + public static implicit operator Guid(CommentId id) => id.Value; + public static implicit operator CommentId(Guid value) => new(value); +} diff --git a/Engine/SharpEngine.Shared/Dto/Primitives/UserId.cs b/Engine/SharpEngine.Shared/Dto/Primitives/UserId.cs new file mode 100644 index 0000000..d0fb0c2 --- /dev/null +++ b/Engine/SharpEngine.Shared/Dto/Primitives/UserId.cs @@ -0,0 +1,8 @@ +namespace SharpEngine.Shared.Dto.Primitives; + +public readonly record struct UserId(Guid Value) +{ + public static UserId New() => new(Guid.NewGuid()); + public static implicit operator Guid(UserId id) => id.Value; + public static implicit operator UserId(Guid value) => new(value); +} diff --git a/Engine/SharpEngine.sln b/Engine/SharpEngine.sln index 1d5f3a5..c51bee3 100644 --- a/Engine/SharpEngine.sln +++ b/Engine/SharpEngine.sln @@ -47,6 +47,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ObjLoader.Tests", "Tests\Ob EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tutorial 4.1 - Model Loading", "Examples\Tutorial 4.1 - Model Loading\Tutorial 4.1 - Model Loading.csproj", "{17243B7C-E72B-6C26-FCFC-3D194F29B0AF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpEngine.Rest", "SharpEngine.Rest\SharpEngine.Rest.csproj", "{FE7C7460-6599-4BF8-A756-0C04315D3144}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -147,6 +149,12 @@ Global {17243B7C-E72B-6C26-FCFC-3D194F29B0AF}.LauncherNonWindows|Any CPU.Build.0 = Release|Any CPU {17243B7C-E72B-6C26-FCFC-3D194F29B0AF}.Release|Any CPU.ActiveCfg = Release|Any CPU {17243B7C-E72B-6C26-FCFC-3D194F29B0AF}.Release|Any CPU.Build.0 = Release|Any CPU + {FE7C7460-6599-4BF8-A756-0C04315D3144}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE7C7460-6599-4BF8-A756-0C04315D3144}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE7C7460-6599-4BF8-A756-0C04315D3144}.LauncherNonWindows|Any CPU.ActiveCfg = Release|Any CPU + {FE7C7460-6599-4BF8-A756-0C04315D3144}.LauncherNonWindows|Any CPU.Build.0 = Release|Any CPU + {FE7C7460-6599-4BF8-A756-0C04315D3144}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FE7C7460-6599-4BF8-A756-0C04315D3144}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Portal/Database/Portal.Backend/Controllers/AchievementController.cs b/Portal/Portal.Backend/Controllers/AchievementController.cs similarity index 100% rename from Portal/Database/Portal.Backend/Controllers/AchievementController.cs rename to Portal/Portal.Backend/Controllers/AchievementController.cs diff --git a/Portal/Database/Portal.Backend/Controllers/UserController.cs b/Portal/Portal.Backend/Controllers/UserController.cs similarity index 100% rename from Portal/Database/Portal.Backend/Controllers/UserController.cs rename to Portal/Portal.Backend/Controllers/UserController.cs diff --git a/Portal/Database/Portal.Backend/Database.http b/Portal/Portal.Backend/Database.http similarity index 100% rename from Portal/Database/Portal.Backend/Database.http rename to Portal/Portal.Backend/Database.http diff --git a/Portal/Database/Portal.Backend/Portal.Backend.csproj b/Portal/Portal.Backend/Portal.Backend.csproj similarity index 87% rename from Portal/Database/Portal.Backend/Portal.Backend.csproj rename to Portal/Portal.Backend/Portal.Backend.csproj index d71ea0f..cde64ec 100644 --- a/Portal/Database/Portal.Backend/Portal.Backend.csproj +++ b/Portal/Portal.Backend/Portal.Backend.csproj @@ -14,8 +14,4 @@ - - - - diff --git a/Portal/Database/Portal.Backend/Program.cs b/Portal/Portal.Backend/Program.cs similarity index 100% rename from Portal/Database/Portal.Backend/Program.cs rename to Portal/Portal.Backend/Program.cs diff --git a/Portal/Database/Portal.Backend/Properties/launchSettings.json b/Portal/Portal.Backend/Properties/launchSettings.json similarity index 100% rename from Portal/Database/Portal.Backend/Properties/launchSettings.json rename to Portal/Portal.Backend/Properties/launchSettings.json diff --git a/Portal/Portal.Backend/Services/AchievementService.cs b/Portal/Portal.Backend/Services/AchievementService.cs new file mode 100644 index 0000000..37a7309 --- /dev/null +++ b/Portal/Portal.Backend/Services/AchievementService.cs @@ -0,0 +1,5 @@ +namespace Portal.Backend.Services; + +public class AchievementService +{ +} diff --git a/Portal/Database/Portal.Backend/appsettings.Development.json b/Portal/Portal.Backend/appsettings.Development.json similarity index 100% rename from Portal/Database/Portal.Backend/appsettings.Development.json rename to Portal/Portal.Backend/appsettings.Development.json diff --git a/Portal/Database/Portal.Backend/appsettings.json b/Portal/Portal.Backend/appsettings.json similarity index 100% rename from Portal/Database/Portal.Backend/appsettings.json rename to Portal/Portal.Backend/appsettings.json diff --git a/Portal/Database/Portal.Database/DatabaseContext.cs b/Portal/Portal.Database/DatabaseContext.cs similarity index 100% rename from Portal/Database/Portal.Database/DatabaseContext.cs rename to Portal/Portal.Database/DatabaseContext.cs diff --git a/Portal/Database/Portal.Database/Models/Achievement.cs b/Portal/Portal.Database/Models/Achievement.cs similarity index 100% rename from Portal/Database/Portal.Database/Models/Achievement.cs rename to Portal/Portal.Database/Models/Achievement.cs diff --git a/Portal/Database/Portal.Database/Models/User.cs b/Portal/Portal.Database/Models/User.cs similarity index 100% rename from Portal/Database/Portal.Database/Models/User.cs rename to Portal/Portal.Database/Models/User.cs diff --git a/Portal/Database/Portal.Database/Models/UserAchievements.cs b/Portal/Portal.Database/Models/UserAchievements.cs similarity index 100% rename from Portal/Database/Portal.Database/Models/UserAchievements.cs rename to Portal/Portal.Database/Models/UserAchievements.cs diff --git a/Portal/Database/Portal.Database/Portal.Database.csproj b/Portal/Portal.Database/Portal.Database.csproj similarity index 100% rename from Portal/Database/Portal.Database/Portal.Database.csproj rename to Portal/Portal.Database/Portal.Database.csproj diff --git a/Portal/Portal.Dto/Class1.cs b/Portal/Portal.Dto/Class1.cs new file mode 100644 index 0000000..b3f360e --- /dev/null +++ b/Portal/Portal.Dto/Class1.cs @@ -0,0 +1,6 @@ +namespace Portal.Dto; + +public class Class1 +{ + +} diff --git a/Portal/Portal.Dto/Portal.Dto.csproj b/Portal/Portal.Dto/Portal.Dto.csproj new file mode 100644 index 0000000..b760144 --- /dev/null +++ b/Portal/Portal.Dto/Portal.Dto.csproj @@ -0,0 +1,9 @@ + + + + net10.0 + enable + enable + + + diff --git a/Portal/Database/Portal.slnx b/Portal/Portal.slnx similarity index 61% rename from Portal/Database/Portal.slnx rename to Portal/Portal.slnx index e2b6f77..48b5f58 100644 --- a/Portal/Database/Portal.slnx +++ b/Portal/Portal.slnx @@ -1,4 +1,7 @@ + + +