예제 #1
0
static int VMatrix_Init (lua_State *L) {
  if (lua_gettop(L) < 17)
    luaL_checkvmatrix(L, 1).Init(luaL_checkmatrix(L, 2));
  else
    luaL_checkvmatrix(L, 1).Init(luaL_checknumber(L, 2), luaL_checknumber(L, 3), luaL_checknumber(L, 4), luaL_checknumber(L, 5), luaL_checknumber(L, 6), luaL_checknumber(L, 7), luaL_checknumber(L, 8), luaL_checknumber(L, 9), luaL_checknumber(L, 10), luaL_checknumber(L, 11), luaL_checknumber(L, 12), luaL_checknumber(L, 13), luaL_checknumber(L, 14), luaL_checknumber(L, 15), luaL_checknumber(L, 16), luaL_checknumber(L, 17));
  return 0;
}
예제 #2
0
static int matrix3x4_t___index (lua_State *L) {
  matrix3x4_t matrix = luaL_checkmatrix(L, 1);
  const char *field = luaL_checkstring(L, 2);
  if (strcmp(field, "0") == 0) {
    lua_newtable(L);
	for (int j = 0; j < 4; j++)
	{
		lua_pushinteger(L, j);
		lua_pushnumber(L, matrix[0][j]);
		lua_settable(L, -3);
	}
  } else if (strcmp(field, "1") == 0) {
    lua_newtable(L);
	for (int j = 0; j < 4; j++)
	{
		lua_pushinteger(L, j);
		lua_pushnumber(L, matrix[1][j]);
		lua_settable(L, -3);
	}
  } else if (strcmp(field, "2") == 0) {
    lua_newtable(L);
	for (int j = 0; j < 4; j++)
	{
		lua_pushinteger(L, j);
		lua_pushnumber(L, matrix[2][j]);
		lua_settable(L, -3);
	}
  } else {
    lua_getmetatable(L, 1);
    lua_pushvalue(L, 2);
    lua_gettable(L, -2);
  }
  return 1;
}
예제 #3
0
static int matrix3x4_t___tostring (lua_State *L) {
  matrix3x4_t matrix = luaL_checkmatrix(L, 1);
  lua_pushfstring(L, "matrix3x4_t: %f, %f, %f, %f\n             %f, %f, %f, %f\n             %f, %f, %f, %f",
    matrix[0][0],	matrix[0][1], matrix[0][2], matrix[0][3],
    matrix[1][0],	matrix[1][1], matrix[1][2], matrix[1][3],
    matrix[2][0],	matrix[2][1], matrix[2][2], matrix[2][3]
  );
  return 1;
}
예제 #4
0
static int luasrc_VMatrix (lua_State *L) {
  if (lua_gettop(L) < 1) {
    VMatrix matrix = VMatrix();
    memset( &matrix, 0, sizeof( VMatrix ) );
    lua_pushvmatrix(L, matrix);
  } else if (lua_gettop(L) < 3) {
    VMatrix matrix = VMatrix(luaL_checkmatrix(L, 1));
    lua_pushvmatrix(L, matrix);
  } else if (lua_gettop(L) < 16) {
    VMatrix matrix = VMatrix(luaL_checkvector(L, 1), luaL_checkvector(L, 2), luaL_checkvector(L, 3));
    lua_pushvmatrix(L, matrix);
  } else {
    VMatrix matrix = VMatrix(luaL_checknumber(L, 1), luaL_checknumber(L, 2), luaL_checknumber(L, 3), luaL_checknumber(L, 4), luaL_checknumber(L, 5), luaL_checknumber(L, 6), luaL_checknumber(L, 7), luaL_checknumber(L, 8), luaL_checknumber(L, 9), luaL_checknumber(L, 10), luaL_checknumber(L, 11), luaL_checknumber(L, 12), luaL_checknumber(L, 13), luaL_checknumber(L, 14), luaL_checknumber(L, 15), luaL_checknumber(L, 16));
    lua_pushvmatrix(L, matrix);
  }
  return 1;
}
예제 #5
0
static int matrix3x4_t_Invalidate (lua_State *L) {
  luaL_checkmatrix(L, 1).Invalidate();
  return 0;
}
예제 #6
0
static int matrix3x4_t_Init (lua_State *L) {
  luaL_checkmatrix(L, 1).Init(luaL_checkvector(L, 2), luaL_checkvector(L, 3), luaL_checkvector(L, 4), luaL_checkvector(L, 5));
  return 0;
}
예제 #7
0
static int matrix3x4_t_Base (lua_State *L) {
  lua_pushnumber(L, *luaL_checkmatrix(L, 1).Base());
  return 1;
}
예제 #8
0
static int VMatrix_CopyFrom3x4 (lua_State *L) {
  luaL_checkvmatrix(L, 1).CopyFrom3x4(luaL_checkmatrix(L, 2));
  return 0;
}
예제 #9
0
static int VMatrix_Set3x4 (lua_State *L) {
  luaL_checkvmatrix(L, 1).Set3x4(luaL_checkmatrix(L, 2));
  return 0;
}