This commit is contained in:
Chewico 2026-01-05 22:22:05 +01:00
parent 90f5569855
commit ba42be46ba
5 changed files with 53 additions and 70 deletions

View File

@ -1,37 +0,0 @@
#pragma once
#include <string>
#include <vector>
class asIScriptEngine;
class asIScriptModule;
class asIScriptContext;
class CScriptBuilder;
namespace Deer {
// This namespace implements all interface ported from c++ ImGui to an easier lua aproach with simplifications
namespace StudioAPI {
class DockPanelContext;
class DockPanelObject;
class ServiceScriptContext;
void initialize();
void deinitialize();
void render();
// INTERNAL
// Panels
extern asIScriptEngine* scriptEngine;
extern CScriptBuilder scriptBuilder;
extern std::vector<DockPanelContext> dockPanelModules;
extern std::vector<ServiceScriptContext> serviceScriptModules;
extern DockPanelObject* currentDockPanelExecution;
void loadDockPanels();
void loadServiceScripts();
void registerEditorEngineFunctions();
void registerEditorEngineStructs();
} // namespace StudioAPI
} // namespace Deer

View File

@ -102,14 +102,11 @@ namespace Deer {
} }
ImGui::PopStyleVar(); ImGui::PopStyleVar();
// TerrainEditor::onImGui(); // TerrainEditor::onImGui();
// viewport_onImGui(); // viewport_onImGui();
AngelScriptEngine::render(); AngelScriptEngine::render();
ImGui::ShowMetricsWindow();
Scene::gizmoRenderer.refresh(); Scene::gizmoRenderer.refresh();
ImGui::End(); ImGui::End();
} }

View File

