/* * 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 #include #include #include #include #include #include #include #include namespace AZ { namespace SceneAPI { namespace DataTypes { class IMeshGroup; } namespace Containers { class Scene; } } namespace RPI { struct NamedMaterialAsset { Data::Asset m_asset; AZStd::string m_name; }; using MaterialAssetsByUid = AZStd::unordered_map; struct ModelAssetBuilderContext : public AZ::SceneAPI::Events::ICallContext { AZ_RTTI( ModelAssetBuilderContext, "{63FEFB4B-25DC-48DD-AC72-D27DA9A6D94A}", AZ::SceneAPI::Events::ICallContext); ModelAssetBuilderContext( const AZ::SceneAPI::Containers::Scene& scene, const AZ::SceneAPI::DataTypes::IMeshGroup& group, const AZ::SceneAPI::CoordinateSystemConverter coordSysConverter, const MaterialAssetsByUid& materialsByUid, Data::Asset& outputModelAsset, Data::Asset& outputSkinMetaAsset, Data::Asset& outputMorphTargetMetaAsset); ~ModelAssetBuilderContext() override = default; ModelAssetBuilderContext& operator=(const ModelAssetBuilderContext& other) = delete; const AZ::SceneAPI::Containers::Scene& m_scene; const AZ::SceneAPI::DataTypes::IMeshGroup& m_group; const MaterialAssetsByUid& m_materialsByUid; AZ::SceneAPI::CoordinateSystemConverter m_coordSysConverter; Data::Asset& m_outputModelAsset; Data::Asset& m_outputSkinMetaAsset; Data::Asset& m_outputMorphTargetMetaAsset; }; struct MaterialAssetBuilderContext : public AZ::SceneAPI::Events::ICallContext { AZ_RTTI( MaterialAssetBuilderContext, "{6451418A-453B-4646-A5B2-A5687FA2E97F}", AZ::SceneAPI::Events::ICallContext); MaterialAssetBuilderContext(const AZ::SceneAPI::Containers::Scene& scene, MaterialAssetsByUid& outputMaterialsByUid); ~MaterialAssetBuilderContext() override = default; MaterialAssetBuilderContext& operator=(const MaterialAssetBuilderContext& other) = delete; const AZ::SceneAPI::Containers::Scene& m_scene; MaterialAssetsByUid& m_outputMaterialsByUid; }; } // namespace RPI } // namespace AZ