|
|
@@ -23,25 +23,15 @@ namespace BansheeEngine
|
|
|
if (diff == nullptr)
|
|
|
return nullptr;
|
|
|
|
|
|
- MemorySerializer ms;
|
|
|
-
|
|
|
- UINT32 dataLength = 0;
|
|
|
- UINT8* diffData = ms.encode(diff.get(), dataLength, &bs_alloc);
|
|
|
-
|
|
|
SPtr<SerializedObject> output = bs_shared_ptr_new<SerializedObject>();
|
|
|
output->subObjects.push_back(SerializedSubObject());
|
|
|
|
|
|
SerializedSubObject& subObject = output->subObjects.back();
|
|
|
subObject.typeId = ManagedSerializableObject::getRTTIStatic()->getRTTIId();
|
|
|
|
|
|
- SPtr<SerializedField> field = bs_shared_ptr_new<SerializedField>();
|
|
|
- field->value = diffData;
|
|
|
- field->size = dataLength;
|
|
|
- field->ownsMemory = true;
|
|
|
-
|
|
|
SerializedEntry entry;
|
|
|
entry.fieldId = 0;
|
|
|
- entry.serialized = field;
|
|
|
+ entry.serialized = bs._encodeIntermediate(diff.get());
|
|
|
|
|
|
subObject.entries[0] = entry;
|
|
|
|
|
|
@@ -51,14 +41,11 @@ namespace BansheeEngine
|
|
|
void ManagedDiff::applyDiff(const SPtr<IReflectable>& object, const SPtr<SerializedObject>& serzDiff,
|
|
|
DiffObjectMap& objectMap, Vector<DiffCommand>& diffCommands)
|
|
|
{
|
|
|
- SPtr<SerializedField> field = std::static_pointer_cast<SerializedField>(serzDiff->subObjects[0].entries[0].serialized);
|
|
|
+ SPtr<SerializedObject> diffObj = std::static_pointer_cast<SerializedObject>(serzDiff->subObjects[0].entries[0].serialized);
|
|
|
|
|
|
- MemorySerializer ms;
|
|
|
- ManagedSerializableDiffPtr diff;
|
|
|
+ BinarySerializer bs;
|
|
|
+ ManagedSerializableDiffPtr diff = std::static_pointer_cast<ManagedSerializableDiff>(bs._decodeIntermediate(diffObj));
|
|
|
|
|
|
- if (field->size > 0)
|
|
|
- diff = std::static_pointer_cast<ManagedSerializableDiff>(ms.decode(field->value, field->size));
|
|
|
-
|
|
|
if (diff != nullptr)
|
|
|
{
|
|
|
SPtr<ManagedSerializableObject> managedObj = std::static_pointer_cast<ManagedSerializableObject>(object);
|