CGI Studio 3.8

Release Date: May 2019

General 3.8


 

Candera 3.8

To keep backwards compatibility for any interface change in the public API the old interface has been kept and marked as deprecated. The deprecated interfaces will be removed in future versions. Compiler warnings will be generated when using a deprecated interface through the usage of Candera Macro CANDERA_DEPRECATED_3_8_0 and CANDERA_DEPRECATED_FILE_3_8_0.

Candera 3.8

Candera Base

Post Processing System

The Post Processing System now also supports 2D scenes on 3D capable platforms. The same post processing Lua scripts can be applied to 2D cameras and work exactly as they do in 3D scenes.


Candera 3.8

Candera Engine 2D

Mesh2D

On 2D platforms that also support 3D, 2D meshes using 2D positions and one UV set can now be used in Candera 2D with any available brush. Additionally, a control and a behavior making using of this feature were added.


Candera 3.8

Candera Platform

External Texture Image

Added support for egl_khr_external_texture_image for Linux devices. Enables use of DMA buffers for external textures and image streams.


 

Candera 3.8

Candera General Changes

  • Fixed several coverity issues.
  • Asynchronous asset loading did not consider the context for upload. This has been fixed (CGI1-27075 - 9866).
  • Invalidation dependencies contains camera information now (CGI1-26196 - 9786).
  • Parts of the transition framework have been rewritten for higher stabilization and better rule matching algorithms. Most of the changes affect reversing running transitions (CGI1-38227).
  • Added analyzer (monitor) file dump and memory dump possibility in Player (CGI1-25477).
  • Added possibility to get depth buffers from GlTextureFrameBuffer (CGI1-37989).
  • Node::RemoveAllChildren also removed parent. This has been fixed (CGI1-35916).

Candera 3.8

Candera Animations

New easing functions

Candera received two new easing functions: Sine and Circular. The scene composer UI has been updated to also support Quad, Cubic, Quart and Quint ease functions.


Animation of Control properties

Control/Behavior properties, including property types "Optional" and "Variant" can now be animated using Candera animations.


Candera 3.8

Candera Monitor

Layout monitor

The new analysis feature layout monitor has been added to candera. With this tool, it is possible to analyze the layout behavior of a scene in 2D as well as in 3D. Additionally, it provides an overlay to get a better understanding of the layed out nodes. This works under the condition that the camera has no transformations on it.


 

Candera 3.8

Candera Layout

  • In some cases stretch behavior property did not work properly with baseline layout. This has been fixed (CGI1-34195).
  • Fixed an issue in which the layouter sets a position unconditionally and triggers invalidate of layout in 3D (CGI1-35937).
  • Missing layout invalidation for changes of the Scale, Rotation and Pivot Point property in 2D and 3D has been added (CGI1-38529).
  • Scale has been set to 1 for ninepatch images when switching to StretchBehavior None. This has been fixed (CGI1-38533).
  • Clipping was incorrect when a pivot point was set on a child node of a default layouter and the node was downscaled. This has been fixed (CGI1-38530).
  • Rotated nodes which had the size property explicitly set was displaced. This has been fixed (CGI1-38531).

 

Candera 3.8

Candera Text Engine

  • Several text render cache related issues were fixed. This includes upload count and upload/unload call fixes for textures (CGI1-30284).
  • Fixed issues when building Monotype on Integrity systems (CGI1-39895).
  • Fixed Monotype cache item as custom width have not always been cached correctly (CGI1-34207).
  • Removed differences between alignment handling between TextNode2D and CanvasText (CGI1-34241 - 10093).
  • CanvasText rendering changes parts of the scene tree which triggered a continuous layout invalidation. This has been fixed (CGI1-35915).
  • Improvements have been done on unloading CanvasText (CGI1-35925).
  • Blending text with RGBA bitmap renderer has been changed (CGI1-29181 - 9946).
  • Outline in texture was not cleared correctly in all cases. This has been fixed (CGI1-36032 - 10119).
  • Reworks have been done on the way truncation is handled by TextNode2D and CanvasText (CGI1-38325).
  • The HarfBuzz font cache led to position issues when two equal characters with different font sizes have been rendered consecutively. This has been fixed (CGI1-37985 - 10149).
  • Improved building with Monotype under integrity systems. Interpretation of datatypes is platform dependent. The improvement matches Monotypes requirements in most use cases (CGI1-39895).
  • A negative bearing in glyph data lead to render fragments outside of the boundaries. Text has been moved inside the boundaries in case a size has been set. (CGI1-38325)

This might lead to a pixel movement in some cases by the value of negative bearing.


Candera 3.8

Candera Scripting

Lua Update

Lua has been updated to version 5.3.5.


Script Parameter Animation

Public script parameters of type integer, float, and boolean can now be animated using Candera animations. Since scripts can control animations, and now also be the target of them, this feature creates a lot of possibilities by being able to control value changes over time without having to change script code.


Candera 3.8

Candera System

Data-oriented Entity Component System

The internal structure of Candera's Entity Component System has been improved to make it fully data-oriented for the user. Components are stored in arrays and can be access via iterators. These iterators can group components together by user defined types, and access them serially to exploit the data cache. Components can now be any struct or class, and do no longer have to be derived from a component base class. The user can also decide if user implemented components should be stored by value or by reference.


 

