ScriptCanvasTestBus.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  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 "ScriptCanvasTestBus.h"
  9. #include <AzCore/RTTI/BehaviorContext.h>
  10. #include <AzCore/Serialization/EditContext.h>
  11. #include <AzCore/Serialization/SerializeContext.h>
  12. #include <ScriptCanvas/Core/Attributes.h>
  13. namespace ScriptCanvasTesting
  14. {
  15. void Reflect(AZ::ReflectContext* context)
  16. {
  17. ScriptCanvasTesting::GlobalBusTraits::Reflect(context);
  18. ScriptCanvasTesting::LocalBusTraits::Reflect(context);
  19. ScriptCanvasTesting::PerformanceStressBusTraits::Reflect(context);
  20. ScriptCanvasTesting::NativeHandlingOnlyBusTraits::Reflect(context);
  21. ScriptCanvasTesting::TestTupleMethods::Reflect(context);
  22. ScriptCanvasTesting::TestGlobalMethods::Reflect(context);
  23. if (AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
  24. {
  25. behaviorContext->EnumProperty<(AZ::u32)TestEnum::Alpha>("ALPHA")
  26. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All);
  27. behaviorContext->EnumProperty<(AZ::u32)TestEnum::Bravo>("BRAVO")
  28. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All);
  29. behaviorContext->EnumProperty<(AZ::u32)TestEnum::Charlie>("CHARLIE")
  30. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All);
  31. }
  32. }
  33. class GlobalEBusHandler
  34. : public GlobalEBus::Handler
  35. , public AZ::BehaviorEBusHandler
  36. {
  37. public:
  38. AZ_EBUS_BEHAVIOR_BINDER(
  39. GlobalEBusHandler, "{CF167F12-0685-4347-A2DE-8D40186E7332}", AZ::SystemAllocator, AppendSweet, Increment, Not, Sum, Void,
  40. GetZeroParamEvent, GetByReferenceEvent, GetByValueEvent);
  41. AZStd::string AppendSweet(AZStd::string_view value) override
  42. {
  43. AZStd::string result;
  44. CallResult(result, FN_AppendSweet, value);
  45. return result;
  46. }
  47. int Increment(int value) override
  48. {
  49. int result;
  50. CallResult(result, FN_Increment, value);
  51. return result;
  52. }
  53. bool Not(bool value) override
  54. {
  55. bool result;
  56. CallResult(result, FN_Not, value);
  57. return result;
  58. }
  59. int Sum(int numberA, int numberB) override
  60. {
  61. int result(0);
  62. CallResult(result, FN_Sum, numberA, numberB);
  63. return result;
  64. }
  65. void Void(AZStd::string_view value) override
  66. {
  67. Call(FN_Void, value);
  68. }
  69. AZ::Event<>* GetZeroParamEvent() override
  70. {
  71. AZ::Event<>* azEvent = nullptr;
  72. CallResult(azEvent, FN_GetZeroParamEvent);
  73. return azEvent;
  74. }
  75. AZ::Event<AZStd::vector<AZStd::string>&>* GetByReferenceEvent() override
  76. {
  77. AZ::Event<AZStd::vector<AZStd::string>&>* azEvent = nullptr;
  78. CallResult(azEvent, FN_GetByReferenceEvent);
  79. return azEvent;
  80. }
  81. AZ::Event<int, bool, AZStd::string>* GetByValueEvent() override
  82. {
  83. AZ::Event<int, bool, AZStd::string>* azEvent = nullptr;
  84. CallResult(azEvent, FN_GetByValueEvent);
  85. return azEvent;
  86. }
  87. };
  88. void GlobalBusTraits::Reflect(AZ::ReflectContext* context)
  89. {
  90. if (AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
  91. {
  92. AZ::BehaviorAzEventDescription modObjectDesc, modValueDesc, modVoidDesc;
  93. modObjectDesc.m_eventName = "OnEvent-Reference";
  94. modObjectDesc.m_parameterNames = {"Object List"};
  95. modValueDesc.m_eventName = "OnEvent-Value";
  96. modValueDesc.m_parameterNames = {"A", "BB", "CCC"};
  97. modVoidDesc.m_eventName = "OnEvent-ZeroParam";
  98. behaviorContext->EBus<GlobalEBus>("GlobalEBus")
  99. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
  100. ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
  101. ->Handler<GlobalEBusHandler>()
  102. ->Event("AppendSweet", &GlobalEBus::Events::AppendSweet)
  103. ->Event("Increment", &GlobalEBus::Events::Increment)
  104. ->Event("Not", &GlobalEBus::Events::Not)
  105. ->Event("Sum", &GlobalEBus::Events::Sum)
  106. ->Event("Void", &GlobalEBus::Events::Void)
  107. ->Event("GetZeroParamEvent", &GlobalEBus::Events::GetZeroParamEvent)
  108. ->Attribute(AZ::Script::Attributes::AzEventDescription, modVoidDesc)
  109. ->Event("GetByReferenceEvent", &GlobalEBus::Events::GetByReferenceEvent)
  110. ->Attribute(AZ::Script::Attributes::AzEventDescription, modObjectDesc)
  111. ->Event("GetByValueEvent", &GlobalEBus::Events::GetByValueEvent)
  112. ->Attribute(AZ::Script::Attributes::AzEventDescription, modValueDesc);
  113. }
  114. }
  115. class PerformanceStressEBusHandler
  116. : public PerformanceStressEBus::Handler
  117. , public AZ::BehaviorEBusHandler
  118. {
  119. public:
  120. AZ_EBUS_BEHAVIOR_BINDER(
  121. PerformanceStressEBusHandler, "{EAE36675-F06B-4755-B3A5-CEC9495DC92E}", AZ::SystemAllocator
  122. , ForceStringCompare0
  123. , ForceStringCompare1
  124. , ForceStringCompare2
  125. , ForceStringCompare3
  126. , ForceStringCompare4
  127. , ForceStringCompare5
  128. , ForceStringCompare6
  129. , ForceStringCompare7
  130. , ForceStringCompare8
  131. , ForceStringCompare9
  132. );
  133. void ForceStringCompare0() override
  134. {
  135. Call(FN_ForceStringCompare0);
  136. }
  137. void ForceStringCompare1() override
  138. {
  139. Call(FN_ForceStringCompare1);
  140. }
  141. void ForceStringCompare2() override
  142. {
  143. Call(FN_ForceStringCompare2);
  144. }
  145. void ForceStringCompare3() override
  146. {
  147. Call(FN_ForceStringCompare3);
  148. }
  149. void ForceStringCompare4() override
  150. {
  151. Call(FN_ForceStringCompare4);
  152. }
  153. void ForceStringCompare5() override
  154. {
  155. Call(FN_ForceStringCompare5);
  156. }
  157. void ForceStringCompare6() override
  158. {
  159. Call(FN_ForceStringCompare6);
  160. }
  161. void ForceStringCompare7() override
  162. {
  163. Call(FN_ForceStringCompare7);
  164. }
  165. void ForceStringCompare8() override
  166. {
  167. Call(FN_ForceStringCompare8);
  168. }
  169. void ForceStringCompare9() override
  170. {
  171. Call(FN_ForceStringCompare9);
  172. }
  173. };
  174. void PerformanceStressBusTraits::Reflect(AZ::ReflectContext* context)
  175. {
  176. if (AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
  177. {
  178. behaviorContext->EBus<PerformanceStressEBus>("PerformanceStressEBus")
  179. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
  180. ->Handler<PerformanceStressEBusHandler>()
  181. ->Event("ForceStringCompare0", &PerformanceStressEBus::Events::ForceStringCompare0)
  182. ->Event("ForceStringCompare1", &PerformanceStressEBus::Events::ForceStringCompare1)
  183. ->Event("ForceStringCompare2", &PerformanceStressEBus::Events::ForceStringCompare2)
  184. ->Event("ForceStringCompare3", &PerformanceStressEBus::Events::ForceStringCompare3)
  185. ->Event("ForceStringCompare4", &PerformanceStressEBus::Events::ForceStringCompare4)
  186. ->Event("ForceStringCompare5", &PerformanceStressEBus::Events::ForceStringCompare5)
  187. ->Event("ForceStringCompare6", &PerformanceStressEBus::Events::ForceStringCompare6)
  188. ->Event("ForceStringCompare7", &PerformanceStressEBus::Events::ForceStringCompare7)
  189. ->Event("ForceStringCompare8", &PerformanceStressEBus::Events::ForceStringCompare8)
  190. ->Event("ForceStringCompare9", &PerformanceStressEBus::Events::ForceStringCompare9)
  191. ;
  192. }
  193. }
  194. class LocalEBusHandler
  195. : public LocalEBus::Handler
  196. , public AZ::BehaviorEBusHandler
  197. {
  198. public:
  199. AZ_EBUS_BEHAVIOR_BINDER(
  200. LocalEBusHandler, "{308650EE-061D-4090-A7FB-471885C8B6A5}", AZ::SystemAllocator, AppendSweet, Increment, Not, Void);
  201. AZStd::string AppendSweet(AZStd::string_view value) override
  202. {
  203. AZStd::string result;
  204. CallResult(result, FN_AppendSweet, value);
  205. return result;
  206. }
  207. int Increment(int value) override
  208. {
  209. int result;
  210. CallResult(result, FN_Increment, value);
  211. return result;
  212. }
  213. bool Not(bool value) override
  214. {
  215. bool result;
  216. CallResult(result, FN_Not, value);
  217. return result;
  218. }
  219. void Void(AZStd::string_view value) override
  220. {
  221. Call(FN_Void, value);
  222. }
  223. };
  224. void LocalBusTraits::Reflect(AZ::ReflectContext* context)
  225. {
  226. if (AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
  227. {
  228. behaviorContext->EBus<LocalEBus>("LocalEBus")
  229. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
  230. ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
  231. ->Handler<LocalEBusHandler>()
  232. ->Event("AppendSweet", &LocalEBus::Events::AppendSweet)
  233. ->Event("Increment", &LocalEBus::Events::Increment)
  234. ->Event("Not", &LocalEBus::Events::Not)
  235. ->Event("Void", &LocalEBus::Events::Void);
  236. }
  237. }
  238. void NativeHandlingOnlyBusTraits::Reflect(AZ::ReflectContext* context)
  239. {
  240. if (AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
  241. {
  242. behaviorContext->EBus<NativeHandlingOnlyEBus>("NativeHandlingOnlyEBus")
  243. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
  244. ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
  245. ->Event("AppendSweet", &NativeHandlingOnlyEBus::Events::AppendSweet)
  246. ->Event("Increment", &NativeHandlingOnlyEBus::Events::Increment)
  247. ->Event("Not", &NativeHandlingOnlyEBus::Events::Not)
  248. ->Event("TwistTypeEntityId", &NativeHandlingOnlyEBus::Events::TwistTypeEntityId)
  249. ->Event("TwistTypeVector3", &NativeHandlingOnlyEBus::Events::TwistTypeVector3)
  250. ->Event("TwistTupleEntityId", &NativeHandlingOnlyEBus::Events::TwistTupleEntityId)
  251. ->Event("TwistTupleVector3", &NativeHandlingOnlyEBus::Events::TwistTupleVector3)
  252. ->Event("Void", &NativeHandlingOnlyEBus::Events::Void);
  253. }
  254. }
  255. }