Commit Graph

248 Commits

Author SHA1 Message Date
rude 7a260af39f Add 0.10.0 (Super Toast) no-game screen.
This commit adds a version codename and accompanying no-game screen. It should
cause at least a few seizures, if we're lucky. (Press 'F' for fullscreen).

Colors could use some tweaks, probably ... and it would be cool if various
hypnotizing patterns appeared intermittedly in the mosiac ... but that's for
the next commit. (Only two years until next time)!
2015-11-10 23:17:48 +01:00
Alex Szpakowski d3d970b925 Renamed iOS.mm and iOS.h to ios.mm and ios.h, to match the naming conventions of other files. 2015-08-27 18:46:04 -03:00
Alex Szpakowski e979455772 love.event.quit now accepts a single (optional) argument, which is used as the program's exit status number. Resolves issue #1070. 2015-08-25 17:12:59 -03:00
Alex Szpakowski 9a1c4ad565 The iOS game list screen now also displays folders that contain main.lua. 2015-08-15 23:57:04 -03:00
Alex Szpakowski e44f20fdc6 Renamed OSX.mm/OSX.h to macosx.mm/macosx.h to match love's file naming conventions. 2015-08-15 00:41:45 -03:00
Alex Szpakowski db91a73d57 Trigger a Lua error if love.graphics.draw(canvas) is called while that canvas is the active one.
This only catches a subset of the possible accidental read-while-writing situations that can happen when using Canvases, unfortunately.
2015-08-14 22:46:29 -03:00
Alex Szpakowski 9be2581e6f Implemented love.system.vibrate on iOS. Unfortunately due to API limitations the duration argument is ignored, and it always vibrates for roughly 0.5 seconds. 2015-08-14 21:30:07 -03:00
Martin Felis f5778ed86e Added a LOVE_ANDROID define and Android-specific code that interacts with the JNI and SDL. 2015-08-13 19:38:07 -03:00
Alex Szpakowski bfef97c48a Slightly reduced the CPU usage of SpriteBatch:add, Text:add, and love.graphics.draw(ParticleSystem). 2015-08-11 18:01:24 -03:00
Alex Szpakowski 99acec83c9 Renamed some internal functions to avoid name conflicts when some third-party code is #included. 2015-08-03 20:27:46 -03:00
Bart van Strien c15f4b5f26 Modify __tostring so it also shows a pointer, like lua does for tables
This should make it easier to identify unique objects.
Also modified internal code relying on tostring behaviour, and it should now
call its type method instead.
2015-08-01 19:55:41 +02:00
Alex Szpakowski 2cce18946d Fixed objects which store Lua callback functions to avoid attempting to use dead coroutines when deleting the reference to the callback function. Should fix crashes when coroutines are mixed with those objects.
Also improved the performance of World:rayCast and World:queryBoundingBox.
2015-07-18 03:26:07 -03:00
Alex Szpakowski 1e8786879b Re-added the built-in NormalMatrix uniform 3x3 matrix variable to shaders. 2015-06-26 21:51:22 -03:00
Alex Szpakowski d8fd1413d6 Renamed the internal 'Matrix' class to 'Matrix4'. 2015-06-26 19:34:05 -03:00
Alex Szpakowski 073570b7af Fixed the return type of luax_objlen. 2015-06-16 20:57:31 -03:00
Bart van Strien 3cb777e2b7 Add basic lua 5.3 support 2015-06-16 10:25:41 +02:00
Alex Szpakowski 532c61c6c2 Implemented efficient FFI versions of SoundData methods, which are used when the LuaJIT FFI and JIT compiler are present. 2015-06-14 18:41:34 -03:00
Alex Szpakowski 59e4b1b8d6 Removed some debug prints on iOS. 2015-06-11 21:16:28 -03:00
Alex Szpakowski cf73aa0107 Added love.window.requestAttention. Bounces the dock icon in OS X and flashes the taskbar icon in Windows when called, if the program isn't in focus. 2015-06-07 19:40:46 -03:00
Bart van Strien 6ef6f85d0c Restore 0-argument love.graphics.newFont/love.font.newRasterizer
Fix subtle bug in luax_convobj in the process, it couldn't deal with 0 arguments
before.
2015-06-07 23:10:48 +02:00
Alex Szpakowski 0f986b10aa Cleaned up some code, the 'ry' parameter of love.graphics.rectangle now defaults to the value of 'rx' rather than defaulting to 0. 2015-05-27 17:36:27 -03:00
Alex Szpakowski c3fd7a25a3 Fixed some misc. compiler warnings. 2015-05-23 12:45:58 -03:00
Alex Szpakowski 811b2db466 The full executable path, rather than argv[0], is now used when determining whether the executable is fused (resolves issue #1043.) 2015-05-04 10:38:28 -03:00
Alex Szpakowski eee1fbac79 love.filesystem is now loaded by default in threads (see issue #1040.) 2015-05-01 21:20:23 -03:00
Alex Szpakowski 6e92bd8302 Improved the argument type checking for World:setCallbacks, World:setContactFilter, World:queryBoundingBox, and World:rayCast. 2015-04-27 18:48:13 -03:00
Alex Szpakowski 2844499ef7 Added the ability to have custom vertex attributes in Meshes (resolves issue #768.)
Added new love.graphics.newMesh variants: newMesh(vertexformat, vertices [, drawmode, meshusage]) and newMesh(vertexformat, numvertices [, drawmode, meshusage]).

Replaced the regular love.graphics.newMesh variants with newMesh(vertices [, drawmode, meshusage]) and newMesh(numvertices [, drawmode, meshusage]). To use an image or canvas with a mesh, use Mesh:setTexture.

vertexformat is a table with the following prototype:
{
  {attributename, datatype, components},
  {attributename, datatype, components},
  ...
}

Where attributename is the name of the vertex attribute (can be the built-in names 'VertexPosition', 'VertexTexCoord', or 'VertexColor', or a custom name for use in a vertex shader), datatype is the type of values used for the attribute ('float' or 'byte'), and components is the number of components in the vertex attribute (between 1 and 4.)

The vertex format is used to determine the layout of the vertices in the mesh, for example the 'regular' newMesh variants use this vertex format:
format = {
  {"VertexPosition", "float", 2},
  {"VertexTexCoord", "float", 2},
  {"VertexColor", "byte", 4},
}

The mesh usage parameter accepts the same constants as the spritebatch usage hint in love.graphics.newSpriteBatch - "dynamic", "static", and "stream".

Mesh:setVertex now sets *all* vertex attributes for a specific vertex in the Mesh.

Added Mesh:setVertexAttribute(vertexindex, attributeindex, attributevalue1, ...), which sets the values for a specific vertex attribute in a specific vertex in the Mesh (resolves issue #784.)

Added Mesh:getVertexFormat and Mesh:flush.

Added Mesh:setAttributeEnabled(attributename, enable) and Mesh:isAttributeEnabled(attributename), to enable or disable the use of a specific attribute when drawing the Mesh.

Added Mesh:attachAttribute(attributename, mesh), which makes the Mesh use a vertex attribute from another mesh when drawing the Mesh. This can be used to separate out vertex attributes which are updated at different rates into different meshes, and to share vertex data between multiple meshes.

Removed Mesh:setVertices, Mesh:getVertices, and Mesh:setVertexColors.
2015-04-08 22:24:17 -03:00
Alex Szpakowski cf0968fc6d Avoid some VC++ compiler warnings 2015-04-02 00:28:09 -03:00
Alex Szpakowski a29b349014 Added love.math.compress(data, format [, level]) and love.math.decompress(compresseddata) / love.math.decompress(compressedstring, format).
Renamed the love.image CompressedData type to CompressedImageData.

love.math.compress returns a love.math CompressedData object which holds the newly compressed data. Currently supported formats are "lz4" and "zlib". Note that the formats are not file formats and don't compress filesystem hierarchies.
2015-03-23 11:28:14 -03:00
Alex Szpakowski 4d92d00aff Fixed compilation on OSX/Windows/iOS 2015-03-23 00:24:06 -03:00
Bart van Strien 37f04a7f3d Set LOVE_LINUX when compiling under BSD (see issue #867)
Not technically correct, but it seems to be working, sample size 1.
2015-03-22 19:57:00 +01:00
Bart van Strien cb02452c08 Verify both platform and endianness have been determined in configuration 2015-03-22 14:26:25 +01:00
Alex Szpakowski afcad4defc Added new flag t.accelerometerjoystick to love.conf (true by default.) When set to false on mobile, the device's accelerometer will not show up as a joystick even if the joystick module is loaded.
This can reduce CPU usage if you don't use the accelerometer but you don't want to disable the joystick module entirely.
2015-03-07 15:36:53 -04:00
Alex Szpakowski dcbe7c4871 Added a static assert to make sure type IDs always have a corresponding type name.
--HG--
branch : minor
2015-03-01 18:42:02 -04:00
Alex Szpakowski 2f419c1c83 Replaced most cases of type bits and type name strings in love's Lua wrapper code with type id's.
--HG--
branch : minor
2015-03-01 18:32:41 -04:00
Alex Szpakowski 5822128c14 Copy/paste error...
--HG--
branch : minor
2015-02-21 22:03:34 -04:00
Alex Szpakowski 33d20620b5 The Proxy struct now stores an actual love::Object pointer (rather than void*), which makes code using Proxies a bit cleaner.
--HG--
branch : minor
2015-02-21 20:52:29 -04:00
Alex Szpakowski ebc68023a7 Fix many warnings about implicit integer conversions when compiling for 64 bits.
--HG--
branch : minor
2015-02-20 01:20:08 -04:00
Alex Szpakowski 85de3c41fb Initial iOS implementation.
--HG--
branch : minor
2015-02-20 00:21:21 -04:00
Alex Szpakowski 5652475dd2 Use lightuserdata instead of Lua numbers (doubles) to represent touch IDs.
--HG--
branch : minor
2015-02-17 22:46:20 -04:00
Alex Szpakowski 7f9abc1e77 Added love.touch module and touch screen events. Resolves issue #825.
Note: this implementation is slightly different from the implementation in the love 0.9.x Android and iOS ports!

Added love.touchpressed(id, x, y), love.touchmoved(id, x, y, dx, dy), and love.touchreleased(id, x, y, dx, dy).

id is a unique identifier for the touch press that persists until love.touchreleased. After that it is no longer unique.
x and y are the coordinates of the touch event in pixels within the window.
dx and dy are the amount in pixels that the touch has moved since the last event.

Added love.touch.getTouchCount and love.touch.getTouch(index).

love.touch.getTouch takes an index (not the same as an id. indices are not stable and don't correspond to a unique touch press.)
It returns the id of the touch and its current x and y coordinates in pixels.

--HG--
branch : minor
2015-02-16 16:29:45 -04:00
Alex Szpakowski 606f077e5d Moved Mac-specific code from platform/macosx/ to src/common/
--HG--
branch : minor
2015-02-15 23:44:35 -04:00
Alex Szpakowski ad1fbbf3ea Merged default into minor
--HG--
branch : minor
2015-01-29 21:27:05 -04:00
Bart van Strien 33d2331255 Adjust version header to resolve linker conflict with two definitions of love::VERSION in android builds
NOTE: Sadly, on some platforms, like linux, the linker is "smart" enough to have the previous code be completely ineffective, the checking will only work with versions of love >= 0.9.2
2015-01-24 23:09:49 +01:00
Alex Szpakowski cf60cf89fc De-namespaced a class, to make it less verbose. 2015-01-24 04:09:56 -04:00
Alex Szpakowski 970704c2b7 Added Text objects via love.graphics.newText(font [, textstring]). Reworked the internal code of Font objects to use fewer individual textures and less VRAM per object, and to be compatible with OpenGL ES. Slightly improved the performance of love.graphics.print and love.graphics.printf.
Text objects are Drawable objects that represent text on the screen. They decouple text drawing from text parsing and vertex uploading, in a similar manner to SpriteBatches. They also optionally allow efficient batching of text from the same Font in different relative coordinate transformations, without having many draw calls.

Text objects currently have the following methods:

Text:set(textstring) -- replaces any existing text in the object with the new string.
Text:setf(textstring, wraplimit, alignmode) -- replaces any existing text with formatted text using the new string.

Text:getFont() -- gets the Font object used for this Text object.
Text:getWidth() -- gets the width in pixels of the most recently added text in the Text object.
Text:getHeight() -- gets the height in pixels of the most recently added text in the Text object.

Text:add(textstring, x, y, angle, sx, sy, ox, oy, kx, ky) -- adds a new string to the text object using the specified relative coordinate transformation, without replacing existing text. This behaves much like SpriteBatch:add.
Text:addf(textstring, wraplimit, alignmode, x, y, angle, sx, sy, ox, oy, kx, ky) -- adds a new formatted string to the text object using the specified relative coordinate transformation.
Text:clear() -- clears all text from the object.

--HG--
branch : minor
2015-01-23 00:47:28 -04:00
Alex Szpakowski 2c3d94b4f8 No codename for 0.10.0 yet.
--HG--
branch : minor
2015-01-22 17:33:01 -04:00
Alex Szpakowski 5b98083e01 Merged default into minor
--HG--
branch : minor
2015-01-22 02:18:56 -04:00
Alex Szpakowski e82d1dfe54 Added Lua 5.3's UTF-8 module to LÖVE. Resolves issue #951.
The module must be required before use, i.e. utf8 = require("utf8").  API documentation can be found here: http://www.lua.org/manual/5.3/manual.html#6.5

Removing the last unicode character in a string (for proper backspace support in text boxes, for example) can be done using utf8.offset, e.g. text = text:sub(1, utf8.offset(text, -1) - 1).
2015-01-21 16:52:56 -04:00
Alex Szpakowski dfdd52e499 Added support for ETC1 and PVR1 compressed textures contained in KTX, PKM, and PVR files.
Most desktop graphics drivers don't support those formats.

--HG--
branch : minor
2015-01-20 03:18:28 -04:00
Alex Szpakowski 1253e3aae1 Updated version to 0.10.0.
--HG--
branch : minor
2015-01-16 15:54:18 -04:00