Courier V3.8

Changes


 

Controls 3.8

Controls 3.8

New Controls

Keyboard Control

The Keyboard Control emulates physical computer keyboard that enables a user to enter characters into an InputField Control. The Keyboard Control is highly customizable via Configuration Script described below. To use the Control one needs to connect an InputField with a keyboard via KeyboardAction with Action Open. When the InputField send the event, the Keyboard appears and sends pressed characters to the InputField that activates it. [More...]


Roll Control

The Control represents a vertical list of numeric values from a specified range with a specified step. Current value of the Control is visible in the middle of the control and can be zoomed like using lens. Changing the current value can be animated and can be done using touch/pointer or configurable keys of a keyboard. One can edit the current value of the Control by entering it with a keyboard.
To use the Control simply put it in a scene and configure all desirable properties. A roll can forward value as well as receive a send value as event. [More...]


MenuScreen Control

The Control represents a menu in the form of a grid of icons (instances of the Menu Item Control).
It has configurable number of rows and columns as well as default and maximum number of screens. A user can swipe between neighbouring screens. The Control handles user input and forwards proper information to children MenuItem nodes. The children nodes may be removed and reordered in runtime. [More...]


MenuIcon Control

The main rationale behind the MenuIcon Control is an encapsulation and abstraction of an “icon” like in graphical environments of most known operating systems. It stores a bitmap and a string (label) together and provides single configuration of common behavior like positioning or highlighting.
It is designed to use inside the MenuItem Control and most probably one would like to use the MenuItem instead of plain MenuIcon. [More...]


PageIndicator Control

A PageIndicatorElement is a control which is part of Page Indicator which indicates currently displayed page. This control is intended to be used as component of Page Indicator and therefore is not focusable as individual element.
The control offers possibility to customize it’s appearance through 9 patch image and color properties. [More...]


Mesh2D Control

Performs a perspective projection of a 3D rotated effect (e.g. Bitmap or SolidColor effects) based on the configured origin, rotation and field of view. [More...]


CoverFlow Control

A CoverFlow is a proof-of-concept control that alows for horizontal swiping of child items. The items are scaled according to their location. [More...]


FPS-/FrameCounter-/FrameTime-Display Controls

The FPS Display Control provides a Text Node that displays the currently rendered frames per second, which allows benchmarking running applications.

The Frame Counter Display Control provides a Text Node that displays how many frames were already rendered.

The Frame Time Display Control provides a Text Node that displays the time it takes between frames to be rendered, which allows benchmarking running applications. [More...]



Controls 3.8

Control Modifications

Blend Mode Property

Some Controls got a new Property called "Blend Mode" which sets the chosen blend mode on every image which can be replaced inside the Control. This affects the following controls:

  • AnalogClock
  • Button
  • CheckBox
  • CircularSlider
  • Dial
  • Drawer
  • Flipbook
  • Gauge
  • GroupBox
  • IconButton
  • InputField
  • Menu Icon
  • Menu Item
  • Menu Screen
  • Mesh2D
  • MultiStateButton
  • PageIndicator
  • PageIndicatorElement
  • ProgressBar
  • RadioButton
  • Roll
  • Scrollbar
  • Slider
  • SpinBox
  • Tell Tale
  • ToggleButton
  • TouchIndication

ToggleButton ClickCount

In the ToggleButton Control the property named "ClickCount" is now configurable.


 

Control Behaviors 3.8

New Behaviors

The following Behaviors have been added in CGI Studio 3.8:

  • Action/Control/SetCulture
  • Action/Control/Menu Screen Action
  • Action/Control/Page Indicator Action
  • Action/Control/Check Culutre Change
  • Action/Property/Set Appearance
  • Control/Public Property/Blend Mode
  • Control/Menu Item
  • Control/Menu Screen
  • Control/Page Indicator
  • Control/Roll
  • Control/Transform Mesh2D
  • MixedReality/Internal/Poi Metadata Handler
  • MixedReality/Poi Configuration
  • MixedReality/Poi Manager
  • Streaming/Video Stream
  • Value Processing/Diagnostics/Frame Measurement
  • Value Processing/Smooth Value

Properties

The following Behavior properties have been changed or added:

Further Changes

  • Particle System: Particles are now evenly distributed over the frame update time difference
  • ColorActionBehavior and EffectColorBehavior do now support Canvas Text
  • EditTextBehavior:
    • Added text scrolling when Input Field has a fixed size
    • Added support for 'Send Value as Event' Behavior

FeatStd 3.8

FeatStd 3.8

Integrity threading

Integrity threads use normal priority as default now (CGI1-39788).


 

FeatStd 3.8

Rtti

IsTypeOf() can now be used with types, not just objects. If FeatStd::TypeId was abused as a character pointer, please take the necessary steps described in Migration Guide.



FeatStd 3.8

Migration Guide

Description FeatStd V3.7.0

Candera V3.8.0

FeatStd::TypeId changes "FeatStd::TypeId typeId" could be used as "const Char*"

Use "typeId->GetName()" to use it as "const Char*"


SceneComposer 3.8

Functional Changes