2025-11-24 22:52:51 +03:00

76 lines
2.2 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* com.mojang.serialization.Codec
*/
package net.minecraft.world.phys;
import com.mojang.serialization.Codec;
import java.util.List;
import net.minecraft.util.Mth;
import net.minecraft.util.Util;
public class Vec2 {
public static final Vec2 ZERO = new Vec2(0.0f, 0.0f);
public static final Vec2 ONE = new Vec2(1.0f, 1.0f);
public static final Vec2 UNIT_X = new Vec2(1.0f, 0.0f);
public static final Vec2 NEG_UNIT_X = new Vec2(-1.0f, 0.0f);
public static final Vec2 UNIT_Y = new Vec2(0.0f, 1.0f);
public static final Vec2 NEG_UNIT_Y = new Vec2(0.0f, -1.0f);
public static final Vec2 MAX = new Vec2(Float.MAX_VALUE, Float.MAX_VALUE);
public static final Vec2 MIN = new Vec2(Float.MIN_VALUE, Float.MIN_VALUE);
public static final Codec<Vec2> CODEC = Codec.FLOAT.listOf().comapFlatMap(input -> Util.fixedSize(input, 2).map(floats -> new Vec2(((Float)floats.get(0)).floatValue(), ((Float)floats.get(1)).floatValue())), vec -> List.of(Float.valueOf(vec.x), Float.valueOf(vec.y)));
public final float x;
public final float y;
public Vec2(float x, float y) {
this.x = x;
this.y = y;
}
public Vec2 scale(float s) {
return new Vec2(this.x * s, this.y * s);
}
public float dot(Vec2 v) {
return this.x * v.x + this.y * v.y;
}
public Vec2 add(Vec2 rhs) {
return new Vec2(this.x + rhs.x, this.y + rhs.y);
}
public Vec2 add(float v) {
return new Vec2(this.x + v, this.y + v);
}
public boolean equals(Vec2 rhs) {
return this.x == rhs.x && this.y == rhs.y;
}
public Vec2 normalized() {
float dist = Mth.sqrt(this.x * this.x + this.y * this.y);
return dist < 1.0E-4f ? ZERO : new Vec2(this.x / dist, this.y / dist);
}
public float length() {
return Mth.sqrt(this.x * this.x + this.y * this.y);
}
public float lengthSquared() {
return this.x * this.x + this.y * this.y;
}
public float distanceToSqr(Vec2 p) {
float xd = p.x - this.x;
float yd = p.y - this.y;
return xd * xd + yd * yd;
}
public Vec2 negated() {
return new Vec2(-this.x, -this.y);
}
}