Beispiel #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);
            }
        }
        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;
            }
        }
Beispiel #3
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;
        }
        public override void Read(AssetReader reader)
        {
            long position = reader.BaseStream.Position;

            base.Read(reader);

#if UNIVERSAL
            if (IsReadEditorHideFlags(reader.Flags))
            {
                EditorHideFlags = (HideFlags)reader.ReadUInt32();
            }
            if (IsReadGeneratorAsset(reader.Version, reader.Flags))
            {
                GeneratorAsset.Read(reader);
            }
#endif

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

#if UNIVERSAL
            if (IsReadEditorClassIdentifier(reader.Version, reader.Flags))
            {
                EditorClassIdentifier = reader.ReadString();
            }
#endif

            MonoScript script = Script.FindAsset(File);
            if (script != null)
            {
                SerializableType behaviourType = script.GetBehaviourType();
                if (behaviourType != null)
                {
                    Structure = behaviourType.CreateBehaviourStructure();
                    Structure.Read(reader);
                    return;
                }
            }

            AssetEntry info = File.GetAssetEntry(PathID);
            reader.BaseStream.Position = position + info.Size;
        }
        public override IEnumerable <Object> FetchDependencies(ISerializedFile file, bool isLog = false)
        {
            foreach (Object asset in base.FetchDependencies(file, isLog))
            {
                yield return(asset);
            }

#if UNIVERSAL
            yield return(GeneratorAsset.FindAsset(file));
#endif
            yield return(Script.FindAsset(file));

            if (Structure != null)
            {
                foreach (Object asset in Structure.FetchDependencies(file, isLog))
                {
                    yield return(asset);
                }
            }
        }