Parcourir la source

Removed redundant clone method from SerializableProperty

BearishSun il y a 10 ans
Parent
commit
bfbb876f7f

+ 1 - 1
MBansheeEditor/Inspector/InspectableArray.cs

@@ -207,7 +207,7 @@ namespace BansheeEditor
 
 
                     if (i == index)
                     if (i == index)
                     {
                     {
-                        clonedEntry = array.GetProperty(i).GetValueCopy<object>();
+                        clonedEntry = SerializableUtility.Clone(array.GetProperty(i).GetValue<object>());
                     }
                     }
                 }
                 }
 
 

+ 1 - 1
MBansheeEditor/Inspector/InspectableList.cs

@@ -186,7 +186,7 @@ namespace BansheeEditor
                 IList list = property.GetValue<IList>();
                 IList list = property.GetValue<IList>();
 
 
                 if (index >= 0 && index < list.Count)
                 if (index >= 0 && index < list.Count)
-                    list.Add(serializableList.GetProperty(index).GetValueCopy<object>());
+                    list.Add(SerializableUtility.Clone(serializableList.GetProperty(index).GetValue<object>()));
             }
             }
 
 
             /// <inheritdoc/>
             /// <inheritdoc/>

+ 0 - 13
MBansheeEngine/SerializableProperty.cs

@@ -115,19 +115,6 @@ namespace BansheeEngine
             return (T)getter();
             return (T)getter();
         }
         }
 
 
-        /// <summary>
-        /// Retrieves a copy of the value contained in the property.
-        /// </summary>
-        /// <typeparam name="T">Type of the value to retrieve. Caller must ensure the type matches the property type.</typeparam>
-        /// <returns>A deep copy of the value of the property.</returns>
-        public T GetValueCopy<T>()
-        {
-            if (!typeof(T).IsAssignableFrom(internalType))
-                throw new Exception("Attempted to retrieve a serializable value using an invalid type. Provided type: " + typeof(T) + ". Needed type: " + internalType);
-
-            return (T)Internal_CloneManagedInstance(mCachedPtr, getter());
-        }
-
         /// <summary>
         /// <summary>
         /// Changes the value of the property.
         /// Changes the value of the property.
         /// </summary>
         /// </summary>

+ 0 - 2
SBansheeEngine/Include/BsScriptSerializableProperty.h

@@ -47,7 +47,5 @@ namespace BansheeEngine
 		static MonoObject* internal_createManagedArrayInstance(ScriptSerializableProperty* nativeInstance, MonoArray* sizes);
 		static MonoObject* internal_createManagedArrayInstance(ScriptSerializableProperty* nativeInstance, MonoArray* sizes);
 		static MonoObject* internal_createManagedListInstance(ScriptSerializableProperty* nativeInstance, int size);
 		static MonoObject* internal_createManagedListInstance(ScriptSerializableProperty* nativeInstance, int size);
 		static MonoObject* internal_createManagedDictionaryInstance(ScriptSerializableProperty* nativeInstance);
 		static MonoObject* internal_createManagedDictionaryInstance(ScriptSerializableProperty* nativeInstance);
-
-		static MonoObject* internal_cloneManagedInstance(ScriptSerializableProperty* nativeInstance, MonoObject* original);
 	};
 	};
 }
 }

+ 0 - 16
SBansheeEngine/Source/BsScriptSerializableProperty.cpp

@@ -34,7 +34,6 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_CreateManagedArrayInstance", &ScriptSerializableProperty::internal_createManagedArrayInstance);
 		metaData.scriptClass->addInternalCall("Internal_CreateManagedArrayInstance", &ScriptSerializableProperty::internal_createManagedArrayInstance);
 		metaData.scriptClass->addInternalCall("Internal_CreateManagedListInstance", &ScriptSerializableProperty::internal_createManagedListInstance);
 		metaData.scriptClass->addInternalCall("Internal_CreateManagedListInstance", &ScriptSerializableProperty::internal_createManagedListInstance);
 		metaData.scriptClass->addInternalCall("Internal_CreateManagedDictionaryInstance", &ScriptSerializableProperty::internal_createManagedDictionaryInstance);
 		metaData.scriptClass->addInternalCall("Internal_CreateManagedDictionaryInstance", &ScriptSerializableProperty::internal_createManagedDictionaryInstance);
-		metaData.scriptClass->addInternalCall("Internal_CloneManagedInstance", &ScriptSerializableProperty::internal_cloneManagedInstance);
 	}
 	}
 
 
 	ScriptSerializableProperty* ScriptSerializableProperty::create(const ManagedSerializableTypeInfoPtr& typeInfo)
 	ScriptSerializableProperty* ScriptSerializableProperty::create(const ManagedSerializableTypeInfoPtr& typeInfo)
@@ -102,19 +101,4 @@ namespace BansheeEngine
 		ManagedSerializableTypeInfoDictionaryPtr dictTypeInfo = std::static_pointer_cast<ManagedSerializableTypeInfoDictionary>(nativeInstance->mTypeInfo);
 		ManagedSerializableTypeInfoDictionaryPtr dictTypeInfo = std::static_pointer_cast<ManagedSerializableTypeInfoDictionary>(nativeInstance->mTypeInfo);
 		return ManagedSerializableDictionary::createManagedInstance(dictTypeInfo);
 		return ManagedSerializableDictionary::createManagedInstance(dictTypeInfo);
 	}
 	}
-
-	MonoObject* ScriptSerializableProperty::internal_cloneManagedInstance(ScriptSerializableProperty* nativeInstance, MonoObject* original)
-	{
-		ManagedSerializableFieldDataPtr data = ManagedSerializableFieldData::create(nativeInstance->mTypeInfo, original);
-
-		MemorySerializer ms;
-
-		// Note: This code unnecessarily encodes to binary and decodes from it. I could have added a specialized clone method that does it directly,
-		// but didn't feel the extra code was justified.
-		UINT32 size = 0;
-		UINT8* encodedData = ms.encode(data.get(), size);
-		ManagedSerializableFieldDataPtr clonedData = std::static_pointer_cast<ManagedSerializableFieldData>(ms.decode(encodedData, size));
-
-		return clonedData->getValueBoxed(nativeInstance->mTypeInfo);
-	}
 }
 }