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; }); } }
// 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 }
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(); } }
// 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; } } } }
void Start() { m_painter = GetComponent <RenderTexturePainter>(); #if UNITY_EDITOR canResetData = true; #endif Reset(); }
public void Init() { _painter = GetComponent <RenderTexturePainter>(); #if UNITY_EDITOR _canResetData = true; #endif Reset(); }
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)); }
public bool IsPainterInited() { for (int i = 0; i < _listPainter.Count; i++) { RenderTexturePainter painter = _listPainter[i]; if (false == painter.IsInited) { return(false); } } return(true); }
public void ShowScribbleComplete() { if (_operation == Operation.Replace) { RenderTexturePainter painter = _listPainter[0]; painter.ShowScribbleComplete(); return; } LoopPainter((RenderTexturePainter painter) => { painter.ShowScribbleComplete(); }); }
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"); }
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; }
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; }
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); }
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; } } } }
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); }
void Awake() { painter = GetComponent<RenderTexturePainter>(); }
// Use this for initialization void Start() { _painter = GetComponent <RenderTexturePainter>(); _completeChecker = GetComponent <PaintCompleteChecker>(); }
private void UpdatePainterSetting(RenderTexturePainter painter) { painter._penTex = null != _penTex ? _penTex : painter._penTex; painter._brushScale = _penScale > 0 ? _penScale : painter._brushScale; }
void Awake() { painter = GetComponent <RenderTexturePainter>(); }
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"); }
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); } }