Kanzi 3.5 migration guide

Use this migration guide to update Kanzi applications from Kanzi 3.4 to Kanzi 3.5.

The default 3D text material

The default 3D text material now takes into account the Blend Intensity property. Check the Text Block 3D nodes using the default 3D text material and modify the content accordingly to get the desired rendering result.

Property precedence

Property values with class priority are no longer inherited.

Animation

Kanzi 3.5 introduces changes to the animation system which require you to update projects where you use keyframe animations.

Property-driven animations

Replace the property-driven animations in projects created with earlier versions of Kanzi with the Property Driven Animation Player. See Creating property-driven animations.

Replacing the Background Animation functionality

The Background Animation property is no longer available. Use the Animation Player to play keyframe animations you previously played using the Background Animation property. See Using keyframe animations.

Replacing the Play Animation action

Play Animation action is deprecated and will be removed in the next version of Kanzi. Change your Kanzi Studio projects to use the Animation Player and the animation playback actions to control your animations. See Using keyframe animations.

Target keyframes

Target keyframes are no longer available. Use the Property Target Interpolator to animate an object towards a dynamic target value. See Interpolating property values.

Keyframe classes

Keyframe classes use unique_ptr instead of shared_ptr.

Resource properties

In earlier Kanzi versions nodes references all resource through resource ID properties. Resource ID is a string that was mapped by the node to an actual resource. Resource ID could contain a URL string or an ID string that was mapped to an URL through a resource dictionary. In Kanzi 3.5 nodes reference resources through properties that contain direct pointers. This changes:

  • The way you declare property types for resources.

  • The way to read and write property values are read and written

  • Using of ID to URL mapping.

Declaring property types

In Kanzi 3.4 when you wanted a property to reference a resource, you used resource ID data type to declare the property type. For example,

PropertyType<ReseourceID>

In Kanzi 3.5 use

PropertyType<ResourceSharedPtr>

These properties accept and return resource pointers directly. For example, to set a texture to an Image node use

Image::setProperty(Image::TextureProperty, textureResource).

Reading and writing property values

Acquire resource from resource manager and set it as a property value.

Setting up indirect resource references

Changed the way you set up the mapping of a resource ID to a value in a resource dictionary.

For example, in earlier versions of Kanzi, to set the Image property value to a resource ID, you used

imageNode->setProperty(Image2D::ImageProperty, resourceId);

In Kanzi 3.5, to set the Image property value to a resource ID, use

BindingSharedPtr binding = Binding::create(domain);
binding->setSourceResource(resourceId);
binding->setTargetDynamicObjectProperty(".", Image2D::ImageProperty, PropertyFieldWhole);
imageNode->addBinding(binding);

Scroll View coordinates

The coordinates of Scroll View 2D and Scroll View 3D nodes have changed.

General

  • Property types require kzMakeFixedString for their name.

  • ResourceDictionary::acquireResource() now requires correctly formatted URL.

  • Node::acquireResource() now requires ResourceID.

  • kzuMatrix4x4 changed to Matrix4x4.