/// <summary> /// Deserialize skeletal frame /// </summary> /// <param name="reader">Binary reader</param> /// <returns>Skeleton frame</returns> private SkeletonDataFrame DeserializeSkeletalFrame(BinaryReader reader) { if (reader.ReadInt32() == 0) { return(null); } SkeletonDataFrame frame = new SkeletonDataFrame(); float value1 = reader.ReadSingle(); float value2 = reader.ReadSingle(); float value3 = reader.ReadSingle(); float value4 = reader.ReadSingle(); frame.FloorClipPlane = Tuple.Create(value1, value2, value3, value4); frame.FrameNumber = reader.ReadInt32(); frame.Timestamp = reader.ReadInt64(); int numSkeletons = reader.ReadInt32(); frame.SkeletonData = new kinect.Skeleton[numSkeletons]; for (int i = 0; i < numSkeletons; i++) { frame.SkeletonData[i] = this.DeserializeSkeleton(reader); } return(frame); }
/// <summary> /// Serialize skeletal frame /// </summary> /// <param name="frame">Skeletal Frame</param> /// <param name="writer">Binary Writer</param> private void SerializeSkeletalFrame(SkeletonDataFrame frame, BinaryWriter writer) { if (frame == null) { writer.Write(0); return; } writer.Write(1); writer.Write(frame.FloorClipPlane.Item1); writer.Write(frame.FloorClipPlane.Item2); writer.Write(frame.FloorClipPlane.Item3); writer.Write(frame.FloorClipPlane.Item4); writer.Write(frame.FrameNumber); writer.Write(frame.Timestamp); writer.Write(frame.SkeletonData.Length); for (int i = 0; i < frame.SkeletonData.Length; i++) { this.SerializeSkeleton(frame.SkeletonData[i], writer); } }