Add vector 2i
This commit is contained in:
parent
409f6d407b
commit
b034b2b388
1 changed files with 120 additions and 0 deletions
120
src/main/java/dev/zontreck/libzontreck/vectors/Vector2i.java
Normal file
120
src/main/java/dev/zontreck/libzontreck/vectors/Vector2i.java
Normal file
|
@ -0,0 +1,120 @@
|
|||
package dev.zontreck.libzontreck.vectors;
|
||||
|
||||
import dev.zontreck.libzontreck.exceptions.InvalidDeserialization;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.phys.Vec2;
|
||||
|
||||
public class Vector2i
|
||||
{
|
||||
public static final Vector2i ZERO = new Vector2i(0, 0);
|
||||
|
||||
public int x;
|
||||
public int y;
|
||||
|
||||
public Vec2 asMinecraftVector(){
|
||||
return new Vec2(x, y);
|
||||
}
|
||||
|
||||
public Vector2i()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Vector2i(int x, int y)
|
||||
{
|
||||
this.x=x;
|
||||
this.y=y;
|
||||
}
|
||||
|
||||
public Vector2i(Vec2 pos)
|
||||
{
|
||||
x= (int) Math.floor(pos.x);
|
||||
y=(int)Math.floor(pos.y);
|
||||
}
|
||||
|
||||
public Vector2i(String pos) throws InvalidDeserialization
|
||||
{
|
||||
// This will be serialized most likely from the ToString method
|
||||
// Parse
|
||||
if(pos.startsWith("<"))
|
||||
{
|
||||
pos=pos.substring(1, pos.length()-1); // Rip off the ending bracket too
|
||||
String[] positions = pos.split(", ");
|
||||
if(positions.length!=2)
|
||||
{
|
||||
positions = pos.split(",");
|
||||
}
|
||||
|
||||
if(positions.length!=2)
|
||||
{
|
||||
throw new InvalidDeserialization("Positions must be in the same format provided by ToString() (ex. <1,1> or <1, 1>");
|
||||
}
|
||||
|
||||
this.x = Integer.parseInt(positions[0]);
|
||||
this.y = Integer.parseInt(positions[1]);
|
||||
// We are done now
|
||||
}
|
||||
}
|
||||
|
||||
public Vector2i Clone()
|
||||
{
|
||||
Vector2i n = new Vector2i(x, y);
|
||||
return n;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "<"+String.valueOf(x)+", "+String.valueOf(y) + ">";
|
||||
}
|
||||
|
||||
|
||||
public CompoundTag serialize()
|
||||
{
|
||||
CompoundTag tag = new CompoundTag();
|
||||
tag.putFloat("x", x);
|
||||
tag.putFloat("y", y);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
public Vector2i(CompoundTag tag) {
|
||||
this.deserialize(tag);
|
||||
}
|
||||
public void deserialize(CompoundTag tag)
|
||||
{
|
||||
x=tag.getInt("x");
|
||||
y=tag.getInt("y");
|
||||
}
|
||||
|
||||
public boolean same(Vector2i other)
|
||||
{
|
||||
if(x == other.x && y==other.y)return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean inside(Vector2i point1, Vector2i point2)
|
||||
{
|
||||
if(point1.x <= x && point2.x >= x){
|
||||
if(point1.y <= y && point2.y >= y)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean greater(Vector2i other)
|
||||
{
|
||||
return ((x>other.x) && (y>other.y));
|
||||
}
|
||||
public boolean less(Vector2i other)
|
||||
{
|
||||
return ((x>other.x) && (y>other.y));
|
||||
}
|
||||
public boolean equal(Vector2i other)
|
||||
{
|
||||
return same(other);
|
||||
}
|
||||
}
|
Reference in a new issue