/* * 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 "ImportContextProvider.h" #include #include #include #include namespace AZ { namespace SceneAPI { namespace SceneBuilder { // Concrete provider for creating AssImp-specific import classes. struct AssImpImportContextProvider : public ImportContextProvider { AZ_RTTI(AssImpImportContextProvider, "{6c263adb-e73c-4017-955a-9c212ded3637}"); AssImpImportContextProvider() = default; ~AssImpImportContextProvider() override; AZStd::shared_ptr CreateNodeEncounteredContext( Containers::Scene& scene, Containers::SceneGraph::NodeIndex currentGraphPosition, const SceneSystem& sourceSceneSystem, RenamedNodesMap& nodeNameMap, SDKScene::SceneWrapperBase& sourceScene, SDKNode::NodeWrapper& sourceNode) override; AZStd::shared_ptr CreateSceneDataPopulatedContext( NodeEncounteredContext& parent, AZStd::shared_ptr graphData, const AZStd::string& dataName) override; AZStd::shared_ptr CreateSceneNodeAppendedContext( SceneDataPopulatedContextBase& parent, Containers::SceneGraph::NodeIndex newIndex) override; AZStd::shared_ptr CreateSceneAttributeDataPopulatedContext( SceneNodeAppendedContextBase& parent, AZStd::shared_ptr nodeData, const Containers::SceneGraph::NodeIndex attributeNodeIndex, const AZStd::string& dataName) override; AZStd::shared_ptr CreateSceneAttributeNodeAppendedContext( SceneAttributeDataPopulatedContextBase& parent, Containers::SceneGraph::NodeIndex newIndex) override; AZStd::shared_ptr CreateSceneNodeAddedAttributesContext( SceneNodeAppendedContextBase& parent) override; AZStd::shared_ptr CreateSceneNodeFinalizeContext( SceneNodeAddedAttributesContextBase& parent) override; AZStd::shared_ptr CreateFinalizeSceneContext( Containers::Scene& scene, const SceneSystem& sourceSceneSystem, SDKScene::SceneWrapperBase& sourceScene, RenamedNodesMap& nodeNameMap) override; bool CanHandleExtension(AZStd::string_view fileExtension) const override { // The AssImp is our default provider and returns true for all registered extensions. AZ_UNUSED(fileExtension); return true; } AZStd::unique_ptr CreateSceneWrapper() const override { return AZStd::make_unique(); } AZStd::string GetImporterName() const override { return "AssImp"; } }; } // namespace SceneBuilder } // namespace SceneAPI } // namespace AZ