feat: ImGui docking Editor + 显示链/帧同步/输入语义重构
- App/editor: Hierarchy/Inspector/Viewport/Stats 四面板 + DockBuilder 默认布局,main.cpp 瘦身为场景搭建与生命周期 - 显示链: Tonemap→PresentTarget 经 ImGui::Image 呈现(零色偏),backbuffer 仅承载 ImGui;Direct/Viewport 双显示模式 + 面板分辨率上报 - 帧首同步 BeginFrameSync: resize/vsync/尺寸/模式意图统一帧首落定(修描述符悬垂);修复 vsync 意图未落 swapchain 导致的每帧重建交换链 - 输入: Editor 每帧判定键盘/鼠标归属(打字让位、Viewport hover/focus 放行、Fullscreen 全放行) - 材质: roughness 独立槽位 + 非 glTF 金属/粗糙贴图映射;透明队列 depthWrite=FALSE + translucent 独立 shader + scratch 清帧 - FBX: 非蒙皮网格烘焙节点链全局变换(Z-up 旋转/单位换算落顶点) - Hierarchy 行 ImGui ID 以 UUID 作用域(重名不冲突、改名不丢选中)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// EditorContext:Editor 层与 SandboxApp 之间的桥接上下文。
|
||||
//
|
||||
// Editor 是 App 层代码(不属于引擎),它需要的引擎门面与沙盒能力
|
||||
// 全部经此聚合注入——面板只认识 EditorContext,不反向依赖 main.cpp。
|
||||
//
|
||||
|
||||
#ifndef HELLOVULKAN_EDITORCONTEXT_H
|
||||
#define HELLOVULKAN_EDITORCONTEXT_H
|
||||
|
||||
#include <Engine/Core/Application.h>
|
||||
#include <Engine/ECS/Scene.h>
|
||||
#include <Engine/Assets/AssetManager.h>
|
||||
#include <Engine/Renderer/Renderer.h>
|
||||
#include <Engine/Renderer/SceneTypes.h> // kDisplayViewport / kDisplayDirect
|
||||
|
||||
#include <functional>
|
||||
|
||||
// 可切换环境(IBL 动态切换):StatsPanel 的 Combo 与 SandboxApp 的
|
||||
// 加载逻辑共用这一张表(下标即身份)。
|
||||
inline constexpr const char *kEnvPaths[] = {
|
||||
"assets/textures/venice_dawn_1_4k.hdr",
|
||||
"assets/textures/rooitou_park_4k.hdr",
|
||||
"assets/textures/pink_sunrise_4k.hdr",
|
||||
"assets/textures/birchwood_4k.hdr",
|
||||
};
|
||||
inline constexpr const char *kEnvNames[] = {
|
||||
"Venice Dawn", "Rooitou Park", "Pink Sunrise", "Birchwood",
|
||||
};
|
||||
inline constexpr int kEnvCount = 4;
|
||||
inline constexpr int kDefaultEnv = 0;
|
||||
|
||||
// 沙盒特有状态(面板可选读取,空指针 = 该面板区块不显示)
|
||||
struct EditorContext {
|
||||
// 引擎门面
|
||||
Engine::Renderer *renderer = nullptr;
|
||||
Engine::ECS::Scene *scene = nullptr;
|
||||
Engine::Assets::AssetManager *assets = nullptr;
|
||||
Engine::Application *app = nullptr;
|
||||
|
||||
std::function<int()> getEnvIndex; // 当前环境表下标
|
||||
std::function<void(int)> setEnvIndex;
|
||||
|
||||
// 冻结动画时钟(沙盒 spinners 用;保留原 Scene Debug 行为)
|
||||
bool *pauseAnim = nullptr;
|
||||
};
|
||||
|
||||
#endif //HELLOVULKAN_EDITORCONTEXT_H
|
||||
Reference in New Issue
Block a user