Merge branch 'better-prefab-dif-name' of https://github.com/Tryibion/FlaxEngine into Tryibion-better-prefab-dif-name
This commit is contained in:
@@ -258,7 +258,17 @@ namespace FlaxEditor.CustomEditors.Dedicated
|
|||||||
else if (editor.Values[0] is SceneObject sceneObject)
|
else if (editor.Values[0] is SceneObject sceneObject)
|
||||||
{
|
{
|
||||||
node.TextColor = sceneObject.HasPrefabLink ? FlaxEngine.GUI.Style.Current.ProgressNormal : FlaxEngine.GUI.Style.Current.BackgroundSelected;
|
node.TextColor = sceneObject.HasPrefabLink ? FlaxEngine.GUI.Style.Current.ProgressNormal : FlaxEngine.GUI.Style.Current.BackgroundSelected;
|
||||||
node.Text = Utilities.Utils.GetPropertyNameUI(sceneObject.GetType().Name);
|
if (editor.Values.Info != ScriptMemberInfo.Null)
|
||||||
|
{
|
||||||
|
if (editor.Values.GetAttributes().FirstOrDefault(x => x is EditorDisplayAttribute) is EditorDisplayAttribute editorDisplayAttribute && !string.IsNullOrEmpty(editorDisplayAttribute.Name))
|
||||||
|
node.Text = $"{Utilities.Utils.GetPropertyNameUI(editorDisplayAttribute.Name)} ({Utilities.Utils.GetPropertyNameUI(editor.Values.Info.Name)})";
|
||||||
|
else
|
||||||
|
node.Text = $"{Utilities.Utils.GetPropertyNameUI(editor.Values.Info.Name)}";
|
||||||
|
}
|
||||||
|
else if (sceneObject is Actor actor)
|
||||||
|
node.Text = $"{actor.Name} ({Utilities.Utils.GetPropertyNameUI(sceneObject.GetType().Name)})";
|
||||||
|
else
|
||||||
|
node.Text = Utilities.Utils.GetPropertyNameUI(sceneObject.GetType().Name);
|
||||||
}
|
}
|
||||||
// Array Item
|
// Array Item
|
||||||
else if (editor.ParentEditor is CollectionEditor)
|
else if (editor.ParentEditor is CollectionEditor)
|
||||||
@@ -268,7 +278,12 @@ namespace FlaxEditor.CustomEditors.Dedicated
|
|||||||
// Common type
|
// Common type
|
||||||
else if (editor.Values.Info != ScriptMemberInfo.Null)
|
else if (editor.Values.Info != ScriptMemberInfo.Null)
|
||||||
{
|
{
|
||||||
node.Text = Utilities.Utils.GetPropertyNameUI(editor.Values.Info.Name);
|
if (editor.Values.GetAttributes().FirstOrDefault(x => x is EditorDisplayAttribute) is EditorDisplayAttribute editorDisplayAttribute
|
||||||
|
&& !string.IsNullOrEmpty(editorDisplayAttribute.Name)
|
||||||
|
&& !editorDisplayAttribute.Name.Contains("_inline"))
|
||||||
|
node.Text = $"{Utilities.Utils.GetPropertyNameUI(editorDisplayAttribute.Name)} ({Utilities.Utils.GetPropertyNameUI(editor.Values.Info.Name)})";
|
||||||
|
else
|
||||||
|
node.Text = Utilities.Utils.GetPropertyNameUI(editor.Values.Info.Name);
|
||||||
}
|
}
|
||||||
// Custom type
|
// Custom type
|
||||||
else if (editor.Values[0] != null)
|
else if (editor.Values[0] != null)
|
||||||
@@ -361,20 +376,46 @@ namespace FlaxEditor.CustomEditors.Dedicated
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private TreeNode CreateDiffTree(Actor actor, CustomEditorPresenter presenter, LayoutElementsContainer layout)
|
||||||
|
{
|
||||||
|
var actorNode = Editor.Instance.Scene.GetActorNode(actor);
|
||||||
|
ValueContainer vc = new ValueContainer(ScriptMemberInfo.Null);
|
||||||
|
vc.SetType(new ScriptType(actorNode.EditableObject.GetType()));
|
||||||
|
vc.Add(actorNode.EditableObject);
|
||||||
|
var editor = CustomEditorsUtil.CreateEditor(vc, null, false);
|
||||||
|
editor.Initialize(presenter, layout, vc);
|
||||||
|
var node = ProcessDiff(editor, false);
|
||||||
|
layout.ClearLayout();
|
||||||
|
foreach (var child in actor.Children)
|
||||||
|
{
|
||||||
|
var childNode = CreateDiffTree(child, presenter, layout);
|
||||||
|
if (childNode == null)
|
||||||
|
continue;
|
||||||
|
if (node == null)
|
||||||
|
node = CreateDiffNode(editor);
|
||||||
|
node.AddChild(childNode);
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
private void ViewChanges(Control target, Float2 targetLocation)
|
private void ViewChanges(Control target, Float2 targetLocation)
|
||||||
{
|
{
|
||||||
// Build a tree out of modified properties
|
// Build a tree out of modified properties
|
||||||
var rootNode = ProcessDiff(this, false);
|
var thisActor = (Actor)Values[0];
|
||||||
|
var rootActor = thisActor.IsPrefabRoot ? thisActor : thisActor.GetPrefabRoot();
|
||||||
|
var presenter = new CustomEditorPresenter(null);
|
||||||
|
var layout = new CustomElementsContainer<ContainerControl>();
|
||||||
|
var rootNode = CreateDiffTree(rootActor, presenter, layout);
|
||||||
|
|
||||||
// Skip if no changes detected
|
// Skip if no changes detected
|
||||||
if (rootNode == null || rootNode.ChildrenCount == 0)
|
if (rootNode == null)
|
||||||
{
|
{
|
||||||
var cm1 = new ContextMenu();
|
var cm1 = new ContextMenu();
|
||||||
cm1.AddButton("No changes detected");
|
cm1.AddButton("No changes detected");
|
||||||
cm1.Show(target, targetLocation);
|
cm1.Show(target, targetLocation);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create context menu
|
// Create context menu
|
||||||
var cm = new PrefabDiffContextMenu();
|
var cm = new PrefabDiffContextMenu();
|
||||||
cm.Tree.AddChild(rootNode);
|
cm.Tree.AddChild(rootNode);
|
||||||
|
|||||||
Reference in New Issue
Block a user