Basic Script reloading

+ ScriptComponent now saves script name instead of direct ScriptClass reference
+ Added ClearDictionaryAndDeleteKeys helper
+ Moved ScriptFieldType to separate file
+ _ScriptFieldMap now uses String as Key
This commit is contained in:
Simon Lübeß
2023-07-18 22:06:34 +02:00
parent e8505f6bdb
commit cd1562f372
10 changed files with 259 additions and 166 deletions
@@ -507,14 +507,20 @@ namespace GlitchyEngine.World
struct ScriptComponent : IDisposableComponent
{
private ScriptClass _scriptClass = null;
private String _scriptClassName = null;
private ScriptInstance _instance = null;
public ScriptClass ScriptClass
public StringView ScriptClassName
{
get => _scriptClass;
set mut => SetReference!(_scriptClass, value);
get => _scriptClassName;
set mut
{
if (_scriptClassName == null)
_scriptClassName = new String(value);
_scriptClassName.Set(value);
}
}
public ScriptInstance Instance
@@ -525,16 +531,13 @@ namespace GlitchyEngine.World
set mut => SetReference!(_instance, value);
}
/// Gets whether or not this script component has a script assigned (that means ScriptClass isn't null).
public bool HasScript => _scriptClass != null;
public bool IsInitialized => _instance?.IsInitialized ?? false;
public bool IsCreated => _instance?.IsCreated ?? false;
public void Dispose() mut
{
ReleaseRefAndNullify!(_scriptClass);
delete _scriptClassName;
ReleaseRefAndNullify!(_instance);
}
}