예제 #1
0
        private void UpdateUI(Bitmap bitmap) //Выводим рожу
        {
            this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate()
            {
                if (bitmap != null)
                {
                    imageBase.RenderTransformOrigin = new System.Windows.Point(0.5, 0.5);
                    ScaleTransform mainTransform    = new ScaleTransform();
                    mainTransform.ScaleX            = -1;
                    mainTransform.ScaleY            = 1;
                    imageBase.RenderTransform       = mainTransform;


                    headRollResult.Text = headRoll.ToString();
                    var headRollMessage = new SharpOSC.OscMessage("/rotation/roll", headRoll);
                    Sender.Send(headRollMessage);
                    headYawResult.Text = headYaw.ToString();
                    var headYawMessage = new SharpOSC.OscMessage("/rotation/yaw", headYaw);
                    Sender.Send(headYawMessage);
                    headPitchResult.Text = headPitch.ToString();
                    var headPitchMessage = new SharpOSC.OscMessage("/rotation/pitch", headPitch);
                    Sender.Send(headPitchMessage);


                    Graphics graphics = Graphics.FromImage(bitmap); //Херачим прямоугольник

                    System.Drawing.Pen pen = new System.Drawing.Pen(System.Drawing.Color.DeepSkyBlue);
                    graphics.DrawRectangle(pen, faceRectangleX, faceRectangleY, faceRectangleWidth, faceRectangleHeight);

                    imageBase.Source = BitmapToBitmapSource(bitmap);
                }
            }));
        }
 public void ResendMixNames(int mix, List <string> channelNames)           // TODO: rework
 {
     for (int label = 1; label <= MainWindow.instance.config.NUM_CHANNELS; label++)
     {
         OscMessage message = new OscMessage($"/mix{mix}/label{label}", channelNames[label - 1]);
         output.Send(message);
     }
 }
예제 #3
0
        void sendCurrentSlide()
        {
            if (Application.Presentations.Count == 0)
            {
                return;
            }
            OscMessage m = new OscMessage("/currentSlide", Application.ActivePresentation.SlideShowWindow.View.CurrentShowPosition);

            sender.Send(m);
        }
예제 #4
0
    private void Awake()
    {
        gameObject.SetActive(!bool.Parse(Config.Read(CONFIG_KEYS.audiodisable)));
        _appStateBroker = AppStateBroker.Instance;

        if (DEVELOPER_MODE)
        {
            AudioSourceOutputDevice[] channels =
                transform.GetComponentsInChildren <AudioSourceOutputDevice>();

            foreach (AudioSourceOutputDevice c in channels)
            {
                c.enabled = false;
            }
        }

        SFX_Volume        = float.Parse(Config.Read(CONFIG_KEYS.lanevolume));
        Ambient_Volume    = int.Parse(Config.Read(CONFIG_KEYS.ambientvolume));
        refVolumeOffset   = float.Parse(Config.Read(CONFIG_KEYS.refvolumeoffset));
        CrowdVoluemOffset = float.Parse(Config.Read(CONFIG_KEYS.crowdvolumeoffset));

        var message_vol = new SharpOSC.OscMessage("/maxVol", Ambient_Volume);

        _UdpSender.Send(message_vol);
    }
예제 #5
0
 public void SendWithoutChunking(byte[] toSendBytes)
 {
     try
     {
         if (sender != null)
         {
             Debug.Log("Data size is " + toSendBytes.Length);
             sender.Send(toSendBytes, new AsyncCallback(SendCallBack));
         }
     }
     catch (Exception ex)
     {
         Debug.LogError("Sending data error: " + ex.Message);
     }
 }
예제 #6
0
        public void SendOscCommand(string name, float value, string ip, int port)
        {
            var message = new OscMessage(name, value);
            var sender  = new UDPSender(ip, port);

            sender.Send(message);
        }
예제 #7
0
        private void sendPIDUpdate(object sender, EventArgs e)
        {
            var message = new OscMessage("/PIDUpdate",
                                         (double)numkP.Value,
                                         (double)numkI.Value,
                                         (double)numkD.Value,
                                         (double)numkF.Value,
                                         (double)numAccel.Value,
                                         (double)numVel.Value,
                                         (double)numRamp.Value,
                                         (double)numIZone.Value,
                                         (double)numSetpoint.Value,
                                         (double)numMaxIAccum.Value);

            oscSender.Send(message);
        }
예제 #8
0
 private void Update()
 {
     foreach (var train in _trains)
     {
         var message = new OscMessage(train.Id, new IPEndPoint(IPAddress.Parse("192.168.2.10"), 15670), train.CurrentSpeed);
         _sender.Send(message);
     }
 }
예제 #9
0
        static void Main(string[] args)
        {
            do
            {
                if (int.TryParse(Console.ReadLine(), out var integer))
                {
                    var message = new OscMessage("/train/1", new IPEndPoint(IPAddress.Parse("192.168.2.10"), 15670), integer);

                    _sender.Send(message);
                }
            }while (true);
        }
예제 #10
0
        private void SendDataUDP(string data)
        {
            if (_udpSender == null)
            {
                _udpSender            = new UDPSender(SendToIp, SendToPort);
                _udpSender.Connected += (sender, args) =>
                {
                    Debug.Log("UDP Connected hands data endpoint");
                };
            }

            _udpSender.Send(CompressDataWithGzip ? GzipCompression.Compress(data) : data);
        }
예제 #11
0
        //public void sendRawData(Dictionary<EdkDll.EE_DataChannel_t, double[]> data)
        //{
        //    int _bufferSize = data[EdkDll.EE_DataChannel_t.TIMESTAMP].Length;



        //    for (int i = 0; i < _bufferSize; i++)
        //    {

        //        sending line by line
        //        OscMessage msg = new OscMessage("/rawEEG", "");
        //        msg.Arguments.Clear();
        //       // now write the data
        //        foreach (EdkDll.EE_DataChannel_t channel in data.Keys)
        //        {

        //            msg.Arguments.Add(data[channel][i]);
        //        }
        //        sender.Send(msg);
        //    }



        //}
        /// <summary>
        /// Sends the raw data for each sample ("line by line") in the data object. The each sample is delayed according to the time stamps of the samples.
        /// </summary>
        /// <param name="data"></param>
        public void sendRawDataSimple(Dictionary <EdkDll.EE_DataChannel_t, double[]> data, string sendToOSCAdress)
        {
            int _bufferSize = data[EdkDll.EE_DataChannel_t.TIMESTAMP].Length;



            double lastTime;


            for (int i = 0; i < _bufferSize; i++)
            {
                // sending line by line
                OscMessage msg = new OscMessage(sendToOSCAdress, "");
                msg.Arguments.Clear();
                // now write the data
                foreach (EdkDll.EE_DataChannel_t channel in data.Keys)
                {
                    msg.Arguments.Add(data[channel][i]);
                }

                // try to send measseag with appropiate time intervals
                // to simulate it as real input as good as possible

                sender.Send(msg);

                if (i < _bufferSize - 1)
                {
                    double waitTimeInSeconds = data[EdkDll.EE_DataChannel_t.TIMESTAMP][i + 1] - data[EdkDll.EE_DataChannel_t.TIMESTAMP][i];


                    double timeInMS = waitTimeInSeconds * 1000.0;

                    int sleepTime = Convert.ToInt32(timeInMS);

                    Thread.Sleep(sleepTime);
                }
            }
        }
