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); } } } } }
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(); } }