3#include "pixelbullet/scene/entity_id.h"
4#include "pixelbullet/scene/components/transform.h"
5#include "pixelbullet/serialization/node.h"
12namespace prefab_transform_overrides_component_internal
14[[nodiscard]]
inline bool TransformValuesEqual(
const Transform& lhs,
const Transform& rhs)
noexcept
16 return lhs.position == rhs.position && lhs.rotation == rhs.rotation && lhs.scale == rhs.scale;
22 EntityId prefab_entity = EntityId::Invalid();
27 return prefab_entity == other.prefab_entity &&
28 prefab_transform_overrides_component_internal::TransformValuesEqual(transform, other.transform);
32inline void NormalizePrefabTransformOverrideEntries(std::vector<PrefabTransformOverrideEntry>& overrides)
34 std::vector<PrefabTransformOverrideEntry> normalized;
35 normalized.reserve(overrides.size());
38 if (!override_entry.prefab_entity)
43 std::erase_if(normalized, [&](
const PrefabTransformOverrideEntry& existing)
44 {
return existing.prefab_entity == override_entry.prefab_entity; });
45 normalized.push_back(std::move(override_entry));
48 overrides = std::move(normalized);
53 node[
"entity"] << entry.prefab_entity;
54 node[
"transform"] << entry.transform;
60 if (node.HasProperty(
"entity"))
62 node[
"entity"] >> entry.prefab_entity;
66 entry.prefab_entity = EntityId::Invalid();
69 if (node.HasProperty(
"transform"))
71 node[
"transform"] >> entry.transform;
83 std::vector<PrefabTransformOverrideEntry> transform_overrides;
88 std::find_if(transform_overrides.begin(), transform_overrides.end(),
90 return it == transform_overrides.end() ? nullptr : &(*it);
95 return transform_overrides == other.transform_overrides;
101 if (!component.transform_overrides.empty())
103 node[
"transformOverrides"] << component.transform_overrides;
110 if (node.HasProperty(
"transformOverrides"))
112 node[
"transformOverrides"] >> component.transform_overrides;
116 component.transform_overrides.clear();
119 NormalizePrefabTransformOverrideEntries(component.transform_overrides);
Definition entity_id.h:11
Represents a hierarchical node capable of storing various data types and supporting YAML serializatio...
Definition node.h:45
Definition prefab_transform_overrides_component.h:21