mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-11-04 12:51:48 +00:00
Fixed "Save component to edit mode" and also jankily save script data
This commit is contained in:
@@ -205,7 +205,7 @@ namespace GlitchyEditor.EditWindows
|
|||||||
positionX -= buttonSize.X + ImGui.GetStyle().FramePadding.x;
|
positionX -= buttonSize.X + ImGui.GetStyle().FramePadding.x;
|
||||||
ImGui.SameLine(positionX);
|
ImGui.SameLine(positionX);
|
||||||
|
|
||||||
if (ImGui.ImageButton("save", EditorIcons.Instance.Icon_Save, (.)buttonSize))
|
if (ImGui.ImageButton("save_to_editor", EditorIcons.Instance.Icon_Save, (.)buttonSize))
|
||||||
{
|
{
|
||||||
if (Entity editorEntity = Editor.Instance.EditorScene.GetEntityByID(entity.UUID))
|
if (Entity editorEntity = Editor.Instance.EditorScene.GetEntityByID(entity.UUID))
|
||||||
{
|
{
|
||||||
@@ -213,9 +213,21 @@ namespace GlitchyEditor.EditWindows
|
|||||||
|
|
||||||
if (typeof(TComponent) == typeof(ScriptComponent))
|
if (typeof(TComponent) == typeof(ScriptComponent))
|
||||||
{
|
{
|
||||||
// TODO: Copy script data into editor
|
// Dirty hack to get to the serialized script instances of the editor scene.
|
||||||
// TODO: Somehow get the scriptserializer used to serialize the editor scene
|
var serializer = EditorApp.Instance.EditorLayer.[Friend]_scriptSerializer;
|
||||||
//scriptSerializer.SerializeScriptInstance(((ScriptComponent*)component).Instance);
|
|
||||||
|
// Dirty hack to remove the old data
|
||||||
|
if (serializer.SerializedObjects.GetAndRemove(entity.UUID) case .Ok(let kvPair))
|
||||||
|
{
|
||||||
|
delete kvPair.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Just save the new data into the context (what could possibly go wrong?!)
|
||||||
|
// this could probably serialize too much data into our context (because we can serialize reference types)
|
||||||
|
// and leave a bunch of dangling data in it (because we can serialize reference types)
|
||||||
|
serializer.SerializeScriptInstance(((ScriptComponent*)component).Instance);
|
||||||
|
// This is also a massive hack to make sure we don't keep references to types, but this also mean we might serialize too much?
|
||||||
|
serializer.FinishSerialization();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ namespace GlitchyEditor
|
|||||||
|
|
||||||
public Settings Settings { get; private set; } = new .() ~ delete _;
|
public Settings Settings { get; private set; } = new .() ~ delete _;
|
||||||
|
|
||||||
|
public EditorLayer EditorLayer => _editorLayer;
|
||||||
|
|
||||||
public this(String[] args)
|
public this(String[] args)
|
||||||
{
|
{
|
||||||
/*while(!Debug.IsDebuggerPresent)
|
/*while(!Debug.IsDebuggerPresent)
|
||||||
|
|||||||
@@ -670,7 +670,7 @@ namespace GlitchyEngine.World
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ScriptComponent : IDisposableComponent
|
struct ScriptComponent : IDisposableComponent, ICopyComponent<ScriptComponent>
|
||||||
{
|
{
|
||||||
private String _scriptClassName = null;
|
private String _scriptClassName = null;
|
||||||
|
|
||||||
@@ -705,5 +705,12 @@ namespace GlitchyEngine.World
|
|||||||
delete _scriptClassName;
|
delete _scriptClassName;
|
||||||
ReleaseRefAndNullify!(_instance);
|
ReleaseRefAndNullify!(_instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Copy(ScriptComponent* source, ScriptComponent* target)
|
||||||
|
{
|
||||||
|
target.ScriptClassName = source.ScriptClassName;
|
||||||
|
|
||||||
|
// TODO: This is just half the work, because we actually have to somehow handle the script instance
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user