| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635 |
- /*
- * 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 "UiSerialize.h"
- #include <LyShine/UiAssetTypes.h>
- #include <LyShine/IDraw2d.h>
- #include <LyShine/UiBase.h>
- #include "UiInteractableComponent.h"
- #include <LyShine/UiSerializeHelpers.h>
- #include <LyShine/Bus/UiParticleEmitterBus.h>
- #include <LyShine/Bus/UiImageBus.h>
- #include <LyShine/Bus/UiTransform2dBus.h>
- #include <UiElementComponent.h>
- #include <UiCanvasComponent.h>
- #include <UiLayoutGridComponent.h>
- #include <AzCore/Serialization/SerializeContext.h>
- #include <AzCore/RTTI/BehaviorContext.h>
- #include <AzCore/Script/ScriptContext.h>
- #include <AzCore/Slice/SliceComponent.h>
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- // NAMESPACE FUNCTIONS
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- namespace UiSerialize
- {
- //////////////////////////////////////////////////////////////////////////
- void UiOffsetsScriptConstructor(UiTransform2dInterface::Offsets* thisPtr, AZ::ScriptDataContext& dc)
- {
- int numArgs = dc.GetNumArguments();
- const int noArgsGiven = 0;
- const int allArgsGiven = 4;
- switch (numArgs)
- {
- case noArgsGiven:
- {
- *thisPtr = UiTransform2dInterface::Offsets();
- }
- break;
- case allArgsGiven:
- {
- if (dc.IsNumber(0) && dc.IsNumber(1) && dc.IsNumber(2) && dc.IsNumber(3))
- {
- float left = 0;
- float top = 0;
- float right = 0;
- float bottom = 0;
- dc.ReadArg(0, left);
- dc.ReadArg(1, top);
- dc.ReadArg(2, right);
- dc.ReadArg(3, bottom);
- *thisPtr = UiTransform2dInterface::Offsets(left, top, right, bottom);
- }
- else
- {
- dc.GetScriptContext()->Error(AZ::ScriptContext::ErrorType::Error, true, "When providing 4 arguments to UiOffsets(), all must be numbers!");
- }
- }
- break;
- default:
- {
- dc.GetScriptContext()->Error(AZ::ScriptContext::ErrorType::Error, true, "UiOffsets() accepts only 0 or 4 arguments, not %d!", numArgs);
- }
- break;
- }
- }
- //////////////////////////////////////////////////////////////////////////
- void UiAnchorsScriptConstructor(UiTransform2dInterface::Anchors* thisPtr, AZ::ScriptDataContext& dc)
- {
- int numArgs = dc.GetNumArguments();
- const int noArgsGiven = 0;
- const int allArgsGiven = 4;
- switch (numArgs)
- {
- case noArgsGiven:
- {
- *thisPtr = UiTransform2dInterface::Anchors();
- }
- break;
- case allArgsGiven:
- {
- if (dc.IsNumber(0) && dc.IsNumber(1) && dc.IsNumber(2) && dc.IsNumber(3))
- {
- float left = 0;
- float top = 0;
- float right = 0;
- float bottom = 0;
- dc.ReadArg(0, left);
- dc.ReadArg(1, top);
- dc.ReadArg(2, right);
- dc.ReadArg(3, bottom);
- *thisPtr = UiTransform2dInterface::Anchors(left, top, right, bottom);
- }
- else
- {
- dc.GetScriptContext()->Error(AZ::ScriptContext::ErrorType::Error, true, "When providing 4 arguments to UiAnchors(), all must be numbers!");
- }
- }
- break;
- default:
- {
- dc.GetScriptContext()->Error(AZ::ScriptContext::ErrorType::Error, true, "UiAnchors() accepts only 0 or 4 arguments, not %d!", numArgs);
- }
- break;
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetAnchorLeft(UiTransform2dInterface::Anchors* anchor, float left)
- {
- if (anchor)
- {
- anchor->m_left = left;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set left on null anchor.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetAnchorTop(UiTransform2dInterface::Anchors* anchor, float top)
- {
- if (anchor)
- {
- anchor->m_top = top;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set top on null anchor.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetAnchorRight(UiTransform2dInterface::Anchors* anchor, float right)
- {
- if (anchor)
- {
- anchor->m_right = right;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set right on null anchor.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetAnchorBottom(UiTransform2dInterface::Anchors* anchor, float bottom)
- {
- if (anchor)
- {
- anchor->m_bottom = bottom;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set bottom on null anchor.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetAnchors(UiTransform2dInterface::Anchors* anchor, float left, float top, float right, float bottom)
- {
- if (anchor)
- {
- anchor->m_left = left;
- anchor->m_top = top;
- anchor->m_right = right;
- anchor->m_bottom = bottom;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set values on null anchor.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetOffsetLeft(UiTransform2dInterface::Offsets* offset, float left)
- {
- if (offset)
- {
- offset->m_left = left;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set left on null offset.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetOffsetTop(UiTransform2dInterface::Offsets* offset, float top)
- {
- if (offset)
- {
- offset->m_top = top;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set top on null offset.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetOffsetRight(UiTransform2dInterface::Offsets* offset, float right)
- {
- if (offset)
- {
- offset->m_right = right;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set right on null offset.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetOffsetBottom(UiTransform2dInterface::Offsets* offset, float bottom)
- {
- if (offset)
- {
- offset->m_bottom = bottom;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set bottom on null offset.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetOffsets(UiTransform2dInterface::Offsets* offset, float left, float top, float right, float bottom)
- {
- if (offset)
- {
- offset->m_left = left;
- offset->m_top = top;
- offset->m_right = right;
- offset->m_bottom = bottom;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set values on null offset.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetPaddingLeft(UiLayoutInterface::Padding* padding, int left)
- {
- if (padding)
- {
- padding->m_left = left;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set left on null padding.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetPaddingTop(UiLayoutInterface::Padding* padding, int top)
- {
- if (padding)
- {
- padding->m_top = top;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set top on null padding.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetPaddingRight(UiLayoutInterface::Padding* padding, int right)
- {
- if (padding)
- {
- padding->m_right = right;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set right on null padding.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetPaddingBottom(UiLayoutInterface::Padding* padding, int bottom)
- {
- if (padding)
- {
- padding->m_bottom = bottom;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set bottom on null padding.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void SetPadding(UiLayoutInterface::Padding* padding, int left, int top, int right, int bottom)
- {
- if (padding)
- {
- padding->m_left = left;
- padding->m_top = top;
- padding->m_right = right;
- padding->m_bottom = bottom;
- }
- else
- {
- AZ_ErrorOnce("Script Canvas", false, "UI Script tried to set values on null padding.")
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void ReflectUiTypes(AZ::ReflectContext* context)
- {
- AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(context);
- AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context);
- if (serializeContext)
- {
- serializeContext->Class<ColorF>()->
- Field("r", &ColorF::r)->
- Field("g", &ColorF::g)->
- Field("b", &ColorF::b)->
- Field("a", &ColorF::a);
- serializeContext->Class<ColorB>()->
- Field("r", &ColorB::r)->
- Field("g", &ColorB::g)->
- Field("b", &ColorB::b)->
- Field("a", &ColorB::a);
- }
- // Vec2 (still used in UI Animation sequence splines)
- {
- if (serializeContext)
- {
- serializeContext->Class<Vec2>()->
- Field("x", &Vec2::x)->
- Field("y", &Vec2::y);
- }
- }
- // Vec3 (possibly no longer used)
- {
- if (serializeContext)
- {
- serializeContext->Class<Vec3>()->
- Field("x", &Vec3::x)->
- Field("y", &Vec3::y)->
- Field("z", &Vec3::z);
- }
- }
- // Anchors
- {
- if (serializeContext)
- {
- serializeContext->Class<UiTransform2dInterface::Anchors>()->
- Field("left", &UiTransform2dInterface::Anchors::m_left)->
- Field("top", &UiTransform2dInterface::Anchors::m_top)->
- Field("right", &UiTransform2dInterface::Anchors::m_right)->
- Field("bottom", &UiTransform2dInterface::Anchors::m_bottom);
- }
- if (behaviorContext)
- {
- behaviorContext->Class<UiTransform2dInterface::Anchors>("UiAnchors")
- ->Constructor<>()
- ->Constructor<float, float, float, float>()
- ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value)
- ->Attribute(AZ::Script::Attributes::ConstructorOverride, &UiAnchorsScriptConstructor)
- ->Property("left", BehaviorValueProperty(&UiTransform2dInterface::Anchors::m_left))
- ->Property("top", BehaviorValueProperty(&UiTransform2dInterface::Anchors::m_top))
- ->Property("right", BehaviorValueProperty(&UiTransform2dInterface::Anchors::m_right))
- ->Property("bottom", BehaviorValueProperty(&UiTransform2dInterface::Anchors::m_bottom))
- ->Method("SetLeft", SetAnchorLeft)
- ->Method("SetTop", SetAnchorTop)
- ->Method("SetRight", SetAnchorRight)
- ->Method("SetBottom", SetAnchorBottom)
- ->Method("SetAnchors", SetAnchors);
- }
- }
- // ParticleColorKeyframe
- {
- if (serializeContext)
- {
- serializeContext->Class<UiParticleEmitterInterface::ParticleColorKeyframe>()
- ->Field("Time", &UiParticleEmitterInterface::ParticleColorKeyframe::time)
- ->Field("Color", &UiParticleEmitterInterface::ParticleColorKeyframe::color)
- ->Field("InTangent", &UiParticleEmitterInterface::ParticleColorKeyframe::inTangent)
- ->Field("OutTangent", &UiParticleEmitterInterface::ParticleColorKeyframe::outTangent);
- }
- }
- // ParticleFloatKeyframe
- {
- if (serializeContext)
- {
- serializeContext->Class<UiParticleEmitterInterface::ParticleFloatKeyframe>()
- ->Field("Time", &UiParticleEmitterInterface::ParticleFloatKeyframe::time)
- ->Field("Multiplier", &UiParticleEmitterInterface::ParticleFloatKeyframe::multiplier)
- ->Field("InTangent", &UiParticleEmitterInterface::ParticleFloatKeyframe::inTangent)
- ->Field("OutTangent", &UiParticleEmitterInterface::ParticleFloatKeyframe::outTangent);
- }
- }
- // Offsets
- {
- if (serializeContext)
- {
- serializeContext->Class<UiTransform2dInterface::Offsets>()->
- Field("left", &UiTransform2dInterface::Offsets::m_left)->
- Field("top", &UiTransform2dInterface::Offsets::m_top)->
- Field("right", &UiTransform2dInterface::Offsets::m_right)->
- Field("bottom", &UiTransform2dInterface::Offsets::m_bottom);
- }
- if (behaviorContext)
- {
- behaviorContext->Class<UiTransform2dInterface::Offsets>("UiOffsets")
- ->Constructor<>()
- ->Constructor<float, float, float, float>()
- ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value)
- ->Attribute(AZ::Script::Attributes::ConstructorOverride, &UiOffsetsScriptConstructor)
- ->Property("left", BehaviorValueProperty(&UiTransform2dInterface::Offsets::m_left))
- ->Property("top", BehaviorValueProperty(&UiTransform2dInterface::Offsets::m_top))
- ->Property("right", BehaviorValueProperty(&UiTransform2dInterface::Offsets::m_right))
- ->Property("bottom", BehaviorValueProperty(&UiTransform2dInterface::Offsets::m_bottom))
- ->Method("SetLeft", SetOffsetLeft)
- ->Method("SetTop", SetOffsetTop)
- ->Method("SetRight", SetOffsetRight)
- ->Method("SetBottom", SetOffsetBottom)
- ->Method("SetOffsets", SetOffsets);
- }
- }
- // Padding
- {
- if (serializeContext)
- {
- serializeContext->Class<UiLayoutInterface::Padding>()->
- Field("left", &UiLayoutInterface::Padding::m_left)->
- Field("top", &UiLayoutInterface::Padding::m_top)->
- Field("right", &UiLayoutInterface::Padding::m_right)->
- Field("bottom", &UiLayoutInterface::Padding::m_bottom);
- }
- if (behaviorContext)
- {
- behaviorContext->Class<UiLayoutInterface::Padding>("UiPadding")
- ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value)
- ->Property("left", BehaviorValueProperty(&UiLayoutInterface::Padding::m_left))
- ->Property("right", BehaviorValueProperty(&UiLayoutInterface::Padding::m_right))
- ->Property("top", BehaviorValueProperty(&UiLayoutInterface::Padding::m_top))
- ->Property("bottom", BehaviorValueProperty(&UiLayoutInterface::Padding::m_bottom))
- ->Method("SetLeft", SetPaddingLeft)
- ->Method("SetTop", SetPaddingTop)
- ->Method("SetRight", SetPaddingRight)
- ->Method("SetBottom", SetPaddingBottom)
- ->Method("SetPadding", SetPadding);
- }
- }
- // UiLayout enums
- {
- if (behaviorContext)
- {
- behaviorContext->Enum<(int)UiLayoutInterface::HorizontalOrder::LeftToRight>("eUiHorizontalOrder_LeftToRight")
- ->Enum<(int)UiLayoutInterface::HorizontalOrder::RightToLeft>("eUiHorizontalOrder_RightToLeft")
- ->Enum<(int)UiLayoutInterface::VerticalOrder::TopToBottom>("eUiVerticalOrder_TopToBottom")
- ->Enum<(int)UiLayoutInterface::VerticalOrder::BottomToTop>("eUiVerticalOrder_BottomToTop");
- }
- }
- // IDraw2d enums
- {
- if (behaviorContext)
- {
- behaviorContext->Enum<(int)IDraw2d::HAlign::Left>("eUiHAlign_Left")
- ->Enum<(int)IDraw2d::HAlign::Center>("eUiHAlign_Center")
- ->Enum<(int)IDraw2d::HAlign::Right>("eUiHAlign_Right")
- ->Enum<(int)IDraw2d::VAlign::Top>("eUiVAlign_Top")
- ->Enum<(int)IDraw2d::VAlign::Center>("eUiVAlign_Center")
- ->Enum<(int)IDraw2d::VAlign::Bottom>("eUiVAlign_Bottom");
- }
- }
- if (serializeContext)
- {
- serializeContext->Class<AnimationData>()
- ->Version(1)
- ->Field("SerializeString", &AnimationData::m_serializeData);
- // deprecate old classes that no longer exist
- serializeContext->ClassDeprecate("UiCanvasEditor", AZ::Uuid("{65682E87-B573-435B-88CB-B4C12B71EEEE}"));
- serializeContext->ClassDeprecate("ImageAsset", AZ::Uuid("{138E471A-F3AE-404A-9075-EDC7488C97FC}"));
- // Allow loading FontAssets and CanvasAssets with previous Uuid specializations of AZ_TYPE_INFO_SPECIALIZE
- serializeContext->ClassDeprecate("SimpleAssetReference_FontAsset", AZ::Uuid("{D6342379-A5FA-4B18-B890-702C2FE99A5A}"),
- [](AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& rootElement)
- {
- AZStd::vector<AZ::SerializeContext::DataElementNode> childNodeElements;
- for (int index = 0; index < rootElement.GetNumSubElements(); ++index)
- {
- childNodeElements.push_back(rootElement.GetSubElement(index));
- }
- // Convert the rootElement now, the existing child DataElmentNodes are now removed
- rootElement.Convert<AzFramework::SimpleAssetReference<LyShine::FontAsset>>(context);
- for (AZ::SerializeContext::DataElementNode& childNodeElement : childNodeElements)
- {
- rootElement.AddElement(AZStd::move(childNodeElement));
- }
- return true;
- });
- AzFramework::SimpleAssetReference<LyShine::FontAsset>::Register(*serializeContext);
- AzFramework::SimpleAssetReference<LyShine::CanvasAsset>::Register(*serializeContext);
- UiInteractableComponent::Reflect(serializeContext);
- }
- if (behaviorContext)
- {
- UiInteractableComponent::Reflect(behaviorContext);
- behaviorContext->EBus<UiLayoutBus>("UiLayoutBus")
- ->Event("GetHorizontalChildAlignment", &UiLayoutBus::Events::GetHorizontalChildAlignment)
- ->Event("SetHorizontalChildAlignment", &UiLayoutBus::Events::SetHorizontalChildAlignment)
- ->Event("GetVerticalChildAlignment", &UiLayoutBus::Events::GetVerticalChildAlignment)
- ->Event("SetVerticalChildAlignment", &UiLayoutBus::Events::SetVerticalChildAlignment)
- ->Event("GetIgnoreDefaultLayoutCells", &UiLayoutBus::Events::GetIgnoreDefaultLayoutCells)
- ->Event("SetIgnoreDefaultLayoutCells", &UiLayoutBus::Events::SetIgnoreDefaultLayoutCells);
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////
- // Helper function to VersionConverter to move three state actions from the derived interactable
- // to the interactable base class
- bool MoveToInteractableStateActions(
- AZ::SerializeContext& context,
- AZ::SerializeContext::DataElementNode& srcClassElement,
- const char* stateActionsElementName,
- const char* colorElementName,
- const char* alphaElementName,
- const char* spriteElementName)
- {
- // Note, we can assume that srcClassElement will stay in the same place in memory during this function
- // But the base class (and everything in it) will move around in memory as we remove elements from
- // srcClassElement. So it is improtant not to hold only any indicies or references to the base class.
- int interactableBaseClassIndex = srcClassElement.FindElement(AZ_CRC("BaseClass1", 0xd4925735));
- // Add a new element for the state actions.
- int stateActionsIndex = srcClassElement.GetSubElement(interactableBaseClassIndex)
- .AddElement<AZStd::vector<UiInteractableStateAction*> >(context, stateActionsElementName);
- if (stateActionsIndex == -1)
- {
- // Error adding the new sub element
- AZ_Error("Serialization", false, "AddElement failed for %s", stateActionsElementName);
- return false;
- }
- {
- interactableBaseClassIndex = srcClassElement.FindElement(AZ_CRC("BaseClass1", 0xd4925735));
- AZ::SerializeContext::DataElementNode& dstClassElement = srcClassElement.GetSubElement(interactableBaseClassIndex);
- stateActionsIndex = dstClassElement.FindElement(AZ_CRC(stateActionsElementName));
- AZ::SerializeContext::DataElementNode& stateActionsNode = dstClassElement.GetSubElement(stateActionsIndex);
- int colorIndex = stateActionsNode.AddElement<UiInteractableStateColor*>(context, "element");
- AZ::SerializeContext::DataElementNode& colorNode = stateActionsNode.GetSubElement(colorIndex);
- if (!LyShine::MoveElement(context, srcClassElement, colorNode, colorElementName, "Color"))
- {
- return false;
- }
- {
- // In the latest version of UiInteractableStateColor the color is an AZ::Color but in the
- // version we are converting from (before UiInteractableStateColor existed) colors were stored
- // as Vector3. Since the UiInteractableStateColor we just created will be at the latest version
- // we need to convert the color to an AZ::Color now.
- // Note that indices will have changed since MoveElement was called.
- interactableBaseClassIndex = srcClassElement.FindElement(AZ_CRC("BaseClass1", 0xd4925735));
- AZ::SerializeContext::DataElementNode& dstBaseClassElement = srcClassElement.GetSubElement(interactableBaseClassIndex);
- stateActionsIndex = dstBaseClassElement.FindElement(AZ_CRC(stateActionsElementName));
- AZ::SerializeContext::DataElementNode& dstStateActionsNode = dstBaseClassElement.GetSubElement(stateActionsIndex);
- colorIndex = dstStateActionsNode.FindElement(AZ_CRC("element"));
- AZ::SerializeContext::DataElementNode& dstColorNode = dstStateActionsNode.GetSubElement(colorIndex);
- if (!LyShine::ConvertSubElementFromVector3ToAzColor(context, dstColorNode, "Color"))
- {
- return false;
- }
- }
- }
- {
- interactableBaseClassIndex = srcClassElement.FindElement(AZ_CRC("BaseClass1", 0xd4925735));
- AZ::SerializeContext::DataElementNode& dstClassElement = srcClassElement.GetSubElement(interactableBaseClassIndex);
- stateActionsIndex = dstClassElement.FindElement(AZ_CRC(stateActionsElementName));
- AZ::SerializeContext::DataElementNode& stateActionsNode = dstClassElement.GetSubElement(stateActionsIndex);
- int alphaIndex = stateActionsNode.AddElement<UiInteractableStateAlpha*>(context, "element");
- AZ::SerializeContext::DataElementNode& alphaNode = stateActionsNode.GetSubElement(alphaIndex);
- if (!LyShine::MoveElement(context, srcClassElement, alphaNode, alphaElementName, "Alpha"))
- {
- return false;
- }
- }
- {
- interactableBaseClassIndex = srcClassElement.FindElement(AZ_CRC("BaseClass1", 0xd4925735));
- AZ::SerializeContext::DataElementNode& dstClassElement = srcClassElement.GetSubElement(interactableBaseClassIndex);
- stateActionsIndex = dstClassElement.FindElement(AZ_CRC(stateActionsElementName));
- AZ::SerializeContext::DataElementNode& stateActionsNode = dstClassElement.GetSubElement(stateActionsIndex);
- int spriteIndex = stateActionsNode.AddElement<UiInteractableStateSprite*>(context, "element");
- AZ::SerializeContext::DataElementNode& spriteNode = stateActionsNode.GetSubElement(spriteIndex);
- if (!LyShine::MoveElement(context, srcClassElement, spriteNode, spriteElementName, "Sprite"))
- {
- return false;
- }
- }
- // if the field did not exist then we do not report an error
- return true;
- }
- }
|