mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
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(element.GetChild("instances"));
|
|
editorSettings.UnserializeFrom(element.GetChild("editionSettings"));
|
|
}
|
|
|
|
} // namespace gd
|