public bool ValidateFromThis(EditTool editTool)
 {
     if (editTool == null)
     {
         return(false);
     }
     return(editTool.GetType() == typeof(TEditTool));
 }
        private void OnEnable()
        {
            _cloudCamera          = (CloudCamera)target;
            _editTool             = (EditTool)EditorPrefs.GetInt("CloudCameraEditor._editTool");
            _areNoizePowersLocked = EditorPrefs.GetBool("CloudCameraEditor._areNoizePowersLocked");
            _areNoizeScalesLocked = EditorPrefs.GetBool("CloudCameraEditor._areNoizeScalesLocked");

            SetupShader(ref _cloudCamera.blurFastShader, "Hidden/Clouds/BlurFast");
            SetupShader(ref _cloudCamera.blurShader, "Hidden/Clouds/Blur");
            SetupShader(ref _cloudCamera.blurHQShader, "Hidden/Clouds/BlurHQ");

            SetupShader(ref _cloudCamera.depthBlurShader, "Hidden/Clouds/DepthBlur");
            SetupShader(ref _cloudCamera.depthShader, "Hidden/Clouds/Depth");
            SetupShader(ref _cloudCamera.cloudShader, "Hidden/Clouds/Clouds");
            SetupShader(ref _cloudCamera.clearColorShader, "Hidden/Clouds/ClearColor");
        }
示例#3
0
    //-----------------------------------------------------
    public void DisplayImgEditTools(Rect displayZone)
    {
        //GUI.skin = skin;
        GUI.BeginGroup(displayZone);
        float btnH = 50;        // TODO rendre générique la hauteur de bouton?
        int toolCount = m_imgLabels.Length;

        for(int i=0 ; i<toolCount ; i++)
        {
            if(GUI.Button(new Rect(displayZone.width-btnH,(i*btnH),btnH,btnH), m_imgLabels[i]))
            {
                m_curTool = (EditTool) 100+10*i;         // 100 = outil1, 110 = outil2, etc.

                if(m_curTool == EditTool.Inpaint) // L'inpainting n'a pas de sous-outil : on l'affiche directement
                {
                    if(GameObject.Find("Background/backgroundImage").GetComponent("PolygonTracer") == null &&
                       GameObject.Find("Background/backgroundImage").GetComponent<GUITexture>().texture != null)
                    {
        //                      Debug.Log("GUISubTools : Activation Polygon Inpainting");
                        GameObject.Find("Background/backgroundImage").AddComponent<PolygonTracer>();

                        // Passer le PolygonTracer en "mode Inpainting"
                        GameObject.Find("backgroundImage").GetComponent<PolygonTracer>().SetTool(EditTool.Inpaint);

                        Component script = GameObject.Find("MainNode").GetComponent<ObjBehavGlobal>();
                        GameObject.Find("MainNode").GetComponent<ObjBehavGlobal>().ToggleSceneObjectsTransparent();
                    }

        //                    GetComponent<GUIMain>().SetFoldRgtMenu(true);
                } // if inpainting
                /*else    // Affichage du menu des sous-outils pour les outils qui en ont besoin, avec activation d'un sous-outil par défaut
                {
                    GetComponent<GUISubTools>().SetDefaultInitOn();
                    GetComponent<GUISubTools>().SetCurTool((int) m_curTool);
        //                Debug.Log("GUIEditTools : EditionImage, outil : "+m_curTool);
        //                    GetComponent<GUIMain>().SetDisplaySubTools(true);
                }*/
            }
        }

        GUI.EndGroup();
    }
        private void _ShortCut_EditMode(Event e)
        {
            if (e.rawType == EventType.MouseUp)
            {
                if (e.button == 1)
                {
                    m_bRightBtnIsDown = false;
                }
            }

            if (e.type == EventType.MouseDown)
            {
                if (e.button == 1)
                {
                    m_bRightBtnIsDown = true;
                }
            }

            if (e.type == EventType.KeyUp && !m_bRightBtnIsDown)
            {
                switch (e.keyCode)
                {
                case KeyCode.W:
                {
                    m_EditTool = EditTool.Move;
                    EUtil.RepaintSceneView();
                }
                break;

                case KeyCode.E:
                {
                    m_EditTool = EditTool.Rotate;
                    EUtil.RepaintSceneView();
                }
                break;
                }
            }
        }
        public override void OnInspectorGUI()
        {
            _lockedStyle = EditorGUIUtility.GetBuiltinSkin(EditorSkin.Inspector).GetStyle("IN LockButton");

            _cloudCamera = (CloudCamera)target;
            Undo.RecordObject(_cloudCamera, "cloud camera");

            _editTool = EditTypeToolbar(_editTool);

            switch (_editTool)
            {
            case EditTool.General:
                GeneralFoldout();
                break;

            case EditTool.Light:
                LightFoldout();
                break;

            case EditTool.Blur:
                BlurFoldout();
                break;

            case EditTool.Noise:
                NoiseFoldout();
                break;
            }

            EditorUtility.SetDirty(_cloudCamera);

            if (!Application.isPlaying)
            {
                // This is done to update the game view smoothly when cloud camera is selected but don't break editor's behaviour:)
                Repaint();
            }
        }
