Refactor editor rendering contracts
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "Viewport/EditorViewportPicking.h"
|
||||
|
||||
#include <XCEngine/RHI/RHICommandQueue.h>
|
||||
#include <XCEngine/RHI/RHIEnums.h>
|
||||
#include <XCEngine/RHI/RHITexture.h>
|
||||
#include <XCEngine/Rendering/Picking/ObjectIdCodec.h>
|
||||
#include <XCEngine/UI/Types.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
@@ -36,28 +37,6 @@ struct ViewportObjectIdReadbackRequest {
|
||||
std::uint32_t pixelY = 0;
|
||||
};
|
||||
|
||||
enum class ViewportObjectIdPickStatus : std::uint8_t {
|
||||
Unavailable = 0,
|
||||
Success,
|
||||
ReadbackFailed
|
||||
};
|
||||
|
||||
struct ViewportObjectIdPickResult {
|
||||
ViewportObjectIdPickStatus status = ViewportObjectIdPickStatus::Unavailable;
|
||||
std::uint64_t frameSerial = 0u;
|
||||
::XCEngine::Rendering::RenderObjectId renderObjectId =
|
||||
::XCEngine::Rendering::kInvalidRenderObjectId;
|
||||
std::uint64_t resolvedEntityId = 0u;
|
||||
|
||||
bool HasResolvedSample() const {
|
||||
return status == ViewportObjectIdPickStatus::Success;
|
||||
}
|
||||
|
||||
bool HasResolvedEntity() const {
|
||||
return HasResolvedSample() && resolvedEntityId != 0u;
|
||||
}
|
||||
};
|
||||
|
||||
inline bool CanPickViewportObjectId(const ViewportObjectIdPickContext& context) {
|
||||
return context.commandQueue != nullptr &&
|
||||
context.texture != nullptr &&
|
||||
|
||||
Reference in New Issue
Block a user