Cleanup + Attach scripts

This commit is contained in:
Simon Lübeß
2022-04-27 13:00:55 +02:00
parent e51fc77c3f
commit 2bac6a8d05
9 changed files with 167 additions and 136 deletions
+17 -5
View File
@@ -291,13 +291,20 @@ namespace GlitchyEngine.World
struct DotNetScriptComponent : IDisposableComponent
{
public void* InstanceHandlePtr = null;
public struct Instance : int {}
public Instance InstanceHandlePtr = 0;
private String TypeName = null;
typealias CreateInstanceDelegate = function void*(void* typeNamePtr, int32 typeNameLength, EcsEntity entity);
typealias CreateInstanceDelegate = function Instance(void* typeNamePtr, int32 typeNameLength, EcsEntity entity);
typealias InstanceDelegate = function void(Instance instance);
public static CreateInstanceDelegate DelCreateInstance;
public static CreateInstanceDelegate CreateInstanceFn;
public static InstanceDelegate UpdateInstanceFn;
public static InstanceDelegate DestroyInstanceFn;
public const Self ss = Self();
public void Bind(StringView dotNetAssemblyQualifiedTypeName) mut
{
@@ -306,12 +313,17 @@ namespace GlitchyEngine.World
internal void CreateInstance(EcsEntity entity) mut
{
//IntPtr CreateInstance(IntPtr typeNamePtr, int typeNameLength, EcsEntity entity)
InstanceHandlePtr = DelCreateInstance(TypeName.Ptr, (int32)TypeName.Length, entity);
InstanceHandlePtr = CreateInstanceFn(TypeName.Ptr, (int32)TypeName.Length, entity);
}
internal void UpdateInstance()
{
UpdateInstanceFn(InstanceHandlePtr);
}
internal void DestroyInstance()
{
DestroyInstanceFn(InstanceHandlePtr);
}
public void Dispose() mut
+6 -1
View File
@@ -28,6 +28,11 @@ namespace GlitchyEngine.World
cameraComponent.Camera.SetViewportSize(e.Scene.ViewportWidth, e.Scene.ViewportHeight);
});
Entity dotNetEntity = CreateEntity("DotNet rocks!");
dotNetEntity.AddComponent<SpriterRendererComponent>(.(Color(81, 43, 212)));
var vv = dotNetEntity.AddComponent<DotNetScriptComponent>();
vv.Bind("DotNetScriptingHelper.TestEntityScript, DotNetScriptingHelper");
}
public ~this()
@@ -52,7 +57,7 @@ namespace GlitchyEngine.World
for (var (entity, script) in _ecsWorld.Enumerate<DotNetScriptComponent>())
{
if (script.InstanceHandlePtr == null)
if (script.InstanceHandlePtr == 0)
{
script.[Friend]CreateInstance(entity);
}
+1 -1
View File
@@ -32,7 +32,7 @@ namespace GlitchyEngine.World
}
else
{
Log.EngineLogger.AssertDebug(false, "Queried component is not registered for this world. This is invalid because the query would never return any results.");
//Log.EngineLogger.AssertDebug(false, "Queried component is not registered for this world. This is invalid because the query would never return any results.");
}
}
}