void DrawLine()
        {
            if (node.lineInfo.pts.Count <= 2)
            {
                rData.l.st = false;
            }

            RepaintGetDirty();
            if (LineEditMode())
            {
                LineEditUpdate();
            }
            else
            {
                LinePlaceUpdate();
            }
            DrawPoints();

            //Draw Cursor
            if (focusedWindow == this)
            {
                if (al_rectMain.Contains(mousePosOut + new Vector2(0, al_startY)) && drawRect.Contains(mousePos))
                {
                    if (LineEditMode())
                    {
                        Cursor.visible = true;
                    }
                    else
                    {
                        GUI.DrawTexture(new Rect(mousePos.x - brushSize * 1f, mousePos.y - brushSize * 1f, brushSize * 2f, brushSize * 2f), SWEditorUI.Texture(SWUITex.cursor));
                        GUI.DrawTexture(new Rect(mousePos.x - 8, mousePos.y - 8, 16, 16), SWEditorUI.Texture(SWUITex.cursorCenter));
                        Cursor.visible = false;
                    }
                }
                else
                {
                    Cursor.visible = true;
                }
            }
            //Key Command
            if (Event.current.type == EventType.KeyDown)
            {
                if (Event.current.keyCode == KeyCode.Return)
                {
                    if (node.lineInfo.pts.Count <= 1)
                    {
                        return;
                    }
                    node.data.dirty = true;
                    SWTextureProcess.ProcessRemap_Line(node.textureEx, node.lineInfo, brushSizeUV);
                }


                if (Event.current.keyCode == KeyCode.C)
                {
                    SWUndo.Record(node.lineInfo);
                    node.lineInfo.pts.Clear();
                }
            }
        }
Example #2
0
        protected override void DrawExtra()
        {
            base.DrawExtra();
            DrawModuleTitle("Image");
            Tooltip_Rec(SWTipsText.Right_ImageModule, new Rect(rightUpRect.x, GUILayoutUtility.GetLastRect().y, rightUpRect.width, GUILayoutUtility.GetLastRect().height));

            EffectDataColor _data = data.effectDataColor;

            UI_Color("Color", ref _data.color, ref _data.hdr, delegate(SWBaseInfo arg1, bool arg2) {
                SWUndo.Record(info.effector);
            }, true, true);
            Tooltip_Rec(SWTipsText.Right_Color, new Rect(rightUpRect.x, GUILayoutUtility.GetLastRect().y, rightUpRect.width, GUILayoutUtility.GetLastRect().height));


            GUILayout.BeginHorizontal();
            var temp = (SWOutputOP)UI_PopEnum("Blend Op", _data.op, true);

            if (_data.op != temp)
            {
                SWUndo.Record(info.effector);
                _data.op = temp;
            }
            GUILayout.EndHorizontal();
            Tooltip_Rec(SWTipsText.Right_BlendOp, new Rect(rightUpRect.x, GUILayoutUtility.GetLastRect().y, rightUpRect.width, GUILayoutUtility.GetLastRect().height));

            Tooltip_Rec(SWTipsText.Right_BlendFactor, new Rect(rightUpRect.x, GUILayoutUtility.GetLastRect().yMax, rightUpRect.width, GUILayoutUtility.GetLastRect().height));
            Factor_Pick(ref _data.param, true, "Blend Factor");
        }
Example #3
0
        public static void ProcessMask_DrawLine(SWTexture2DEx tex, Vector2 _startUV, Vector2 _endUV, SWBrush brush)
        {
            SWUndo.RegisterCompleteObjectUndo(tex);
            SWTexThread_TexDrawLine t = new SWTexThread_TexDrawLine(tex, brush);

            t.Process(_startUV, _endUV);
        }
