denisbaic

создание новых пользовательских данных

Jun 19th, 2021
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #define GRID_META "denisbaic.gridmanager"
  2. #define checkgrid(L) \
  3.     *static_cast<GridManager**>(luaL_checkudata(L,1,GRID_META))
  4.  
  5. int l_sin(lua_State* L)
  6. {
  7.     const double d = luaL_checknumber(L,1);
  8.     lua_pushnumber(L, sin(d));
  9.     return 1;
  10. }
  11.  
  12. int l_GenerateAndCalculateCorridors(lua_State* L)
  13. {
  14.     const int RoomsToGenerate = luaL_checkinteger(L, 1);
  15.     const int MinSideSize = luaL_checkinteger(L, 2);
  16.     const int MaxSideSize = luaL_checkinteger(L, 3);
  17.     const float MaxStep = luaL_checknumber(L, 4);
  18.     const float Buffer = luaL_checknumber(L, 5);
  19.     lua_pop(L, 5);
  20.     std::vector<Room> Rooms;
  21.     std::vector<EdgeDelaunay> Corridors;
  22.     DungeonGenerator::GenerateAndCalculateCorridors(Rooms, Corridors, RoomsToGenerate, MinSideSize, MaxSideSize, MaxStep, Buffer);
  23.  
  24.     GridManager** grid_manager_ptr = static_cast<GridManager**>(lua_newuserdata(L, sizeof *grid_manager_ptr));
  25.    
  26.     *grid_manager_ptr = new GridManager(Rooms, Corridors);
  27.    
  28.     luaL_getmetatable(L, GRID_META);
  29.     lua_setmetatable(L, -2);
  30.  
  31.     return 1;
  32. }
  33.  
Advertisement
Add Comment
Please, Sign In to add comment