예제 #1
0
 private IEnumerable <PreMesh> GeneratePremeshes()
 {
     for (int x = _startPoint.X; x < _startPoint.X + _chunkSize; x++)
     {
         for (int y = _startPoint.Y; y < _startPoint.Y + _chunkSize; y++)
         {
             if (_map.CorrectPosition(x, y))
             {
                 foreach (var preMesh in GenerateCell(x, y))
                 {
                     yield return(preMesh);
                 }
             }
         }
     }
 }
예제 #2
0
        private void Update()
        {
            var hide = Input.GetKey(KeyCode.H);

            _canvasGroup.alpha          = hide ? 0 : 1;
            _canvasGroup.interactable   = hide ? false : true;
            _canvasGroup.blocksRaycasts = hide ? false : true;

            var   vectorCurPos = GraphicsManager.ScaleBack(_camera.ScreenToWorldPoint(Input.mousePosition));
            Point curPos       = vectorCurPos;

            _cursorPositionLabel.text = curPos.ToString();

            if (Input.GetMouseButton(0) && !EventSystem.current.IsPointerOverGameObject() && _map.CorrectPosition(curPos))
            {
                switch (_brushType)
                {
                case "surface":
                    _map[curPos].Surface = _brush;
                    break;

                case "objects":
                    _map[curPos].Obstacle = _brush;
                    break;

                case "waypoints":
                    _map[curPos].Waypoints = _wpBrush;
                    break;
                }

                switch (_brushType)
                {
                case "surface":
                case "objects":
                    _mapView.RegenerateChunk((vectorCurPos + Vector2.one / 2f) / GraphicsManager.ChunkSize - Vector2.one / 2f);
                    break;

                case "waypoints":
                    _waypointsView.RegenerateChunk((vectorCurPos + Vector2.one / 2f) / GraphicsManager.ChunkSize - Vector2.one / 2f);
                    break;
                }
            }

            if (Input.GetKeyDown(KeyCode.E)) //rotate waypoint cw
            {
                Direction newBrush = Direction.None;
                foreach (var dir in _wpBrush.Enumerate())
                {
                    switch (dir)
                    {
                    case Direction.North: newBrush = newBrush.AddFlag(Direction.East); break;

                    case Direction.East: newBrush = newBrush.AddFlag(Direction.South); break;

                    case Direction.South: newBrush = newBrush.AddFlag(Direction.West); break;

                    case Direction.West: newBrush = newBrush.AddFlag(Direction.North); break;
                    }
                }
                _wpBrush = newBrush;
                ShowBrush();
            }
            if (Input.GetKeyDown(KeyCode.Q)) //rotate waypoint ccw
            {
                Direction newBrush = Direction.None;
                foreach (var dir in _wpBrush.Enumerate())
                {
                    switch (dir)
                    {
                    case Direction.North: newBrush = newBrush.AddFlag(Direction.West); break;

                    case Direction.West: newBrush = newBrush.AddFlag(Direction.South); break;

                    case Direction.South: newBrush = newBrush.AddFlag(Direction.East); break;

                    case Direction.East: newBrush = newBrush.AddFlag(Direction.North); break;
                    }
                }
                _wpBrush = newBrush;
                ShowBrush();
            }
        }