public TilemapModifyCommand(string title, Tilemap changedTilemap, TileBlock.StateData oldState, TileBlock.StateData newState) : base(title) { this.changedTilemap = changedTilemap; this.oldState = oldState; this.newState = newState; }
public void OnMouseButtonPress(Vector mousePos, int button, ModifierType Modifiers) { if (application.CurrentTilemap == null) { return; } UpdateMouseTilePos(mousePos); if (button == 1) { if (selecting) //both buttons => cancel selection { selecting = false; selection.Resize(0, 0, 0); selection.FireChangedEvent(); } else { // save backup of Tilemap tilemapBackup = application.CurrentTilemap.SaveState(); EditorAction(Modifiers); //Call editor-specific part of code LastDrawPos = MouseTilePos; drawing = true; Redraw(); } } if (button == 3) { if (drawing) //both buttons => cancel drawing { drawing = false; application.CurrentTilemap.RestoreState(tilemapBackup); } else { if (MouseTilePos.X < 0 || MouseTilePos.Y < 0 || MouseTilePos.X >= application.CurrentTilemap.Width || MouseTilePos.Y >= application.CurrentTilemap.Height) { return; } SelectStartPos = MouseTilePos; selecting = true; UpdateSelection(); Redraw(); } } }
public TilemapData(TileBlock.StateData OldState, Tilemap Tilemap) { this.OldState = OldState; this.Tilemap = Tilemap; }
public void OnMouseButtonPress(Vector mousePos, int button, ModifierType Modifiers) { if (application.CurrentTilemap == null) return; UpdateMouseTilePos(mousePos); LastDrawPos = MouseTilePos; if(button == 3) { if (state == State.DRAWING) { //both buttons => cancel drawing state = State.NONE; application.CurrentTilemap.RestoreState(tilemapBackup); } else { if(MouseTilePos.X < 0 || MouseTilePos.Y < 0 || MouseTilePos.X >= application.CurrentTilemap.Width || MouseTilePos.Y >= application.CurrentTilemap.Height) return; SelectStartPos = MouseTilePos; state = State.SELECTING; UpdateSelection(); } } else if(button == 1) { if (state == State.DRAWING) { //both buttons => cancel selection state = State.NONE; selection.Resize(0, 0, 0); selection.FireChangedEvent(); } else { // save backup of Tilemap tilemapBackup = application.CurrentTilemap.SaveState(); if((Modifiers & ModifierType.ShiftMask) != 0) { if(MouseTilePos.X < 0 || MouseTilePos.Y < 0 || MouseTilePos.X >= application.CurrentTilemap.Width || MouseTilePos.Y >= application.CurrentTilemap.Height) return; SelectStartPos = MouseTilePos; state = State.FILLING; UpdateSelection(); } else { PerformActionBetweenPoints(LastDrawPos, MouseTilePos, Modifiers); state = State.DRAWING; } } } Redraw(); }
public void OnMouseButtonPress(Vector mousePos, int button, ModifierType Modifiers) { if (application.CurrentTilemap == null) { return; } UpdateMouseTilePos(mousePos); LastDrawPos = MouseTilePos; if (button == 3) { if (state == State.DRAWING) //both buttons => cancel drawing { state = State.NONE; application.CurrentTilemap.RestoreState(tilemapBackup); } else { if (MouseTilePos.X < 0 || MouseTilePos.Y < 0 || MouseTilePos.X >= application.CurrentTilemap.Width || MouseTilePos.Y >= application.CurrentTilemap.Height) { return; } SelectStartPos = MouseTilePos; state = State.SELECTING; UpdateSelection(); } } else if (button == 1) { if (state == State.DRAWING) //both buttons => cancel selection { state = State.NONE; selection.Resize(0, 0, 0); selection.FireChangedEvent(); } else { // save backup of Tilemap tilemapBackup = application.CurrentTilemap.SaveState(); if ((Modifiers & ModifierType.ShiftMask) != 0) { if (MouseTilePos.X < 0 || MouseTilePos.Y < 0 || MouseTilePos.X >= application.CurrentTilemap.Width || MouseTilePos.Y >= application.CurrentTilemap.Height) { return; } SelectStartPos = MouseTilePos; state = State.FILLING; UpdateSelection(); } else { PerformActionBetweenPoints(LastDrawPos, MouseTilePos, Modifiers); state = State.DRAWING; } } } Redraw(); }