diff --git a/src/editor.cpp b/src/editor.cpp index c83d3c2..03117db 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -18,7 +18,8 @@ Editor::Editor() : m_selectedMesh(nullptr), m_editedResourcePack(nullptr), m_pickerEnabled(false), - m_materialEditorEnabled(false) + m_materialEditorEnabled(false), + m_editorEnabled(false) { addChild(m_pickerNode); m_pickerNode->setVisible(false); @@ -34,6 +35,9 @@ void Editor::update() // no automatic update of children, we want to update them manually // ContainerNode::update(); + if(m_editorEnabled) + gui(); + if(m_pickerEnabled) m_pickerNode->update(); @@ -44,6 +48,28 @@ void Editor::update() m_editedResourcePack->gui(); } +void Editor::gui() +{ + ImGui::Begin("SparrowEditor", &m_editorEnabled); + { + ImGui::Checkbox("Material editor", &m_materialEditorEnabled); + + DeferredPipeline* pipeline = dynamic_cast(m_scene->getPipeline()); + bool pipeline_gui_status = pipeline->isDebugGuiVisible(); + if(ImGui::Checkbox("Rendering pipeline debug gui", &pipeline_gui_status)) + pipeline->toggleDebugGui(); + + bool resroucePackEditorStatus = m_editedResourcePack; + if(ImGui::Checkbox("Resource pack editor editor", &resroucePackEditorStatus)) + toggleResourcePackGui(); + + bool pickerStatus = m_pickerEnabled; + if(ImGui::Checkbox("Picker", &pickerStatus)) + togglePicker(); + } + ImGui::End(); +} + void Editor::materialGui() { static int selectedOption = 0; @@ -87,6 +113,11 @@ void Editor::materialGui() ImGui::End(); } +void Editor::toggleEditor() +{ + m_editorEnabled = !m_editorEnabled; +} + void Editor::togglePicker() { m_pickerEnabled = !m_pickerEnabled; diff --git a/src/editor.h b/src/editor.h index 9e440b2..ce4afb6 100644 --- a/src/editor.h +++ b/src/editor.h @@ -15,11 +15,15 @@ class Editor : public ContainerNode ResourcePack* m_editedResourcePack; bool m_pickerEnabled; bool m_materialEditorEnabled; + bool m_editorEnabled; + + void gui(); public: Editor(); ~Editor(); void update(); void materialGui(); + void toggleEditor(); void togglePicker(); void toggleMaterialEditor(); void toggleRenderingPipelineGui(); diff --git a/src/sparrowshell/scriptnode.cpp b/src/sparrowshell/scriptnode.cpp index 7cbcfd1..5703425 100644 --- a/src/sparrowshell/scriptnode.cpp +++ b/src/sparrowshell/scriptnode.cpp @@ -28,6 +28,7 @@ ScriptNode::ScriptNode() LUA_SET_FUN(materialEditor); LUA_SET_FUN(rendering); LUA_SET_FUN(resourcePackEditor); + LUA_SET_FUN(editor); m_script.new_usertype("Engine", "time",&Engine::getTime @@ -113,3 +114,7 @@ void ScriptNode::rendering(){ void ScriptNode::resourcePackEditor(){ this->getEngine().getEditor()->toggleResourcePackGui(); } + +void ScriptNode::editor(){ + this->getEngine().getEditor()->toggleEditor(); +} diff --git a/src/sparrowshell/scriptnode.h b/src/sparrowshell/scriptnode.h index 9bbeafc..8cbe80d 100644 --- a/src/sparrowshell/scriptnode.h +++ b/src/sparrowshell/scriptnode.h @@ -27,6 +27,7 @@ public: void materialEditor(); void rendering(); void resourcePackEditor(); + void editor(); }; #endif // SCRIPTNODE_H