3
0

UiCanvasLuaBus.cpp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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 "UiCanvasLuaBus.h"
  9. #include "UiCanvasComponent.h"
  10. #include <LyShine/Bus/UiElementBus.h>
  11. #include <AzCore/Component/ComponentApplicationBus.h>
  12. #include <AzCore/Serialization/SerializeContext.h>
  13. #include <AzCore/Script/ScriptContextAttributes.h>
  14. #include <AzCore/RTTI/BehaviorContext.h>
  15. namespace AZ
  16. {
  17. AZ_TYPE_INFO_SPECIALIZE(UiCanvasLuaProxy, "{AE6EE082-AD58-480A-8B53-E98B79F91368}");
  18. }
  19. ////////////////////////////////////////////////////////////////////////////////////////////////////
  20. // PUBLIC MEMBER FUNCTIONS
  21. ////////////////////////////////////////////////////////////////////////////////////////////////////
  22. AZ::EntityId UiCanvasLuaProxy::FindElementById(LyShine::ElementId id)
  23. {
  24. AZ::EntityId entityId;
  25. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  26. "UiCanvasLuaBus:FindElementById is deprecated. Please use UiCanvasBus:FindElementByName instead\n");
  27. // Forward the call to UiCanvasBus and return its result
  28. AZ::Entity* element = nullptr;
  29. UiCanvasBus::EventResult(element, m_targetEntity, &UiCanvasBus::Events::FindElementById, id);
  30. if (element)
  31. {
  32. entityId = element->GetId();
  33. }
  34. else
  35. {
  36. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  37. "UiCanvasLuaProxy:FindElementById: Couldn't find element with Id: %d\n",
  38. id);
  39. }
  40. return entityId;
  41. }
  42. AZ::EntityId UiCanvasLuaProxy::FindElementByName(const LyShine::NameType& name)
  43. {
  44. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  45. "UiCanvasLuaBus:FindElementByName is deprecated. Please use UiCanvasBus:FindElementByName instead\n");
  46. AZ::EntityId entityId;
  47. AZ::Entity* element = nullptr;
  48. UiCanvasBus::EventResult(element, m_targetEntity, &UiCanvasBus::Events::FindElementByName, name);
  49. if (element)
  50. {
  51. entityId = element->GetId();
  52. }
  53. else
  54. {
  55. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  56. "UiCanvasLuaProxy:FindElementByName: Couldn't find element with name: %s\n",
  57. name.c_str());
  58. }
  59. return entityId;
  60. }
  61. bool UiCanvasLuaProxy::GetEnabled()
  62. {
  63. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  64. "UiCanvasLuaBus:GetEnabled is deprecated. Please use UiCanvasBus:GetEnabled instead\n");
  65. bool enabled = false;
  66. UiCanvasBus::EventResult(enabled, m_targetEntity, &UiCanvasBus::Events::GetEnabled);
  67. return enabled;
  68. }
  69. void UiCanvasLuaProxy::SetEnabled(bool enabled)
  70. {
  71. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  72. "UiCanvasLuaBus:SetEnabled is deprecated. Please use UiCanvasBus:SetEnabled instead\n");
  73. UiCanvasBus::Event(m_targetEntity, &UiCanvasBus::Events::SetEnabled, enabled);
  74. }
  75. void UiCanvasLuaProxy::BusConnect(AZ::EntityId entityId)
  76. {
  77. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  78. "UiCanvasLuaProxy:BusConnect is deprecated. Please use the UiCanvasBus instead of the UiCanvasLuaBus and UiCanvasLuaProxy\n");
  79. AZ::Entity* canvasEntity = nullptr;
  80. AZ::ComponentApplicationBus::BroadcastResult(canvasEntity, &AZ::ComponentApplicationBus::Events::FindEntity, entityId);
  81. if (canvasEntity)
  82. {
  83. m_targetEntity = entityId;
  84. // Use this object to handle UiCanvasLuaBus calls for the given entity
  85. UiCanvasLuaBus::Handler::BusConnect(m_targetEntity);
  86. }
  87. else
  88. {
  89. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING, "UiCanvasLuaProxy:BusConnect: Canvas entity not found by ID\n");
  90. }
  91. }
  92. AZ::EntityId UiCanvasLuaProxy::LoadCanvas(const char* canvasFilename)
  93. {
  94. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  95. "UiCanvasLuaProxy:LoadCanvas is deprecated. Please use UiCanvasManagerBus:LoadCanvas instead\n");
  96. return AZ::Interface<ILyShine>::Get()->LoadCanvas(canvasFilename);
  97. }
  98. void UiCanvasLuaProxy::UnloadCanvas(AZ::EntityId canvasEntityId)
  99. {
  100. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING,
  101. "UiCanvasLuaProxy:UnloadCanvas is deprecated. Please use UiCanvasManagerBus:UnloadCanvas instead\n");
  102. // Make sure that the entity has a canvas component
  103. AZ::Entity* canvasEntity = nullptr;
  104. AZ::ComponentApplicationBus::BroadcastResult(canvasEntity, &AZ::ComponentApplicationBus::Events::FindEntity, canvasEntityId);
  105. if (canvasEntity)
  106. {
  107. UiCanvasComponent* canvasComponent = canvasEntity->FindComponent<UiCanvasComponent>();
  108. if (canvasComponent)
  109. {
  110. AZ::Interface<ILyShine>::Get()->ReleaseCanvas(canvasEntityId, false);
  111. }
  112. else
  113. {
  114. CryWarning(VALIDATOR_MODULE_SYSTEM, VALIDATOR_WARNING, "UiCanvasLuaProxy:UnloadCanvas: Canvas entity does not have a canvas component\n");
  115. }
  116. }
  117. }
  118. ////////////////////////////////////////////////////////////////////////////////////////////////////
  119. // PUBLIC STATIC MEMBER FUNCTIONS
  120. ////////////////////////////////////////////////////////////////////////////////////////////////////
  121. void UiCanvasLuaProxy::Reflect(AZ::ReflectContext* context)
  122. {
  123. AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context);
  124. if (behaviorContext)
  125. {
  126. behaviorContext->EBus<UiCanvasLuaBus>("UiCanvasLuaBus")
  127. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
  128. ->Event("FindElementById", &UiCanvasLuaBus::Events::FindElementById)
  129. ->Event("FindElementByName", &UiCanvasLuaBus::Events::FindElementByName)
  130. ->Event("GetEnabled", &UiCanvasLuaBus::Events::GetEnabled)
  131. ->Event("SetEnabled", &UiCanvasLuaBus::Events::SetEnabled);
  132. behaviorContext->Class<UiCanvasLuaProxy>()
  133. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
  134. ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value)
  135. ->Method("LoadCanvas", &UiCanvasLuaProxy::LoadCanvas)
  136. ->Method("UnloadCanvas", &UiCanvasLuaProxy::UnloadCanvas)
  137. ->Method("BusConnect", &UiCanvasLuaProxy::BusConnect)
  138. ;
  139. }
  140. }