MCPcopy Create free account
hub / github.com/cgsdev0/termsand / step_collapse

Method step_collapse

src/main.rs:792–831  ·  view source on GitHub ↗
(&mut self, pos: Vec2, up: Vec2, dir_right: Vec2)

Source from the content-addressed store, hash-verified

790 y: y as isize,
791 };
792 let up = pos + dir;
793 let dir_right = Vec2 {
794 x: -dir.y,
795 y: dir.x,
796 };
797 self.step_collapse(pos, up, dir_right);
798 self.step_fall(pos, up);
799 }
800 // everything that might slide, should slide
801 // for y in 0..self.height {
802 // let pos = Vec2 { x: x as isize, y: y as isize };
803 // let up = pos + dir;
804 // let dir_right = Vec2 {
805 // x: -dir.y,
806 // y: dir.x,
807 // };
808 // self.step_slide(pos, up, dir_right);
809 // }
810 }
811 }
812 }
813
814 fn step_fall(&mut self, pos: Vec2, up: Vec2) {
815 let Some(current) = self.get(pos) else { return };
816 let Some(cell_up) = self.get(up) else { return };
817 if !self.is_sand(cell_up) {
818 return;
819 }
820 if current.is_empty() && !self.is_static(cell_up) {
821 self.swap(pos, up);
822 }
823 }
824
825 fn step_collapse(&mut self, pos: Vec2, up: Vec2, dir_right: Vec2) {
826 let Some(current) = self.get(pos) else { return };
827 let Some(up_cell) = self.get(up) else { return };
828 if !current.is_empty() {
829 return;
830 }
831 let rand_choice = rand::random::<f32>();
832
833 let cell_left = self.get(pos - dir_right);
834 let cell_right = self.get(pos + dir_right);

Callers 1

stepMethod · 0.80

Calls 5

getMethod · 0.80
is_emptyMethod · 0.80
is_staticMethod · 0.80
is_sandMethod · 0.80
swapMethod · 0.80

Tested by

no test coverage detected