|
1 | 1 | using MLAPI.MonoBehaviours.Core;
|
| 2 | +using MLAPI.NetworkingManagerComponents.Binary; |
2 | 3 | using System;
|
3 | 4 | using System.Collections.Generic;
|
4 | 5 | using System.IO;
|
@@ -155,53 +156,51 @@ public byte[] GetConfig(bool cache = true)
|
155 | 156 | if (ConfigHash != null && cache)
|
156 | 157 | return ConfigHash;
|
157 | 158 |
|
158 |
| - using (MemoryStream writeStream = new MemoryStream()) |
| 159 | + using (BitWriter writer = new BitWriter()) |
159 | 160 | {
|
160 |
| - using (BinaryWriter writer = new BinaryWriter(writeStream)) |
| 161 | + writer.WriteUShort(ProtocolVersion); |
| 162 | + for (int i = 0; i < Channels.Count; i++) |
161 | 163 | {
|
162 |
| - writer.Write(ProtocolVersion); |
163 |
| - for (int i = 0; i < Channels.Count; i++) |
164 |
| - { |
165 |
| - writer.Write(Channels[i].Name); |
166 |
| - writer.Write((byte)Channels[i].Type); |
167 |
| - if (EnableEncryption) |
168 |
| - writer.Write(Channels[i].Encrypted); |
169 |
| - } |
170 |
| - for (int i = 0; i < MessageTypes.Count; i++) |
171 |
| - { |
172 |
| - writer.Write(MessageTypes[i].Name); |
173 |
| - if (AllowPassthroughMessages) |
174 |
| - writer.Write(MessageTypes[i].Passthrough); |
175 |
| - } |
176 |
| - if (EnableSceneSwitching) |
| 164 | + writer.WriteString(Channels[i].Name); |
| 165 | + writer.WriteByte((byte)Channels[i].Type); |
| 166 | + if (EnableEncryption) |
| 167 | + writer.WriteBool(Channels[i].Encrypted); |
| 168 | + } |
| 169 | + for (int i = 0; i < MessageTypes.Count; i++) |
| 170 | + { |
| 171 | + writer.WriteString(MessageTypes[i].Name); |
| 172 | + if (AllowPassthroughMessages) |
| 173 | + writer.WriteBool(MessageTypes[i].Passthrough); |
| 174 | + } |
| 175 | + if (EnableSceneSwitching) |
| 176 | + { |
| 177 | + for (int i = 0; i < RegisteredScenes.Count; i++) |
177 | 178 | {
|
178 |
| - for (int i = 0; i < RegisteredScenes.Count; i++) |
179 |
| - { |
180 |
| - writer.Write(RegisteredScenes[i]); |
181 |
| - } |
| 179 | + writer.WriteString(RegisteredScenes[i]); |
182 | 180 | }
|
183 |
| - if(HandleObjectSpawning) |
| 181 | + } |
| 182 | + if (HandleObjectSpawning) |
| 183 | + { |
| 184 | + for (int i = 0; i < NetworkedPrefabs.Count; i++) |
184 | 185 | {
|
185 |
| - for (int i = 0; i < NetworkedPrefabs.Count; i++) |
186 |
| - { |
187 |
| - writer.Write(NetworkedPrefabs[i].name); |
188 |
| - } |
| 186 | + writer.WriteString(NetworkedPrefabs[i].name); |
189 | 187 | }
|
190 |
| - writer.Write(HandleObjectSpawning); |
191 |
| - writer.Write(EnableEncryption); |
192 |
| - writer.Write(AllowPassthroughMessages); |
193 |
| - writer.Write(EnableSceneSwitching); |
194 |
| - writer.Write(SignKeyExchange); |
195 | 188 | }
|
| 189 | + writer.WriteBool(HandleObjectSpawning); |
| 190 | + writer.WriteBool(EnableEncryption); |
| 191 | + writer.WriteBool(AllowPassthroughMessages); |
| 192 | + writer.WriteBool(EnableSceneSwitching); |
| 193 | + writer.WriteBool(SignKeyExchange); |
| 194 | + |
196 | 195 | using (SHA256Managed sha256 = new SHA256Managed())
|
197 | 196 | {
|
198 | 197 | //Returns a 256 bit / 32 byte long checksum of the config
|
199 | 198 | if (cache)
|
200 | 199 | {
|
201 |
| - ConfigHash = sha256.ComputeHash(writeStream.ToArray()); |
| 200 | + ConfigHash = sha256.ComputeHash(writer.Finalize()); |
202 | 201 | return ConfigHash;
|
203 | 202 | }
|
204 |
| - return sha256.ComputeHash(writeStream.ToArray()); |
| 203 | + return sha256.ComputeHash(writer.Finalize()); |
205 | 204 | }
|
206 | 205 | }
|
207 | 206 | }
|
|
0 commit comments