Example #4
0
        protected override void DrawNodeWindow(int id)
        {
            base.DrawNodeWindow(id);
            SelectTexture();


            Rect rL = new Rect(gap, NodeHeight - 1.84f * (gap + buttonHeight), contentWidth * 0.5f, buttonHeight);
            Rect rR = new Rect(gap + contentWidth * 0.5f, NodeHeight - 1.84f * (gap + buttonHeight), contentWidth * 0.5f, 0.8f * buttonHeight);

            GUI.Label(rL, "Depth", SWEditorUI.Style_Get(SWCustomStyle.eTxtSmallLight));
            var dep = EditorGUI.IntField(rR, "", data.depth);

            if (dep != 0 && dep != data.depth)
            {
                SWUndo.Record(this);
                data.depth = dep;
            }

            if (texture != null)
            {
                if (GUI.Button(rectBotButton, "Edit", SWEditorUI.MainSkin.button))
                {
                    SWWindowEffectImage.ShowEditor(this);
                }
            }
            DrawNodeWindowEnd();
        }
Example #5
0
        protected void InitRightUp()
        {
            ePopup_blendMode = new SWEnumPopup(new string[] { "Off", "Blend", "Add", "Mul" }, (int)(data.shaderBlend + 1), null,
                                               delegate(int index)
            {
                SWUndo.Record(this);
                data.shaderBlend = (SWShaderBlend)(index - 1);
            }
                                               );
            ePopup_renderOrder = new SWEnumPopup(typeof(SWShaderQueue), (int)data.shaderQueue, true, null,
                                                 delegate(int index)
            {
                SWUndo.Record(this);
                data.shaderQueue = (SWShaderQueue)index;
            }
                                                 );

            ePopup_renderType = new SWEnumPopup(typeof(SWRenderType), (int)data.rt, false, null,
                                                delegate(int index)
            {
                SWUndo.Record(this);
                data.rt = (SWRenderType)index;
            }
                                                );
        }
 public override void KeyCmd_HotkeyDown(KeyCode code)
 {
     base.KeyCmd_HotkeyDown(code);
     if (rData.mode == DrawRemapMode.dir)
     {
         if (code == KeyCode.LeftBracket)
         {
             SWUndo.Record(this);
             rData.d.pb += -1;
         }
         if (code == KeyCode.RightBracket)
         {
             SWUndo.Record(this);
             rData.d.pb += 1;
         }
     }
     else
     {
         if (code == KeyCode.LeftBracket)
         {
             SWUndo.Record(this);
             brushSize += -1;
         }
         if (code == KeyCode.RightBracket)
         {
             SWUndo.Record(this);
             brushSize += 1;
         }
     }
 }
        void CodeParamOutput()
        {
            GUILayout.Label("Output:", SWEditorUI.Style_Get(SWCustomStyle.eTxtSmallLight), GUILayout.Width(SWGlobalSettings.LabelWidth));
            Tooltip_Rec(SWTipsText.Code_Output);

            GUILayout.BeginHorizontal();
            var newName = EditorGUILayout.TextField(nodeCode.dataCode.output.name, GUILayout.Width(SWGlobalSettings.LabelWidth));

            if (newName != nodeCode.dataCode.output.name)
            {
                SWUndo.Record(this);
                nodeCode.dataCode.output.name = newName;
            }


            var tempType = SelectTypeOutput(nodeCode.dataCode.output.type, 50);

            if (tempType != nodeCode.dataCode.output.type)
            {
                SWUndo.Record(this);
                nodeCode.dataCode.output.type = tempType;
                nodeCode.data.codeType        = nodeCode.dataCode.output.type;
            }
            GUILayout.EndHorizontal();
        }
        void DrawSpBase()
        {
            var sp = (Sprite)EditorGUI.ObjectField(rectArea, sprite, typeof(Sprite), true);

            if (sprite != sp)
            {
                //step 1 :record for undo
                Object[] objs = { this, SWWindowMain.Instance };
                SWUndo.Record(objs);

                if (sp != null)
                {
                    sprite = sp;
                    InitForSp();
                    Texture2D t2d    = SWCommon.SpriteGetTexture2D(sprite);
                    float     x      = sprite.rect.x / (float)t2d.width;
                    float     y      = sprite.rect.y / (float)t2d.height;
                    float     width  = sprite.rect.width / t2d.width;
                    float     height = sprite.rect.height / t2d.height;
                    SWWindowMain.Instance.data.spriteRect = new Rect(x, y, width, height);
                }
                else
                {
                    sprite = sp;
                    SWWindowMain.Instance.data.spriteRect = new Rect(0, 0, 1, 1);
                }
            }
        }
