//********************************** Banshee Engine (www.banshee3d.com) **************************************************// //**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************// using System; using System.Runtime.CompilerServices; using bs; namespace bs.Editor { /** @addtogroup Utility-Editor * @{ */ /// /// Container and functionality to creating a serialized version of an object. The object must be of valid serializable /// type (, or a class/struct marked with /// attribute). /// public class SerializedObject : ScriptObject { /// /// Constructs a new serialized object. Only for internal runtime use. /// private SerializedObject() { } /// /// Serializes all data within the provided component. /// /// Component to serialize. /// Object containing serialized data. public static SerializedObject Create(Component obj) { if (obj == null) return null; IntPtr componentPtr = obj.GetCachedPtr(); return Internal_CreateComponent(componentPtr); } /// /// Serializes all data within the provided resources. /// /// Resource to serialize. /// Object containing serialized data. public static SerializedObject Create(ManagedResource obj) { if (obj == null) return null; IntPtr resourcePtr = obj.GetCachedPtr(); return Internal_CreateResource(resourcePtr); } /// /// Serializes all data within the provided object. /// /// Object to serialize. /// Object containing serialized data. public static SerializedObject Create(object obj) { if (obj == null) return null; return Internal_CreateGeneric(obj); } /// /// Deserializes data stored in this object. Components and resources cannot be deserialized. /// /// Type to cast the object to after deserialization. /// Deserialized object if successful, null otherwise. public T Get() { return (T) Internal_Deserialize(mCachedPtr); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern SerializedObject Internal_CreateComponent(IntPtr componentPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern SerializedObject Internal_CreateResource(IntPtr resourcePtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern SerializedObject Internal_CreateGeneric(object obj); [MethodImpl(MethodImplOptions.InternalCall)] private static extern object Internal_Deserialize(IntPtr instance); } /** @} */ }