void subtract0(float x, float z){ ushort a = 0; foreach(p; parts){ if(p.x0 < x < p.x1 && p.z0 < z < p.z1){ Log.write("1"); add(p.heightmap.subImage(p.heightmap.getHeight(), 0, 0, cast(int)(x/p.x1*p.heightmap.getWidth())), p.node.getModel().getMesh(0).getMaterial(), p.x0, p.z0, x, p.z1); Log.write("2"); add(p.heightmap.subImage(p.heightmap.getHeight, cast(int)(x/p.x1*p.heightmap.getWidth()), cast(int)(z/p.z1*p.heightmap.getHeight()), p.heightmap.getHeight()), p.node.getModel().meshes[0].getMaterial(), x, z, p.x1, p.z1); Log.write("3"); add(p.heightmap.subImage(cast(int)(z/p.z1*p.heightmap.getHeight()), cast(int)(x/p.x1*p.heightmap.getWidth()), 0, p.heightmap.getWidth()), p.node.getModel().meshes[0].getMaterial(), x, p.z0, p.x1, z); p.node.remove(); Log.write("4"); if(a == 0) parts = parts[(a+1)..$]; else parts = parts[0..a-1] ~ parts[(a+1)..$]; break; } a++; } }