Example #1
0
        /// <inheritdoc/>
        public override void Apply(Vector2 terrainCoords, TerrainBrush brush)
        {
            // Calculate top-left point of area to modify
            var offset = new Point(
                (int)Math.Round(terrainCoords.X / Terrain.Size.StretchH) - brush.Size / 2,
                (int)Math.Round(terrainCoords.Y / Terrain.Size.StretchH) - brush.Size / 2);

            var oldData = new byte[brush.Size, brush.Size];
            var newData = new byte[brush.Size, brush.Size];
            ModifyTerrain(offset, brush, oldData, newData);

            OldData.AddFirst(offset, oldData);
            NewData.AddLast(offset, newData);
            _engineTerrain.ModifyHeight(offset, newData); // Live-update engine terrain
        }
Example #2
0
        /// <inheritdoc/>
        public override void Apply(Vector2 terrainCoords, TerrainBrush brush)
        {
            // Handle texture 3x scale and calculate top-left point of area to modify
            brush = new TerrainBrush(brush.Size / 3, brush.Circle);
            var offset = new Point(
                (int)Math.Round(terrainCoords.X / Terrain.Size.StretchH / 3) - brush.Size / 2,
                (int)Math.Round(terrainCoords.Y / Terrain.Size.StretchH / 3) - brush.Size / 2);

            var oldData = new byte[brush.Size, brush.Size];
            var newData = new byte[brush.Size, brush.Size];

            if (!ModifyTerrain(offset, brush, oldData, newData))
            {
                return;
            }

            OldData.AddFirst(offset, oldData);
            NewData.AddLast(offset, newData);
            _refreshHandler(); // Live-rebuild engine terrain
        }