예제 #1
0
파일: P3D_Main.cs 프로젝트: q453157180/P3D
    protected virtual void OnDestroy()
    {
        Unlock();

        P3D_BrushPreview.Mark();
        P3D_BrushPreview.Sweep();
        P3D_TexturePreview.Mark();
        P3D_TexturePreview.Sweep();
    }
예제 #2
0
    private void ShowBrushPreview(P3D_Result result)
    {
        var width      = currentTexture.width;
        var height     = currentTexture.height;
        var uv         = result.GetUV(P3D_CoordType.UV1);
        var xy         = P3D_Helper.CalculatePixelFromCoord(uv, CurrentTiling, CurrentOffset, width, height);
        var matrix     = P3D_Helper.CreateMatrix(xy + new Vector2(0.01f, 0.01f), currentBrush.Size * 0.999f, currentBrush.Angle).Inverse;
        var resolution = new Vector2(width, height);

        P3D_BrushPreview.Show(lockedMesh, currentMaterialIndex, lockedGameObject.transform, previewBrushOpacity, matrix, resolution, currentBrush.Shape, CurrentTiling, CurrentOffset);
    }
예제 #3
0
 public static void Mark()
 {
     for (int i = AllPreviews.Count - 1; i >= 0; i--)
     {
         P3D_BrushPreview preview = AllPreviews[i];
         if (preview != null)
         {
             preview.age = 5;
         }
     }
 }
예제 #4
0
 public static void Sweep()
 {
     for (int i = AllPreviews.Count - 1; i >= 0; i--)
     {
         P3D_BrushPreview preview = AllPreviews[i];
         if ((preview != null) && (preview.age > 1))
         {
             AllPreviews.RemoveAt(i);
             P3D_Helper.Destroy <GameObject>(preview.gameObject);
         }
     }
 }
    public static P3D_Painter.PaintOperation Preview(Mesh mesh, int submeshIndex, Transform transform, Texture2D shape, Color color, Vector2 tiling, Vector2 offset)
    {
        return((Texture2D canvas, P3D_Matrix matrix, float opacity) =>
        {
            if (transform != null)
            {
                var paintMatrix = matrix.Inverse;
                var canvasResolution = new Vector2(canvas.width, canvas.height);

                P3D_BrushPreview.Show(mesh, submeshIndex, transform, opacity, paintMatrix, canvasResolution, shape, color, tiling, offset);
            }
        });
    }
예제 #6
0
파일: P3D_Main.cs 프로젝트: q453157180/P3D
    // Draws the brush and texture previews in the main scene view
    protected override void OnScene(SceneView sceneView, Camera camera, Vector2 mousePosition)
    {
        if (sceneView == (SceneView)SceneView.sceneViews[0])
        {
            P3D_BrushPreview.Sweep();
            P3D_BrushPreview.Mark();

            P3D_TexturePreview.Sweep();
            P3D_TexturePreview.Mark();

            if (lastMousePosition != mousePosition)
            {
                sceneView.Repaint();
            }

            lastMousePosition = mousePosition;
        }

        UpdateLock();

        if (locked == true)
        {
            if (mousePosition.x >= 0.0f && mousePosition.x < sceneView.position.width && mousePosition.y >= 0.0f && mousePosition.y < sceneView.position.height)
            {
                if (Event.current.button == 0)
                {
                    if (Event.current.type == EventType.MouseDown || Event.current.type == EventType.MouseDrag)
                    {
                        if (colorPickerWindowIsOpened)
                        {
                            PickColor(camera, mousePosition);
                        }
                        else
                        {
                            Paint(camera, mousePosition);
                        }
                    }
                }
                if (!colorPickerWindowIsOpened)
                {
                    ShowBrushPreview(camera, mousePosition);
                }
            }

            if (Event.current.type == EventType.MouseUp)
            {
                FinishPaint();
            }
            //ShowTexturePreview();
        }
    }
예제 #7
0
    public static void Show(Mesh mesh, int submeshIndex, Transform transform, float opacity, P3D_Matrix paintMatrix, Vector2 canvasResolution, Texture2D shape, Vector2 tiling, Vector2 offset)
    {
        for (int i = AllPreviews.Count - 1; i >= 0; i--)
        {
            P3D_BrushPreview preview = AllPreviews[i];
            if ((preview != null) && (preview.age > 0))
            {
                preview.UpdateShow(mesh, submeshIndex, transform, opacity, paintMatrix, canvasResolution, shape, tiling, offset);
                return;
            }
        }
        P3D_BrushPreview preview2 = new GameObject("P3D_BrushPreview")
        {
            hideFlags = HideFlags.HideAndDontSave
        }.AddComponent <P3D_BrushPreview>();

        preview2.hideFlags = HideFlags.HideAndDontSave;
        preview2.UpdateShow(mesh, submeshIndex, transform, opacity, paintMatrix, canvasResolution, shape, tiling, offset);
    }