Example #9
0
        public override void UI2Data(SWBaseInfo info, bool dorecord = true)
        {
            base.UI2Data(info, dorecord);
            if (dorecord)
            {
                SWUndo.Record(this);
                ArrowOff = info.mousePosRotated - info.imageRect.center;

                if (Event.current.shift)
                {
                    if (Mathf.Abs(ArrowOff.x) > Mathf.Abs(ArrowOff.y))
                    {
                        ArrowOff = new Vector2(ArrowOff.x, 0);
                    }
                    else
                    {
                        ArrowOff = new Vector2(0, ArrowOff.y);
                    }
                }
            }

            info.effector.data.effectData.t_speed = new Vector2(ArrowOff.x * factor, -ArrowOff.y * factor);
            Matrix4x4 m = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(new Vector3(0, 0, -info.angle)), Vector3.one);

            info.effector.data.effectData.t_speed = m.MultiplyVector(info.effector.data.effectData.t_speed);
        }
Example #10
0
        public override void UI2Data(SWBaseInfo info, bool dorecord = true)
        {
            base.UI2Data(info, dorecord);
            if (dorecord)
            {
                SWUndo.Record(info);
                var vFrom = info.mousePosLast - info.imageRect.center;
                var vTo   = info.mousePos - info.imageRect.center;

                var   q = Quaternion.FromToRotation(vFrom, vTo);
                float v = q.eulerAngles.z;
                if (v > 180)
                {
                    v -= 360;
                }
                info.angle += v;

                //Debug.Log (string.Format ("last pos:{0} pos:{1} ro:{2} angle:{3}", info.mousePosRotatedLast,info.mousePosRotated,v, info.angle));
                if (OpTool_Move.Instance != null)
                {
                    Matrix4x4 m = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(new Vector3(0, 0, -v)), Vector3.one);
                    OpTool_Move.Instance.ArrowOff = m.MultiplyVector(OpTool_Move.Instance.ArrowOff);
                }
            }
            info.effector.data.effectData.r_angle = -info.angle * Mathf.Deg2Rad;
        }
Example #11
0
        public static void ProcessMask_Invert(SWTexture2DEx tex)
        {
            SWUndo.RegisterCompleteObjectUndo(tex);
            SWTexThread_Invert t = new SWTexThread_Invert(tex, null);

            t.Process(null);
        }
Example #12
0
 public static void ProcessTexture_Clean(SWTexture2DEx tex)
 {
     SWUndo.RegisterCompleteObjectUndo(tex);
     Color[] colors = new Color[tex.width * tex.height];
     tex.SetPixels(colors);
     tex.Apply();
 }
Example #13
0
 protected override void OnClick(SWSlot item, Vector2 mp)
 {
     base.OnClick(item, mp);
     SWUndo.Record(this);
     selection = slots.IndexOf(item);
     delegat(item, mp);
 }
Example #14
0
        public static void ProcessMask_Dropper(SWTexture2DEx tex, SWTexture2DEx texSource, Vector2 _uv, SWBrush _brush, float tolerance)
        {
            SWUndo.RegisterCompleteObjectUndo(tex);
            SWTexThread_ColorRange t = new SWTexThread_ColorRange(tex, texSource, _brush);

            t.Process(_uv, tolerance);
        }
Example #15
0
        public static void ProcessMask_Wand(SWTexture2DEx tex, SWTexture2DEx texSource, Vector2 _uv, SWBrush _brush, float tolerance)
        {
            SWUndo.RegisterCompleteObjectUndo(tex);
            texSource.filterMode = FilterMode.Point;
            SWTexThread_Wand t = new SWTexThread_Wand(tex, texSource, _brush);

            t.Process(_uv, tolerance);
        }
