Browse Source

Editor preference cleanup, unloading asset database assets on project unload

Josh Engebretson 10 years ago
parent
commit
dfbff5fdf3

+ 7 - 1
Script/AtomicEditor/editor/Editor.ts

@@ -40,6 +40,12 @@ class Editor extends Atomic.ScriptObject {
         this.subscribeToEvent(EditorEvents.Quit, (data) => this.handleEditorEventQuit(data));
         this.subscribeToEvent("ExitRequested", (data) => this.handleExitRequested(data));
 
+        this.subscribeToEvent("ProjectLoaded", (data) => {
+
+            Atomic.editorMode.preferences.registerRecentProject(data.projectPath);
+
+        })
+
         this.parseArguments();
 
 
@@ -76,7 +82,7 @@ class Editor extends Atomic.ScriptObject {
 
     handleProjectUnloaded(event) {
 
-        this.sendEvent(EditorEvents.ActiveSceneChange, { scene : null });
+        this.sendEvent(EditorEvents.ActiveSceneChange, { scene: null });
 
 
 

+ 2 - 8
Script/AtomicEditor/ui/WelcomeFrame.ts

@@ -15,12 +15,6 @@ class WelcomeFrame extends ScriptWidget {
         this.recentSource = new Atomic.UISelectItemSource();
         this.gravity = Atomic.UI_GRAVITY_ALL;
 
-        this.subscribeToEvent("ProjectLoaded", (data) => {
-
-            Editor.getPreferences().registerRecentProject(data.ProjectPath);
-
-        })
-
         var container = <Atomic.UILayout> parent.getWidget("resourceviewcontainer");
 
         container.addChild(this);
@@ -79,9 +73,9 @@ class WelcomeFrame extends ScriptWidget {
         this.recentSource.clear();
 
         // prune any that don't exist
-        Editor.getPreferences().updateRecentFiles();
+        Atomic.editorMode.preferences.updateRecentFiles();
 
-        this.recent = Editor.getPreferences().recentProjects;
+        this.recent = Atomic.editorMode.preferences.recentProjects;
 
         for (var i in this.recent) {
 

+ 0 - 4
Script/TypeScript/AtomicWork.d.ts

@@ -172,10 +172,6 @@ declare module Atomic {
 
 }
 
-declare module Editor {
-    export function getPreferences(): AEPreferences;
-}
-
 declare module ToolCore {
 
     export interface ResourceAddedEvent {

+ 3 - 0
Script/TypeScript/Editor.d.ts

@@ -63,10 +63,13 @@ declare module Editor {
 
    export class EditorMode extends Atomic.AObject {
 
+      preferences: AEPreferences;
+
       // Construct.
       constructor();
 
       playProject(): boolean;
+      getPreferences(): AEPreferences;
 
    }
 

+ 8 - 0
Source/AtomicEditorWork/EditorMode/AEEditorMode.cpp

@@ -11,6 +11,8 @@
 
 #include <AtomicJS/Javascript/JSIPCEvents.h>
 
+#include "../Application/AEPreferences.h"
+
 #include "AEEditorMode.h"
 
 using namespace ToolCore;
@@ -29,6 +31,12 @@ EditorMode::~EditorMode()
 
 }
 
+AEPreferences* EditorMode::GetPreferences()
+{
+    return GetSubsystem<AEPreferences>();
+
+}
+
 void EditorMode::HandleIPCWorkerStarted(StringHash eventType, VariantMap& eventData)
 {
     VariantMap startupData;

+ 6 - 0
Source/AtomicEditorWork/EditorMode/AEEditorMode.h

@@ -13,6 +13,8 @@ using namespace Atomic;
 namespace AtomicEditor
 {
 
+class AEPreferences;
+
 /// EditorMode subsystem
 class EditorMode : public Object
 {
@@ -26,6 +28,10 @@ public:
 
     bool PlayProject();
 
+
+    AEPreferences* GetPreferences();
+
+
 private:
 
     void HandleIPCWorkerStarted(StringHash eventType, VariantMap& eventData);

+ 0 - 11
Source/AtomicEditorWork/Javascript/AEEditorJS.cpp

@@ -15,22 +15,11 @@ namespace Atomic
 namespace AtomicEditor
 {
 
-static int Editor_GetPreferences(duk_context* ctx)
-{
-    JSVM* vm = JSVM::GetJSVM(ctx);
-    js_push_class_object_instance(ctx, vm->GetSubsystem<AEPreferences>(), "AEPreferences");
-    return 1;
-}
-
 void jsapi_init_editor(JSVM* vm)
 {
     duk_context* ctx = vm->GetJSContext();
 
     duk_push_object(ctx);
-
-    duk_push_c_function(ctx, Editor_GetPreferences, 0);
-    duk_put_prop_string(ctx, -2, "getPreferences");
-
     duk_put_global_string(ctx, "Editor");
 
     jsb_package_editor_init(vm);

+ 2 - 0
Source/ToolCore/Assets/AssetDatabase.cpp

@@ -408,6 +408,8 @@ void AssetDatabase::HandleProjectUnloaded(StringHash eventType, VariantMap& even
 {
     ResourceCache* cache = GetSubsystem<ResourceCache>();
     cache->RemoveResourceDir(GetCachePath());
+    assets_.Clear();
+    usedGUID_.Clear();
     project_ = 0;
 }
 

+ 1 - 1
Source/ToolCore/Project/Project.cpp

@@ -113,7 +113,7 @@ bool Project::Load(const String& fullpath)
     else
     {
         projectPath_ = AddTrailingSlash(fullpath);
-        projectFilePath_ = GetFileName(RemoveTrailingSlash(projectPath_) + ".atomic");
+        projectFilePath_ = projectPath_ + GetFileName(RemoveTrailingSlash(projectPath_)) + ".atomic";
 
     }