/* * 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 * */ #include #include #include #include #include #include #include #include namespace AZ { namespace SceneAPI { namespace SceneData { void SkinRuleBehavior::Reflect(AZ::ReflectContext* context) { SkinRule::Reflect(context); AZ::SerializeContext* serializeContext = azrtti_cast(context); if (serializeContext) { serializeContext->Class()->Version(1); } } void SkinRuleBehavior::Activate() { AZ::SceneAPI::Events::ManifestMetaInfoBus::Handler::BusConnect(); } void SkinRuleBehavior::Deactivate() { AZ::SceneAPI::Events::ManifestMetaInfoBus::Handler::BusDisconnect(); } void SkinRuleBehavior::InitializeObject([[maybe_unused]] const Containers::Scene& scene, DataTypes::IManifestObject& target) { if (azrtti_istypeof(target)) { DataTypes::IMeshGroup* meshGroup = azrtti_cast(&target); AZ::SceneAPI::Containers::RuleContainer& rules = meshGroup->GetRuleContainer(); // Only add the skin rule if the scene contain any skinning data. if (!rules.ContainsRuleOfType() && Utilities::DoesSceneGraphContainDataLike(scene, true)) { rules.AddRule(AZStd::make_shared()); } } } } } }