mirror of
https://github.com/love2d/love.git
synced 2026-08-16 16:20:42 +02:00
Merge dynamiccore2 into minor
Instead of a global type enum and bitfield, all types now have their own love::Type static member. This means they automatically assign their ids, build their bitsets, etc. As a bonus, it simplifies wrapper code since most functions already know which type they're pushing to or getting from lua, so they can directly get the static member (if it's called 'type'). --HG-- branch : minor
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Copyright (c) 2006-2016 LOVE Development Team
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
**/
|
||||
|
||||
// LOVE
|
||||
#include "Drawable.h"
|
||||
|
||||
namespace love
|
||||
{
|
||||
namespace graphics
|
||||
{
|
||||
|
||||
love::Type Drawable::type("Drawable", &Object::type);
|
||||
|
||||
} // graphics
|
||||
} // love
|
||||
@@ -38,6 +38,8 @@ class Drawable : public Object
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
**/
|
||||
|
||||
@@ -58,6 +58,8 @@ void unGammaCorrectColor(Colorf &c)
|
||||
}
|
||||
}
|
||||
|
||||
love::Type Graphics::type("graphics", &Module::type);
|
||||
|
||||
Graphics::~Graphics()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -73,6 +73,8 @@ class Graphics : public Module
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
enum DrawMode
|
||||
{
|
||||
DRAW_LINE,
|
||||
|
||||
@@ -50,6 +50,8 @@ float calculate_variation(float inner, float outer, float var)
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
love::Type ParticleSystem::type("ParticleSystem", &Drawable::type);
|
||||
|
||||
ParticleSystem::ParticleSystem(Texture *texture, uint32 size)
|
||||
: pMem(nullptr)
|
||||
, pFree(nullptr)
|
||||
|
||||
@@ -45,6 +45,9 @@ namespace graphics
|
||||
class ParticleSystem : public Drawable
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
/**
|
||||
* Type of distribution new particles are drawn from: None, uniform, normal, ellipse.
|
||||
*/
|
||||
|
||||
@@ -29,6 +29,8 @@ namespace love
|
||||
namespace graphics
|
||||
{
|
||||
|
||||
love::Type Quad::type("Quad", &Object::type);
|
||||
|
||||
Quad::Quad(const Quad::Viewport &v, double sw, double sh)
|
||||
: sw(sw)
|
||||
, sh(sh)
|
||||
|
||||
@@ -34,6 +34,8 @@ class Quad : public Object
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
struct Viewport
|
||||
{
|
||||
double x, y;
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace love
|
||||
namespace graphics
|
||||
{
|
||||
|
||||
love::Type Texture::type("Texture", &Drawable::type);
|
||||
Texture::Filter Texture::defaultFilter;
|
||||
|
||||
Texture::Texture()
|
||||
|
||||
@@ -41,6 +41,8 @@ class Texture : public Drawable
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
enum WrapMode
|
||||
{
|
||||
WRAP_CLAMP,
|
||||
|
||||
@@ -99,6 +99,7 @@ static bool createMSAABuffer(int width, int height, int &samples, PixelFormat pi
|
||||
return status == GL_FRAMEBUFFER_COMPLETE && samples > 1;
|
||||
}
|
||||
|
||||
love::Type Canvas::type("Canvas", &Texture::type);
|
||||
int Canvas::canvasCount = 0;
|
||||
|
||||
Canvas::Canvas(int width, int height, PixelFormat format, int msaa)
|
||||
|
||||
@@ -43,6 +43,8 @@ class Canvas : public Texture, public Volatile
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
Canvas(int width, int height, PixelFormat format = PIXELFORMAT_NORMAL, int msaa = 0);
|
||||
virtual ~Canvas();
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ static inline uint16 normToUint16(double n)
|
||||
return (uint16) (n * LOVE_UINT16_MAX);
|
||||
}
|
||||
|
||||
love::Type Font::type("Font", &Object::type);
|
||||
int Font::fontCount = 0;
|
||||
|
||||
Font::Font(love::font::Rasterizer *r, const Texture::Filter &filter)
|
||||
@@ -77,7 +78,7 @@ Font::Font(love::font::Rasterizer *r, const Texture::Filter &filter)
|
||||
}
|
||||
|
||||
love::font::GlyphData *gd = r->getGlyphData(32); // Space character.
|
||||
type = (gd->getFormat() == font::GlyphData::FORMAT_LUMINANCE_ALPHA) ? FONT_TRUETYPE : FONT_IMAGE;
|
||||
fontType = (gd->getFormat() == font::GlyphData::FORMAT_LUMINANCE_ALPHA) ? FONT_TRUETYPE : FONT_IMAGE;
|
||||
gd->release();
|
||||
|
||||
if (!r->hasGlyph(9)) // No tab character in the Rasterizer.
|
||||
@@ -142,7 +143,7 @@ void Font::createTexture()
|
||||
{
|
||||
OpenGL::TempDebugGroup debuggroup("Font create texture");
|
||||
|
||||
size_t bpp = type == FONT_TRUETYPE ? 2 : 4;
|
||||
size_t bpp = fontType == FONT_TRUETYPE ? 2 : 4;
|
||||
|
||||
size_t prevmemsize = textureMemorySize;
|
||||
if (prevmemsize > 0)
|
||||
@@ -177,7 +178,7 @@ void Font::createTexture()
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
GLenum internalformat = GL_RGBA;
|
||||
GLenum format = getTextureFormat(type, &internalformat);
|
||||
GLenum format = getTextureFormat(fontType, &internalformat);
|
||||
|
||||
// Initialize the texture with transparent black.
|
||||
std::vector<GLubyte> emptydata(size.width * size.height * bpp, 0);
|
||||
@@ -285,7 +286,7 @@ const Font::Glyph &Font::addGlyph(uint32 glyph)
|
||||
// don't waste space for empty glyphs. also fixes a divide by zero bug with ATI drivers
|
||||
if (w > 0 && h > 0)
|
||||
{
|
||||
GLenum format = getTextureFormat(type);
|
||||
GLenum format = getTextureFormat(fontType);
|
||||
g.texture = textures.back();
|
||||
|
||||
gl.bindTextureToUnit(g.texture, 0, false);
|
||||
@@ -1021,7 +1022,7 @@ int Font::getDescent() const
|
||||
float Font::getBaseline() const
|
||||
{
|
||||
// 1.25 is magic line height for true type fonts
|
||||
return (type == FONT_TRUETYPE) ? floorf(getHeight() / 1.25f + 0.5f) : 0.0f;
|
||||
return (fontType == FONT_TRUETYPE) ? floorf(getHeight() / 1.25f + 0.5f) : 0.0f;
|
||||
}
|
||||
|
||||
bool Font::hasGlyph(uint32 glyph) const
|
||||
@@ -1065,7 +1066,7 @@ void Font::setFallbacks(const std::vector<Font *> &fallbacks)
|
||||
{
|
||||
for (const Font *f : fallbacks)
|
||||
{
|
||||
if (f->type != this->type)
|
||||
if (f->fontType != this->fontType)
|
||||
throw love::Exception("Font fallbacks must be of the same font type.");
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@ class Font : public Object, public Volatile
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
typedef std::vector<uint32> Codepoints;
|
||||
|
||||
enum AlignMode
|
||||
@@ -235,7 +237,7 @@ private:
|
||||
// map of left/right glyph pairs to horizontal kerning.
|
||||
std::unordered_map<uint64, float> kerning;
|
||||
|
||||
FontType type;
|
||||
FontType fontType;
|
||||
Texture::Filter filter;
|
||||
|
||||
int textureX, textureY;
|
||||
|
||||
@@ -43,6 +43,8 @@ namespace graphics
|
||||
namespace opengl
|
||||
{
|
||||
|
||||
love::Type Image::type("Image", &Texture::type);
|
||||
|
||||
int Image::imageCount = 0;
|
||||
|
||||
float Image::maxMipmapSharpness = 0.0f;
|
||||
|
||||
@@ -52,6 +52,8 @@ class Image : public Texture, public Volatile
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
enum FlagType
|
||||
{
|
||||
FLAG_TYPE_MIPMAPS,
|
||||
|
||||
@@ -58,6 +58,8 @@ static std::vector<Mesh::AttribFormat> getDefaultVertexFormat()
|
||||
return vertexformat;
|
||||
}
|
||||
|
||||
love::Type Mesh::type("Mesh", &Drawable::type);
|
||||
|
||||
Mesh::Mesh(const std::vector<AttribFormat> &vertexformat, const void *data, size_t datasize, DrawMode drawmode, Usage usage)
|
||||
: vertexFormat(vertexformat)
|
||||
, vbo(nullptr)
|
||||
|
||||
@@ -50,6 +50,8 @@ class Mesh : public Drawable
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
// The expected usage pattern of the Mesh's vertex data.
|
||||
enum Usage
|
||||
{
|
||||
|
||||
@@ -69,6 +69,7 @@ namespace
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
love::Type Shader::type("Shader", &Object::type);
|
||||
Shader *Shader::current = nullptr;
|
||||
Shader *Shader::defaultShader = nullptr;
|
||||
Shader *Shader::defaultVideoShader = nullptr;
|
||||
|
||||
@@ -46,6 +46,8 @@ class Shader : public Object, public Volatile
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
enum ShaderStage
|
||||
{
|
||||
STAGE_VERTEX,
|
||||
|
||||
@@ -41,6 +41,8 @@ namespace graphics
|
||||
namespace opengl
|
||||
{
|
||||
|
||||
love::Type SpriteBatch::type("SpriteBatch", &Drawable::type);
|
||||
|
||||
SpriteBatch::SpriteBatch(Texture *texture, int size, Mesh::Usage usage)
|
||||
: texture(texture)
|
||||
, size(size)
|
||||
|
||||
@@ -52,6 +52,8 @@ class SpriteBatch : public Drawable
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
SpriteBatch(Texture *texture, int size, Mesh::Usage usage);
|
||||
virtual ~SpriteBatch();
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ namespace graphics
|
||||
namespace opengl
|
||||
{
|
||||
|
||||
love::Type Text::type("Text", &Drawable::type);
|
||||
|
||||
Text::Text(Font *font, const std::vector<Font::ColoredString> &text)
|
||||
: font(font)
|
||||
, vbo(nullptr)
|
||||
|
||||
@@ -38,6 +38,8 @@ class Text : public Drawable
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
Text(Font *font, const std::vector<Font::ColoredString> &text = {});
|
||||
virtual ~Text();
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ namespace graphics
|
||||
namespace opengl
|
||||
{
|
||||
|
||||
love::Type Video::type("Video", &Drawable::type);
|
||||
|
||||
Video::Video(love::video::VideoStream *stream)
|
||||
: stream(stream)
|
||||
, filter(Texture::getDefaultFilter())
|
||||
|
||||
@@ -40,6 +40,8 @@ class Video : public Drawable, public Volatile
|
||||
{
|
||||
public:
|
||||
|
||||
static love::Type type;
|
||||
|
||||
Video(love::video::VideoStream *stream);
|
||||
~Video();
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace opengl
|
||||
|
||||
Canvas *luax_checkcanvas(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Canvas>(L, idx, GRAPHICS_CANVAS_ID);
|
||||
return luax_checktype<Canvas>(L, idx);
|
||||
}
|
||||
|
||||
int w_Canvas_getFormat(lua_State *L)
|
||||
@@ -61,7 +61,7 @@ static const luaL_Reg w_Canvas_functions[] =
|
||||
|
||||
extern "C" int luaopen_canvas(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_CANVAS_ID, "Canvas", w_Texture_functions, w_Canvas_functions, nullptr);
|
||||
return luax_register_type(L, &Canvas::type, w_Texture_functions, w_Canvas_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace opengl
|
||||
|
||||
Font *luax_checkfont(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Font>(L, idx, GRAPHICS_FONT_ID);
|
||||
return luax_checktype<Font>(L, idx);
|
||||
}
|
||||
|
||||
int w_Font_getHeight(lua_State *L)
|
||||
@@ -207,7 +207,7 @@ static const luaL_Reg w_Font_functions[] =
|
||||
|
||||
extern "C" int luaopen_font(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_FONT_ID, "Font", w_Font_functions, nullptr);
|
||||
return luax_register_type(L, &Font::type, w_Font_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -153,7 +153,7 @@ static int w__beginPass(lua_State *L)
|
||||
|
||||
luax_catchexcept(L, [&]() { instance()->beginPass(PassInfo::BEGIN_CLEAR, c); });
|
||||
}
|
||||
else if (luax_istype(L, 1, GRAPHICS_CANVAS_ID))
|
||||
else if (luax_istype(L, 1, Canvas::type))
|
||||
{
|
||||
PassInfo::ColorAttachment attachment;
|
||||
attachment.canvas = luax_checkcanvas(L, 1);
|
||||
@@ -257,7 +257,7 @@ static void screenshotCallback(love::image::ImageData *i, Reference *ref, void *
|
||||
lua_State *L = (lua_State *) gd;
|
||||
ref->push(L);
|
||||
delete ref;
|
||||
luax_pushtype(L, IMAGE_IMAGE_DATA_ID, i);
|
||||
luax_pushtype(L, i);
|
||||
lua_call(L, 1, 0);
|
||||
}
|
||||
else
|
||||
@@ -349,7 +349,7 @@ int w_getPassCanvases(lua_State *L)
|
||||
const PassInfo &info = instance()->getActivePass();
|
||||
|
||||
for (const auto &attachment : info.colorAttachments)
|
||||
luax_pushtype(L, GRAPHICS_CANVAS_ID, attachment.canvas);
|
||||
luax_pushtype(L, attachment.canvas);
|
||||
|
||||
return info.colorAttachmentCount;
|
||||
}
|
||||
@@ -513,7 +513,7 @@ int w_newImage(lua_State *L)
|
||||
bool releasedata = false;
|
||||
|
||||
// Convert to ImageData / CompressedImageData, if necessary.
|
||||
if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_ID) || luax_istype(L, 1, FILESYSTEM_FILE_DATA_ID))
|
||||
if (lua_isstring(L, 1) || luax_istype(L, 1, love::filesystem::File::type) || luax_istype(L, 1, love::filesystem::FileData::type))
|
||||
{
|
||||
auto imagemodule = Module::getInstance<love::image::Image>(Module::M_IMAGE);
|
||||
if (imagemodule == nullptr)
|
||||
@@ -539,7 +539,7 @@ int w_newImage(lua_State *L)
|
||||
// Lua's GC won't release the image data, so we should do it ourselves.
|
||||
releasedata = true;
|
||||
}
|
||||
else if (luax_istype(L, 1, IMAGE_COMPRESSED_IMAGE_DATA_ID))
|
||||
else if (luax_istype(L, 1, love::image::CompressedImageData::type))
|
||||
cdata.push_back(love::image::luax_checkcompressedimagedata(L, 1));
|
||||
else
|
||||
data.push_back(love::image::luax_checkimagedata(L, 1));
|
||||
@@ -558,14 +558,14 @@ int w_newImage(lua_State *L)
|
||||
|
||||
if (!data.empty())
|
||||
{
|
||||
if (!luax_istype(L, -1, IMAGE_IMAGE_DATA_ID))
|
||||
if (!luax_istype(L, -1, love::image::ImageData::type))
|
||||
luax_convobj(L, -1, "image", "newImageData");
|
||||
|
||||
data.push_back(love::image::luax_checkimagedata(L, -1));
|
||||
}
|
||||
else if (!cdata.empty())
|
||||
{
|
||||
if (!luax_istype(L, -1, IMAGE_COMPRESSED_IMAGE_DATA_ID))
|
||||
if (!luax_istype(L, -1, love::image::CompressedImageData::type))
|
||||
luax_convobj(L, -1, "image", "newCompressedData");
|
||||
|
||||
cdata.push_back(love::image::luax_checkcompressedimagedata(L, -1));
|
||||
@@ -602,7 +602,7 @@ int w_newImage(lua_State *L)
|
||||
return luaL_error(L, "Could not load image.");
|
||||
|
||||
// Push the type.
|
||||
luax_pushtype(L, GRAPHICS_IMAGE_ID, image);
|
||||
luax_pushtype(L, image);
|
||||
image->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -621,7 +621,7 @@ int w_newQuad(lua_State *L)
|
||||
double sh = luaL_checknumber(L, 6);
|
||||
|
||||
Quad *quad = instance()->newQuad(v, sw, sh);
|
||||
luax_pushtype(L, GRAPHICS_QUAD_ID, quad);
|
||||
luax_pushtype(L, quad);
|
||||
quad->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -633,7 +633,7 @@ int w_newFont(lua_State *L)
|
||||
Font *font = nullptr;
|
||||
|
||||
// Convert to Rasterizer, if necessary.
|
||||
if (!luax_istype(L, 1, FONT_RASTERIZER_ID))
|
||||
if (!luax_istype(L, 1, love::font::Rasterizer::type))
|
||||
{
|
||||
std::vector<int> idxs;
|
||||
for (int i = 0; i < lua_gettop(L); i++)
|
||||
@@ -642,14 +642,14 @@ int w_newFont(lua_State *L)
|
||||
luax_convobj(L, &idxs[0], (int) idxs.size(), "font", "newRasterizer");
|
||||
}
|
||||
|
||||
love::font::Rasterizer *rasterizer = luax_checktype<love::font::Rasterizer>(L, 1, FONT_RASTERIZER_ID);
|
||||
love::font::Rasterizer *rasterizer = luax_checktype<love::font::Rasterizer>(L, 1);
|
||||
|
||||
luax_catchexcept(L, [&]() {
|
||||
font = instance()->newFont(rasterizer, instance()->getDefaultFilter()); }
|
||||
);
|
||||
|
||||
// Push the type.
|
||||
luax_pushtype(L, GRAPHICS_FONT_ID, font);
|
||||
luax_pushtype(L, font);
|
||||
font->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -662,19 +662,19 @@ int w_newImageFont(lua_State *L)
|
||||
Texture::Filter filter = instance()->getDefaultFilter();
|
||||
|
||||
// Convert to ImageData if necessary.
|
||||
if (luax_istype(L, 1, GRAPHICS_IMAGE_ID))
|
||||
if (luax_istype(L, 1, Image::type))
|
||||
{
|
||||
Image *i = luax_checktype<Image>(L, 1, GRAPHICS_IMAGE_ID);
|
||||
Image *i = luax_checktype<Image>(L, 1);
|
||||
filter = i->getFilter();
|
||||
const auto &idlevels = i->getImageData();
|
||||
if (idlevels.empty())
|
||||
return luaL_argerror(L, 1, "Image must not be compressed.");
|
||||
luax_pushtype(L, IMAGE_IMAGE_DATA_ID, idlevels[0].get());
|
||||
luax_pushtype(L, idlevels[0].get());
|
||||
lua_replace(L, 1);
|
||||
}
|
||||
|
||||
// Convert to Rasterizer if necessary.
|
||||
if (!luax_istype(L, 1, FONT_RASTERIZER_ID))
|
||||
if (!luax_istype(L, 1, love::font::Rasterizer::type))
|
||||
{
|
||||
luaL_checktype(L, 2, LUA_TSTRING);
|
||||
|
||||
@@ -685,13 +685,13 @@ int w_newImageFont(lua_State *L)
|
||||
luax_convobj(L, &idxs[0], (int) idxs.size(), "font", "newImageRasterizer");
|
||||
}
|
||||
|
||||
love::font::Rasterizer *rasterizer = luax_checktype<love::font::Rasterizer>(L, 1, FONT_RASTERIZER_ID);
|
||||
love::font::Rasterizer *rasterizer = luax_checktype<love::font::Rasterizer>(L, 1);
|
||||
|
||||
// Create the font.
|
||||
Font *font = instance()->newFont(rasterizer, filter);
|
||||
|
||||
// Push the type.
|
||||
luax_pushtype(L, GRAPHICS_FONT_ID, font);
|
||||
luax_pushtype(L, font);
|
||||
font->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -715,7 +715,7 @@ int w_newSpriteBatch(lua_State *L)
|
||||
[&](){ t = instance()->newSpriteBatch(texture, size, usage); }
|
||||
);
|
||||
|
||||
luax_pushtype(L, GRAPHICS_SPRITE_BATCH_ID, t);
|
||||
luax_pushtype(L, t);
|
||||
t->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -734,7 +734,7 @@ int w_newParticleSystem(lua_State *L)
|
||||
[&](){ t = instance()->newParticleSystem(texture, int(size)); }
|
||||
);
|
||||
|
||||
luax_pushtype(L, GRAPHICS_PARTICLE_SYSTEM_ID, t);
|
||||
luax_pushtype(L, t);
|
||||
t->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -761,7 +761,7 @@ int w_newCanvas(lua_State *L)
|
||||
if (canvas == nullptr)
|
||||
return luaL_error(L, "Canvas not created, but no error thrown. I don't even...");
|
||||
|
||||
luax_pushtype(L, GRAPHICS_CANVAS_ID, canvas);
|
||||
luax_pushtype(L, canvas);
|
||||
canvas->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -854,7 +854,7 @@ int w_newShader(lua_State *L)
|
||||
try
|
||||
{
|
||||
Shader *shader = instance()->newShader(source);
|
||||
luax_pushtype(L, GRAPHICS_SHADER_ID, shader);
|
||||
luax_pushtype(L, shader);
|
||||
shader->release();
|
||||
}
|
||||
catch (love::Exception &e)
|
||||
@@ -1003,10 +1003,10 @@ static Mesh *newCustomMesh(lua_State *L)
|
||||
int vertexcount = (int) luaL_checknumber(L, 2);
|
||||
luax_catchexcept(L, [&](){ t = instance()->newMesh(vertexformat, vertexcount, drawmode, usage); });
|
||||
}
|
||||
else if (luax_istype(L, 2, DATA_ID))
|
||||
else if (luax_istype(L, 2, Data::type))
|
||||
{
|
||||
// Vertex data comes directly from a Data object.
|
||||
Data *data = luax_checktype<Data>(L, 2, DATA_ID);
|
||||
Data *data = luax_checktype<Data>(L, 2);
|
||||
luax_catchexcept(L, [&](){ t = instance()->newMesh(vertexformat, data->getData(), data->getSize(), drawmode, usage); });
|
||||
}
|
||||
else
|
||||
@@ -1086,7 +1086,7 @@ int w_newMesh(lua_State *L)
|
||||
else
|
||||
t = newStandardMesh(L);
|
||||
|
||||
luax_pushtype(L, GRAPHICS_MESH_ID, t);
|
||||
luax_pushtype(L, t);
|
||||
t->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -1108,7 +1108,7 @@ int w_newText(lua_State *L)
|
||||
luax_catchexcept(L, [&](){ t = instance()->newText(font, text); });
|
||||
}
|
||||
|
||||
luax_pushtype(L, GRAPHICS_TEXT_ID, t);
|
||||
luax_pushtype(L, t);
|
||||
t->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -1117,14 +1117,14 @@ int w_newVideo(lua_State *L)
|
||||
{
|
||||
luax_checkgraphicscreated(L);
|
||||
|
||||
if (!luax_istype(L, 1, VIDEO_VIDEO_STREAM_ID))
|
||||
if (!luax_istype(L, 1, love::video::VideoStream::type))
|
||||
luax_convobj(L, 1, "video", "newVideoStream");
|
||||
|
||||
auto stream = luax_checktype<love::video::VideoStream>(L, 1, VIDEO_VIDEO_STREAM_ID);
|
||||
auto stream = luax_checktype<love::video::VideoStream>(L, 1);
|
||||
Video *video = nullptr;
|
||||
|
||||
luax_catchexcept(L, [&]() { video = instance()->newVideo(stream); });
|
||||
luax_pushtype(L, GRAPHICS_VIDEO_ID, video);
|
||||
luax_pushtype(L, video);
|
||||
video->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -1204,14 +1204,14 @@ int w_getBackgroundColor(lua_State *L)
|
||||
int w_setNewFont(lua_State *L)
|
||||
{
|
||||
int ret = w_newFont(L);
|
||||
Font *font = luax_checktype<Font>(L, -1, GRAPHICS_FONT_ID);
|
||||
Font *font = luax_checktype<Font>(L, -1);
|
||||
instance()->setFont(font);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int w_setFont(lua_State *L)
|
||||
{
|
||||
Font *font = luax_checktype<Font>(L, 1, GRAPHICS_FONT_ID);
|
||||
Font *font = luax_checktype<Font>(L, 1);
|
||||
instance()->setFont(font);
|
||||
return 0;
|
||||
}
|
||||
@@ -1221,7 +1221,7 @@ int w_getFont(lua_State *L)
|
||||
Font *f = nullptr;
|
||||
luax_catchexcept(L, [&](){ f = instance()->getFont(); });
|
||||
|
||||
luax_pushtype(L, GRAPHICS_FONT_ID, f);
|
||||
luax_pushtype(L, f);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1463,7 +1463,7 @@ int w_getShader(lua_State *L)
|
||||
{
|
||||
Shader *shader = instance()->getShader();
|
||||
if (shader)
|
||||
luax_pushtype(L, GRAPHICS_SHADER_ID, shader);
|
||||
luax_pushtype(L, shader);
|
||||
else
|
||||
lua_pushnil(L);
|
||||
|
||||
@@ -1626,10 +1626,10 @@ int w_draw(lua_State *L)
|
||||
Quad *quad = nullptr;
|
||||
int startidx = 2;
|
||||
|
||||
if (luax_istype(L, 2, GRAPHICS_QUAD_ID))
|
||||
if (luax_istype(L, 2, Quad::type))
|
||||
{
|
||||
texture = luax_checktexture(L, 1);
|
||||
quad = luax_totype<Quad>(L, 2, GRAPHICS_QUAD_ID);
|
||||
quad = luax_totype<Quad>(L, 2);
|
||||
startidx = 3;
|
||||
}
|
||||
else if (lua_isnil(L, 2) && !lua_isnoneornil(L, 3))
|
||||
@@ -1638,13 +1638,13 @@ int w_draw(lua_State *L)
|
||||
}
|
||||
else
|
||||
{
|
||||
drawable = luax_checktype<Drawable>(L, 1, GRAPHICS_DRAWABLE_ID);
|
||||
drawable = luax_checktype<Drawable>(L, 1);
|
||||
startidx = 2;
|
||||
}
|
||||
|
||||
if (luax_istype(L, startidx, MATH_TRANSFORM_ID))
|
||||
if (luax_istype(L, startidx, math::Transform::type))
|
||||
{
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, startidx, MATH_TRANSFORM_ID);
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, startidx);
|
||||
luax_catchexcept(L, [&]() {
|
||||
if (texture && quad)
|
||||
instance()->drawq(texture, quad, tf->getMatrix());
|
||||
@@ -1682,9 +1682,9 @@ int w_print(lua_State *L)
|
||||
std::vector<Font::ColoredString> str;
|
||||
luax_checkcoloredstring(L, 1, str);
|
||||
|
||||
if (luax_istype(L, 2, MATH_TRANSFORM_ID))
|
||||
if (luax_istype(L, 2, math::Transform::type))
|
||||
{
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 2, MATH_TRANSFORM_ID);
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 2);
|
||||
luax_catchexcept(L, [&](){ instance()->print(str, tf->getMatrix()); });
|
||||
}
|
||||
else
|
||||
@@ -1716,9 +1716,9 @@ int w_printf(lua_State *L)
|
||||
|
||||
int formatidx = 4;
|
||||
|
||||
if (luax_istype(L, 2, MATH_TRANSFORM_ID))
|
||||
if (luax_istype(L, 2, math::Transform::type))
|
||||
{
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 2, MATH_TRANSFORM_ID);
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 2);
|
||||
m = tf->getMatrix();
|
||||
formatidx = 3;
|
||||
}
|
||||
@@ -2047,9 +2047,9 @@ int w_push(lua_State *L)
|
||||
|
||||
luax_catchexcept(L, [&](){ instance()->push(stype); });
|
||||
|
||||
if (luax_istype(L, 2, MATH_TRANSFORM_ID))
|
||||
if (luax_istype(L, 2, math::Transform::type))
|
||||
{
|
||||
math::Transform *t = luax_totype<math::Transform>(L, 2, MATH_TRANSFORM_ID);
|
||||
math::Transform *t = luax_totype<math::Transform>(L, 2);
|
||||
instance()->applyTransform(t);
|
||||
}
|
||||
|
||||
@@ -2250,7 +2250,7 @@ static const luaL_Reg functions[] =
|
||||
|
||||
static int luaopen_drawable(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_DRAWABLE_ID, "Drawable", nullptr);
|
||||
return luax_register_type(L, &Drawable::type, nullptr);
|
||||
}
|
||||
|
||||
// Types for this module.
|
||||
@@ -2284,7 +2284,7 @@ extern "C" int luaopen_love_graphics(lua_State *L)
|
||||
WrappedModule w;
|
||||
w.module = instance;
|
||||
w.name = "graphics";
|
||||
w.type = MODULE_GRAPHICS_ID;
|
||||
w.type = &Graphics::type;
|
||||
w.functions = functions;
|
||||
w.types = types;
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace opengl
|
||||
|
||||
Image *luax_checkimage(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Image>(L, idx, GRAPHICS_IMAGE_ID);
|
||||
return luax_checktype<Image>(L, idx);
|
||||
}
|
||||
|
||||
int w_Image_setMipmapFilter(lua_State *L)
|
||||
@@ -98,7 +98,7 @@ int w_Image_getData(lua_State *L)
|
||||
{
|
||||
for (const auto &cdata : i->getCompressedData())
|
||||
{
|
||||
luax_pushtype(L, IMAGE_COMPRESSED_IMAGE_DATA_ID, cdata.get());
|
||||
luax_pushtype(L, cdata.get());
|
||||
n++;
|
||||
}
|
||||
}
|
||||
@@ -106,7 +106,7 @@ int w_Image_getData(lua_State *L)
|
||||
{
|
||||
for (const auto &data : i->getImageData())
|
||||
{
|
||||
luax_pushtype(L, IMAGE_IMAGE_DATA_ID, data.get());
|
||||
luax_pushtype(L, data.get());
|
||||
n++;
|
||||
}
|
||||
}
|
||||
@@ -150,7 +150,7 @@ static const luaL_Reg w_Image_functions[] =
|
||||
|
||||
extern "C" int luaopen_image(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_IMAGE_ID, "Image", w_Texture_functions, w_Image_functions, nullptr);
|
||||
return luax_register_type(L, &Image::type, w_Texture_functions, w_Image_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace opengl
|
||||
|
||||
Mesh *luax_checkmesh(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Mesh>(L, idx, GRAPHICS_MESH_ID);
|
||||
return luax_checktype<Mesh>(L, idx);
|
||||
}
|
||||
|
||||
static inline size_t writeByteData(lua_State *L, int startidx, int components, char *data)
|
||||
@@ -117,9 +117,9 @@ int w_Mesh_setVertices(lua_State *L)
|
||||
size_t stride = t->getVertexStride();
|
||||
size_t byteoffset = vertoffset * stride;
|
||||
|
||||
if (luax_istype(L, 2, DATA_ID))
|
||||
if (luax_istype(L, 2, Data::type))
|
||||
{
|
||||
Data *d = luax_checktype<Data>(L, 2, DATA_ID);
|
||||
Data *d = luax_checktype<Data>(L, 2);
|
||||
|
||||
size_t datasize = std::min(d->getSize(), (t->getVertexCount() - vertoffset) * stride);
|
||||
char *bytedata = (char *) t->mapVertexData() + byteoffset;
|
||||
@@ -448,9 +448,9 @@ int w_Mesh_getTexture(lua_State *L)
|
||||
|
||||
// FIXME: big hack right here.
|
||||
if (typeid(*tex) == typeid(Image))
|
||||
luax_pushtype(L, GRAPHICS_IMAGE_ID, tex);
|
||||
luax_pushtype(L, Image::type, tex);
|
||||
else if (typeid(*tex) == typeid(Canvas))
|
||||
luax_pushtype(L, GRAPHICS_CANVAS_ID, tex);
|
||||
luax_pushtype(L, Canvas::type, tex);
|
||||
else
|
||||
return luaL_error(L, "Unable to determine texture type.");
|
||||
|
||||
@@ -540,7 +540,7 @@ static const luaL_Reg w_Mesh_functions[] =
|
||||
|
||||
extern "C" int luaopen_mesh(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_MESH_ID, "Mesh", w_Mesh_functions, nullptr);
|
||||
return luax_register_type(L, &Mesh::type, w_Mesh_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace opengl
|
||||
|
||||
ParticleSystem *luax_checkparticlesystem(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<ParticleSystem>(L, idx, GRAPHICS_PARTICLE_SYSTEM_ID);
|
||||
return luax_checktype<ParticleSystem>(L, idx);
|
||||
}
|
||||
|
||||
int w_ParticleSystem_clone(lua_State *L)
|
||||
@@ -51,7 +51,7 @@ int w_ParticleSystem_clone(lua_State *L)
|
||||
ParticleSystem *clone = nullptr;
|
||||
luax_catchexcept(L, [&](){ clone = t->clone(); });
|
||||
|
||||
luax_pushtype(L, GRAPHICS_PARTICLE_SYSTEM_ID, clone);
|
||||
luax_pushtype(L, clone);
|
||||
clone->release();
|
||||
return 1;
|
||||
}
|
||||
@@ -71,9 +71,9 @@ int w_ParticleSystem_getTexture(lua_State *L)
|
||||
|
||||
// FIXME: big hack right here.
|
||||
if (typeid(*tex) == typeid(Image))
|
||||
luax_pushtype(L, GRAPHICS_IMAGE_ID, tex);
|
||||
luax_pushtype(L, Image::type, tex);
|
||||
else if (typeid(*tex) == typeid(Canvas))
|
||||
luax_pushtype(L, GRAPHICS_CANVAS_ID, tex);
|
||||
luax_pushtype(L, Canvas::type, tex);
|
||||
else
|
||||
return luaL_error(L, "Unable to determine texture type.");
|
||||
|
||||
@@ -584,7 +584,7 @@ int w_ParticleSystem_setQuads(lua_State *L)
|
||||
{
|
||||
lua_rawgeti(L, 2, i);
|
||||
|
||||
Quad *q = luax_checktype<Quad>(L, -1, GRAPHICS_QUAD_ID);
|
||||
Quad *q = luax_checktype<Quad>(L, -1);
|
||||
quads.push_back(q);
|
||||
|
||||
lua_pop(L, 1);
|
||||
@@ -594,7 +594,7 @@ int w_ParticleSystem_setQuads(lua_State *L)
|
||||
{
|
||||
for (int i = 2; i <= lua_gettop(L); i++)
|
||||
{
|
||||
Quad *q = luax_checktype<Quad>(L, i, GRAPHICS_QUAD_ID);
|
||||
Quad *q = luax_checktype<Quad>(L, i);
|
||||
quads.push_back(q);
|
||||
}
|
||||
}
|
||||
@@ -612,7 +612,7 @@ int w_ParticleSystem_getQuads(lua_State *L)
|
||||
|
||||
for (int i = 0; i < (int) quads.size(); i++)
|
||||
{
|
||||
luax_pushtype(L, GRAPHICS_QUAD_ID, quads[i]);
|
||||
luax_pushtype(L, quads[i]);
|
||||
lua_rawseti(L, -2, i + 1);
|
||||
}
|
||||
|
||||
@@ -772,7 +772,7 @@ static const luaL_Reg w_ParticleSystem_functions[] =
|
||||
|
||||
extern "C" int luaopen_particlesystem(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_PARTICLE_SYSTEM_ID, "ParticleSystem", w_ParticleSystem_functions, nullptr);
|
||||
return luax_register_type(L, &ParticleSystem::type, w_ParticleSystem_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace opengl
|
||||
|
||||
Shader *luax_checkshader(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Shader>(L, idx, GRAPHICS_SHADER_ID);
|
||||
return luax_checktype<Shader>(L, idx);
|
||||
}
|
||||
|
||||
int w_Shader_getWarnings(lua_State *L)
|
||||
@@ -165,9 +165,9 @@ int w_Shader_sendMatrices(lua_State *L, int startidx, Shader *shader, const Shad
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
if (columns == 4 && rows == 4 && luax_istype(L, startidx + i, MATH_TRANSFORM_ID))
|
||||
if (columns == 4 && rows == 4 && luax_istype(L, startidx + i, math::Transform::type))
|
||||
{
|
||||
math::Transform *t = luax_totype<math::Transform>(L, startidx + i, MATH_TRANSFORM_ID);
|
||||
math::Transform *t = luax_totype<math::Transform>(L, startidx + i);
|
||||
memcpy(&values[i * 16], t->getMatrix().getElements(), sizeof(float) * 16);
|
||||
continue;
|
||||
}
|
||||
@@ -328,7 +328,7 @@ static const luaL_Reg w_Shader_functions[] =
|
||||
|
||||
extern "C" int luaopen_shader(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_SHADER_ID, "Shader", w_Shader_functions, nullptr);
|
||||
return luax_register_type(L, &Shader::type, w_Shader_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -37,24 +37,24 @@ namespace opengl
|
||||
|
||||
SpriteBatch *luax_checkspritebatch(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<SpriteBatch>(L, idx, GRAPHICS_SPRITE_BATCH_ID);
|
||||
return luax_checktype<SpriteBatch>(L, idx);
|
||||
}
|
||||
|
||||
static inline int w_SpriteBatch_add_or_set(lua_State *L, SpriteBatch *t, int startidx, int index)
|
||||
{
|
||||
Quad *quad = nullptr;
|
||||
|
||||
if (luax_istype(L, startidx, GRAPHICS_QUAD_ID))
|
||||
if (luax_istype(L, startidx, Quad::type))
|
||||
{
|
||||
quad = luax_totype<Quad>(L, startidx, GRAPHICS_QUAD_ID);
|
||||
quad = luax_totype<Quad>(L, startidx);
|
||||
startidx++;
|
||||
}
|
||||
else if (lua_isnil(L, startidx) && !lua_isnoneornil(L, startidx + 1))
|
||||
return luax_typerror(L, startidx, "Quad");
|
||||
|
||||
if (luax_istype(L, startidx, MATH_TRANSFORM_ID))
|
||||
if (luax_istype(L, startidx, math::Transform::type))
|
||||
{
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, startidx, MATH_TRANSFORM_ID);
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, startidx);
|
||||
luax_catchexcept(L, [&]() {
|
||||
if (quad)
|
||||
index = t->addq(quad, tf->getMatrix(), index);
|
||||
@@ -136,9 +136,9 @@ int w_SpriteBatch_getTexture(lua_State *L)
|
||||
|
||||
// FIXME: big hack right here.
|
||||
if (typeid(*tex) == typeid(Image))
|
||||
luax_pushtype(L, GRAPHICS_IMAGE_ID, tex);
|
||||
luax_pushtype(L, Image::type, tex);
|
||||
else if (typeid(*tex) == typeid(Canvas))
|
||||
luax_pushtype(L, GRAPHICS_CANVAS_ID, tex);
|
||||
luax_pushtype(L, Canvas::type, tex);
|
||||
else
|
||||
return luaL_error(L, "Unable to determine texture type.");
|
||||
|
||||
@@ -215,7 +215,7 @@ int w_SpriteBatch_attachAttribute(lua_State *L)
|
||||
{
|
||||
SpriteBatch *t = luax_checkspritebatch(L, 1);
|
||||
const char *name = luaL_checkstring(L, 2);
|
||||
Mesh *m = luax_checktype<Mesh>(L, 3, GRAPHICS_MESH_ID);
|
||||
Mesh *m = luax_checktype<Mesh>(L, 3);
|
||||
|
||||
luax_catchexcept(L, [&](){ t->attachAttribute(name, m); });
|
||||
return 0;
|
||||
@@ -271,7 +271,7 @@ static const luaL_Reg w_SpriteBatch_functions[] =
|
||||
|
||||
extern "C" int luaopen_spritebatch(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_SPRITE_BATCH_ID, "SpriteBatch", w_SpriteBatch_functions, nullptr);
|
||||
return luax_register_type(L, &SpriteBatch::type, w_SpriteBatch_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace opengl
|
||||
|
||||
Text *luax_checktext(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Text>(L, idx, GRAPHICS_TEXT_ID);
|
||||
return luax_checktype<Text>(L, idx);
|
||||
}
|
||||
|
||||
void luax_checkcoloredstring(lua_State *L, int idx, std::vector<Font::ColoredString> &strings)
|
||||
@@ -132,9 +132,9 @@ int w_Text_add(lua_State *L)
|
||||
std::vector<Font::ColoredString> text;
|
||||
luax_checkcoloredstring(L, 2, text);
|
||||
|
||||
if (luax_istype(L, 3, MATH_TRANSFORM_ID))
|
||||
if (luax_istype(L, 3, math::Transform::type))
|
||||
{
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 3, MATH_TRANSFORM_ID);
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 3);
|
||||
luax_catchexcept(L, [&](){ index = t->add(text, tf->getMatrix()); });
|
||||
}
|
||||
else
|
||||
@@ -174,9 +174,9 @@ int w_Text_addf(lua_State *L)
|
||||
if (!Font::getConstant(alignstr, align))
|
||||
return luaL_error(L, "Invalid align mode: %s", alignstr);
|
||||
|
||||
if (luax_istype(L, 5, MATH_TRANSFORM_ID))
|
||||
if (luax_istype(L, 5, math::Transform::type))
|
||||
{
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 5, MATH_TRANSFORM_ID);
|
||||
math::Transform *tf = luax_totype<math::Transform>(L, 5);
|
||||
luax_catchexcept(L, [&](){ index = t->addf(text, wrap, align, tf->getMatrix()); });
|
||||
}
|
||||
else
|
||||
@@ -209,7 +209,7 @@ int w_Text_clear(lua_State *L)
|
||||
int w_Text_setFont(lua_State *L)
|
||||
{
|
||||
Text *t = luax_checktext(L, 1);
|
||||
Font *f = luax_checktype<Font>(L, 2, GRAPHICS_FONT_ID);
|
||||
Font *f = luax_checktype<Font>(L, 2);
|
||||
luax_catchexcept(L, [&](){ t->setFont(f); });
|
||||
return 0;
|
||||
}
|
||||
@@ -218,7 +218,7 @@ int w_Text_getFont(lua_State *L)
|
||||
{
|
||||
Text *t = luax_checktext(L, 1);
|
||||
Font *f = t->getFont();
|
||||
luax_pushtype(L, GRAPHICS_FONT_ID, f);
|
||||
luax_pushtype(L, f);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ static const luaL_Reg w_Text_functions[] =
|
||||
|
||||
extern "C" int luaopen_text(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_TEXT_ID, "Text", w_Text_functions, nullptr);
|
||||
return luax_register_type(L, &Text::type, w_Text_functions, nullptr);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
|
||||
@@ -34,13 +34,13 @@ namespace opengl
|
||||
|
||||
Video *luax_checkvideo(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Video>(L, idx, GRAPHICS_VIDEO_ID);
|
||||
return luax_checktype<Video>(L, idx);
|
||||
}
|
||||
|
||||
int w_Video_getStream(lua_State *L)
|
||||
{
|
||||
Video *video = luax_checkvideo(L, 1);
|
||||
luax_pushtype(L, VIDEO_VIDEO_STREAM_ID, video->getStream());
|
||||
luax_pushtype(L, video->getStream());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ int w_Video_getSource(lua_State *L)
|
||||
Video *video = luax_checkvideo(L, 1);
|
||||
auto source = video->getSource();
|
||||
if (source)
|
||||
luax_pushtype(L, AUDIO_SOURCE_ID, video->getSource());
|
||||
luax_pushtype(L, video->getSource());
|
||||
else
|
||||
lua_pushnil(L);
|
||||
return 1;
|
||||
@@ -62,7 +62,7 @@ int w_Video_setSource(lua_State *L)
|
||||
video->setSource(nullptr);
|
||||
else
|
||||
{
|
||||
auto source = luax_checktype<love::audio::Source>(L, 2, AUDIO_SOURCE_ID);
|
||||
auto source = luax_checktype<love::audio::Source>(L, 2);
|
||||
video->setSource(source);
|
||||
}
|
||||
return 0;
|
||||
@@ -143,10 +143,10 @@ static const luaL_Reg functions[] =
|
||||
|
||||
int luaopen_video(lua_State *L)
|
||||
{
|
||||
int ret = luax_register_type(L, GRAPHICS_VIDEO_ID, "Video", functions, nullptr);
|
||||
int ret = luax_register_type(L, &Video::type, functions, nullptr);
|
||||
|
||||
luaL_loadbuffer(L, video_lua, sizeof(video_lua), "Video.lua");
|
||||
luax_gettypemetatable(L, GRAPHICS_VIDEO_ID);
|
||||
luax_gettypemetatable(L, Video::type);
|
||||
lua_call(L, 1, 0);
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace graphics
|
||||
|
||||
Quad *luax_checkquad(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Quad>(L, idx, GRAPHICS_QUAD_ID);
|
||||
return luax_checktype<Quad>(L, idx);
|
||||
}
|
||||
|
||||
int w_Quad_setViewport(lua_State *L)
|
||||
@@ -84,7 +84,7 @@ static const luaL_Reg w_Quad_functions[] =
|
||||
|
||||
extern "C" int luaopen_quad(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_QUAD_ID, "Quad", w_Quad_functions, nullptr);
|
||||
return luax_register_type(L, &Quad::type, w_Quad_functions, nullptr);
|
||||
}
|
||||
|
||||
} // graphics
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace graphics
|
||||
|
||||
Texture *luax_checktexture(lua_State *L, int idx)
|
||||
{
|
||||
return luax_checktype<Texture>(L, idx, GRAPHICS_TEXTURE_ID);
|
||||
return luax_checktype<Texture>(L, idx);
|
||||
}
|
||||
|
||||
int w_Texture_getWidth(lua_State *L)
|
||||
@@ -139,7 +139,7 @@ const luaL_Reg w_Texture_functions[] =
|
||||
|
||||
extern "C" int luaopen_texture(lua_State *L)
|
||||
{
|
||||
return luax_register_type(L, GRAPHICS_TEXTURE_ID, "Texture", w_Texture_functions, nullptr);
|
||||
return luax_register_type(L, &Texture::type, w_Texture_functions, nullptr);
|
||||
}
|
||||
|
||||
} // graphics
|
||||
|
||||
Reference in New Issue
Block a user