diff options
Diffstat (limited to 'src/sim/materials')
| -rw-r--r-- | src/sim/materials/water.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/sim/materials/water.rs b/src/sim/materials/water.rs index 65782dd..d76ec5b 100644 --- a/src/sim/materials/water.rs +++ b/src/sim/materials/water.rs @@ -25,6 +25,17 @@ pub fn sim_update(ctx: &mut UpdateCtx) { return; } + // if we can't move left, just move right + if !can_move_left { + ctx.candidates_swap(&[(1, 0)]); + return; + } + // and vice versa + if !can_move_right { + ctx.candidates_swap(&[(-1, 0)]); + return; + } + // find the closest hole within 20 pixels (TODO optimize) // a hole is any space below us with a lesser density // prevents equidistance stuck state @@ -35,9 +46,6 @@ pub fn sim_update(ctx: &mut UpdateCtx) { } else { -starting_side }; - if (side == 1 && !can_move_right) || (side == -1 && !can_move_left) { - continue; - } let offset = side * (1 + i / 2); let hole_target = ctx.get_cell(offset, 1); |