@ -4,7 +4,11 @@ FrameBuffer renderMeshPreview(GPUMesh mesh) {
return mainRenderService.renderMeshPreview(mesh); return mainRenderService.renderMeshPreview(mesh);
} }
void setSceneCamera (SceneCamera sc) { FrameBuffer renderMeshPreview(GPUMesh mesh, float fase) {
return mainRenderService.renderMeshPreview(mesh, fase);
}
void setSceneCamera(SceneCamera sc) {
} }
class RenderService : Service { class RenderService : Service {
@ -18,12 +22,10 @@ class RenderService : Service {
shaderC.shader = Resource::loadShader("shader.glsl"); shaderC.shader = Resource::loadShader("shader.glsl");
Engine::print("CAM : " + sceneCamera.transform.position.x + " " + sceneCamera.transform.scale.x + " : " + sceneCamera.camera.aspect); Engine::print("CAM : " + sceneCamera.transform.position.x + " " + sceneCamera.transform.scale.x + " : " + sceneCamera.camera.aspect);
sceneCamera.transform.position.z = -3; sceneCamera.transform.position.z = -3;
sceneCamera.transform.position.y = 1; sceneCamera.transform.position.y = 1;
} }
FrameBuffer renderMeshPreview(GPUMesh mesh) { FrameBuffer renderMeshPreview(GPUMesh mesh) {
@ -31,6 +33,18 @@ class RenderService : Service {
buffer.clearRGBA(0, 0, 0, 0); buffer.clearRGBA(0, 0, 0, 0);
meshC.meshResource = mesh; meshC.meshResource = mesh;
child.transform.rotation = vec3(0, 0, 0);
mainRenderService.env.render(buffer, mainRenderService.sceneCamera);
return buffer;
}
FrameBuffer renderMeshPreview(GPUMesh mesh, float fase) {
FrameBuffer buffer = Resource::createLoadRGBA8FrameBuffer(mesh.path, 128, 128, 4);
buffer.clearRGBA(0, 0, 0, 0);
meshC.meshResource = mesh;
child.transform.rotation = vec3(0, (1-(1/(1+fase * fase)))*45, 0);
mainRenderService.env.render(buffer, mainRenderService.sceneCamera); mainRenderService.env.render(buffer, mainRenderService.sceneCamera);
return buffer; return buffer;
@ -39,5 +53,5 @@ class RenderService : Service {
Environment env; Environment env;
SceneCamera sceneCamera; SceneCamera sceneCamera;
MeshComponent meshC; MeshComponent meshC;
Entity child; Entity child;
} }

View File

@ -1,4 +1,5 @@
import FrameBuffer renderMeshPreview(GPUMesh mesh) from "Previewer"; import FrameBuffer renderMeshPreview(GPUMesh mesh) from "Previewer";
import FrameBuffer renderMeshPreview(GPUMesh mesh, float fase) from "Previewer";
string selectedResource = ""; string selectedResource = "";
class ResourceExplorer : Panel { class ResourceExplorer : Panel {
@ -6,6 +7,7 @@ class ResourceExplorer : Panel {
array<string> subFolders; array<string> subFolders;
array<string> subFiles; array<string> subFiles;
bool alreadyRendered = false; bool alreadyRendered = false;
float fase = 0;
dictionary meshFrameBuffer; dictionary meshFrameBuffer;
@ -18,12 +20,14 @@ class ResourceExplorer : Panel {
currentPath = path; currentPath = path;
subFolders = Resource::getResourceFolders(path); subFolders = Resource::getResourceFolders(path);
subFiles = Resource::getResourceFiles(path); subFiles = Resource::getResourceFiles(path);
fase = 0;
} }
void render() { void render() {
alreadyRendered = false; alreadyRendered = false;
renderMenuBar(); renderMenuBar();
UI::space(); UI::space();
fase += 0.3;
UI::automaticColumns(182); UI::automaticColumns(182);
string temp_path = currentPath; string temp_path = currentPath;
@ -45,17 +49,22 @@ class ResourceExplorer : Panel {
ResourceType resType = Resource::getResourceType(filename); ResourceType resType = Resource::getResourceType(filename);
bool selected = filename == selectedResource; bool selected = filename == selectedResource;
if (resType == ResourceType::Mesh && !alreadyRendered) { if (resType == ResourceType::Mesh) {
FrameBuffer frameBuffer; FrameBuffer frameBuffer;
if (meshFrameBuffer.exists(filename)) { //if (meshFrameBuffer.exists(filename)) {
frameBuffer = FrameBuffer(meshFrameBuffer[filename]); // frameBuffer = FrameBuffer(meshFrameBuffer[filename]);
//
//} else {
// GPUMesh mesh = Resource::loadGPUMesh(filename);
// frameBuffer = renderMeshPreview(mesh);
// meshFrameBuffer[filename] = frameBuffer;
// alreadyRendered = true;
//}
} else { GPUMesh mesh = Resource::loadGPUMesh(filename);
GPUMesh mesh = Resource::loadGPUMesh(filename); frameBuffer = renderMeshPreview(mesh, fase);
frameBuffer = renderMeshPreview(mesh); meshFrameBuffer[filename] = frameBuffer;
meshFrameBuffer[filename] = frameBuffer; alreadyRendered = true;
alreadyRendered = true;
}
if (UI::cartIconButton(Path::getName(filename), frameBuffer, 128, UI::getAvailableSizeX())) { if (UI::cartIconButton(Path::getName(filename), frameBuffer, 128, UI::getAvailableSizeX())) {
selectedResource = filename; selectedResource = filename;

View File

@ -1,13 +1,13 @@
[Window][DockSpace Demo] [Window][DockSpace Demo]
Pos=0,0 Pos=0,0
Size=1920,1011 Size=2560,1371
Collapsed=0 Collapsed=0
[Window][ViewportPanel] [Window][ViewportPanel]
Pos=433,34 Pos=559,34
Size=927,428 Size=1441,704
Collapsed=0 Collapsed=0
DockId=0x00000004,1 DockId=0x00000004,0
[Window][Debug##Default] [Window][Debug##Default]
Pos=60,60 Pos=60,60
@ -16,13 +16,13 @@ Collapsed=0
[Window][TreePanel] [Window][TreePanel]
Pos=0,34 Pos=0,34
Size=431,428 Size=557,704
Collapsed=0 Collapsed=0
DockId=0x00000001,0 DockId=0x00000001,0
[Window][ResourceExplorer] [Window][ResourceExplorer]
Pos=0,464 Pos=0,740
Size=1920,546 Size=2560,630
Collapsed=0 Collapsed=0
DockId=0x00000006,0 DockId=0x00000006,0
@ -33,8 +33,8 @@ Collapsed=0
DockId=0xA1672E74,1 DockId=0xA1672E74,1
[Window][PropertiesPanel] [Window][PropertiesPanel]
Pos=1362,34 Pos=2002,34
Size=558,428 Size=558,704
Collapsed=0 Collapsed=0
DockId=0x00000003,0 DockId=0x00000003,0
@ -61,17 +61,17 @@ Collapsed=0
[Window][Dear ImGui Metrics/Debugger] [Window][Dear ImGui Metrics/Debugger]
Pos=433,34 Pos=433,34
Size=927,428 Size=1567,704
Collapsed=0 Collapsed=0
DockId=0x00000004,0 DockId=0x00000004,0
[Docking][Data] [Docking][Data]
DockSpace ID=0x0AC2E849 Window=0xD0388BC8 Pos=0,34 Size=1920,976 Split=Y DockSpace ID=0x0AC2E849 Window=0xD0388BC8 Pos=0,34 Size=2560,1336 Split=Y
DockNode ID=0x00000005 Parent=0x0AC2E849 SizeRef=1920,428 Split=X DockNode ID=0x00000005 Parent=0x0AC2E849 SizeRef=1920,704 Split=X
DockNode ID=0x00000002 Parent=0x00000005 SizeRef=1360,645 Split=X Selected=0xD9E076F4 DockNode ID=0x00000002 Parent=0x00000005 SizeRef=1360,645 Split=X Selected=0xD9E076F4
DockNode ID=0x00000001 Parent=0x00000002 SizeRef=431,976 Selected=0x16E3C1E7 DockNode ID=0x00000001 Parent=0x00000002 SizeRef=557,976 Selected=0x16E3C1E7
DockNode ID=0x00000004 Parent=0x00000002 SizeRef=927,976 CentralNode=1 Selected=0xD9E076F4 DockNode ID=0x00000004 Parent=0x00000002 SizeRef=1441,976 CentralNode=1 Selected=0x0F5FFC8C
DockNode ID=0x00000003 Parent=0x00000005 SizeRef=558,645 Selected=0x9876A79B DockNode ID=0x00000003 Parent=0x00000005 SizeRef=558,645 Selected=0x9876A79B
DockNode ID=0x00000006 Parent=0x0AC2E849 SizeRef=1920,546 Selected=0x018A0F9B DockNode ID=0x00000006 Parent=0x0AC2E849 SizeRef=1920,630 Selected=0x018A0F9B
DockSpace ID=0xA1672E74 Pos=0,34 Size=1920,976 CentralNode=1 Selected=0x9ED090AF DockSpace ID=0xA1672E74 Pos=0,34 Size=1920,976 CentralNode=1 Selected=0x9ED090AF