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(); }
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(); }