This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

API Migration

Major Changes#

Breaking Changes#

Revamped Window Manager and Engine Integration#

We have replaced the old CustomApp-based workflow with a new one. A new CustomSystemProxy concept to be used instead of the CustomApp incorporates definition of available functions (windows creation and management, input management, additional functionality like dialogs, clipboard, etc.) along with all necessary overrides. The functionality of some Engine subsystems is to be defined depending on the set of functions made available by the user. This class forms the basis for the operation of WindowManager, Input, GUI, Displays, etc.

Notice
The App class has been removed with some of its functionality moved to other classes (Input, Gui, Engine, WindowManager), for more information please refer to the App Class section below.

A separate proxy implementation is required for each integration environment (SystemProxySDL, SystemProxyQt, SystemProxyWPF, etc.).

The new CustomSystemProxy-based workflow has resolved the following issues:

  • inability to create a window without using platform-dependent code;
  • inability to create a separate rendering window without any plugins;
  • code duplication (the same window creation functionality in all applications);
  • only a part of functionality of the main window is available for other windows (GUI, Input, ...);
  • inability to obtain information on physical configuration of displays (monitor resolution, main monitor, etc.);
  • missing "window" concept and unclear API as a result;

We have simplified our own App* plugins moving similar functionality out and eliminating problems related to integration into applications created on the basis of third-party frameworks (such as inability to use VR in Qt or WPF applications).

Input System#

To unify processing of the mouse and keyboard inputs we have extended the Input class. New functionality covers methods that were used for input in the App class. All keyboard keys and mouse buttons have been moved to this class. Input buffer is now used to avoid missing input events at low framerates. Input events can be received as a buffer, you can create user events and dispatch them to the Engine via Input::sendEvent(). Input event filter is also available enabling you to reject certain input events for the Engine and get necessary information on all input events. This filter is configured via Input::setEventsFilter(). Event filter is also available for WindowManager (see WindowManager::setEventsFilter()) enabling you to receive all events for windows coming from the SystemProxy and filter them out.

Extended Set of Callbacks#

From now on, access to a wide range of input event callbacks is available: MOUSE, KEY, TEXT, TOUCH, and IMMEDIATE_INPUT. Text input callback allows getting a symbol in Unicode format. The user is getting an unsigned char, then it is translated into a proper code (for example: If Shift+q is pressed, then we get “Q”, and not just a key symbol).

New Keys#

The KEY enumeration now contains scan codes of buttons according to the QWERTY layout (indicating physical positions on the keyboard). This ensures standardization of controls to the same layout for every keyboard type, with the same button opening the console everywhere. You can obtain a symbol corresponding to the key taking into account current keyboard layout (QWERTY, QWERTZ, AZERTY), modifiers, etc. via the Input::keyToUnicode() method, or use Input::unicodeToKey() to get a scan code for a certain unicode symbol. To work with keys use Input::isKeyDown(), Input::isKeyPressed(), and Input::isKeyUp().

Moreover, paired keys (Ctrl, Alt, Shift, etc.) are now separated (LEFT_SHIFT, RIGHT_SHIFT, LEFT_ALT, etc.) making it easy to determine any pressed key on QWERTY, QWERTZ, and AZERTY keyboards.

Working with Multiple Displays#

The new Displays class allows getting information about connected displays. You can get the number of screen displays and the index of the main one. With those indices, you can identify their position and size in pixels. Also, there is access to the name and current dpi. Apart from that, there are functions for obtaining available modes for displays. You can get the number of modes and by their index get resolution and refresh rate.

Window Manager#

For windows creation, we have added a new EngineWindow class. All window management operations are performed via this manager enabling you to access any window of the application, group or stack windows, create various dialogs, etc.

A set of samples has been added to Sim SDK to demonstrate various aspects of use (samples/Api/WindowManager).

Interface Plugin Removed#

We have removed the Interface plugin as its functionality has been covered by the updates described above.

App Class (Removed)#

The App class has been removed in the framework of Window Manager and Engine Integration modifications (see details here).

Some of the functionality has been transferred to other classes:

  • input-related functions -> Input class.
  • window management functions -> WindowManager class.
  • application-level functions -> Engine class.
  • some mouse-related functions -> Gui class.

