Browse Source

Cubemap Generation UI

Josh Engebretson 10 years ago
parent
commit
f8bdd61cf1

+ 46 - 1
Script/AtomicEditor/ui/frames/inspector/SelectionSectionCoreUI.ts

@@ -11,6 +11,8 @@ import SelectionSection = require("./SelectionSection");
 import SelectionSectionUI = require("./SelectionSectionUI");
 import SelectionSectionUI = require("./SelectionSectionUI");
 import SerializableEditType = require("./SerializableEditType");
 import SerializableEditType = require("./SerializableEditType");
 
 
+import ProgressModal = require("ui/modal/ProgressModal");
+
 
 
 class CollisionShapeSectionUI extends SelectionSectionUI {
 class CollisionShapeSectionUI extends SelectionSectionUI {
 
 
@@ -58,10 +60,53 @@ class CubemapGeneratorSectionUI extends SelectionSectionUI {
 
 
         button.onClick = () => {
         button.onClick = () => {
 
 
+            var scene = null;
+            var count = 0;
+            var progressModal = new ProgressModal("Rendering Cubemaps", "Rendering Cubemaps, please wait...");
+
             for (var i in this.editType.objects) {
             for (var i in this.editType.objects) {
 
 
                 var gen = <Editor.CubemapGenerator>this.editType.objects[i];
                 var gen = <Editor.CubemapGenerator>this.editType.objects[i];
-                gen.render();
+
+                if (!scene) {
+
+                    scene = gen.scene;
+
+                    this.subscribeToEvent(scene, "CubemapRenderBegin", () => {
+
+                        count++;
+
+                    })
+
+                    this.subscribeToEvent(scene, "CubemapRenderEnd", () => {
+
+                        count--;
+
+                        if (!count)
+                            progressModal.hide();
+
+                    })
+
+
+                }
+
+                if (!gen.render()) {
+
+                    //TODO: Cancel other renders if any and report better error information
+
+                    EditorUI.showModalError("Render Cubemaps",
+                        "There was an error rendering cubemaps, please see the application log");
+
+                    scene = null;
+                    break;
+
+                }
+            }
+
+            if (scene) {
+
+                progressModal.show();
+
             }
             }
 
 
         };
         };

+ 5 - 3
Source/AtomicEditor/Components/CubemapGenerator.cpp

@@ -35,7 +35,7 @@ namespace AtomicEditor
 
 
 CubemapGenerator::CubemapGenerator(Context *context) : EditorComponent(context),
 CubemapGenerator::CubemapGenerator(Context *context) : EditorComponent(context),
     updateCycle_(0),
     updateCycle_(0),
-    imageSize_(256),
+    imageSize_(512),
     namePrefix_("Cubemap")
     namePrefix_("Cubemap")
 {
 {
 
 
@@ -46,19 +46,21 @@ CubemapGenerator::~CubemapGenerator()
 
 
 }
 }
 
 
-void CubemapGenerator::Render()
+bool CubemapGenerator::Render()
 {
 {
 
 
     if(!InitRender())
     if(!InitRender())
     {
     {
         LOGERRORF("Unable to init render");
         LOGERRORF("Unable to init render");
-        return;
+        return false;
     }
     }
 
 
     GetScene()->SendEvent(E_CUBEMAPRENDERBEGIN);    
     GetScene()->SendEvent(E_CUBEMAPRENDERBEGIN);    
     SubscribeToEvent(E_BEGINFRAME, HANDLER(CubemapGenerator, HandleBeginFrame));
     SubscribeToEvent(E_BEGINFRAME, HANDLER(CubemapGenerator, HandleBeginFrame));
     SubscribeToEvent(E_ENDFRAME, HANDLER(CubemapGenerator, HandleEndFrame));
     SubscribeToEvent(E_ENDFRAME, HANDLER(CubemapGenerator, HandleEndFrame));
 
 
+    return true;
+
 }
 }
 
 
 bool CubemapGenerator::InitPaths()
 bool CubemapGenerator::InitPaths()

+ 1 - 1
Source/AtomicEditor/Components/CubemapGenerator.h

@@ -42,7 +42,7 @@ public:
     /// Register object factory.
     /// Register object factory.
     static void RegisterObject(Context* context);
     static void RegisterObject(Context* context);
 
 
-    void Render();
+    bool Render();
 
 
     int GetImageSize() const { return imageSize_; }
     int GetImageSize() const { return imageSize_; }
     void SetImageSize(int size) { imageSize_ = size; }
     void SetImageSize(int size) { imageSize_ = size; }