65 lines
1.8 KiB
C
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
|