# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.incari.com/incari-studio/2022.2/getting-started/whats-new-20222.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
