예제 #1
0
        public static string Copy([NotNull] object target)
        {
            lastOperationFailed = true;

            ClearCutData();
            if (target == null)
            {
                copiedType         = Types.Void;
                ObjectReference    = target as Object;
                hasObjectReference = false;
                objectReferences.Clear();
                Content = "null";
            }
            else
            {
                copiedType         = target.GetType();
                ObjectReference    = target as Object;
                hasObjectReference = objectReference != null;
                objectReferences.Clear();
                Content = PrettySerializer.Serialize(target, ref objectReferences);
            }

            lastOperationFailed = false;

            return(Content);
        }
예제 #2
0
        public static string CopyObjectReferences(IEnumerable <Object> targets, Type type)
        {
            lastOperationFailed = true;

            ClearCutData();
            copiedType         = type;
            hasObjectReference = false;
            objectReferences.Clear();
            var ids = ReusedStringList;

                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(ids.Count == 0, "ReusedStringList.Count != 0!");
                        #endif

            foreach (var target in targets)
            {
                if (!hasObjectReference)
                {
                    hasObjectReference = true;
                    ObjectReference    = target;
                }

                objectReferences.Add(target);
                ids.Add(PrettySerializer.SerializeReference(target));
            }

            var serialize = ids.ToArray();
            ids.Clear();
            Content = PrettySerializer.Serialize(serialize);

            lastOperationFailed = false;

            return(Content);
        }
예제 #3
0
        public static string Cut([CanBeNull] object target, [CanBeNull] LinkedMemberInfo memberInfo)
        {
            lastOperationFailed = true;

            if (memberInfo != null)
            {
                cutMemberInfo = SerializableMemberInfo.Serialize(memberInfo);
            }
            ObjectReference    = target as Object;
            hasObjectReference = objectReference != null;

            if (target != null)
            {
                copiedType = target.GetType();
            }
            else if (memberInfo != null)
            {
                copiedType = memberInfo.Type;
            }
            else
            {
                throw new NullReferenceException("Clipboard.Cut both target and memberInfo were null");
            }

            Content = PrettySerializer.Serialize(target);
            isCut   = true;

            lastOperationFailed = false;

            return(Content);
        }
예제 #4
0
        public static string Copy([CanBeNull] object target, [NotNull] Type type)
        {
            lastOperationFailed = true;

            ClearCutData();
            if (target == null)
            {
                copiedType         = type;
                ObjectReference    = null;
                hasObjectReference = type.IsUnityObject();
                objectReferences.Clear();
                if (hasObjectReference)
                {
                    objectReferences.Add(null);
                }
                Content = "null";
            }
            else
            {
                                #if DEV_MODE
                Debug.Assert(target.GetType() == type, "target.GetType() " + StringUtils.TypeToString(target) + " != type " + StringUtils.ToString(type));
                                #endif

                copiedType = type;
                var unityObject = target as Object;
                ObjectReference    = unityObject;
                hasObjectReference = objectReference != null;
                objectReferences.Clear();
                if (hasObjectReference)
                {
                    objectReferences.Add(unityObject);
                }
                Content = PrettySerializer.Serialize(target, ref objectReferences);
            }

            lastOperationFailed = false;

            return(Content);
        }