예제 #12
0
    // Function to send OSC messages to Linux
    void sendPos_polar(float pos_x, float pos_y, float pos_z, float scale)
    {
        // Calculate polar coordinates
        float vol = scale;
        float rad = Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z + pos_y * pos_y);
        float azi = Mathf.Atan2(pos_x, pos_z) * 180 / Mathf.PI;
        float ele = Mathf.Atan2(pos_y, Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z)) * 180 / Mathf.PI;

        // Include distance for volume
        if (rad != 0f)
        {
            vol = vol / rad;
        }
        // Create messages
        var msg_azi = new SharpOSC.OscMessage("/0x00/azi", azi);
        var msg_ele = new SharpOSC.OscMessage("/0x00/ele", ele);
        var msg_vol = new SharpOSC.OscMessage("/0x00/gain", vol);

        // Send to Linux
        sender.Send(msg_azi);
        sender.Send(msg_ele);
        sender.Send(msg_vol);
    }
예제 #13
0
        public void TestDeviceHangup()
        {
            // setup
            var sender  = new UDPSender("127.0.0.1", 5000);
            var adapter = new RemoteOSCAdapter(5000);

            adapter.AddHandler(EEGDataType.CONTACT_QUALITY, HandleConnStatus);
            adapter.Start();

            // test that it recieves our packet
            var packet = new OscMessage("/muse/elements/horseshoe", new object[] { 1, 1, 1, 1 });

            sender.Send(packet);
            while (!messageReceived)
            {
                adapter.FlushEvents();
            }
            CheckConnStatus(new double[] { 1, 1, 1, 1 });

            // test hangup
            Thread.Sleep(RemoteOSCAdapter.HANGUP_TIME * 2);
            adapter.FlushEvents();
            CheckConnStatus(new double[] { 4, 4, 4, 4 });

            // test recovery
            messageReceived = false;
            sender.Send(packet);
            while (!messageReceived)
            {
                adapter.FlushEvents();
            }
            CheckConnStatus(new double[] { 1, 1, 1, 1 });

            // teardown
            adapter.Stop();
        }
        private void TransmitDataForController(GearVRController controller)
        {
            if ((DateTime.Now - _lastTimeSent).TotalMilliseconds > 0)
            {
                try {
                    var trackingData = controller.LatestTrackingData;

                    var serializedStr = JsonConvert.SerializeObject(trackingData, Formatting.None);

                    _oscClient.Send(new OscMessage($"/{controller.Name}",
                                                   serializedStr,
                                                   DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
                                                   ));
                }
                catch (Exception ex) {
                    logger.Info($"Failed to send OSC: {ex.Message}");
                }

                _lastTimeSent = DateTime.Now;
            }
        }
예제 #15
0
        public void sendAffectiveStateData(AffectiveState affectiveState, bool isSimulated)
        {
            sender.Send(affectiveState.toOSCMesseage());

            if (isSimulated)
            {
                double waitTimeInSeconds;
                if (lasteTimeStamp == 0)
                {
                    lasteTimeStamp = affectiveState.emotivTimeStamp;
                }
                else if (lasteTimeStamp != affectiveState.emotivTimeStamp)
                {
                    waitTimeInSeconds = affectiveState.emotivTimeStamp - lasteTimeStamp;
                    lasteTimeStamp    = affectiveState.emotivTimeStamp;
                    double timeInMS = waitTimeInSeconds * 1000.0;

                    int sleepTime = Convert.ToInt32(timeInMS);

                    Thread.Sleep(sleepTime);
                }
            }
        }
예제 #16
0
        public void sendExpressivOSC(ExpressivState exprState, bool isSimulated)
        {
            sender.Send(exprState.toOSCMesseage());

            if (isSimulated)
            {
                double waitTimeInSeconds;

                if (lasteTimeStamp == 0)
                {
                    lasteTimeStamp = exprState.emotivTimeStamp;
                }
                else if (lasteTimeStamp != exprState.emotivTimeStamp)
                {
                    waitTimeInSeconds = exprState.emotivTimeStamp - lasteTimeStamp;
                    lasteTimeStamp    = exprState.emotivTimeStamp;
                    double timeInMS = waitTimeInSeconds * 1000.0;

                    int sleepTime = Convert.ToInt32(timeInMS);

                    Thread.Sleep(sleepTime);
                }
            }
        }
예제 #17
0
 static void HelloIAmHere()
 {
     ReplyingToYou.Send(new OscMessage("/hello", (int)Messages.Hello));
     IAmAlone = false;
 }
예제 #18
0
		public void Attach(FM.IceLink.Conference conference, Action<Exception> callback)
		{
			try {
				this.Conference = conference;

				conference.OnLinkOfferAnswer += (e) =>
				{
					try {
						Signal signal = new Signal();
						signal.PeerId = e.PeerId;
						signal.DataJson = e.OfferAnswer.ToJson();
						#if USE_TCP_SIGNALLING
							TCPSender<Signal> sender = new TCPSender<Signal> ();
							if (sender.Connect (IPAddress, TCP_PORT_SIGNALLING)) {
								sender.Send (TCP_MESSAGE_OFFER_ANSWER, signal);
								sender.Disconnect ();
							}
						#else
							UDPSender<Signal> sender = new UDPSender<Signal>();
							sender.Send(TCP_MESSAGE_OFFER_ANSWER,signal,this.IPAddress,TCP_PORT_SIGNALLING);
						#endif

					}
					catch (Exception ex)
					{
						Console.WriteLine(ex.Message);
					}
						
				};
				conference.OnLinkCandidate += (e) =>
				{
					try {
						Signal signal = new Signal();
						signal.PeerId = e.PeerId;
						signal.DataJson = e.Candidate.ToJson();
						#if USE_TCP_SIGNALLING
							TCPSender<Signal> sender = new TCPSender<Signal> ();
							if (sender.Connect (IPAddress, TCP_PORT_SIGNALLING)) {
								sender.Send (TCP_MESSAGE_CANDIDATE, signal);
								sender.Disconnect ();
							}
						#else
							UDPSender<Signal> sender = new UDPSender<Signal>();
							sender.Send(TCP_MESSAGE_CANDIDATE,signal,this.IPAddress,TCP_PORT_SIGNALLING);
						#endif


					}
					catch (Exception ex)
					{
						Console.WriteLine(ex.Message);
					}
						
				};					
			}
			catch (Exception ex)
			{
				callback(ex);
			}
		}
