public override void Launch(EditMain _editmain) { base.Launch(_editmain); Util.FindIfNotSet(this, ref terrain); Util.FindIfNotSet(this, ref terrainRendering); Util.FindIfNotSet(this, ref undoStack); Util.FindIfNotSet(this, ref createTerrainPreview); editTerrainTool.Setup(); terrainToolSettings = editMain.GetTerrainSidebar(); terrainToolSettings.onModeChange = SetMode; terrainToolSettings.onShapeChange = SetShape; terrainToolSettings.onDirectionChange = SetDirection; terrainToolSettings.onEditCopy = editTerrainTool.CopySelection; terrainToolSettings.onEditPaint = editTerrainTool.PaintSelection; terrainToolSettings.onEditDelete = editTerrainTool.DeleteSelection; terrainToolSettings.RequestOpen(); SetMode(terrainToolSettings.GetMode()); SetShape(terrainToolSettings.GetBlockShape()); SetDirection(terrainToolSettings.GetBlockDirection()); createTerrainPreview.SetTint(editMain.GetAvatarTint()); createToolRay.SetLocalRayOriginTransform(emissionAnchor); createToolRay.SetTint(editMain.GetAvatarTint()); editMain.SetCameraFollowingActor(false); editMain.TryEscapeOutOfCameraView(); RefreshPreviewVisibility(); }
void EndCreate() { operating = false; HashSet <Util.Tuple <Cell, CellValue> > copyOfCandidates = new HashSet <Util.Tuple <Cell, CellValue> >(operationCandidates); TerrainManager.CellValue cellValue = new TerrainManager.CellValue( terrainToolSettings.GetBlockShape(), terrainToolSettings.GetBlockDirection(), terrainToolSettings.GetBlockStyle()); undoStack.Push(new UndoStack.Item { actionLabel = $"Creating blocks", getUnableToDoReason = () => null, getUnableToUndoReason = () => null, doIt = () => CreateCellsWithOneValue(copyOfCandidates, cellValue), undo = () => CreateCells(copyOfCandidates) }); createTerrainPreview.ClearCreationPreview(); operationCandidates.Clear(); }