Be sure to remove the following include directives referencing the related header file (UnigineApp.h) from all source files of your project.

Source code (C++)
#include <UnigineApp.h>
UNIGINE 2.15.1 UNIGINE 2.16
Source code (C++)
// enabling constant background update 
// even when the Engine window is out of focus 
App::setBackgroundUpdate(true);
Source code (C++)
// enabling constant background update 
// even when the Engine window is out of focus 
Engine::get()->setBackgroundUpdate(true);
Source code (C++)
// getting points to detect intersection 
// based on mouse position and player direction
Math::ivec2 m_p = Input::getMouseCoord();
Math::Vec3 p0 = player->getWorldPosition();

Math::Vec3 dir = player->getDirectionFromScreen(m_p.x, m_p.y);
Math::Vec3 p1 = p0 + Math::Vec3(dir) * 100;
Source code (C++)
// getting points to detect intersection 
// based on mouse position and player direction
Math::ivec2 m_p = Input::getMousePosition();

Math::Vec3 p0 = player->getWorldPosition();
Math::Vec3 dir = player->getDirectionFromMainWindow(m_p.x, m_p.y);
Math::Vec3 p1 = p0 + Math::Vec3(dir) * 100;
Source code (C++)
// calculating aspect ratio from the screen size
int width = App::getWidth();
int height = App::getHeight();

float aspect = float(width) / height;
Source code (C++)
// calculating aspect ratio from the screen size
ivec2 main_size = ivec2_one;
EngineWindowPtr main_window = WindowManager::getMainWindow();
if (!main_window)
	Engine::get()->quit();

main_size = main_window->getSize();
float aspect = float(main_size.y) / main_size.x;
Source code (C++)
// getting the last frame time
time += App::getIFps();
Source code (C++)
// getting the last frame time
time += Engine::get()->getIFps();
Source code (C++)
// displaying a dialog message
App::dialogMessage("Package", "This is my Package!");
Source code (C++)
// displaying a dialog message
WindowManager::dialogMessage("Package", "This is my Package!");
Source code (C++)
// clamping framerate to 60 if VSync is off
if ((App::getFlags() & App::VSYNC) == 0 ||
	(App::getFlags() & App::FULLSCREEN) == 0)
	Render::setMaxFPS(60);
Source code (C++)
// clamping framerate to 60 if VSync is off
EngineWindowPtr main_wnd = WindowManager::getMainWindow();
if (!main_wnd)
	Engine::get()->quit();

if (Render::getVSync() == Render::VSYNC_DISABLE || 
	!main_wnd->isFullscreen())
	Render::setMaxFPS(60);
Source code (C++)
// setting handlers for different input events
App::SetKeyPressFunc(OnKeyPress);
App::SetKeyReleaseFunc(OnKeyRelease);

App::SetButtonPressFunc(OnBtnPress);
App::SetButtonReleaseFunc(OnBtnRelease);

App::SetKeyPressUnicodeFunc(OnUKeyPress);
Source code (C++)
// setting handlers for different input events
hKeyPress = Input::addCallback(Input::CALLBACK_KEY_DOWN, OnKeyPress);
hKeyRelease = Input::addCallback(Input::CALLBACK_KEY_UP, OnKeyRelease);

hBtnPress = Input::addCallback(Input::CALLBACK_MOUSE_DOWN, OnBtnPress);
hBtnRelease = Input::addCallback(Input::CALLBACK_MOUSE_UP, OnBtnRelease);

hUKeyPress = Input::addCallback(Input::CALLBACK_TEXT_PRESS, OnUKeyPress);
Source code (C++)
// getting mouse coords and wheel scroll information
int mouse_x = App::getMouseX();
int mouse_y = App::getMouseY();

MousePos = Math::ivec2(mouse_x , mouse_y);
MouseWheel += (float)(App::getMouseAxis(App::AXIS_Y));
MouseWheelH += (float)(App::getMouseAxis(App::AXIS_X));
Source code (C++)
// getting mouse coords and wheel scroll information
EngineWindowPtr main_wnd = WindowManager::getMainWindow();
if (!main_wnd)
	Engine::get()->quit();
	
int mouse_x = Input::getMousePosition().x - main_wnd->getPosition().x;
int mouse_y = Input::getMousePosition().y - main_wnd->getPosition().y;

