diff --git a/src/Internal/Editor/EcsGUI.Layout.cs b/src/Internal/Editor/EcsGUI.Layout.cs index eb70129..c9c766d 100644 --- a/src/Internal/Editor/EcsGUI.Layout.cs +++ b/src/Internal/Editor/EcsGUI.Layout.cs @@ -16,15 +16,23 @@ namespace DCFApixels.DragonECS.Unity.Editors { public static partial class Layout { - + public static void ManuallySerializeButton(IEnumerable objects) + { + if (GUILayout.Button(UnityEditorUtility.GetLabel("Manually serialize"))) + { + foreach (var obj in objects) + { + EditorUtility.SetDirty(obj); + } + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + } public static void ManuallySerializeButton(UnityObject obj) { if (GUILayout.Button(UnityEditorUtility.GetLabel("Manually serialize"))) { - var so = new SerializedObject(obj); EditorUtility.SetDirty(obj); - so.UpdateIfRequiredOrScript(); - so.ApplyModifiedProperties(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } diff --git a/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs b/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs index fad360d..0f865ba 100644 --- a/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs +++ b/src/Templates/EntityTemplate/Editor/EntityTemplateEditor.cs @@ -156,14 +156,15 @@ namespace DCFApixels.DragonECS.Unity.Editors { Init(); - if (_componentsProp == null) - { - return; - } - if (IsSO) { - EcsGUI.Layout.ManuallySerializeButton(target); + EcsGUI.Layout.ManuallySerializeButton(targets); + } + + if (IsMultipleTargets) + { + GUILayout.Label("Multi-object editing not supported.", EditorStyles.helpBox); + return; } if (IsMultipleTargets == false && SerializationUtility.HasManagedReferencesWithMissingTypes(target)) @@ -187,7 +188,7 @@ namespace DCFApixels.DragonECS.Unity.Editors iterator.NextVisible(true); while (iterator.NextVisible(false)) { - if (iterator.name == _componentsProp.name) + if (_componentsProp != null && iterator.name == _componentsProp.name) { using (EcsGUI.Layout.BeginVertical(UnityEditorUtility.GetTransperentBlackBackgrounStyle())) { @@ -220,12 +221,14 @@ namespace DCFApixels.DragonECS.Unity.Editors } } + [CanEditMultipleObjects] [CustomEditor(typeof(ScriptableEntityTemplate), true)] internal class ScriptableEntityTemplateEditor : EntityTemplateEditorBase { //public override bool IsStaticData { get { return true; } } protected override bool IsSO => true; } + [CanEditMultipleObjects] [CustomEditor(typeof(MonoEntityTemplate), true)] internal class MonoEntityTemplateEditor : EntityTemplateEditorBase { diff --git a/src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs b/src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs index ff5e488..b1d120b 100644 --- a/src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs +++ b/src/Templates/PipelineTemplate/Editor/PipelineTemplateEditor.cs @@ -146,7 +146,13 @@ namespace DCFApixels.DragonECS.Unity.Editors { if (IsSO) { - EcsGUI.Layout.ManuallySerializeButton(target); + EcsGUI.Layout.ManuallySerializeButton(targets); + } + + if (IsMultipleTargets) + { + GUILayout.Label("Multi-object editing not supported.", EditorStyles.helpBox); + return; } EcsGUI.Changed = GUILayout.Button("Validate");