/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ #pragma once #include #include #include namespace PythonAssetBuilder { class PythonBuilderWorker; class PythonBuilderMessageSink; class PythonAssetBuilderSystemComponent : public AZ::Component , protected PythonAssetBuilderRequestBus::Handler , protected PythonBuilderRequestBus::Handler { public: AZ_COMPONENT(PythonAssetBuilderSystemComponent, "{E2872C13-D103-4534-9A95-76A66C8DDB5D}"); static void Reflect(AZ::ReflectContext* context); static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided); static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible); static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent); protected: // AZ::Component void Init() override; void Activate() override; void Deactivate() override; // PythonAssetBuilderRequestBus AZ::Outcome RegisterAssetBuilder(const AssetBuilderSDK::AssetBuilderDesc& desc) override; AZ::Outcome GetExecutableFolder() const override; // PythonBuilderRequestBus AZ::Outcome CreateEditorEntity(const AZStd::string& name) override; AZ::Outcome WriteSliceFile( AZStd::string_view filename, AZStd::vector entityList, bool makeDynamic) override; private: using PythonBuilderWorkerPointer = AZStd::shared_ptr; using PythonBuilderWorkerMap = AZStd::unordered_map; PythonBuilderWorkerMap m_pythonBuilderWorkerMap; AZStd::shared_ptr m_messageSink; }; constexpr const char PythonBuilder[] = "PythonBuilder"; }