aboutsummaryrefslogtreecommitdiff
path: root/azalea-physics/src/collision/mergers.rs
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2024-02-26 00:55:27 -0600
committermat <git@matdoes.dev>2024-02-26 00:55:46 -0600
commit4f288b1c031065805f5eb11362fe762f2e295c12 (patch)
tree4c860b357b1d999d138bb218e62e29ef5e953dd6 /azalea-physics/src/collision/mergers.rs
parente47dee388e1e7f051417244ab1c054f8b9acd755 (diff)
downloadazalea-drasl-4f288b1c031065805f5eb11362fe762f2e295c12.tar.xz
optimize physics a bit more
Diffstat (limited to 'azalea-physics/src/collision/mergers.rs')
-rwxr-xr-xazalea-physics/src/collision/mergers.rs54
1 files changed, 28 insertions, 26 deletions
diff --git a/azalea-physics/src/collision/mergers.rs b/azalea-physics/src/collision/mergers.rs
index 69ae2ab5..c43412d1 100755
--- a/azalea-physics/src/collision/mergers.rs
+++ b/azalea-physics/src/collision/mergers.rs
@@ -1,4 +1,4 @@
-use std::cmp::Ordering;
+use std::cmp::{self, Ordering};
use super::CubePointRange;
use azalea_core::math::{gcd, lcm, EPSILON};
@@ -135,27 +135,27 @@ impl IndexMerger {
}
}
- pub fn new_indirect(var1: &[f64], var2: &[f64], var3: bool, var4: bool) -> Self {
+ pub fn new_indirect(coords1: &[f64], coords2: &[f64], var3: bool, var4: bool) -> Self {
let mut var5 = f64::NAN;
- let var7 = var1.len();
- let var8 = var2.len();
- let var9 = var7 + var8;
- let mut result = vec![0.0; var9];
- let mut first_indices: Vec<isize> = vec![0; var9];
- let mut second_indices: Vec<isize> = vec![0; var9];
+ let coords1_len = coords1.len();
+ let coords2_len = coords2.len();
+ let number_of_indices = coords1_len + coords2_len;
+ let mut result = vec![0.0; number_of_indices];
+ let mut first_indices: Vec<isize> = vec![0; number_of_indices];
+ let mut second_indices: Vec<isize> = vec![0; number_of_indices];
let var10 = !var3;
let var11 = !var4;
let mut var12 = 0;
- let mut var13 = 0;
- let mut var14 = 0;
+ let mut coords1_index = 0;
+ let mut coords2_index = 0;
loop {
- let mut var17: bool;
+ let mut iterating_coords1: bool;
loop {
- let var15 = var13 >= var7;
- let var16 = var14 >= var8;
- if var15 && var16 {
- let result_length = std::cmp::max(1, var12);
+ let at_end_of_coords1 = coords1_index >= coords1_len;
+ let at_end_of_coords2 = coords2_index >= coords2_len;
+ if at_end_of_coords1 && at_end_of_coords2 {
+ let result_length = cmp::max(1, var12);
return Self::Indirect {
result,
first_indices,
@@ -164,26 +164,28 @@ impl IndexMerger {
};
}
- var17 = !var15 && (var16 || var1[var13] < var2[var14] + EPSILON);
- if var17 {
- var13 += 1;
- if !var10 || var14 != 0 && !var16 {
+ iterating_coords1 = !at_end_of_coords1
+ && (at_end_of_coords2
+ || coords1[coords1_index] < coords2[coords2_index] + EPSILON);
+ if iterating_coords1 {
+ coords1_index += 1;
+ if !var10 || coords2_index != 0 && !at_end_of_coords2 {
break;
}
} else {
- var14 += 1;
- if !var11 || var13 != 0 && !var15 {
+ coords2_index += 1;
+ if !var11 || coords1_index != 0 && !at_end_of_coords1 {
break;
}
}
}
- let var18: isize = (var13 as isize) - 1;
- let var19: isize = (var14 as isize) - 1;
- let var20 = if var17 {
- var1[TryInto::<usize>::try_into(var18).unwrap()]
+ let var18: isize = (coords1_index as isize) - 1;
+ let var19: isize = (coords2_index as isize) - 1;
+ let var20 = if iterating_coords1 {
+ coords1[usize::try_from(var18).unwrap()]
} else {
- var2[TryInto::<usize>::try_into(var19).unwrap()]
+ coords2[usize::try_from(var19).unwrap()]
};
match var5.partial_cmp(&(var20 - EPSILON)) {
None | Some(Ordering::Less) => {