Пример #1
0
        public AssetLayout(LayoutInfo info)
        {
            Info = info;

            IsAlign              = info.Version.IsGreaterEqual(2, 1);
            IsAlignArrays        = info.Version.IsGreaterEqual(2017);
            IsStructSerializable = info.Version.IsGreaterEqual(4, 5);

            PPtr = new PPtrLayout(info);

            Misc       = new MiscLayoutCategory(info);
            Serialized = new SerializedLayoutCategory(info);

            Animation       = new AnimationLayout(info);
            AnimationClip   = new AnimationClipLayout(info);
            Behaviour       = new BehaviourLayout(info);
            Component       = new ComponentLayout(info);
            EditorExtension = new EditorExtensionLayout(info);
            Font            = new FontLayout(info);
            GameObject      = new GameObjectLayout(info);
            MonoBehaviour   = new MonoBehaviourLayout(info);
            MonoScript      = new MonoScriptLayout(info);
            NamedObject     = new NamedObjectLayout(info);
            Object          = new ObjectLayout(info);
            Prefab          = new PrefabLayout(info);
            PrefabInstance  = new PrefabInstanceLayout(info);
            Texture2D       = new Texture2DLayout(info);
            Transform       = new TransformLayout(info);

            ClassNames = CreateClassNames();
        }
Пример #2
0
        public static void GenerateTypeTree(TypeTreeContext context, string name)
        {
            PrefabInstanceLayout layout = context.Layout.PrefabInstance;

            context.AddNode(layout.Name, name, layout.Version);
            context.BeginChildren();
            if (layout.IsModificationFormat)
            {
                ObjectLayout.GenerateTypeTree(context);
                if (layout.HasRootGameObject && layout.IsRootGameObjectFirst)
                {
                    context.AddPPtr(context.Layout.GameObject.Name, layout.RootGameObjectName);
                }

                PrefabModificationLayout.GenerateTypeTree(context, layout.ModificationName);
                if (layout.HasSourcePrefab)
                {
                    context.AddPPtr(layout.Name, layout.SourcePrefabName);
                }
                else
                {
                    context.AddPPtr(layout.Name, layout.ParentPrefabName);
                }
                if (!layout.IsRootGameObjectFirst)
                {
                    context.AddPPtr(context.Layout.GameObject.Name, layout.RootGameObjectName);
                }
                if (layout.HasIsPrefabAsset)
                {
                    context.AddBool(layout.IsPrefabAssetName);
                }
                else
                {
                    context.AddBool(layout.IsPrefabParentName);
                }
                if (layout.HasIsExploded)
                {
                    context.AddBool(layout.IsExplodedName);
                }
                context.Align();
            }
            else
            {
                GUIDLayout.GenerateTypeTree(context, layout.LastMergeIdentifierName);
                if (layout.HasLastTemplateIdentifier)
                {
                    GUIDLayout.GenerateTypeTree(context, layout.LastTemplateIdentifierName);
                }
                context.AddArray(layout.ObjectsName, (c, n) => c.AddPPtr(c.Layout.EditorExtension.Name, n));
                context.AddPPtr(layout.Name, layout.FatherName);
                context.AddBool(layout.IsDataTemplateName, TransferMetaFlags.AlignBytesFlag);
                NamedObjectLayout.GenerateTypeTree(context);
            }
            context.EndChildren();
        }