function __vertex(_x = 0, _y = _x, _z = _x, color = c_white, alpha = 1) constructor {
	x = _x;
	y = _y;
	z = _z;
	
	nx = 0;
	ny = 0;
	nz = 0;
	
	u = 0;
	v = 0;
	
	self.color    = color;
	self.alpha    = alpha;
	
	static set = function(_x, _y, _z, _nx, _ny, _nz, _u, _v) {
		INLINE
		
		x = _x;
		y = _y;
		z = _z;
		
		nx = _nx;
		ny = _ny;
		nz = _nz;
		
		u = _u;
		v = _v;
		
		return self;
	}
	
	static setNormal = function(_nx = 0, _ny = _nx, _nz = _nx) {
		INLINE
		
		nx = _nx;
		ny = _ny;
		nz = _nz;
		
		return self;
	}
	
	static setUV = function(_u = 0, _v = _u) {
		INLINE
		
		u = _u;
		v = _v;
		
		return self;
	}
	
	static toString = function() { return $"[__vertex] ( pos: ({x}, {y}, {z}), nor: ({nx}, {ny}, {nz}), uv: ({u}, {v}), {color}, {alpha} )"; }
	
	static clone = function() {
		INLINE
		var _v = new __vertex(x, y, z, color, alpha);
		
		_v.nx = nx;
		_v.ny = ny;
		_v.nz = nz;
		
		_v.u  = u;
		_v.v  = v;
		
		return _v;
	}
}