예제 #19
0
        static void RunOptions(Options o)
        {
            Console.WriteLine("OSC will listen on port " + o.ListenPort + " and send to " + o.SendIp + ":" + o.SendPort + "");

            remote.Login();

            var listener = new UDPListener(o.ListenPort);
            var sender   = new UDPSender(o.SendIp, o.SendPort);

            VoicemeeterType vmType = remote.GetVMType();

            Console.WriteLine("Successfully connect to " + vmType + " version: " + remote.GetVMVersion());

            while (true)
            {
                try {
                    OscMessage messageReceived = (OscMessage)listener.Receive();
                    if (messageReceived != null)
                    {
                        // /vm/type/channel/cmd
                        if (messageReceived.Address.StartsWith("/vm/"))
                        {
                            String[] d = messageReceived.Address.Split('/');
                            if (d[2] == "strip" || d[2] == "bus")
                            {
                                switch (d[4])
                                {
                                case "gain":
                                    remote.SetParameterFloat(d[2] + "[" + d[3] + "].Gain", (float)messageReceived.Arguments[0]);
                                    break;

                                case "mute":
                                    remote.SetParameterFloat(d[2] + "[" + d[3] + "].Mute", (float)messageReceived.Arguments[0]);
                                    break;
                                }
                            }
                        }
                        if (o.Verbose)
                        {
                            Console.WriteLine(messageReceived.Address + " = " + messageReceived.Arguments[0].ToString());
                        }
                    }
                }
                catch (Exception e) { Console.WriteLine("Unknown exception occured: " + e.Message); }

                if (vmType.ToString() == VoicemeeterType.VOICEMEETER.ToString())
                {
                }
                if (vmType.ToString() == VoicemeeterType.VOICEMEETER_BANANA.ToString())
                {
                }
                if (vmType.ToString() == VoicemeeterType.VOICEMEETER_POATATO.ToString())
                {
                }

                for (int i = 0; i < (vmType.PhysicalCount + vmType.VirtualCount); i++)
                {
                    remote.IsParametersDirty();
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/gain", remote.GetParameterFloat("Bus[" + i.ToString() + "].Gain")));
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/mute", remote.GetParameterFloat("Bus[" + i.ToString() + "].Mute")));
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/level", 1, remote.GetLevel(VoicemeeterLevelType.OUTPUT, (VoicemeeterChannels)(i * vmType.PhysicalOutputChannelCount))));
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/level", 2, remote.GetLevel(VoicemeeterLevelType.OUTPUT, (VoicemeeterChannels)(i * vmType.PhysicalOutputChannelCount + 1))));

                    remote.IsParametersDirty();
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/gain", remote.GetParameterFloat("Strip[" + i.ToString() + "].Gain")));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/mute", remote.GetParameterFloat("Strip[" + i.ToString() + "].Mute")));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/label", stringOR(remote.GetParameterStringUNICODE("Strip[" + i.ToString() + "].Label"), "A" + (i + 1).ToString())));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/level", 1, remote.GetLevel(VoicemeeterLevelType.INPUT_POST_MUTE, (VoicemeeterChannels)(i < vmType.PhysicalCount ? (i * vmType.PhysicalInputChannelCount + 0) : (vmType.PhysicalCount * 2 + (i - vmType.PhysicalCount) * vmType.VirtualChannelCount + 0)))));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/level", 2, remote.GetLevel(VoicemeeterLevelType.INPUT_POST_MUTE, (VoicemeeterChannels)(i < vmType.PhysicalCount ? (i * vmType.PhysicalInputChannelCount + 1) : (vmType.PhysicalCount * 2 + (i - vmType.PhysicalCount) * vmType.VirtualChannelCount + 1)))));
                }

                System.Threading.Thread.Sleep(10);
            }
        }
