public static Landmark[] PtrToLandmarkArray(MpLandmarkList landmarkListPtr) { var landmarkList = Marshal.PtrToStructure <LandmarkList>(landmarkListPtr); var landmarks = new Landmark[landmarkList.size]; unsafe { Landmark *landmarkPtr = (Landmark *)landmarkList.landmarks; for (var i = 0; i < landmarkList.size; i++) { landmarks[i] = Marshal.PtrToStructure <Landmark>((IntPtr)landmarkPtr++); } } return(landmarks); }
public static List <Landmark[]> PtrToLandmarkArrayList(MpLandmarkListVector landmarkListVecPtr) { var landmarkListVector = Marshal.PtrToStructure <LandmarkListVector>(landmarkListVecPtr); var landmarks = new List <Landmark[]>(landmarkListVector.size); unsafe { int * sizePtr = (int *)landmarkListVector.sizeList; Landmark *landmarkPtr = (Landmark *)landmarkListVector.landmarks; for (var i = 0; i < landmarkListVector.size; i++) { int size = *sizePtr++; landmarks.Add(new Landmark[size]); for (var j = 0; j < size; j++) { landmarks[i][j] = Marshal.PtrToStructure <Landmark>((IntPtr)landmarkPtr++); } } } return(landmarks); }