Ejemplo n.º 1
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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Updates the time filter.
        /// </summary>
        /// <param name="min">A float between 0 and 1 indicating the lower bound of the filter.</param>
        /// <param name="max">A float between 0 and 1 indicating the upper bound of the filter.</param>
        public void UpdateTimeFilter(float min, float max)
        {
            CurrentTimeFilter.MinTime = min;
            CurrentTimeFilter.MaxTime = max;

            UpdateTimestampBounds();

            var message = new MessageUpdateTimeFilter(CurrentTimeFilter);

            Services.NetworkManager().SendMessage(message.Pack());
            TimeFilterEventBroadcast.Invoke(message.TimeFilter);
        }
Ejemplo n.º 3
0
        private Task OnTimeFilterChange(MessageContainer obj)
        {
            Debug.Log("Changing Filter");
            MessageUpdateTimeFilter message = MessageUpdateTimeFilter.Unpack(obj);

            CurrentTimeFilter = message.TimeFilter;

            UpdateTimestampBounds();

            TimeFilterEventBroadcast.Invoke(message.TimeFilter);
            Debug.Log("Changing Filter - Completed");
            return(Task.CompletedTask);
        }