| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- #include "BsSerializedObject.h"
- #include "BsSerializedObjectRTTI.h"
- namespace BansheeEngine
- {
- SPtr<SerializedInstance> SerializedField::clone(bool cloneData)
- {
- SPtr<SerializedField> copy = bs_shared_ptr_new<SerializedField>();
- copy->size = size;
- if (cloneData)
- {
- copy->value = (UINT8*)bs_alloc(size);
- memcpy(copy->value, value, size);
- copy->ownsMemory = true;
- }
- else
- {
- copy->value = value;
- copy->ownsMemory = false;
- }
- return copy;
- }
- SPtr<SerializedInstance> SerializedObject::clone(bool cloneData)
- {
- SPtr<SerializedObject> copy = bs_shared_ptr_new<SerializedObject>();
- copy->subObjects = Vector<SerializedSubObject>(subObjects.size());
- UINT32 i = 0;
- for (auto& subObject : subObjects)
- {
- copy->subObjects[i].typeId = subObject.typeId;
- for (auto& entryPair : subObject.entries)
- {
- SerializedEntry entry = entryPair.second;
- if (entry.serialized != nullptr)
- entry.serialized = entry.serialized->clone(cloneData);
- copy->subObjects[i].entries[entryPair.first] = entry;
- }
- i++;
- }
- return copy;
- }
- SPtr<SerializedInstance> SerializedArray::clone(bool cloneData)
- {
- SPtr<SerializedArray> copy = bs_shared_ptr_new<SerializedArray>();
- copy->numElements = numElements;
- for (auto& entryPair : entries)
- {
- SerializedArrayEntry entry = entryPair.second;
- entry.serialized = entry.serialized->clone(cloneData);
- copy->entries[entryPair.first] = entry;
- }
- return copy;
- }
- RTTITypeBase* SerializedInstance::getRTTIStatic()
- {
- return SerializedInstanceRTTI::instance();
- }
- RTTITypeBase* SerializedInstance::getRTTI() const
- {
- return SerializedInstance::getRTTIStatic();
- }
- RTTITypeBase* SerializedField::getRTTIStatic()
- {
- return SerializedFieldRTTI::instance();
- }
- RTTITypeBase* SerializedField::getRTTI() const
- {
- return SerializedField::getRTTIStatic();
- }
- RTTITypeBase* SerializedObject::getRTTIStatic()
- {
- return SerializedObjectRTTI::instance();
- }
- RTTITypeBase* SerializedObject::getRTTI() const
- {
- return SerializedObject::getRTTIStatic();
- }
- RTTITypeBase* SerializedArray::getRTTIStatic()
- {
- return SerializedArrayRTTI::instance();
- }
- RTTITypeBase* SerializedArray::getRTTI() const
- {
- return SerializedArray::getRTTIStatic();
- }
- RTTITypeBase* SerializedSubObject::getRTTIStatic()
- {
- return SerializedSubObjectRTTI::instance();
- }
- RTTITypeBase* SerializedSubObject::getRTTI() const
- {
- return SerializedSubObject::getRTTIStatic();
- }
- RTTITypeBase* SerializedEntry::getRTTIStatic()
- {
- return SerializedEntryRTTI::instance();
- }
- RTTITypeBase* SerializedEntry::getRTTI() const
- {
- return SerializedEntry::getRTTIStatic();
- }
- RTTITypeBase* SerializedArrayEntry::getRTTIStatic()
- {
- return SerializedArrayEntryRTTI::instance();
- }
- RTTITypeBase* SerializedArrayEntry::getRTTI() const
- {
- return SerializedArrayEntry::getRTTIStatic();
- }
- }
|