@@ -226,13 +226,6 @@ public bool RemoveHandler(uint globalObjectIdHash)
226226 /// <returns>true or false</returns>
227227 internal bool ContainsHandler ( uint networkPrefabHash ) => m_PrefabAssetToPrefabHandler . ContainsKey ( networkPrefabHash ) || m_PrefabInstanceToPrefabAsset . ContainsKey ( networkPrefabHash ) ;
228228
229- /// <summary>
230- /// Check to see if a <see cref="NetworkObject.GlobalObjectIdHash"/> is registered to an <see cref="INetworkPrefabInstanceHandlerWithData"/> implementation
231- /// </summary>
232- /// <param name="objectHash"></param>
233- /// <returns></returns>
234- internal bool ContainsHandlerWithData ( uint objectHash ) => TryGetHandlerWithData ( objectHash , out _ ) ;
235-
236229 /// <summary>
237230 /// Returns the <see cref="INetworkPrefabInstanceHandlerWithData"/> implementation for a given <see cref="NetworkObject.GlobalObjectIdHash"/>
238231 /// </summary>
@@ -259,68 +252,36 @@ internal bool TryGetHandlerWithData(uint objectHash, out INetworkPrefabInstanceH
259252 /// <typeparam name="T"></typeparam>
260253 /// <param name="objectHash"></param>
261254 /// <param name="serializer"></param>
262- internal void SynchronizeInstantiationData < T > ( uint objectHash , ref BufferSerializer < T > serializer ) where T : IReaderWriter
255+ internal void ReadInstantiationData < T > ( uint objectHash , ref BufferSerializer < T > serializer ) where T : IReaderWriter
263256 {
264- if ( ! TryGetHandlerWithData ( objectHash , out INetworkPrefabInstanceHandlerWithData synchronizableHandler ) )
257+ if ( ! serializer . IsReader || ! TryGetHandlerWithData ( objectHash , out INetworkPrefabInstanceHandlerWithData synchronizableHandler ) )
265258 {
266259 return ;
267260 }
268261
269- if ( serializer . IsWriter )
270- {
271- // Reserves space to write the instantiation data size later
272- FastBufferWriter fastBufferWriter = serializer . GetFastBufferWriter ( ) ;
273- int dataSizePos = fastBufferWriter . Position ;
274- fastBufferWriter . WriteValueSafe ( 0 ) ; // placeholder for size, correctly writen at the end
275-
276- int dataStartPos = fastBufferWriter . Position ;
277- try
278- {
279- synchronizableHandler . OnSynchronizeInstantiationData ( ref serializer ) ;
280- }
281- catch ( Exception ex )
282- {
283- // Resets to start position to avoid writing corrupted data
284- fastBufferWriter . Seek ( dataSizePos ) ;
285- NetworkLog . LogError ( $ "[InstantiationData] Handler failed during synchronization (Write): { ex . Message } ") ;
286- return ;
287- }
262+ FastBufferReader fastBufferReader = serializer . GetFastBufferReader ( ) ;
263+ // Reads the expected size of the instantiation data
264+ fastBufferReader . ReadValueSafe ( out int dataSize ) ;
265+ int dataStartPos = fastBufferReader . Position ;
288266
289- // Compute and write actual instantiation data size
290- int dataEndPos = fastBufferWriter . Position ;
291- int dataSize = dataEndPos - dataStartPos ;
292- // Goes back and write the real size
293- fastBufferWriter . Seek ( dataSizePos ) ;
294- fastBufferWriter . WriteValueSafe ( dataSize ) ;
295- // Restores to end
296- fastBufferWriter . Seek ( dataEndPos ) ;
267+ try
268+ {
269+ synchronizableHandler . OnSynchronizeInstantiationData ( ref serializer ) ;
297270 }
298- else
271+ catch ( Exception ex )
299272 {
300- FastBufferReader fastBufferReader = serializer . GetFastBufferReader ( ) ;
301- // Reads the expected size of the instantiation data
302- fastBufferReader . ReadValueSafe ( out int dataSize ) ;
303- int dataStartPos = fastBufferReader . Position ;
304-
305- try
306- {
307- synchronizableHandler . OnSynchronizeInstantiationData ( ref serializer ) ;
308- }
309- catch ( Exception ex )
310- {
311- // Skips the unread instantiation data bytes
312- fastBufferReader . Seek ( dataStartPos + dataSize ) ;
313- NetworkLog . LogError ( $ "[InstantiationData] Handler failed during synchronization (Read): { ex . Message } ") ;
314- return ;
315- }
273+ // Skips the unread instantiation data bytes
274+ fastBufferReader . Seek ( dataStartPos + dataSize ) ;
275+ NetworkLog . LogError ( $ "[InstantiationData] Handler failed during synchronization (Read): { ex . Message } ") ;
276+ return ;
277+ }
316278
317- // Validates if expected number of bytes were read
318- int dataEndPos = fastBufferReader . Position ;
319- if ( dataEndPos != dataStartPos + dataSize )
320- {
321- NetworkLog . LogWarning ( $ "[InstantiationData] Read { dataEndPos - dataStartPos } bytes, expected { dataSize } ") ;
322- fastBufferReader . Seek ( dataStartPos + dataSize ) ;
323- }
279+ // Validates if expected number of bytes were read
280+ int dataEndPos = fastBufferReader . Position ;
281+ if ( dataEndPos != dataStartPos + dataSize )
282+ {
283+ NetworkLog . LogWarning ( $ "[InstantiationData] Read { dataEndPos - dataStartPos } bytes, expected { dataSize } ") ;
284+ fastBufferReader . Seek ( dataStartPos + dataSize ) ;
324285 }
325286 }
326287
0 commit comments