/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #pragma once #include namespace ScriptCanvasTests { class EntityRefTestEvents : public AZ::EBusTraits { public: static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; using BusIdType = AZ::EntityId; virtual void TestEvent(AZ::EntityId, bool) = 0; }; using EntityRefTestEventBus = AZ::EBus; class TestComponent : public AZ::Component , EntityRefTestEventBus::Handler { public: AZ_COMPONENT(TestComponent, "{527680AE-BF46-4BC8-A923-A39B458A3B53}", AZ::Component); void Init() override {} void Activate() override { EntityRefTestEventBus::Handler::BusConnect(GetEntityId()); } void Deactivate() override { EntityRefTestEventBus::Handler::BusDisconnect(); } void TestEvent(AZ::EntityId referencedEntity, bool shouldBeSelf) override { // validate entity if (shouldBeSelf) { EXPECT_TRUE(GetEntity()->GetId() == referencedEntity); } AZ_TracePrintf("Script Canvas", "TestEvent handled by: %s\n", GetEntity()->GetName().c_str()); } static void Reflect(AZ::ReflectContext* reflection) { AZ::SerializeContext* serializeContext = azrtti_cast(reflection); if (serializeContext) { serializeContext->Class() ->Version(0) ; } AZ::BehaviorContext* behaviorContext = azrtti_cast(reflection); if (behaviorContext) { behaviorContext->EBus("EntityRefTestEventBus") ->Event("TestEvent", &EntityRefTestEvents::TestEvent) ; } } }; }