public static void Serialize(TextWriter writer, SkeletonDataAlternative data)
 {
     writer.Write(data.TrackingID);
     writer.Write(data.UserIndex);
     writer.Write(data.TrackingState);
     writer.Write(data.Quality);
     switch (data.TrackingState)
     {
         case SkeletonTrackingState.Tracked:
             writer.Write(data.Position);
             writer.Write(data.Joints.Count);
             foreach (Joint joint in data.Joints)
             {
                 writer.Write(joint);
             }
             break;
         case SkeletonTrackingState.NotTracked:
             break;
         case SkeletonTrackingState.PositionOnly:
             writer.Write(data.Position);
             break;
         default:
             throw new UnknownSkeletonTrackingStateException(data.TrackingState);
     }
 }
 public static byte[] Serialize(SkeletonDataAlternative data)
 {
     byte[] bytes = null;
     using (BinaryStreamWriter w = new BinaryStreamWriter(new MemoryStream()))
     {
         w.Write(data.TrackingID);
         w.Write(data.UserIndex);
         w.Write(data.TrackingState);
         w.Write(data.Quality);
         switch (data.TrackingState)
         {
             case SkeletonTrackingState.Tracked:
                 w.Write(data.Position);
                 w.Write(data.Joints.Count);
                 foreach (Joint joint in data.Joints)
                 {
                     w.Write(joint);
                 }
                 break;
             case SkeletonTrackingState.NotTracked:
                 break;
             case SkeletonTrackingState.PositionOnly:
                 w.Write(data.Position);
                 break;
             default:
                 throw new UnknownSkeletonTrackingStateException(data.TrackingState);
         }
         bytes = ((MemoryStream)w.Stream).ToArray();
         w.Close();
     }
     return bytes;
 }
 public SkeletonFrameAlternative(SkeletonFrame frame)
 {
     FrameNumber = frame.FrameNumber;
     Skeletons = new SkeletonDataAlternative[frame.Skeletons.Length];
     int i = 0;
     foreach (SkeletonData data in frame.Skeletons)
     {
         Skeletons[i++] = new SkeletonDataAlternative(data);
     }
 }