Browse Source

Better delete key handling

Josh Engebretson 10 years ago
parent
commit
9be22ececb

+ 19 - 1
Script/AtomicEditor/ui/HierarchyFrame.ts

@@ -116,7 +116,7 @@ class HierarchyFrame extends Atomic.UIWidget {
         var selectedNode = this.scene.getNode(selectedId);
         if (selectedNode == node) {
 
-          this.sendEvent(EditorEvents.ActiveNodeChange, { node: ev.parent ? ev.parent : this.scene });
+            this.sendEvent(EditorEvents.ActiveNodeChange, { node: ev.parent ? ev.parent : this.scene });
 
         }
 
@@ -150,6 +150,24 @@ class HierarchyFrame extends Atomic.UIWidget {
 
     handleWidgetEvent(data: Atomic.UIWidgetEvent): boolean {
 
+        if (data.type == Atomic.UI_EVENT_TYPE_KEY_UP) {
+
+            if (data.key == Atomic.KEY_DELETE || data.key == Atomic.KEY_BACKSPACE) {
+
+                var selectedId = Number(this.hierList.rootList.selectedItemID);
+
+                var node = this.scene.getNode(selectedId);
+                if (node) {
+
+                  node.removeAllComponents();
+                  node.remove();
+
+                }
+
+            }
+
+        }
+
         if (data.type == Atomic.UI_EVENT_TYPE_POINTER_DOWN) {
 
             if (data.target == this.hierList.rootList) {

+ 1 - 0
Script/AtomicEditor/ui/Shortcuts.ts

@@ -35,6 +35,7 @@ class Shortcuts extends Atomic.ScriptObject {
 
         // pretty gross
         var editor = EditorUI.getMainFrame().resourceframe.currentResourceEditor;
+        if (!editor) return;
         editor.close(true);
 
     }

+ 6 - 0
Source/Atomic/UI/UIWidget.cpp

@@ -120,6 +120,12 @@ void UIWidget::ConvertEvent(UIWidget *handler, UIWidget* target, const tb::TBWid
         case TB_KEY_ENTER:
             key = KEY_RETURN;
             break;
+        case TB_KEY_BACKSPACE:
+            key = KEY_BACKSPACE;
+            break;
+        case TB_KEY_DELETE:
+            key = KEY_DELETE;
+            break;
         default:
             break;
         }

+ 3 - 0
Source/AtomicEditor/EditorMode/AEEditorMode.cpp

@@ -80,6 +80,9 @@ bool EditorMode::PlayProject()
 
     Project* project = tsystem->GetProject();
 
+    if (!project)
+        return false;
+
     Vector<String> paths;
     paths.Push(env->GetCoreDataDir());
     paths.Push(env->GetPlayerDataDir());

+ 13 - 0
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditor3D.cpp

@@ -99,6 +99,19 @@ SceneEditor3D::~SceneEditor3D()
 
 bool SceneEditor3D::OnEvent(const TBWidgetEvent &ev)
 {
+    if (ev.type == EVENT_TYPE_KEY_UP)
+    {
+        if (ev.special_key == TB_KEY_DELETE || ev.special_key == TB_KEY_BACKSPACE)
+        {
+            if (selectedNode_)
+            {
+                selectedNode_->RemoveAllComponents();
+                selectedNode_->Remove();
+                selectedNode_ = 0;
+            }
+        }
+
+    }
 
     if (ev.type == EVENT_TYPE_SHORTCUT)
     {