Extract scene viewport overlay frame cache module
This commit is contained in:
64
editor/src/Viewport/SceneViewportOverlayFrameCache.h
Normal file
64
editor/src/Viewport/SceneViewportOverlayFrameCache.h
Normal file
@@ -0,0 +1,64 @@
|
||||
#pragma once
|
||||
|
||||
#include "SceneViewportEditorOverlayData.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Components {
|
||||
class Scene;
|
||||
} // namespace Components
|
||||
|
||||
namespace Editor {
|
||||
|
||||
struct SceneViewportOverlayFrameCacheState {
|
||||
SceneViewportOverlayFrameData frameData = {};
|
||||
const Components::Scene* scene = nullptr;
|
||||
std::vector<uint64_t> selectedObjectIds = {};
|
||||
uint32_t viewportWidth = 0u;
|
||||
uint32_t viewportHeight = 0u;
|
||||
uint64_t contentSignature = 0u;
|
||||
bool cached = false;
|
||||
};
|
||||
|
||||
void ResetSceneViewportOverlayFrameCacheState(
|
||||
SceneViewportOverlayFrameCacheState& cacheState);
|
||||
|
||||
void ResolveSceneViewportOverlayFrameViewportSize(
|
||||
uint32_t requestedWidth,
|
||||
uint32_t requestedHeight,
|
||||
uint32_t renderWidth,
|
||||
uint32_t renderHeight,
|
||||
uint32_t& outWidth,
|
||||
uint32_t& outHeight);
|
||||
|
||||
bool AreEqualSceneViewportOverlayData(
|
||||
const SceneViewportOverlayData& lhs,
|
||||
const SceneViewportOverlayData& rhs);
|
||||
|
||||
uint64_t BuildSceneViewportOverlayContentSignature(
|
||||
const Components::Scene* scene,
|
||||
const std::vector<uint64_t>& selectedObjectIds);
|
||||
|
||||
bool ShouldRebuildSceneViewportOverlayFrameCache(
|
||||
const SceneViewportOverlayFrameCacheState& cacheState,
|
||||
const Components::Scene* scene,
|
||||
const SceneViewportOverlayData& overlay,
|
||||
uint32_t viewportWidth,
|
||||
uint32_t viewportHeight,
|
||||
const std::vector<uint64_t>& selectedObjectIds,
|
||||
uint64_t contentSignature,
|
||||
bool transformGizmoOverlayDirty);
|
||||
|
||||
void UpdateSceneViewportOverlayFrameCacheState(
|
||||
SceneViewportOverlayFrameCacheState& cacheState,
|
||||
const Components::Scene* scene,
|
||||
uint32_t viewportWidth,
|
||||
uint32_t viewportHeight,
|
||||
const std::vector<uint64_t>& selectedObjectIds,
|
||||
uint64_t contentSignature,
|
||||
const SceneViewportOverlayFrameData& frameData);
|
||||
|
||||
} // namespace Editor
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user