For the full log see below.
- New
SceneGraph
nodes to handle different viewports, frame buffers, and materials (shaders, blend modes, depth/stencil modes). - New input and unhandled input handling inside a
SceneGraph
. - New lifecycle methods added to Nodes in a
SceneGraph
:preUpdate()
,postUpdate()
andfixedUpdate()
. - Major optimizations and clean up of the
SceneGraph
in general. Camera
&Viewport
relationship refactoring to make more sense. See full changelog for more info.AnimationPlayer
playback clean up and add few additional playback methods- New optional
AnimationStateMachine
withinAnimationPlayer
.
-
refactor
Viewport
to contain an internalCamera
and removeViewport
fromCamera
.Before:
val viewport = ExtendViewport(480, 270) val camera = OrthographicCamrea().apply { this.viewport = viewport }
New:
val viewport = ExtendViewport(480, 270) val camera = viewport.camera
-
remove
SceneGraph.viewport: Viewport
andSceneGraph.camera
and replaced with theViewportCanvasLayer
node.Before:
val viewport: Viewport = graph.viewport val camera: Camera = graph.camera
After:
val viewport: Viewport = graph.sceneCanvas.viewport val camera: Camera = -graph.sceneCanvas.canvasCamera
-
update
SceneGraph.initialize()
to be suspending. -
update
SceneGraph.Node.initialize()
to be suspending. -
rename
Node2D.toWorld
functions totoGlobal
.
- add: list of catching keys to prevent default platform functionality from performing on key events
- add:
loadSuspending
toAssetProvider
to load assets as a suspending function instead loading inside a coroutine - add:
onDestroy
open function andonDestroy
signal toNode
whendestroy()
is invoked. - add: contracts to
SceneGraph
DSL to allow usage of assigning objects toval
outside of it. - add: contract to
AssetProvider.prepare()
to allow usage of assigning objects toval
outside of it. - add:
CanvasItem
node as the base node for 2D transformations in theSceneGraph
.Node2D
now inherits directly from this node. - add:
CanvasLayer
node that creates a separateOrthographicCamera
for rendering instead of inheriting the base camera from theSceneGraph
. For example: When rendering certain nodes at a low resolution using aViewport
to render UI at a higher resolution. This contains an instance to aViewport
but isn't used directly to render children. A new node calledViewportCanvasLayer
can be used to render children nodes with a separate viewport. - add:
ViewportCanvasLayer
to use separateViewport
to render children nodes in aSceneGraph
. - add:
FrameBufferNode
which is aCanvasLayer
to allow rendering children nodes directly to aFrameBuffer
. TheFrameBuffer
texture is then available to be rendered in a separate node. - add:
FrameBufferContainer
control node which can be used to help render aFrameBufferNode
. - add:
zoom
,near
, andfar
properties toCamera2D
which will be used to set theCanvasLayer.canvasCamera
properties before rendering. - add:
scale
property to therender
method ofLDtk
andTiled
tile maps. - add:
tmod
andtargetFPS
properties toSceneGraph
to be used as another way to handle frame independent movements. - add: three new lifecycle calls to a
Node
:onPreUpdate
,onPostUpdate
, andonFixedUpdate
as well as their respectiveSignal
types. TheonFixedUpdate
comes with a few more properties to handle changing the fixed time step and as well as an interpolating ratio.SceneGraph.fixedTimesPerSecond
: can be used to set the amount of timesonFixedUpdate
is call per secondSceneGraph.fixedProgressionRatio
: is an interpolation ratio that can be used to render nodes that useonFixedUpdate
for movement / physics.
- add:
input
andunhandledInput
callbacks to allNode
.input
: is called whenever there is anInputEvent
generated and is propagated up the node tree until a node consumes it.unhandledInput
: is called when anInputEvent
isn't consumed byinput
or the UI.
- add:
resizable
,maximize
, andwindowPosition
configuration parameters to JVM. - add:
ppu
andppuInv
properties toSceneGraph
andNode
that allow setting the Pixels per Unit which is used for rendering. - add:
Material
class and property toCanvasItem
that can be used to set and change shaders, blend modes, and depth/stencil modes. - add:
AnimationState
optional state machine stack that can be to register animation states that will be played based on a predicate. - add:
CropType
options toTexturePacker
:NONE
,FLUSH_POSITION
, andKEEP_POSITION
.
- update:
SceneGraph
methodsresize()
,render()
, andinitialize()
asopen
. - update:
AnimationPlayer
to handle the way animations are queued and played back based on a stack.
- fix: clearing signals of all existing nodes when destroyed.
- fix:
LDtk
auto tile maps now only loop through tiles within the view bounds instead of all the tiles.
- add: Full Android support.
- add:
MutableTextureAtlas
class to combine existingTextureAtlas
,Texture
, andTextureSlice
types into a singleTextureAtlas
. - update:
vfsFile.readBitmapFont()
loader to allow passing in a list of existingTextureSlice
, such as from aTextureAtlas
. - update:
core
now includestools
as an api vs just **implementation. Required for the newMutableTextureAtlas
class. - JVM config: add
backgroundColor
option for initially setting background color. - JS config: add
backgroundColor
option for initially setting background color. - add:
Batch
interface. - update:
SpriteBatch
to use new interface. - update: all references to
SpriteBatch
withBatch
. - add: New batch implementation called
TextureArraySpriteBatch
that uses texture arrays to render multiple textures as a single draw call (GL 3+). - add: new helper methods for projecting / un-projecting coordinates on a
Camera
. - update:
GLVersion
to handle parsing version for OpenGL ES. - update:
Pointer
enum to support more than 3 pointers / touches (due to Android support). - update:
Pointer
with anindex
parameter for determine the actual index of the pointer / touch. - update:
Input
with newvibrate()
andcancelVibrate()
methods (Android support). - update
GLSLGenerator
to handle ES versions for mobile platforms. - BREAKING: remove:
getColorHex
andgetColorInt
methods fromLDtkIntGridLayer
. - add:
getColor()
that returns a newColor
instance toLDtkIntGridLayer
. - add:
truncate
string toFont
,FontCache
andGlyphLayout
. - add: ability to focus
Control
nodes and cycle through them with keyboard. - add:
onFocus
andonFocusLost
methods toControl
- BREAKING: move most UI enum classes to the specific Node class such as
SizeFlag
,StretchMode
, andAnchorLayout
- update:
SceneGraph
to trigger ui input events for keyboard - update:
BaseButton
to allow for triggering press signal with keyboard - update
Button
with new focus theme variable drawable - add:
LineEdit
control for editing single lines of text. - add:
Clipboard
support - add: showing/hiding soft keyboard for Android
- BREAKING: rename
InputMultiplexer
toInputMapController
- add: new
InputMapProcessor
interface withonAction
callbacks used withInputMapController
- update:
InputMapController
to handlePointer
types as a binding - update:
InputMapController
to handle key modifiers in a binding (SHIFT, CTRL, and ALT) - update:
SceneGraph
to use anInputMapController
and input actions - update:
SceneGraph
focus key binds to use action bindings - add: helper methods to set default UI input action bindings to for
SceneGraph
- add:
justTouched
andtouchJustReleased
methods toInput
- BREAKING: rename
onKeyTyped
toonCharType
. - add: new
onKeyRepeat
method toInputProcessor
- add: support for
KEY_REPEAT
event inSceneGraph
- BREAKING: move
StretchMode
intoTextureRect
class. - add:
TILE
stretch mode implementation toTextureRect
- add:
TextureProgress
control node - update:
NinePatch
to support setting source rectangle - BREAKING: update:
NinePatchRect
control node to use aTextureSlice
vs using aNinePatch
directly. - BREAKING: update
Scene
to use scoped lifecycle methods withContext
- BREAKING: update
Scene
to no longer inherit fromAssetProvider
- update:
Game
withvfs
andclipboard
properties - add: a return value to
Context
callback methods (onRender
,onPostRender
,onResize
,onDispose
,onPostRunnable
) that can be invoked once to remove the callback from being invoked. - add: new
SizeFlag
value ofNONE
which is the same as creating aSizeFlag(0)
- add: a new parameter to the
resize
method of aSceneGraph
to allow centering of the camera iftrue
. - update:
Context
callbacks (onRender
,onPosRender
,onResize
,onDispose
, andpostRunnable
) to return aRemoveContextCallback
lambda that can be invoked to remove itself from being called by theContext
. - update: the
resize()
method in aSceneGraph
to allow optional centering of camera. - update: LDtk version support to
1.0.0 beta3
- BREAKING: remove
readLDtkLevel
fromVfsLoaders
. - BREAKING: refactor
readLDtkMap
toreadLDtkMapLoader
. This now returns theLDtkMapLoader
which then can be used to callloadMap()
andloadLevel()
. - BREAKING: remove
LDtkWorld
andLDtkLevel
fromAssetProvider
default loaders - add: Passing in optional
TextureAtlas
when reading anLDtkMapLoader
. Requires preloading tileset textures in order to benefit from it. - add: Tiled map support. Includes, orthographic, isometric, and staggered map rendering support.
- update:
Rect
class is now open. - add:
extrude
,bleed
andbleedIterations
toTexturePacker
to prevent atlas bleeding and prevent filtering artifacts when RGB values are sampled for transparent pixels. - add
TexMinFilter
andTexMagFilter
constructor params toFrameBuffer
- fix: remove clearing color buffer in
LwjglContext
. - fix:
PathInfo
to handle./
. - fix:
InputQueueProcessor
from triggering any subsequent input processors if the input has been handled - fix:
InputQueueProcessor
not correctly resetting internal input events to be reused. - fix:
Pool
from freeing an allocated object when using a callback. - fix:
TextureSlice
using incorrect UV coordinates for a 1x1 slice - fix: LWJGL input not resetting the last char when typing
- fix:
TextureRect
not actually using the specified width and height for stretching - fix:
SceneGraph
focusing aControl
node that wasn't enabled - fix:
Node
not updating children nodes whenenable
value was changed. - fix:
Button
sometimes not calculating text size resulting in misplaced text - fix:
Label
sometimes not calculating text size resulting in misplaced text - fix:
GlyphLayoutRun
not correctly calculating next glyphadvance
value. - fix:
Button
text width calculations due toGlyphLayoutRun
glyphadvance
fix - fix:
LWJGL
application defaulting to graphic cardsvSync
setting whenvSync
was set to false. It now will properly turn offvSync
. - fix:
AnimationPlayer
not able to restart a current animation by usingstop()
and thenplay()
without having to swap animations.
Kotlin
from1.6.0
to1.6.10
LWJGL
from3.2.3
to3.3.0
kotlinx-coroutines
from1.6.0-RC
to1.6.0-native-mt
kotlinx-serialization
from1.3.1
to1.3.2
- Add JVM support
- Add JS support
- Add SceneGraph with Node and Node2D implementations
- Add UI built on top of SceneGraph
- Controls:
- Button
- Label
- Panel
- TextureRect
- NinePatchRect
- ProgressBar
- Containers:
- VBoxContainer and HBoxContainer
- PaddedContainer
- PanelContainer
- CenterContainer
- Controls:
- Add Virtual File System
- Add Shader support
- Add GLSL Generator for building shaders with Kotlin
- Add Texture Atlas support
- Add Bitmap Font support
- Add Audio streaming support
- Add Audio clips support
- Add math module
- Vectors
- Matrices
- Angles
- Point
- Bresenham
- Add sprite batching
- Add Scene class
- Add Game class for managing scenes
- Add Asset provider class to help load and prepare assets asynchronously
- Add App and Engine stats
- Add coroutine and async support and utilities
- Add LDtk tilemap support
- Add TTF file font parsing and loading
- Add GPU font rendering
- Add bin packer max rects algorithm
- Add texture packer tool
- Add Input processing with mouse, keyboard, and gamepad
- A Camera and Viewport support
- Add Logger
- Add Frame buffer objects support
- Add Particles support
- Add Animation support
- Add Color class