#include <iostream>
#include "refl/refl.h"
using namespace std;
using namespace refl;
struct vec3_parent {
	virtual int norm(int x1, int& x2) {
		x2 = x1 * x2;
		return x2;
		//cout << x2 << "vec3_parent::norm" << endl;
	}
};
struct vec3 : public vec3_parent {
	UPROPERTY_vk({ 1.f})
	float x = 1;
	UPROPERTY_dx({ 2.f})
	int y = 2;
	UPROPERTY({ 5.f})
	uint32_t z = 3;
	UPROPERTY({ "hello meta"})
	string name = "???a";
	USING_OVERLOAD_CTOR(vec3)
	UFUNCTION({},ref = USING_CTOR_NAME)
	vec3() {
	}
	USING_OVERLOAD_CTOR(vec3,float, int , uint32_t)
	UFUNCTION({1, 2.f, 3.f}, ref = USING_CTOR_NAME)
	vec3(float x1, int y1, uint32_t z1) {
		x = x1;
		y = y1;
		z = z1;
	}
	UFUNCTION()
	vec3 make() {
		return vec3{};
	}
};
#include "vertex_gen.inl"