mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-21 17:45:25 -04:00
deb802cfec
* For now, this is limited to instances inside custom objects. This will be made available in the future for all instances in scenes if this works well.
74 lines
2.9 KiB
C++
74 lines
2.9 KiB
C++
/*
|
|
* GDevelop Core
|
|
* Copyright 2008-2016 Florian Rival (Florian.Rival@gmail.com). All rights
|
|
* reserved. This project is released under the MIT License.
|
|
*/
|
|
#include "EventsBasedObjectVariant.h"
|
|
#include "GDCore/Project/Object.h"
|
|
#include "GDCore/Serialization/SerializerElement.h"
|
|
|
|
namespace gd {
|
|
|
|
EventsBasedObjectVariant::EventsBasedObjectVariant()
|
|
: areaMinX(0), areaMinY(0), areaMinZ(0), areaMaxX(64), areaMaxY(64),
|
|
areaMaxZ(64), objectsContainer(gd::ObjectsContainer::SourceType::Object) {
|
|
}
|
|
|
|
EventsBasedObjectVariant::~EventsBasedObjectVariant() {}
|
|
|
|
void EventsBasedObjectVariant::SerializeTo(SerializerElement &element) const {
|
|
element.SetAttribute("name", name);
|
|
if (!GetAssetStoreAssetId().empty() && !GetAssetStoreOriginalName().empty()) {
|
|
element.SetAttribute("assetStoreAssetId", GetAssetStoreAssetId());
|
|
element.SetAttribute("assetStoreOriginalName", GetAssetStoreOriginalName());
|
|
}
|
|
element.SetIntAttribute("areaMinX", areaMinX);
|
|
element.SetIntAttribute("areaMinY", areaMinY);
|
|
element.SetIntAttribute("areaMinZ", areaMinZ);
|
|
element.SetIntAttribute("areaMaxX", areaMaxX);
|
|
element.SetIntAttribute("areaMaxY", areaMaxY);
|
|
element.SetIntAttribute("areaMaxZ", areaMaxZ);
|
|
|
|
objectsContainer.SerializeObjectsTo(element.AddChild("objects"));
|
|
objectsContainer.SerializeFoldersTo(
|
|
element.AddChild("objectsFolderStructure"));
|
|
objectsContainer.GetObjectGroups().SerializeTo(
|
|
element.AddChild("objectsGroups"));
|
|
|
|
layers.SerializeLayersTo(element.AddChild("layers"));
|
|
initialInstances.SerializeTo(element.AddChild("instances"));
|
|
editorSettings.SerializeTo(element.AddChild("editionSettings"));
|
|
}
|
|
|
|
void EventsBasedObjectVariant::UnserializeFrom(
|
|
gd::Project &project, const SerializerElement &element) {
|
|
name = element.GetStringAttribute("name");
|
|
assetStoreAssetId = element.GetStringAttribute("assetStoreAssetId");
|
|
assetStoreOriginalName = element.GetStringAttribute("assetStoreOriginalName");
|
|
areaMinX = element.GetIntAttribute("areaMinX", 0);
|
|
areaMinY = element.GetIntAttribute("areaMinY", 0);
|
|
areaMinZ = element.GetIntAttribute("areaMinZ", 0);
|
|
areaMaxX = element.GetIntAttribute("areaMaxX", 64);
|
|
areaMaxY = element.GetIntAttribute("areaMaxY", 64);
|
|
areaMaxZ = element.GetIntAttribute("areaMaxZ", 64);
|
|
|
|
objectsContainer.UnserializeObjectsFrom(project, element.GetChild("objects"));
|
|
if (element.HasChild("objectsFolderStructure")) {
|
|
objectsContainer.UnserializeFoldersFrom(
|
|
project, element.GetChild("objectsFolderStructure", 0));
|
|
}
|
|
objectsContainer.AddMissingObjectsInRootFolder();
|
|
objectsContainer.GetObjectGroups().UnserializeFrom(
|
|
element.GetChild("objectsGroups"));
|
|
|
|
if (element.HasChild("layers")) {
|
|
layers.UnserializeLayersFrom(element.GetChild("layers"));
|
|
} else {
|
|
layers.Reset();
|
|
}
|
|
initialInstances.UnserializeFrom(project, element.GetChild("instances"));
|
|
editorSettings.UnserializeFrom(element.GetChild("editionSettings"));
|
|
}
|
|
|
|
} // namespace gd
|