Finalize viewport host interface closure

This commit is contained in:
2026-04-04 18:15:04 +08:00
parent 0807b5a753
commit a9bf9ef35c
9 changed files with 66 additions and 47 deletions

View File

@@ -6,6 +6,7 @@
#include <XCEngine/RHI/RHIEnums.h>
#include <XCEngine/RHI/RHITexture.h>
#include <XCEngine/Rendering/ObjectIdEncoding.h>
#include <XCEngine/UI/Types.h>
#include <array>
#include <cstdint>
@@ -21,8 +22,8 @@ struct ViewportObjectIdPickContext {
uint32_t textureWidth = 0;
uint32_t textureHeight = 0;
bool hasValidFrame = false;
ImVec2 viewportSize = ImVec2(0.0f, 0.0f);
ImVec2 viewportMousePosition = ImVec2(0.0f, 0.0f);
::XCEngine::UI::UISize viewportSize = {};
::XCEngine::UI::UIPoint viewportMousePosition = {};
};
struct ViewportObjectIdReadbackRequest {
@@ -54,12 +55,12 @@ inline bool CanPickViewportObjectId(const ViewportObjectIdPickContext& context)
context.textureWidth > 0 &&
context.textureHeight > 0 &&
context.hasValidFrame &&
context.viewportSize.x > 1.0f &&
context.viewportSize.y > 1.0f &&
context.viewportSize.width > 1.0f &&
context.viewportSize.height > 1.0f &&
context.viewportMousePosition.x >= 0.0f &&
context.viewportMousePosition.y >= 0.0f &&
context.viewportMousePosition.x <= context.viewportSize.x &&
context.viewportMousePosition.y <= context.viewportSize.y;
context.viewportMousePosition.x <= context.viewportSize.width &&
context.viewportMousePosition.y <= context.viewportSize.height;
}
inline bool BuildViewportObjectIdReadbackRequest(