|
|
@@ -10,9 +10,6 @@ namespace crown
|
|
|
extern "C"
|
|
|
{
|
|
|
|
|
|
-const int32_t LUA_MAT4_BUFFER_SIZE = 4096;
|
|
|
-Mat4 mat4_buffer[LUA_MAT4_BUFFER_SIZE];
|
|
|
-uint32_t mat4_used = 0;
|
|
|
|
|
|
int32_t mat4(lua_State* L)
|
|
|
{
|
|
|
@@ -38,7 +35,7 @@ int32_t mat4(lua_State* L)
|
|
|
mat4_buffer[mat4_used].m[9] = m9;
|
|
|
mat4_buffer[mat4_used].m[10] = m10;
|
|
|
|
|
|
- stack.push_lightudata(&mat4_buffer[mat4_used]);
|
|
|
+ stack.push_mat4(&mat4_buffer[mat4_used]);
|
|
|
|
|
|
mat4_used++;
|
|
|
|
|
|
@@ -49,12 +46,12 @@ int32_t mat4_add(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Mat4* b = (Mat4*)stack.get_lightudata(2);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Mat4* b = stack.get_mat4(2);
|
|
|
|
|
|
*a += *b;
|
|
|
|
|
|
- stack.push_lightudata(a);
|
|
|
+ stack.push_mat4(a);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -63,12 +60,12 @@ int32_t mat4_subtract(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Mat4* b = (Mat4*)stack.get_lightudata(2);
|
|
|
+ Mat4* a = (Mat4*)stack.get_mat4(1);
|
|
|
+ Mat4* b = (Mat4*)stack.get_mat4(2);
|
|
|
|
|
|
*a -= *b;
|
|
|
|
|
|
- stack.push_lightudata(a);
|
|
|
+ stack.push_mat4(a);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -77,12 +74,12 @@ int32_t mat4_multiply(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Mat4* b = (Mat4*)stack.get_lightudata(2);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Mat4* b = stack.get_mat4(2);
|
|
|
|
|
|
*a *= *b;
|
|
|
|
|
|
- stack.push_lightudata(a);
|
|
|
+ stack.push_mat4(a);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -91,12 +88,12 @@ int32_t mat4_multiply_by_scalar(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = (Mat4*)stack.get_mat4(1);
|
|
|
float k = stack.get_float(2);
|
|
|
|
|
|
*a *= k;
|
|
|
|
|
|
- stack.push_lightudata(a);
|
|
|
+ stack.push_mat4(a);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -105,12 +102,12 @@ int32_t mat4_divide_by_scalar(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = (Mat4*)stack.get_mat4(1);
|
|
|
float k = stack.get_float(2);
|
|
|
|
|
|
*a /= k;
|
|
|
|
|
|
- stack.push_lightudata(a);
|
|
|
+ stack.push_mat4(a);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -119,7 +116,7 @@ int32_t mat4_build_rotation_x(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = (Mat4*)stack.get_mat4(1);
|
|
|
float k = stack.get_float(2);
|
|
|
|
|
|
a->build_rotation_x(k);
|
|
|
@@ -131,7 +128,7 @@ int32_t mat4_build_rotation_y(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
float k = stack.get_float(2);
|
|
|
|
|
|
a->build_rotation_y(k);
|
|
|
@@ -143,7 +140,7 @@ int32_t mat4_build_rotation_z(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = (Mat4*)stack.get_mat4(1);
|
|
|
float k = stack.get_float(2);
|
|
|
|
|
|
a->build_rotation_z(k);
|
|
|
@@ -155,8 +152,8 @@ int32_t mat4_build_rotation(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Vec3* d = (Vec3*)stack.get_lightudata(2);
|
|
|
+ Mat4* a = (Mat4*)stack.get_mat4(1);
|
|
|
+ Vec3* d = (Vec3*)stack.get_vec3(2);
|
|
|
float k = stack.get_float(3);
|
|
|
|
|
|
a->build_rotation(*d, k);
|
|
|
@@ -168,7 +165,7 @@ int32_t mat4_build_projection_perspective_rh(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
float fovy = stack.get_float(2);
|
|
|
float aspect = stack.get_float(3);
|
|
|
float near = stack.get_float(4);
|
|
|
@@ -183,7 +180,7 @@ int32_t mat4_build_projection_perspective_lh(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
float fovy = stack.get_float(2);
|
|
|
float aspect = stack.get_float(3);
|
|
|
float near = stack.get_float(4);
|
|
|
@@ -198,7 +195,7 @@ int32_t mat4_build_projection_ortho_rh(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
float width = stack.get_float(2);
|
|
|
float height = stack.get_float(3);
|
|
|
float near = stack.get_float(4);
|
|
|
@@ -213,7 +210,7 @@ int32_t mat4_build_projection_ortho_lh(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
float width = stack.get_float(2);
|
|
|
float height = stack.get_float(3);
|
|
|
float near = stack.get_float(4);
|
|
|
@@ -228,7 +225,7 @@ int32_t mat4_build_projection_ortho_2d_rh(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
float width = stack.get_float(2);
|
|
|
float height = stack.get_float(3);
|
|
|
float near = stack.get_float(4);
|
|
|
@@ -243,10 +240,10 @@ int32_t mat4_build_look_at_rh(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Vec3* pos = (Vec3*)stack.get_lightudata(2);
|
|
|
- Vec3* target = (Vec3*)stack.get_lightudata(3);
|
|
|
- Vec3* up = (Vec3*)stack.get_lightudata(4);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Vec3* pos = stack.get_vec3(2);
|
|
|
+ Vec3* target = stack.get_vec3(3);
|
|
|
+ Vec3* up = stack.get_vec3(4);
|
|
|
|
|
|
a->build_look_at_rh(*pos, *target, *up);
|
|
|
|
|
|
@@ -257,10 +254,10 @@ int32_t mat4_build_look_at_lh(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Vec3* pos = (Vec3*)stack.get_lightudata(2);
|
|
|
- Vec3* target = (Vec3*)stack.get_lightudata(3);
|
|
|
- Vec3* up = (Vec3*)stack.get_lightudata(4);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Vec3* pos = stack.get_vec3(2);
|
|
|
+ Vec3* target = stack.get_vec3(3);
|
|
|
+ Vec3* up = stack.get_vec3(4);
|
|
|
|
|
|
a->build_look_at_lh(*pos, *target, *up);
|
|
|
|
|
|
@@ -271,10 +268,10 @@ int32_t mat4_build_viewpoint_billboard(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Vec3* pos = (Vec3*)stack.get_lightudata(2);
|
|
|
- Vec3* target = (Vec3*)stack.get_lightudata(3);
|
|
|
- Vec3* up = (Vec3*)stack.get_lightudata(4);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Vec3* pos = stack.get_vec3(2);
|
|
|
+ Vec3* target = stack.get_vec3(3);
|
|
|
+ Vec3* up = stack.get_vec3(4);
|
|
|
|
|
|
a->build_viewpoint_billboard(*pos, *target, *up);
|
|
|
|
|
|
@@ -285,10 +282,10 @@ int32_t mat4_build_axis_billboard(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Vec3* pos = (Vec3*)stack.get_lightudata(2);
|
|
|
- Vec3* target = (Vec3*)stack.get_lightudata(3);
|
|
|
- Vec3* up = (Vec3*)stack.get_lightudata(4);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Vec3* pos = stack.get_vec3(2);
|
|
|
+ Vec3* target = stack.get_vec3(3);
|
|
|
+ Vec3* up = stack.get_vec3(4);
|
|
|
|
|
|
a->build_axis_billboard(*pos, *target, *up);
|
|
|
|
|
|
@@ -299,11 +296,11 @@ int32_t mat4_transpose(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
|
|
|
a->transpose();
|
|
|
|
|
|
- stack.push_lightudata(a);
|
|
|
+ stack.push_mat4(a);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -312,7 +309,7 @@ int32_t mat4_determinant(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
|
|
|
stack.push_float(a->get_determinant());
|
|
|
|
|
|
@@ -323,11 +320,11 @@ int32_t mat4_invert(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
|
|
|
a->invert();
|
|
|
|
|
|
- stack.push_lightudata(a);
|
|
|
+ stack.push_mat4(a);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -336,7 +333,7 @@ int32_t mat4_load_identity(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
|
|
|
a->load_identity();
|
|
|
|
|
|
@@ -347,11 +344,9 @@ int32_t mat4_get_translation(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
|
|
|
- Vec3 trans = a->get_translation();
|
|
|
-
|
|
|
- stack.push_lightudata(&trans);
|
|
|
+ stack.push_vec3(&a->get_translation());
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -360,8 +355,8 @@ int32_t mat4_set_translation(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Vec3* trans = (Vec3*)stack.get_lightudata(2);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Vec3* trans = stack.get_vec3(2);
|
|
|
|
|
|
a->set_translation(*trans);
|
|
|
|
|
|
@@ -372,11 +367,10 @@ int32_t mat4_get_scale(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
|
|
|
- Vec3 scale = a->get_scale();
|
|
|
|
|
|
- stack.push_lightudata(&scale);
|
|
|
+ stack.push_vec3(&a->get_scale());
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -385,8 +379,8 @@ int32_t mat4_set_scale(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
- Vec3* scale = (Vec3*)stack.get_lightudata(2);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
+ Vec3* scale = stack.get_vec3(2);
|
|
|
|
|
|
a->set_scale(*scale);
|
|
|
|
|
|
@@ -397,7 +391,7 @@ int32_t mat4_print(lua_State* L)
|
|
|
{
|
|
|
LuaStack stack(L);
|
|
|
|
|
|
- Mat4* a = (Mat4*)stack.get_lightudata(1);
|
|
|
+ Mat4* a = stack.get_mat4(1);
|
|
|
|
|
|
os::printf("|%.1f|%.1f|%.1f|%.1f|\n", a->m[0], a->m[4], a->m[8], a->m[12]);
|
|
|
os::printf("|%.1f|%.1f|%.1f|%.1f|\n", a->m[1], a->m[5], a->m[9], a->m[13]);
|