Example #16
0
		void DrawExtra_NormalMap()
		{
			if (!SWWindowMain.Instance.SupportNormalMap())
				return;

			//Title and toggle
			GUILayout.Space (rightupSpacing);
			GUILayout.BeginHorizontal ();
			DrawModuleTitle ("Normal Map");
			var tmp0 = EditorGUILayout.Toggle(data.nm);
			if (data.nm != tmp0) {
				SWUndo.Record (info.effector);
				data.nm = tmp0;
			} 
			GUILayout.EndHorizontal ();
			Tooltip_Rec (SWTipsText.Right_SpriteLight_NormalMapModule,new Rect(rightUpRect.x,GUILayoutUtility.GetLastRect ().y,rightUpRect.width,GUILayoutUtility.GetLastRect ().height));
			if (data.nm == false)
				return;

			//Normal Tex
			GUILayout.BeginHorizontal ();
			GUILayout.Label ("Normal Map",SWEditorUI.Style_Get(SWCustomStyle.eTxtSmallLight), GUILayout.Width(SWGlobalSettings.LabelWidthLong));
			var tex = (Texture2D)EditorGUILayout.ObjectField(info.effector.textureNormalMap,typeof(Texture2D), false,GUILayout.Width (SWGlobalSettings.FieldWidth));
			if (tex != info.effector.textureNormalMap) {
				SWUndo.Record (info.effector);
				info.effector.textureNormalMap = tex;
				if (tex != null) {
					string adbPath = AssetDatabase.GetAssetPath (tex);
					var tImporter = AssetImporter.GetAtPath (adbPath) as TextureImporter;
					if (tImporter.textureType != TextureImporterType.NormalMap) {
						tImporter.textureType = TextureImporterType.NormalMap;
						AssetDatabase.ImportAsset( adbPath);
						AssetDatabase.Refresh ();  
					}
				}
			}
			GUILayout.EndHorizontal ();
			Tooltip_Rec (SWTipsText.Right_SpriteLight_NormalMapTex,new Rect(rightUpRect.x,GUILayoutUtility.GetLastRect ().y,rightUpRect.width,GUILayoutUtility.GetLastRect ().height));

			if (info.effector.UseNormalMap ()) {
				//Importance
				GUILayout.BeginHorizontal ();
				GUILayout.Label ("Importance", SWEditorUI.Style_Get (SWCustomStyle.eTxtSmallLight), GUILayout.Width (SWGlobalSettings.LabelWidthLong));
				var nmi = EditorGUILayout.FloatField (data.nmi, GUILayout.Width (SWGlobalSettings.FieldWidth));
				nmi = Mathf.Clamp01 (nmi);
				if (data.nmi != nmi) {
					SWUndo.Record (info.effector);
					data.nmi = nmi;
				}
				GUILayout.EndHorizontal ();
				Tooltip_Rec (SWTipsText.Right_SpriteLight_NormalMapImportance, new Rect (rightUpRect.x, GUILayoutUtility.GetLastRect ().y, rightUpRect.width, GUILayoutUtility.GetLastRect ().height));
		
				//Factor
				Tooltip_Rec (SWTipsText.Right_SpriteLight_NormalMapFactor, new Rect (rightUpRect.x, GUILayoutUtility.GetLastRect ().yMax, rightUpRect.width, GUILayoutUtility.GetLastRect ().height));
				Factor_Pick (ref data.nmf, true, "Factor");
			}
		}
Example #17
0
 public override void Data2UI(SWBaseInfo info, bool dorecord = true)
 {
     base.Data2UI(info);
     if (dorecord)
     {
         SWUndo.Record(info);
     }
     info.angle = -info.effector.data.effectData.r_angle * Mathf.Rad2Deg;
 }
Example #18
0
 public override void Data2UI(SWBaseInfo info, bool dorecord = true)
 {
     base.Data2UI(info);
     if (dorecord)
     {
         SWUndo.Record(this);
     }
     offset = new Vector2(0, -info.effector.data.effectData.s_speed.x / factor);
 }
Example #19
0
 public override void Data2UI(SWBaseInfo info, bool dorecord = true)
 {
     base.Data2UI(info);
     if (dorecord)
     {
         SWUndo.Record(this);
     }
     factor   = 1f / info.baseRect.size.x * Mathf.PI * 2;
     offset.x = -info.effector.data.effectData.r_speed / factor;
 }
