//This file was generated automatically
funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@);
enum key {
	A = 546,
	B = 547,
	C = 548,
	D = 549,
	E = 550,
	F = 551,
	G = 552,
	H = 553,
	I = 554,
	J = 555,
	K = 556,
	L = 557,
	M = 558,
	N = 559,
	O = 560,
	P = 561,
	Q = 562,
	R = 563,
	S = 564,
	T = 565,
	U = 566,
	V = 567,
	W = 568,
	X = 569,
	Y = 570,
	Z = 571,
	K0 = 536,
	K1 = 537,
	K2 = 538,
	K3 = 539,
	K4 = 540,
	K5 = 541,
	K6 = 542,
	K7 = 543,
	K8 = 544,
	K9 = 545,
	Tab = 512,
	Enter = 525,
	Escape = 526,
	Backspace = 523,
	Space = 524,
	Delete = 522,
	Insert = 521,
	Home = 519,
	End = 520,
	PageUp = 517,
	PageDown = 518,
	Right = 514,
	Up = 515,
	Down = 516,
	Left = 513,
	RightCtrl = 531,
	LeftShift = 528,
	RightShift = 532,
	LeftAlt = 529,
	RightAlt = 533,
	LeftSuper = 530,
	RightSuper = 534,
	LeftCtrl = 527,
	MouseLeft = 641,
	MouseRight = 642,
	MouseMiddle = 643
}
enum AssetType {
	None = 0,
	Shader = 2,
	Mesh = 1
}
class string {
	~string();
	string();
	string(const string&in);
	string& opAssign(const string&in);
	string& opAddAssign(const string&in);
	bool opEquals(const string&in) const;
	int opCmp(const string&in) const;
	string opAdd(const string&in) const;
	uint length() const;
	void resize(uint);
	bool isEmpty() const;
	uint8& opIndex(uint);
	const uint8& opIndex(uint) const;
	string& opAssign(double);
	string& opAddAssign(double);
	string opAdd(double) const;
	string opAdd_r(double) const;
	string& opAssign(float);
	string& opAddAssign(float);
	string opAdd(float) const;
	string opAdd_r(float) const;
	string& opAssign(int64);
	string& opAddAssign(int64);
	string opAdd(int64) const;
	string opAdd_r(int64) const;
	string& opAssign(uint64);
	string& opAddAssign(uint64);
	string opAdd(uint64) const;
	string opAdd_r(uint64) const;
	string& opAssign(bool);
	string& opAddAssign(bool);
	string opAdd(bool) const;
	string opAdd_r(bool) const;
	string substr(uint start = 0, int count = - 1) const;
	int findFirst(const string&in, uint start = 0) const;
	int findFirstOf(const string&in, uint start = 0) const;
	int findFirstNotOf(const string&in, uint start = 0) const;
	int findLast(const string&in, int start = - 1) const;
	int findLastOf(const string&in, int start = - 1) const;
	int findLastNotOf(const string&in, int start = - 1) const;
	void insert(uint pos, const string&in other);
	void erase(uint pos, int count = - 1);
}
class array<T> {
	funcdef bool less(const T&in a, const T&in b);
	T[]@ array(int&in);
	T[]@ array(int&in, uint length);
	T[]@ array(int&in, uint length, const T&in value);
	T& opIndex(uint index);
	const T& opIndex(uint index) const;
	T[]& opAssign(const T[]&in);
	void insertAt(uint index, const T&in value);
	void insertAt(uint index, const T[]&inout arr);
	void insertLast(const T&in value);
	void removeAt(uint index);
	void removeLast();
	void removeRange(uint start, uint count);
	uint length() const;
	void reserve(uint length);
	void resize(uint length);
	void sortAsc();
	void sortAsc(uint startAt, uint count);
	void sortDesc();
	void sortDesc(uint startAt, uint count);
	void reverse();
	int find(const T&in value) const;
	int find(uint startAt, const T&in value) const;
	int findByRef(const T&in value) const;
	int findByRef(uint startAt, const T&in value) const;
	bool opEquals(const T[]&in) const;
	bool isEmpty() const;
	void sort(T[]::less&in, uint startAt = 0, uint count = uint ( - 1 ));
	funcdef bool less(const T&in, const T&in);
}
class dictionaryValue {
	~dictionaryValue();
	dictionaryValue();
	dictionaryValue& opAssign(const dictionaryValue&in);
	dictionaryValue& opHndlAssign(const ?&in);
	dictionaryValue& opHndlAssign(const dictionaryValue&in);
	dictionaryValue& opAssign(const ?&in);
	dictionaryValue& opAssign(double);
	dictionaryValue& opAssign(int64);
	void opCast(?&out);
	void opConv(?&out);
	int64 opConv();
	double opConv();
}
class dictionary {
	dictionary@ dictionary();
	dictionary& opAssign(const dictionary&in);
	void set(const string&in, const ?&in);
	bool get(const string&in, ?&out) const;
	void set(const string&in, const int64&in);
	bool get(const string&in, int64&out) const;
	void set(const string&in, const double&in);
	bool get(const string&in, double&out) const;
	bool exists(const string&in) const;
	bool isEmpty() const;
	uint getSize() const;
	bool delete(const string&in);
	void deleteAll();
	string[]@ getKeys() const;
	dictionaryValue& opIndex(const string&in);
	const dictionaryValue& opIndex(const string&in) const;
}
class ref {
	~ref();
	ref();
	ref(const ref&in);
	ref(const ?&in);
	void opCast(?&out);
	ref& opHndlAssign(const ref&in);
	ref& opHndlAssign(const ?&in);
	bool opEquals(const ref&in) const;
	bool opEquals(const ?&in) const;
}
class any  {
	any@ any();
	any@ any(?&in);
	any@ any(const int64&in);
	any@ any(const double&in);
	any& opAssign(any&in);
	void store(?&in);
	void store(const int64&in);
	void store(const double&in);
	bool retrieve(?&out);
	bool retrieve(int64&out);
	bool retrieve(double&out);
}
class DockPanel {
	void onRender();
}
class ServiceScript {
}
class Entity {
	string get_name() const property;
	void set_name(string&in) property;
	int get_id() const property;
	Entity createChild(const string&in);
	bool get_isRoot() const property;
	void destroy();
	bool get_exists() const property;
	Entity get_parent() property;
	void set_parent(Entity) property;
	bool isDescendantOf(Entity);
	bool opEquals(const Entity&in) const;
	EntityChilds get_childs() const property;
	TransformComponent get_transform() const property;
	MeshComponent getMeshComponent();
	MeshComponent createMeshComponent();
	bool hasMeshComponent();
	void removeMeshComponent();
	ShaderComponent getShaderComponent();
	ShaderComponent createShaderComponent();
	bool hasShaderComponent();
	void removeShaderComponent();
	CameraComponent getCameraComponent();
	CameraComponent createCameraComponent();
	bool hasCameraComponent();
	void removeCameraComponent();
}
class EntityChilds {
	int get_count() const property;
	Entity opIndex(int) const;
}
class TransformComponent {
	vec3 get_position() const property;
	vec3 get_scale() const property;
	vec3 get_rotation() const property;
	void set_position(const vec3) property;
	void set_scale(const vec3) property;
	void set_rotation(const vec3) property;
}
class MeshComponent {
	bool get_isActive() const property;
	bool get_hasMesh() const property;
	void clear();
	string getMesh();
	void setMesh(string&in);
	void set_isActive(const bool) property;
}
class ShaderComponent {
	bool get_hasShader() const property;
	void clear();
	string getShader();
	void setShader(const string&in);
}
class CameraComponent {
	float get_fov() const property;
	float get_aspectRatio() const property;
	float get_nearZ() const property;
	float get_farZ() const property;
	void set_fov(float) property;
	void set_aspectRatio(float) property;
	void set_nearZ(float) property;
	void set_farZ(float) property;
}
class vec3 {
	vec3();
	vec3(float, float = 0, float = 0);
	vec3 opAdd(const vec3&in);
	vec3 opSub(const vec3&in) const;
	vec3 opNeg() const;
	vec3 opMul(float) const;
	vec3 opMul_r(float) const;
	float x;
	float y;
	float z;
}
class quat {
	~quat();
	quat();
	quat(float, float, float, float);
	quat opMul(const quat&in) const;
	vec3 getEuler() const;
	void setEuler(vec3);
	float x;
	float y;
	float z;
	float w;
}
class Transform {
	Transform();
	vec3 relative(vec3);
	vec3 position;
	vec3 scale;
	quat rotation;
}
class Camera {
	Camera();
	float fov;
	float aspect;
	float nearZ;
	float farZ;
}
class SceneCamera {
	SceneCamera();
	Camera camera;
	Transform transform;
}
class FrameBuffer {
	FrameBuffer();
	void clearRGBA(int, int, int, int);
	int get_height() const property;
	void resize(int, int);
	string get_name() const property;
	bool isValid();
}
class Environment {
	void render(FrameBuffer, SceneCamera&in);
	Entity getRootEntity();
	Entity getEntity(int);
}
string formatInt(int64 val, const string&in options = "", uint width = 0);
string formatUInt(uint64 val, const string&in options = "", uint width = 0);
string formatFloat(double val, const string&in options = "", uint width = 0, uint precision = 0);
int64 parseInt(const string&in, uint base = 10, uint&out byteCount = 0);
uint64 parseUInt(const string&in, uint base = 10, uint&out byteCount = 0);
double parseFloat(const string&in, uint&out byteCount = 0);
namespace Engine { Entity getRoot(); }
namespace UI { bool button(const string&in); }
namespace UI { bool buttonCenter(const string&in); }
namespace UI { bool buttonEnd(const string&in); }
namespace UI { bool checkbox(const string&in, bool); }
namespace UI { bool checkboxDisabled(const string&in, bool); }
namespace UI { void drawFrameBuffer(FrameBuffer, int, int); }
namespace UI { void drawFrameBufferCentered(FrameBuffer, int, int); }
namespace UI { void drawIcon(const string&in, int); }
namespace UI { void drawIconCentered(const string&in, int); }
namespace UI { bool inputText(const string&in, const string&in, string&out); }
namespace UI { bool isItemClicked(int); }
namespace UI { bool isMouseDoubleClicked(int); }
namespace UI { float magicSlider(const string&in, float, float); }
namespace UI { vec3 magicSlider3(const string&in, vec3, float); }
namespace UI { bool menuItem(const string&in); }
namespace UI { void menuItemDisabled(const string&in); }
namespace UI { void menuSpace(const string&in, any@, ReciverFunc@); }
namespace UI { void sameline(); }
namespace UI { void separator(); }
namespace UI { void space(); }
namespace UI { void space(int, int = 10); }
namespace UI { void text(const string&in); }
namespace UI { void textCenter(const string&in); }
namespace UI { void textColor(float, float, float, const string&in); }
namespace UI { void textEnd(const string&in); }
namespace UI { void title(const string&in); }
namespace UI { void titleCenter(const string&in); }
namespace UI { void titleCenterY(const string&in, int); }
namespace UI { void titleEnd(const string&in); }
namespace UI { bool isKeyDown(key); }
namespace UI { bool isKeyPressed(key); }
namespace UI { bool isMouseDraggin(key); }
namespace UI { bool isPannelActive(); }
namespace UI { float getMouseDragDeltaX(); }
namespace UI { float getMouseDragDeltaY(); }
namespace UI { float getMouseDeltaX(); }
namespace UI { float getMouseDeltaY(); }
namespace UI { int getAvailableSizeX(); }
namespace UI { int getAvailableSizeY(); }
namespace UI { void disablePannelPadding(bool); }
namespace UI { int sliderInt(string&in, int, int, int); }
namespace UI { float slider(string&in, float, float, float); }
namespace Engine { FrameBuffer createRGBA8FrameBuffer(const string&in, int, int); }
namespace Engine { FrameBuffer getFrameBuffer(const string&in); }
namespace Engine { Environment getMainEnvironment(); }
namespace Engine { Environment createEnvironment(); }
namespace UI { void setupAutomaticColumns(int); }
namespace UI { void setupColumns(int); }
namespace UI { void endColumns(); }
namespace UI { void nextColumn(); }
namespace Assets { int getAssetCount(AssetType, const string&in); }
namespace Assets { string getAssetNameById(AssetType, const string&in, int); }
namespace Assets { string getAssetTypePathById(AssetType, const string&in, int); }
namespace Assets { int getDirCount(AssetType, const string&in); }
namespace Assets { string getDirPathById(AssetType, const string&in, int); }
namespace Assets { string getDirNameById(AssetType, const string&in, int); }
namespace Engine { void print(const string&in); }
namespace Engine { string getParentPath(const string&in); }
namespace Engine { string getParentPathName(const string&in); }
namespace UI { void treeNodeLeaf(const string&in, bool); }
namespace UI { bool treeNode(const string&in, bool, any@, ReciverFunc@); }
namespace UI { bool componentNode(const string&in, any@, ReciverFunc@); }
namespace UI { bool componentNode_contextMenu(const string&in, any@, ReciverFunc@, ReciverFunc@); }
namespace UI { void contextItemPopup(const string&in, any@, ReciverFunc@); }
namespace UI { void contextMenuPopup(const string&in, any@, ReciverFunc@); }
namespace UI { void modalPopup(const string&in, ReciverFunc@); }
namespace UI { void simplePopup(const string&in, ReciverFunc@); }
namespace UI { void openPopup(const string&in, any@); }
namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
