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); }