Example #20
0
        protected void SelectTextureGray()
        {
            var tex = (Texture2D)EditorGUI.ObjectField(rectArea, textureGray, typeof(Texture2D), true);

            if (tex != textureGray)
            {
                SWUndo.Record(this);
                textureGray = tex;
            }
        }
Example #21
0
        public static void ProcessMask_DrawPoint(SWTexture2DEx tex, Vector2 _uv, SWBrush _brush)
        {
            colorStartBuffer = tex.GetPixels();
            brushBuffer      = new float[tex.width, tex.height];

            SWUndo.RegisterCompleteObjectUndo(tex);
            SWTexThread_TexDrawPoint t = new SWTexThread_TexDrawPoint(tex, _brush);

            t.Process(_uv);
        }
Example #22
0
 public override void UI2Data(SWBaseInfo info, bool dorecord = true)
 {
     base.UI2Data(info, dorecord);
     if (dorecord)
     {
         SWUndo.Record(this);
         Vector2 Move = info.mousePosRotated - info.mousePosRotatedLast;
         offset += new Vector2(Move.x, 0);
     }
     info.effector.data.effectData.r_speed = -offset.x * factor;
 }
Example #23
0
 public override void UI2Data(SWBaseInfo info, bool dorecord = true)
 {
     base.UI2Data(info, dorecord);
     if (dorecord)
     {
         SWUndo.Record(info);
         Vector2 Move = info.mousePosRotated - info.mousePosRotatedLast;
         info.imageRect = info.imageRect.ScaleSizeBy(new Vector2(1f, 1 - Move.y / info.imageRect.height));
     }
     info.effector.data.effectData.s_scale =
         new Vector2(info.imageRect.size.x / info.baseRect.size.x, info.imageRect.size.y / info.baseRect.size.y);
 }
Example #24
0
 public static void ProcessRemap_Line(SWTexture2DEx tex, RemapLineInfo info, float size)
 {
     SWUndo.RegisterCompleteObjectUndo(tex);
     if (info.stitch)
     {
         ProcessRemap_LineStitch(tex, info, size);
     }
     else
     {
         ProcessRemap_LineNormal(tex, info, size);
     }
 }