示例#6
0
        private void ChangeEditMode(EditMode editMode)
        {
            if (CurrentEditMode == editMode)
            {
                return;
            }

            switch (editMode)
            {
            case EditMode.Pencil:
                _currentEditTool = new PencilEditTool(this);
                break;

            case EditMode.Eraser:
                _currentEditTool = new EraserEditTool(this);
                break;

            case EditMode.BrushPicker:
                break;

            default:
                throw new NotSupportedException($"Unsupported editmode \"{editMode}\"");
            }
        }
示例#7
0
        public override void OnEnter(GameState previousState)
        {
            // Generate all font sizes for zooming
            //for(double i = 1; i <= 4; i += 0.01)
            //Game.DefaultFonts.MonoBold.Measure((uint)(8 * i), "");

            Menu = new TileMenu(BaseState.Map.Info.Environment, Game);

            Menu.SelectionChanged = (t, s) =>
            {
                Layer = s.Layer;
            };

            Menu.Rectangle.TweenTo(new Rectangle(-250, 114, Menu.Rectangle.TargetValue.Width, Menu.Rectangle.TargetValue.Height), TweenEaseType.Linear, 0);
            Menu.Rectangle.TweenTo(new Rectangle(48, 114, Menu.Rectangle.TargetValue.Width, Menu.Rectangle.TargetValue.Height), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);

            BaseState.Buttons.Add("tool-paintone", new Button
            {
                Text     = "",
                Icon     = Assets.Get <Texture2D>("editor/tile/paintone.png"),
                Position = new TweenedVector2(Game, new Vector2(-250, 114 + 31)),

                Active  = true,
                Clicked = (btn) => { _tool = EditTool.PaintOne; },
                Font    = Game.DefaultFonts.Normal
            });

            BaseState.Buttons["tool-paintone"].Position.TweenTo(new Vector2(48, 114 + 31), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);

            BaseState.Buttons.Add("tool-rectangle", new Button
            {
                Text     = "",
                Icon     = Assets.Get <Texture2D>("editor/tile/rectangle.png"),
                Position = new TweenedVector2(Game, new Vector2(-250, 114 + 31 + 32)),

                Active  = false,
                Clicked = (btn) => { _tool = EditTool.PaintRectangle; },
                Font    = Game.DefaultFonts.Normal
            });

            BaseState.Buttons["tool-rectangle"].Position.TweenTo(new Vector2(48, 114 + 31 + 32), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);

            BaseState.Buttons.Add("eraser", new Button
            {
                Text     = "",
                Icon     = Assets.Get <Texture2D>("editor/tile/eraser.png"),
                Position = new TweenedVector2(Game, new Vector2(-250, 114 + 31 + 32 * 2)),

                Active         = false,
                CanClickActive = true,
                Clicked        = (btn) => { _eraseMode = !_eraseMode; },
                Font           = Game.DefaultFonts.Normal
            });

            BaseState.Buttons["eraser"].Position.TweenTo(new Vector2(48, 114 + 31 + 32 * 2), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);

            BaseState.Buttons.Add("layer-terrain", new Button
            {
                Text     = "",
                Icon     = Assets.Get <Texture2D>("editor/tile/terrain.png"),
                Position = new TweenedVector2(Game, new Vector2(-250, 119 + 31 + 32 * 3)),

                Active  = true,
                Clicked = (btn) => {
                    Layer = Tile.MapLayer.Terrain;
                },
                Font = Game.DefaultFonts.Normal
            });

            BaseState.Buttons["layer-terrain"].Position.TweenTo(new Vector2(48, 119 + 31 + 32 * 3), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);

            BaseState.Buttons.Add("layer-decoration", new Button
            {
                Text     = "",
                Icon     = Assets.Get <Texture2D>("editor/tile/decoration.png"),
                Position = new TweenedVector2(Game, new Vector2(-250, 119 + 31 + 32 * 4)),

                Active   = false,
                Disabled = false,
                Clicked  = (btn) => {
                    Layer = Tile.MapLayer.Decoration;
                },
                Font = Game.DefaultFonts.Normal
            });

            BaseState.Buttons["layer-decoration"].Position.TweenTo(new Vector2(48, 119 + 31 + 32 * 4), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);

            BaseState.Buttons.Add("layer-npc", new Button
            {
                Text     = "",
                Icon     = Assets.Get <Texture2D>("editor/tile/npc.png"),
                Position = new TweenedVector2(Game, new Vector2(-250, 119 + 31 + 32 * 5)),

                Active   = false,
                Disabled = false,
                Clicked  = (btn) => {
                    Layer = Tile.MapLayer.NPC;
                },
                Font = Game.DefaultFonts.Normal
            });

            BaseState.Buttons["layer-npc"].Position.TweenTo(new Vector2(48, 119 + 31 + 32 * 5), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);

            BaseState.Buttons.Add("layer-control", new Button
            {
                Text     = "",
                Icon     = Assets.Get <Texture2D>("editor/tile/control.png"),
                Position = new TweenedVector2(Game, new Vector2(-250, 119 + 31 + 32 * 6)),

                Active  = false,
                Clicked = (btn) => {
                    Layer = Tile.MapLayer.Control;
                },
                Font = Game.DefaultFonts.Normal
            });

            BaseState.Buttons["layer-control"].Position.TweenTo(new Vector2(48, 119 + 31 + 32 * 6), TweenEaseType.EaseOutQuad, previousState == null ? 0.65f : 0f);
        }
 private EditTool EditTypeToolbar(EditTool selected)
 {
     string[] toolbar = new string[] { "General", "Light", "Blur", "Noise" };
     return((EditTool)GUILayout.Toolbar((int)selected, toolbar));
 }
