+
+ if (pick) {
+ if (outline_visible) {
+ place_id = chunk.BlockAt(blkid).type->id;
+ }
+ pick = false;
+ }
+ if (remove) {
+ chunk.BlockAt(blkid).type = blockType[remove_id];
+ chunk.Invalidate();
+ remove = false;
+ }
+ if (place) {
+ if (outline_visible) {
+ int next_blkid = Chunk::ToIndex(Chunk::ToCoords(blkid) + normal);
+ if (next_blkid >= 0 && next_blkid < Chunk::Size()) {
+ chunk.BlockAt(next_blkid).type = blockType[place_id];
+ chunk.Invalidate();
+ }
+ }
+ place = false;
+ }