diff --git a/NuakeNet/src/Entity.cs b/NuakeNet/src/Entity.cs index f8b06dbc..ca0b94a6 100644 --- a/NuakeNet/src/Entity.cs +++ b/NuakeNet/src/Entity.cs @@ -23,6 +23,7 @@ namespace Nuake.Net public class Entity { internal static unsafe delegate* EntityHasComponentIcall; + internal static unsafe delegate* EntityAddComponentIcall; internal static unsafe delegate* EntityHasManagedInstanceIcall; internal static unsafe delegate* EntityGetEntityIcall; internal static unsafe delegate* EntityGetNameIcall; @@ -207,6 +208,20 @@ namespace Nuake.Net return false; } + public T? AddComponent() where T : IComponent + { + if(HasComponent()) + { + return (T?)Activator.CreateInstance(typeof(T), ECSHandle); + } + + unsafe + { + EntityAddComponentIcall(ECSHandle, (int)MappingTypeEnum[typeof(T)]); + return (T?)Activator.CreateInstance(typeof(T), ECSHandle); + }; + } + public T? GetComponent() where T : IComponent { if (HasComponent()) diff --git a/premake5.lua b/premake5.lua index 8c898124..df882a9a 100644 --- a/premake5.lua +++ b/premake5.lua @@ -356,11 +356,13 @@ project "NuakeRuntime" project "Editor" location "Editor" + targetname ("Nuake Engine") kind "ConsoleApp" language "C++" cppdialect "C++20" staticruntime "On" + dependson { "NuakeNet" } targetdir ("bin/" .. outputdir .. "/%{prj.name}") objdir ("bin-int/" .. outputdir .. "/%{prj.name}") debugdir ("%{prj.name}")