Ejemplo n.º 1
0
    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();
    }
Ejemplo n.º 2
0
    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();
    }