MousePos = Math::ivec2(mouse_x, mouse_y);
MouseWheel += Input::getMouseWheel();
MouseWheelH += Input::getMouseWheelHorizontal();
Source code (C++)
// checking keyboard input
bool KeyCtrl = App::getKeyState(App::KEY_CTRL) != 0;
bool KeyShift = App::getKeyState(App::KEY_SHIFT) != 0;

if (App::clearKeyState('c'))
{
	// perform action 1
}
else if (App::clearKeyState(App::KEY_PGUP))
{
	// perform action 2
}
else if (App::clearKeyState(App::KEY_PGDOWN))
{
	// perform action 3
}
Source code (C++)
// checking keyboard input
bool KeyCtrl = (Input::isKeyPressed(Input::KEY_LEFT_CTRL) || Input::isKeyPressed(Input::KEY_RIGHT_CTRL));
bool KeyShift = (Input::isKeyPressed(Input::KEY_ANY_SHIFT));

if (Input::isKeyDown(Input::KEY_C))
{
	// perform action 1
}
else if (Input::isKeyDown(Input::KEY_PGUP))
{
	// perform action 2
}
else if (Input::isKeyDown(Input::KEY_PGDOWN))
{
	// perform action 3
}
Source code (C++)
// closing the application on clicking the right mouse button
if (App::clearMouseButtonState(App::BUTTON_RIGHT))
	 App::exit();
Source code (C++)
// closing the application on clicking the right mouse button
if (Input::isMouseButtonDown(Input::MOUSE_BUTTON_RIGHT))
	Engine::get()->quit();

CustomApp Class (Removed)#

The CustomApp class has been removed in the framework of Window Manager and Engine Integration modifications (see details here).

The RenderContext class has been removed. Functions related to render context were transferred to the Render class.

For detailed information on the new CustomSystemProxy-based integration workflow please refer to the Integrating with Frameworks article.

UNIGINE 2.15.1 UNIGINE 2.16
Source code (C++)
// getting D3D11 Device and Context
const auto ctx = static_cast<ID3D11DeviceContext*>(CustomApp::getD3D11Context());
const auto device = static_cast<ID3D11Device*>(CustomApp::getD3D11Device());
Source code (C++)
// getting D3D11 Device and Context
const auto ctx = static_cast<ID3D11DeviceContext*>(Render::getD3D11Context());
const auto device = static_cast<ID3D11Device*>(Render::getD3D11Device());

Joystick and Gamepad Controls Changes#

Interaction is now implemented using SDL library. Joysticks and gamepads now work on Windows and Linux and support hot-plugging. So, you can connect your joystick or gamepad before or after creating an instance of the corresponding class.

You can now create multiple ControlsJoystick and ControlsGamepad having the same numbers. For both of these devices you can access device type (wheel, throttle, etc.) and model.

The ControlsXPad360 class has transformed into ControlsGamepad class, which is now responsible for all gamepads, so the ControlsSixAxis class has been removed.

The following updates were made to the ControlsGamepad class:

  • Added new device types (wheel, throttle, etc.). See the DEVICE_TYPE_* enum of the Input class and DeviceType.
  • Added device model types (XBox 360, XBox One, PS3, etc.). See the MODEL_TYPE_* enum and ModelType.
  • Some devices support connection of multiple players (e.g., XBox 360 supports up to four players connected through XBox 360 gamepads). Now you can get this index via PlayerIndex.
  • Methods setLeftMotor() and setRightMotor() were removed. Vibration for low-frequency and high-frequency motors is now managed via the new setVibration() method enabling you to control vibration duration as well.
  • The getName() now returns the user-friendly name of the gamepad, not the name of its type ("GamePad", "Wheel" etc.)

See the details for other affected classes:

ARTTracker Class#

UNIGINE 2.15.1 UNIGINE 2.16
getBodyId( int ) Renamed as getBodyID( int ).
getFlyStickId( int ) Renamed as getFlyStickID( int ).
getMeaToolId( int ) Renamed as getMeaToolID( int ).
getMeaRefId( int ) Renamed as getMeaRefID( int ).
getMarkId( int ) Renamed as getMarkID( int ).
getHandId( int ) Renamed as getHandID( int ).
getHumanId( int ) Renamed as getHumanID( int ).
getHumanJointId( int ) Renamed as getHumanJointID( int ).
getInertialId( int ) Renamed as getInertialID( int ).

