> For the complete documentation index, see [llms.txt](https://docs.incari.com/incari-studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.incari.com/incari-studio/2022.2/getting-started/whats-new-20222.md).

# What's New

Many new features have been added to the release of **Incari Studio** 2022.2. Here is a list of the features you need to know.

## **New Camera System**

On this release, a new **Camera** system has been introduced. With it, each **Scene** comes with a default **Camera** **Object** that is set to be the **Scene's** **Player Camera**, which is the **Camera** used when a **Scene** is initialized. This can be configured in the **Scene's** **Attributes**.

Now, **Camera** **Objects** are treated as any other **Object** in **Incari** and the view of a **Scene** is configured directly in them. Moreover, any number of **Cameras** can be used in a **Scene** and be managed through the evolution of a **Scene** in the **Logic** with the new **Camera Nodes**.

**Camera Objects** now have new features:

* **Picture-in-Picture**: By selecting a **Camera** in the **Scene Outliner**, the user can see in the bottom-right corner of the **Viewport** how the **Scene** looks like through that **Camera**.
* **Look Through**: Mode that allows the user to see in the **Viewport** what a **Camera** shows.
* **Proxies**: **Cameras** in the **Viewport** are displayed with their **Proxies**, which show which part of the **Scene** they will render.

See more about **Camera Objects**:

* [**Camera Object**](/incari-studio/2022.2/objects-and-types/scene-objects/camera.md)

See more about [**Camera Nodes**](/incari-studio/2022.2/toolbox/incari/camera.md):

* [**Get Active Camera**](/incari-studio/2022.2/toolbox/incari/camera/get-active-camera.md)
* [**Get All Cameras**](/incari-studio/2022.2/toolbox/incari/camera/get-all-cameras.md)
* [**Set Active Camera**](/incari-studio/2022.2/toolbox/incari/camera/set-active-camera.md)

## **2D Workflow**

Previously in **Incari**, *2D* and *3D* components coexisted in the same space. However, workflow was very *3D*-oriented, regardless of the dimensionality of an **Object**. Now **Incari** offers [**Scene2Ds**](/incari-studio/2022.2/objects-and-types/project-objects/scene2d.md) alongside [**Scenes**](/incari-studio/2022.2/objects-and-types/project-objects/scene.md). **Scenes** continue to provide whatever a user would need in *3D* space. **Scene2Ds** supply the user with the option for a *2D* workflow, providing an imperative facet to *User Interface* design.

In **Scene2Ds**, the workspace is truly only in two dimensions, in pixel space. For the order of **Objects**, an index is no longer required. Whatever way the **Objects** are listed in the **Scene Outliner** -- chosen by the user -- decides the order in which they are displayed.

Since *2D* and *3D* are now treated separately in **Incari**, [**Overlay Objects**](/incari-studio/2022.2/objects-and-types/scene-objects/overlay.md) have been created to bridge this so-called gap. This way, the user can specify a **Scene2D** to be rendered on top of a *3D* **Scene**.

New **2D Objects** for exclusive use in **Scene2Ds** have been introduced and are described in detail [here](/incari-studio/2022.2/objects-and-types/scene2d-objects.md).

There are also new **Nodes** of exclusive use in **Scene2Ds**:

* [**Get Slider Value**](/incari-studio/2022.2/toolbox/incari/object/getslidervalue.md)
* [**Set Slider Value**](/incari-studio/2022.2/toolbox/incari/object/setslidervalue.md)

And already existing **Nodes** have now a version for **Scene2Ds**:

* [**Get Position**](/incari-studio/2022.2/toolbox/incari/object/get-position.md)
* [**Set Position**](/incari-studio/2022.2/toolbox/incari/object/set-position.md)
* [**Get Rotation**](/incari-studio/2022.2/toolbox/incari/object/get-rotation.md)
* [**Set Rotation**](/incari-studio/2022.2/toolbox/incari/object/set-rotation.md)
* [**Get Size**](/incari-studio/2022.2/toolbox/incari/object/get-size.md)
* [**Set Size**](/incari-studio/2022.2/toolbox/incari/object/set-size-pixel.md)

## **Virtual Reality and Mixed Reality**

Use **Incari** to take your *HMI* **Projects** to the next level by integrating Virtual and Mixed Reality, such as with virtual prototyping, vehicle maintenence, or immersive showrooms. **Incari** **Studio** supports *Varjo API* and *OpenXR* and is optimized for both Virtual Reality and Mixed Reality. In future releases, Augmented Reality will also be sustained.

## [**Tags**](/incari-studio/2022.2/objects-and-types/attributes/common-attributes/tag.md)

A new **Attribute** has been introduced for all **Objects** in **Incari**: *Tags*. *Tags* are simple labels linked to **Objects** and are managed in the **Attribute Editor**, where they can be created, deleted, and edited. These *tags* allow the user to group and link different **Objects** under the same *tag*.

There are also **Nodes** that allow the user to manage *tags* in the **Logic**. These are:

* [**Add Tag**](/incari-studio/2022.2/toolbox/incari/object/add-tag.md), which adds a *tag* to an **Object**.
* [**Get Objects By Tag**](/incari-studio/2022.2/toolbox/incari/object/get-objects-by-tag.md), which returns all **Objects** that share a specified *tag*.
* [**Remove Tag**](/incari-studio/2022.2/toolbox/incari/object/remove-tag.md), which removes a *tag* from an **Object**.
* [**Get Tag**](/incari-studio/2022.2/toolbox/incari/object/get-tag.md), which returns the *tag* of an **Object**.

## **New Scene Objects**

This version of **Incari** introduces three new **Scene Objects**. They are:

* [**Audio**](/incari-studio/2022.2/objects-and-types/scene-objects/audio.md):\
  The new **Audio Objects** let the user incorporate aural information into a *User Interface*, such as music or recorded speech. Currently, only `.mp3` files are supported, but more formats are anticipated to follow in the future.
* [**Lottie Sprite**](/incari-studio/2022.2/objects-and-types/scene-objects/lottie-sprite.md): **Incari** now has a way to display `.lottie` files, a very popular file format for animations. These **Objects** provide the user with extended possibilities for visual creativity within a *User Interface*. Moreover, **Nodes** for managing *Lottie* animations have been introduced:

  * [**Play Lottie**](/incari-studio/2022.2/toolbox/incari/lottie/play-lottie.md)
  * [**Pause Lottie**](/incari-studio/2022.2/toolbox/incari/lottie/pause-lottie.md)
  * [**Stop Lottie**](/incari-studio/2022.2/toolbox/incari/lottie/stop-lottie.md)

  Also, new **Event Nodes** for *Lottie* animations have been added:

  * [**On Lottie Play**](/incari-studio/2022.2/toolbox/events/lottie/on-lottie-play.md)
  * [**On Lottie Pause**](/incari-studio/2022.2/toolbox/events/lottie/on-lottie-pause.md)
  * [**On Lottie Stop**](/incari-studio/2022.2/toolbox/events/lottie/on-lottie-stop.md)
  * [**On Lottie Finish**](/incari-studio/2022.2/toolbox/events/lottie/on-lottie-finish.md)
* [**Overlay**](/incari-studio/2022.2/objects-and-types/scene-objects/overlay.md): Related to the new **2D Workflow**, **Overlay Objects** allow the user to mix *3D* and *2D* **Scenes** by overlaying **Scene2Ds** on top of *3D* **Scenes**.

## [**Structure of Objects in a Scene**](/incari-studio/2022.2/objects-and-types/scene-objects.md#structure-in-a-scene)

[**Objects**](/incari-studio/2022.2/objects-and-types/scene-objects.md) in a [**Scene**](/incari-studio/2022.2/objects-and-types/project-objects/scene.md) now have the structure of a *tree*. This means that every **Object** except for the [**Root Object**](/incari-studio/2022.2/objects-and-types/scene-objects.md#root-object) has a *parent* and that all **Objects** may have *children*. Furthermore, any **Object** can be made into the *child* of any other **Object** in the **Scene**.

**Nodes** to retrieve information about the **Scene Structure** were introduced as well:

* [**Get Children**](/incari-studio/2022.2/toolbox/incari/object/get-children.md)
* [**Get Parent**](/incari-studio/2022.2/toolbox/incari/object/get-parent.md)
* [**Get Root**](/incari-studio/2022.2/toolbox/incari/object/get-root.md)
* [**Has Children**](/incari-studio/2022.2/toolbox/incari/object/has-children.md)

## **New Nodes and Node Updates**

Besides the **Nodes** related to new features that are specified above, several new **Nodes** have been introduced with this release while some existent ones have had major updates. The list is given below:

New **Nodes**:

* **IO**:
  * [**Create File**](/incari-studio/2022.2/toolbox/io/createfile.md)
  * [**Get Current Directory**](/incari-studio/2022.2/toolbox/io/getcurrentdirectory.md)
  * [**Get File Extension**](/incari-studio/2022.2/toolbox/io/getfileextension.md)
  * [**List Directory Contents**](/incari-studio/2022.2/toolbox/io/listdirectorycontent.md)
  * [**Remove Object**](/incari-studio/2022.2/toolbox/io/remove.md)
  * [**Set Current Directory**](/incari-studio/2022.2/toolbox/io/setcurrentdirectory.md)
* **Object**:
  * [**Destroy Object**](/incari-studio/2022.2/toolbox/incari/object/destroy.md)
  * [**Get Name**](/incari-studio/2022.2/toolbox/incari/object/get-name.md)
  * [**Instantiate Object**](/incari-studio/2022.2/toolbox/incari/object/instantiate.md)
  * [**Get Property**](/incari-studio/2022.2/toolbox/incari/object/get-property.md)
  * [**Set Property**](/incari-studio/2022.2/toolbox/incari/object/set-property.md)
  * [**Use Mask**](/incari-studio/2022.2/toolbox/incari/object/use-mask.md)
  * [**Set Stylesheet**](/incari-studio/2022.2/toolbox/incari/object/set-stylesheet.md)
  * [**Get Sort Index**](/incari-studio/2022.2/toolbox/incari/object/get-sort-index.md)
  * [**Set Sort Index**](/incari-studio/2022.2/toolbox/incari/object/set-sort-index.md)
* **Math**:
  * [**Round**](/incari-studio/2022.2/toolbox/math/round.md)
* **Mouse**:
  * [**Get Mouse Position**](/incari-studio/2022.2/toolbox/events/mouse/getmouseposition.md)
  * [**Get Mouse Position Delta**](/incari-studio/2022.2/toolbox/events/mouse/getmousepositiondelta.md)
* **Media**:
  * [**Get Volume**](/incari-studio/2022.2/toolbox/incari/media/getvolume.md)
  * [**Is Media Playing**](/incari-studio/2022.2/toolbox/incari/media/ismediaplaying.md)
  * [**Pause Media**](/incari-studio/2022.2/toolbox/incari/media/pausemedia.md)
  * [**Play Media**](/incari-studio/2022.2/toolbox/incari/media/playmedia.md)
  * [**Set Volume**](/incari-studio/2022.2/toolbox/incari/media/setvolume.md)
  * [**Stop Media**](/incari-studio/2022.2/toolbox/incari/media/stopmedia.md)
  * [**On Media Finish**](/incari-studio/2022.2/toolbox/events/media/onmediafinish.md)
  * [**On Media Play**](/incari-studio/2022.2/toolbox/events/media/onmediaplay.md)
* **Leap Motion**:
  * [**On Leap Motion Frame Update**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leap-motion-frame-update.md)
  * [**On Leap Motion Grab End**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-grab-end.md)
  * [**On Leap Motion Grab Start**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-grab-start.md)
  * [**On Leap Motion Grab Update**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-grab-update.md)
  * [**On Leap Motion Pinch End**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-pinch-end.md)
  * [**On Leap Motion Pinch Start**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-pinch-start.md)
  * [**On Leap Motion Pinch Update**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-pinch-update.md)
  * [**On Leap Motion Swipe Left**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-swipe-left.md)
  * [**On Leap Motion Swipe Right**](/incari-studio/2022.2/toolbox/events/leapmotion/on-leapmotion-swipe-right.md)
  * [**XR Position**](/incari-studio/2022.2/toolbox/events/leapmotion/xr-position.md)
* **Communication**:
  * [**Socket.IO Send**](/incari-studio/2022.2/toolbox/communication/socketio/socketiosend.md)
  * [**Socket.IO Start**](/incari-studio/2022.2/toolbox/communication/socketio/socketiostart.md)
  * [**Socket.IO Stop**](/incari-studio/2022.2/toolbox/communication/socketio/socketiostop.md)
  * [**Socket.IO Subscribe**](/incari-studio/2022.2/toolbox/communication/socketio/socketiosubscribe.md)
  * [**Socket.IO Unsubscribe**](/incari-studio/2022.2/toolbox/communication/socketio/socketiounsubscribe.md)
  * [**On Socket.IO Error**](/incari-studio/2022.2/toolbox/communication/socketio/events/onsocketioerror.md)
  * [**On Socket.IO Receive**](/incari-studio/2022.2/toolbox/communication/socketio/events/onsocketioreceive.md)
  * [**On Socket.IO Start**](/incari-studio/2022.2/toolbox/communication/socketio/events/onsocketiostart.md)
  * [**On Socket.IO Stop**](/incari-studio/2022.2/toolbox/communication/socketio/events/onsocketiostop.md)
  * [**TCP Send**](/incari-studio/2022.2/toolbox/communication/tcp/tcpsend.md)
  * [**TCP Start**](/incari-studio/2022.2/toolbox/communication/tcp/tcpstart.md)
  * [**TCP Stop**](/incari-studio/2022.2/toolbox/communication/tcp/tcpstop.md)
  * [**On TCP Error**](/incari-studio/2022.2/toolbox/communication/tcp/events/ontcperror.md)
  * [**On TCP Packet Receive**](/incari-studio/2022.2/toolbox/communication/tcp/events/ontcppacketreceive.md)
  * [**On TCP Start**](/incari-studio/2022.2/toolbox/communication/tcp/events/ontcpstart.md)
  * [**On TCP Stop**](/incari-studio/2022.2/toolbox/communication/tcp/events/ontcpstop.md)
  * [**UDP Send**](/incari-studio/2022.2/toolbox/communication/udp/udpsend.md)
  * [**UDP Start**](/incari-studio/2022.2/toolbox/communication/udp/udpstart.md)
  * [**UDP Stop**](/incari-studio/2022.2/toolbox/communication/udp/udpstop.md)
  * [**On UDP Error**](/incari-studio/2022.2/toolbox/communication/udp/events/onudperror.md)
  * [**On UDP Packet Receive**](/incari-studio/2022.2/toolbox/communication/udp/events/onudppacketreceive.md)
  * [**On UDP Start**](/incari-studio/2022.2/toolbox/communication/udp/events/onudpstart.md)
  * [**On UDP Stop**](/incari-studio/2022.2/toolbox/communication/udp/events/onudpstop.md)
* **Ultrahaptics**:
  * [**Ultrahaptics Play**](/incari-studio/2022.2/toolbox/incari/ultrahaptics/ultrahapticsplay.md)
  * [**Ultrahaptics Stop**](/incari-studio/2022.2/toolbox/incari/ultrahaptics/ultrahapticsstop.md)
* **Events**:
  * [**Unsubscribe**](/incari-studio/2022.2/toolbox/events/unsubscribe.md)
* **Prefab**:
  * [**This Prefab**](/incari-studio/2022.2/toolbox/prefab/thisprefab.md)

**Nodes** with major updates:

[**Mouse Event Nodes**](/incari-studio/2022.2/toolbox/events/mouse.md): The new **Attribute** `Event Base` has been introduced for all **Mouse Event Nodes**. With it, the user can set the **Node** to work for a particular **Object** or in the entire **Scene**.

* [**On Mouse Button Down**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-button-down.md)
* [**On Mouse Button Up**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-button-up.md)
* [**On Mouse Click**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-click.md)
* [**On Mouse Double Click**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-double-click.md)
* [**On Mouse Enter**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-enter.md)
* [**On Mouse Leave**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-leave.md)
* [**On Mouse Move**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-move.md)
* [**On Mouse Scroll**](/incari-studio/2022.2/toolbox/events/mouse/on-mouse-scroll.md)
