PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
scene_render_extractor_internal.h
1#pragma once
2
3#include "pixelbullet/scene/prefab_resolution.h"
4#include "pixelbullet/scene/render_data.h"
5
6#include <unordered_set>
7
8namespace pixelbullet::scene_render_extractor_internal
9{
10using HiddenRenderSourceSet = std::unordered_set<EntityId::ValueType>;
11
12glm::vec3 ResolveForwardDirection(const Transform& transform);
13
14std::optional<EntityId> SelectPrimaryCameraEntity(const Scene& scene);
15
16bool IsRenderSourceHidden(const HiddenRenderSourceSet* hidden_sources, EntityId entity);
17
18void ExtractEnvironment(const Scene& scene, SceneRenderData& render_data);
19void ExtractPrimaryView(const Scene& scene, const SceneResolvedTransforms& resolved_transforms, glm::uvec2 target_extent,
20 SceneRenderData& render_data);
21
22glm::mat4 ResolveSceneWorldMatrix(const SceneResolvedTransforms& resolved_transforms, EntityId entity, const Transform& transform);
23Transform ResolveSceneWorldTransform(const SceneResolvedTransforms& resolved_transforms, EntityId entity, const Transform& transform);
24void ExtractSceneEntities(const Scene& scene, const SceneResolvedTransforms& resolved_transforms,
25 const SceneMorphWeightOverrides* morph_weight_overrides, SceneRenderData& render_data,
26 const HiddenRenderSourceSet* hidden_sources = nullptr);
27
28glm::mat4 ResolvePrefabWorldMatrix(const ResolvedPrefabInstance& instance, EntityId prefab_entity);
29bool ResolvePrefabWorldTransform(const ResolvedPrefabInstance& instance, EntityId prefab_entity, const Transform& local_transform,
30 Transform& world_transform);
31void ExtractPrefabInstances(const std::vector<ResolvedPrefabInstance>& instances, SceneRenderData& render_data,
32 const HiddenRenderSourceSet* hidden_sources = nullptr);
33} // namespace pixelbullet::scene_render_extractor_internal