@@ -920,6 +920,7 @@ void Project::UnserializeAndInsertExtensionsFrom(
920
920
" eventsFunctionsExtension" );
921
921
922
922
std::map<gd::String, size_t > extensionNameToElementIndex;
923
+ std::map<gd::String, gd::SerializerElement> objectTypeToVariantsElement;
923
924
924
925
// First, only unserialize behaviors and objects names.
925
926
// As event based objects can contains custom behaviors and custom objects,
@@ -938,6 +939,16 @@ void Project::UnserializeAndInsertExtensionsFrom(
938
939
? GetEventsFunctionsExtension (name)
939
940
: InsertNewEventsFunctionsExtension (
940
941
name, GetEventsFunctionsExtensionsCount ());
942
+
943
+ // Backup the events-based object variants
944
+ for (auto &eventsBasedObject :
945
+ eventsFunctionsExtension.GetEventsBasedObjects ().GetInternalVector ()) {
946
+ gd::SerializerElement variantsElement;
947
+ eventsBasedObject->GetVariants ().SerializeVariantsTo (variantsElement);
948
+ objectTypeToVariantsElement[gd::PlatformExtension::GetObjectFullType (
949
+ name, eventsBasedObject->GetName ())] = variantsElement;
950
+ }
951
+
941
952
eventsFunctionsExtension.UnserializeExtensionDeclarationFrom (
942
953
*this , eventsFunctionsExtensionElement);
943
954
}
@@ -966,6 +977,15 @@ void Project::UnserializeAndInsertExtensionsFrom(
966
977
partiallyLoadedExtension
967
978
->UnserializeExtensionImplementationFrom (
968
979
*this , eventsFunctionsExtensionElement);
980
+
981
+ for (auto &pair : objectTypeToVariantsElement) {
982
+ auto &objectType = pair.first ;
983
+ auto &variantsElement = pair.second ;
984
+
985
+ auto &eventsBasedObject = GetEventsBasedObject (objectType);
986
+ eventsBasedObject.GetVariants ().UnserializeVariantsFrom (*this ,
987
+ variantsElement);
988
+ }
969
989
}
970
990
}
971
991
0 commit comments