What’s New in Evergine Studio

In this release we have made major improvements to the user experience of Evergine Studio. In this article we go through the main changes, which we hope you will enjoy and which should make your daily work on Evergine Studio projects a little easier.

Evergine Studio 2026.11.4.444 with a scene open

Simulate behaviors and physics from Evergine Studio

Evergine Studio now has a Play Mode that simulates behaviors and physics inside the editor. It was one of the most requested features. Until now, to see how a scene behaved you had to build and launch the application, then go back to the editor to fix whatever was wrong. Now you can set up complex physics scenes, or check how your behaviors are implemented and how they behave, right from Evergine Studio with a single click.

The top bar of the scene viewport has three new buttons:

Running a scene with Play, Pause and Step in the Scene Viewer

Play Mode runs a copy of the scene built from its asset, so the scene you are editing is never modified: when you press Stop you get it back exactly as it was before you pressed Play. Keep in mind that it runs the scene asset, not your whole application: code you add to your Scene class (for example in MyScene.cs) or to your Application class does not run. If the scene has no active camera, the viewport shows a notice instead of a black screen.

To make room for the new buttons we have also reorganized the scene toolbar. It used to show the three snap options (translation, rotation and scale) at once. Now it only shows the one for the selected transform tool.

Previous release:

The scene toolbar in the previous version, with the three snap options

New release:

The scene toolbar in the new version, with a single snap option and the Play, Step and Stop buttons

New manipulators

We have also rebuilt all the manipulators that move, rotate and scale entities in the scene viewport. They now use the implementation of the ImGuizmo library, the same one many engines and tools use. The new manipulators respond better and are easier to grab, and they bring improvements such as showing the distance covered during a translation:

Translating an entity with the new manipulator, which shows the distance covered

Or the degrees turned during a rotation:

Rotating an entity with the new manipulator, which shows the angle turned in degrees and radians

Snapping, the pivot and multi-selection still work, so you can transform several entities at once.

Along with the manipulators comes the View Cube, also from ImGuizmo. It shows the camera orientation in a corner of the viewport, and clicking one of its faces switches to the front, top, side or any other view. Setting up the view to edit a scene is now much faster.

Changing the view with the View Cube in the corner of the viewport

Pixel perfect selection

Another big improvement to the Evergine Studio viewport is the selection system. Until now, the editor picked entities with simplified volumes (boxes and spheres fitted to each model), so clicking the empty space around an object could select that object, and selecting a small object behind a large one was hard. Selection is now pixel perfect: you select exactly what you see under the cursor, which is much more precise when working with complex scenes. On top of that, the selected entity is drawn with an orange outline around its silhouette, so you can tell at a glance which one it is.

Pixel perfect selection: clicking each object selects it and draws its orange outline

When you select the root of an entity hierarchy, its children and grandchildren are drawn with a blue outline. That tells you they are not the selected entity, but that the transforms you apply to it will move them too.

A selected hierarchy: the root teapot with an orange outline and the child cone and cylinder with a blue outline

A few more details make selection more comfortable:

The outline colors, its width, the opacity of hidden parts and the hover highlight are set in Preferences > Viewport.

The selection outline options in the Viewport section of the Preferences dialog

Manage services from Project Settings

In Evergine, services (classes that derive from Service or UpdatableService) are the application-level counterpart of a component or a behavior: you use them when you need global logic or state that does not depend on the scenes in your project. Until now you had to register them in code in your Application class. In this release you can manage services from the Project Settings panel of Evergine Studio, without writing any code.

In the new Services section you can add the services of your project, remove them and configure their properties. The properties panel uses the same editors as Entity Details, so the RenderProperty attributes you already use in your components work the same way in your services.

The Services section of Project Settings with a service and its properties

The configuration is saved with the project, and the services are registered when the application starts through generated code. If you already register a service of the same type in your Application class, your registration takes precedence, so existing projects keep working as before. Services meant for internal use can be hidden from the list with the [Discoverable(false)] attribute.

Projects build in less than half the time

We have also worked on the editor build times. Evergine Studio now builds your projects in less than half the time the previous version took. Since Studio builds a project when it opens it, you notice it every time you open one too.

We measured the times with two projects: an empty project and the vehicle physics sample.

ProjectScenarioPrevious versionNew versionReduction
Empty projectClean build8.90 s3.73 s58%
Empty projectNo changes8.13 s3.04 s63%
Empty projectC# change8.06 s3.06 s62%
VehiclePhysicsSampleClean build10.19 s4.41 s57%
VehiclePhysicsSampleNo changes9.49 s3.63 s62%
VehiclePhysicsSampleC# change9.42 s3.69 s61%

