Exemple #1
0
 private void DoEndFingerMoveAction()
 {
     LoopPainter((RenderTexturePainter painter) =>
     {
         painter.EndDraw();
     });
     if (_operation == Operation.Replace || _operation == Operation.ReplaceErase)
     {
         RenderTexturePainter mainPainter = _listPainter[0];
         RenderTexturePainter tempPainter = _listPainter[1];
         tempPainter.CanvasMat.SetFloat("_BlendSrc", (float)BlendMode.One);
         tempPainter.CanvasMat.SetFloat("_BlendDst", (float)BlendMode.Zero);
         mainPainter.IsErase = false;
         Camera cmain = Camera.main;
         mainPainter.ClickDraw(cmain.WorldToScreenPoint(tempPainter.transform.position), cmain, mainPainter.RednerTex, 1, tempPainter.CanvasMat);
         tempPainter.ClearCanvas();
         if (_operation == Operation.ReplaceErase)
         {
             for (int i = 2; i < _listPainter.Count; i++)
             {
                 RenderTexturePainter painter = _listPainter[i];
                 painter.IsErase = false;
             }
         }
     }
     else if (_operation == Operation.CutShape)
     {
         LoopPainter((RenderTexturePainter painter) =>
         {
             painter.IsErase = !painter.IsErase;
         });
     }
 }
Exemple #2
0
 // Use this for initialization
 void Start()
 {
     _painterCanvas            = GetComponent <RenderTexturePainter>();
     _painterCanvas.paintType  = RenderTexturePainter.PaintType.None;
     tempPainter.paintType     = RenderTexturePainter.PaintType.Scribble;
     _painterCanvas.brushScale = tempPainter.brushScale * 0.92f;      //smaller
 }
Exemple #3
0
    public void UpdateTexture(Texture2D texture, int painterIndex = 0, bool isKeepCheckerStatus = false)
    {
        if (_operation == Operation.Replace)
        {
            RenderTexturePainter mainPainter = _listPainter[0];
            RenderTexturePainter tempPainter = _listPainter[1];
            mainPainter.SourceTex = texture;
            tempPainter.SourceTex = texture;
            UpdatePainterSetting(mainPainter);
            UpdatePainterSetting(tempPainter);
            return;
        }
        RenderTexturePainter painter = _listPainter[painterIndex];

        painter.SourceTex = texture;
        UpdatePainterSetting(painter);
        if (isKeepCheckerStatus)
        {
            return;
        }
        painter.ResetCanvas();
        PainterChecker checker = _listChecker[_dicCheckerIndex[painter]];

        if (null != checker && true == checker._isUseChecker)
        {
            checker.Reset();
        }
    }
Exemple #4
0
    // Use this for initialization
    void Start()
    {
        painter = GetComponent <RenderTexturePainter>();
        checker = GetComponent <PaintCompleteChecker>();

        checker.SetDataByTexture((Texture2D)painter.sourceTexture, painter.penTex, painter.brushScale);
    }
    void CreateGrid()
    {
        PaintCompleteChecker checker = target as PaintCompleteChecker;
        RenderTexturePainter painter = checker.gameObject.GetComponent <RenderTexturePainter>();

        if (painter && painter.sourceTex && painter.penTex)
        {
            checker.gridsDic   = new Dictionary <string, Rect> ();
            checker.enablesDic = new Dictionary <string, bool> ();

            Vector2 gridSize = GetGridSize();
            int     gridW    = (int)gridSize.x;
            int     gridH    = (int)gridSize.y;

            int canvasW = painter.sourceTex.width;
            int canvasH = painter.sourceTex.height;

            for (int w = -canvasW / 2; w <= canvasW / 2; w += gridW)
            {
                for (int h = -canvasH / 2; h <= canvasH / 2; h += gridH)
                {
                    string key   = w * 0.01f + "-" + h * 0.01f;
                    Rect   value = new Rect(w * 0.01f, h * 0.01f, gridH * 0.01f, gridW * 0.01f);
                    checker.gridsDic[key]   = value;
                    checker.enablesDic[key] = checker.gridDefaultStatus;
                }
            }
        }
    }
Exemple #6
0
 void Start()
 {
     m_painter = GetComponent <RenderTexturePainter>();
             #if UNITY_EDITOR
     canResetData = true;
             #endif
     Reset();
 }
Exemple #7
0
    public void Init()
    {
        _painter = GetComponent <RenderTexturePainter>();
#if UNITY_EDITOR
        _canResetData = true;
#endif
        Reset();
    }
