/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/GameEngine/Gameplay/Implementation/PlayerStartPointComponent.cpp
109 строк
3 KB
Jan Krassnigg
Fixed #1164: Made it easier to reflect resource handles (#1376)
23 авг 2024, 08:36
Не верифицирован
23 авг 2024, 08:36
8a46458
Код
Авторство
О чём код?
#include <GameEngine/GameEnginePCH.h> #include <Core/Prefabs/PrefabReferenceComponent.h> #include <Core/Prefabs/PrefabResource.h> #include <Core/WorldSerializer/WorldReader.h> #include <Core/WorldSerializer/WorldWriter.h> #include <GameEngine/Gameplay/PlayerStartPointComponent.h> ////////////////////////////////////////////////////////////////////////// // clang-format off EZ_BEGIN_COMPONENT_TYPE(ezPlayerStartPointComponent, 2, ezComponentMode::Static) { EZ_BEGIN_PROPERTIES { EZ_RESOURCE_MEMBER_PROPERTY("PlayerPrefab", m_hPlayerPrefab)->AddAttributes(new ezAssetBrowserAttribute("CompatibleAsset_Prefab", ezDependencyFlags::Package)), EZ_MAP_ACCESSOR_PROPERTY("Parameters", GetParameters, GetParameter, SetParameter, RemoveParameter)->AddAttributes(new ezExposedParametersAttribute("PlayerPrefab")), } EZ_END_PROPERTIES; EZ_BEGIN_ATTRIBUTES { new ezCategoryAttribute("Gameplay"), new ezDirectionVisualizerAttribute(ezBasisAxis::PositiveX, 0.5f, ezColor::DarkSlateBlue), } EZ_END_ATTRIBUTES; } EZ_END_DYNAMIC_REFLECTED_TYPE; // clang-format on ezPlayerStartPointComponent::ezPlayerStartPointComponent() = default; ezPlayerStartPointComponent::~ezPlayerStartPointComponent() = default; void ezPlayerStartPointComponent::SerializeComponent(ezWorldWriter& inout_stream) const { SUPER::SerializeComponent(inout_stream); auto& s = inout_stream.GetStream(); s << m_hPlayerPrefab; ezPrefabReferenceComponent::SerializePrefabParameters(*GetWorld(), inout_stream, m_Parameters); } void ezPlayerStartPointComponent::DeserializeComponent(ezWorldReader& inout_stream) { SUPER::DeserializeComponent(inout_stream); const ezUInt32 uiVersion = inout_stream.GetComponentTypeVersion(GetStaticRTTI()); auto& s = inout_stream.GetStream(); s >> m_hPlayerPrefab; if (uiVersion >= 2) { ezPrefabReferenceComponent::DeserializePrefabParameters(m_Parameters, inout_stream); } } void ezPlayerStartPointComponent::SetPlayerPrefab(const ezPrefabResourceHandle& hPrefab) { m_hPlayerPrefab = hPrefab; } const ezPrefabResourceHandle& ezPlayerStartPointComponent::GetPlayerPrefab() const { return m_hPlayerPrefab; } const ezRangeView<const char*, ezUInt32> ezPlayerStartPointComponent::GetParameters() const { return ezRangeView<const char*, ezUInt32>([]() -> ezUInt32 { return 0; }, [this]() -> ezUInt32 { return m_Parameters.GetCount(); }, [](ezUInt32& ref_uiIt) { ++ref_uiIt; }, [this](const ezUInt32& uiIt) -> const char* { return m_Parameters.GetKey(uiIt).GetString().GetData(); }); } void ezPlayerStartPointComponent::SetParameter(const char* szKey, const ezVariant& value) { ezHashedString hs; hs.Assign(szKey); auto it = m_Parameters.Find(hs); if (it != ezInvalidIndex && m_Parameters.GetValue(it) == value) return; m_Parameters[hs] = value; } void ezPlayerStartPointComponent::RemoveParameter(const char* szKey) { m_Parameters.RemoveAndCopy(ezTempHashedString(szKey)); } bool ezPlayerStartPointComponent::GetParameter(const char* szKey, ezVariant& out_value) const { ezUInt32 it = m_Parameters.Find(szKey); if (it == ezInvalidIndex) return false; out_value = m_Parameters.GetValue(it); return true; } EZ_STATICLINK_FILE(GameEngine, GameEngine_Gameplay_Implementation_PlayerStartPointComponent);