//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
//**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************//
using BansheeEngine;
namespace BansheeEditor
{
/** @addtogroup Windows
* @{
*/
///
/// Editor window that displays the scene hierarchy tree view, displaying all scene objects in the current scene.
///
public class HierarchyWindow : EditorWindow, IGlobalShortcuts
{
private GUISceneTreeView treeView;
///
/// Opens the hierarchy window.
///
[MenuItem("Windows/Hierarchy", ButtonModifier.CtrlAlt, ButtonCode.H, 6000)]
private static void OpenHierarchyWindow()
{
OpenWindow();
}
///
protected override LocString GetDisplayName()
{
return new LocEdString("Hierarchy");
}
///
void IGlobalShortcuts.OnDeletePressed()
{
treeView.DeleteSelection();
}
///
void IGlobalShortcuts.OnRenamePressed()
{
treeView.RenameSelection();
}
///
void IGlobalShortcuts.OnDuplicatePressed()
{
treeView.DuplicateSelection();
}
///
void IGlobalShortcuts.OnCopyPressed()
{
treeView.CopySelection();
}
///
void IGlobalShortcuts.OnCutPressed()
{
treeView.CutSelection();
}
///
void IGlobalShortcuts.OnPastePressed()
{
treeView.PasteToSelection();
}
private void OnInitialize()
{
GUIScrollArea scrollArea = new GUIScrollArea();
GUI.AddElement(scrollArea);
treeView = new GUISceneTreeView(GUIOption.FlexibleHeight(20), GUIOption.FlexibleWidth(20));
scrollArea.Layout.AddElement(treeView);
EditorVirtualInput.OnButtonUp += OnButtonUp;
}
private void OnEditorUpdate()
{
treeView.Update();
}
private void OnDestroy()
{
EditorVirtualInput.OnButtonUp -= OnButtonUp;
}
///
/// Triggered when the user presses a virtual button.
///
/// Button that was pressed.
/// Index of the device it was pressed on.
private void OnButtonUp(VirtualButton btn, int deviceIdx)
{
if (!HasFocus)
return;
IGlobalShortcuts shortcuts = this;
if (btn == EditorApplication.CopyKey)
shortcuts.OnCopyPressed();
else if (btn == EditorApplication.CutKey)
shortcuts.OnCutPressed();
else if (btn == EditorApplication.PasteKey)
shortcuts.OnPastePressed();
else if (btn == EditorApplication.DuplicateKey)
shortcuts.OnDuplicatePressed();
else if (btn == EditorApplication.RenameKey)
shortcuts.OnRenamePressed();
else if (btn == EditorApplication.DeleteKey)
shortcuts.OnDeletePressed();
else if(btn == EditorApplication.PasteKey)
shortcuts.OnPastePressed();
}
}
/** @} */
}