public bool RequestMeshAsync(SurfaceData dataRequest, SurfaceDataReadyDelegate onDataReady)
        {
            if (onDataReady == null)
            {
                throw new ArgumentNullException("onDataReady");
            }
            if (dataRequest.outputMesh == null)
            {
                throw new ArgumentNullException("dataRequest.outputMesh");
            }
            if (dataRequest.outputAnchor == null)
            {
                throw new ArgumentNullException("dataRequest.outputAnchor");
            }
            if ((dataRequest.outputCollider == null) && dataRequest.bakeCollider)
            {
                throw new ArgumentException("dataRequest.outputCollider must be non-NULL if dataRequest.bakeCollider is true", "dataRequest.outputCollider");
            }
            if (dataRequest.trianglesPerCubicMeter < 0.0)
            {
                throw new ArgumentException("dataRequest.trianglesPerCubicMeter must be greater than zero", "dataRequest.trianglesPerCubicMeter");
            }
            bool flag = Internal_AddToWorkQueue(this.m_Observer, onDataReady, dataRequest.id.handle, dataRequest.outputMesh, dataRequest.outputAnchor, dataRequest.outputCollider, dataRequest.trianglesPerCubicMeter, dataRequest.bakeCollider);

            if (!flag)
            {
                Debug.LogError("RequestMeshAsync has failed.  Is your surface ID valid?");
            }
            return(flag);
        }
 private static void InvokeSurfaceDataReadyEvent(SurfaceDataReadyDelegate onDataReady, int surfaceId, MeshFilter outputMesh, WorldAnchor outputAnchor, MeshCollider outputCollider, float trisPerCubicMeter, bool bakeCollider, bool outputWritten, float elapsedBakeTimeSeconds)
 {
     if (onDataReady != null)
     {
         SurfaceData data;
         data.id.handle              = surfaceId;
         data.outputMesh             = outputMesh;
         data.outputAnchor           = outputAnchor;
         data.outputCollider         = outputCollider;
         data.trianglesPerCubicMeter = trisPerCubicMeter;
         data.bakeCollider           = bakeCollider;
         onDataReady(data, outputWritten, elapsedBakeTimeSeconds);
     }
 }
 extern private static bool Internal_AddToWorkQueue(IntPtr observer, SurfaceDataReadyDelegate onDataReady, int surfaceId, MeshFilter filter, WorldAnchor wa, MeshCollider mc, float trisPerCubicMeter, bool createColliderData);
 private static void InvokeSurfaceDataReadyEvent(SurfaceDataReadyDelegate onDataReady, int surfaceId, MeshFilter outputMesh, WorldAnchor outputAnchor, MeshCollider outputCollider, float trisPerCubicMeter, bool bakeCollider, bool outputWritten, float elapsedBakeTimeSeconds)
 {
     if (onDataReady != null)
     {
         SurfaceData data;
         data.id.handle = surfaceId;
         data.outputMesh = outputMesh;
         data.outputAnchor = outputAnchor;
         data.outputCollider = outputCollider;
         data.trianglesPerCubicMeter = trisPerCubicMeter;
         data.bakeCollider = bakeCollider;
         onDataReady(data, outputWritten, elapsedBakeTimeSeconds);
     }
 }
 private static extern bool Internal_AddToWorkQueue(IntPtr observer, SurfaceDataReadyDelegate onDataReady, int surfaceId, MeshFilter filter, WorldAnchor wa, MeshCollider mc, float trisPerCubicMeter, bool createColliderData);
 public bool RequestMeshAsync(SurfaceData dataRequest, SurfaceDataReadyDelegate onDataReady)
 {
     if (onDataReady == null)
     {
         throw new ArgumentNullException("onDataReady");
     }
     if (dataRequest.outputMesh == null)
     {
         throw new ArgumentNullException("dataRequest.outputMesh");
     }
     if (dataRequest.outputAnchor == null)
     {
         throw new ArgumentNullException("dataRequest.outputAnchor");
     }
     if ((dataRequest.outputCollider == null) && dataRequest.bakeCollider)
     {
         throw new ArgumentException("dataRequest.outputCollider must be non-NULL if dataRequest.bakeCollider is true", "dataRequest.outputCollider");
     }
     if (dataRequest.trianglesPerCubicMeter < 0.0)
     {
         throw new ArgumentException("dataRequest.trianglesPerCubicMeter must be greater than zero", "dataRequest.trianglesPerCubicMeter");
     }
     bool flag = Internal_AddToWorkQueue(this.m_Observer, onDataReady, dataRequest.id.handle, dataRequest.outputMesh, dataRequest.outputAnchor, dataRequest.outputCollider, dataRequest.trianglesPerCubicMeter, dataRequest.bakeCollider);
     if (!flag)
     {
         Debug.LogError("RequestMeshAsync has failed.  Is your surface ID valid?");
     }
     return flag;
 }