Example #25
0
        protected override void DrawNodeWindow(int id)
        {
            base.DrawNodeWindow(id);
            GUILayout.Space(7);
            GUILayout.BeginHorizontal();
            GUILayout.Space(7);
            GUILayout.BeginVertical();

            float labelWith = 42;

            EffectDataColor _data = data.effectDataColor;
            string          name  = _data.hdr ? "[HDR]" : "Color";

            GUILayout.BeginHorizontal();
            GUILayout.Label(name, SWEditorUI.Style_Get(SWCustomStyle.eTxtSmallLight), GUILayout.Width(labelWith));
            var rect = GUILayoutUtility.GetLastRect();

            if (SWCommon.GetMouseDown(1))
            {
                if (rect.Contains(Event.current.mousePosition))
                {
                    data.effectDataColor.hdr = !data.effectDataColor.hdr;
                }
            }
            _data.color = EditorGUILayout.ColorField(new GUIContent(""), _data.color, true, true, _data.hdr, null, GUILayout.Width(128 - labelWith));
            GUILayout.EndHorizontal();


            GUILayout.Space(2);
            GUILayout.BeginHorizontal();
            GUILayout.Label("Op", SWEditorUI.Style_Get(SWCustomStyle.eTxtSmallLight), GUILayout.Width(labelWith));
            _data.op = (SWOutputOP)EditorGUILayout.EnumPopup(_data.op, GUILayout.Width(128 - labelWith));
            GUILayout.EndHorizontal();
            GUILayout.Space(2);
            SWWindowMain.Instance.Factor_Pick(ref _data.param, PickParamType.node, "Factor", null, 128);

            GUILayout.Space(2);
            GUILayout.BeginHorizontal();
            GUILayout.Label("Depth", SWEditorUI.Style_Get(SWCustomStyle.eTxtSmallLight), GUILayout.Width(labelWith));
            var dep = EditorGUILayout.IntField(data.depth, GUILayout.Width(128 - labelWith));

            if (dep != 0 && dep != data.depth)
            {
                SWUndo.Record(this);
                data.depth = dep;
            }
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
            GUILayout.EndHorizontal();
            DrawNodeWindowEnd();
        }
        void DrawLine()
        {
            //Add Point
            if (SWCommon.GetMouseDown(0) && al_rectMain.Contains(mousePosOut + new Vector2(0, al_startY)))
            {
                if (!al_rectMain.Contains(mousePosOut + new Vector2(0, al_startY)))
                {
                    return;
                }
                if (!drawRect.Contains(mousePos))
                {
                    return;
                }

                SWUndo.Record(info);
                Vector2 m = Event.current.mousePosition;
                m = m - drawRect.position;
                m = SWTextureProcess.TexUV(size, size, (int)m.x, (int)m.y);

                RemapWayPoint pt = new RemapWayPoint();
                pt.uv       = m;
                pt.mousePos = mousePos;
                pt.matArrow = new Material(SWEditorUI.GetShader("RectTRS"));
                info.pts.Add(pt);
            }

            DrawPoints();

            //Draw Cursor
            if (focusedWindow == this)
            {
                if (al_rectMain.Contains(mousePosOut + new Vector2(0, al_startY)) && drawRect.Contains(mousePos))
                {
                    GUI.DrawTexture(new Rect(mousePos.x - brushSize * 1f, mousePos.y - brushSize * 1f, brushSize * 2f, brushSize * 2f), SWEditorUI.Texture(SWUITex.cursor));
                    GUI.DrawTexture(new Rect(mousePos.x - 8, mousePos.y - 8, 16, 16), SWEditorUI.Texture(SWUITex.cursorCenter));
                    Cursor.visible = false;
                }
                else
                {
                    Cursor.visible = true;
                }
            }
            //Key Command
            if (Event.current.type == EventType.keyDown)
            {
                if (Event.current.keyCode == KeyCode.Return)
                {
                    node.data.dirty = true;
                    SWTextureProcess.ProcessRemap_Line(node.textureEx, info, brushSizeUV);
                }
            }
        }
Example #27
0
        protected void  TexShowChnEnum()
        {
            Rect rect = new Rect(al_leftWidth + 10, al_topHeight + 30, 40, 10);
            var  c    = (SWTexShowChannel)EditorGUI.EnumPopup(rect, "",
                                                              texShowChannel);

            if (texShowChannel != c)
            {
                SWUndo.Record(this);
                texShowChannel = c;
                TexShowChnEnumSet();
            }
        }
Example #28
0
        public override void Data2UI(SWBaseInfo info, bool dorecord = true)
        {
            base.Data2UI(info);
            if (dorecord)
            {
                SWUndo.Record(info);
            }
            var center = info.imageRect.center;

            info.imageRect.size = new Vector2(info.effector.data.effectData.s_scale.x * info.baseRect.size.x,
                                              info.effector.data.effectData.s_scale.y * info.baseRect.size.y);
            info.imageRect.center = center;
        }
Example #29
0
        public override void Data2UI(SWBaseInfo info, bool dorecord = true)
        {
            base.Data2UI(info);
            if (dorecord)
            {
                SWUndo.Record(this);
            }
            factor   = 1f / info.baseRect.size.x;
            ArrowOff = new Vector2(info.effector.data.effectData.t_speed.x / factor, -info.effector.data.effectData.t_speed.y / factor);
            Matrix4x4 m2 = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(new Vector3(0, 0, -info.angle)), Vector3.one);

            ArrowOff = m2.MultiplyVector(ArrowOff);
        }
Example #30
0
 public static void ProcessRemap_Line(SWTexture2DEx tex, RemapLineInfo info, float size)
 {
     SWUndo.RegisterCompleteObjectUndo(tex);
     //if (info.stitch)
     if (SWWindowDrawRemap.Instance.rData.l.st)
     {
         ProcessRemap_LineStitch(tex, info, size);
     }
     else
     {
         ProcessRemap_LineNormal(tex, info, size);
     }
 }