Add locking selection in prefab window
This commit is contained in:
@@ -11,6 +11,7 @@ using FlaxEditor.GUI.ContextMenu;
|
|||||||
using FlaxEditor.GUI.Tree;
|
using FlaxEditor.GUI.Tree;
|
||||||
using FlaxEditor.Scripting;
|
using FlaxEditor.Scripting;
|
||||||
using FlaxEditor.Windows;
|
using FlaxEditor.Windows;
|
||||||
|
using FlaxEditor.Windows.Assets;
|
||||||
using FlaxEngine;
|
using FlaxEngine;
|
||||||
using FlaxEngine.GUI;
|
using FlaxEngine.GUI;
|
||||||
using FlaxEngine.Json;
|
using FlaxEngine.Json;
|
||||||
@@ -113,15 +114,15 @@ namespace FlaxEditor.CustomEditors.Dedicated
|
|||||||
var actor = (Actor)Values[0];
|
var actor = (Actor)Values[0];
|
||||||
var scriptType = TypeUtils.GetType(actor.TypeName);
|
var scriptType = TypeUtils.GetType(actor.TypeName);
|
||||||
var item = scriptType.ContentItem;
|
var item = scriptType.ContentItem;
|
||||||
if (Presenter.Owner is PropertiesWindow pw)
|
if (Presenter.Owner is PropertiesWindow propertiesWindow)
|
||||||
{
|
{
|
||||||
var lockButton = cm.AddButton(pw.LockObjects ? "Unlock" : "Lock");
|
var lockButton = cm.AddButton(propertiesWindow.LockObjects ? "Unlock" : "Lock");
|
||||||
lockButton.ButtonClicked += button =>
|
lockButton.ButtonClicked += button =>
|
||||||
{
|
{
|
||||||
pw.LockObjects = !pw.LockObjects;
|
propertiesWindow.LockObjects = !propertiesWindow.LockObjects;
|
||||||
|
|
||||||
// Reselect current selection
|
// Reselect current selection
|
||||||
if (!pw.LockObjects && Editor.Instance.SceneEditing.SelectionCount > 0)
|
if (!propertiesWindow.LockObjects && Editor.Instance.SceneEditing.SelectionCount > 0)
|
||||||
{
|
{
|
||||||
var cachedSelection = Editor.Instance.SceneEditing.Selection.ToArray();
|
var cachedSelection = Editor.Instance.SceneEditing.Selection.ToArray();
|
||||||
Editor.Instance.SceneEditing.Select(null);
|
Editor.Instance.SceneEditing.Select(null);
|
||||||
@@ -129,6 +130,22 @@ namespace FlaxEditor.CustomEditors.Dedicated
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
else if (Presenter.Owner is PrefabWindow prefabWindow)
|
||||||
|
{
|
||||||
|
var lockButton = cm.AddButton(prefabWindow.LockSelectedObjects ? "Unlock" : "Lock");
|
||||||
|
lockButton.ButtonClicked += button =>
|
||||||
|
{
|
||||||
|
prefabWindow.LockSelectedObjects = !prefabWindow.LockSelectedObjects;
|
||||||
|
|
||||||
|
// Reselect current selection
|
||||||
|
if (!prefabWindow.LockSelectedObjects && prefabWindow.Selection.Count > 0)
|
||||||
|
{
|
||||||
|
var cachedSelection = prefabWindow.Selection.ToList();
|
||||||
|
prefabWindow.Select(null);
|
||||||
|
prefabWindow.Select(cachedSelection);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
cm.AddButton("Copy ID", OnClickCopyId);
|
cm.AddButton("Copy ID", OnClickCopyId);
|
||||||
cm.AddButton("Edit actor type", OnClickEditActorType).Enabled = item != null;
|
cm.AddButton("Edit actor type", OnClickEditActorType).Enabled = item != null;
|
||||||
var showButton = cm.AddButton("Show in content window", OnClickShowActorType);
|
var showButton = cm.AddButton("Show in content window", OnClickShowActorType);
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ namespace FlaxEditor.Windows.Assets
|
|||||||
/// <param name="before">The selection before the change.</param>
|
/// <param name="before">The selection before the change.</param>
|
||||||
public void OnSelectionChanged(SceneGraphNode[] before)
|
public void OnSelectionChanged(SceneGraphNode[] before)
|
||||||
{
|
{
|
||||||
|
if (LockSelectedObjects)
|
||||||
|
return;
|
||||||
|
|
||||||
Undo.AddAction(new SelectionChangeAction(before, Selection.ToArray(), OnSelectionUndo));
|
Undo.AddAction(new SelectionChangeAction(before, Selection.ToArray(), OnSelectionUndo));
|
||||||
|
|
||||||
OnSelectionChanges();
|
OnSelectionChanges();
|
||||||
|
|||||||
@@ -68,6 +68,11 @@ namespace FlaxEditor.Windows.Assets
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly LocalSceneGraph Graph;
|
public readonly LocalSceneGraph Graph;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indication of if the prefab window selection is locked on specific objects.
|
||||||
|
/// </summary>
|
||||||
|
public bool LockSelectedObjects = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether use live reloading for the prefab changes (applies prefab changes on modification by auto).
|
/// Gets or sets a value indicating whether use live reloading for the prefab changes (applies prefab changes on modification by auto).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user