Files
XCEngine/editor/src/Viewport/SceneViewportOverlayFrameCache.h

65 lines
1.8 KiB
C++

#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