示例#9
0
 private void rbCopy_CheckedChanged(object sender, EventArgs e)
 {
     editToolMode = EditTool.Copy;
 }
示例#10
0
    //-----------------------------------------------------
    public void DisplayLightTools(Rect displayZone)
    {
        //GUI.skin = skin;

        GUI.BeginGroup(displayZone);
        float btnH = 50;        // TODO rendre générique la hauteur de bouton?
        int toolCount = m_lgtLabels.Length;
        for(int i=0 ; i< toolCount; i++)
        {
            if(GUI.Button(new Rect(displayZone.width-btnH,(i*btnH),btnH,btnH), m_lgtLabels[i]))
            {
                m_curTool = (EditTool) 200+10*i;         // 200 = outil1, 210 = outil2, etc.

                if(m_curTool == EditTool.Shadows)
                {
                    m_displayLightSliders = true; 		 // outil ombrage (pas de sous-outil)
        //                    GetComponent<GUIMain>().SetFoldRgtMenu(true);
                }
                else
                {
                    //GetComponent<GUISubTools>().SetCurTool((int) m_curTool);
        //                	GetComponent<GUIMain>().SetDisplaySubTools(true);
                }
                //GetComponent<GUISubTools>().SetSubTool(i);
            }
        }
        GUI.EndGroup();
    }
示例#11
0
 //-----------------------------------------------------
 void Start()
 {
     m_curTool     = EditTool.None;
     m_curMenuMode = MenuMode.ImageMode;
     m_displayLightSliders = false;
 }
示例#12
0
    //-----------------------------------------------------
    // Annulation d'actions en cours (pour les outils n'ayant pas de sous-outils)
    public void ExitTool()
    {
        if(m_curTool == EditTool.Inpaint)
        {
            // TODO Si polygone pas fini, alors message de confirmation d'annulation de polygone
            Component script = GameObject.Find("Background/backgroundImage").GetComponent("PolygonTracer");
            if(script) ((PolygonTracer) script).abort(true);
        //               else Debug.LogError("GUISubTools : Script \"Background/backgroundImage/PolygonTracer\" introuvable");

            GameObject.Find("MainNode").GetComponent<ObjBehavGlobal>().ToggleSceneObjectsTransparent();
        }
        else if(m_curTool == EditTool.Shadows)
            m_displayLightSliders = false;

        m_curTool = EditTool.None;
    }
