Пример #1
0
        // Token: 0x06001F6D RID: 8045 RVA: 0x000AE1C8 File Offset: 0x000AC5C8
        public Guid readGUID()
        {
            GuidBuffer guidBuffer = default(GuidBuffer);

            guidBuffer.Read(this.readByteArray(), 0);
            return(guidBuffer.GUID);
        }
Пример #2
0
        public void writeGUID(Guid GUID)
        {
            GuidBuffer guidBuffer = new GuidBuffer(GUID);

            guidBuffer.Write(GuidBuffer.GUID_BUFFER, 0);
            this.writeBytes(GuidBuffer.GUID_BUFFER);
        }
Пример #3
0
        public static void Write(this BinaryWriter writer, Guid guid)
        {
            var buffer = new GuidBuffer(guid);

            buffer.CopyTo(s_GuidBytes, 0);
            writer.Write(s_GuidBytes, 0, 16);
        }
Пример #4
0
        // Token: 0x06000CE4 RID: 3300 RVA: 0x0005EE24 File Offset: 0x0005D224
        public virtual void writeInstances()
        {
            string path = string.Concat(new object[]
            {
                Level.info.path,
                "/Foliage/Tile_",
                this.coord.x,
                "_",
                this.coord.y,
                ".foliage"
            });
            string directoryName = Path.GetDirectoryName(path);

            if (!Directory.Exists(directoryName))
            {
                Directory.CreateDirectory(directoryName);
            }
            using (FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate))
            {
                BinaryWriter binaryWriter = new BinaryWriter(fileStream);
                binaryWriter.Write(FoliageTile.FOLIAGE_FILE_VERSION);
                binaryWriter.Write(this.instances.Count);
                foreach (KeyValuePair <AssetReference <FoliageInstancedMeshInfoAsset>, FoliageInstanceList> keyValuePair in this.instances)
                {
                    GuidBuffer guidBuffer  = new GuidBuffer(keyValuePair.Key.GUID);
                    object     guid_BUFFER = GuidBuffer.GUID_BUFFER;
                    lock (guid_BUFFER)
                    {
                        guidBuffer.Write(GuidBuffer.GUID_BUFFER, 0);
                        fileStream.Write(GuidBuffer.GUID_BUFFER, 0, 16);
                    }
                    int num = 0;
                    foreach (List <Matrix4x4> list in keyValuePair.Value.matrices)
                    {
                        num += list.Count;
                    }
                    binaryWriter.Write(num);
                    for (int i = 0; i < keyValuePair.Value.matrices.Count; i++)
                    {
                        List <Matrix4x4> list2 = keyValuePair.Value.matrices[i];
                        List <bool>      list3 = keyValuePair.Value.clearWhenBaked[i];
                        for (int j = 0; j < list2.Count; j++)
                        {
                            Matrix4x4 matrix4x = list2[j];
                            for (int k = 0; k < 16; k++)
                            {
                                binaryWriter.Write(matrix4x[k]);
                            }
                            bool value = list3[j];
                            binaryWriter.Write(value);
                        }
                    }
                }
            }
            this.canSafelyClear = true;
        }
Пример #5
0
        public Guid readGUID()
        {
            if (this.block != null)
            {
                return(this.block.readGUID());
            }
            GuidBuffer guidBuffer = default(GuidBuffer);

            guidBuffer.Read(this.readBytes(), 0);
            return(guidBuffer.GUID);
        }
        // Token: 0x060021F0 RID: 8688 RVA: 0x000BB624 File Offset: 0x000B9A24
        public override void updateState(Asset asset, byte[] state)
        {
            if (!Dedicator.isDedicated)
            {
                this.audioSource = base.transform.FindChild("Audio").GetComponent <AudioSource>();
            }
            GuidBuffer guidBuffer = default(GuidBuffer);

            guidBuffer.Read(state, 0);
            this.updateTrack(guidBuffer.GUID);
            this.compressedVolume = state[16];
        }
Пример #7
0
    private static unsafe string MakeStringRepresentation(Guid id)
    {
        // Convert Guid to bytes
        GuidBuffer buffer = new GuidBuffer(id);
        byte *     bytes  = buffer.buffer;

        // Target string
        int   size   = sizeof(Guid) * 2;
        char *result = stackalloc char[size + 1 /* \0 terminator */];
        char *start  = result;

        for (int i = 0; i < sizeof(Guid); i++)
        {
            byte src   = *bytes;
            int  carry = 0;

            {
                int index = src % Chars.Length;

                char current = Chars[index];

                *result = current;
                result++;

                carry = ((src - index) / Chars.Length) - 1;
            }

            if (carry > 0)
            {
                int index = carry % Chars.Length;

                char current = Chars[index];

                *result = current;
                result++;
            }

            bytes++;
        }

        return(new string(start));
    }
Пример #8
0
        // Token: 0x06000CE2 RID: 3298 RVA: 0x0005EBB4 File Offset: 0x0005CFB4
        protected virtual void readInstances(object stateInfo)
        {
            Dictionary <AssetReference <FoliageInstancedMeshInfoAsset>, FoliageInstanceList> source = new Dictionary <AssetReference <FoliageInstancedMeshInfoAsset>, FoliageInstanceList>();
            string path = string.Concat(new object[]
            {
                Level.info.path,
                "/Foliage/Tile_",
                this.coord.x,
                "_",
                this.coord.y,
                ".foliage"
            });

            if (File.Exists(path))
            {
                using (FileStream fileStream = new FileStream(path, FileMode.Open))
                {
                    BinaryReader binaryReader = new BinaryReader(fileStream);
                    int          num          = binaryReader.ReadInt32();
                    int          num2         = binaryReader.ReadInt32();
                    for (int i = 0; i < num2; i++)
                    {
                        GuidBuffer guidBuffer  = default(GuidBuffer);
                        object     guid_BUFFER = GuidBuffer.GUID_BUFFER;
                        lock (guid_BUFFER)
                        {
                            fileStream.Read(GuidBuffer.GUID_BUFFER, 0, 16);
                            guidBuffer.Read(GuidBuffer.GUID_BUFFER, 0);
                        }
                        AssetReference <FoliageInstancedMeshInfoAsset> assetReference = new AssetReference <FoliageInstancedMeshInfoAsset>(guidBuffer.GUID);
                        FoliageInstanceList orAddList = this.getOrAddList(source, assetReference);
                        int num3 = binaryReader.ReadInt32();
                        for (int j = 0; j < num3; j++)
                        {
                            Matrix4x4 matrix4x = default(Matrix4x4);
                            for (int k = 0; k < 16; k++)
                            {
                                matrix4x[k] = binaryReader.ReadSingle();
                            }
                            bool newClearWhenBaked = num <= 2 || binaryReader.ReadBoolean();
                            if (!this.isInstanceCut(matrix4x.GetPosition()))
                            {
                                orAddList.addInstanceAppend(new FoliageInstanceGroup(assetReference, matrix4x, newClearWhenBaked));
                            }
                        }
                    }
                }
            }
            object obj = this.thisLock;

            lock (obj)
            {
                if (!this.hasInstances)
                {
                    this.instances = source;
                    this.updateBounds();
                    this.hasInstances       = true;
                    this.isReadingInstances = false;
                }
            }
        }