private void ShowBrushPreview(Camera camera, Vector2 mousePosition) { if (lockedMesh != null && currentTexture != null && previewBrushOpacity > 0.0f) // && currentTool != ToolType.Fill) { var ray = HandleUtility.GUIPointToWorldRay(mousePosition); var startPosition = ray.origin + ray.direction * camera.nearClipPlane; var endPosition = ray.origin + ray.direction * camera.farClipPlane; var operation = P3D_PaintOperation.Preview(lockedMesh, currentMaterialIndex, lockedGameObject.transform, currentBrush.Shape, currentBrush.Color, CurrentTiling, CurrentOffset); painter.SetMesh(lockedGameObject.transform, lockedMesh, currentMaterialIndex); painter.SetTexture(currentTexture, CurrentTiling, CurrentOffset); painter.Opacity = previewBrushOpacity; painter.Size = currentBrush.Size; painter.Angle = currentBrush.Angle; painter.SetOperation(operation); if (passThrough == true) // && currentTool != ToolType.Fill) { painter.PaintBetweenAll(startPosition, endPosition); } else { painter.PaintBetweenNearest(startPosition, endPosition); } } }
// This will create a paint operation based on these brush settings public P3D_Painter.PaintOperation Create() { var paintOperation = default(P3D_Painter.PaintOperation); switch (Blend) { case P3D_BlendMode.AlphaBlend: { paintOperation = P3D_PaintOperation.AlphaBlend(Color, Shape, Detail, DetailScale); } break; case P3D_BlendMode.AlphaBlendRgb: { paintOperation = P3D_PaintOperation.AlphaBlendRgb(Color, Shape, Detail, DetailScale); } break; case P3D_BlendMode.AlphaErase: { paintOperation = P3D_PaintOperation.AlphaErase(Shape, Detail, DetailScale); } break; case P3D_BlendMode.AdditiveBlend: { paintOperation = P3D_PaintOperation.AdditiveBlend(Color, Shape, Detail, DetailScale); } break; case P3D_BlendMode.SubtractiveBlend: { paintOperation = P3D_PaintOperation.SubtractiveBlend(Color, Shape, Detail, DetailScale); } break; case P3D_BlendMode.NormalBlend: { paintOperation = P3D_PaintOperation.NormalBlend(Direction, Shape, Detail, DetailScale); } break; } return(paintOperation); }