Пример #1
0
        protected override YAMLMappingNode ExportYAMLRoot(IExportContainer container)
        {
            PrefabInstanceLayout layout = container.ExportLayout.PrefabInstance;

            if (layout.IsModificationFormat)
            {
                YAMLMappingNode node = ExportYAMLRootObject(container);
                node.AddSerializedVersion(layout.Version);
                if (layout.HasRootGameObject && layout.IsRootGameObjectFirst)
                {
                    node.Add(layout.RootGameObjectName, RootGameObject.ExportYAML(container));
                }

                node.Add(layout.ModificationName, Modification.ExportYAML(container));
                node.Add(layout.SourcePrefabInvariantName, SourcePrefab.ExportYAML(container));
                if (!layout.IsRootGameObjectFirst)
                {
                    node.Add(layout.RootGameObjectName, RootGameObject.ExportYAML(container));
                }
                if (layout.HasIsPrefabAssetInvariant)
                {
                    node.Add(layout.IsPrefabAssetInvariantName, IsPrefabAsset);
                }
                if (layout.HasIsExploded)
                {
                    node.Add(layout.IsExplodedName, IsExploded);
                }
                return(node);
            }
            else
            {
                YAMLMappingNode node = new YAMLMappingNode();
                node.Add(layout.LastMergeIdentifierName, LastMergeIdentifier.ExportYAML(container));
                if (layout.HasLastTemplateIdentifier)
                {
                    node.Add(layout.LastTemplateIdentifierName, LastTemplateIdentifier.ExportYAML(container));
                }
                node.Add(layout.ObjectsName, Objects.ExportYAML(container));
                node.Add(layout.FatherName, Father.ExportYAML(container));
                node.Add(layout.IsDataTemplateName, IsDataTemplate);

                YAMLMappingNode baseNode = base.ExportYAMLRoot(container);
                node.Append(baseNode);
                return(node);
            }
        }
Пример #2
0
        protected override YAMLMappingNode ExportYAMLRoot(IExportContainer container)
        {
            if (IsModificationsFormat(container.Version))
            {
                YAMLMappingNode node = ExportYAMLRootObject(container);
                node.AddSerializedVersion(ToSerializedVersion(container.ExportVersion));
                bool hasRootGameObject     = IsRootGameObjectRelevant(container.ExportFlags);
                bool isRootGameObjectFirst = IsRootGameObjectFirst(container.ExportVersion);
                if (hasRootGameObject && isRootGameObjectFirst)
                {
                    node.Add(RootGameObjectName, RootGameObject.ExportYAML(container));
                }

                node.Add(ModificationName, Modification.ExportYAML(container));
                node.Add(GetSourcePrefabName(container.ExportVersion), SourcePrefab.ExportYAML(container));
                if (hasRootGameObject && !isRootGameObjectFirst)
                {
                    node.Add(RootGameObjectName, RootGameObject.ExportYAML(container));
                }
                if (IsPrefabAssetRelevant(container.ExportVersion))
                {
                    node.Add(GetIsPrefabAssetName(container.ExportVersion), IsPrefabAsset);
                }
                if (IsExplodedRelevant(container.ExportVersion))
                {
                    node.Add(IsExplodedName, IsExploded);
                }
                return(node);
            }
            else
            {
                YAMLMappingNode node = new YAMLMappingNode();
                node.Add(LastMergeIdentifierName, LastMergeIdentifier.ExportYAML(container));
                if (HasLastTemplateIdentifier(container.ExportVersion))
                {
                    node.Add(LastTemplateIdentifierName, LastTemplateIdentifier.ExportYAML(container));
                }
                node.Add(ObjectsName, Objects.ExportYAML(container));
                node.Add(FatherName, Father.ExportYAML(container));
                node.Add(IsDataTemplateName, IsDataTemplate);

                YAMLMappingNode baseNode = base.ExportYAMLRoot(container);
                node.Append(baseNode);
                return(node);
            }
        }
Пример #3
0
        public override void Write(AssetWriter writer)
        {
            PrefabInstanceLayout layout = writer.Layout.PrefabInstance;

            if (layout.IsModificationFormat)
            {
                WriteObject(writer);

                if (layout.HasRootGameObject && layout.IsRootGameObjectFirst)
                {
                    RootGameObject.Write(writer);
                }

                Modification.Write(writer);
                SourcePrefab.Write(writer);
                if (!layout.IsRootGameObjectFirst)
                {
                    RootGameObject.Write(writer);
                }
                if (layout.HasIsPrefabAsset)
                {
                    writer.Write(IsPrefabAsset);
                }
                if (layout.HasIsExploded)
                {
                    writer.Write(IsExploded);
                }
                writer.AlignStream();
            }
            else
            {
                LastMergeIdentifier.Write(writer);
                if (layout.HasLastTemplateIdentifier)
                {
                    LastTemplateIdentifier.Write(writer);
                }
                Objects.Write(writer);
                Father.Write(writer);
                writer.Write(IsDataTemplate);
                writer.AlignStream();

                base.Write(writer);
            }
        }
Пример #4
0
        public override void Read(AssetReader reader)
        {
            PrefabInstanceLayout layout = reader.Layout.PrefabInstance;

            if (layout.IsModificationFormat)
            {
                ReadObject(reader);

                if (layout.HasRootGameObject && layout.IsRootGameObjectFirst)
                {
                    RootGameObject.Read(reader);
                }

                Modification.Read(reader);
                SourcePrefab.Read(reader);
                if (!layout.IsRootGameObjectFirst)
                {
                    RootGameObject.Read(reader);
                }
                if (layout.HasIsPrefabAsset)
                {
                    IsPrefabAsset = reader.ReadBoolean();
                }
                if (layout.HasIsExploded)
                {
                    IsExploded = reader.ReadBoolean();
                }
                reader.AlignStream();
            }
            else
            {
                LastMergeIdentifier.Read(reader);
                if (layout.HasLastTemplateIdentifier)
                {
                    LastTemplateIdentifier.Read(reader);
                }
                Objects        = reader.ReadAssetArray <PPtr <EditorExtension> >();
                Father         = reader.ReadAsset <PPtr <PrefabInstance> >();
                IsDataTemplate = reader.ReadBoolean();
                reader.AlignStream();

                base.Read(reader);
            }
        }
Пример #5
0
        public override void Write(AssetWriter writer)
        {
            if (IsModificationsFormat(writer.Version))
            {
                WriteObject(writer);

                bool hasRootGameObject     = IsRootGameObjectRelevant(writer.Flags);
                bool isRootGameObjectFirst = IsRootGameObjectFirst(writer.Version);
                if (hasRootGameObject && isRootGameObjectFirst)
                {
                    RootGameObject.Write(writer);
                }

                Modification.Write(writer);
                SourcePrefab.Write(writer);
                if (hasRootGameObject && !isRootGameObjectFirst)
                {
                    RootGameObject.Write(writer);
                }
                if (IsPrefabAssetRelevant(writer.Version))
                {
                    writer.Write(IsPrefabAsset);
                }
                if (IsExplodedRelevant(writer.Version))
                {
                    writer.Write(IsExploded);
                }
                writer.AlignStream();
            }
            else
            {
                LastMergeIdentifier.Write(writer);
                if (HasLastTemplateIdentifier(writer.Version))
                {
                    LastTemplateIdentifier.Write(writer);
                }
                Objects.Write(writer);
                Father.Write(writer);
                writer.Write(IsDataTemplate);
                writer.AlignStream();

                base.Write(writer);
            }
        }
Пример #6
0
        public override void Read(AssetReader reader)
        {
            if (IsModificationsFormat(reader.Version))
            {
                ReadObject(reader);

                bool isRootGameObjectFirst = IsRootGameObjectFirst(reader.Version);
                if (isRootGameObjectFirst && IsRootGameObjectRelevant(reader.Flags))
                {
                    RootGameObject.Read(reader);
                }

                Modification.Read(reader);
                SourcePrefab.Read(reader);
                if (!isRootGameObjectFirst)
                {
                    RootGameObject.Read(reader);
                }
                if (IsPrefabAssetRelevant(reader.Version))
                {
                    IsPrefabAsset = reader.ReadBoolean();
                }
                if (IsExplodedRelevant(reader.Version))
                {
                    IsExploded = reader.ReadBoolean();
                }
                reader.AlignStream();
            }
            else
            {
                LastMergeIdentifier.Read(reader);
                if (HasLastTemplateIdentifier(reader.Version))
                {
                    LastTemplateIdentifier.Read(reader);
                }
                Objects        = reader.ReadAssetArray <PPtr <EditorExtension> >();
                Father         = reader.ReadAsset <PPtr <PrefabInstance> >();
                IsDataTemplate = reader.ReadBoolean();
                reader.AlignStream();

                base.Read(reader);
            }
        }