Prefabs | Introduce sanitation of prefab doms on loading (#1929)
* Update PrefabLoader to sanitize ingested prefabs and have core systems operate with default values Signed-off-by: sconel <sconel@amazon.com> Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> * Remove IsExplicitDefault implementation to avoid confusion (since the function isn't virtual). Avoid copying PrefabDoms over in SanitizeLoadTemplate. Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> * Address naming and commenting concerns from PR reviews. Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> * Fix to error detection code Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> * Add support for all uuid formats for zero check. Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> Co-authored-by: sconel <sconel@amazon.com>
This commit is contained in:
@@ -23,6 +23,8 @@ namespace AZ
|
||||
}
|
||||
|
||||
JsonUuidSerializer::JsonUuidSerializer()
|
||||
: m_zeroUuidString(AZ::Uuid::CreateNull().ToString<AZStd::string>())
|
||||
, m_zeroUuidStringNoDashes(AZ::Uuid::CreateNull().ToString<AZStd::string>(true, false))
|
||||
{
|
||||
m_uuidFormat = AZStd::regex(R"(\{[a-f0-9]{8}-?[a-f0-9]{4}-?[a-f0-9]{4}-?[a-f0-9]{4}-?[a-f0-9]{12}\})",
|
||||
AZStd::regex_constants::icase | AZStd::regex_constants::optimize);
|
||||
@@ -53,7 +55,7 @@ namespace AZ
|
||||
|
||||
Uuid* valAsUuid = reinterpret_cast<Uuid*>(outputValue);
|
||||
|
||||
if (IsExplicitDefault(inputValue))
|
||||
if (IsExplicitDefault(inputValue) || (inputValue == m_zeroUuidString.c_str()) || (inputValue == m_zeroUuidStringNoDashes.c_str()))
|
||||
{
|
||||
*valAsUuid = AZ::Uuid::CreateNull();
|
||||
return MessageResult("Uuid value set to default of null.", JSR::ResultCode(JSR::Tasks::ReadField, JSR::Outcomes::DefaultsUsed));
|
||||
|
||||
@@ -47,6 +47,8 @@ namespace AZ
|
||||
const Uuid& valueTypeId, JsonSerializerContext& context);
|
||||
|
||||
private:
|
||||
const AZStd::string m_zeroUuidString;
|
||||
const AZStd::string m_zeroUuidStringNoDashes;
|
||||
AZStd::regex m_uuidFormat;
|
||||
};
|
||||
} // namespace AZ
|
||||
|
||||
Reference in New Issue
Block a user