Пример #1
0
    void OnSceneGUI()
    {
        int   controlId = GUIUtility.GetControlID(FocusType.Passive);
        Event e         = Event.current;

        switch (e.type)
        {
        case EventType.MouseDown:

            Vector2 pos = GetMousePosition(e);
            pos.x -= g.transform.position.x;

            pos.y -= g.transform.position.y;

            pos.y *= -1;

            if (pos.x > 0 && pos.y > 0 && pos.x < g.MaxX && pos.y < g.MaxY)
            {
                Grid.Coords c = new Grid.Coords()
                {
                    x = Mathf.FloorToInt(pos.x),
                    y = Mathf.FloorToInt(pos.y)
                };

                if (!e.control && !e.shift)
                {
                    g.UnSelect();
                }
                if (e.shift && g.selected.Count > 0)
                {
                    int minX = Mathf.Min(g.selected[0].x, c.x);
                    int minY = Mathf.Min(g.selected[0].y, c.y);
                    int maxX = Mathf.Max(g.selected[0].x, c.x);
                    int maxY = Mathf.Max(g.selected[0].y, c.y);

                    for (int X = minX; X <= maxX; X++)
                    {
                        for (int Y = minY; Y <= maxY; Y++)
                        {
                            g.AddSelected(new Grid.Coords()
                            {
                                x = X, y = Y
                            });
                        }
                    }
                }
                else
                {
                    g.AddSelected(c);
                }

                GUIUtility.hotControl = controlId;
                e.Use();
            }

            break;
        }
    }
Пример #2
0
    void OnSceneGUI()
    {
        int controlId = GUIUtility.GetControlID(FocusType.Passive);
        Event e = Event.current;
        switch (e.type)
        {
          case EventType.MouseDown:

        Vector2 pos = GetMousePosition(e);
        pos.x -= g.transform.position.x;

        pos.y -= g.transform.position.y;

        pos.y *= -1;

        if (pos.x > 0 && pos.y > 0 && pos.x < g.MaxX && pos.y < g.MaxY) {

          Grid.Coords c = new Grid.Coords()
          {
            x = Mathf.FloorToInt(pos.x),
            y = Mathf.FloorToInt(pos.y)
          };

          if (!e.control&& ! e.shift)
          {
            g.UnSelect();
          }
          if (e.shift && g.selected.Count >0) {
            int minX = Mathf.Min(g.selected[0].x, c.x);
            int minY = Mathf.Min(g.selected[0].y, c.y);
            int maxX = Mathf.Max(g.selected[0].x, c.x);
            int maxY = Mathf.Max(g.selected[0].y, c.y);

            for (int X = minX; X <= maxX; X++)
            {
              for (int Y = minY; Y <= maxY; Y++)
              {
                g.AddSelected(new Grid.Coords() { x = X, y =Y});
              }
            }

          }
          else
          {
            g.AddSelected(c);

          }

            GUIUtility.hotControl = controlId;
          e.Use();
        }

        break;
        }
    }