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 }; } } } } } }
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)); }
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); } }