PersistentIdComponent.cpp 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <Components/PersistentIdComponent.h>
  9. namespace GraphCanvas
  10. {
  11. //////////////////////////
  12. // PersistentIdComponent
  13. //////////////////////////
  14. void PersistentIdComponent::Reflect(AZ::ReflectContext* reflectContext)
  15. {
  16. AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(reflectContext);
  17. if (serializeContext)
  18. {
  19. serializeContext->Class<PersistentIdComponentSaveData, ComponentSaveData>()
  20. ->Version(1)
  21. ->Field("PersistentId", &PersistentIdComponentSaveData::m_persistentId)
  22. ;
  23. serializeContext->Class<PersistentIdComponent, AZ::Component>()
  24. ->Version(1)
  25. ->Field("SaveData", &PersistentIdComponent::m_saveData)
  26. ;
  27. }
  28. }
  29. PersistentIdComponent::PersistentIdComponent()
  30. : AZ::Component()
  31. , m_previousId(PersistentGraphMemberId::CreateNull())
  32. {
  33. }
  34. void PersistentIdComponent::Init()
  35. {
  36. m_previousId = PersistentGraphMemberId::CreateNull();
  37. }
  38. void PersistentIdComponent::Activate()
  39. {
  40. SceneMemberNotificationBus::Handler::BusConnect(GetEntityId());
  41. m_saveData.Activate(GetEntityId());
  42. }
  43. void PersistentIdComponent::Deactivate()
  44. {
  45. PersistentIdRequestBus::Handler::BusDisconnect();
  46. PersistentMemberRequestBus::Handler::BusDisconnect();
  47. }
  48. void PersistentIdComponent::OnSceneSet(const AZ::EntityId& graphId)
  49. {
  50. if (!PersistentIdRequestBus::Handler::BusIsConnected())
  51. {
  52. PersistentIdRequestBus::Handler::BusConnect(m_saveData.m_persistentId);
  53. PersistentMemberRequestBus::Handler::BusConnect(GetEntityId());
  54. }
  55. else if (!graphId.IsValid())
  56. {
  57. PersistentIdRequestBus::Handler::BusDisconnect();
  58. PersistentMemberRequestBus::Handler::BusDisconnect();
  59. }
  60. }
  61. void PersistentIdComponent::OnSceneMemberDeserialized(const AZ::EntityId& /*graphId*/, const GraphSerialization& /*serializationTarget*/)
  62. {
  63. m_previousId = m_saveData.m_persistentId;
  64. m_saveData.RemapId();
  65. }
  66. AZ::EntityId PersistentIdComponent::MapToEntityId() const
  67. {
  68. return GetEntityId();
  69. }
  70. PersistentGraphMemberId PersistentIdComponent::GetPreviousGraphMemberId() const
  71. {
  72. return m_previousId;
  73. }
  74. PersistentGraphMemberId PersistentIdComponent::GetPersistentGraphMemberId() const
  75. {
  76. return m_saveData.m_persistentId;
  77. }
  78. }