public void Paint(Vector3 startPosition, Vector3 endPosition) { if (tree.IsReady == true && painter.IsReady == true) { var start = lockedGameObject.transform.InverseTransformPoint(startPosition); var end = lockedGameObject.transform.InverseTransformPoint(endPosition); if (passThrough == true) { var results = tree.FindBetweenAll(start, end); for (var i = results.Count - 1; i >= 0; i--) { Paint(results[i].GetUV(currentCoord)); } } else { var result = tree.FindBetweenNearest(start, end); if (result != null) { Paint(result.GetUV(currentCoord)); } } } }
// This paints all triangles between the input positions // NOTE: This method requires you to call SetMesh first public void PaintBetweenAll(Vector3 startPosition, Vector3 endPosition, P3D_CoordType coord = P3D_CoordType.UV1) { if (CanMeshPaint == true) { startPosition = transform.InverseTransformPoint(startPosition); endPosition = transform.InverseTransformPoint(endPosition); Paint(tree.FindBetweenAll(startPosition, endPosition), coord); } }
// This will paint all surfaces between the start and end positions in world space public void PaintBetweenAll(P3D_Brush brush, Vector3 startPosition, Vector3 endPosition, int groupMask = -1) { if (CheckTree() == true) { var start = transform.InverseTransformPoint(startPosition); var end = transform.InverseTransformPoint(endPosition); var results = tree.FindBetweenAll(start, end); Paint(brush, results, groupMask); } }