예제 #20
0
        private void Replayer_Button_Play_Click(object sender, RoutedEventArgs e)
        {
            if (_replayer == null)
            {
                MessageBox.Show("Please select file firstly!");
                return;
            }

            // not playing
            // paused or stoped
            if (!_replayer.IsPlaying)
            {
                // Check map
                Replayer_Map_Item buff = null;
                Dictionary <IPEndPoint, IPEndPoint> map = new Dictionary <IPEndPoint, IPEndPoint>();
                try
                {
                    foreach (Replayer_Map_Item item in Replayer_Map.Items)
                    {
                        buff = item;

                        // ignore
                        if (!(bool)item.Valid.IsChecked)
                        {
                            continue;
                        }

                        var point = item.Point.Get_IPEND();

                        map.Add(item._point, point);
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Wrong Input!\nCheck the Map List At " + buff?.Num.Text);
                    Recorder_Stop();
                    return;
                }

                _replayer.Initial(map,
                                  (Core.ReplayCore.SendInfo msg) =>
                {
                    _sender.Send(msg.bytes.ToArray(), msg.point);
                },
                                  (Core.ReplayCore.ReplayInfo info) =>
                {
                    this.Dispatcher.Invoke(() =>
                    {
                        var finfo = _replayer.FileInfo;
                        if (info.index == finfo.totalIndex - 1)
                        {
                            if ((bool)Replayer_Flag_Loop.IsChecked)
                            {
                                _replayer.JumpTo(0);
                            }
                        }
                        if (!Replayer_Flag_IsDraging)
                        {
                            Replayer_Slider.Value = info.index;
                        }
                        Replayer_Info.Text = info.time.AddHours(8) + " Progress Percentage: " + (100.0 * (double)info.index / ((double)finfo.totalIndex - 1)).ToString("f2") + "%"
                                             + "\nProgress Index: " + info.index + " Total Index: " + finfo.totalIndex + " Cost Time:" + info.pkgCostTime;
                    });
                });


                _replayer.P();
                Replayer_IsPlaying();

                // save params
                Save_Replay_Params();
            }
            else
            {
                _replayer.P();
                Replayer_NotPlaying();
            }
        }
예제 #21
0
        private void CaptureProcess()
        {
            Sender = new UDPSender(CurrentIpAdress, Convert.ToInt32(currentPort));
            while (senseManager.AcquireFrame(true).IsSuccessful())
            {
                PXCMCapture.Sample  sample = senseManager.QuerySample();
                PXCMImage.ImageData colorImageData;
                Bitmap colorBitmap;

                sample.color.AcquireAccess(PXCMImage.Access.ACCESS_READ, PXCMImage.PixelFormat.PIXEL_FORMAT_RGB32, out colorImageData);
                colorBitmap = colorImageData.ToBitmap(0, sample.color.info.width, sample.color.info.height);

                if (faceModule != null)
                {
                    PXCMFaceData faceData = faceModule.CreateOutput();
                    faceData.Update();
                    numberTrackedFace = faceData.QueryNumberOfDetectedFaces();

                    PXCMFaceData.Face faceDataFace = faceData.QueryFaceByIndex(0);

                    if (faceDataFace != null)
                    {
                        PXCMFaceData.DetectionData faceDetectionData = faceDataFace.QueryDetection();
                        PXCMFaceData.LandmarksData landMarksData     = faceDataFace.QueryLandmarks();


                        if (faceDetectionData != null) //Запись переменных нахождения фейса
                        {
                            PXCMRectI32 faceRectangle;
                            faceDetectionData.QueryFaceAverageDepth(out faceAverageDepth);
                            faceDetectionData.QueryBoundingRect(out faceRectangle);
                            faceRectangleHeight = faceRectangle.h;
                            faceRectangleWidth  = faceRectangle.w;
                            faceRectangleX      = faceRectangle.x;
                            faceRectangleY      = faceRectangle.y;

                            PXCMFaceData.LandmarkPoint[] points; //Херачим точки на фейс
                            if (landMarksData != null)
                            {
                                bool res = landMarksData.QueryPoints(out points);

                                Graphics graphics = Graphics.FromImage(colorBitmap);
                                Font     font     = new Font(System.Drawing.FontFamily.GenericMonospace, 12, System.Drawing.FontStyle.Bold);

                                foreach (PXCMFaceData.LandmarkPoint landmark in points)
                                {
                                    point.X = landmark.image.x + LandMarkAlingment;
                                    point.Y = landmark.image.y + LandMarkAlingment;
                                    //Console.WriteLine(point.X);

                                    if (landmark.confidenceImage == 0)
                                    {
                                        graphics.DrawString("X", font, System.Drawing.Brushes.Brown, point);
                                    }
                                    else
                                    {
                                        graphics.DrawString("*", font, System.Drawing.Brushes.CornflowerBlue, point);
                                    }
                                    Connect = Math.Min(landmark.confidenceImage, 1);
                                }
                            }
                        }

                        var connectMessage = new SharpOSC.OscMessage("/expressions/connectMessage", Connect);
                        Sender.Send(connectMessage);

                        PXCMFaceData.PoseData facePoseData = faceDataFace.QueryPose(); //переменные поворота для анимации головы
                        if (facePoseData != null)
                        {
                            PXCMFaceData.PoseEulerAngles headAngles;
                            facePoseData.QueryPoseAngles(out headAngles);
                            headRoll  = headAngles.roll;
                            headYaw   = headAngles.yaw;
                            headPitch = headAngles.pitch;
                        }

                        PXCMFaceData.ExpressionsData expressionData = faceDataFace.QueryExpressions();

                        if (expressionData != null)
                        {
                            PXCMFaceData.ExpressionsData.FaceExpressionResult score;

                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_KISS, out score);
                            Dispatcher.Invoke(() => kissExpression.Text = Convert.ToString(score.intensity));
                            var kissMessage = new SharpOSC.OscMessage("/expressions/kiss", score.intensity);
                            Sender.Send(kissMessage);

                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_MOUTH_OPEN, out score);
                            Dispatcher.Invoke(() => mouthExpression.Text = Convert.ToString(score.intensity));
                            var mouthMessage = new SharpOSC.OscMessage("/expressions/mouth", score.intensity);
                            Sender.Send(mouthMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_SMILE, out score);
                            Dispatcher.Invoke(() => smileExpression.Text = Convert.ToString(score.intensity));
                            var smileMessage = new SharpOSC.OscMessage("/expressions/smile", score.intensity);
                            Sender.Send(smileMessage);

                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_TONGUE_OUT, out score);
                            Dispatcher.Invoke(() => tongueExpression.Text = Convert.ToString(score.intensity));
                            var tongueOutMessage = new SharpOSC.OscMessage("/expressions/tongueout", score.intensity);
                            Sender.Send(tongueOutMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_LOWERER_LEFT, out score);
                            Dispatcher.Invoke(() => leftBrowLowExpression.Text = Convert.ToString(score.intensity));
                            var leftBrowLowMessage = new SharpOSC.OscMessage("/expressions/leftBrowLow", score.intensity);
                            Sender.Send(leftBrowLowMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_LOWERER_RIGHT, out score);
                            Dispatcher.Invoke(() => rightBrowLowExpression.Text = Convert.ToString(score.intensity));
                            var rightBrowLowMessage = new SharpOSC.OscMessage("/expressions/rightBrowLow", score.intensity);
                            Sender.Send(rightBrowLowMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_RAISER_LEFT, out score);
                            Dispatcher.Invoke(() => leftBrowRaiseExpression.Text = Convert.ToString(score.intensity));
                            var leftBrowRaiseMessage = new SharpOSC.OscMessage("/expressions/leftBrowRaise", score.intensity);
                            Sender.Send(leftBrowRaiseMessage);

                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_RAISER_RIGHT, out score);
                            Dispatcher.Invoke(() => rightBrowRaiseExpression.Text = Convert.ToString(score.intensity));
                            var rightBrowRaiseMessage = new SharpOSC.OscMessage("/expressions/rightBrowRaise", score.intensity);
                            Sender.Send(rightBrowRaiseMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_CLOSED_LEFT, out score);
                            Dispatcher.Invoke(() => leftEyeClosedExpression.Text = Convert.ToString(score.intensity));
                            var leftEyeClosedMessage = new SharpOSC.OscMessage("/expressions/leftEyeClosed", score.intensity);
                            Sender.Send(leftEyeClosedMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_CLOSED_RIGHT, out score);
                            Dispatcher.Invoke(() => rightEyeClosedExpression.Text = Convert.ToString(score.intensity));
                            var rightEyeClosedMessage = new SharpOSC.OscMessage("/expressions/rightEyeClosed", score.intensity);
                            Sender.Send(rightEyeClosedMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_TURN_LEFT, out score);
                            Dispatcher.Invoke(() => eyesTurnLeftExpression.Text = Convert.ToString(score.intensity));
                            var eyesTurnLeftMessage = new SharpOSC.OscMessage("/expressions/eyesTurnLeft", score.intensity);
                            Sender.Send(eyesTurnLeftMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_TURN_RIGHT, out score);
                            Dispatcher.Invoke(() => eyesTurnRightExpression.Text = Convert.ToString(score.intensity));
                            var eyesTurnRightMessage = new SharpOSC.OscMessage("/expressions/eyesTurnRight", score.intensity);
                            Sender.Send(eyesTurnRightMessage);



                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_DOWN, out score);
                            Dispatcher.Invoke(() => eyesDownExpression.Text = Convert.ToString(score.intensity));
                            var eyesDownMessage = new SharpOSC.OscMessage("/expressions/eyesDown", score.intensity);
                            Sender.Send(eyesDownMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_UP, out score);
                            Dispatcher.Invoke(() => eyesUpExpression.Text = Convert.ToString(score.intensity));
                            var eyesUpMessage = new SharpOSC.OscMessage("/expressions/eyesUp", score.intensity);
                            Sender.Send(eyesUpMessage);


                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_PUFF_LEFT, out score);
                            Dispatcher.Invoke(() => puffLeftExpression.Text = Convert.ToString(score.intensity));
                            var leftPuffMessage = new SharpOSC.OscMessage("/expressions/leftPuff", score.intensity);
                            Sender.Send(leftPuffMessage);



                            expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_PUFF_RIGHT, out score);
                            Dispatcher.Invoke(() => puffRightExpression.Text = Convert.ToString(score.intensity));
                            var rightPuffMessage = new SharpOSC.OscMessage("/expressions/rightPuff", score.intensity);
                            Sender.Send(rightPuffMessage);
                        }
                    }
                    faceData.Dispose();
                }
                UpdateUI(colorBitmap);

                colorBitmap.Dispose();
                sample.color.ReleaseAccess(colorImageData);
                senseManager.ReleaseFrame();
            }
        }
        /// <summary>
        /// Handles the body frame data arriving from the sensor
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void Reader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)
        {
            bool dataReceived = false;

            using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame())
            {
                if (bodyFrame != null)
                {
                    if (this.bodies == null)
                    {
                        this.bodies = new Body[bodyFrame.BodyCount];
                    }

                    // The first time GetAndRefreshBodyData is called, Kinect will allocate each Body in the array.
                    // As long as those body objects are not disposed and not set to null in the array,
                    // those body objects will be re-used.
                    bodyFrame.GetAndRefreshBodyData(this.bodies);
                    dataReceived = true;
                }
            }

            if (dataReceived)
            {
                using (DrawingContext dc = this.drawingGroup.Open())
                {
                    // Draw a transparent background to set the render size
                    dc.DrawRectangle(Brushes.Black, null, new Rect(0.0, 0.0, this.displayWidth, this.displayHeight));

                    int penIndex = 0;
                    foreach (Body body in this.bodies)
                    {
                        Pen drawPen = this.bodyColors[penIndex++];

                        if (body.IsTracked)
                        {
                            this.DrawClippedEdges(body, dc);

                            IReadOnlyDictionary <JointType, Joint> joints = body.Joints;

                            // log joints
                            StringBuilder builder = new StringBuilder();

                            // it's ugly and verbose, but it's clear and in guaranteed order
                            builder.Append(joints[JointType.AnkleLeft].Position.X + " " + joints[JointType.AnkleLeft].Position.Y + " " + joints[JointType.AnkleLeft].Position.Z + " ");
                            builder.Append(joints[JointType.AnkleRight].Position.X + " " + joints[JointType.AnkleRight].Position.Y + " " + joints[JointType.AnkleRight].Position.Z + " ");
                            builder.Append(joints[JointType.ElbowLeft].Position.X + " " + joints[JointType.ElbowLeft].Position.Y + " " + joints[JointType.ElbowLeft].Position.Z + " ");
                            builder.Append(joints[JointType.ElbowRight].Position.X + " " + joints[JointType.ElbowRight].Position.Y + " " + joints[JointType.ElbowRight].Position.Z + " ");
                            builder.Append(joints[JointType.FootLeft].Position.X + " " + joints[JointType.FootLeft].Position.Y + " " + joints[JointType.FootLeft].Position.Z + " ");
                            builder.Append(joints[JointType.FootRight].Position.X + " " + joints[JointType.FootRight].Position.Y + " " + joints[JointType.FootRight].Position.Z + " ");
                            builder.Append(joints[JointType.HandLeft].Position.X + " " + joints[JointType.HandLeft].Position.Y + " " + joints[JointType.HandLeft].Position.Z + " ");
                            builder.Append(joints[JointType.HandRight].Position.X + " " + joints[JointType.HandRight].Position.Y + " " + joints[JointType.HandRight].Position.Z + " ");
                            builder.Append(joints[JointType.HandTipLeft].Position.X + " " + joints[JointType.HandTipLeft].Position.Y + " " + joints[JointType.HandTipLeft].Position.Z + " ");
                            builder.Append(joints[JointType.HandTipRight].Position.X + " " + joints[JointType.HandTipRight].Position.Y + " " + joints[JointType.HandTipRight].Position.Z + " ");
                            builder.Append(joints[JointType.Head].Position.X + " " + joints[JointType.Head].Position.Y + " " + joints[JointType.Head].Position.Z + " ");
                            builder.Append(joints[JointType.HipLeft].Position.X + " " + joints[JointType.HipLeft].Position.Y + " " + joints[JointType.HipLeft].Position.Z + " ");
                            builder.Append(joints[JointType.HipRight].Position.X + " " + joints[JointType.HipRight].Position.Y + " " + joints[JointType.HipRight].Position.Z + " ");
                            builder.Append(joints[JointType.KneeLeft].Position.X + " " + joints[JointType.KneeLeft].Position.Y + " " + joints[JointType.KneeLeft].Position.Z + " ");
                            builder.Append(joints[JointType.KneeRight].Position.X + " " + joints[JointType.KneeRight].Position.Y + " " + joints[JointType.KneeRight].Position.Z + " ");
                            builder.Append(joints[JointType.Neck].Position.X + " " + joints[JointType.Neck].Position.Y + " " + joints[JointType.Neck].Position.Z + " ");
                            builder.Append(joints[JointType.ShoulderLeft].Position.X + " " + joints[JointType.ShoulderLeft].Position.Y + " " + joints[JointType.ShoulderLeft].Position.Z + " ");
                            builder.Append(joints[JointType.ShoulderRight].Position.X + " " + joints[JointType.ShoulderRight].Position.Y + " " + joints[JointType.ShoulderRight].Position.Z + " ");
                            builder.Append(joints[JointType.SpineBase].Position.X + " " + joints[JointType.SpineBase].Position.Y + " " + joints[JointType.SpineBase].Position.Z + " ");
                            builder.Append(joints[JointType.SpineMid].Position.X + " " + joints[JointType.SpineMid].Position.Y + " " + joints[JointType.SpineMid].Position.Z + " ");
                            builder.Append(joints[JointType.SpineShoulder].Position.X + " " + joints[JointType.SpineShoulder].Position.Y + " " + joints[JointType.SpineShoulder].Position.Z + " ");
                            builder.Append(joints[JointType.ThumbLeft].Position.X + " " + joints[JointType.ThumbLeft].Position.Y + " " + joints[JointType.ThumbLeft].Position.Z + " ");
                            builder.Append(joints[JointType.ThumbRight].Position.X + " " + joints[JointType.ThumbRight].Position.Y + " " + joints[JointType.ThumbRight].Position.Z + " ");
                            builder.Append(joints[JointType.WristLeft].Position.X + " " + joints[JointType.WristLeft].Position.Y + " " + joints[JointType.WristLeft].Position.Z + " ");
                            builder.Append(joints[JointType.WristRight].Position.X + " " + joints[JointType.WristRight].Position.Y + " " + joints[JointType.WristRight].Position.Z + " ");

                            string jointStr = builder.ToString();
                            log.Info(jointStr);
                            // convert the joint points to depth (display) space
                            Dictionary <JointType, Point> jointPoints = new Dictionary <JointType, Point>();

                            foreach (JointType jointType in joints.Keys)
                            {
                                // sometimes the depth(Z) of an inferred joint may show as negative
                                // clamp down to 0.1f to prevent coordinatemapper from returning (-Infinity, -Infinity)
                                CameraSpacePoint position = joints[jointType].Position;
                                if (position.Z < 0)
                                {
                                    position.Z = InferredZPositionClamp;
                                }

                                DepthSpacePoint depthSpacePoint = this.coordinateMapper.MapCameraPointToDepthSpace(position);
                                jointPoints[jointType] = new Point(depthSpacePoint.X, depthSpacePoint.Y);
                            }

                            this.DrawBody(joints, jointPoints, dc, drawPen);

                            this.DrawHand(body.HandLeftState, jointPoints[JointType.HandLeft], dc);
                            this.DrawHand(body.HandRightState, jointPoints[JointType.HandRight], dc);

                            //by KO

                            // setting data set : the name of the element + x + y + z

                            //FOR MUSIC

                            var HandRight   = new SharpOSC.OscMessage(" /HandRight", " ", joints[JointType.HandRight].Position.X.ToString(), " ", joints[JointType.HandRight].Position.Y.ToString(), " ", joints[JointType.HandRight].Position.Z.ToString());
                            var HandTipLeft = new SharpOSC.OscMessage(" /HandTipLeft", " ", joints[JointType.HandTipLeft].Position.X.ToString(), " ", joints[JointType.HandTipLeft].Position.Y.ToString(), " ", joints[JointType.HandTipLeft].Position.Z.ToString());
                            var AnkleLeft   = new SharpOSC.OscMessage(" /AnkleLeft", " ", joints[JointType.AnkleLeft].Position.X.ToString(), " ", joints[JointType.AnkleLeft].Position.Y.ToString(), " ", joints[JointType.AnkleLeft].Position.Z.ToString());
                            var AnkleRight  = new SharpOSC.OscMessage(" /AnkleRight", " ", joints[JointType.AnkleRight].Position.X.ToString(), " ", joints[JointType.AnkleRight].Position.Y.ToString(), " ", joints[JointType.AnkleRight].Position.Z.ToString());


                            //PureData
                            //var HandRight = new SharpOSC.OscMessage("/HandRight/position", joints[JointType.HandRight].Position.X, joints[JointType.HandRight].Position.Y,  joints[JointType.HandRight].Position.Z);
                            //var HandTipLeft = new SharpOSC.OscMessage("/HandTipLeft/position", joints[JointType.HandTipLeft].Position.X, joints[JointType.HandTipLeft].Position.Y, joints[JointType.HandTipLeft].Position.Z);
                            //var AnkleLeft = new SharpOSC.OscMessage("/AnkleLeft", " ", joints[JointType.AnkleLeft].Position.X.ToString(), " ", joints[JointType.AnkleLeft].Position.Y.ToString(), " ", joints[JointType.AnkleLeft].Position.Z.ToString());
                            //var AnkleRight = new SharpOSC.OscMessage("/AnkleRight", " ", joints[JointType.AnkleRight].Position.X.ToString(), " ", joints[JointType.AnkleRight].Position.Y.ToString(), " ", joints[JointType.AnkleRight].Position.Z.ToString());



                            var ElbowLeft     = new SharpOSC.OscMessage(" /ElbowLeft", " ", joints[JointType.ElbowLeft].Position.X.ToString(), " ", joints[JointType.ElbowLeft].Position.Y.ToString(), " ", joints[JointType.ElbowLeft].Position.Z.ToString());
                            var ElbowRight    = new SharpOSC.OscMessage(" /ElbowRight", " ", joints[JointType.ElbowRight].Position.X.ToString(), " ", joints[JointType.ElbowRight].Position.Y.ToString(), " ", joints[JointType.ElbowRight].Position.Z.ToString());
                            var FootLeft      = new SharpOSC.OscMessage(" /FootLeft", joints[JointType.FootLeft].Position.X.ToString(), joints[JointType.FootLeft].Position.Y.ToString(), joints[JointType.FootLeft].Position.Z.ToString());
                            var FootRight     = new SharpOSC.OscMessage(" /FootRight", joints[JointType.FootRight].Position.X.ToString(), joints[JointType.FootRight].Position.Y.ToString(), joints[JointType.FootRight].Position.Z.ToString());
                            var HandLeft      = new SharpOSC.OscMessage(" /HandLeft", " ", joints[JointType.HandLeft].Position.X.ToString(), " ", joints[JointType.HandLeft].Position.Y.ToString(), " ", joints[JointType.HandLeft].Position.Z.ToString());
                            var HandTipRight  = new SharpOSC.OscMessage(" /HandTipRight", joints[JointType.HandTipRight].Position.X.ToString(), joints[JointType.HandTipRight].Position.Y.ToString(), joints[JointType.AnkleLeft].Position.Z.ToString());
                            var Head          = new SharpOSC.OscMessage(" /Head", joints[JointType.Head].Position.X.ToString(), joints[JointType.Head].Position.Y.ToString(), joints[JointType.Head].Position.Z.ToString());
                            var HipLeft       = new SharpOSC.OscMessage(" /HipLeft", joints[JointType.HipLeft].Position.X.ToString(), joints[JointType.HipLeft].Position.Y.ToString(), joints[JointType.HipLeft].Position.Z.ToString());
                            var HipRight      = new SharpOSC.OscMessage(" /HipRight", joints[JointType.HipRight].Position.X.ToString(), joints[JointType.HipRight].Position.Y.ToString(), joints[JointType.HipRight].Position.Z.ToString());
                            var KneeLeft      = new SharpOSC.OscMessage(" /KneeLeft", joints[JointType.KneeLeft].Position.X.ToString(), joints[JointType.KneeLeft].Position.Y.ToString(), joints[JointType.KneeLeft].Position.Z.ToString());
                            var KneeRight     = new SharpOSC.OscMessage(" /KneeRight", joints[JointType.KneeRight].Position.X.ToString(), joints[JointType.KneeRight].Position.Y.ToString(), joints[JointType.KneeRight].Position.Z.ToString());
                            var Neck          = new SharpOSC.OscMessage(" /Neck", joints[JointType.Neck].Position.X.ToString(), joints[JointType.Neck].Position.Y.ToString(), joints[JointType.Neck].Position.Z.ToString());
                            var ShoulderLeft  = new SharpOSC.OscMessage(" /ShoulderLeft", joints[JointType.ShoulderLeft].Position.X.ToString(), joints[JointType.ShoulderLeft].Position.Y.ToString(), joints[JointType.ShoulderLeft].Position.Z.ToString());
                            var ShoulderRight = new SharpOSC.OscMessage(" /ShoulderRight", joints[JointType.ShoulderRight].Position.X.ToString(), joints[JointType.ShoulderRight].Position.Y.ToString(), joints[JointType.ShoulderRight].Position.Z.ToString());
                            var SpineBase     = new SharpOSC.OscMessage(" /SpineBase", joints[JointType.SpineBase].Position.X.ToString(), joints[JointType.SpineBase].Position.Y.ToString(), joints[JointType.SpineBase].Position.Z.ToString());
                            var SpineMid      = new SharpOSC.OscMessage(" /SpineMid", joints[JointType.SpineMid].Position.X.ToString(), joints[JointType.SpineMid].Position.Y.ToString(), joints[JointType.SpineMid].Position.Z.ToString());
                            var SpineShoulder = new SharpOSC.OscMessage(" /SpineShoulder", joints[JointType.SpineShoulder].Position.X.ToString(), joints[JointType.SpineShoulder].Position.Y.ToString(), joints[JointType.SpineShoulder].Position.Z.ToString());
                            var ThumbLeft     = new SharpOSC.OscMessage(" /ThumbLeft", joints[JointType.ThumbLeft].Position.X.ToString(), joints[JointType.ThumbLeft].Position.Y.ToString(), joints[JointType.ThumbLeft].Position.Z.ToString());
                            var ThumbRight    = new SharpOSC.OscMessage(" /ThumbRight", joints[JointType.ThumbRight].Position.X.ToString(), joints[JointType.ThumbRight].Position.Y.ToString(), joints[JointType.ThumbRight].Position.Z.ToString());
                            var WristLeft     = new SharpOSC.OscMessage(" /WristLeft", joints[JointType.WristLeft].Position.X.ToString(), joints[JointType.WristLeft].Position.Y.ToString(), joints[JointType.WristLeft].Position.Z.ToString());
                            var WristRight    = new SharpOSC.OscMessage(" /WristRight", joints[JointType.WristRight].Position.X.ToString(), joints[JointType.WristRight].Position.Y.ToString(), joints[JointType.WristRight].Position.Z.ToString());

                            // OSC message for area
                            // var Area = new SharpOSC.OscMessage("/area", testV.ToString());

                            // Sending UDP
                            OscBundle oscBundle = new OscBundle(0, HandRight, HandLeft, AnkleRight, AnkleLeft);//FOR MUSIC
                            //OscBundle oscBundle = new OscBundle(0, HandRight);//FOR PureData
                            //OscBundle oscBundle = new OscBundle(0, HandLeft, HandRight, HandTipLeft, HandTipRight);

                            /*FootLeft, FootRight, HandLeft, HandRight, HandTipLeft,
                             * HandTipRight, Head, HipLeft, HipRight, KneeLeft, KneeRight, Neck, ShoulderLeft, ShoulderRight, SpineBase,
                             * SpineMid, SpineShoulder, ThumbLeft, ThumbRight, WristLeft, WristRight);
                             */

                            Console.WriteLine("TEST SENDING:");
                            Console.WriteLine(oscBundle.ToString());
                            //Send Method (message)
                            udpSender.Send(oscBundle);
                        }
                    }

                    // prevent drawing outside of our render area
                    this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, this.displayWidth, this.displayHeight));
                }
            }
        }