BootConfig Class#

UNIGINE 2.15.1 UNIGINE 2.16
setScreenMessagePluginsInit( const char * ) Removed.
getScreenMessagePluginsInit( ) Removed.

New Functions

Contact Class#

UNIGINE 2.15.1 UNIGINE 2.16
setId( int ) Renamed as setID( int ).
getId( ) Renamed as getID( ).

Controls Class#

UNIGINE 2.15.1 UNIGINE 2.16
CONTROLS_SIX_AXIS Removed. Use CONTROLS_GAMEPAD instead.
CONTROLS_X_PAD360 Removed. Use CONTROLS_GAMEPAD instead.

New Functions

ControlsApp Class#

UNIGINE 2.15.1 UNIGINE 2.16
setStateButton( int, int ) Renamed as setStateMouseButton( int, Input::MOUSE_BUTTON ).
getStateButton( int ) Renamed as getStateMouseButton( int ).
isStateButton( int ) Renamed as isStateMouseButton( Input::MOUSE_BUTTON ).

New Functions

ControlsJoystick Class#

The following changes were made for this release:

  • Joysticks now support hot-plugging. So, you can connect your joystick before or after create an instance of this class.
  • Added new device types (wheel, throttle, etc.). See the DEVICE_TYPE_* enum of the Input class and the DeviceType property.
  • Some devices support connection of multiple players (e.g., XBox 360 supports up to four players connected through XBox 360 gamepads). Now you can get this index via the PlayerIndex property.
  • Added an initial value for joystick axes (available via getAxisInitialValue(int) ).
  • Added a new enum for the states of the POV (Point-of-View) switch or DPad (POV_*)
  • Both GuidProduct and GuidInstance were removed. Now you should operate with Guid, Vendor, Product, and ProductVersion. The Guid is created on the basis of vendor and product identifiers and product version number. It enables you to identify device model (Controller XBox One, etc.), however, it will be the same for two identical models.

Curve2d Class#

Decal Class#

Dir Class#

UNIGINE 2.15.1 UNIGINE 2.16
mkdir( const char * ) Behavior changed.
mkdir( const char *, int ) Behavior changed.

Editor Class#

UNIGINE 2.15.1 UNIGINE 2.16
videoRestart( - ) Removed.

EditorLogic Class#

UNIGINE 2.15.1 UNIGINE 2.16
render( const EngineWindowPtr& ) Set of arguments changed.

The following changes shoud be made to AppEditorLogic.h and AppEditorLogic.cpp files of your project.

UNIGINE 2.15.1 UNIGINE 2.16
AppEditorLogic.h
Source code (C++)
int render() override;
AppEditorLogic.h
Source code (C++)
int render(const Unigine::EngineWindowPtr& window) override;
AppEditorLogic.cpp
Source code (C++)
int AppEditorLogic::render()
AppEditorLogic.cpp
Source code (C++)
int AppEditorLogic::render(const Unigine::EngineWindowPtr& window)

Engine Class#

Gui Class#

Due to the fact that now there may be several windows, a concept of the current GUI has come into play, to get the current GUI of the current main window use getCurrent() method:

UNIGINE 2.15.1 UNIGINE 2.16
Source code (C++)
// adding a child WidgetVBox element to the current GUI
GuiPtr gui = Gui::get();
vbox = WidgetVBox::create(15, 15);
gui ->addChild(vbox);
Source code (C++)
// adding a child WidgetVBox element to the current GUI
GuiPtr gui = Gui::getCurrent();
vbox = WidgetVBox::create(15, 15);
gui ->addChild(vbox);

Input Class#

UNIGINE 2.15.1 UNIGINE 2.16
getMouseCoordDelta( ) Renamed as getMouseDeltaPosition( ).
setMouseCoord( ) Renamed as setMousePosition( Math::ivec2 ).
getMouseCoord( ) Renamed as getMousePosition( ).
getMouseDelta( ) Renamed as getMouseDeltaRaw( ).

New Functions

InputGamePad Class#

Landscape Class#

