/// <summary> /// Stops/pauses playback. /// </summary> public void StopPlayback() { TimelineStatus = TimelineStatus.PAUSED; var message = new MessageUpdateTimeline(new TimelineState(TimelineStatus, CurrentTimestamp, MinTimestamp, MaxTimestamp, PlaybackSpeed)); Services.NetworkManager().SendMessage(message.Pack()); TimelineEventBroadcast.Invoke(message.TimelineState); }
/// <summary> /// Sets the playback speed. /// </summary> /// <param name="playbackSpeed">The new playback speed factor.</param> public void SetPlaybackSpeed(float playbackSpeed) { PlaybackSpeed = playbackSpeed; var message = new MessageUpdateTimeline(new TimelineState(TimelineStatus, CurrentTimestamp, MinTimestamp, MaxTimestamp, PlaybackSpeed)); Services.NetworkManager().SendMessage(message.Pack()); TimelineEventBroadcast.Invoke(message.TimelineState); }
/// <summary> /// Handles a new client. All relevant data is sent to the client to get it up to speed. /// </summary> /// <param name="client">The new client.</param> internal void HandleNewClient(Socket client) { if (!IsServer || Network == null) { return; } // Send world anchor data to client Services.AnchorManager().SendAnchor(client); if (Services.DataManager().CurrentStudyIndex != -1) { // assign id to client var clientMessage = new MessageAcceptClient(clientCounter++); Network.SendToClient(clientMessage.Pack(), client); // send client information about study var studyMessage = new MessageLoadStudy(Services.DataManager().CurrentStudyIndex); Network.SendToClient(studyMessage.Pack(), client); // send client information about session/condition filters var sessionFilterMessage = new MessageUpdateSessionFilter(Services.StudyManager().CurrentStudySessions, Services.StudyManager().CurrentStudyConditions); Network.SendToClient(sessionFilterMessage.Pack(), client); // send client information about time filter var timeFilterMessage = new MessageUpdateTimeFilter(Services.StudyManager().CurrentTimeFilter); Network.SendToClient(timeFilterMessage.Pack(), client); // send client information about timeline var timelineMessage = new MessageUpdateTimeline(new TimelineState(Services.StudyManager().TimelineStatus, Services.StudyManager().CurrentTimestamp, Services.StudyManager().MinTimestamp, Services.StudyManager().MaxTimestamp, Services.StudyManager().PlaybackSpeed)); Network.SendToClient(timelineMessage.Pack(), client); // send client information about vis containers //foreach (var container in Services.VisManager().ViewContainers.Values) //{ // var visContainer = new VisContainer // { // Id = container.Id, // Orientation = new float[] { container.transform.rotation.x, container.transform.rotation.y, container.transform.rotation.z, container.transform.rotation.w }, // Position = new float[] { container.transform.position.x, container.transform.position.y, container.transform.position.z }, // Scale = new float[] { container.transform.localScale.x, container.transform.localScale.y, container.transform.localScale.z } // }; // var containerMessage = new MessageCreateVisContainer(visContainer); // Network.SendToClient(containerMessage.Pack(), client); //} // send client information about visualizations foreach (var vis in Services.VisManager().Visualizations.Values) { var visMessage = new MessageCreateVisualization(vis.Settings); Network.SendToClient(visMessage.Pack(), client); } } }
private Task OnTimelineChange(MessageContainer obj) { Debug.Log("Changing Timeline"); MessageUpdateTimeline message = MessageUpdateTimeline.Unpack(obj); CurrentTimestamp = message.TimelineState.CurrentTimestamp; PlaybackSpeed = message.TimelineState.PlaybackSpeed; TimelineStatus = message.TimelineState.TimelineStatus; UpdateTimestampBounds(); TimelineEventBroadcast.Invoke(message.TimelineState); Debug.Log("Changing Timeline - Completed"); return(Task.CompletedTask); }