/* * 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. * */ #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()); } } } } } }