/// <summary> Gets a deep copy of the point cloud data from the interop. /// </summary> /// <param name="pcd">The point cloud data object to store the data in.</param> /// <param name="metadata">The metadata object to store the data in.</param> public void SetPointCloudDataFromInteropData(PointCloudData <TPoint> pcd, PointCloudMetaData metadata) { lock (_cloudDataLock) { PointCloudData <TPoint> .ConvertFromInteropData(ref pcd, metadata, _pointCloudInteropData, _pointCloudVertices); } }
/// <summary> Updates the point cloud interop data from kernel. </summary> private void UpdatePointCloudInteropDataFromKernel() { if (_pointCloudData == null) { this.GetPointCloudMetaData(); return; } if (!HandKernelInterop.GetPointCloudData(ref _pointCloudInteropData)) { return; } Marshal.Copy(_pointCloudInteropData.data, _pointCloudVertices, 0, _pointCloudInteropData.size * (_pointCloudMetaData.pointSize / 4)); lock (_cloudDataLock) { PointCloudData <TPoint> .ConvertFromInteropData(ref _pointCloudData, _pointCloudMetaData, _pointCloudInteropData, _pointCloudVertices); } }