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();
// TerrainEditor::onImGui();
// viewport_onImGui();
AngelScriptEngine::render();
ImGui::ShowMetricsWindow();
Scene::gizmoRenderer.refresh();
ImGui::End();
}

View File

@ -4,6 +4,10 @@ FrameBuffer renderMeshPreview(GPUMesh mesh) {
return mainRenderService.renderMeshPreview(mesh);
}
FrameBuffer renderMeshPreview(GPUMesh mesh, float fase) {
return mainRenderService.renderMeshPreview(mesh, fase);
}
void setSceneCamera(SceneCamera sc) {
}
@ -18,12 +22,10 @@ class RenderService : Service {
shaderC.shader = Resource::loadShader("shader.glsl");
Engine::print("CAM : " + sceneCamera.transform.position.x + " " + sceneCamera.transform.scale.x + " : " + sceneCamera.camera.aspect);
sceneCamera.transform.position.z = -3;
sceneCamera.transform.position.y = 1;
}
FrameBuffer renderMeshPreview(GPUMesh mesh) {
@ -31,6 +33,18 @@ class RenderService : Service {
buffer.clearRGBA(0, 0, 0, 0);
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);
return buffer;

View File

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

View File

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