Exemple #8
0
 private void LoopPainter(CallbackLoopPainter callback)
 {
     for (int i = 0; i < _listPainter.Count; i++)
     {
         RenderTexturePainter painter = _listPainter[i];
         callback.Invoke(painter);
     }
 }
    Vector2 GetGridSize()
    {
        PaintCompleteChecker checker = target as PaintCompleteChecker;
        RenderTexturePainter painter = checker.gameObject.GetComponent <RenderTexturePainter>();
        int gridW = Mathf.FloorToInt(painter.penTex.width * painter.brushScale / 4f);
        int gridH = Mathf.FloorToInt(painter.penTex.height * painter.brushScale / 4f);

        return(new Vector2(gridW, gridH));
    }
Exemple #10
0
 public bool IsPainterInited()
 {
     for (int i = 0; i < _listPainter.Count; i++)
     {
         RenderTexturePainter painter = _listPainter[i];
         if (false == painter.IsInited)
         {
             return(false);
         }
     }
     return(true);
 }
Exemple #11
0
 public void ShowScribbleComplete()
 {
     if (_operation == Operation.Replace)
     {
         RenderTexturePainter painter = _listPainter[0];
         painter.ShowScribbleComplete();
         return;
     }
     LoopPainter((RenderTexturePainter painter) =>
     {
         painter.ShowScribbleComplete();
     });
 }
