1 module unecht.core.components.editor.ui.assetInspector;
2 
3 version(UEIncludeEditor):
4 
5 import unecht;
6 
7 import unecht.core.object;
8 import unecht.core.component;
9 import unecht.core.components._editor;
10 import unecht.core.components.sceneNode;
11 import unecht.core.assetDatabase;
12 
13 import derelict.imgui.imgui;
14 
15 ///
16 final class UEEditorAssetInspector : UEComponent 
17 {
18     mixin(UERegisterObject!());
19 
20     static UEAsset asset;
21 
22     static void reset() { asset = UEAsset.init; }
23 
24     //TODO: #127
25     void render(float left, float top)
26     {
27         auto object = asset.obj;
28 
29         if(!object)
30             return;
31 
32         igSetNextWindowPos(ImVec2(left,top), ImGuiSetCond_Always);
33 
34         bool closed;
35         igBegin("asset inspector",&closed,
36             //ImGuiWindowFlags_AlwaysAutoResize|
37             ImGuiWindowFlags_NoCollapse|
38             ImGuiWindowFlags_NoMove
39             //ImGuiWindowFlags_NoResize
40             );
41         
42         scope(exit)igEnd();
43         
44         if(closed)
45         {
46             reset();
47             return;
48         }
49 
50         import unecht.core.componentManager;
51         if(auto renderer = asset.obj.typename in UEComponentsManager.editors)
52         {
53             auto changed = renderer.render(asset.obj);
54 
55             if(changed)
56                 UEAssetDatabase.updateAssetMetafile(asset.obj);
57         }
58         else
59         {
60             import unecht.core.logger;
61             log.errorf("asset editor not found: %s",asset.obj.typename);
62         }
63     }
64 }