Files
o3de/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/ExecutionState.h
T
Steve Pham 38261d0800 Shorten copyright headers by splitting into 2 lines (#2213)
* Updated all copyright headers to split the longer original copyright line into 2 shorter lines

Signed-off-by: Steve Pham <spham@amazon.com>
2021-07-16 15:25:48 -07:00

93 lines
2.4 KiB
C++

/*
* 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 <AzCore/Component/EntityId.h>
#include <AzCore/EBus/Event.h>
#include <AzCore/Memory/Memory.h>
#include <AzCore/Memory/SystemAllocator.h>
#include <AzCore/RTTI/RTTI.h>
#include <AzCore/Script/ScriptAsset.h>
#include <ScriptCanvas/Asset/RuntimeAsset.h>
#include <ScriptCanvas/Execution/ExecutionStateDeclarations.h>
#include <ScriptCanvas/Grammar/PrimitivesDeclarations.h>
namespace AZ
{
class ReflectContext;
struct BehaviorValueParameter;
}
namespace ScriptCanvas
{
class RuntimeComponent;
struct ExecutionStateConfig
{
AZ::Data::Asset<RuntimeAsset> asset;
RuntimeComponent& component;
const RuntimeData& runtimeData;
ExecutionStateConfig(AZ::Data::Asset<RuntimeAsset> asset, RuntimeComponent& component);
};
class ExecutionState
: public AZStd::enable_shared_from_this<ExecutionState>
{
public:
AZ_RTTI(ExecutionState, "{85C66E59-F012-460E-9756-B36819753F4D}", AZStd::enable_shared_from_this<ExecutionState>);
AZ_CLASS_ALLOCATOR(ExecutionState, AZ::SystemAllocator, 0);
static ExecutionStatePtr Create(const ExecutionStateConfig& config);
static void Reflect(AZ::ReflectContext* reflectContext);
const RuntimeComponent* m_component = nullptr;
ExecutionState(const ExecutionStateConfig& config);
virtual ~ExecutionState() = default;
virtual void Execute() = 0;
AZ::Data::AssetId GetAssetId() const;
AZ::ComponentId GetComponentId() const;
AZ::EntityId GetEntityId() const;
virtual ExecutionMode GetExecutionMode() const = 0;
GraphIdentifier GetGraphIdentifier() const;
GraphIdentifier GetGraphIdentifier(const AZ::Data::AssetId& id) const;
AZ::EntityId GetScriptCanvasId() const;
const RuntimeDataOverrides& GetRuntimeDataOverrides() const;
virtual void Initialize() = 0;
ExecutionStatePtr SharedFromThis();
ExecutionStateConstPtr SharedFromThisConst() const;
virtual void StopExecution() = 0;
AZStd::string ToString() const;
ExecutionStateWeakPtr WeakFromThis();
ExecutionStateWeakConstPtr WeakFromThisConst() const;
};
}