The improvement comes from how the build is launched:

Better asset management

Asset management has also changed a lot in this release, with easier and more intuitive ways to find assets and assign them to components and entities.

Asset drag and drop

Every asset picker now supports drag and drop: drag any asset from the Assets panel and drop it on the property that needs it in Entity Details. For example, a material on a MaterialComponent, a font on a 3D text or a sound on a SoundEmitter3D. You could already do this with the drop-down lists, but dragging is much more comfortable and faster. Asset viewers use the same property editors, so you can also drop a texture on a material in the material viewer and see the result right away.

Dragging a material from the Assets panel onto the Material property of an entity

Organizing your content is easier too. The Project Explorer tree now supports dragging and dropping folders, several at once if you like, and you can drag assets onto a folder in the tree to move them.

Entity drag and drop

You can now also drag entities from the Scene Hierarchy panel onto the entity properties of components in Entity Details. It is especially useful when setting up physics scenes: the Connected Body property of constraints, which links one body to another, is set by dragging the other entity onto it. If you prefer, the picker also lets you search for the entity by name.

Dragging an entity from the Scene Hierarchy onto an entity property

Your own components can use it with a property of type Entity. The RenderPropertyAsEntity attribute limits the accepted entities to those that have certain components:

public class Follower : Behavior
{
    // Only accepts entities with a Transform3D component
    [RenderPropertyAsEntity(typeof(Transform3D))]
    public Entity Target { get; set; }
}

References are saved by id and resolved when the scene loads. When you instantiate a prefab, or duplicate or paste entities, they are remapped automatically so the copies point to the copied entities and not to the originals.

Raw assets through AssetsService

To load and handle assets from code, Evergine has always used AssetsService, which brings together everything related to assets. Now, besides the recognized asset types, it can also load raw assets: files in formats Evergine does not recognize, such as a JSON configuration file, a CSV with data or a format of your own. The new LoadRaw<T> method gives you a stream of the file and you decide how to read it, so you get all the flexibility you need. You also load supported and raw assets the same way, something you used to handle separately by building the file path by hand.

protected override void CreateScene()
{
    var assetsService = Application.Current.Container.Resolve<AssetsService>();

    var text = assetsService.LoadRaw<string>(EvergineContent.Raw.hello_txt, stream =>
    {
        using var reader = new StreamReader(stream);
        return reader.ReadToEnd();
    });

    var textComponent = this.Managers.EntityManager.FindFirstComponentOfType<Text3DMesh>();
    textComponent.Text = text;
}

The asset id comes from the generated EvergineContent class, like any other asset. The result is not cached: every call reads the file again, so keep it if you need it more than once.

General improvements

Finally, a few smaller improvements to the Evergine Studio interface. They are less eye-catching, but they also add a lot to the better user experience the Evergine team has been working towards in this release.

An Output panel you can copy from

We have rewritten the Output panel, where the editor logs everything it does. It used to show each message as an item in a list, and copying several lines was almost impossible. Now you can select text directly, or right-click and use Select All, to copy it or analyze it with an external tool. This makes debugging and reporting issues easier.

Selected text in the Output panel with the Copy, Select All and Clear menu

HDR range in the Texture Viewer

The texture viewer has a new range control to move through the values of HDR textures, which go well beyond 1. Adjust the range to see details that only show up in a specific band, such as the brightest or darkest areas of an environment map.

An HDR texture in the Texture Viewer with the Range control adjusted

Multiline string properties

You can now edit multiline strings from the editor. Just add the RenderPropertyAsTextBox attribute to the property of your component, behavior or drawable:

[RenderPropertyAsTextBox(multiline: true, maxLength: 512, placeholder: "Custom text")]
public string DisplayTag { get; set; }

In Evergine Studio the property shows up as a multiline field, with a placeholder when it is empty and a character counter that enforces the maximum length.

The DisplayTag property edited as multiline text, with the 122/512 counter

Close all tabs

Right-clicking a document tab shows Close, Close Others and Close All. As in Visual Studio, they work per window: closing everything in a floating window does not close the documents in the main window.

Tab menu with the Close, Close Others and Close All options

Reset profile values

Each profile (Windows, Android, Web…) can override texture settings and shader directives. Until now, once you changed one of those values there was no easy way back. Profiles now have a button to reset the original values with a single click.

And also

Try it now

All these improvements are available in the new Evergine release. Update from the Evergine Launcher, open your project and try Play Mode, the new selection and the manipulators. If you find any issue or have ideas to improve Evergine Studio, let us know in our GitHub repository.

Jorge Cantón
Author
Jorge Cantón
Research Director at Plain Concepts