static int vector3_crossproduct (lua_State *L) { Vector3 *v1 = (Vector3*)lua_touserdata(L, 1); Vector3 *v2 = (Vector3*)lua_touserdata(L, 2); push_vector3(L, v1->CrossProduct(*v2)); return 1; }
static int vector3_div (lua_State *L) { Vector3 *v = (Vector3*)lua_touserdata(L, 1); float s = luaL_checknumber(L, 2); push_vector3(L, (*v)/s); return 1; }
static int vector3_sub (lua_State *L) { Vector3 *v1 = (Vector3*)lua_touserdata(L, 1); Vector3 *v2 = (Vector3*)lua_touserdata(L, 2); push_vector3(L, (*v1)-(*v2)); return 1; }
void LuaStack::push_vector2(const Vector2& v) { Vector3 a; a.x = v.x; a.y = v.y; a.z = 0.0f; push_vector3(a); }
/* Constructor and methods * */ static int vector3_new(lua_State *L) { Vector3 v; if (lua_gettop(L)==3) { v.x = luaL_checknumber(L, 1); v.y = luaL_checknumber(L, 2); v.z = luaL_checknumber(L, 3); } else if (lua_gettop(L)==1) { Vector3 o = check_vector3(L, 1); v = o; } push_vector3(L, v); return 1; }
static int vector3_getnormalized (lua_State *L) { Vector3 *v1 = (Vector3*)lua_touserdata(L, 1); push_vector3(L, v1->GetNormalized()); return 1; }
static int vector3_unm (lua_State *L) { Vector3 *v = (Vector3*)lua_touserdata(L, 1); push_vector3(L, -(*v)); return 1; }