示例#13
0
 private void eraseButton_Click(object sender, EventArgs e)
 {
     editTool = EditTool.Erase;
     UpdateToolButtons();
 }
示例#14
0
 private void paintButton_Click(object sender, EventArgs e)
 {
     editTool = EditTool.Paint;
     UpdateToolButtons();
 }
示例#15
0
        public override void Update(double deltaTime, double totalTime, long count)
        {
            /* TODO if(Game.Input.KeyPressed(Keys.E))
             * {
             *      _lastSelection = Menu.Selected;
             *      Menu.Selected = 0;
             * }
             *
             * if(Game.Input.KeyReleased(Keys.E))
             * {
             *      Menu.Selected = _lastSelection;
             *      _lastSelection = -1;
             * } */

            if (Game.Input.KeyPressed(Keys.T) && !Menu.IsHovered)
            {
                MapEditorEditAttributesState state = new MapEditorEditAttributesState();
                state.Layer            = Layer;
                BaseState.CurrentState = state;

                return;
            }

            Menu.Disabled = !Menu.IsHovered && (_eraseMode || Game.Input.Key(Keys.E));

            BaseState.Buttons["tool-paintone"].Active  = _tool == EditTool.PaintOne;
            BaseState.Buttons["tool-rectangle"].Active = _tool == EditTool.PaintRectangle;

            BaseState.Buttons["eraser"].Active = _eraseMode || Game.Input.Key(Keys.E);

            BaseState.Buttons["layer-terrain"].Active    = Layer == Tile.MapLayer.Terrain;
            BaseState.Buttons["layer-decoration"].Active = Layer == Tile.MapLayer.Decoration;
            BaseState.Buttons["layer-npc"].Active        = Layer == Tile.MapLayer.NPC;
            BaseState.Buttons["layer-control"].Active    = Layer == Tile.MapLayer.Control;

            if (BaseState.Buttons["tool-paintone"].Position.IsComplete)
            {
                float alpha = 1.0f;
                if (Menu.IsHovered)
                {
                    alpha = 0.0f;
                }

                BaseState.Buttons["tool-paintone"].Alpha  = MathHelper.Lerp(BaseState.Buttons["tool-paintone"].Alpha, alpha, (float)deltaTime * 25f);
                BaseState.Buttons["tool-rectangle"].Alpha = MathHelper.Lerp(BaseState.Buttons["tool-rectangle"].Alpha, alpha, (float)deltaTime * 25f);
                BaseState.Buttons["eraser"].Alpha         = MathHelper.Lerp(BaseState.Buttons["eraser"].Alpha, alpha, (float)deltaTime * 25f);

                BaseState.Buttons["layer-terrain"].Alpha    = MathHelper.Lerp(BaseState.Buttons["layer-terrain"].Alpha, alpha, (float)deltaTime * 25f);
                BaseState.Buttons["layer-decoration"].Alpha = MathHelper.Lerp(BaseState.Buttons["layer-decoration"].Alpha, alpha, (float)deltaTime * 25f);
                BaseState.Buttons["layer-npc"].Alpha        = MathHelper.Lerp(BaseState.Buttons["layer-npc"].Alpha, alpha, (float)deltaTime * 25f);
                BaseState.Buttons["layer-control"].Alpha    = MathHelper.Lerp(BaseState.Buttons["layer-control"].Alpha, alpha, (float)deltaTime * 25f);
            }

            if (!BaseState.IsPointObscured(Input.MousePosition))
            {
                if (Input.MousePressed(MouseButton.Middle) && !Input.Mouse(MouseButton.Left))
                {
                    _tool = _tool == EditTool.PaintOne ? EditTool.PaintRectangle : EditTool.PaintOne;
                }

                if (Input.KeyPressed(Keys.R) && !_eraseMode && !Game.Input.Key(Keys.E))
                {
                    string       flip = Input.Key(Keys.LeftShift) ? "flip-v" : "flip-h";
                    Tile         tile = BaseState.Map[Menu.SelectedTile.Layer, SelectedTile.X, SelectedTile.Y];
                    TileMetadata meta = BaseState.Map.GetMetadata(Menu.SelectedTile.Layer, SelectedTile.X, SelectedTile.Y);

                    int currentY = 0;
                    // TODO: make it easier to call this function without removing menus
                    TileAttributeEditor[] editors = tile.AttributeEditors(BaseState, ref currentY);

                    if (editors != null)
                    {
                        foreach (TileAttributeEditor editor in editors)
                        {
                            if (editor.Name == flip)
                            {
                                bool enable = !(meta != null && meta.IsKeySet(flip) && meta[flip] == "True");

                                if (enable)
                                {
                                    if (meta == null)
                                    {
                                        meta = new TileMetadata();
                                    }
                                    meta[flip] = "True";
                                    BaseState.Map.SetMetadata(Menu.SelectedTile.Layer, SelectedTile.X, SelectedTile.Y, meta);
                                }
                                else
                                {
                                    meta[flip] = "";
                                }
                            }

                            editor.Dispose();
                        }
                    }
                }

                switch (_tool)
                {
                case EditTool.PaintOne:
                    if (Input.Mouse(MouseButton.Left))
                    {
                        BaseState.Map[_eraseMode || Game.Input.Key(Keys.E) ? Layer : Menu.SelectedTile.Layer, SelectedTile.X, SelectedTile.Y] =
                            _eraseMode || Game.Input.Key(Keys.E) ? Tile.Find("", Layer) : Menu.SelectedTile;
                    }
                    break;

                case EditTool.PaintRectangle:
                    if (Input.MousePressed(MouseButton.Left))
                    {
                        _startingTile = SelectedTile;
                    }
                    if (Input.MouseReleased(MouseButton.Left))
                    {
                        for (int x = _rectangleToolRect.X; x <= _rectangleToolRect.X + _rectangleToolRect.Width; x++)
                        {
                            for (int y = _rectangleToolRect.Y; y <= _rectangleToolRect.Y + _rectangleToolRect.Height; y++)
                            {
                                BaseState.Map[_eraseMode || Game.Input.Key(Keys.E) ? Layer : Menu.SelectedTile.Layer, x, y] =
                                    _eraseMode || Game.Input.Key(Keys.E) ? Tile.Find("", Layer) : Menu.SelectedTile;
                            }
                        }

                        _startingTile = new Point(-1, -1);
                    }

                    break;
                }
            }

            Menu.MaxHeight = Game.GraphicsDevice.Viewport.Bounds.Height / 2;
            Menu.Update(Game);
        }
