Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
                }
            }
        }
Esempio n. 4
0
        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);
        }