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