#pragma once class float_vec2 { public: float x, y; float_vec2 operator+(float_vec2 vec) { return { x + vec.x, y + vec.y }; } float_vec2 operator*(float v) { return { x * v, y * v }; } float_vec2 operator*(float_vec2 vec) { return { x * vec.x, y * vec.y }; } float_vec2 operator-(float_vec2 vec) { return { x - vec.x, y - vec.y }; } float_vec2 operator-(float v) { return { x - v, y - v }; } }; class int_vec2 { public: int x, y; int_vec2 operator+(int_vec2 vec) { return { x + vec.x, y + vec.y }; } int_vec2 operator*(int v) { return { x * v, y * v }; } int_vec2 operator*(int_vec2 vec) { return { x * vec.x, y * vec.y }; } int_vec2 operator-(int_vec2 vec) { return { x - vec.x, y - vec.y }; } };