/* * 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 namespace AZ::SceneData::GraphData { CustomPropertyData::CustomPropertyData(PropertyMap propertyMap) : m_propertyMap(AZStd::move(propertyMap)) { } void CustomPropertyData::SetPropertyMap(const PropertyMap& propertyMap) { m_propertyMap = propertyMap; } CustomPropertyData::PropertyMap& CustomPropertyData::GetPropertyMap() { return m_propertyMap; } const CustomPropertyData::PropertyMap& CustomPropertyData::GetPropertyMap() const { return m_propertyMap; } void CustomPropertyData::GetDebugOutput(AZ::SceneAPI::Utilities::DebugOutput& output) const { for (const auto& kvp : m_propertyMap) { if (kvp.second.is()) { const auto* value = AZStd::any_cast(&kvp.second); output.Write(kvp.first.c_str(), value->c_str()); } else if (kvp.second.is()) { const auto* value = AZStd::any_cast(&kvp.second); output.Write(kvp.first.c_str(), *value); } else if (kvp.second.is()) { const auto* value = AZStd::any_cast(&kvp.second); output.Write(kvp.first.c_str(), aznumeric_cast(*value)); } else if (kvp.second.is()) { const auto* value = AZStd::any_cast(&kvp.second); output.Write(kvp.first.c_str(), *value); } else if (kvp.second.is()) { const auto* value = AZStd::any_cast(&kvp.second); output.Write(kvp.first.c_str(), *value); } else if (kvp.second.is()) { const auto* value = AZStd::any_cast(&kvp.second); output.Write(kvp.first.c_str(), *value); } } } void CustomPropertyData::Reflect(ReflectContext* context) { SerializeContext* serializeContext = azrtti_cast(context); if (serializeContext) { serializeContext->Class()->Version(1) ->Field("propertyMap", &CustomPropertyData::m_propertyMap); } BehaviorContext* behaviorContext = azrtti_cast(context); if (behaviorContext) { behaviorContext->Class() ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) ->Attribute(AZ::Script::Attributes::Module, "scene"); behaviorContext->Class() ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) ->Attribute(AZ::Script::Attributes::Module, "scene") ->Method("GetPropertyMap", [](CustomPropertyData& self) -> const CustomPropertyData::PropertyMap& { return self.GetPropertyMap(); }); } } }