diff --git a/Asset Store/AssetStore.Database/AssetStore.Database.csproj b/Asset Store/AssetStore.Database/AssetStore.Database.csproj new file mode 100644 index 0000000..247bc9d --- /dev/null +++ b/Asset Store/AssetStore.Database/AssetStore.Database.csproj @@ -0,0 +1,26 @@ + + + + net10.0 + enable + enable + + + + + + 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 new file mode 100644 index 0000000..344ae80 --- /dev/null +++ b/Asset Store/AssetStore.Database/DatabaseContext.cs @@ -0,0 +1,44 @@ +using AssetStore.Database.Models; +using Microsoft.EntityFrameworkCore; +using SharpEngine.Shared.Dto.Primitives; + +namespace AssetStore.Database; + +public class DatabaseContext : DbContext +{ + public DbSet Assets { get; set; } + public DbSet Comments { get; set; } + + 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 new file mode 100644 index 0000000..0ae9119 --- /dev/null +++ b/Asset Store/AssetStore.Database/Models/Asset.cs @@ -0,0 +1,36 @@ +using SharpEngine.Shared.Dto.AssetStore; +using SharpEngine.Shared.Dto.Primitives; + +namespace AssetStore.Database.Models; + +public class Asset +{ + 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; } = DateTime.UtcNow; + public DateTime LastUpdatedAt { get; set; } = DateTime.UtcNow; + public IReadOnlyList KeyWords { get; set; } = []; + public IReadOnlyList Comments { 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 + + public required string BlobUri { get; set; } + 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 new file mode 100644 index 0000000..ef189ca --- /dev/null +++ b/Asset Store/AssetStore.Database/Models/Comment.cs @@ -0,0 +1,14 @@ +using SharpEngine.Shared.Dto.Primitives; + +namespace AssetStore.Database.Models; + +public class Comment +{ + 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; } = 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.Api.csproj b/Asset Store/AssetStore/AssetStore.Api.csproj new file mode 100644 index 0000000..5fa94a2 --- /dev/null +++ b/Asset Store/AssetStore/AssetStore.Api.csproj @@ -0,0 +1,21 @@ + + + + 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/Controllers/AssetController.cs b/Asset Store/AssetStore/Controllers/AssetController.cs new file mode 100644 index 0000000..4ea29c8 --- /dev/null +++ b/Asset Store/AssetStore/Controllers/AssetController.cs @@ -0,0 +1,112 @@ +using AssetStore.Database.Models; +using AssetStore.Services.Asset; +using Microsoft.AspNetCore.Mvc; +using SharpEngine.Shared.Dto.AssetStore; + +namespace AssetStore.Controllers +{ + [ApiController] + [Route("[controller]")] + public class AssetController : ControllerBase + { + private readonly ILogger _logger; + private readonly IAssetService _service; + + public AssetController(ILogger logger, IAssetService service) + { + _logger = logger; + _service = service; + } + + [HttpGet] + public ActionResult> GetAllAssets() + { + _logger.LogDebug("Retrieving assets."); + + var assets = _service.GetAssets(); + _logger.LogDebug("Found {Count} assets.", assets.Count()); + + return StatusCode(StatusCodes.Status200OK, assets); + } + + [HttpGet("{assetId}")] + public ActionResult GetById(Guid assetId) + { + _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("/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) + { + _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 async Task> CreateAsset([FromBody] AssetDto 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 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 async Task DeleteAsset(Guid assetId) + { + bool removed = await _service.DeleteAsset(assetId); + if (!removed) + return StatusCode(StatusCodes.Status404NotFound); + + return StatusCode(StatusCodes.Status200OK, "Asset successfully deleted."); + } + } +} diff --git a/Asset Store/AssetStore/Controllers/CommentController.cs b/Asset Store/AssetStore/Controllers/CommentController.cs new file mode 100644 index 0000000..ca4235c --- /dev/null +++ b/Asset Store/AssetStore/Controllers/CommentController.cs @@ -0,0 +1,30 @@ +using AssetStore.Database.Models; +using Microsoft.AspNetCore.Mvc; +using SharpEngine.Shared.Dto.AssetStore; + +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(); + } + + [HttpPost] + public CommentDto PostComment(Guid assetId, CommentDto comment) + { + return new CommentDto(); + } + } +} 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/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/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": "*" +} 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/.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/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/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/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/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/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 94% rename from SharpEngine.sln rename to Engine/SharpEngine.sln index 1d5f3a5..c51bee3 100644 --- a/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/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 diff --git a/Portal/Portal.Backend/Controllers/AchievementController.cs b/Portal/Portal.Backend/Controllers/AchievementController.cs new file mode 100644 index 0000000..40157d1 --- /dev/null +++ b/Portal/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/Portal.Backend/Controllers/UserController.cs b/Portal/Portal.Backend/Controllers/UserController.cs new file mode 100644 index 0000000..0e0be3f --- /dev/null +++ b/Portal/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/Portal.Backend/Database.http b/Portal/Portal.Backend/Database.http new file mode 100644 index 0000000..7a874e2 --- /dev/null +++ b/Portal/Portal.Backend/Database.http @@ -0,0 +1,6 @@ +@Database_HostAddress = http://localhost:5088 + +GET {{Database_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/Portal/Portal.Backend/Portal.Backend.csproj b/Portal/Portal.Backend/Portal.Backend.csproj new file mode 100644 index 0000000..cde64ec --- /dev/null +++ b/Portal/Portal.Backend/Portal.Backend.csproj @@ -0,0 +1,17 @@ + + + + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Portal/Portal.Backend/Program.cs b/Portal/Portal.Backend/Program.cs new file mode 100644 index 0000000..666a9c5 --- /dev/null +++ b/Portal/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/Portal.Backend/Properties/launchSettings.json b/Portal/Portal.Backend/Properties/launchSettings.json new file mode 100644 index 0000000..20fd58f --- /dev/null +++ b/Portal/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/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/Portal.Backend/appsettings.Development.json b/Portal/Portal.Backend/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Portal/Portal.Backend/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Portal/Portal.Backend/appsettings.json b/Portal/Portal.Backend/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Portal/Portal.Backend/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Portal/Portal.Database/DatabaseContext.cs b/Portal/Portal.Database/DatabaseContext.cs new file mode 100644 index 0000000..75bbecd --- /dev/null +++ b/Portal/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/Portal.Database/Models/Achievement.cs b/Portal/Portal.Database/Models/Achievement.cs new file mode 100644 index 0000000..b9aa35c --- /dev/null +++ b/Portal/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/Portal.Database/Models/User.cs b/Portal/Portal.Database/Models/User.cs new file mode 100644 index 0000000..58e7876 --- /dev/null +++ b/Portal/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/Portal.Database/Models/UserAchievements.cs b/Portal/Portal.Database/Models/UserAchievements.cs new file mode 100644 index 0000000..160f939 --- /dev/null +++ b/Portal/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/Portal.Database/Portal.Database.csproj b/Portal/Portal.Database/Portal.Database.csproj new file mode 100644 index 0000000..1fbe411 --- /dev/null +++ b/Portal/Portal.Database/Portal.Database.csproj @@ -0,0 +1,17 @@ + + + + net10.0 + enable + enable + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + 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/Portal.slnx b/Portal/Portal.slnx new file mode 100644 index 0000000..48b5f58 --- /dev/null +++ b/Portal/Portal.slnx @@ -0,0 +1,7 @@ + + + + + + +