summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDennis Kobert <d-kobert@web.de>2019-06-21 23:57:15 +0200
committerDennis Kobert <d-kobert@web.de>2019-06-21 23:57:15 +0200
commit5522731ec4de8741f923b339ca942f8aaff2a338 (patch)
tree0b2c4724f0c75d09ee8b86f397bf6602a899e825
parent4e0037169db5d0c7d824debedb5513b69676506a (diff)
Fix changed Method names and minor compiler warnings
-rw-r--r--webhogg/game_server/src/collide.rs24
1 files changed, 12 insertions, 12 deletions
diff --git a/webhogg/game_server/src/collide.rs b/webhogg/game_server/src/collide.rs
index 44ab311..940cffd 100644
--- a/webhogg/game_server/src/collide.rs
+++ b/webhogg/game_server/src/collide.rs
@@ -25,8 +25,8 @@ impl Collide<AABox> for AABox {
impl Collide<Vec2> for RBox {
fn collides(&self, other: &Vec2) -> bool {
- let v1_diff = *other + self.v1 * (-self.v1.scalar(&(*other - self.pos)) / self.v1.distance2());
- let v2_diff = *other + self.v2 * (-self.v2.scalar(&(*other - self.pos)) / self.v2.distance2());
+ let v1_diff = *other + self.v1 * (-self.v1.dot(&(*other - self.pos)) / self.v1.norm2());
+ let v2_diff = *other + self.v2 * (-self.v2.dot(&(*other - self.pos)) / self.v2.norm2());
let v1_dist = ((v1_diff - self.pos) / self.v2).x;
let v2_dist = ((v2_diff - self.pos) / self.v1).x;
@@ -42,16 +42,16 @@ impl Collide<AABox> for RBox {
let other_size = other.pos + other.size;
// project points onto a orthogonal line
- let v1_diff = other.pos + self.v1 * (-self.v1.scalar(&(other.pos - self.pos)) / self.v1.distance2());
- let v2_diff = other.pos + self.v2 * (-self.v2.scalar(&other.pos) / self.v2.distance2());
- let v1_diff_size = other_size + self.v1 * (-self.v1.scalar(&(other_size - self.pos)) / self.v1.distance2());
- let v2_diff_size = other_size + self.v2 * (-self.v2.scalar(&(other_size - self.pos)) / self.v2.distance2());
+ let v1_diff = other.pos + self.v1 * (-self.v1.dot(&(other.pos - self.pos)) / self.v1.norm2());
+ let v2_diff = other.pos + self.v2 * (-self.v2.dot(&other.pos) / self.v2.norm2());
+ let v1_diff_size = other_size + self.v1 * (-self.v1.dot(&(other_size - self.pos)) / self.v1.norm2());
+ let v2_diff_size = other_size + self.v2 * (-self.v2.dot(&(other_size - self.pos)) / self.v2.norm2());
- // calculate the distance
- let v1_dist = ((v1_diff - self.pos) / self.v2);
- let v2_dist = ((v2_diff - self.pos) / self.v1);
- let v1_dist_size = ((v1_diff_size - self.pos) / self.v2);
- let v2_dist_size = ((v2_diff_size - self.pos) / self.v1);
+ // calculate the norm
+ let v1_dist = (v1_diff - self.pos) / self.v2;
+ let v2_dist = (v2_diff - self.pos) / self.v1;
+ let v1_dist_size = (v1_diff_size - self.pos) / self.v2;
+ let v2_dist_size = (v2_diff_size - self.pos) / self.v1;
let v1_dist = if v1_dist.x.is_finite() {v1_dist.x} else {v1_dist.y};
let v2_dist = if v2_dist.x.is_finite() {v2_dist.x} else {v2_dist.y};
@@ -150,7 +150,7 @@ impl<S, T: Collide<S>> Collide<S> for Vec<T> {
}
#[test]
- fn test_collide_Rbox_dot() {
+ fn test_collide_rbox_dot() {
let a = Vec2{x: 1.0, y: 1.0};
let b = Vec2{x: 1.0, y: 1.0};
let c = Vec2{x: 1.0, y: -1.0};