private void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
        {
            var reference = e.FrameReference.AcquireFrame();

            // Color
            using (var frame = reference.ColorFrameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    if (monitor != null)
                    {
                        monitor.viewer.Image = frame.ToBitmap();
                    }
                }
            }

            using (var frame = reference.BodyFrameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    var bodies = frame.Bodies();
                    _playersController?.Update(bodies);

                    foreach (Body body in bodies)
                    {
                        monitor?.viewer.DrawBody(body);
                    }

                    var currentBody = bodies.FirstOrDefault(y => y.IsTracked);
                    if (currentBody != null)
                    {
                        {
                            foreach (KeyValuePair <JointType, Joint> joint in currentBody.Joints)
                            {
                                SensorDetails sensorDetails = sensors.First(t => t.SensorName == joint.Key.ToString());

                                SensorReadingPackage package = readings.FirstOrDefault(x => x.Id == sensorDetails.Id);

                                if (package == null)
                                {
                                    package = new SensorReadingPackage
                                    {
                                        Id = sensorDetails.Id,
                                    };

                                    readings.Add(package);
                                }

                                package.Position = new PositionalReading()
                                {
                                    X = joint.Value.Position.X,
                                    Y = joint.Value.Position.Y,
                                    Z = joint.Value.Position.Z
                                };
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private Point GetPoint(List <SensorReadingPackage> readings, List <SensorDetails> sensors, JointType jointType)
        {
            SensorDetails sd = sensors.First(p => p.SensorName == jointType.ToString());

            SensorReadingPackage temp = readings.First(x => x.Id == sd.Id);

            return(new Point(temp.Position.X, temp.Position.Y));
        }
Ejemplo n.º 3
0
        private void OnTimedEvent(object sender, ElapsedEventArgs e)
        {
            if (timerCodeRunning)
            {
                return;
            }

            timerCodeRunning = true;
            try
            {
                foreach (var plugin in addedInputPlugins)
                {
                    List <SensorReadingPackage> readings = plugin.Plugin.GetReadings();
                    allReadings[plugin.InstanceId] = readings;
                }

                if (Assignments.ContainsKey(selectedJoint))
                {
                    Assignment ass = Assignments[selectedJoint];


                    if (allReadings.ContainsKey(ass.PluginInstance))
                    {
                        List <SensorReadingPackage> reading = allReadings[ass.PluginInstance];

                        SensorReadingPackage sens = reading.FirstOrDefault(y => y.Id == ass.SensorId);
                        if (sens != null)
                        {
                            //TODO - check for positional
                            {
                                CurrentSensorX = sens.Position.X;
                                CurrentSensorY = sens.Position.Y;
                                CurrentSensorZ = sens.Position.Z;

//                                Debug.WriteLine($"{CurrentSensorX},{CurrentSensorY},{CurrentSensorZ}");
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            timerCodeRunning = false;
        }
        private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {
            Skeleton[] skeletons = new Skeleton[0];

            using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
            {
                if (skeletonFrame != null)
                {
                    skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
                    skeletonFrame.CopySkeletonDataTo(skeletons);
                }
            }

            var temp = skeletons.FirstOrDefault(x => x.TrackingState == SkeletonTrackingState.Tracked);

            if (temp != null)
            {
                foreach (Joint joint in temp.Joints)
                {
                    SensorDetails sensorDetails = sensors.First(t => t.SensorName == joint.JointType.ToString());

                    SensorReadingPackage package = readings.FirstOrDefault(x => x.Id == sensorDetails.Id);

                    if (package == null)
                    {
                        package = new SensorReadingPackage
                        {
                            Id = sensorDetails.Id,
                        };

                        readings.Add(package);
                    }

                    package.Position = new PositionalReading()
                    {
                        X = joint.Position.X,
                        Y = joint.Position.Y,
                        Z = joint.Position.Z
                    };
                }

                kinectMonitor?.DoSimpleDraw(readings, sensors);
            }
        }