#ifndef ROCKETCORELUAVECTOR2F_H #define ROCKETCORELUAVECTOR2F_H /* Declares Vector2f in the Lua global namespace. It implements the below (examples using Lua syntax) : Vector2f.new(float,float) creates a new Vector2f, and gets deleted when Lua garbage collects everything after this will assume that you have a local variable named 'vect', declared something similar to local vect = Vector2f.new(3.5,2.3) operators (the types that it can operate on are on the right): vect * float vect / float vect + Vector2f vect - Vector2f vect == Vector2f methods: float var = vect:DotProduct(Vector2f) Vector2f var = vect:Normalise() Vector2f var = vect:Rotate(float) get and set attributes: vect.x vect.y get attributes: vect.magnitude */ #include #include #include using Rocket::Core::Vector2f; namespace Rocket { namespace Core { namespace Lua { template<> void LuaType::extra_init(lua_State* L, int metatable_index); int Vector2fnew(lua_State* L); int Vector2f__mul(lua_State* L); int Vector2f__div(lua_State* L); int Vector2f__add(lua_State* L); int Vector2f__sub(lua_State* L); int Vector2f__eq(lua_State* L); int Vector2fDotProduct(lua_State* L, Vector2f* obj); int Vector2fNormalise(lua_State* L, Vector2f* obj); int Vector2fRotate(lua_State* L, Vector2f* obj); int Vector2fGetAttrx(lua_State*L); int Vector2fGetAttry(lua_State*L); int Vector2fGetAttrmagnitude(lua_State*L); int Vector2fSetAttrx(lua_State*L); int Vector2fSetAttry(lua_State*L); RegType Vector2fMethods[]; luaL_reg Vector2fGetters[]; luaL_reg Vector2fSetters[]; /* template<> const char* GetTClassName() { return "Vector2f"; } template<> RegType* GetMethodTable() { return Vector2fMethods; } template<> luaL_reg* GetAttrTable() { return Vector2fGetters; } template<> luaL_reg* SetAttrTable() { return Vector2fSetters; } */ } } } #endif