mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 21:01:52 +00:00
ScriptEngine: Serialize static fields
This commit is contained in:
@@ -31,19 +31,31 @@ public class ScriptInstanceSerializer
|
||||
{
|
||||
Debug.Profiler.ProfileFunction!();
|
||||
|
||||
for (let (id, script) in ScriptEngine._entityScriptInstances)
|
||||
for (let (id, scriptInstance) in ScriptEngine._entityScriptInstances)
|
||||
{
|
||||
SerializeScriptInstance(script);
|
||||
SerializeScriptInstance(scriptInstance);
|
||||
}
|
||||
|
||||
for (let (name, scriptClass) in ScriptEngine.EntityClasses)
|
||||
{
|
||||
SerializeStaticScriptClassFields(scriptClass);
|
||||
}
|
||||
}
|
||||
|
||||
/// Serializes the given script instance.
|
||||
public void SerializeScriptInstance(ScriptInstance script)
|
||||
{
|
||||
SerializedObject object = new SerializedObject(this, script.ScriptClass.FullName, script.EntityId);
|
||||
SerializedObject object = new SerializedObject(this, false, script.ScriptClass.FullName, script.EntityId);
|
||||
object.Serialize(script);
|
||||
}
|
||||
|
||||
/// Serializes the given script instance.
|
||||
public void SerializeStaticScriptClassFields(ScriptClass scriptClass)
|
||||
{
|
||||
SerializedObject object = new SerializedObject(this, true, scriptClass.FullName, null);
|
||||
object.SerializeStaticFields(scriptClass);
|
||||
}
|
||||
|
||||
/// Deserializes this context into the instances currently managed by the script engine.
|
||||
public void DeserializeScriptInstances()
|
||||
{
|
||||
@@ -53,6 +65,11 @@ public class ScriptInstanceSerializer
|
||||
{
|
||||
DeserializeScriptInstance(id, script);
|
||||
}
|
||||
|
||||
for (let (name, scriptClass) in ScriptEngine.EntityClasses)
|
||||
{
|
||||
DeserializeStaticScriptClassFields(scriptClass);
|
||||
}
|
||||
}
|
||||
|
||||
/// Deserializes the data into the given script instance, if there is data available.
|
||||
@@ -69,6 +86,25 @@ public class ScriptInstanceSerializer
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool DeserializeStaticScriptClassFields(ScriptClass scriptClass)
|
||||
{
|
||||
for (let object in _serializedData.Values)
|
||||
{
|
||||
if (object.IsStatic && object.TypeName == scriptClass.FullName)
|
||||
{
|
||||
// No data anyway, save some time.
|
||||
if (object.Fields.Count == 0)
|
||||
return false;
|
||||
|
||||
object.DeserializeStaticFields(scriptClass);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/// Replaces Entity references in the given serialized data using the specified translation table.
|
||||
public void FixupSerializedIds(Dictionary<UUID, UUID> originalToCopyIds)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user