示例#16
0
文件: MapPanel.cs 项目: dekk7/xEngine
        public MapPanel()
        {
            InitializeComponent();

            m_commandHistory = CommandHistory.Instance;

            m_singleTileCursor = new Cursor(new MemoryStream(Properties.Resources.ToolsSingleTileCursor));
            m_tileBlockCursor = new Cursor(new MemoryStream(Properties.Resources.ToolsTileBlockCursor));
            m_eraserCursor = new Cursor(new MemoryStream(Properties.Resources.ToolsEraserCursor));
            m_dropperCursor = new Cursor(new MemoryStream(Properties.Resources.ToolsDropperCursor));

            m_viewport = new xTile.Dimensions.Rectangle(
                xTile.Dimensions.Location.Origin, xTile.Dimensions.Size.Zero);
            m_autoScaleViewport = true;

            m_zoomIndex = 5;
            m_zoom = 1.0f;

            m_layerCompositing = LayerCompositing.DimUnselected;

            m_editTool = EditTool.SingleTile;
            m_innerPanel.Cursor = m_singleTileCursor;
            m_mouseInside = false;
            m_mouseLocation = new Location();
            m_tileLayerLocation = xTile.Dimensions.Location.Origin;
            m_dragTileStart = xTile.Dimensions.Location.Origin;

            m_tileSelection = new TileSelection();
            m_ctrlKeyPressed = false;

            m_random = new Random();
            m_textureDistribution = new List<Tile>();

            m_tileGuides = false;

            m_veilBrush = new SolidBrush(Color.FromArgb(192, SystemColors.InactiveCaption));
            m_imageAttributes = new ImageAttributes();
            m_colorMatrix = new ColorMatrix();
            m_tileSelectionPen = new Pen(SystemColors.ActiveCaption);
            m_tileSelectionBrush = new SolidBrush(
                Color.FromArgb(128, SystemColors.ActiveCaption));

            m_dashPattern = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
            m_tileGuidePen = new Pen(Color.Black);
            m_tileGuidePen.DashPattern = m_dashPattern;

            m_animationTimer.Enabled = !this.DesignMode;

            m_dtStart = DateTime.Now;

            this.MouseWheel += new MouseEventHandler(OnMouseWheel);
        }
示例#17
0
 private void rbZoom_CheckedChanged(object sender, EventArgs e)
 {
     ReleaseMotif();
     editToolMode = EditTool.Zoom;
 }