[1.12.2-SNAPSHOT] - [BREAKING CHANGE] GWT: Updated to 2.10.0. `com.google.jsinterop:jsinterop-annotations:2.0.2:sources` must be added as a dependency to your html project dependencies. - [BREAKING CHANGE] Android: Minimum API level is now level 19 (Android 4.4) - [BREAKING CHANGE] iOS: Increased min supported iOS version to 12.0. Update your Info.plist file if necessary. - [BREAKING CHANGE] Android, iOS: Exceptions occurring in Runnable tasks scheduled through Gdx.app.postRunnable() are no longer swallowed and will crash the app (add a protection if required). - iOS: Update to MobiVM 2.3.21 - iOS: The iOS backend now implements AudioDevice. It can be configured through IOSApplicationConfiguration with audioDeviceBufferSize/audioDeviceBufferCount - Fixed GlyphLayout for fixed width glyph offsets at the start and end of lines. - Fixed scene2d.ui layout for fractional positions and sizes. - LWJGL3: Added pauseWhenMinimized and pauseWhenLostFocus flags to Lwjgl3ApplicationConfiguration. - libGDX is now built using Java 17 due to Gradle 8 requirements. - New GDX Setup projects now use Gradle 8.4 and AGP Plugin 8.1.2 which require at least Java 17. - Fixed Timer#stop, remember time spent stopped and delay tasks when started again. #7281 - Android: Add configuration option to render under the cutout if available on the device. - Fix: Keep SelectBox popup from extending past right edge of stage. - Added Framebuffer multisample support (see GL31FrameBufferMultisampleTest.java for basic usage) - Fix: Fonts generated with gdx-freetype no longer bleed when drawn with a shadow - Fixed Timer tasks being run after cancellation. - Optimization of SpriteBatch in GL30 default modes, as indices do not need to be updated [1.12.1] - LWJGL3 Improvement: Audio device is automatically switched if it was changed in the operating system. - Tiled Fix: TiledLayer parallax default values fix - API Addition: TiledDrawable: Align can be set to manipulate the alignment of the rendering (TiledDrawable#setAlign, TiledDrawable#getAlign) - API Addition: TiledDrawable#draw: Also available as a static function (with align) if you don't want to create an extra instance per texture region - Android: Removed mouse catching added on 1.12.0 due to unintended effects (see #7187). - Android: Fixed touch state inconsistency when touching screen with 3 fingers on some devices (see #7256) - iOS: Update to MobiVM 2.3.20 - API Addition: Using "object" property in Tiled object now fetches MapObject being pointed to, and BaseTmxMapLoader includes method for fetching map where key is id and value is MapObject instance. - Update to LWJGL 3.3.3 - API Addition: Vector4 is just like Vector2 or Vector3, but with x, y, z, and w float components; a Vector4 can be passed as a shader uniform. - Fix: Fix crash with ANGLE GLES renderer - API Change: Use STBVorbis to decode ogg data for Sound - API Change: Remove usage of deprecated tag on GL30 - Lower GLIBC requirements to 2.17 in order to support older Linux systems - Fix: Fix setCursor releasing the caught cursor on the LWJGL 3 backend. - Fix crash in ParticleEditor and Flame - Fix bitwise precedence in ModelBatch#addMesh (float[] vertices, short[] indices) - Improve the default font's compatibility with GL30 - Fix potential IndexOutOfBoundsException on AsynchronousAndroidSound - API Addition: GwtGL20 & GwtGL30#glGetFramebufferAttachmentParameteriv - Fix Tiled classes not being registered in the reflection cache - Fix: Change androidx.fragment dependency to compileOnly - Fix borderless fullscreen when taskbar is on the left/top [1.12.0] - [BREAKING CHANGE] Added #touchCancelled to InputProcessor interface, see #6871. - [BREAKING CHANGE] Android: Immersive mode is now true by default. Set `useImmersiveMode` config to `false` to disable it. - [BREAKING CHANGE] iOS: Increased min supported iOS version to 11.0. Update your Info.plist file if necessary. - [BREAKING CHANGE] iOS: `hideHomeIndicator` set to `false` by default (was `true`). - [BREAKING CHANGE] iOS: `screenEdgesDeferringSystemGestures` set to `UIRectEdge.All` by default (was `UIRectEdge.None`). - [BREAKING CHANGE] iOS: preferred FPS is now uncapped by default, see #6717 - [BREAKING CHANGE] iOS: `ApplicationListener.create` and first `resize` are now called within `UIApplicationDelegate.didFinishLaunching`. Allows for earlier rendering and prevents black screen frames after launch screen. NOTE: App will get terminated if this method is blocked for more than 10-20 sec. - [BREAKING CHANGE] Actor#localToAscendantCoordinates throws an exception if the specified actor is not an ascendant. - [BREAKING CHANGE] WidgetGroup#hit first validates the layout. - [BREAKING CHANGE] Cell getters return object wrapper instead of primitives. - [BREAKING CHANGE] MeshPartBuilder#lastIndex now returns int instead of short. - [BREAKING CHANGE] 3D API - max bone weights is now configurable and limited to 4 by default. Change this value if you need less or more. See #6522. - [BREAKING CHANGE] Mesh#getVerticesBuffer, Mesh#getIndicesBuffer, VertexData#getBuffer, and IndexData#getBuffer are deprecated in favor to new methods with boolean parameter. If you subclassed some of these classes, you need to implement the new methods. - [BREAKING CHANGE] Desktop: The return value of AudioDevice#getLatency() is now in samples, and not milliseconds - [BREAKING CHANGE] iOS: 32 bit (armv7) builds are no longer supported. Builds must be 64 bit (arm64) only. - [BREAKING CHANGE] iOS: Use dynamic frameworks instead of static libs - [BREAKING CHANGE] optimized Mesh#bind and Mesh#unbind have a new parameter for instanced attribute locations. If you use these methods without instancing, you can pass a null value. - [BREAKING CHANGE] Dropped support for older libc versions since libGDX is now built on Ubuntu 20.04 (#7005) - [KNOWN ISSUE] Android drag behaviour. Gdx.input.getDeltaX() and Gdx.input.getDeltaY always return 0 for pointer 0. Fixed on next version. - Update to jnigen 2.4.1 - LWJGL Fix: setPosision() for MP3 files. - iOS: Add new MobiVM MetalANGLE backend - iOS: Update to MobiVM 2.3.19 - Update to LWJGL 3.3.2 - API Addition: Added Audio#switchOutputDevice and Audio#getAvailableOutputDevices to specify output devices. Only works for LWJGL3 - Fix LWJGL3: Audio doesn't die anymore, if a device gets disconnected - API Addition: Added Haptics API with 4 different Input#vibrate() methods with complete Android and iOS implementations. - API Addition: Vector2: Added static methods for angleDeg and angleRad - Fix: Fixed Android and iOS touch cancelled related issues, see #6871. - Javadoc: Add "-use" flag to javadoc generation - Android: gdx-setup now uses AGP 7.2.2 and SDK 32, requiring Android Studio Chipmunk or IntelliJ IDEA 2022.2 and JDK 11. - libGDX is now built using Java 11 due to new Android requirements. The rest of libGDX can still be built with JDK 8 and runtime compatibility of libGDX projects should be unaffected. - Fixed glViewport when using HdpiMode.Logical with the LWJGL3 backend. - Added Stage#actorRemoved to fire exit events just before an actor is removed. - ScrollPane#setScrollingDisabled avoids invalidate() if nothing changed. - Fixed incorrect ScrollPane#scrollTo. - API Addition: Added Texture3D support - Fix: Throw an exception when maximum Attribute count is reached to prevent silent failure. - API Fix: The cursor can now be catched on Android. - LWJGL3 Fix: Stereo audio can now be played on mono output devices. This may also improve downmixing to stereo and upmixing to surround. - API Addition: Added CheckBox#getImageDrawable. - FIX: HexagonalTiledMapRenderer now displays maps with the correct stagger index. - API Addition: Added I18NBundle#keys() method. - TOOLS Features: Save mode can be changed in Flame particle 3D editor. - API Addition: added WebGL 2.0 implementation to Gwt backend : you can enable it by GwtApplicationConfiguration#useGL30 - Added GLES31 and GLES32 support with Lwjgl3 backend implementation - API Addition: JsonReader#stop() to stop parsing. - API Change: TextureAtlas now uses FileHandle#reader so outside code can control the charset - API Fix: Intersector#isPointInTriangle - API Addition: The Skin serializer now supports useIntegerPositions - API Change: The skin serializer now treats scaledSize as a float - API Change: DataInput throws an EOF-Exception - API Fix: RenderBuffer leak in GLFrameBuffer class - API Change: Pixmap#setPixels will now verify it has been given a direct ByteBuffer - API Addition: glTexImage2D and glTexSubImage2D with offset parameter - API Addition: OrientedBoundingBox - API Addition: Tiled parallax factor support - API Fix: LWJGL 3’s borderless fullscreen works with negative monitor coords - API Fix: Update mouse x and y values immediately after calling #setCursorPosition - API Change: Never stall with AssetManager on GWT - API Change: Allow packed depth stencil buffer creation when not using GL30 - API Fix: Fixed DataInput#readString for non-ASCII - API Fix: LwjglGraphics.setupDisplay() is no longer choosing the wrong display mode - API Fix: MathUtils.lerpAngle() fixed for extreme inputs - MathUtils trigonometry improvements - Various Scene2D fixes and improvements - Fix: JsonValue#addChild now clears leftover list pointers, preventing inconsistent or looping JSON objects. [1.11.0] - [BREAKING CHANGE] iOS: Increased min supported iOS version to 9.0. Update your Info.plist file if necessary. - [BREAKING CHANGE] Removed Maven and Ant build systems. libGDX is now solely built with Gradle. See https://libgdx.com/dev/from-source/ for updated build instructions. - [BREAKING CHANGE] Android Moved natives loading out of static init block, see #5795 - [BREAKING CHANGE] Linux: Shared libraries are now built on Ubuntu 18.04 (up from Ubuntu 16.04) - [BREAKING CHANGE] The built-in font files arial-15.fnt and arial-15.png have been replaced with lsans-15.fnt and lsans-15.png; this may change some text layout that uses the built-in font, and code that expects arial-15 assets to be present must change to lsans-15. - [BREAKING CHANGE] Legacy LWJGL3 projects must update the sourceCompatibility to 1.8 or higher. - [BREAKING CHANGE] Android Removed hideStatusBar configuration, see #6683 - [BREAKING CHANGE] Lwjgl3ApplicationConfiguration#useOpenGL3 was replaced by #setOpenGLEmulation - Gradle build now takes -PjavaVersion=7|8|9... to specify the Java version against which to compile libGDX. Default is Java 7 for everything, except the LWJGL3 backend, which is compiled for Java 8. - LWJGL3 extension: Added gdx-lwjgl3-glfw-awt-macos extension. Fixes GLFW in such a way, that the LWJGL3/libGDX must no longer run on the main thread in macOS, which allows AWT to work in parallel, i.e. file dialogs, JFrames, ImageIO, etc. You no longer need to pass `-XstartOnFirstThread` when starting an LWJGL3 app on macOS. See `AwtTestLWJGL` in gdx-tests-lwjgl3. For more information, see https://github.com/libgdx/libgdx/pull/6772 - API Addition: Added LWJGL3 ANGLE support for x86_64 Windows, Linux, and macOS. Emulates OpenGL ES 2.0 through DirectX (Windows), desktop OpenGL (Linux), and Metal (macOS). May become the preferred method of rendering on macOS if Apple removes OpenGL support entirely. May fix some OpenGL driver issues. More information here: https://github.com/libgdx/libgdx/pull/6672 - iOS: Update to MobiVM 2.3.16 - Update to LWJGL 3.3.1 - API Addition: ObjLoader now supports ambientColor, ambientTexture, transparencyTexture, specularTexture and shininessTexture - API Addition: PointSpriteParticleBatch blending is now configurable. - TOOLS Features: Blending mode and sort mode can be changed in Flame particle 3D editor. - API Addition: Polygon methods setVertex, getVertex, getVertexCount, getCentroid. - API Addition: TMX built-in tile property "type" is now supported. - API Addition: Octree structure. - API Addition: Added StringBuilder#toStringAndClear() method. - FirstPersonCameraController keys mapping is now configurable - Fix: GlyphLayout: Several fixes for color markup runs with multi-line or wrapping texts - API change: GlyphLayout#GlyphRun is now one GlyphRun per line. "color" was removed from GlyphRun and is now handled by GlyphLayout. - Gdx Setup Tool: Target Android API 30 and update AGP plugin to 4.1.3 - API Fix: Sound IDs are now properly removed; this prevents changes to music instances with the same ID - API Fix: LWJGL3Net#openURI does now work on macOS & JDK >= 16 - API Fix: Fixed a possible deadlock with AssetManager#dispose() and #clear() - API Change: Enable the AL_DIRECT_CHANNELS_SOFT option for Sounds and AudioDevices as well to fix stereo sound - API Addition: CameraInputController#setInvertedControls(boolean) - API Removal: AnimatedTiledMapTile#frameCount - LWJGL 3 is now the default desktop backend. If you want to port your existing applications, take a look here: https://gist.github.com/crykn/eb37cb4f7a03d006b3a0ecad27292a2d - Brought the official and third-party extensions in gdx-setup up to date. Removed some unmaintained ones and added gdx-websockets & jbump. - API Fix: Escaped characters in XML attributes are now properly un-escaped - Bug Fix: AssetManager backslash conversion removed - fixes use of filenames containing backslashes - gdx-setup now places the assets directory in project root instead of android or core. See advanced settings (UI) or arguments (command line) if you don't want it in root. - API Fix: Resolved issues with LWJGL 3 and borderless fullscreen - API Addition: GeometryUtils,polygons isCCW, ensureClockwise, reverseVertices - API Addition: Added FreeTypeFontGenerator#hasCharGlyph method. - API Fix: Pool discard method now resets object by default. This fixes the known issue about Pool in libGDX 1.10.0. - API Addition: Split GWT reflection cache into two generated classes - API Fix: Fix Box2D memory leak with ropes on GWT - API Fix: Fix NPE in Type#getDeclaredAnnotation - API Addition: Add pause/resume methods to AudioDevice - API Fix: Protection against NullPointerException in World#destroyBody() - API Fix: Prevent repeated mipmap generation in FileTextureArrayData - API Fix: Fix issue with camera reference in CameraGroupStrategy’s default sorter - API Fix: Move vertex array index buffer limit to backends to fix issue with numIndices parameter - API Fix: TexturePacker: Fix wrong Y value when using padding - API Fix: Lwjgl3Net: Add fallback to xdg-open on Linux if Desktop.BROWSE is unavailable - API Addition: Add NWSEResize, NESWResize, AllResize, NotAllowed and None SystemCursors - API Addition: GWTApplication#getJavaHeap and getNativeHeap are now supported - API Addition: Box2D Shape now implements Disposable - API Addition: Added ChainShape#clear method - API Addition: Added Tooltip#setTouchIndependent; see #6758 - API Addition: Emulate Timer#isEmpty on GWT - API Addition: Bits add copy constructor public Bits (Bits bitsToCpy) - API Addition: Added List#drawSelection(). - API Addition: GwtApplicationConfiguration#xrCompatible - API Fix: setSystemCursor() now works on Android - API Fix: getDisplayMode() is now more accurate on Android and GWT. - API Addition: JsonValue#iterator(String) to more easily iterate a child that may not exist. - API Addition: Added ExtendViewport#setScaling, eg for use with Scaling.contain. - API Addition: Added application lifecycle methods to IOSAudio for custom audio implementations. - API Addition: Added getBoundingRectangle() to Polyline - API Addition: ShapeRenderer#check() has now protected visibility - API Addition: Add ability to host GWT module on a different domain than the site, see #6851 - API Addition: Addes Tooltip#setTouchIndependent; see #6758 - API ADDITION: Emulate Timer#isEmpty on GWT - API Addition: OrientedBoundingBox. [1.10.0] - [BREAKING CHANGE] Android armeabi support has been removed. To migrate your projects: remove any dependency with natives-armeabi qualifier from your gradle build file, this apply to gdx-platform, gdx-bullet-platform, gdx-freetype-platform and gdx-box2d-platform. - [BREAKING CHANGE] tvOS libraries have been removed. No migration steps required. - [BREAKING CHANGE] Linux x86 (32-bit) support has been removed. No migration steps required. - [BREAKING CHANGE] Requires Java 7 or above. - [BREAKING CHANGE] API Change: Scaling is now an object instead of an enum. This may change behavior when used with serialization. - [BREAKING CHANGE] Group#clear() and #clearChildren() now unfocus the children. Added clear(boolean) and clearChildren(boolean) for when this isn't wanted. Code that overrides clear()/clearChildren() probably should change to override the (boolean) method. #6423 - [BREAKING CHANGE] Lwjgl3WindowConfiguration#autoIconify is enabled by default. - [KNOWN ISSUE] Pool no longer reset freed objects when pool size is above its retention limit. Pool will discard objects instead. If you want to keep the old behavior, you should override Pool#discard method to reset discarded objects. - Scene2d.ui: Added new ParticleEffectActor to use particle effects on Stage - API addition: iOS: Added HdpiMode option to IOSApplicationConfiguration to allow users to set whether they want to work in logical or raw pixels (default logical). - Fix for #6377 Gdx.net.openURI not working with targetSdk 30 - Api Addition: Added a Pool#discard(T) method. - Architecture support: Linux ARM and AARCH64 support has been added. The gdx-xxx-natives.jar files now contain native libraries of these architectures as well. - API Addition: Desktop Sound now returns number of channels and sample rate. [1.9.14] - [BREAKING CHANGE] iOS: IOSUIViewController has been moved to its own separate class - [BREAKING CHANGE] API Change: G3D AnimationDesc#update now returns -1 (instead of 0) if animation not finished. - [BREAKING CHANGE] InputEventQueue no longer implements InputProcessor, pass InputProcessor to #drain. - [BREAKING CHANGE] HeadlessApplicationConfiguration#renderInterval was changed to #updatesPerSecond - API addition: Added Pixmap#setPixels(ByteBuffer). - API change: ScreenUtils#getFrameBufferPixmap is deprecated in favor to new method Pixmap#createFromFrameBuffer. - API Addition: Added overridable createFiles() methods to backend application classes to allow initializing custom module implementations. - API Addition: Add a Graphics#setForegroundFPS() method. [1.9.13] - [BREAKING CHANGE] Fixed keycode representations for ESCAPE, END, INSERT and F1 to F12. These keys are working on Android now, but if you hardcoded or saved the values you might need to migrate. - [BREAKING CHANGE] TextureAtlas.AtlasRegion and Region splits and pads fields have been removed and moved to name/value pairs, use #findValue("split") and #findValue("pad") instead. - iOS: Update to MobiVM 2.3.12 - GWT: Key codes set with Gdx.input.setCatchKey prevent default browser behaviour - Added Scaling.contain mode: Scales the source to fit the target while keeping the same aspect ratio, but the source is not scaled at all if smaller in both directions. - API Addition: Added hasContents() to Clipboard interface, to reduce clipboard notifications on iOS 14 - TOOLS Features: Blending mode can be changed in Flame particle 3D editor. - Input Keycodes added: CAPS_LOCK, PAUSE (aka Break), PRINT_SCREEN, SCROLL_LOCK, F13 to F24, NUMPAD_DIVIDE, NUMPAD_MULTIPLY, NUMPAD_SUBTRACT, NUMPAD_ADD, NUMPAD_DOT, NUMPAD_COMMA, NUMPAD_ENTER, NUMPAD_EQUALS, NUMPAD_LEFT_PAREN, NUMPAD_RIGHT_PAREN, NUM_LOCK. Following changes might be done depending on platform: Keys.STAR to Keys.NUMPAD_MULTIPLY, Keys.SLASH to Keys.NUMPAD_DIVIDE, Keys.NUM to Keys.NUM_LOCK, Keys.COMMA to Keys.NUMPAD_COMMA, Keys.PERIOD to Keys.NUMPAD_DOT, Keys.COMMA to Keys.NUMPAD_COMMA, Keys.ENTER to Keys.NUMPAD_ENTER, Keys.PLUS to Keys.NUMPAD_ADD, Keys.MINUS to Keys.NUMPAD_SUBTRACT - Added a QuadFloatTree class. - Desktop: Cubemap Seamless feature is now enabled by default when supported, can be changed via backend specific methods, see supportsCubeMapSeamless and enableCubeMapSeamless in both LwjglGraphics and Lwjgl3Graphics. - API Addition: TextureAtlas reads arbitrary name/value pairs for each region. See #6316. - TexturePacker writes using a new format when legacyOutput is false (default is true). TextureAtlas can read both old and new formats. See #6316. [1.9.12] - [BREAKING CHANGE] iOS: Changed how Retina/hdpi handled on iOS. See #3709. - [BREAKING CHANGE] API Change: InputProcessor scrolled method now receives scroll amount for X and Y. Changed type to float to support devices which report fractional scroll amounts. Updated InputEvent in scene2d accordingly: added scrollAmountX, scrollAmountY attributes and corresponding setters and getters. See #6154. - [BREAKING CHANGE] API Change: Vector2 angleRad(Vector2) now correctly returns counter-clockwise angles. See #5428 - [BREAKING CHANGE] Android: getDeltaTime() now returns the raw delta time instead of a smoothed one. See #6228. - Fixed vertices returned by Decal.getVertices() not being updated - Fixes Issue #5048. The function Intersector.overlapConvexPolygons now should return the right minimum translation vector values. - Update to MobiVM 2.3.11 - API Change: Removed Pool constructor with preFill parameter in favor of using Pool#fill() method. See #6117 - API Addition: Slider can now be configured to only trigger on certain mouse button clicks (Slider#setButton(int)). - Fixed GlyphLayout not laying out correctly with color markup. - Fixed TileDrawable not applying its scale correctly. - API Addition: Added epsilon methods to maps with float values. - API Addition: Added an insertRange method to array collections. - Fixed GestureDetector maxFlingDelay. - API Change: Changed default GestureDetector maxFlingDelay to Integer.MAX_VALUE (didn't work before, this matches that). - Gdx.files.external on Android now uses app external storage - see wiki article File handling for more information - Improved text, cursor and selection rendering in TextArea. - API Addition: Added setProgrammaticChangeEvents, updateVisualValue, round methods to ProgressBar/Slider. - iOS: Keyboard events working on RoboVM on iOS 13.5 and up, uses same API as on other platforms - API Addition: Added AndroidLiveWallpaper.notifyColorsChanged() to communicate visually significant colors back to the wallpaper engine. - API Change: AssetManager invokes the loaded callback when an asset is unloaded from the load queue if the asset is already loaded. - GWT: changed audio backend to WebAudio API. Now working on mobiles, pitch implemented. Configuration change: preferFlash removed. When updating existing projects, you can remove the soundmanager js files from your webapp folder and the references to it from index.html - GWT: added possibility to lazy load assets via AssetManager instead of preload them before game start. See GWT specifics wiki article for more information. - GWT: New configuration setting usePhysicalPixels to use native resolution on mobile / Retina / HDPI screens. When using this option, make sure to update your code in index.html and HTMLLauncher from setup template. - GWT: GwtApplicationConfiguration and GWT backend now support an application to be resizable or fixed size. You can remove your own resizing code from your HTMLLaunchers. - GWT: Assets in distribute build are renamed with md5 hash suffix to bypass browser cache on changes - GWT: Fixed GwtFileHandle that was only returning text assets when listing a directory, now returns all children - API Addition: Pixmap.downloadFromUrl() downloads an image from http(s) URLs and passes it back as a Pixmap on all platforms - Added support for Linux ARM builds. - 32-bit: ARMv7/armhf - 64-bit: ARMv8/AArch64 - API Change: Removed arm abi from SharedLibraryLoader - API Addition: Added a Lwjgl3ApplicationConfiguration#foregroundFPS option. - API Change: Utility classes are now final and have a private constructor to prevent instantiation. - API Change: ScrollPane now supports all combinations of scrollBarsOnTop and fadeScrollBars. - API Addition: Added new methods with a "deg" suffix in the method's name for all Vector2 degrees-based methods and deprecated the old ones. - API Addition: Added Slider#setVisualPercent. - API Change: Enabling fullscreen mode on the lwjgl3 backend now automatically sets the vsync setting again. - API Addition: Added put(key, value, defaultValue) for maps with primitive keys, so the old value can be returned. - API Addition: Added ObjectLongMap. - Added Intersector#intersectRayOrientedBoundsFast to detect if a ray intersects an oriented bounding box, see https://github.com/libgdx/libgdx/pull/6139 - API Addition: Added Table#clip() and Container#clip() methods. - API Addition: Added getBackgroundDrawable() to Button. - API Addition: Added imageCheckedDown and getImageDrawable() to ImageButton and ImageTextButton. - API Addition: Added focusedFontColor, checkedFocusedFontColor, and getFontColor() to TextButton and ImageTextButton. - API Addition: Added wrapReverse setting to HorizontalGroup. - API Addition: Added Slider style drawables for over and down: background, knobBefore, and knobAfter. - Fixed LwjglFrame not hiding the canvas in some situations. - API Change: Table#round uses ceil/floor and is applied during layout, rather than afterward. - Fixed blurry NinePatch rendering when using a single center region. - API Change: Upon changing the window size with the lwjgl3 backend, the window is centered on the monitor. - Fixed DepthShaderProvider no longer creates one DepthShader per bones count. Now it creates only one skinned variant and one non-skinned variant based on DepthShader/Config numBones. - API Addition: Added Intersector#intersectPlanes to calculate the point intersected by three planes, see https://github.com/libgdx/libgdx/pull/6217 - API Addition: Added alternative Android Audio implementation for performant sound. See https://github.com/libgdx/libgdx/pull/6243. - API Addition: Expose SpriteBatch and PolygonSpriteBatch setupMatrices() as protected. - API Addition: New parameter OnscreenKeyboardType for Input.setOnscreenKeyboardVisible and Input.getTextInput [1.9.11] - Update to MobiVM 2.3.8 - Update to LWJGL 3.2.3 - Fixed AndroidInput crashes due to missing array resize (pressure array). - API Change: Ray#set methods and Ray#mul(Matrix4) normalize direction vector. Use public field to set and avoid nor() - API Change: New internal implementation of all Map and Set classes (except ArrayMap) to avoid OutOfMemoryErrors when too many keys collide. This also helps resistance against malicious users who can choose problematic names. - API Addition: OrderedMap#alter(Object,Object) and OrderedMap#alterIndex(int,Object) allow swapping out a key in-place without changing its value; OrderedSet also has this. - API Addition: Json can now read/write: ObjectIntMap, ObjectFloatMap, IntMap, LongMap. - API Addition: Added @Null annotation for IDE null analysis. All parameters and return values should be considered non-null unless annotated (or javadoc'ed if not yet annotated). - API Addition: Added ParticleEmitter#preAllocateParticles() and ParticleEffect#preAllocateParticles() to avoid particle allocations during updates. - Fixed changing looping state of already playing sounds on Android by first pausing the sound before setting the looping state (see #5822). - API Change: scene2d: Table#getRow now returns -1 when over the table but not over a row (used to return the last row). - API Change: scene2d: Tree#addToTree and #removeFromTree now have an "int actorIndex" parameter. - API Addition: scene2d: Convenience method Actions#targeting(Actor, Action) to set an action's target. - API Change: scene2d: In TextField, only revert the text if the change event was cancelled. This allows the text to be manipulated in the change listener. - API Change: scene2d: Tree.Node#removeAll renamed to clearChildren. - API Addition: scene2d: Added SelectBox#setSelectedPrefWidth to make the pref width based on the selected item and SelectBoxStyle#overFontColor. - API Change: DefaultTextureBinder WEIGHTED strategy replaced by LRU strategy. - API Change: ShaderProgram begin and end methods are deprecated in favor to bind method. - API Addition: Added a OpenALAudio#getSourceId(long) method. - API Addition: Added a ShaderProgram#getHandle() method. - API Change: Replaced deprecated android support libraries with androidx. AndroidFragmentApplication is only affected. - API Addition: Created interfaces AndroidAudio and AndroidInput and added AndroidApplication#createAudio and AndroidApplication#createInput to allow initializing custom module implementations. - Allows up to 64k (65536) vertices in a Mesh instead of 32k before. Indices can use unsigned short range, so index above 32767 should be converted to int using bitwise mask, eg. int unsigneShortIndex = (shortIndex & 0xFFFF). - API Change: DragAndDrop only removes actors that were not already in the stage. This is to better support using a source actor as the drag actor, see #5675 and #5403. - API Change: Changed TiledMapTileLayer#tileWidth & #tileHeight from float to int - API Addition: convenient Matrix4 rotate methods: rotateTowardDirection and rotateTowardTarget - API Addition: Convenience method Actions#targeting(Actor, Action) to set an action's target. - API Change: Correction of TextField#ENTER_ANDROID renamed to NEWLINE and TextField#ENTER_DESKTOP renamed to CARRIAGE_RETURN. - API Change: Changed the visibility of TextField#BULLET, TextField#DELETE, TextField#TAB and TextField#BACKSPACE to protected. - API Addition: TextField and TextArea are providing the protected method TextField#checkFocusTraverse(char) to handle the focus traversal. - API Addition: UIUtils provides the constants UIUtils#isAndroid and UIUtils#isIos now. - Fixed: The behaving of TextFields and TextAreas new line and focus traversal works like intended on all platforms now. - API Change: Changed Base64Coder#encodeString() to use UTF-8 instead of the platform default encoding. See #6061 - Fixed: SphereShapeBuilder poles are now merged which removes lighting artifacts, see #6068 for more information. - API Change: Matrix3#setToRotation(Vector3, float float) now rotates counter-clockwise about the axis provided. This also changes Matrix3:setToRotation(Vector3, float) and the 3d particles will rotate counter-clockwise as well. - API Change: TexturePacker uses a dash when naming atlas page image files if the name ends with a digit or a digit + 'x'. - API Addition: Added Skin#setScale to control the size of drawables from the skin. This enables scaling a UI and using different sized images to match, without affecting layout. - API Change: Moved adding touch focus from Actor#notify to InputListener#handle (see #6082). Code that overrides InputListener#handle or otherwise handles InputEvent.Type.touchDown events must now call Stage#addTouchFocus to get touchDragged and touchUp events. - API Addition: Added AsynchronousAssetLoader#unloadAsync to fix memory leaks when an asset is unloaded during loading. - Fixed Label text wrapping when it shouldn't (#6098). - Fixed ShapeRenderer not being able to render alpha 0xff (was max 0xfe). - API Change: glGetActiveUniform and glGetActiveAttrib parameter changed from Buffer to IntBuffer. [1.9.10] - API Addition: Allow target display for maximization LWJGL3 backend - API Addition: Accelerometer support on GWT - API Change: Set default behaviour of iOS audio to allow use of iPod - API Change: IOSDevice is no longer an enum to allow users to add their own new devices when LibGDX is not up to date - API Addition: Add statusBarVisible configuration to IOSApplicationConfiguration - Update GWT Backend to GWT 2.8.2 - Update Android backend to build against API 28 (Android 9.0) - API Addition: Input.isButtonJustPressed - Update to LWJGL 2 backend to 2.9.3 - Update to MobiVM 2.3.6 release - Update to LWJGL 3.2.1 - API Addition: Input allows getting the maximum number of pointers supported by the backend - API Addition: Configuration option added to allow setting a max number of threads to use for net requests - API Change: NetJavaImpl now uses a cached thread pool to allow concurrent requests (by default, the thread pool is unbounded - use maxNetThreads in backend configurations to set a limit - set to 1 for previous behavior) - API Addition: New MathUtils norm and map methods - API Change: Pixmap blending was incorrect. Generated fonts may change for the better, but may require adjusting font settings. - API Change: Particle effects obtained from a ParticleEffectPool are now automatically started - Removed OSX 32-bit support - API Change: By default LWJGL2 backend no longer does pause/resume when becoming background/foreground window. New app config setting was added to enable the old behavior. - API Change: By default LWJGL2 backend now does pause/resume when window is minimized/restored. New app config setting was added to disable this behavior. - LWJGL3: Fixed window creation ignoring refresh rate of fullscreen mode. - TmxMapLoader and AtlasTmxMapLoader refactoring: Shared functionality was moved to BaseTmxMapLoader, duplicate code was removed. - AtlasTmxMapLoader supports group layers now (a positive side effect of the BaseTmxMapLoader refactoring). - API Change: TmxMapLoader and AtlasTmxMapLoader: load/loadAsync methods work exactly as before, but many methods of these classes had to change. This makes it possible implement new Tiled features. - API Addition: TextField#drawMessageText. - Fixed TextField rendering text outside the widget at small sizes. - API Addition: Group#getChild(int) - API Addition: notEmpty() for collections. - API Change: scene2d.ui Tree methods renamed for node set/getObject to set/getValue. - API Change: scene2d.ui Tree and Tree.Node require generics for the type of node, values, and actors. - API Change: For Selection in scene2d.utils "toggle" is now respected when !required and selected.size == 1. - API Addition: new InstanceBufferObject and InstanceBufferObjectSubData classes to enable instanced rendering. - API Addition: Support for InstancedRendering via Mesh - API Change: Cell#setLayout renamed to setTable. - API Addition: Added Collections#allocateIterators. When true, iterators are allocated. When false (default), iterators cannot be used nested. - API Addition: Added Group#removeActorAt(int,boolean) to avoid looking up the actor index. Subclasses intending to take action when an actor is removed may need to override this new method. - API Change: If Group#addActorAfter is called with an afterActor not in the group, the actor is added as the last child (not the first). [1.9.9] - API Addition: Add support for stripping whitespace in PixmapPacker - API Addition: Add support for 9 patch packing in PixmapPacker - API Addition: Pressure support for ios/android. https://github.com/libgdx/libgdx/pull/5270 - Update to Lwjgl 3.2.0 - Update android level we build against to 7.1 (API 25) - API Change: gdx-tools no longer bundles dependencies to be compatible with java 9 - Skin JSON files can now use the simple names of classes, i.e. "BitmapFont" rather than "com.badlogic.gdx.graphics.g2d.BitmapFont". Custom classes can be added by overriding Skin.getJsonLoader() and calling json.setClassTag(). - Skin supports cascading styles in JSON. Use the "parent" property to tag another style by name to use its values as defaults. See https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests-android/assets/data/uiskin.json for example. - SkinLoader can be used on subclasses of Skin by overriding generateSkin(). - API addition: Tree indentation can be customized. - Fixed GlyphLayout not respecting BitmapFontData#down. - API Addition: Added faceIndex paramter to #FreeTypeFontGenerator(FileHandle, int). - API Change: BitmapFont#getSpaceWidth changed to BitmapFont#getSpaceXadvance. - Many GlyphLayout fixes. - API Addition: Added FileHandle#map(), can be used to memory map a file - API Change: BitmapFontData#getGlyphs changed for better glyph layout. See https://github.com/libgdx/libgdx/commit/9a7dfdff3c6374a5ebd2f33a819982aceb287dfa - API Change: Actor#hit is now responsible for returning null if invisible. #5264 - API Addition: Added [Collection]#isEmpty() method to all 22 custom LibGDX-collections (e.g. Array, ObjectMap, ObjectSet, Queue, ...) - API Addition: StringBuilder#clear() - API Addition: Color#WHITE_FLOAT_BITS - Table layout fixed when expand is used and the layout width is less than the table's min width. - InputMultiplexer#setProcessors(Array) now copies the items instead of using the specified array instance. - API Change: A wrapped HorizontalGroup or VerticalGroup will now size children down to their min size if the group is smaller than their pref size. - LWJGL3: useVSync() is now a per-window setting. Any additional windows should disable vsync to avoid frames dropping to (refresh rate / # of windows). - Batch and sprite implementations and SpriteCache store Color separately from the float packed color, since converting to/from float is lossy. - API Change: NumberUtils floatToIntColor expands the alpha from 0-254 to 0-255, so 255 doesn't become 254 from conversion from int to float to int. - API Change: Batch and Decal setColor(float) renamed to setPackedColor for differentiation, since the conversion from float to Color is lossy. - API Change: PolygonSprite getVertexColor renamed to getPackedColor to match other classes. - API Change: FreeTypeFontGenerator only generates a missing glyph if \0 is in the characters. - API Change: DragScrollListener no longer requires the touch/mouse cursor to be directly above/below the scroll pane. - API Change: List#toString(Object) changed from protected to public. Subclasses overriding this need to change to public. - API Change: List now handles more key presses. - API Change: TexturePacker ImageProcessor#addImage(File, String) now returns the Rect. [1.9.8] - Add iPhoneX images - Fix MacOS issue with GL_ARB_texture_float extension check - Fix AtlasTmxMapLoader tileset tile id offset - Bullet: updated to 2.87, see: http://bulletphysics.org/wordpress/?p=485 - API Addition: Possibility to specify TexturePacker settings for resampling when scaling. - API Addition: Support for customizing render buffer attachments in GLFrameBuffers - API Change: Revert to constructors for GLFrameBuffers for easier customization [1.9.7] - Update to MobiVM(RoboVM) 2.3.3 - Add iOS 11 support - Update to Lwjgl 3.1.3 - Update to MOE 1.4.0 - API Change: GLFrameBuffer has been refactored https://github.com/libgdx/libgdx/pull/4882. Create standard FrameBuffers with static methods. Customized FBOS with FrameBufferBuilder - API addition: Tiled group layer support - Fix Tiled properties, offset parsing for image layers - API addition: Added utility methods for Vector equals with epsilon - Fix Animation backing array type - Fix Mesh copying with 0 indices - Fix restoration of pooled particle effects scale - Fix loss of controller listeners on reconnect - Added basic kotlin project generation support in the setup tool - API addition: Allow APK expansion to be used in fragments and activities - API addition: Added color properties support from tiled maps - API Change: Added rotation vector sensor support on Android - API Change: GLProfiler refactored for OOP and lwjgl3 multi windows - LWJGL3: The creation of additional windows via Lwjgl3Application.newWindow() is now deferred, with postRunnable(), until all existing windows have been updated. This fixes a potential native crash with NVidia GL drivers on Windows, presumably caused by a GL context conflict. - API addition: Lwjgl3WindowListener.created() is called after a new window has been created. It's unsafe to call Lwjgl3Window functions in between Lwjgl3Application.newWindow() and this callback. - Updated LWJGL3 backend to 3.1.3. - Lwjgl3Graphics.setUndecorated() and Lwjgl3Graphics.setResizable() now delegate their work to the respective GLFW functions. - API addition: ProgressBar.isVertical() - returns whether a progress bar is vertical or horizontal. - API Change: SplitPane now by default does not allow the split amount to shrink children below their minimum sizes (cropping them). This behavior can be reverted by overriding clampSplitAmount or wrapping the children in Containers set to minSize(0) and fill(). SplitPane also now correctly includes the handle min size in its own min size calculations. - API Change: SplitPane.getSplit() renamed to SplitPane.getSplitAmount() to match other getter and setter names. - Improved internal Timer synchronization. - API Change: List#drawItem, added float width parameter. - API Addition: Make it possible to disable sound on the GWT-Backend with disableSound=true. - API Change: ScrollPane setWidget deprecated in favor of setActor to match other APIs. - API Change: removed JGLFW backend - Fixed mixed up use of TexturePacker.Settings.stripWhitespaceX|Y. - Added joystick POV support to LWJGL3 controller backend. - Added support for 2d particles sprite animation. - API Change: ParticleEmitter getSprite, setSprite, getImagePath, setImagePath are now getSprites, setSprites, getImagePaths, setImagePaths. - Added support for 2d particles independant scale X and Y. - API Change: ParticleEmitter getScale, matchSize are now getScaleX/getScaleY, matchSizeX/matchSizeY. Added scaleSize(float scaleX, float scaleY) - API Change: Added iconDropped() callback to AndroidWallpaperListener. [1.9.6] - Fix performance regression in LWJGL3 backend, use java.nio instead of BufferUtils. Those are intrinsics and quite a bit faster than BufferUtils on HotSpot. - Updated to latest Sound Manager 2 - Added mappings for Xbox 360 controller for Linux - Separated error log for vertex/fragment shaders for easier debugging - Minimum Android API level is now level 9 (Android 2.3) - API addition: Configurable TexturePacker bleed iterations - Updated IOS Multi-OS Engine backend to 1.3.6 - API Change: Pixmap.setBlending, Pixmap.setFilter are now instance methods - VertexAttribute expert constructors exposed. Short types can now be used for attributes. [1.9.5] - Fix NPE swallowing "video driver unsupported" error on LWJGL 2 backend. - Allow window icons to be set in Lwjgl3ApplicationConfiguration or Lwjgl3WindowConfiguration. - Allow window icon and title to be changed in Lwjgl3Window - API Addition: ApplicationLogger interface, allowing easier access to custom logging - DefaultRenderableSorter accounts for center of Renderable mesh, see https://github.com/libgdx/libgdx/pull/4319 - Bullet: added FilterableVehicleRaycaster, see https://github.com/libgdx/libgdx/pull/4361 - Bullet: updated to 2.85, see: http://bulletphysics.org/wordpress/?p=456 - Updated iOS native build scripts to iOS 10.1 and TVOS 10.0 - API Addition: BitmapFont#blankLineScale. - Fixed rounding of Drawables in ProgressBar. Allow rounding to be disabled with setRound(). - Updated LWJGL3 backend to LWJGL 3.1.0, see https://blog.lwjgl.org/lwjgl-3-1-0-released/ - LWJGL3 backend now supports non-continuous rendering, see https://github.com/libgdx/libgdx/pull/3772 - API Change: Lwjgl3WindowListener.refreshRequested() is called when the windowing system (GLFW) reports contents of a window are dirty and need to be redrawn. - API Change: Lwjgl3WindowListener.maximized() is called when a window enters or exits a maximized state. - API Change: Lwjgl3WindowListener.deiconified() removed, combined with .iconified(). - API Change: Lwjgl3Window.deiconify() renamed to .restore() since it can also be used to de-maximize a window. - Lwjgl3Window now has a maximize() method, and windows can be started maximized using the window or app configuration's setMaximized() method. - NinePatch can now be drawn rotated or scaled. - NinepatchDrawable is now a TransformDrawable. - API Change: Group add* methods no longer remove and re-add the actor if it is already in the group, instead they do nothing. - API Change: g2d.Animation is now generic so it can support Drawables, PolygonRegions, NinePatches, etc. To fix existing code, specify the TextureRegion type in animation declarations (and instantiations in Java 6), i.e. Animation myAnimation = new Animation(...); - TiledDrawable throws unsupported operation if trying to draw rotated/scaled. #4005 - API Change: DragAndDrop now puts default position of drag actor at pointer location. The original default offset from the pointer was (14, -20). - Added ShaderProgramLoader for AssetManager. - BoundingBox#isValid now returns also true when min==max, see: https://github.com/libgdx/libgdx/pull/4460 [1.9.4] - Moved snapping from ProgressBar to Slider to prevent snapping when setting the value programmatically. - Bullet: added btSoftBody#getLinkCount() and btSoftBody#getLink(int), see https://github.com/libgdx/libgdx/issues/4152 - API Change: Wrapping for scene2d's HorizontalGroup and VerticalGroup. - Fix hiero problem with certain unicode characters. See https://github.com/libgdx/libgdx/issues/4202 - Switched to RoboVM fork 2.2.0, fixes incompatibility with Android Gradle plugin and iOS 9.3.4 [1.9.3] - Switched to MobiDevelop's RoboVM fork (http://robovm.mobidevelop.com) - Addition of Intel Multi-OS Engine backend for deploying to iOS - Updated iOS native build scripts to iOS 9.3 and TVOS 9.2 - API Addition: GestureDetector#pinchStop() called when no longer pinching - API Addition: Gdx.graphics.setUndecorated/setResizable API added to Graphics https://github.com/libgdx/libgdx/pull/3847 - API Addition: Gdx.graphics.getGLVersion(), grab the GL version and implementation type. https://github.com/libgdx/libgdx/pull/3788 - API Change: Lwjgl3WindowListener -> filesDropped(String[] files) adds drag'n drop support for the lwjgl3 backend - Added isComplete() to ParticleEffect to make it easier to know when all the emitters are done, behaves the same as in the 2D API. - API Change: renamed Lwjgl3WindowListener.windowIsClosing() to closeRequested() to better communicate its intent. - Add IndexData.updateIndices method to increase performance when used with IndexBufferObjectSubData. - Added FlushablePool - Added ShapeCache see https://github.com/libgdx/libgdx/pull/3953 - API Change: moved shape builder logic out of MeshBuilder, see: https://github.com/libgdx/libgdx/pull/3996 - API Change: changed copy constructor OrderedMap(ObjectMap) to OrderedMap(OrderedMap) - API Change: Table reset now calls clearChildren, not clear. - Fixed crashes in AndroidMusic.java when isPlaying is called. Errors are now logged only rather than crashing the app. - Added emulation of ScreenUtils for GWT - Improved performance of glReadPixels() on GWT. New method is 20-30 times faster - Fixed crash on Mac when using LWJGL2, custom cursors and embedding the game in an AWT window - Fixed getDisplayModes(Monitor monitor) returning wrong data on LWJGL2 backend - Fixed Gdx.input.getCurrentEventTime() not being set on LWJGL3, fixes GestureDetector and flick scroll not working - Fixed not being able to select non-latin characters in TextFields - Bullet: added CustomActionInterface, see https://github.com/libgdx/libgdx/pull/4025 - Add window size limits option to LWJGL3 app and window configurations - Add handling of tag "" within tags "" in TmxMap loaders. [1.9.2] - Added TextureArray wrapper see https://github.com/libgdx/libgdx/pull/3807 - Fixed bug in AndroidGL20.cpp which cast a pointer to a 32-bit int. Crash on 64-bit ARM, but only for a specific code path and address... - Fixed multiple controllers registering on same index with LWJGL3, see https://github.com/libgdx/libgdx/issues/3774 - Fixed the FreeTypeFontGenerator texture bleeding, see https://github.com/libgdx/libgdx/issues/3521 [1.9.1] - API Change: Override GwtApplication#createApplicationListener() to create your ApplicationListener on GWT, overriding GwtApplication#getApplicationListener() isn't needed anymore, see https://github.com/libgdx/libgdx/issues/3628 - Fixed ARM64 and x86_64 binaries for Android [1.9.0] - API Change: Lwjgl3ApplicationConfiguration#setBackbufferConfig -> setBackBufferConfig - Fixed HexagonalTiledMapRenderer, see https://github.com/libgdx/libgdx/pull/3654 - Added support for locking the screen orientation in GWT, see https://github.com/libgdx/libgdx/pull/3633 - Added Gdx-Kiwi and gdx-lml to extensions, see https://github.com/libgdx/libgdx/pull/3597 - Added Gyroscope support in Input, implemented for Android, see https://github.com/libgdx/libgdx/pull/3594 - Fixed touch mapping on iOS, see https://github.com/libgdx/libgdx/pull/3590 - Added orientation to Box2D Transform class, see https://github.com/libgdx/libgdx/pull/3308 - Added system cursors to GWT, fix 'Ibeam' system cursor not working on LWJGL3. - Added experimental AndroidApplicationConfiguration#useGL30 and IOSApplicationConfiguration#useGL30 for testing OpenGL ES 3.0 support on mobile devices, do not use in production. - Fix broken kerning for FreeType fonts, see https://github.com/libgdx/libgdx/pull/3756 - Added ARM64 and x86_64 binaries for Android - API Addition: FreeTypeFontParameter has an additional field for tweaking hinting, see https://github.com/libgdx/libgdx/pull/3757 [1.8.0] - API Change: Rewrote FreeType shadow rendering (much better). - Added spaceX/Y to FreeType fonts. - Higher quality FreeType font rendering. - Hiero updated to v5, now with FreeType support and other new features! - GlyphLayout now allocates much, much less memory when processing long text that wraps. - Added LWJGL 3 backend, see https://github.com/libgdx/libgdx/issues/3673 for more info. - Added Graphics#getBackBufferWidth and Graphics#getBackBufferHeight for HDPI handling - API Change: Added HdpiUtils. Instead of calling GL20#glViewport and GL20#glScissor yourself please use HdpiUtils instead. It will ensure that you handle HDPI monitors correctly when using those OpenGL functions. On HDPI monitors, the size reported by Gdx.graphics getWidth/getHeight is in logical coordinates as dictated by the operating system, usually half the HDPI resolution. The OpenGL drawing surface works in backbuffer coordinates at the full HDPI resolution. If you pass logical coordinates to glViewport and glScissor, you only affect a quarter of the real backbuffer size. Use HdpiUtils instead, it will do the right thing, while letting you continue to work in logical (aka returned by Gdx.graphics.getWidth/getHeight) coordinates. - API Change: Graphis#getDesktopDisplayMode() has been renamed to Graphics#getDisplayMode() and returns the current display mode of the monitor the window is shown on (primary monitor on all backends except LWJGL3, which supports real multi-monitor setups). - API Change: Graphics#getDisplayModes() return the display modes of the monitor the monitor the window is shown on (primary monitor on all backends except LWJGL3 which supports real multi-monitor setups). - API Change: Graphics#setDisplayMode(DisplayMode) has been renamed to Graphics#setFullscreenMode(). If the window is in windowed mode, it will be switched to fullscreen mode on the monitor from which the DisplayMode stems from. - API Change: Graphics#setDisplayMode(int, int, boolean) has been renamed to Graphics#setWindowedMode(int, int). This will NOT allow you to switch to fullscreen anymore, use Graphics#setFullscreenMode() instead. If the window is in fullscreen mode, it will be switched to windowed mode on the monitor the window was in fullscreen mode on. - API Addition: Graphics#Monitor, represents a monitor connected to the machine the app is running on. A monitor is defined by a name and it's position relative to other connected monitors. All backends except the LWJGL3 backend will report only the primary monitor - API Addition: Graphics#getPrimaryMonitor() returns the primary monitor you usually want to work with. - API Addition: Graphics#getMonitor() returns the monitor your app's window is shown on, which may not be the primary monitor in >= 2 monitor systems. All backends except the LWJGL3 backend will report only the primary monitor. - API Addition: Graphics#getMonitors() returns all monitors connected to the system. All backends except the LWJGL3 backend will only report the primary monitor. - API Addition: Graphics#getDisplayMode(Monitor) returns the display mode of the monitor the app's window is shown on. All backends except the LWJGL3 backend will report the primary monitor display mode instead of the actual monitor's display mode. Not a problem as all other backends run on systems with only a single monitor so far (primary monitor). - Added option to include credentials on cross-origin http requests (used only for GWT backend). - Added option to specify crossorigin attribute when loading images with AssetDownloader (GWT), see #3216. - API Change: removed Sound#setPriority, this was only implemented for the Android backend. However, Android itself never honored priority settings. - API Change: cursor API has been cleaned up. To create a custom cursor, call Graphics#newCursor(), to set the custom cursor call Graphics#setCursor(), to set a system cursor call Graphics#setSystemCursor(). The Cursor#setSystemCursor method has been removed as that was not the right place. Note that cursors only work on the LWJGL, LWJGL3 and GWT backends. Note that system cursors only fully work on LWJGL3 as the other two backends lack a means to set a specific system cursor. These backends fall back to displaying an arrow cursor when setting any system cursor. - API Addition: Added Lwjgl3WindowListener, allows you to hook into per-window iconficiation, focus and close events. Also allows you to prevent closing the window when a close event arrives. [1.7.2] - Added AndroidAudio#newMusic(FileDescriptor) to allow loading music from a file descriptor, see #2970 - Added GLOnlyTextureData, which is now the default for FrameBuffer and FrameBufferCubemap, see #3539 - Added rotationChanged() for Actor class, called when rotation changes, see https://github.com/libgdx/libgdx/pull/3563 - Fixed crash on MacOS when enumerating connected gamepads. - ParticleEmitter no longer says it's complete when it's set to continuous, see #3516 - Improved JSON parsing and object mapping error messages. - Updated FreeType from version 2.5.5 to 2.6.2. - Fixed corrupt FreeType rendering for some font sizes. - API Change: FreeTypeFontParameter has new fields for rendering borders and shadows. - FreeTypeFontParameter can render much better fonts at small sizes using gamma settings. - BitmapFont can now render missing (tofu) glyph for glyphs not in the font. - FreeTypeFontGenerator depreacted methods removed. - Fixed BitmapFont color tags changing glyph spacing versus not using color tags. BitmapFont#getGlyphs has a new paramter. See #3455. - Skin's TintedDrawable now works with TiledDrawable. #3627 - Updated jnigen to Java Parser 2.3.0 (http://javaparser.github.io/javaparser/). - FreeType fonts no longer look terrible at small size. This is a big deal! - Updated to RoboVM 1.12.0, includes tvOS support! [1.7.1] - Fixes AtlasTmxMapLoader region name loading to tileset name instead of filename - Changes TiledMapPacker output, region names are tileset names, adjusts gid, defaults to one atlas per map - API Change: members of Renderable and MeshPart are changed, see https://github.com/libgdx/libgdx/pull/3483 - Added Vector#setToRandomDirection(), see #3222 - Updated to stb_image v2.08 - Added Node#copy(), used when creating a ModelInstance from a Model to allow using custom nodes - Add ModelCache, see https://github.com/libgdx/libgdx/wiki/ModelCache - Updated bullet to v2.83.6 - Updated to RoboVM 1.9, for free life-time license read http://www.badlogicgames.com/wordpress/?p=3762 [1.7.0] - Gdx.input.setCursorImage removed, replaced with Gdx.graphics.setCursor and Gdx.graphics.newCursor see https://github.com/libgdx/libgdx/pull/2841/ - Fixed an issue with UTF8 decoding in GWT emulation of InputStreamReader - Updated to RoboVM 1.8 for iOS 9 support. [1.6.5] - Objects from animated tiles in TMX maps are now supported. - Made possible to use any actor for tooltips. - Improved cross-platform reflection api for annotations. - NinePatch#scale now also scales middle patch size. - GLFrameBuffer is now abstract, renamed setupTexture to createColorTexture, added disposeColorTexture - Added LwjglApplicationConfiguration#gles30Context*Version, see https://github.com/libgdx/libgdx/pull/2941 - Added OpenGL error checking to GLProfiler, see https://github.com/libgdx/libgdx/pull/2889 - Updated to RoboVM 1.6 [1.6.4] - TextField cursor and selection size changed. https://github.com/libgdx/libgdx/commit/2a830dea348948d2a37bd8f6338af2023fec9b09 - FreeTypeFontGenerator setting to improve shadows and borders. - ScrollPane scrolls smoothly when the scrolled area is much larger than the scrollbars. - TexturePacker sorts page regions by name. - GlyphLayout text wrapping changed to not trim whitespace. https://github.com/libgdx/libgdx/commit/ee42693da067da7c5ddd747f051c1423d262cb96 - Fixed BitmapFont computing space width incorrectly when padding is used and no space glyph is in the font. - Fixed TextArea cursor and selection drawing positions. - Fixed ActorGestureListener pan and zoom when the actor is rotated or scaled. - Fixed TextField for non-pixel display. - Allow ellipsis string to be set on Label. - AssetManager gets hook for handling loading failure. - TextField now fires a ChangeEvent when the text change. Can be cancelled too! - Added tooltips to scene2d.ui. - Updated to RoboVM 1.5 [1.6.3] - Updated to RoboVM 1.4 [1.6.2] - API Change: TiledMapImageLayer now uses floats instead of ints for positioning - API Change: Added GLFrameBuffer and FrameBufferCubemap: Framebuffer now extends GLFramebuffer, see #2933 [1.6.1] - Added optional hostname argument to Net.newServerSocket method to allow specific ip bindings for server applications made with gdx. - Changed the way iOS native libs are handled. Removed updateRoboVMXML and copyNatives task from ios/build.gradle. Instead natives are now packaged in jars, within the META-INF/robovm/ios folder. Additionally, a robovm.xml file is stored there that gets merged with the project's robovm.xml file by RoboVM. [1.6.0] - API Change: GlyphLayout xAdvances now have an additional entry at the beginning. This was required to implement tighter text bounds. #3034 - API Change: Label#getTextBounds changed to getGlyphLayout. This exposes all the runs, not just the width and height. - In the 2D ParticleEditor, all chart points can be dragged at once by holding ctrl. They can be dragged proportionally by holding ctrl-shift. - Added Merge button to the 2D ParticleEditor, for merging a loaded particle effect file with the currently open particle effect. - Added ability to retrieve method annotations to reflection api - Added PixmapPacker.updateTextureRegions() method. - Added ability to pack "anonymous" pixmaps into PixmapPacker, which will appear in the generated texture but not a generated or updated TextureAtlas - Added PixmapPacker.packDirectToTexture() methods. - API Change: PixmapPacker.generateTextureAtlas(...) now returns an atlas which can be updated with subsequent calls to PixmapPacker.updateTextureAtlas(...) - API Change: FreeTypeFontGenerator.generateFont(...) now works with a user-provided PixmapPacker. - Added DirectionalLightsAttribute, PointLightsAttribute and SpotLightsAttribute, removed Environment#directionalLights/pointLights/spotLights, added Environment#remove, lights are now just like any other attribute. See also https://github.com/libgdx/libgdx/wiki/Material-and-environment#lights - API Change: BitmapFont metrics now respect padding. #3074 - Update bullet wrapper to v2.83 - Added AnimatedTiledMapTile.getFrameTiles() method [1.5.6] - API Change: Refactored Window. https://github.com/libgdx/libgdx/commit/7d372b3c67d4fcfe4e82546b0ad6891d14d03242 - Added VertexBufferObjectWithVAO, see https://github.com/libgdx/libgdx/pull/2527 - API Change: Removed Mesh.create(...), use MeshBuilder instead - API Change: BitmapFontData, BitmapFont, and BitmapFontCache have been refactored. http://www.badlogicgames.com/wordpress/?p=3658 - FreeTypeFontGenerator can now render glyphs on the fly. - Attribute now implements Comparable, custom attributes might need to be updated, see: https://github.com/libgdx/libgdx/wiki/Material-and-environment#custom-attributes - API Change: Removed (previously deprecated) GLTexture#createTextureData/createGLHandle, Ray#getEndPoint(float), Color#tmp, Node#parent/children, VertexAttribute#Color(), Usage#Color, ModelBuilder#createFromMesh, BoundingBox#getCenter()/updateCorners()/getCorners(), Matrix4.tmp [1.5.5] - Added iOS ARM-64 bit support for Bullet physics - 3D Animation, NodeAnimation keyframes are separated into translation, rotation and scaling - Added capability to enable color markup from inside skin json file. - Exposed method ControllerManager#clearListeners on Controllers class - Net#openURI now returns a boolean to indicate whether the uri was actually opened. - DefaultShader now always combines material and environment attributes - Added ShapeRenderer constructor to pass a custom shader program to ImmediateModeRenderer20. - API Change: Group#toString now returns actor hierarchy. Group#print is gone. - Added SpotLight class, see https://github.com/libgdx/libgdx/pull/2907 - Added support for resolving file handles using classpaths (ClasspathFileHandleResolver) [1.5.4] - Added support for image layers in Tiled maps (TiledMapImageLayer) - Added support for loading texture objects from TMX Maps (TextureMapObject) - Added support for border and shadow with FreeTypeFontGenerator - see https://github.com/libgdx/libgdx/pull/2774 - Now unknown markup colors are silently ignored and considered as normal text. - Updated freetype from version 2.4.10 to 2.5.5 - Added 3rd party extensions to setup application, see - Updated to RoboVM 1.0.0-beta-04 - Updated to GWT 2.6.1, sadly GWT 2.7.0 isn't production ready yet. [1.5.3] - API Change: TextField#setRightAlign -> TextField#setAlignment - I18NBundle is now compatible with Android 2.2 - Fixed GWT reflection includes for 3D particles - 3D ParticleEffectLoader registered by default - Added HttpRequestBuilder, see https://github.com/libgdx/libgdx/pull/2698 - Added LwjglApplicationConfiguration.useHDPI for Mac OS X with retina displays. Allows you to get "real" pixel coordinates for mouse and display coordinates. - Updated RoboVM to 1.0.0-beta-03 [1.5.2] - Fixed issue #2433 with color markup and alpha animation. - Fixed natives loading for LWJGL on Mac OS X [1.5.1] - Gradle updated to 2.2 - Android Gradle tooling updated to 1.0.0 - API Change: Switched from Timer to AnimationScheduler for driving main loop on GWT. Removed fps field from GwtApplicationConfiguration to instead let the browser choose the most optimal rate. - API Change: Added pause and resume handling on GWT backend. When the browser supports the page visibility api, pause and resume will be called when the tab or window loses and gains visibility. - API Change: Added concept of target actor, separate from the actor the action is added to. This allows an action to be added to one actor but affect another. This is useful to create a sequence of actions that affect many different actors. Previously this would require adding actions to each actor and using delays to get them to play in the correct order. - Added 64-bit support for iOS sim and device - Deprecated Node#children and Node#parent, added inheritTransform flag and methods to add/get/remove children - API Change: By default keyframes are no longer copied from Model to ModelInstance but shared instead, can be changed using the `ModelInstance.defaultShareKeyframes` flag or `shareKeyframes` constructor argument. - JSON minimal format now makes commas optional: newline can be used in place of any comma. - JSON minimal format is now more lenient with unquoted strings: spaces and more are allowed. - API Change: Added support for KTX/ZKTX file format, https://github.com/libgdx/libgdx/pull/2431 - Update stb_image from v1.33 to v1.48, see https://github.com/libgdx/libgdx/pull/2668 - Bullet Wrapper: added Gimpact, see https://github.com/libgdx/libgdx/issues/2619 - API Addition: Added MeshPartBuilder#addMesh(...), can be used to more easily combine meshes/models - Update to LWJGL 2.9.2, fixes fullscreen mode on "retina" displays - Fixes to RoboVM backend which would crash if accelerometer is used. [1.5.0] - API Addition: IOSInput now uses CMCoreMotion for accelerometer and magnetometer - API Addition: Added getter for UITextField on IOS for keyboard customization - API Addition: Added ability to save PixmapPackers to atlas files. See PixmapPackerIO. - API Addition: Added HttpRequestHeader and HttpResponseHeader with constants for HTTP headers. - API Addition: HttpRequest is now poolable. - New PNG encoder that supports compression, more efficient vertical flipping, and minimal allocation when encoding multiple PNGs. - API Change: Label#setEllipse -> Label#setEllipsis. - API Change: BatchTiledMapRenderer *SpriteBatch fields and methods renamed to *Batch - API Change: ScrollPane#scrollToCenter -> ScrollPane#scrollTo; see optional boolean arguments centerHorizontal and centerVertical (scrollToCenter centered vertically only). - API Change: Changed Input#getTextInput to accept both text and hint, removed Input#getPlaceholderTextInput. - Bug Fix: Fixed potential NPE with immersive mode in the Android fragment backend. - iOS backend now supports sound ids, thanks Tomski! [1.4.1] - Update to the Gradle Integration plugin nightly build if you are on Eclipse 4.4.x! - Update Intellij IDEA to 13.1.5+, because Gradle! - Updated to Gradle 2.1 and Android build tools 20, default Android version to 20. You need to install the latest Android build tools via the SDK manager - API Change: deprecation of bounding box methods, see https://github.com/libgdx/libgdx/pull/2408 - Added non-continuous rendering to iOS backend, thanks Dominik! - Setup now uses Gradle 2.1 with default Android API level 20, build tools 20.0.0 - Non-continuous renderering implemented for iOS - Added color markup support for scene2d label and window title. - API Change: removed default constructor of DecalBatch, removed DefaultGroupStrategy - Updated to latests RoboVM release, 1.0.0-alpha-04, please update your RoboVM plugins/installations - Reduced I18NBundle loading times on Android and bypassed unclosed stream on iOS. - Removed the gdx-ai extension from the libGDX repository. Now it lives in its own repository under the libGDX umbrella, see https://github.com/libgdx/gdx-ai - API Addition: Added randomSign and randomTriangular methods to MathUtils. - API Addition: Decal has now a getter for the Color. - API Addition: now I18NBundle can be set so that no exception is thrown when the key can not be found. - API Addition: added annotation support in reflection layer, thanks code-disaster! https://github.com/libgdx/libgdx/pull/2215 - API Addition: shapes like Rect, Circle etc. now implement Shape2D interface so you can put them all into a single collection https://github.com/libgdx/libgdx/pull/2178 - API Addition: bitmap fonts can now be loaded from an atlas via AssetManager/BitmapFontLoader, see https://github.com/libgdx/libgdx/pull/2110 - API Change: updated to RoboVM 1.0.0-SNAPSHOT for now until the next alpha is released. - API Change: Table now uses padding from its background drawable by default. https://github.com/libgdx/libgdx/issues/2322 - Drawables now know their names, making debugging easier. - API Change: Table fill now respects the widget's minimum size. - Texture packer, fixed image size written to atlas file. - API Change: Cell no longer uses primitive wrappers in public API and boxing is minimized. - API Addition: TextureAttribute now supports uv transform (texture regions). - API Change: Added parameters to Elastic Interpolation. - API Change: Removed Actor#setCenterPosition, added setPosition(x,y,align). - API Change: JsonReader, forward slash added to characters an unquoted strings cannot start with. - API Change: Stage#cancelTouchFocus(EventListener,Actor) changed to cancelTouchFocusExcept. - API Change: Json/JsonWriter.setQuoteLongValues() quotes Long, BigDecimal and BigInteger types to prevent truncation in languages like JavaScript and PHP. [1.3.1] - API change: Viewport refactoring. https://github.com/libgdx/libgdx/pull/2220 - Fixed GWT issues [1.3.0] - Added Input.isKeyJustPressed. - API Addition: multiple recipients are now supported by MessageDispatcher, see https://github.com/libgdx/libgdx/wiki/Message-Handling#multiple-recipients - API Change: State#onMessage now takes the message receiver as argument. - API Addition: added StackStateMachine to the gdx-ai extension. - API change: ShapeRenderer: rect methods accept scale, more methods can work under both line and fill types, auto shape type changing. - API change: Built-in ShapeRenderer debugging for Stage, see https://github.com/libgdx/libgdx/pull/2011 - Files#getLocalStoragePath now returns the actual path instead of the empty string synonym on desktop (LWJGL and JGLFW). - Fixed and improved xorshift128+ PRNG implementation. - Added support for Tiled's animated tiles, and varying frame duration tile animations. - Fixed an issue with time granularity in MessageDispatcher. - Updated to Android API level 19 and build tools 19.1.0 which will require the latest Eclipse ADT 23.02, see http://stackoverflow.com/questions/24437564/update-eclipse-with-android-development-tools-23 for how things are broken this time... - Updated to RoboVM 0.0.14 and RoboVM Gradle plugin version 0.0.10 - API Addition: added FreeTypeFontLoader so you can transparently load BitmapFonts generated through gdx-freetype via AssetManager, see https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/FreeTypeFontLoaderTest.java - Preferences put methods now return "this" for chaining - Fixed issue 2048 where MessageDispatcher was dispatching delayed messages immediately. - API Addition: 3d particle system and accompanying editor, contributed by lordjone, see https://github.com/libgdx/libgdx/pull/2005 - API Addition: extended shape classes like Circle, Ellipse etc. with hashcode/equals and other helper methods, see https://github.com/libgdx/libgdx/pull/2018 - minor API change (will not increase minor revision number): fixed a bug in handling of atlasPrefixes, https://github.com/libgdx/libgdx/pull/2023 - Bullet: btManifoldPoint member getters/setters changed from btVector3 to Vector3, also it is no longer pooled, instead static instances are used for callback methods - Added Intersector#intersectRayRay to detect if two 2D rays intersect, see https://github.com/libgdx/libgdx/pull/2132 - Bullet: ClosestRayResultCallback, AllHitsRayResultCallback, LocalConvexResult, ClosestConvexResultCallback and subclasses now use getter/setters taking a Vector3 instead of btVector3, see https://github.com/libgdx/libgdx/pull/2176 - 2d particle system supports pre-multiplied alpha. - Bullet: btIDebugDrawer/DebugDrawer now use pooled Vector3 instances instead of btVector3, see https://github.com/libgdx/libgdx/issues/2174 [1.2.0] - API Addition: Some OpenGL profiling utilities have been added, see https://github.com/libgdx/libgdx/wiki/Profiling - API Addition: A FreeTypeFontGeneratorLoader has been added to the gdx-freetype extension - API change: Animation#frameDuration and #animationDuration are now hidden behind a getter/setter and dynamic - API Addition: Vector#setZero - API Addition: gdx-ai, extension for AI algorithms. Currently supports FSMs, see https://github.com/libgdx/libgdx/wiki/Artificial-Intelligence - API change: TableLayout has been forked and integrated into libgdx more tightly, see http://www.badlogicgames.com/wordpress/?p=3458 - API Addition: added equals/hashCode methods to Rectangle, may break old code (very, very unlikely) - API Addition: scene2D Actors now have a setCenterPosition method, see https://github.com/libgdx/libgdx/pull/2000 [1.1.0] - Updated to RoboVM 0.0.13 and RoboVM Gradle plugin 0.0.9 - Big improvements to setup-ui and build times in Intellij IDEA https://github.com/libgdx/libgdx/pull/1865 - Setup now uses android build tools version: 19.1.0 - BitmapFontCache now supports in-string colored text through a simple markup language, see https://github.com/libgdx/libgdx/wiki/Color-Markup-Language - Added i18n localization/internationalization support, thanks davebaol, see https://github.com/libgdx/libgdx/wiki/Internationalization-and-Localization - Possibility to override density on desktop to simulate mobile devices, see https://github.com/libgdx/libgdx/pull/1825 - Progressive JPEG support through JPGD (https://code.google.com/p/jpeg-compressor/). - Mavenized JGLFW backend - Box2D: Added MotorJoint and ghost vertices on EdgeShape - Updated GWT Box2D to latest version - Updated native Box2D to latest version 2.3.1, no API changes - API change: Matrix4.set(x,y,z, translation) changed, z axis is no more flipped - API addition: Matrix4.avg(Matrix4[],float[]) that lets weighted averaging multiple matrices, Quaternion.slerp(Quaternion[],float[]) that lets weighted slerping multiple Quaternions - fixed the long standing issue of the alpha=1 not actually being fully opaque, thanks kalle! https://github.com/libgdx/libgdx/issues/1815 - down to 25 issues on the tracker, 8 bugs, 17 enhancement requests :) [1.0.1] - updated to RoboVM 0.12 (and so should you!) - fixed GC issues on iOS with regards to touch (thanks Niklas!), see https://github.com/libgdx/libgdx/pull/1758 - updated gwt gradle plugin to 0.4, android build tools to 0.10, gradle version to 1.11 - Tiled maps are now always y-up - Tiled maps now support drawing offsets for tiles - FileHandle#list is now supported in GWT! - FileHandle#list now supports FileFilters - Controllers now reinitialize on the desktop when switching between windowed/fullscreen - added a Texture unpacker that will extract all images from a texture atlas, see https://github.com/libgdx/libgdx/pull/1774 - updates to gdx-setup - CustomCollisionDispatcher in bullet, see https://github.com/libgdx/libgdx/commit/916fc85cecf433c3461b458e00f8afc516ad21e3 [1.0.0] - Box2D is no longer in the core, it has been moved to an extension. See http://www.badlogicgames.com/wordpress/?p=3404 - Merged gdx-openal project into gdx-backend-lwjgl - Now LoadedCallback in AssetLoaderParameters is always called after loading an asset from AssetManager, even if the asset is already loaded - Added Payload as a new parameter to Source.dragStop, see https://github.com/libgdx/libgdx/pull/1666 - You can now load PolygonRegions via AssetLoader, see https://github.com/libgdx/libgdx/pull/1602 - implemented software keyboard support in RoboVM iOS backend - Fixed an issue where key event timestamp is not set by the android backend. - scene2d.ui, added to TextArea the preferred number of rows used to calculate the preferred height. - scene2d.actions, fixed infinite recursion for event listener's handle(event). - Various Quaternion changes. - scene2d.ui, fixed a drawing issue with knobBefore when there's no knob (typical progress bar). - Various MeshBuilder fixes and additions. - Math package: added cumulative distribution. - Fixed Music isPlaying() on iOS when is paused. - Added support for C-style comments to JsonReader (mainly used for json skin files). - Support for resource removal from Skin objects. - Added fling gesture to generate fling in scrollpane. - Vector classes now have mulAdd method for adding pre-multiplied values - Vector implementations no longer use squared value for margin comparisons, see: isZero(float margin), isUnit(float margin). - Vector2 now has isUnit and isZero methods (copied from Vector3) - Removed deprecated methods from Vector classes. - Added new headless backend for server applications - Support 'scaledSize' as a json skin data value for BitmapFont - Added setAlpha(float a) method to Sprite class - Added Input.Keys.toString(int keycode) and Input.Keys.valueOf(String keyname) methods - Added Immersive Mode support to Android backend - Added userObject to Actor in scene2d, allowing for custom data storage - Altered Android's hide status bar behavior - Changed the way wakelocks are implemented. You no longer need any special permissions for the libgdx wakelock - BitmapFontCache setColor changes to match SpriteBatch and friends. http://www.badlogicgames.com/forum/viewtopic.php?f=23&t=12112 - Changed ParticleEffect: the ParticleEffect.save method now takes a Writer instead of a File - TexturePacker2 renamed to TexturePacker, added grid and scaling settings. - Added support for custom prefrences on the desktop backends. - Fixed double resume calls on iOS. - Android Music no longer throws exceptions if MediaPlayer is null. - PolygonSpriteBatch implements Batch. - New scene2d actions: EventAction, CountdownEventAction. - Adds cancelHttpRequest() method to Net interface - Updated GWT/HTML5 Backend to GWT 2.6.0 - Minimal Android version is 2.2, see http://www.badlogicgames.com/wordpress/?p=3297 - Updated to LWJGL 2.9.1 - Can now embed your libgdx app as a fragment, more info on the wiki - scene2d.ui, renamed Actor methods translate, rotate, scale, size to moveBy, rotateBy, scaleBy, sizeBy. May have conflicts with Actions static import, eg you'll need to use "Actions.moveBy" - scene2d.ui, Table background is now drawn usign the table's transform - scene2d.ui, added Container which is similar to a Table with one cell, but more lightweight - Added texture filters and mip map generation to BitMapFontLoader and FreeTypeFontGenerator - scene2d.ui, VerticalGroup and HorizontalGroup got pad, fill and an API similar to Table/Container - Removed OpenGL ES 1.0, 1.1 support; see http://www.badlogicgames.com/wordpress/?p=3311 - Added OpenGL ES 3 support - Updated Android backend, demos, tests to 4.4 - Added Viewport, changed Stage to have a Viewport instead of a Camera (API change, see http://www.badlogicgames.com/wordpress/?p=3322 ). - Changed play mode constants of Animation class to enumeration, see http://www.badlogicgames.com/wordpress/?p=3330 - Updated to RoboVM 0.0.11 and RoboVM Gradle plugin 0.0.6, see http://www.badlogicgames.com/wordpress/?p=3351 - Updated to Swig 3.0 for Bullet, disabled SIMD on Mac OS X as alignements are broken in Bullet, see https://github.com/libgdx/libgdx/pull/1595 - TextureData can only be Custom or Pixmap; compressed image files are considered custom [0.9.9] - added setCursorImage method to Input interface to support custom mouse cursors on the desktop - removed Xamarin backend, see http://www.badlogicgames.com/wordpress/?p=3213 - added Select class for selecting kth ordered statistic from arrays (see Array.selectRanked() method) - refactored Box2D to use badlogic Arrays instead of java.util.ArrayLists - MipMapGenerator methods now don't take disposePixmap argument anymore - added GLTexture, base class for all textures, encapsulates target (2d, cubemap, ...) - added CubeMap, 6 sided texture - changed TextureData#consumeCompressedData, takes target now - added RoboVM backend jar and native libs (libObjectAL, libgdx, in ios/ folder of distribution) - added RoboVM backend to build - changed Bullet wrapper API, see http://www.badlogicgames.com/wordpress/?p=3150 - changed MusicLoader and SoundLoader to be asynchronous loaders - changed behaviour of Net#sendHttpRequest() so HttpResponseListener#handleHttpResponse() callback is executed in worker thread instead of main thread - added Bresenham2, for drawing lines on an integer 2D grid - added GridPoint2 and GridPoint3, representing integer points in a 2D or 3D grid - added attribute location caching for VertexData/Mesh. Hand vertex attribs to a ShaderProgram, get back int[], pass that to Mesh - added Android x86 builds, removed libandroidgl20.so, it's now build as part of gdx-core for Android - changed method signature on Box2D World#getBodies and World#getJoints, pass in an Array to fill - removed glGetShaderSource from GL20, use ShaderProgram#getVertexShaderSource/getFragmentShaderSource instead - added reflection api - added AsynchExecutor, execute tasks asynchronously. Used for GWT mainly. - removed FileHandle#file(), has no business in there. - removed box2deditor - removed custom typedarrays in gwt backend - added classpath files support for gwt backend (limited) - moved AndroidWallpaperListener to Android Backend - added new VertexAttribute Usage flags, bone weight, tangent, binormal. previously encoded as Usage.Generic. Also added field "unit" to VertexAttribute, used by texture coordinates and bone weights to specify index/unit. - setup-ui template for iOS disables pngcrush, also updated wiki iOS article - add Pixmap#fillTriangle via jni gdx2d_fill_triangle() to fill a triangle based on its vertices. - add asynchronous download with continuous progress feedback to GWT asset preloader, see https://github.com/libgdx/libgdx/pull/409?w=1 - add capability to add/exclude package/classes GWT Reflection system, see https://github.com/libgdx/libgdx/pull/409?w=1 - add updated gdx-tiled-preprocessor, generate one single TextureAtlas for all the specified Tiled maps, see http://www.badlogicgames.com/forum/viewtopic.php?f=17&t=8911 - maps API, add new AtlasTiledMapLoader for loading maps produced by the tiled preprocessor tool - ImageProcessor, TexturePacker2 now accepts BufferedImage objects as input - TexturePacker2 now avoids duplicated aliases - Updated to LWJGL 2.9.0 - refactored JSON API, see http://www.badlogicgames.com/wordpress/?p=2993 - Updated Box2D to the latest trunk. Body#applyXXX methods now take an additional boolean parameter. - TmxMapLoader has a flag in Parameters that lets you specify whether to generate mipmaps - Animation#isAnimationFinished was fixed to behave as per javadocs (ignores looping) - remove GLU interface and implementations. Use Matrix4 et al instead. see http://www.badlogicgames.com/wordpress/?p=2886 - new maps API, see http://www.badlogicgames.com/wordpress/?p=2870 - removed static public tmp Vector2 instances, manage such temporary vars yourself, see http://www.badlogicgames.com/wordpress/?p=2840 - changed Scene2D Group#clear(), see http://www.badlogicgames.com/wordpress/?p=2837 - changed the build system, natives are now fetched from the build server, see http://www.badlogicgames.com/wordpress/?p=2821 - freetype extension supported on iOS, see http://www.badlogicgames.com/wordpress/?p=2819 - changed ShapeRenderer API, see http://www.badlogicgames.com/wordpress/?p=2809 - changed Actions.add to addAction, changed parameter order, and added removeAction, addListener, removeListener - Box2d joints now allow for user data - Changes to Intersector, Circle, Rectangle and BoundingBox for consistency in #overlap, #intersect and #contains methods, see https://github.com/libgdx/libgdx/pull/312 - Removed LwjglApplicationConfiguration CPU sync. Added foreground and background target framerate. - scene2d, no longer use getters/setters internally for Actor x, y, width, height, scalex, scaley and rotation. - Array, detect nested iterator usage and throw exception. - Added getVolume to Music class and Android, IOS and GWT backends - 1381, fixed JSON parsing of longs. In addition to Float, it now parses Long if no decimal point is found. - Changed Array constructors that took an array to have offset and count - scene2d, Actor parentToLocalCoordinates and localToParentCoordinates refactoring, see http://www.badlogicgames.com/forum/viewtopic.php?p=40441#p40441 - scene2d, Action#setActor no longer calls reset if the Action has no pool. This allows non-pooled actions to be add and removed from actors, restarted, and reused. - ScrollBar#setForceOverscroll renamed to setForceScroll, as it affects more than just overscroll. - ArrayMap#addAll renamed to putAll to match the other maps. - Added ObjectSet and IntSet. - Added completion listener to Music. - Added Music#setPan. - Sound#play and Sound#loop on Android now return -1 on failure, to match other backends. - DelegateAction subclasses need to implement delegate() instead of act(). http://www.badlogicgames.com/forum/viewtopic.php?p=43576#p43576 - Added pause and resume methods to Sound. - Changed AssetErrorListener#error to have AssetDescriptor to enable access to parameters of failed asset. - Changed SelectBoxStyle to have ScrollPaneStyle and ListStyle for fully customizing the drop down list. http://www.badlogicgames.com/wordpress/?p=3110 - AssetLoader now takes a FileHandle that is the resolved file name. The AssetLoader no longer has to resolve the file name, so we can prevent it from being resolved twice. - Rewrote EarClippingTriangulator to not allocate (no more Vector2s). - Added ParticleEffectLoader to make AssetManager load ParticleEffects - Added GeometryUtils, more Intersector functions, DelaunayTriangulator, ConvexHull. - Added getBoundingBox to ParticleEffect - EarClippingTriangulator changed to return triangle indices. - PolygonSpriteBatch and friends refactored to use triangle indices. - Added add(T, float), remove(int), remove(T) and clear() methods to BinaryHeap - Bitmap Font changes: - FreeTypeFontGenerator allows you to specify the PixmapPacker now, to create an atlas with many different fonts (see FreeTypePackTest) - BitmapFont, BitmapFontCache and FreeTypeFontGenerator now support fonts with multiple texture pages. (see BitmapFontTest and FreeTypePackTest) - BitmapFontData.imagePath and getImagePath() is depreacted, use imagePaths[] and getImagePath(int) instead - Added two BitmapFont constructors for convenience; no need to specify flip boolean - Added getCache() to BitmapFont, for expert users who wish to use the BitmapFontCache (see BitmapFontTest) - FreeTypeFontGenerator now includes setMaxTextureSize and getMaxTextureSize to cap the generated glyph atlas size (default 1024) - added render-hooks beginRender() and endRender() to BatchTiledMapRenderer - Added panStop to GestureListener interface. - ScissorStack#calculateScissors changed to take viewport, enabling it to work with glViewport. - Added Bits#getAndClear, Bits#getAndSet and Bits#containsAll - Added setX and setY to TextureAtlas.AtlasSprite so it matches expected behavior [0.9.8] - see http://www.badlogicgames.com/wordpress/?p=2791 [0.9.7] - see http://www.badlogicgames.com/wordpress/?p=2664 [0.9.6] - see http://www.badlogicgames.com/wordpress/?p=2513