private void OnDrawGizmos() { Gizmos.matrix = transform.localToWorldMatrix; bool intersect = UGeometry.RayBSIntersect(m_Sphere, m_Ray); Gizmos.color = intersect ? Color.green : Color.grey; Gizmos.DrawWireSphere(m_Sphere.center, m_Sphere.radius); Vector2 distances = UGeometry.RayBSDistance(m_Sphere, m_Ray); Gizmos.color = intersect ? Color.white:Color.grey; float rayDistance = 1f; if (distances.x >= 0) { Gizmos.color = Color.blue; rayDistance = distances.x; Gizmos.DrawSphere(m_Ray.GetPoint(distances.x), .1f); } if (distances.y >= 0) { Gizmos.color = Color.red; rayDistance = distances.y; Gizmos.DrawSphere(m_Ray.GetPoint(distances.y), .1f); } Gizmos.color = Color.white; Gizmos_Extend.DrawLine(m_Ray.ToLine(rayDistance)); }
bool OnSelectVertexCheck(Ray _ray) { if (!m_SelectingPolygon) { return(false); } foreach (var indice in m_Polygons[m_SelectedPolygon].indices) { if (!UGeometry.RayBSIntersect(new GSphere(m_Verticies[indice], C_VertexSphereRadius * m_GUISize), _ray)) { continue; } SelectVertex(indice); return(true); } return(false); }