cc-haxe/src/lib/Pos.hx
2022-12-19 21:06:23 +01:00

47 lines
770 B
Haxe

package lib;
import lib.Vec.Vec2;
/**
Reporesents a Point in a 2D `Int` System.
Basicly a wrapper for Vec2<Int> with some extra functions.
**/
@:forward(x,y)
abstract Pos(Vec2<Int>) from Vec2<Int> to Vec2<Int>{
inline public function new(i:Vec2<Int>) {
this = i;
}
@:op(A + B)
public function add(rhs: Vec2<Int>):Pos {
return new Pos({
y: this.y + rhs.y,
x: this.x + rhs.x,
});
}
@:op(A - B)
public function sub(rhs: Vec2<Int>):Pos {
return new Pos({
y: this.y - rhs.y,
x: this.x - rhs.x,
});
}
@:op(A * B)
public function multiply(rhs: Vec2<Int>): Pos {
return new Pos({
y: this.y * rhs.y,
x: this.x * rhs.x,
});
}
@:op(-A)
public function negate(): Pos {
return new Pos({
y: -this.y,
x: -this.x,
});
}
}