Exemplo n.º 1
0
        public override void Write(AssetWriter writer)
        {
            base.Write(writer);

#if UNIVERSAL
            MonoBehaviourLayout layout = writer.Layout.MonoBehaviour;
            if (layout.HasEditorHideFlags)
            {
                writer.Write((uint)EditorHideFlags);
            }
            if (layout.HasGeneratorAsset)
            {
                GeneratorAsset.Write(writer);
            }
#endif

            Script.Write(writer);
            writer.Write(Name);

#if UNIVERSAL
            if (layout.HasEditorClassIdentifier)
            {
                writer.Write(EditorClassIdentifier);
            }
#endif

            if (Structure != null)
            {
                Structure.Write(writer);
            }
        }
Exemplo n.º 2
0
        public override void Read(AssetReader reader)
        {
            long position = reader.BaseStream.Position;

            base.Read(reader);

#if UNIVERSAL
            MonoBehaviourLayout layout = reader.Layout.MonoBehaviour;
            if (layout.HasEditorHideFlags)
            {
                EditorHideFlags = (HideFlags)reader.ReadUInt32();
            }
            if (layout.HasGeneratorAsset)
            {
                GeneratorAsset.Read(reader);
            }
#endif

            Script.Read(reader);
            Name = reader.ReadString();

#if UNIVERSAL
            if (layout.HasEditorClassIdentifier)
            {
                EditorClassIdentifier = reader.ReadString();
            }
#endif

            if (!ReadStructure(reader))
            {
                ObjectInfo info = File.GetAssetEntry(PathID);
                reader.BaseStream.Position = position + info.ByteSize;
            }
        }
Exemplo n.º 3
0
 private static void GenerateTypeTree(TypeTreeContext context, SerializableType origin)
 {
     context.AddNode(nameof(MonoBehaviour), TypeTreeUtils.BaseName);
     context.BeginChildren();
     MonoBehaviourLayout.GenerateTypeTree(context);
     GenerateFields(context, origin);
     context.EndChildren();
 }
Exemplo n.º 4
0
        public override void Read(AssetReader reader)
        {
            long position = reader.BaseStream.Position;

            base.Read(reader);

#if UNIVERSAL
            MonoBehaviourLayout layout = reader.Layout.MonoBehaviour;
            if (layout.HasEditorHideFlags)
            {
                EditorHideFlags = (HideFlags)reader.ReadUInt32();
            }
            if (layout.HasGeneratorAsset)
            {
                GeneratorAsset.Read(reader);
            }
#endif

            Script.Read(reader);
            Name = reader.ReadString();

#if UNIVERSAL
            if (layout.HasEditorClassIdentifier)
            {
                EditorClassIdentifier = reader.ReadString();
            }
#endif

            MonoScript script = Script.FindAsset(File);
            if (script != null)
            {
                SerializableType behaviourType = script.GetBehaviourType();
                if (behaviourType == null)
                {
                    Logger.Log(LogType.Warning, LogCategory.Import, $"Unable to read {ValidName}, because definition for script {script.ValidName} wasn't found");
                }
                else
                {
                    Structure = behaviourType.CreateSerializableStructure();
                    Structure.Read(reader);
                    return;
                }
            }

            AssetEntry info = File.GetAssetEntry(PathID);
            reader.BaseStream.Position = position + info.Size;
        }
Exemplo n.º 5
0
        protected override YAMLMappingNode ExportYAMLRoot(IExportContainer container)
        {
            YAMLMappingNode     node   = base.ExportYAMLRoot(container);
            MonoBehaviourLayout layout = container.ExportLayout.MonoBehaviour;

            node.Add(layout.EditorHideFlagsName, (uint)GetEditorHideFlags(container));
            if (layout.HasGeneratorAsset)
            {
                node.Add(layout.GeneratorAssetName, GetGeneratorAsset(container).ExportYAML(container));
            }
            node.Add(layout.ScriptName, Script.ExportYAML(container));
            node.Add(layout.NameName, Name);
            node.Add(layout.EditorClassIdentifierName, GetEditorClassIdentifier(container));
            if (Structure != null)
            {
                YAMLMappingNode structureNode = (YAMLMappingNode)Structure.ExportYAML(container);
                node.Append(structureNode);
            }
            return(node);
        }
Exemplo n.º 6
0
        public override IEnumerable <PPtr <Object> > FetchDependencies(DependencyContext context)
        {
            foreach (PPtr <Object> asset in base.FetchDependencies(context))
            {
                yield return(asset);
            }

            MonoBehaviourLayout layout = context.Layout.MonoBehaviour;

#if UNIVERSAL
            yield return(context.FetchDependency(GeneratorAsset, layout.GeneratorAssetName));
#endif
            yield return(context.FetchDependency(Script, layout.ScriptName));

            if (Structure != null)
            {
                foreach (PPtr <Object> asset in context.FetchDependencies(Structure, Structure.Type.Name))
                {
                    yield return(asset);
                }
            }
        }