LandscapeLayerMap Class#

LandscapeMapFileSettings Class#

LandscapeMapFileCompression Class#

UNIGINE 2.15.1 UNIGINE 2.16
COMPRESSOR_TYPE_NONE variable. Removed. Use Landscape::COMPRESSOR_TYPE_NONE instead.
COMPRESSOR_TYPE_JACKALLESS variable. Removed. Use Landscape::COMPRESSOR_TYPE_JACKALLESS instead.
COMPRESSOR_TYPE_LZ4 variable. Removed. Use Landscape::COMPRESSOR_TYPE_LZ4 instead.
COMPRESSOR_TYPE_ZLIB variable. Removed. Use Landscape::COMPRESSOR_TYPE_ZLIB instead.
run( bool, bool ) Removed. Use compress( bool, bool ) and decompress( bool, bool ) instead.
isLoaded( ) Removed.
load( const UGUID& ) Removed.
isCompressed( ) Removed. Use LandscapeMapFileSettings::isCompressed() instead.

New Functions

LeapMotionFinger Class#

UNIGINE 2.15.1 UNIGINE 2.16
getId( ) Renamed as getID( ).

LeapMotionHand Class#

UNIGINE 2.15.1 UNIGINE 2.16
getId( ) Renamed as getID( ).

LeapMotion Class#

UNIGINE 2.15.1 UNIGINE 2.16
getHandById( int ) Renamed as getHandByID( int ).
getFingerFromHandById( int ) Renamed as getFingerFromHandByID( int ).

Light Class#

UNIGINE 2.15.1 UNIGINE 2.16
setShadowScreenSpaceNoiseTranslucent( float ) Removed.
getShadowScreenSpaceNoiseTranslucent( ) Removed.
setShadowScreenSpaceViewBias( float ) Removed.
getShadowScreenSpaceViewBias( ) Removed.

New Functions

LightEnvironmentProbe Class#

LightPlanarProbe Class#

Material Class#

UNIGINE 2.15.1 UNIGINE 2.16
TEXTURE_SOURCE_CURVE Renamed as TEXTURE_SOURCE_RAMP.
WIDGET_TEXTURE_CURVE Renamed as WIDGET_TEXTURE_RAMP.
getTextureCurve( int ) Renamed as getTextureRamp( int ).
getTextureCurveOverride( int ) Renamed as getTextureRampOverride( int ).
isEngine( ) Renamed as isFileEngine( ).
destroyShaders( ) Removed.

New Functions

Materials Class#

Node Class#

UNIGINE 2.15.1 UNIGINE 2.16
getTypeId( const char * ) Renamed as getTypeID( const char * ).

ObjectGui Class#

UNIGINE 2.15.1 UNIGINE 2.16
setBackground( bool ) Type of argument changed.
getBackground( ) Renamed as isBackground( ).
setDepthTest( bool ) Type of argument changed.
getDepthTest( ) Renamed as isDepthTest( ).
setMouseShow( bool ) Type of argument changed.
getMouseShow( ) Renamed as isMouseShow( ).

ObjectGuiMesh Class#

UNIGINE 2.15.1 UNIGINE 2.16
getMouseShow( ) Renamed as isMouseShow( ).

New Functions

ObjectMeshStatic Class#

Player Class#

Due to the fact that now there may be several windows, methods getDirectionFromScreen(), getProjectionFromScreen() и getScreenPosition() were changed. Now there is a group of similar methods available for direction, projection, and position (relative to the current main window, relative to the specified window, relative to the screen):

All coords-related arguments (mouse_x, mouse_y, screen_x, screen_y), are now specified in world coordinates.

There are no default -1 values for coordinates and size arguments anymore to avoid ambiguity.

UNIGINE 2.15.1 UNIGINE 2.16
getDirectionFromScreen( ) Set of arguments changed.
getDirectionFromScreen( ) Set of arguments changed.

New Functions

Plugin Class#

UNIGINE 2.15.1 UNIGINE 2.16
gui( EngineWindowPtr& ) Set of arguments changed.
render( const EngineWindowPtr& ) Set of arguments changed.

Property Class#

New Functions

Render Class#

