Пример #1
0
    /**
     * Copies the data from an internal tracking message into a frame.
     *
     * @param trackingMsg The internal tracking message with the data to be copied into this frame.
     */
    public static Frame CopyFrom(this Frame frame, ref LEAP_TRACKING_EVENT trackingMsg) {
      frame.Id = (long)trackingMsg.info.frame_id;
      frame.Timestamp = (long)trackingMsg.info.timestamp;
      frame.CurrentFramesPerSecond = trackingMsg.framerate;

      frame.ResizeHandList((int)trackingMsg.nHands);

      for (int i = frame.Hands.Count; i-- != 0;) {
        LEAP_HAND hand;
        StructMarshal<LEAP_HAND>.ArrayElementToStruct(trackingMsg.pHands, i, out hand);
        frame.Hands[i].CopyFrom(ref hand, frame.Id);
      }

      return frame;
    }
        public Frame makeFrame(ref LEAP_TRACKING_EVENT trackingMsg)
        {
            Frame newFrame = new Leap.Frame((long)trackingMsg.info.frame_id,
                                            (long)trackingMsg.info.timestamp,
                                            trackingMsg.framerate,
                                            new InteractionBox(trackingMsg.interaction_box_center.ToLeapVector(),
                                                               trackingMsg.interaction_box_size.ToLeapVector()),
                                            new List <Hand>((int)trackingMsg.nHands)
                                            );

            for (int h = 0; h < trackingMsg.nHands; h++)
            {
                LEAP_HAND hand = StructMarshal <LEAP_HAND> .ArrayElementToStruct(trackingMsg.pHands, h);

                newFrame.Hands.Add(makeHand(ref hand, newFrame));
            }
            return(newFrame);
        }