> 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/2023.1/getting-started/whats-new-20231.md).

# What's New

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

## Custom Shading

The [**Material Editor**](/incari-studio/2023.1/modules/material-editor.md) now includes a new shading model called the [**Custom Shading Model**](/incari-studio/2023.1/modules/material-editor/customshadingmodel.md). It allows the user to create and customize their own shading model. This expands the possibilities for **Materials** in **Incari**.

The customization is done via `Vertex Shader` or `Fragment Shader`.

The new **Custom Shading Model** allows the user to set values in `Fragment` and `Vertex Shader` files via the **Attributes** or the [**Set Custom Uniform Node**](/incari-studio/2023.1/toolbox/incari/material/setcustomuniforms.md).

![Custom Shading Example.](/files/6EKQGHKYvngCrqXJXZjJ)

## [Asset Database](/incari-studio/2023.1/modules/asset-database.md)

A new [**Module**](/incari-studio/2023.1/modules/overview.md) has been introduced with this release: the [**Asset Database**](/incari-studio/2023.1/modules/asset-database.md), which is a *database* of all the **Assets** that are either used in the **Project** or available to be used at runtime. It allows the user to keep track of all these **Assets** and have easy access to information about them, such as how many times they are used in the **Project** or their location.

Furthermore, two **Nodes** for managing **Assets** in the **Asset Database** have been introduced:

* [**Add to Asset Database**](/incari-studio/2023.1/toolbox/incari/asset/add-to-asset-database.md)
* [**Remove from Asset Database**](/incari-studio/2023.1/toolbox/incari/asset/remove-from-asset-database.md)

![The Asset Database.](/files/UyN1sCjIKjaTxeaey2Xr)

## Logic Plugins and Example

**Incari** now lets the user create their own **Nodes** via a **Logic Plugin**. Currently, there is one example **Plugin** with one **Node**, the [**JSON (Scale) Vector**](/incari-studio/2023.1/toolbox/plugins/jsonscalevector.md), that is available for the user to test out and learn the process with. The example can be found [here](/incari-studio/2023.1/toolbox/plugins.md).

![Logic Plugins](/files/E7xGNemqrq9jCHksBbRJ)

## 2D Workflow Update

