All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mmb.engine.Vector2iconst Maven / Gradle / Ivy

Go to download

Dependency for the MultiMachineBuilder, a voxel game about building an industrial empire in a finite world. THIS RELEASE IS NOT PLAYABLE. To play the game, donwload from >ITCH.IO LINK HERE< or >GH releases link here<

The newest version!
/**
 * 
 */
package mmb.engine;

import java.nio.ByteBuffer;
import java.nio.IntBuffer;

import org.joml.Vector2i;
import org.joml.Vector2ic;

import mmb.Nil;

/**
 * A reado-only 2-component integer vector
 * @author oskar
 *
 */
public class Vector2iconst implements Vector2ic {
	public final int x;
	public final int y;
	/**
	 * Creates a vector
	 * @param x X coordinate
	 * @param y Y coordinate
	 */
	public Vector2iconst(int x, int y) {
		this.x = x;
		this.y = y;
	}
	/**
	 * Creates a vector
	 * @param vector source vector
	 */
	public Vector2iconst(Vector2ic vector) {
		x = vector.x();
		y = vector.y();
	}

	@Override
	public Vector2i absolute(Vector2i dest) {
		return dest.set(Math.abs(x), Math.abs(y));
	}

	@Override
	public Vector2i add(Vector2ic sum, Vector2i dest) {
		return add(sum.x(), sum.y(), dest);
	}

	@Override
	public Vector2i add(int X, int Y, Vector2i dest) {
		return dest.set(X+x, Y+y);
	}

	@Override
	public double distance(Vector2ic v) {
		return Math.sqrt(distanceSquared(v.x(), v.y()));
	}

	@Override
	public double distance(int x, int y) {
		return Math.sqrt(distanceSquared(x, y));
	}

	@Override
	public long distanceSquared(Vector2ic v) {
		return distanceSquared(v.x(), v.y());
	}

	@Override
	public long distanceSquared(int X, int Y) {
		return Vector2i.distanceSquared(x, y, X, Y);
	}

	@Override
	public boolean equals(int X, int Y) {
		return x == X && y == Y;
	}

	@Override
	public ByteBuffer get(ByteBuffer buffer) {
		buffer.putInt(x);
		buffer.putInt(y);
		return buffer;
	}

	@Override
	public IntBuffer get(IntBuffer buffer) {
		buffer.put(x);
		return buffer.put(y);
	}

	@Override
	public int get(int i) throws IllegalArgumentException {
		switch(i) {
		case 0:
			return x;
		case 1:
			return y;
		default:
			throw new IllegalArgumentException("Expected 0 or 1 as index, got "+i);
		}
	}

	@Override
	public ByteBuffer get(int index, ByteBuffer buffer) {
		buffer.putInt(index, x);
		return buffer.putInt(index+4, y);
	}

	@Override
	public IntBuffer get(int index, IntBuffer buffer) {
		buffer.put(index, x);
		return buffer.put(index+1, y);
	}

	@Override
	public Vector2ic getToAddress(long arg0) {
		new Vector2i(this).getToAddress(arg0);
		return this;
	}

	@Override
	public long gridDistance(Vector2ic v) {
		return gridDistance(v.x(), v.y());
	}

	@Override
	public long gridDistance(int xx, int yy) {
		return Long.sum(Math.abs(x-xx), Math.abs(y-yy));
	}

	@Override
	public double length() {
		return Math.sqrt(lengthSquared());
	}

	@Override
	public long lengthSquared() {
		return (Math.multiplyFull(x, x))+(Math.multiplyFull(y, y));
	}

	@Override
	public Vector2i max(Vector2ic other, Vector2i dest) {
		dest.x = Math.max(other.x(), x);
		dest.y = Math.max(other.y(), y);
		return dest;
	}

	@Override
	public int maxComponent() {
		return Math.max(x, y);
	}

	@Override
	public Vector2i min(Vector2ic other, Vector2i dest) {
		dest.x = Math.min(other.x(), x);
		dest.y = Math.min(other.y(), y);
		return dest;
	}

	@Override
	public int minComponent() {
		return Math.min(x, y);
	}

	@Override
	public Vector2i mul(int n, Vector2i dest) {
		dest.x = x*n;
		dest.y = y*n;
		return dest;
	}

	@Override
	public Vector2i mul(Vector2ic mul, Vector2i dest) {
		return mul(mul.x(), mul.y(), dest);
	}

	@Override
	public Vector2i mul(int xx, int yy, Vector2i dest) {
		dest.x = x*xx;
		dest.y = y*yy;
		return dest;
	}

	@Override
	public Vector2i negate(Vector2i dest) {
		dest.x = -x;
		dest.y = -y;
		return dest;
	}

	@Override
	public Vector2i sub(Vector2ic sub, Vector2i dest) {
		return sub(sub.x(), sub.y(), dest);
	}

	@Override
	public Vector2i sub(int xx, int yy, Vector2i dest) {
		dest.x = x-xx;
		dest.y = y-yy;
		return dest;
	}

	@Override
	public int x() {
		return x;
	}

	@Override
	public int y() {
		return y;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + x;
		result = prime * result + y;
		return result;
	}
	@Override
	public boolean equals(@Nil Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof Vector2ic))
			return false;
		Vector2ic other = (Vector2ic) obj;
		if (x != other.x())
			return false;
		return y == other.y();
	}
	@Override
	public Vector2i div(float scalar, Vector2i dest) {
		dest.x = (int) (x/scalar);
		dest.y = (int) (y/scalar);
		return dest;
	}
	@Override
	public Vector2i div(int scalar, Vector2i dest) {
		dest.x = x/scalar;
		dest.y = y/scalar;
		return dest;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy