public G2OM_Candidate(int candidateId, Vector3 max, Vector3 min, Matrix4x4 worldToLocal, Matrix4x4 localToWorld)
 {
     id = (UInt64)candidateId;
     aabbMaxLocalSpace  = new G2OM_Vector3(max);
     aabbMinLocalSpace  = new G2OM_Vector3(min);
     worldToLocalMatrix = new G2OM_Matrix4x4(worldToLocal);
     localToWorldMatrix = new G2OM_Matrix4x4(localToWorld);
 }
 public static Vector3 Vector(this G2OM_Vector3 vector)
 {
     return(new Vector3
     {
         x = vector.x,
         y = vector.y,
         z = vector.z,
     });
 }
 public static extern G2OM_Error G2OM_GetCandidateSearchPattern(IntPtr context, ref G2OM_Vector3 worldSpaceUpDirection, ref G2OM_Vector3 worldSpaceRightDirection, ref G2OM_DeviceData deviceData, uint numberOfRays, G2OM_Ray[] mutatedRays);
 public G2OM_Ray(Vector3 rayOrigin, Vector3 rayDirection)
 {
     origin    = new G2OM_Vector3(rayOrigin);
     direction = new G2OM_Vector3(rayDirection);
 }