The previously introduced split of *2D* and *3D* components in **Incari** has been widely expanded in this current release. New [**Scene2D Objects**](#scene2d-objects) have been added, [**Prefabs**](#2d-prefabs) have been extended to be used in *2D* space, and **Scene2D Objects** now allow for higher customizability using [CSS](#stylesheets).

### Scene2D Objects

New specific **Scene2D** **Objects** have been added along with their respective **Nodes**:

* [**Button**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/button.md)
* [**Dropdown**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/dropdown.md)
  * [**Get Active Dropdown Value**](/incari-studio/2023.1/toolbox/incari/object/get-active-dropdown-value.md)
  * [**Get Dropdown Options**](/incari-studio/2023.1/toolbox/incari/object/get-dropdown-options.md)
  * [**Set Active Dropdown Index**](/incari-studio/2023.1/toolbox/incari/object/set-active-dropdown-index.md)
  * [**Set Active Dropdown Value**](/incari-studio/2023.1/toolbox/incari/object/set-active-dropdown-value.md)
  * [**Set Dropdown Options**](/incari-studio/2023.1/toolbox/incari/object/set-dropdown-options.md)
  * [**On Dropdown Active Value Change**](/incari-studio/2023.1/toolbox/events/object/on-dropdown-active-value-change.md)
* [**List**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/list.md)
  * [**Add List Element**](/incari-studio/2023.1/toolbox/incari/list2d/addlistelement.md)
  * [**Get Active Indes**](/incari-studio/2023.1/toolbox/incari/list2d/getactiveindex.md)
  * [**Get List Data**](/incari-studio/2023.1/toolbox/incari/list2d/getlistdata.md)
  * [**Get List Element**](/incari-studio/2023.1/toolbox/incari/list2d/getlistelement.md)
  * [**Insert List Element**](/incari-studio/2023.1/toolbox/incari/list2d/insertlistelement.md)
  * [**Remove List Element**](/incari-studio/2023.1/toolbox/incari/list2d/removelistelement.md)
  * [**Set Active Index**](/incari-studio/2023.1/toolbox/incari/list2d/setactiveindex.md)
  * [**Set List Data**](/incari-studio/2023.1/toolbox/incari/list2d/setlistdata.md)
  * [**Set List Element**](/incari-studio/2023.1/toolbox/incari/list2d/setlistelement.md)
  * [**On List Active Index Change**](/incari-studio/2023.1/toolbox/events/list2d/onlistactiveindexchange.md)
* [**Slider**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/slider.md)
  * [**Get Slider Value**](/incari-studio/2023.1/toolbox/incari/object/getslidervalue.md)
  * [**Set Slider Value**](/incari-studio/2023.1/toolbox/incari/object/setslidervalue.md)
  * [**On Slider Value Change**](/incari-studio/2023.1/toolbox/events/object/on-slider-value-change.md)
* [**Text**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/text.md)
  * [**Get Text**](/incari-studio/2023.1/toolbox/incari/object/get-text.md)
  * [**Set Text**](/incari-studio/2023.1/toolbox/incari/object/set-text.md)
  * [**On Text Change**](/incari-studio/2023.1/toolbox/events/input/ontextchange.md)
* [**Text Area**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/textarea.md)
  * [**Get Text**](/incari-studio/2023.1/toolbox/incari/object/get-text.md)
  * [**Set Text**](/incari-studio/2023.1/toolbox/incari/object/set-text.md)
  * [**On Text Change**](/incari-studio/2023.1/toolbox/events/input/ontextchange.md)
* [**Text Input**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/textinput.md)
  * [**Get Text**](/incari-studio/2023.1/toolbox/incari/object/get-text.md)
  * [**Set Text**](/incari-studio/2023.1/toolbox/incari/object/set-text.md)
  * [**On Text Change**](/incari-studio/2023.1/toolbox/events/input/ontextchange.md)
* [**Toggle**](/incari-studio/2023.1/objects-and-types/scene2d-objects/gui/toggle.md)
  * [**Get CheckBox Value**](/incari-studio/2023.1/toolbox/incari/object/get-checkbox-value.md)
  * [**Set CheckBox Value**](/incari-studio/2023.1/toolbox/incari/object/set-checkbox-value.md)
  * [**On CheckBox Value Change**](/incari-studio/2023.1/toolbox/events/object/on-checkbox-value-change.md)

### 2D Prefabs

**Prefabs** in **Scenes** have already been an important facet of **Incari**. Now these extend into **Scene2Ds** where all **Objects** and combinations of **Objects** can be converted into **Prefabs**.

### Stylesheets

It is now possible to customize **Scene2D Objects** using *Stylesheets*. This can be set:

* For the entire **Project** in [**Project Settings**](/incari-studio/2023.1/modules/project-settings/style.md).
* For the whole [**Scene2D**](/incari-studio/2023.1/objects-and-types/project-objects/scene2d.md) via its `CSS File` **Attribute**.
* For a specific [**Object**](/incari-studio/2023.1/objects-and-types/scene2d-objects.md) via its `Class names` and `CSS` **Attributes**.

Moreover, new **Nodes** that allow the user to modify these **Attributes** via **Logic** have been introduced:

* [**Scene 2D**](/incari-studio/2023.1/toolbox/incari/scene2d.md)
  * [**Get Stylesheet**](/incari-studio/2023.1/toolbox/incari/scene2d/getstylesheet.md)
  * [**Merge To Stylesheet**](/incari-studio/2023.1/toolbox/incari/scene2d/mergetostylesheet.md)
  * [**Set Stylesheet**](/incari-studio/2023.1/toolbox/incari/scene2d/setstylesheet.md)
* [**Object 2D**](/incari-studio/2023.1/toolbox/incari/object2d.md)
  * [**Add CSS Class Name**](/incari-studio/2023.1/toolbox/incari/object2d/addcssclassname.md)
  * [**Get CSS Class Name**](/incari-studio/2023.1/toolbox/incari/object2d/getcssclassnames.md)
  * [**Remove CSS Class Name**](/incari-studio/2023.1/toolbox/incari/object2d/removecssclassname.md)
  * [**Set CSS Class Name**](/incari-studio/2023.1/toolbox/incari/object2d/setcssclassnames.md)

## Exporter Update

The [**Exporter**](/incari-studio/2023.1/modules/exporter.md) now allows the user to export a **Project** onto a different platform than it was created. For example, it can now handle the case of exporting a **Project** from *Windows* to *Linux*.

In addition, the **Exporter** offers the user the option to export only the used **Assets**, thus providing a way to export a **Project** using only the necessary resources.

![The Exporter updated.](/files/X6uMcYRzXdUyKs6qsbDT)

## Communication Update

**Incari** has extended the options for the different communication protocols it supports:

* **Serial** now has the option to set delimiters for incoming messages. This can be configured in [**Project Settings**](/incari-studio/2023.1/modules/project-settings/serial.md).
* *HTTPS* support has been added to the already implemented [**HTTP**](/incari-studio/2023.1/toolbox/communication/http.md), for both client and server.
* For [**CAN**](/incari-studio/2023.1/toolbox/communication/can.md), it is now possible for multiple connections to be configured. This is set in [**Project Settings**](/incari-studio/2023.1/modules/project-settings/can.md).
* [**MAVLink**](/incari-studio/2023.1/toolbox/communication/mavlink.md) is now a [Plugin](/incari-studio/2023.1/modules/plugins/communication/mavlinkmanager.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. The list is given below:

New **Nodes**:

* **List**:
  * [**Get Selected Item**](/incari-studio/2023.1/toolbox/incari/list/getselecteditem.md)
  * [**On List Item Clicked**](/incari-studio/2023.1/toolbox/incari/object/onlistitemclicked.md)
* **Object**:
  * [**Set Texture**](/incari-studio/2023.1/toolbox/incari/object/set-texture.md)
* **Media**
  * [**Seek Media**](/incari-studio/2023.1/toolbox/incari/media/seekmedia.md)
