All Versions
43
Latest Version
Avg Release Cycle
56 days
Latest Release
-

Changelog History
Page 1

  • v1.11.0-rc2 Changes

    • ⚡️ [UPDATE] Updated to Kotlin 1.7.10.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.6.4.
    • ⚡️ [UPDATE] Updated to Dokka 1.7.10.
    • [MISC] New Dokka theme is available on the documentation website.
    • [FEATURE] (ktx-actors) Added Actor.onEnter, Actor.onExit, Actor.onEnterEvent and Actor.onExitEvent extension methods that attach ClickListener instances listening for enter and exit events.
    • [FEATURE] (ktx-ashley) Added ComponentDelegate and OptionalComponentDelegate that allow accessing component via Entity extension properties.
    • [FEATURE] (ktx-ashley) Added propertyFor<Component> and optionalPropertyFor<Component> utility functions that automatically create a mapper for the component delegates.
  • v1.11.0-rc1 Changes

    • ⚡️ [UPDATE] Updated to libGDX 1.11.0.
    • [MISC] Gradle dependencies changed from compile-only to API scope.
    • [FEATURE] (ktx-app) Added gdxError utility that throws a GdxRuntimeException.
    • [FIX] (ktx-assets-async) Fixed a niche bug with AsyncAssetManager which could lead to missed callbacks after attempting to load the same asset concurrently with loadAsync.
  • v1.10.0-rc2 Changes

    • ⚡️ [UPDATE] Updated to Kotlin 1.6.21.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.6.1.
    • [FEATURE] (ktx-ashley) Added utilities for working with Ashley's EntityListener interface:
      • EntityAdditionListener: an interface extending EntityListener that only requires implementation of the entityAdded method.
      • EntityRemovalListener: an interface extending EntityListener that only requires implementation of the entityRemoved method.
      • Engine.onEntityAdded and Engine.onEntityRemoved extension methods that create entity listeners from lambdas.
      • Wrappers for Engine.onEntityAdded and Engine.onEntityRemoved for IteratingSystem, IntervalIteratingSystem and SortedIteratingSystem that use system's Family and Engine automatically.
    • [FEATURE] (ktx-script) Added KotlinScriptEngine.evaluateOn methods that can execute scripts with a custom receiver.
    • [CHANGE] (ktx-script) Generic libGDX and Java exceptions replaced with a custom ScriptEngineException.
  • v1.10.0-rc1 Changes

    • ⚡️ [UPDATE] Updated to Kotlin 1.6.10.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.6.0.
    • [MISC] Links to the libGDX wiki were updated.
    • [MISC] Stable KTX releases are now marked with the -rc suffix.
    • [CHANGE] (ktx-scene2d) The generic Node type of KTreeWidget was changed to KNode<*>.
    • [FEATURE] Added Tree.onSelectionChange extension method that attaches a ChangeListener to a Tree.
    • [FEATURE] (ktx-script) Added a new module with KotlinScriptEngine evaluating Kotlin scripts in runtime.
      • evaluate(String): compiles and executes a script passed as a string.
      • evaluate(FileHandle): compiles and executes a script from the selected file.
      • evaluateAs<T>(String): compiles and executes a script passed as a string. Casts the result to T.
      • evaluateAs<T>(FileHandle): compiles and executes a script from the selected file. Casts the result to T.
      • set(String, Any): adds a variable to the script execution context.
      • get(String): returns the current value assigned to the selected variable.
      • remove(String): removes the variable registered under the given name.
      • import(String, String?): adds an import to the script context. Accepts optional alias.
      • importAll(vararg String), importAll(Iterable<String>): adds the selected imports to the script context.
      • setPackage(String): sets the package for the scripts.
      • onItemClick(Node): adds a listener that gets invoked when Node in a Tree gets clicked.
    • [CHANGE] (ktx-vis) The generic Node type of KVisTree was changed to KNode<*>.
  • v1.10.0-b4 Changes

    • ⚡️ [UPDATE] Updated to Gradle 7.2.
    • ⚡️ [UPDATE] Updated to Dokka 1.5.30.
    • [FEATURE] (ktx-app) Added Platform object that exposes various utilities for platform-specific code.
      • Platform.currentPlatform returns current ApplicationType or throws GdxRuntimeException if unable to determine.
      • Platform.version returns the current version of the platform (e.g., Android API version, iOS major OS version).
      • Boolean properties that allow to determine current platform:
      • Platform.isAndroid checks if the current platform is Android.
      • Platform.isDesktop checks if the current platform is desktop with graphical application.
      • Platform.isHeadless checks if the current platform is desktop without graphical application.
      • Platform.isiOS checks if the current platform is iOS.
      • Platform.isMobile checks if the current platform is Android or iOS.
      • Platform.isWeb checks if the current platform is HTML/WebGL.
      • Inlined methods that allow to execute code on specific platforms:
      • Platform.runOnAndroid executes an action if the current platform is Android. Returns action result or null.
      • Platform.runOnDesktop executes an action if the current platform is desktop. Returns action result or null.
      • Platform.runOnHeadless executes an action if the current platform is headless desktop. Returns action result or null.
      • Platform.runOniOS executes an action if the current platform is iOS. Returns action result or null.
      • Platform.runOnMobile executes an action if the current platform is Android or iOS. Returns action result or null.
      • Platform.runOnWeb executes an action if the current platform is HTML/WebGL. Returns action result or null.
      • Inlined runOnVersion executes an action if the current platform version is within minimum and maximum values.
    • [FEATURE] (ktx-ashley) Mapper abstract class designed for companion objects of Components. 👍 Allows to easily obtain instances of a ComponentMapper corresponding to the enclosing Component class.
    • [FEATURE] (ktx-assets-async) AssetStorage.loadSync(String) now supports optional loading parameters.
    • [FEATURE] (ktx-collections) isEmpty and isNotEmpty extension methods of libGDX collections now support Kotlin contracts. If they return true, the collection is implied not to be null.
    • [CHANGE] (ktx-collections) As IdentityMap now extends ObjectMap, some redundant utilities specific to 🚚 IdentityMap were removed. From the user point of view, all additional functionalities are covered by the ObjectMap utilities.
    • [FEATURE] (ktx-freetype-async) AssetStorage.loadFreeTypeFontAsync was added, mimicking loadAsync behavior.
    • [FEATURE] (ktx-freetype-async) AssetStorage.loadFreeTypeFontSync was added, mimicking loadSync behavior.
    • [FEATURE] (ktx-freetype-async) AsyncAssetManager.loadFreeTypeFontAsync was added, returning a Deferred<BitmapFont> instance.
    • [CHANGE] (ktx-scene2d) Scene2DSkin.defaultSkin now throws IllegalStateException when accessed before overriding.
  • v1.10.0-b3 Changes

    • ⚡️ [UPDATE] Updated to Kotlin 1.5.31.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.5.2.
    • [FEATURE] (ktx-assets-async) AssetStorage now supports loading PolygonRegion assets out of the box if the default loaders are registered.
    • [FEATURE] (ktx-assets-async) AsyncAssetManager is a new AssetManager extension with basic support for Kotlin coroutines.
      • AsyncAssetManager.loadAsync allows to schedule an asset for loading, returning a Deferred asset reference.
      • AsyncAssetManager.getDefaultParameters allows to create a default instance of AssetLoaderParameters for a selected asset.
      • AsyncAssetManager.setLoaderParameterSupplier has to be called for each custom asset loader in order to enable asynchronous loading without explicitly passing loader parameters.
    • [FEATURE] (ktx-collections) Factory methods for libGDX arrays of primitives:
      • gdxBooleanArrayOf
      • gdxByteArrayOf
      • gdxCharArrayOf
      • gdxShortArrayOf
      • gdxIntArrayOf
      • gdxLongArrayOf
      • gdxFloatArrayOf
    • [FEATURE] (ktx-inject) New reflection-based Context methods with automatic dependency injection:
      • newInstanceOf: constructs an instance of the selected class. Injects constructor dependencies from the Context.
      • bind<Type>: registers a provider that creates a new instance of selected class via reflection each time it is requested.
      • bindSingleton<Type>: creates, registers, and returns a singleton of selected class using reflection.
    • [FEATURE] (ktx-reflect) Added a new module with reflection utilities.
      • Reflection annotation, which requires opt-in, allows marking functionalities that rely on reflection.
      • ReflectedClass is an inlined wrapper for Class that allows to easily use libGDX reflection API.
      • ClassReflection methods exposed as ReflectedClass read-only properties:
        • simpleName
        • isMemberClass
        • isStatic
        • isArray
        • isPrimitive
        • isEnum
        • isAnnotation
        • isInterface
        • isAbstract
        • componentType
        • constructors
        • methods
        • declaredMethods
        • fields
        • declaredFields
        • annotations
        • declaredAnnotations
        • interfaces
        • enumConstants
      • ClassReflection methods exposed as ReflectedClass methods with improved Kotlin class handling:
        • isInstance
        • isAssignableFrom
        • newInstance
        • getConstructor
        • getDeclaredConstructor
        • getMethod
        • getDeclaredMethod
        • getField
        • getDeclaredField
        • isAnnotationPresent
        • getAnnotation
        • getDeclaredAnnotation
      • Additional ReflectedClass utilities:
        • constructor property allows to extract the only class constructor if it is available.
        • newArrayInstance method allows to create a type array of the given size using ArrayReflection.
        • KClass constructor allows creating ReflectedClass from a KClass.
      • reflect<Type>() function allows to wrap a selected class with ReflectedClass.
      • reflect(KClass<Type>) function allows to wrap a selected KClass with ReflectedClass.
      • reflect(Class<Type>) function allows to wrap a selected Class with ReflectedClass.
      • reflect(String) function allows to find a selected class by qualified name and wrap it with ReflectedClass.
      • Annotation.get extension method with a reified type allowing to get an instance of the annotation.
  • v1.10.0-b2 Changes

    • ⚡️ [UPDATE] Updated to Gradle 7.0.2.
    • ⚡️ [UPDATE] Updated to Kotlin 1.5.21.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.5.1.
    • ⚡️ [UPDATE] Updated to VisUI 1.5.0.
    • [CHANGE] The JVM target compatibility of all modules was set to 1.8, since Java 1.6 target was deprecated ✅ and is incompatible with the latest coroutines library. Note that source compatibility level is still set to 1.7.
    • [FEATURE] (ktx-assets) Added discard lambda parameter to the pool factory method that is invoked after an object is rejected from the created Pool.
    • [FEATURE] (ktx-scene2d) Added support for ParticleEffectActor in Scene2D DSL via particleEffect factory method.
    • [FEATURE] (ktx-log) Added DEBUG, INFO and ERROR constants with default logger tags.
    • [CHANGE] (ktx-log) Default tags are no longer wrapped in square brackets. This caused a change of the logs structure.
    • [CHANGE] (ktx-log) Logger.tag variable was renamed to Logger.name.
    • [CHANGE] (ktx-log) Log prefix variables from Logger were removed. Message tags are now configurable directly through the constructor.
    • [CHANGE] (ktx-log) Logger name is no longer a part of the message tag. Instead, it is now prepended to the message. 🔊 This causes a change of the logs structure.
    • [FEATURE] (ktx-log) Added Logger.buildMessage method that allows to modify logged message structure. This method can be overridden when extending the Logger class, simplifying the usage of custom message formats.
  • v1.10.0-b1 Changes

    • ⚡️ [UPDATE] Updated to LibGDX 1.10.0.
    • [CHANGE] The Java source compatibility and JVM target version of the KTX modules was changed from 1.6 to 1.7.
  • v1.9.14-b2 Changes

    • ⚡️ [UPDATE] Updated to Ashley 1.7.4.
    • ⚡️ [UPDATE] Updated to Kotlin 1.4.32.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.4.3.
    • ⚡️ [UPDATE] Updated to Gradle 6.8.3.
    • ⚡️ [UPDATE] Updated to Dokka 1.4.30.
    • [MISC] Due to the newly added support for multimodule projects in Dokka, published documentation URLs will change.
    • [FEATURE] (ktx-tiled) Added isEmpty and isNotEmpty extension function for MapLayers and MapObjects collections.
    • [FEATURE] (ktx-tiled) Added forEachLayer extension function for TiledMap to iterate over an exact type of MapLayer instances of a specific map.
    • [FIX] (ktx-vis) visScrollPane and visSplitPane now define the correct types for this in theis init lambdas, ➕ adding support for Scene2D and VisUI DSL.
  • v1.9.14-b1 Changes

    • ⚡️ [UPDATE] Updated to LibGDX 1.9.14.
    • ⚡️ [UPDATE] Updated to Kotlin 1.4.30.
    • ⚡️ [UPDATE] Updated to VisUI 1.4.11.
    • [FEATURE] (ktx-app) clearScreen now accepts additional clearDepth boolean parameter that controls whether the GL_DEPTH_BUFFER_BIT is added to the mask.
    • [FEATURE] (ktx-assets-async) Added AssetStorageSnapshot class that stores a copy of AssetStorage state 👍 for debugging purposes. Supports formatted string output with prettyFormat.
    • [FEATURE] (ktx-assets-async) AssetStorage now includes takeSnapshot and takeSnapshotAsync methods that 👍 allow to copy and inspect the internal state of the storage for debugging purposes.
    • [FEATURE] (ktx-collections) Added getOrPut extension function for LibGDX map collections including ObjectMap, IdentityMap, ArrayMap and IntMap.