예제 #23
0
		// sends a state request to the ip address
		public void SendRequestMatch(string serverIPAddress)
		{
			MessageMatchRequest m = new MessageMatchRequest ();
			m.Guid = MyProfile.Guid;

			UDPSender<MessageMatchRequest> sender = new UDPSender<MessageMatchRequest> ();
			sender.Send (UDP_MESSAGE_REQUEST_MATCH, m, serverIPAddress, UPD_PORT_LISTENER);

			if (Logging) {
				Database.Instance().SaveLog("Match - SendRequestMatch() " + serverIPAddress);
			}				
		}
예제 #24
0
        static void LoadPara(string[] args)
        {
            if (args.Length % 2 != 0)
            {
                Logger.Error.WriteLine("Para Input Error!");
                return;
            }

            Dictionary <string, string> para = new Dictionary <string, string>();

            for (int i = 0; i < args.Length; i += 2)
            {
                para.Add(args[i], args[i + 1]);
            }

            // 不指定参数则尝试加载默认配置
            if (para.Count == 0)
            {
                para.Add("-t", "para.txt");
            }
            // 从配置文件中加载参数
            if (para.ContainsKey("-t"))
            {
                if (File.Exists(para["-t"]))
                {
                    var str = File.ReadAllText(para["-t"]);

                    List <string> buff = new List <string>();
                    args = File.ReadAllText(para["-t"]).Split(" ");
                    for (int i = 0; i < args.Length; i++)
                    {
                        // "\"" 内可能有" "
                        // 需要将其合并
                        if (args[i].Contains("\""))
                        {
                            for (int j = i + 1; j < args.Length; j++)
                            {
                                args[i] += " " + args[j];

                                if (args[j].Contains("\""))
                                {
                                    buff.Add(args[i].Trim('\"'));
                                    i = j;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            buff.Add(args[i]);
                        }
                    }

                    args = buff.ToArray();

                    for (int i = 0; i < args.Length; i += 2)
                    {
                        para.Add(args[i], args[i + 1]);
                    }
                }
                else
                {
                    Logger.Error.WriteLine("No Such ParaFile!");
                    return;
                }
            }

            string[] paths = null;
            // 加载单一文件
            if (para.ContainsKey("-f"))
            {
                if (File.Exists(para["-f"]) && para["-f"].EndsWith(".lcl"))
                {
                    paths = new string[] { para["-f"] };
                }
                else
                {
                    Logger.Error.WriteLine("No Such File!");
                    return;
                }
            }
            // 加载文件夹
            else if (para.ContainsKey("-p"))
            {
                if (Directory.Exists(para["-p"]))
                {
                    paths = Directory.GetFiles(para["-p"], "*.lcl");
                }
                else
                {
                    Logger.Error.WriteLine("No Such Path!");
                    return;
                }
            }
            else
            {
                Logger.Error.WriteLine("No File Path!");
                return;
            }


            // 加载映射关系
            var map = new Dictionary <IPEndPoint, IPEndPoint>();

            if (para.ContainsKey("-m"))
            {
                var ppp = para["-m"].Split(" ");

                foreach (var it in ppp)
                {
                    var pp = it.Split("=>");

                    ParseInputIpPort(pp[0], out string ipO, out ushort portO);
                    ParseInputIpPort(pp[1], out string ipM, out ushort portM);

                    map.Add(new IPEndPoint(IPAddress.Parse(ipO), portO), new IPEndPoint(IPAddress.Parse(ipM), portM));
                }
            }
            else
            {
                Logger.Error.WriteLine("No Map Para!");
            }

            UDPSender sender = new UDPSender();

            core = new Core.ReplayCore(paths);

            // 获取文件 info
            _fInfo = core.FileInfo;

            //Core.ReplayCore.DeleSendHandler sendHandler = (ReadOnlySpan<byte> bytes, IPEndPoint point) =>
            //{
            //    sender.Send(bytes.ToArray(), point);
            //};
            Core.ReplayCore.DeleSendHandler sendHandler = (Core.ReplayCore.SendInfo msg) =>
            {
                sender.Send(msg.bytes.ToArray(), msg.point);
            };
            Core.ReplayCore.DeleInfoHandler infoHandler = (Core.ReplayCore.ReplayInfo info) =>
            {
                Console.WriteLine(info.time + ": " + (100.0 * (double)info.index / ((double)_fInfo.totalIndex - 1)).ToString("f2") + "%" + " " + info.index + " " + info.pkgCostTime);
            };

            // 设置回放的 point map
            // 设置回放的 sendHandler 需要注意此处的委托只能做发送 需要尽可能快的返回
            // 设置回放的 infoHandler 此处是异步触发
            core.Initial(map, sendHandler, infoHandler);

            Logger.Info.WriteLine("TotalIndex: " + _fInfo.totalIndex
                                  + " StartTime: " + _fInfo.time
                                  + " TotalTime: " + _fInfo.totalIndex * _fInfo.timeInterval + "s");

            Logger.Info.WriteLine("Notes: " + _fInfo.notes);

            Logger.Info.WriteLine("Maps: ");
            foreach (var point in _fInfo.points)
            {
                if (map.ContainsKey(point))
                {
                    Logger.Info.WriteLine(point + " => " + map[point]);
                }
                else
                {
                    Logger.Info.WriteLine(point + " => ");
                }
            }
        }
예제 #25
0
		// Profile Messges //////////

		// sends a request to ip address to return send us their profile picture
		public bool SendRequestUserProfile(string serverIPAddress, bool includepic)
		{
			MessageProfileRequest m = new MessageProfileRequest ();
			m.IncludePic = includepic;

			UDPSender<MessageProfileRequest> sender = new UDPSender<MessageProfileRequest> ();
			sender.Send (UDP_REQUEST_PROFILE_MESSAGE, m, serverIPAddress, UPD_PORT_LISTENER);

			if (Logging) {
				Database.Instance().SaveLog("Profile - SendRequestUserProfile() " + serverIPAddress);
			}

			return true;
		}
예제 #26
0
		// Match // // // // // // // // // // // // // // // // // // // // // // // //  // // // // // // // 

		// sends a state (LIKE, NOPE, BLOCK) to the ip address
		public void SendMatch(MessageMatch.eMatch match, string serverIPAddress)
		{
			MessageMatch m = new MessageMatch ();
			m.Guid = MyProfile.Guid;
			m.value = match;

			UDPSender<MessageMatch> sender = new UDPSender<MessageMatch> ();
			sender.Send (UDP_MATCH_MESSAGE, m, serverIPAddress, UPD_PORT_LISTENER);

			if (Logging) {
				Database.Instance().SaveLog("Match - SendMatch() " + serverIPAddress);
			}
							
		}
예제 #27
0
 static void sendEyeCoordsOverOSC(UDPSender sender, OscMessage message)
 {
     Console.WriteLine("Sent point (" + message.Arguments[0] + ", " + message.Arguments[1] + ")");
     sender.Send(message);
     return;
 }