private async void Start()
    {
        objectTransformSyncHub.Connect();
        objectTransformSyncHub.OnSendTransformEvent += ObjectTransformSyncHub_OnSendTransformEvent;
        await objectTransformSyncHub.RegisterAsync(UniqueID);

        lastSyncObjectTransform = new SyncObjectTransform(); //for wait Register
    }
 private void ObjectTransformSyncHub_OnSendTransformEvent(SyncObjectTransform syncObjectTransform)
 {
     if (syncObjectTransform == null)
     {
         return;                              // first join user
     }
     lastSyncObjectTransform = syncObjectTransform;
     transform.SetPositionAndRotation(syncObjectTransform.Position, syncObjectTransform.Rotation);
 }
 private async void Update()
 {
     if (lastSyncObjectTransform != null && (lastSyncObjectTransform.Position != transform.position || lastSyncObjectTransform.Rotation != transform.rotation))
     {
         lastSyncObjectTransform = new SyncObjectTransform {
             Name = UniqueID, Position = transform.position, Rotation = transform.rotation
         };
         await objectTransformSyncHub.SendTransformAsync(lastSyncObjectTransform);
     }
 }
 //Server -> Client impl
 void IObjectTransformSyncHubReceiver.OnSendTransform(SyncObjectTransform syncObjectTransform) => OnSendTransformEvent?.Invoke(syncObjectTransform);
 public Task SendTransformAsync(SyncObjectTransform syncObjectTransform) => objectTransformHub.SendTransformAsync(syncObjectTransform);
 public async Task SendTransformAsync(SyncObjectTransform syncObjectTransform)
 {
     currentSyncObjectTransform = syncObjectTransform;
     Broadcast(room).OnSendTransform(syncObjectTransform);
 }