| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /*
- * Copyright (c) 2012-2015 Daniele Bartolini and individual contributors.
- * License: https://github.com/taylor001/crown/blob/master/LICENSE
- */
- #include "lua_stack.h"
- #include "lua_environment.h"
- #include "device.h"
- namespace crown
- {
- bool LuaStack::is_vector3(int i)
- {
- return device()->lua_environment()->is_vector3((Vector3*)get_pointer(i));
- }
- bool LuaStack::is_quaternion(int i)
- {
- return device()->lua_environment()->is_quaternion((Quaternion*)get_pointer(i));
- }
- bool LuaStack::is_matrix4x4(int i)
- {
- return device()->lua_environment()->is_matrix4x4((Matrix4x4*)get_pointer(i));
- }
- void LuaStack::check_temporary(int i, Vector3* p)
- {
- LuaEnvironment* env = device()->lua_environment();
- if (!is_pointer(i) || !env->is_vector3(p))
- luaL_typerror(L, i, "Vector3");
- }
- void LuaStack::check_temporary(int i, Quaternion* p)
- {
- LuaEnvironment* env = device()->lua_environment();
- if (!is_pointer(i) || !env->is_quaternion(p))
- luaL_typerror(L, i, "Quaternion");
- }
- void LuaStack::check_temporary(int i, Matrix4x4* p)
- {
- LuaEnvironment* env = device()->lua_environment();
- if (!is_pointer(i) || !env->is_matrix4x4(p))
- luaL_typerror(L, i, "Matrix4x4");
- }
- Vector2 LuaStack::get_vector2(int i)
- {
- Vector3 v = get_vector3(i);
- return vector2(v.x, v.y);
- }
- Vector3& LuaStack::get_vector3(int i)
- {
- Vector3* v = (Vector3*)get_pointer(i);
- check_temporary(i, v);
- return *v;
- }
- Quaternion& LuaStack::get_quaternion(int i)
- {
- Quaternion* q = (Quaternion*)get_pointer(i);
- check_temporary(i, q);
- return *q;
- }
- Matrix4x4& LuaStack::get_matrix4x4(int i)
- {
- Matrix4x4* m = (Matrix4x4*)get_pointer(i);
- check_temporary(i, m);
- return *m;
- }
- Color4 LuaStack::get_color4(int i)
- {
- Quaternion q = get_quaternion(i);
- return color4(q.x, q.y, q.z, q.w);
- }
- void LuaStack::push_vector2(const Vector2& v)
- {
- push_vector3(vector3(v.x, v.y, 0.0f));
- }
- void LuaStack::push_vector3(const Vector3& v)
- {
- lua_pushlightuserdata(L, device()->lua_environment()->next_vector3(v));
- }
- void LuaStack::push_quaternion(const Quaternion& q)
- {
- lua_pushlightuserdata(L, device()->lua_environment()->next_quaternion(q));
- }
- void LuaStack::push_matrix4x4(const Matrix4x4& m)
- {
- lua_pushlightuserdata(L, device()->lua_environment()->next_matrix4x4(m));
- }
- } // namespace crown
|