@@ -222,6 +222,24 @@ internal void SyncVarInit()
222222 syncedFieldValues . Add ( sortedFields [ i ] . GetValue ( this ) ) ;
223223 syncedFieldTypes . Add ( FieldType . String ) ;
224224 }
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+ }
225243 else
226244 {
227245 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)
299317 case FieldType . String :
300318 writer . Write ( ( string ) syncedFields [ i ] . GetValue ( this ) ) ;
301319 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 ;
302337 }
303338 }
304339 NetworkingManager . singleton . Send ( clientId , "MLAPI_SYNC_VAR_UPDATE" , "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED" , stream . ToArray ( ) ) ;
@@ -372,6 +407,24 @@ internal void SyncVarUpdate()
372407 case FieldType . String :
373408 writer . Write ( ( string ) syncedFields [ i ] . GetValue ( this ) ) ;
374409 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+
375428 }
376429 syncedFieldValues [ i ] = syncedFields [ i ] . GetValue ( this ) ;
377430 dirtyFields [ i ] = false ;
@@ -470,6 +523,24 @@ private void SetDirtyness()
470523 else
471524 dirtyFields [ i ] = false ; //Up to date
472525 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 ;
473544 }
474545 }
475546 }
0 commit comments