Exemple #12
0
 public void ResetPainter()
 {
     if (_operation == Operation.Replace)
     {
         RenderTexturePainter painter = _listPainter[0];
         painter.IsErase = true;
         painter.ResetCanvas();
         return;
     }
     LoopPainter((RenderTexturePainter painter) =>
     {
         painter.ResetCanvas();
     });
 }
    public override void OnInspectorGUI()
    {
        EditorGUILayout.Space();
        serializedObject.Update();
        EditorGUILayout.PropertyField(serializedObject.FindProperty("gridDefaultStatus"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("brushSize"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("enableColor"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("disableColor"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("checkData"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("canResetData"), true);
        serializedObject.ApplyModifiedProperties();

        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("(Ctrl+)Read Data"))
        {
            ReadGrid();
        }
        if (GUILayout.Button("Show Source Tex"))
        {
            PaintCompleteChecker checker = target as PaintCompleteChecker;
            RenderTexturePainter painter = checker.gameObject.GetComponent <RenderTexturePainter>();
            if (painter && painter.sourceTex)
            {
                SpriteRenderer render = checker.GetComponent <SpriteRenderer>();
                if (!render)
                {
                    render = checker.gameObject.AddComponent <SpriteRenderer>();
                }
                render.sprite = Sprite.Create((Texture2D)painter.sourceTex, new Rect(0, 0, painter.sourceTex.width, painter.sourceTex.height), Vector2.one * 0.5f);
            }
        }
        EditorGUILayout.EndHorizontal();


        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("(Ctrl+)Create Data"))
        {
            CreateGrid();
        }
        if (GUILayout.Button("Save Grid Data"))
        {
            SaveDataToFile();
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();
        EditorGUILayout.TextArea("Cmd/Ctrl + Mouse: Add Point\nAlt + Mouse : Remove Point");
    }
Exemple #14
0
 private void StartDragPaint()
 {
     if (_operation == Operation.Replace || _operation == Operation.ReplaceErase)
     {
         if (true == _isUseLastTex && null != _lastTex)
         {
             UpdateTexture(_lastTex, 0, true);
         }
         RenderTexturePainter mainPainter = _listPainter[0];
         RenderTexturePainter tempPainter = _listPainter[1];
         tempPainter.SourceTex = _operation == Operation.ReplaceErase ? _replaceEraseTex : mainPainter.SourceTex;
         UpdatePainterSetting(mainPainter);
         UpdatePainterSetting(tempPainter);
         mainPainter.IsErase = true;
         tempPainter.CanvasMat.SetFloat("_BlendSrc", (float)BlendMode.SrcAlpha);
         tempPainter.CanvasMat.SetFloat("_BlendDst", (float)BlendMode.OneMinusSrcAlpha);
         if (_operation == Operation.ReplaceErase)
         {
             for (int i = 2; i < _listPainter.Count; i++)
             {
                 RenderTexturePainter painter = _listPainter[i];
                 UpdatePainterSetting(painter);
                 painter.IsErase = false;
             }
         }
     }
     else
     {
         LoopPainter((RenderTexturePainter painter) =>
         {
             UpdatePainterSetting(painter);
             bool isErase = painter.IsErase;
             if (_operation == Operation.Scribble)
             {
                 isErase = false;
             }
             else if (_operation == Operation.Erase || _operation == Operation.CutShape)
             {
                 isErase = true;
             }
             painter.IsErase = isErase;
         });
     }
     _hasDoEndDrawActions = false;
 }
Exemple #15
0
    private IEnumerator FadeOutPaintCanvasFunc(float time = 1f)
    {
        float perTime = time / 100;

        for (int i = 0; i < _listPainter.Count; i++)
        {
            RenderTexturePainter painter = _listPainter[i];
            if (true == painter.IsInited)
            {
                for (int j = 0; j < 100; i++)
                {
                    painter.CanvasAlpha = 1 - j * 0.01f;
                    yield return(new WaitForSeconds(perTime));
                }
                painter.Dispose();
            }
        }
        _coFadeCanvas = null;
    }
Exemple #16
0
 public void Init(BeardModelHandler model)
 {
     _toolScribble = GetComponent <ScribbleTool>();
     RenderTexturePainter[] arrayPainter = null;
     if (_shape == Shape.Round)
     {
         arrayPainter = new RenderTexturePainter[] { model._beardFrontPainter, model._beardMiddlePainter };
     }
     else if (_shape == Shape.Sharp)
     {
         arrayPainter = new RenderTexturePainter[] { model._beardFrontPainter };
     }
     _toolScribble.Init(arrayPainter, null);
     _toolCollider = GetComponent <ColliderTool>();
     _toolCollider.Init(new GameObject[] { model._beardMessy });
     _model = model;
     ToolScribble.OnToolStart.AddListener(OnToolStart);
     ToolScribble.OnToolEnd.AddListener(OnToolEnd);
 }
Exemple #17
0
    void CreateGrid()
    {
        PainterChecker       checker = target as PainterChecker;
        RenderTexturePainter painter = checker.gameObject.GetComponent <RenderTexturePainter>();

        Texture2D tex = checker._sourceTex as Texture2D;

        if (painter && painter.SourceTex)
        {
            tex = painter.SourceTex as Texture2D;
        }
        Texture2D pen = checker._penTex as Texture2D;

        if (painter && painter._penTex != null)
        {
            pen = painter._penTex as Texture2D;
        }

        if (tex && pen)
        {
            checker._dicGrid   = new Dictionary <string, Rect>();
            checker._dicEnable = new Dictionary <string, bool>();

            Vector2 gridSize = GetGridSize();
            int     gridW    = (int)(gridSize.x);
            int     gridH    = (int)(gridSize.y);

            int canvasW = tex.width;
            int canvasH = tex.height;

            for (int w = -canvasW / 2; w <= canvasW / 2; w += gridW)
            {
                for (int h = -canvasH / 2; h <= canvasH / 2; h += gridH)
                {
                    string key   = w * 0.01f + "-" + h * 0.01f;
                    Rect   value = new Rect(w * 0.01f, h * 0.01f, gridH * 0.01f, gridW * 0.01f);
                    checker._dicGrid[key]   = value;
                    checker._dicEnable[key] = checker._gridDefaultStatus;
                }
            }
        }
    }
Exemple #18
0
    Vector2 GetGridSize()
    {
        PaintCompleteChecker checker = target as PaintCompleteChecker;
        RenderTexturePainter painter = checker.gameObject.GetComponent <RenderTexturePainter>();

        Texture2D pen = checker.penTexture as Texture2D;

        if (painter && painter.penTex != null)
        {
            pen = painter.penTex as Texture2D;
            int gridW = Mathf.FloorToInt(pen.width * painter.brushScale / 4f);
            int gridH = Mathf.FloorToInt(pen.height * painter.brushScale / 4f);
            return(new Vector2(gridW, gridH));
        }
        if (pen)
        {
            int gridW = Mathf.FloorToInt(pen.width * checker.gridScale / 4f);
            int gridH = Mathf.FloorToInt(pen.height * checker.gridScale / 4f);
            return(new Vector2(gridW, gridH));
        }
        return(Vector2.one * checker.gridScale);
    }
 void OnEnable()
 {
     m_painter         = target as RenderTexturePainter;
     sortingLayerNames = GetSortingLayerNames();
     selectedOption    = GetSortingLayerIndex(m_painter.sortingLayerName);
 }
Exemple #20
0
 void Awake()
 {
     painter = GetComponent<RenderTexturePainter>();
 }
 // Use this for initialization
 void Start()
 {
     _painter         = GetComponent <RenderTexturePainter>();
     _completeChecker = GetComponent <PaintCompleteChecker>();
 }
Exemple #22
0
 private void UpdatePainterSetting(RenderTexturePainter painter)
 {
     painter._penTex     = null != _penTex ? _penTex : painter._penTex;
     painter._brushScale = _penScale > 0 ? _penScale : painter._brushScale;
 }
Exemple #23
0
 void Awake()
 {
     painter = GetComponent <RenderTexturePainter>();
 }
Exemple #24
0
    public override void OnInspectorGUI()
    {
        PainterChecker       checker = target as PainterChecker;
        RenderTexturePainter painter = checker.gameObject.GetComponent <RenderTexturePainter>();

        EditorGUILayout.Space();
        serializedObject.Update();
        EditorGUILayout.PropertyField(serializedObject.FindProperty("_gridDefaultStatus"), true);
        if (painter == null)
        {
            EditorGUILayout.PropertyField(serializedObject.FindProperty("_sourceTex"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("_penTex"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("_gridScale"), true);
        }
        EditorGUILayout.PropertyField(serializedObject.FindProperty("_enableColor"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("_disableColor"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("_checkData"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("_canResetData"), true);
        serializedObject.ApplyModifiedProperties();

        EditorGUILayout.Space();
        serializedObject.Update();
        EditorGUILayout.PropertyField(serializedObject.FindProperty("_editorBrushSize"), true);
        serializedObject.ApplyModifiedProperties();
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("(Ctrl+)Read Data"))
        {
            ReadGrid();
        }
        SpriteRenderer sr = checker.gameObject.GetComponent <SpriteRenderer>();

        if (sr == null && GUILayout.Button("Show Source Tex"))
        {
            Texture2D tex = checker._sourceTex as Texture2D;
            if (painter && painter.SourceTex)
            {
                tex = painter.SourceTex as Texture2D;
            }
            if (tex)
            {
                SpriteRenderer render = checker.GetComponent <SpriteRenderer>();
                if (!render)
                {
                    render = checker.gameObject.AddComponent <SpriteRenderer>();
                }
                render.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.one * 0.5f);
            }
        }
        else if (sr && GUILayout.Button("Remove SpriteRenderer"))
        {
            DestroyImmediate(sr);
            GUIUtility.ExitGUI();
        }
        EditorGUILayout.EndHorizontal();


        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("(Ctrl+)Create Data"))
        {
            CreateGrid();
        }
        if (GUILayout.Button("Save Grid Data"))
        {
            SaveDataToFile();
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();
        EditorGUILayout.TextArea("Cmd/Ctrl + Mouse: Add Point\nAlt + Mouse : Remove Point");
    }
Exemple #25
0
    private void InitPainterAndChecker(RenderTexturePainter[] arrayPainter = null, PainterChecker[] arrayChecker = null)
    {
        _listPainter.Clear();

        RenderTexturePainter[] arrayTempPainter = _arrayPainter;
        if (null != arrayPainter)
        {
            arrayTempPainter = _arrayPainter.Concat(arrayPainter).ToArray();
        }
        for (int i = 0; i < arrayTempPainter.Length; i++)
        {
            _listPainter.Add(arrayTempPainter[i]);
        }

        if (_operation == Operation.Erase && true == _isCleanOtherPaintTool)
        {
            _listScribbleTool.Clear();
            for (int i = 0; i < _arrayScribbleTool.Length; i++)
            {
                ScribbleTool tool = _arrayScribbleTool[i];
                for (int j = 0; j < tool.ListPainter.Count; j++)
                {
                    _listPainter.Add(tool.ListPainter[j]);
                }
                _listScribbleTool.Add(tool);
            }
        }

        if (_operation == Operation.Replace && _listPainter.Count == 2)
        {
            RenderTexturePainter mainPainter = _listPainter[0];
            RenderTexturePainter tempPainter = _listPainter[1];
            if (false == mainPainter.IsInited)
            {
                mainPainter.Init();
            }
            tempPainter.SourceTex = mainPainter.SourceTex;
        }
        LoopPainter((RenderTexturePainter painter) =>
        {
            if (false == painter.IsInited)
            {
                painter.Init();
            }
            UpdatePainterSetting(painter);
            if (false == painter._isShowSource)
            {
                painter.ResetCanvas();
            }
            PainterChecker checker = painter.GetComponent <PainterChecker>();
            if (null != checker)
            {
                checker.Init();
                checker.SetDataByTexture(painter.SourceTex.ToTexture2D(), painter._penTex, painter._brushScale, 0);
                _listChecker.Add(checker);
                _dicCheckerIndex.Add(painter, _listChecker.IndexOf(checker));
            }
        });

        PainterChecker[] arrayTempChecker = _arrayChecker;
        if (null != arrayChecker)
        {
            arrayTempChecker = _arrayChecker.Concat(arrayChecker).ToArray();
        }

        for (int i = 0; i < arrayTempChecker.Length; i++)
        {
            PainterChecker checker = arrayTempChecker[i];
            checker.Init();
            _listChecker.Add(checker);
        }
    }