예제 #1
0
    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);
            }
        }
    }
예제 #2
0
    // 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);
    }