private void ModeChanged() { if (oldMode != editMode) { switch (editMode) { case LevelEditMode.Add: _selectionTile.UpdateSelectionMaterials(brush, ADD_COLOR); ChangeTilemapLayer(ignoreLayer); break; case LevelEditMode.Delete: _selectionTile.UpdateSelectionMaterials(brush, REM_COLOR); ChangeTilemapLayer(ignoreLayer); break; case LevelEditMode.None: _selectionTile.UpdateSelectionMaterials(brush, INV_COLOR); ChangeTilemapLayer(defaultLayer); break; } } oldMode = editMode; }
private void OnSceneGui(SceneView sv) { DrawControls(); tileMap = FindObjectOfType <QuadTileMap>(); _selectionTile.gameObject.SetActive(editMode != LevelEditMode.None); Event e = Event.current; // Convert mouse position to world position by finding point where y = 0. Ray ray = HandleUtility.GUIPointToWorldRay(e.mousePosition); Vector3 pos = ray.origin - (ray.origin.y / ray.direction.y) * ray.direction; Vector3 snappedPosition = QuadTileMap.GetPositionClosestTo(pos); _selectionTile.transform.position = snappedPosition; _selectionTile.UpdateHeight(height); ModeChanged(); int controlId = GUIUtility.GetControlID(FocusType.Passive); if (e.GetTypeForControl(controlId) == EventType.ScrollWheel && e.control) { if (e.delta.y > 0) { DecreaseHeight(); } else if (e.delta.y < 0) { IncreaseHeight(); } e.Use(); } if (e.GetTypeForControl(controlId) == EventType.KeyDown && e.control) { switch (e.keyCode) { case NON_KEY: editMode = LevelEditMode.None; break; case ADD_KEY: editMode = LevelEditMode.Add; break; case REM_KEY: editMode = LevelEditMode.Delete; break; } e.Use(); Repaint(); } if (e.GetTypeForControl(controlId) == EventType.MouseDown) { if (e.button == 0) { switch (editMode) { case LevelEditMode.Add: tileMap.AddTile(snappedPosition, brush, height); break; case LevelEditMode.Delete: tileMap.DeleteTile(snappedPosition); break; case LevelEditMode.None: return; } } } lastSnappedPosition = snappedPosition; }
// Update is called once per frame void Update() { Touch[] touches = Input.touches; if (editMode == LevelEditMode.Build) { if (!UIManager.isUIActive && touches.Length <= 1) { HandlePaint(); } if (Input.GetMouseButton(1) && !UIManager.isUIActive) { cameraManager.MoveCamera(); } } if (Input.GetKeyDown("p")) { if (editMode == LevelEditMode.Build) { EditMode = LevelEditMode.Test; } else if (editMode == LevelEditMode.Test) { EditMode = LevelEditMode.Build; } } if (Input.GetKeyDown("1")) { blockToPaint = Level.BlockType.Empty; } if (Input.GetKeyDown("2")) { blockToPaint = Level.BlockType.Dirt; } if (Input.GetKeyDown("3")) { blockToPaint = Level.BlockType.GrassedDirt; } if (Input.GetKeyDown("4")) { blockToPaint = Level.BlockType.Spring; } if (Input.GetKeyDown("5")) { blockToPaint = Level.BlockType.Bomber; } if (Input.GetKeyDown("6")) { blockToPaint = Level.BlockType.Flame; } if (Input.GetKeyDown("7")) { blockToPaint = Level.BlockType.Water; } }