internal void Write(EndiannessWriter writer)
    {
        writer.WriteUInt32(MetadataSize);
        writer.WriteUInt32((UInt32)FileSize);
        writer.WriteUInt32(Version);
        writer.WriteUInt32((UInt32)DataOffset);

        writer.Write(new[] { (byte)Endianness });
        // Writing endianness changes from here
        // What the actual f**k?
        writer.Endianness = Endianness;

        writer.Write(Reserved);
        writer.WriteString(UnityVersion);
        writer.WriteInt32((Int32)BuildTarget);
        writer.WriteBoolean(IsTypeTreeEnabled);

        writer.WriteInt32(SerializedTypes.Length);
        foreach (var serializedType in SerializedTypes)
        {
            writer.WriteInt32(serializedType.ClassID);
            writer.WriteBoolean(serializedType.IsStrippedType);
            writer.WriteInt16(serializedType.ScriptTypeIndex);
            if ((Version < 16 && serializedType.ClassID < 0) ||
                (Version >= 16 && serializedType.ClassID == 114))
            {
                writer.Write(serializedType.ScriptID); //Hash128
            }
            writer.Write(serializedType.OldTypeHash);
        }

        writer.WriteInt32(ObjectInfos.Length);
        foreach (var objectInfo in ObjectInfos)
        {
            writer.Align(4);
            writer.WriteInt64(objectInfo.PathID);
            writer.WriteInt32((Int32)objectInfo.ByteStart);
            writer.WriteUInt32(objectInfo.ByteSize);
            writer.WriteInt32(objectInfo.TypeID);
        }

        // Script
        int scriptCount = 0;

        writer.WriteInt32(scriptCount);

        // Externals
        int externalCount = 0;

        writer.WriteInt32(externalCount);

        string userInformation = "";

        writer.WriteString(userInformation);
    }
예제 #2
0
    internal void Write(EndiannessWriter writer, UInt32 serializationVersion)
    {
        writer.WriteAlignedString(Name);

        writer.WritePPtrArray(PreloadTable, serializationVersion);
        writer.WriteInt32(Container.Length);
        foreach (var container in Container)
        {
            writer.WriteAlignedString(container.Key);
            writer.WriteAssetInfo(container.Value, serializationVersion);
        }

        writer.WriteAssetInfo(MainAsset, serializationVersion);

        writer.WriteUInt32(RuntimeCompatibility);

        writer.WriteAlignedString(AssetBundleName);
        writer.WriteInt32(DependencyAssetBundleNames.Length);
        foreach (var dependencyAssetBundleName in DependencyAssetBundleNames)
        {
            writer.WriteAlignedString(dependencyAssetBundleName);
        }

        writer.WriteBoolean(IsStreamedSceneAssetBundle);
        writer.Align(4);
        writer.WriteInt32(ExplicitDataLayout);
        writer.WriteInt32(PathFlags);

        writer.WriteInt32(SceneHashes.Count);
        foreach (var sceneHash in SceneHashes)
        {
            writer.WriteString(sceneHash.Key);
            writer.WriteString(sceneHash.Value);
        }
    }
예제 #3
0
    internal void Write(EndiannessWriter writer)
    {
        writer.WriteAlignedString(Name);

        writer.WriteInt32(ForcedFallbackFormat);
        writer.WriteBoolean(DownscaleFallback);
        writer.Align(4);

        writer.WriteInt32(Width);
        writer.WriteInt32(Height);
        writer.WriteInt32(CompleteImageSize);
        writer.WriteInt32((Int32)TextureFormat);
        writer.WriteInt32(MipCount);

        writer.WriteBoolean(IsReadable);
        writer.WriteBoolean(IsReadAllowed);
        writer.Align(4);

        writer.WriteInt32(StreamingMipmapsPriority);
        writer.WriteInt32(ImageCount);
        writer.WriteInt32(TextureDimension);

        writer.WriteInt32(TextureSettings.FilterMode);
        writer.WriteInt32(TextureSettings.Aniso);
        writer.WriteSingle(TextureSettings.MipBias);
        writer.WriteInt32(TextureSettings.WrapMode);
        writer.WriteInt32(TextureSettings.WrapV);
        writer.WriteInt32(TextureSettings.WrapW);

        writer.WriteInt32(LightmapFormat);
        writer.WriteInt32(ColorSpace);
        writer.WriteInt32(ImageDataSize);

        writer.WriteUInt32(StreamData.Offset);
        writer.WriteUInt32(StreamData.Size);
        writer.WriteAlignedString(StreamData.Path);
    }