Skip to main content

SceneToViewportMap Class

Maps scenes to their associated viewports for rendering. More...

Declaration

class helios::engine::modules::scene::types::SceneToViewportMap { ... }

Public Constructors Index

SceneToViewportMap ()=default

Public Member Functions Index

booladd (const SceneHandle sceneHandle, const ViewportHandle viewportHandle)

Registers a scene-viewport association. More...

SceneHandlesceneHandle (const ViewportHandle viewportHandle) const noexcept

Returns the scene associated with a viewport. More...

std::span< const ViewportHandle >viewportHandles (const SceneHandle sceneHandle) const noexcept

Returns all viewports associated with a scene. More...

Private Member Attributes Index

std::vector< std::vector< ViewportHandle > >sceneToViewportHandles_

Scene-indexed list of associated viewport handles. More...

std::vector< SceneHandle >viewportToSceneHandles_

Viewport-indexed reverse lookup to the owning scene handle. More...

Description

Maps scenes to their associated viewports for rendering.

SceneToViewportMap maintains the relationship between Scene objects and Viewport objects. A scene can be rendered through multiple viewports (e.g., split-screen), and a viewport renders exactly one scene (1:N).

See Also

SceneRenderingSystem

See Also

Scene

See Also

Viewport

Definition at line 32 of file SceneToViewportMap.ixx.

Public Constructors

SceneToViewportMap()

helios::engine::modules::scene::types::SceneToViewportMap::SceneToViewportMap ()
explicit default

Definition at line 46 of file SceneToViewportMap.ixx.

Public Member Functions

add()

bool helios::engine::modules::scene::types::SceneToViewportMap::add (const SceneHandle sceneHandle, const ViewportHandle viewportHandle)
inline

Registers a scene-viewport association.

Adds the viewport to the scene's viewport list. A scene can have multiple viewports, but each viewport can only be added once.

Parameters
sceneHandle

Handle of the scene to associate.

viewportHandle

Handle of the viewport to register.

Returns

true if the viewportHandle was successfully registered for the SceneHandle, otehrwise false

Definition at line 60 of file SceneToViewportMap.ixx.

60 bool add(const SceneHandle sceneHandle, const ViewportHandle viewportHandle) {
61
62 const auto denseSceneIdx = sceneHandle.entityId;
63 const auto denseViewportIdx = viewportHandle.entityId;
64
65 // assert that the viewport was not already registered.
66 if (viewportHandle.entityId >= viewportToSceneHandles_.size()
67 || !viewportToSceneHandles_[denseViewportIdx].isValid()) {
68 assert(false && "Viewport already exists");
69 return false;
70 }
71
72 // scene idx to viewport handles
73 if (sceneToViewportHandles_.size() <= denseSceneIdx) {
74 sceneToViewportHandles_.resize(denseSceneIdx + 1);
75 }
76 sceneToViewportHandles_[denseSceneIdx].push_back(viewportHandle);
77
78 // viewport idx to scene handles
79 if (viewportToSceneHandles_.size() <= denseViewportIdx) {
80 viewportToSceneHandles_.resize(denseViewportIdx + 1);
81 }
82 viewportToSceneHandles_[denseViewportIdx] = sceneHandle;
83
84 return true;
85 }

Reference sceneHandle.

sceneHandle()

SceneHandle helios::engine::modules::scene::types::SceneToViewportMap::sceneHandle (const ViewportHandle viewportHandle)
inline nodiscard noexcept

Returns the scene associated with a viewport.

Parameters
viewportHandle

Handle of the viewport to look up.

Returns

The associated scene handle, or an invalid handle if not found.

Definition at line 94 of file SceneToViewportMap.ixx.

94 [[nodiscard]] SceneHandle sceneHandle(const ViewportHandle viewportHandle) const noexcept {
95 const auto denseViewportIdx = viewportHandle.entityId;
96
97 if (viewportToSceneHandles_.size() <= denseViewportIdx) {
98 return SceneHandle{};
99 }
100
101 return viewportToSceneHandles_[denseViewportIdx];
102 }

Referenced by add and viewportHandles.

viewportHandles()

std::span< const ViewportHandle > helios::engine::modules::scene::types::SceneToViewportMap::viewportHandles (const SceneHandle sceneHandle)
inline nodiscard noexcept

Returns all viewports associated with a scene.

Parameters
sceneHandle

Handle of the scene to look up.

Returns

A span of viewport handles, or an empty span if not found.

Definition at line 111 of file SceneToViewportMap.ixx.

111 [[nodiscard]] std::span<const ViewportHandle> viewportHandles(const SceneHandle sceneHandle) const noexcept {
112
113 const auto denseSceneIdx = sceneHandle.entityId;
114
115 if (sceneToViewportHandles_.size() <= denseSceneIdx) {
116 return {};
117 }
118
119 return sceneToViewportHandles_[denseSceneIdx];
120 }

Reference sceneHandle.

Private Member Attributes

sceneToViewportHandles_

std::vector<std::vector<ViewportHandle> > helios::engine::modules::scene::types::SceneToViewportMap::sceneToViewportHandles_

Scene-indexed list of associated viewport handles.

Definition at line 37 of file SceneToViewportMap.ixx.

37 std::vector<std::vector<ViewportHandle>> sceneToViewportHandles_;

viewportToSceneHandles_

std::vector<SceneHandle> helios::engine::modules::scene::types::SceneToViewportMap::viewportToSceneHandles_

Viewport-indexed reverse lookup to the owning scene handle.

Definition at line 42 of file SceneToViewportMap.ixx.

42 std::vector<SceneHandle> viewportToSceneHandles_;

The documentation for this class was generated from the following file:


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.