/// <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 }
/// <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 }