This release improves layout flexibility, data-driven UI rendering, and licensing robustness while addressing multiple animation and stability issues across SmartUI components. The new GridLayout alignment system and utility expressions significantly simplify UI positioning workflows, making SmartUI more powerful for building dynamic interfaces in Construct 3.
ppstudio_datalistener_beh
ppstudio_discreteprogress_beh
Framework Core
InstanceID Licensing Redesign
The SmartUI InstanceID generation system has been redesigned to improve license activation reliability.
InstanceID is now generated based on:
Device hardware information
This change strengthens license validation while reducing conflicts across installations.

GridLayout Cell Alignment System
GridLayout now supports a global cell-alignment property that allows precise positioning of objects inside each grid cell.
Supported alignment values include: left, center, right, top-left, top-center, top-right, center-left, center-center, center-right, bottom-left, bottom-center, bottom-right.
The default value is center.
This feature enables more flexible layout composition without requiring manual position adjustments after rendering.

GridLayout Utility Expressions
Two new expressions have been introduced to simplify coordinate calculations inside grid layouts:
GetYByRow(row)
Returns the Y coordinate corresponding to the specified grid row.
GetXByCol(column)
Returns the X coordinate corresponding to the specified grid column.
These expressions allow developers to translate logical grid positions into scene coordinates.

GridLayout SetAt Action
A new SetAt action allows placing objects directly into a specific grid cell.
If another object already exists in the target cell, the existing object is automatically destroyed and replaced by the new one.
This action simplifies dynamic grid updates and object replacement workflows.

Data Listener Rendering Index
The Data Listener behavior now returns the Data Source Index (DsIndex) when objects are rendered in renderer mode.
This makes it easier to track which element from the data source generated each UI instance.

Discrete Progress Auto-Color
The Discrete Progress behavior now includes an Auto-Color feature that automatically assigns colors based on progress state.
Auto-Color Override Fix
Fixed an issue where Auto-Color would override manually assigned colors.
Auto-Color is now only applied when:
The feature is explicitly active
Manual color settings are now respected.
Resolved an issue where the restore animation incorrectly fell back to the focus animation, even when a focus animation was not defined.
Fixed a case where the press animation would not play if the button remained pressed after the animation completed.
Animation functions now return null when the restore time is zero, preventing unnecessary restore animation triggers.
Restore animations are now triggered only when the button is no longer pressed.
Restore Animation Null Handling
Fixed a bug where the restore animation was not triggered when the restore function returned null.
GridLayout Null PageData Exception
Fixed an exception occurring in GridLayout when no pagedata was present.
Pointer Tracking Exception
Resolved a null pointer exception that occurred when the tracked pointer object was destroyed.
Checkbox Animation Assignment
Fixed an issue where function animations were not correctly assigned in the Checkbox behavior.
Resolved a bug where function animations were not assigned in the Radio Button behavior.
Fixed an issue with SetUncheckedDisabledAnimation not applying correctly.