@@ -222,6 +222,24 @@ internal void SyncVarInit()
222
222
syncedFieldValues . Add ( sortedFields [ i ] . GetValue ( this ) ) ;
223
223
syncedFieldTypes . Add ( FieldType . String ) ;
224
224
}
225
+ else if ( sortedFields [ i ] . FieldType == typeof ( Vector3 ) )
226
+ {
227
+ syncedFields . Add ( sortedFields [ i ] ) ;
228
+ syncedFieldValues . Add ( sortedFields [ i ] . GetValue ( this ) ) ;
229
+ syncedFieldTypes . Add ( FieldType . Vector3 ) ;
230
+ }
231
+ else if ( sortedFields [ i ] . FieldType == typeof ( Vector2 ) )
232
+ {
233
+ syncedFields . Add ( sortedFields [ i ] ) ;
234
+ syncedFieldValues . Add ( sortedFields [ i ] . GetValue ( this ) ) ;
235
+ syncedFieldTypes . Add ( FieldType . Vector2 ) ;
236
+ }
237
+ else if ( sortedFields [ i ] . FieldType == typeof ( Quaternion ) )
238
+ {
239
+ syncedFields . Add ( sortedFields [ i ] ) ;
240
+ syncedFieldValues . Add ( sortedFields [ i ] . GetValue ( this ) ) ;
241
+ syncedFieldTypes . Add ( FieldType . Quaternion ) ;
242
+ }
225
243
else
226
244
{
227
245
Debug . LogError ( "MLAPI: The type " + sortedFields [ i ] . FieldType . ToString ( ) + " can not be used as a syncvar" ) ;
@@ -299,6 +317,23 @@ internal void FlushToClient(int clientId)
299
317
case FieldType . String :
300
318
writer . Write ( ( string ) syncedFields [ i ] . GetValue ( this ) ) ;
301
319
break ;
320
+ case FieldType . Vector3 :
321
+ Vector3 vector3 = ( Vector3 ) syncedFields [ i ] . GetValue ( this ) ;
322
+ writer . Write ( vector3 . x ) ;
323
+ writer . Write ( vector3 . y ) ;
324
+ writer . Write ( vector3 . z ) ;
325
+ break ;
326
+ case FieldType . Vector2 :
327
+ Vector2 vector2 = ( Vector2 ) syncedFields [ i ] . GetValue ( this ) ;
328
+ writer . Write ( vector2 . x ) ;
329
+ writer . Write ( vector2 . y ) ;
330
+ break ;
331
+ case FieldType . Quaternion :
332
+ Vector3 euler = ( ( Quaternion ) syncedFields [ i ] . GetValue ( this ) ) . eulerAngles ;
333
+ writer . Write ( euler . x ) ;
334
+ writer . Write ( euler . y ) ;
335
+ writer . Write ( euler . z ) ;
336
+ break ;
302
337
}
303
338
}
304
339
NetworkingManager . singleton . Send ( clientId , "MLAPI_SYNC_VAR_UPDATE" , "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED" , stream . ToArray ( ) ) ;
@@ -372,6 +407,24 @@ internal void SyncVarUpdate()
372
407
case FieldType . String :
373
408
writer . Write ( ( string ) syncedFields [ i ] . GetValue ( this ) ) ;
374
409
break ;
410
+ case FieldType . Vector3 :
411
+ Vector3 vector3 = ( Vector3 ) syncedFields [ i ] . GetValue ( this ) ;
412
+ writer . Write ( vector3 . x ) ;
413
+ writer . Write ( vector3 . y ) ;
414
+ writer . Write ( vector3 . z ) ;
415
+ break ;
416
+ case FieldType . Vector2 :
417
+ Vector2 vector2 = ( Vector2 ) syncedFields [ i ] . GetValue ( this ) ;
418
+ writer . Write ( vector2 . x ) ;
419
+ writer . Write ( vector2 . y ) ;
420
+ break ;
421
+ case FieldType . Quaternion :
422
+ Vector3 euler = ( ( Quaternion ) syncedFields [ i ] . GetValue ( this ) ) . eulerAngles ;
423
+ writer . Write ( euler . x ) ;
424
+ writer . Write ( euler . y ) ;
425
+ writer . Write ( euler . z ) ;
426
+ break ;
427
+
375
428
}
376
429
syncedFieldValues [ i ] = syncedFields [ i ] . GetValue ( this ) ;
377
430
dirtyFields [ i ] = false ;
@@ -470,6 +523,24 @@ private void SetDirtyness()
470
523
else
471
524
dirtyFields [ i ] = false ; //Up to date
472
525
break ;
526
+ case FieldType . Vector3 :
527
+ if ( ( Vector3 ) syncedFields [ i ] . GetValue ( this ) != ( Vector3 ) syncedFieldValues [ i ] )
528
+ dirtyFields [ i ] = true ; //This fields value is out of sync!
529
+ else
530
+ dirtyFields [ i ] = false ; //Up to date
531
+ break ;
532
+ case FieldType . Vector2 :
533
+ if ( ( Vector2 ) syncedFields [ i ] . GetValue ( this ) != ( Vector2 ) syncedFieldValues [ i ] )
534
+ dirtyFields [ i ] = true ; //This fields value is out of sync!
535
+ else
536
+ dirtyFields [ i ] = false ; //Up to date
537
+ break ;
538
+ case FieldType . Quaternion :
539
+ if ( ( Quaternion ) syncedFields [ i ] . GetValue ( this ) != ( Quaternion ) syncedFieldValues [ i ] )
540
+ dirtyFields [ i ] = true ; //This fields value is out of sync!
541
+ else
542
+ dirtyFields [ i ] = false ; //Up to date
543
+ break ;
473
544
}
474
545
}
475
546
}
0 commit comments