UNIGINE 2.15.1 UNIGINE 2.16
setShadowShaftsLength( float ) Removed. Use setScreenSpaceShadowShaftsLength( float ) instead.
getShadowShaftsLength( ) Removed. Use getScreenSpaceShadowShaftsLength( ) instead.
setShadowShaftsExposure( float ) Removed.
getShadowShaftsExposure( ) Removed.
setShadowShafts( bool ) Removed. Use setScreenSpaceShadowShaftsMode( int ) instead.
isShadowShafts( ) Removed. Use getScreenSpaceShadowShaftsMode( int ) instead.
getColorCorrectionCurve( ) Renamed as getColorCorrectionRamp( ).
resetColorCorrectionCurve( ) Renamed as resetColorCorrectionRamp( ).
resetColorCorrectionSaturationCurve( ) Renamed as resetColorCorrectionSaturationRamp( ).
setLandscapeTerrainCullingBackFace( float ) Removed.
getLandscapeTerrainCullingBackFace( ) Removed.
setLandscapeTerrainCullingFrustumPadding( float ) Removed.
getLandscapeTerrainCullingFrustumPadding( ) Removed.
setLandscapeTerrainCullingAggressive( bool ) Removed.
isLandscapeTerrainCullingAggressive( ) Removed.
setLandscapeTerrainGeometryFadeLods( float ) Removed.
getLandscapeTerrainGeometryFadeLods( ) Removed.
setMotionBlurNeatSilhouettes( bool ) Removed.
isMotionBlurNeatSilhouettes( ) Removed.
setSSRNoiseStep( float ) Removed.
getSSRNoiseStep( ) Removed.
setSSRNoiseRay( float ) Removed.
getSSRNoiseRay( ) Removed.
setSSRFastTracing( bool ) Removed.
getSSRFastTracing( ) Removed.
getScreenshot( const Ptr<Image> & ) Removed.
getBlack2DArrayTexture( ) Set of arguments changed.
getBlack2DTexture( ) Set of arguments changed.
getBlack2DUIntTexture( ) Set of arguments changed.
getBlack3DTexture( ) Set of arguments changed.
getBlackCubeTexture( ) Set of arguments changed.
getGray2DArrayTexture( ) Set of arguments changed.
getGray2DTexture( ) Set of arguments changed.
getGray2DUIntTexture( ) Set of arguments changed.
getGray3DTexture( ) Set of arguments changed.
getGrayCubeTexture( ) Set of arguments changed.
getWhite2DArrayTexture( ) Set of arguments changed.
getWhite2DTexture( ) Set of arguments changed.
getWhite2DUIntTexture( ) Set of arguments changed.
getWhite3DTexture( ) Set of arguments changed.
getWhiteCubeTexture( ) Set of arguments changed.

New Functions

RenderEnvironmentPreset Class#

Renderer Class#

RenderState Class#

New Functions

RenderTarget Class#

Shader Class#

ShapeContact Class#

UNIGINE 2.15.1 UNIGINE 2.16
setId( int ) Renamed as setID( int ).
getId( ) Renamed as getID( ).

TerrainDetailMask Class#

TeslaSuit::Suit Class#

UNIGINE 2.15.1 UNIGINE 2.16
getId( ) Renamed as getID( ).
getSourceMapId( ) Renamed as getSourceMapID( ).

Texture Class#

UNIGINE 2.15.1 UNIGINE 2.16
All texture sampler flags. Renamed with the SAMPLER_ prefix.
All texture format flags. Renamed with the FORMAT_ prefix, along with a new FORMAT_MIPMAPS flag added.
isBilinear( ) Removed.
setFlags( int ) Removed. Use setSamplerFlags( int ) instead.
getFlags( ) Removed. Use getSamplerFlags( ), getFormatFlags( ), and getAllFlags( ) instead.

New Functions

UGUID Class#

UNIGINE 2.15.1 UNIGINE 2.16
isEmpty( ) Return value type changed.
isValid( ) Return value type changed.

New Functions

UserInterface Class#

Widget Class#

WidgetCanvas Class#

WidgetExternBase Class#

WidgetScroll Class#

WidgetTreeBox Class#

World Class#

UNIGINE 2.15.1 UNIGINE 2.16
getNodeById( int ) Renamed as getNodeByID( int ).

Varjo Class#

Last update: 2022-11-18
Build: ()