| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * Copyright (c) 2012-2020 Daniele Bartolini and individual contributors.
- * License: https://github.com/dbartolini/crown/blob/master/LICENSE
- */
- #include "device/device.h"
- #include "lua/lua_environment.h"
- #include "lua/lua_stack.inl"
- namespace crown
- {
- bool LuaStack::is_vector3(int i)
- {
- return device()->_lua_environment->is_vector3((Vector3*)lua_touserdata(L, i));
- }
- bool LuaStack::is_quaternion(int i)
- {
- return device()->_lua_environment->is_quaternion((Quaternion*)lua_touserdata(L, i));
- }
- bool LuaStack::is_matrix4x4(int i)
- {
- return device()->_lua_environment->is_matrix4x4((Matrix4x4*)lua_touserdata(L, i));
- }
- #if CROWN_DEBUG
- Vector3* LuaStack::check_temporary(int i, const Vector3* ptr)
- {
- LuaEnvironment* env = device()->_lua_environment;
- if (CE_UNLIKELY(!env->is_vector3(ptr)))
- {
- luaL_typerror(L, i, "Vector3");
- CE_UNREACHABLE();
- }
- return env->check_valid(ptr);
- }
- Quaternion* LuaStack::check_temporary(int i, const Quaternion* ptr)
- {
- LuaEnvironment* env = device()->_lua_environment;
- if (CE_UNLIKELY(!env->is_quaternion(ptr)))
- {
- luaL_typerror(L, i, "Quaternion");
- CE_UNREACHABLE();
- }
- return env->check_valid(ptr);
- }
- Matrix4x4* LuaStack::check_temporary(int i, const Matrix4x4* ptr)
- {
- LuaEnvironment* env = device()->_lua_environment;
- if (CE_UNLIKELY(!env->is_matrix4x4(ptr)))
- {
- luaL_typerror(L, i, "Matrix4x4");
- CE_UNREACHABLE();
- }
- return env->check_valid(ptr);
- }
- #endif // CROWN_DEBUG
- 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
|