3#include "pixelbullet/filesystem/virtual_path.h"
4#include "pixelbullet/scene/prefab_asset.h"
5#include "pixelbullet/scene/prefab_asset_io.h"
6#include "pixelbullet/scene/transform_resolution.h"
16#include <unordered_map>
28 EntityId wrapper_prefab_entity = EntityId::Invalid();
30 std::shared_ptr<const PrefabAsset> prefab;
33 glm::mat4 wrapper_world_matrix = glm::mat4(1.0f);
34 std::vector<ResolvedNestedPrefabInstance> nested_instances;
36 [[nodiscard]]
bool IsValid()
const noexcept
38 return wrapper_prefab_entity && prefab && prefab->IsValid();
44 EntityId instance_entity = EntityId::Invalid();
46 std::shared_ptr<const PrefabAsset> prefab;
49 glm::mat4 wrapper_world_matrix = glm::mat4(1.0f);
50 std::vector<ResolvedNestedPrefabInstance> nested_instances;
52 [[nodiscard]]
bool IsValid()
const noexcept
54 return instance_entity && prefab && prefab->IsValid();
60 EntityId::ValueType root_instance = EntityId::Invalid().Raw();
61 std::vector<EntityId::ValueType> wrapper_path;
70 std::size_t seed = std::hash<EntityId::ValueType>{}(key.root_instance);
71 for (
const EntityId::ValueType path_entity : key.wrapper_path)
73 seed ^= std::hash<EntityId::ValueType>{}(path_entity) + 0x9e3779b9u + (seed << 6u) + (seed >> 2u);
80 const std::vector<EntityId>& wrapper_path)
83 key.root_instance = root_instance.Raw();
84 key.wrapper_path.reserve(wrapper_path.size());
85 for (
const EntityId wrapper : wrapper_path)
87 key.wrapper_path.push_back(wrapper.Raw());
94 std::unordered_map<EntityId::ValueType, SceneTransformOverrides> values;
95 std::unordered_map<SceneNestedPrefabOverrideKey, SceneTransformOverrides, SceneNestedPrefabOverrideKeyHash> nested_values;
97 [[nodiscard]]
bool Empty()
const noexcept
99 return values.empty() && nested_values.empty();
104 const auto it = values.find(instance_entity.Raw());
105 return it == values.end() ? nullptr : &it->second;
111 const auto it = nested_values.find(key);
112 return it == nested_values.end() ? nullptr : &it->second;
117 return nested_values.try_emplace(MakeSceneNestedPrefabOverrideKey(root_instance, wrapper_path),
SceneTransformOverrides{})
124 std::unordered_map<EntityId::ValueType, SceneMorphWeightOverrides> values;
125 std::unordered_map<SceneNestedPrefabOverrideKey, SceneMorphWeightOverrides, SceneNestedPrefabOverrideKeyHash> nested_values;
127 [[nodiscard]]
bool Empty()
const noexcept
129 return values.empty() && nested_values.empty();
134 const auto it = values.find(instance_entity.Raw());
135 return it == values.end() ? nullptr : &it->second;
141 const auto it = nested_values.find(key);
142 return it == nested_values.end() ? nullptr : &it->second;
147 return nested_values.try_emplace(MakeSceneNestedPrefabOverrideKey(root_instance, wrapper_path),
SceneMorphWeightOverrides{})
154 std::uint32_t root_instance_count = 0u;
155 std::uint32_t nested_instance_count = 0u;
156 std::uint32_t max_nested_depth = 0u;
157 std::uint32_t source_prefab_entity_count = 0u;
158 std::uint32_t transform_override_entry_count = 0u;
159 std::uint32_t morph_override_entry_count = 0u;
160 std::uint32_t nested_recursion_call_count = 0u;
161 float morph_override_apply_milliseconds = 0.0f;
162 float wrapper_world_matrix_milliseconds = 0.0f;
163 float root_instance_assembly_milliseconds = 0.0f;
164 float nested_instance_assembly_milliseconds = 0.0f;
165 float nested_traversal_milliseconds = 0.0f;
166 float nested_recursion_inclusive_milliseconds = 0.0f;
167 float instance_store_milliseconds = 0.0f;
172 float load_prefab_assets_milliseconds = 0.0f;
173 float evaluate_prefab_animation_milliseconds = 0.0f;
174 float resolve_prefab_transforms_milliseconds = 0.0f;
175 float build_resolved_instances_milliseconds = 0.0f;
182 std::string skeleton_clip_name;
183 float time_seconds = 0.0f;
189 [[nodiscard]]
static std::vector<ResolvedPrefabInstance>
Definition entity_id.h:12
Definition filesystem.h:20
Definition prefab_resolution.h:187
Definition virtual_path.h:10
Definition prefab_asset_io.h:59
Definition prefab_resolution.h:27
Definition prefab_resolution.h:43
Definition animation_evaluation.h:105
Definition prefab_resolution.h:67
Definition prefab_resolution.h:59
Definition prefab_resolution.h:181
Definition prefab_resolution.h:123
Definition prefab_resolution.h:171
Definition prefab_resolution.h:153