static ImaginaryObject CreateImaginaryObject(Type type)
            {
                if (type.IsEditable())
                {
                    EditorData editorData = EditorData.GetEmpty();
                    EditableSystem.OpenEditor(type, ref editorData);
                    return(new ImaginaryEditableObject(type, editorData));
                }

                if (type.IsEnum)
                {
                    return(new ImaginaryEnum(type, SelectItem(Enum.GetNames(type))));
                }

                if (type.QualifiesAsPrimitive())
                {
                    return(new ImaginaryPrimitive(Convert.ChangeType(Console.ReadLine(), type)));
                }

                if (type.GetConstructors().Length > 0)
                {
                    return(new ImaginaryConstructableObject(type, GetConstructorParameters(type)));
                }

                return(new ImaginaryConstructableObject(type));
            }
Exemple #2
0
        protected override void ReadConstructionInfo(BinaryReader reader)
        {
            TypeData = new TypeData(reader);

            EditorData = EditorData.GetEmpty();

            for (var i = 0; i < reader.ReadInt32(); i++)
            {
                EditorData.Add(reader.ReadString(), reader.ReadString());
            }
        }
            static ImaginaryScript CreateImaginaryScript(Type type)
            {
                if (type.IsEditable())
                {
                    EditorData editorData = EditorData.GetEmpty();
                    EditableSystem.OpenEditor(type, ref editorData);
                    return(new ImaginaryScript(new ImaginaryEditableObject(type, editorData)));
                }

                if (type.GetConstructors().Length > 0)
                {
                    return(new ImaginaryScript(new ImaginaryConstructableObject(type, GetConstructorParameters(type))));
                }

                return(new ImaginaryScript(new ImaginaryConstructableObject(type)));
            }
            static ImaginaryHierarchyObject CreateImaginaryHierarchyObject(ref ImaginaryHierarchyObject currentSelectedHierarchyObject, Type ofType)
            {
                if (ofType.IsEditable())
                {
                    EditorData editorData = EditorData.GetEmpty();
                    EditableSystem.OpenEditor(ofType, ref editorData);
                    return(new ImaginaryHierarchyObject(currentSelectedHierarchyObject,
                                                        new ImaginaryEditableObject(ofType, editorData)));
                }

                if (ofType.GetConstructors().Length > 0)
                {
                    return(new ImaginaryHierarchyObject(currentSelectedHierarchyObject,
                                                        new ImaginaryConstructableObject(ofType, GetConstructorParameters(ofType))));
                }

                return(new ImaginaryHierarchyObject(currentSelectedHierarchyObject,
                                                    new ImaginaryConstructableObject(ofType)));
            }