This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Rendering
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
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
VR Development
Double Precision Coordinates
API
Animations-Related Classes
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
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Warning! This version of documentation is OUTDATED, as it describes an older SDK version! Please switch to the documentation for the latest SDK version.
Warning! This version of documentation describes an old SDK version which is no longer supported! Please upgrade to the latest SDK version.

API Migration

Major Changes#

Breaking Changes#

Callbacks to Events#

We have reworked the core mechanism of tracking various events everywhere across the Engine, as the callbacks-based system used up to this release had a number of issues and weak points, including:

  • Crashes when subscribing with a class member function in case the subscribed object was deleted (a frequent case as users often forget to unsubscribe).
  • Users had to keep and track all signals and handlers to manually unsubscribe properly.
  • Signal signature unclear from API, without type checking, making it possible to subscribe with virtually any signature, then compile successfully (even with some mistakes), and get invalid data at runtime. No compiler notifications in case of any API changes, again resulting in getting invalid data at runtime.
  • Calls to MakeCallback() and typecasting for lambda expressions were required in order to use addCallback() functions.

Introducing the new Event System to replace old callbacks with improved reliability and flexibility, bringing you the following features:

  • New Events have strict type checking for function signatures. It is now clearly seen how many arguments and which exactly a callback (event handler) function requires.
  • Compile-time checking determines whether argument types match event types or not.
  • Simpler subscription to events with lambda functions. There is no need to perform internal type conversions.
  • The new EventConnection handler does not require to unsubscrube manually. It automatically breaks any connection in the destructor.
  • More flexibility: you can temporarily disable certain events to perform certain actions without triggering them, as well as you can toggle on and off just a particular connection (EventConnection).
  • Batch management: a set of different subscriptions can be linked to a single EventConnections instance, enabling you to unsubscribe from all of them in a single function call.

The new Event System will require manual migration. But, there's nothing to worry about as the entire process involves locating all instances of addCallback in your code and replacing them with the new approach according to the instructions given below. For a medium-sized project this can be completed by one developer in a few days.

Migration Instructions#

  1. Replace all "AddCallback()" subscriptions with calls of the Connect() method for the corresponding events. You can also replace callback IDs according to the following pattern:
    2.17
    Source code (C#)
    System.IntPtr callback_id = ...
    2.18
    Source code (C#)
    EventConnection callback_id = ...
    There is a set of regular expressions that can be used to speed up the process.
  2. Replace all "RemoveCallback()" unsubscriptions with calls of the Disconnect() method for the former callback ID variables (if you changed their type to EventConnection as suggested in the previous step)
    2.17
    Source code (C#)
    Render.RemoveCallback(Render.CALLBACK_INDEX.BEGIN_AUXILIARY_BUFFER, callback_id);
    2.18
    Source code (C#)
    callback_id.Disconnect();
    There is a set of regular expressions that can be used to speed up the process.
  3. Remove all "ClearCallbacks()" methods, use EventConnections pattern with a call to DisconnectAll() for such cases:
    2.17
    Source code (C#)
    // add the first Reparented callback handler 
    property.AddCallback(Property.CALLBACK_INDEX.REPARENTED, event_handler);
    
    // add another Reparented callback handler
    property.AddCallback(Property.CALLBACK_INDEX.REPARENTED, (Property property) => { 
    			Log.Message("Reparented Handler\n");
    		});
    
    // ...
    
    // remove all added Reparented callbacks
    property.ClearCallbacks(Property.CALLBACK_INDEX.REPARENTED);
    2.18
    Source code (C#)
    // create an instance of the EventConnections class
    private EventConnections conns = new EventConnections();
    
    // subscribe for the Reparented event with the first handler linking to the EventConnections instance
    property.EventReparented.Connect(conns, event_handler);
    
    // subscribe for the Reparented event with another handler linking to the same EventConnections instance
    property.EventReparented.Connect(conns, (Property property) => { 
    		Log.Message("Reparented Handler\n");
    		}
    	);
    
    // ...
    
    // remove all subscriptions linked to the EventConnections instance
    conns.DisconnectAll();
  4. In case you used the SetCallbackEnabled() method to temporarily disable firing of certain callbacks (e.g., for widgets), you can replace it by setting the Enabled property for the corresponding events:
    2.17
    Source code (C#)
    widget.SetCallbackEnabled((int)Gui.CALLBACK_INDEX.CHANGED, false);
    2.18
    Source code (C#)
    widget.EventChanged.Enabled = false;
    There is a set of regular expressions that can be used to speed up the process.

Useful Reqular Expressions#

The set of regular expressions listed below might come in handy to save your time on upgrading your code:

1. Adding callbacks, including the ones constructed using lambda expressions.
Find:
Output
([\S]*?)\.AddCallback\([\S]*?.(?:CALLBACK_INDEX\.|)([A-Z])([A-Z]*)(?:_([A-Z])([A-Z]*)){0,1}(?:_([A-Z])([A-Z]*)){0,1}(?:_([A-Z])([A-Z]*)){0,1}\s*?,\s*?([\S\s]*?)\)
Replace:
Output
$1.Event$2\L$3\E$4\L$5\E$6\L$7\E$8\L$9.\EConnect\(\E$10\)
Examples:
Source code (C#)
viewport.AddCallback(Render.CALLBACK_INDEX.END_OPACITY_GBUFFER, gbuffers_ready_callback);

Properties.AddCallback(Properties.CALLBACK_INDEX.REMOVED, (Body b) => 
		{
			b.RenderInternalContacts(); 
			
			
			
			//...
		});

AsyncQueue.AddCallback(AsyncQueue.CALLBACK_INDEX.IMAGE_LOADED, image_loaded);

System.IntPtr callback_id = Render.AddCallback(Render.CALLBACK_INDEX.BEGIN_AUXILIARY_BUFFER, (Body b) => b.RenderInternalContacts() });
2. Adding named callbacks, including the ones constructed using lambda expressions.
Find:
Output
([\S]*?)\.Add([A-Za-z]+)Callback\(([\S\s]*?)\)
Replace:
Output
$1.Event$2.Connect\($3\)
Examples:
Source code (C#)
trigger.AddEnterCallback(enter_callback);

joint.AddBrokenCallback((Joint j) => { j.Body0.Object.SetMaterialPath("some.mat", "*"); });

body.AddContactsCallback((Body b) => {
	b.RenderInternalContacts(); 
	
	
	//...
});
3. Removing callbacks.
Find:
Output
[\S]*?\.RemoveCallback\([\S\s]*?,\s*?([\S]*?)\s*?\)
Replace:
Output
$1.Disconnect\(\)
Examples:
Source code (C#)
Render.RemoveCallback(Render.CALLBACK_INDEX.BEGIN_AUXILIARY_BUFFER, callback_id);
4. Disabling callbacks.
Find:
Output
([\S]*?)\.SetCallbackEnabled\(\s*?\(int\)\s*?[\S]*?.(?:CALLBACK_INDEX\.|)([A-Z])([A-Z]*)(?:_([A-Z])([A-Z]*)){0,1}(?:_([A-Z])([A-Z]*)){0,1}(?:_([A-Z])([A-Z]*)){0,1}\s*?,\s*?([\S]*?)\s*?\)
Replace:
Output
$1.Event$2\L$3\E$4\L$5\E$6\L$7\E$8\L$9.\EEnabled = \E$10
Examples:
Source code (C#)
widget.SetCallbackEnabled((int) Gui.CALLBACK_INDEX.CHANGED, false);

DeleteForce/DeleteLater Ambiguity#

To solve the ambiguity with calling the deleteLater/deleteForce methods in C++ we have removed these methods from the APIInterface class. The proper way is to call these methods via '.' :

Source code (C++)
NodePtr node;

node.deleteLater();
node.deleteForce();

AsyncQueue Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( CALLBACK_INDEX, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.FILE_LOADED -> EventFileLoaded
- CALLBACK_INDEX.IMAGE_LOADED -> EventImageLoaded
- CALLBACK_INDEX.MESH_LOADED -> EventMeshLoaded
- CALLBACK_INDEX.NODE_LOADED -> EventNodeLoaded

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = asyncqueue.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
asyncqueue.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
asyncqueue.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = asyncqueue.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
asyncqueue.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

Body Class#

UNIGINE 2.17 UNIGINE 2.18
AddFrozenCallback( FrozenDelegate ) Removed. Use EventFrozen.Connect() call instead (see migration details).
RemoveFrozenCallback( IntPtr ) Removed. Use EventFrozen.Disconnect() call instead (see migration details).
ClearFrozenCallbacks( ) Removed for safety reasons (see migration details).
AddPositionCallback( PositionDelegate ) Removed. Use EventPosition.Connect() call instead (see migration details).
RemovePositionCallback( IntPtr ) Removed. Use EventPosition.Disconnect() call instead (see migration details).
ClearPositionCallbacks( ) Removed for safety reasons (see migration details).
AddContactsCallback( ContactsDelegate ) Removed. Use EventContacts.Connect() call instead (see migration details).
RemoveContactsCallback( IntPtr ) Removed. Use EventContacts.Disconnect() call instead (see migration details).
ClearContactsCallbacks( ) Removed for safety reasons (see migration details).
AddContactEnterCallback( ContactEnterDelegate ) Removed. Use EventContactEnter.Connect() call instead (see migration details).
RemoveContactEnterCallback( IntPtr ) Removed. Use EventContactEnter.Disconnect() call instead (see migration details).
ClearContactEnterCallbacks( ) Removed for safety reasons (see migration details).
AddContactLeaveCallback( ContactLeaveDelegate ) Removed. Use EventContactLeave.Connect() call instead (see migration details).
RemoveContactLeaveCallback( IntPtr ) Removed. Use EventContactLeave.Disconnect() call instead (see migration details).
ClearContactLeaveCallbacks( ) Removed for safety reasons (see migration details).

New Properties

BoundBox Class#

Console Class#

UNIGINE 2.17 UNIGINE 2.18
AddOutputCallback( OutputDelegate ) Removed. Use EventOutput.Connect() call instead (see migration details).
RemoveOutputCallback( IntPtr ) Removed. Use EventOutput.Disconnect() call instead (see migration details).
ClearOutputCallbacks( ) Removed for safety reasons (see migration details).

New Properties

Curve2d Class#

UNIGINE 2.17 UNIGINE 2.18
AddChangedCallback( ChangedDelegate ) Removed. Use EventChanged.Connect() call instead (see migration details).
RemoveChangedCallback( IntPtr ) Removed. Use EventChanged.Disconnect() call instead (see migration details).
ClearChangedCallbacks( ) Removed for safety reasons (see migration details).

New Properties

Engine Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( Engine.CALLBACK_INDEX, CallbackBase ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( Engine.CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( Engine::CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.BEGIN_UPDATE -> EventBeginUpdate
- CALLBACK_INDEX.BEGIN_PROPERTIES_UPDATE -> EventBeginPropertiesUpdate
- CALLBACK_INDEX.END_PROPERTIES_UPDATE -> EventEndPropertiesUpdate
- CALLBACK_INDEX.BEGIN_INPUT_UPDATE -> EventBeginInputUpdate
- CALLBACK_INDEX.END_INPUT_UPDATE -> EventEndInputUpdate
- CALLBACK_INDEX.BEGIN_CONTROLS_UPDATE -> EventBeginControlsUpdate
- CALLBACK_INDEX.END_CONTROLS_UPDATE -> EventEndControlsUpdate
- CALLBACK_INDEX.BEGIN_WORLD_MANAGER_UPDATE -> EventBeginWorldManagerUpdate
- CALLBACK_INDEX.END_WORLD_MANAGER_UPDATE -> EventEndWorldManagerUpdate
- CALLBACK_INDEX.BEGIN_SOUND_MANAGER_UPDATE -> EventBeginSoundManagerUpdate
- CALLBACK_INDEX.END_SOUND_MANAGER_UPDATE -> EventEndSoundManagerUpdate
- CALLBACK_INDEX.BEGIN_GAME_UPDATE -> EventBeginGameUpdate
- CALLBACK_INDEX.END_GAME_UPDATE -> EventEndGameUpdate
- CALLBACK_INDEX.BEGIN_RENDER_UPDATE -> EventBeginRenderUpdate
- CALLBACK_INDEX.END_RENDER_UPDATE -> EventEndRenderUpdate
- CALLBACK_INDEX.BEGIN_EXPRESSION_UPDATE -> EventBeginExpressionUpdate
- CALLBACK_INDEX.END_EXPRESSION_UPDATE -> EventEndExpressionUpdate
- CALLBACK_INDEX.BEGIN_SOUNDS_UPDATE -> EventBeginSoundsUpdate
- CALLBACK_INDEX.END_SOUNDS_UPDATE -> EventEndSoundsUpdate
- CALLBACK_INDEX.BEGIN_PLUGINS_UPDATE -> EventBeginPluginsUpdate
- CALLBACK_INDEX.END_PLUGINS_UPDATE -> EventEndPluginsUpdate
- CALLBACK_INDEX.BEGIN_EDITOR_UPDATE -> EventBeginEditorUpdate
- CALLBACK_INDEX.END_EDITOR_UPDATE -> EventEndEditorUpdate
- CALLBACK_INDEX.BEGIN_SYSTEM_SCRIPT_UPDATE -> EventBeginSystemScriptUpdate
- CALLBACK_INDEX.END_SYSTEM_SCRIPT_UPDATE -> EventEndSystemScriptUpdate
- CALLBACK_INDEX.BEGIN_SYSTEM_LOGIC_UPDATE -> EventBeginSystemLogicUpdate
- CALLBACK_INDEX.END_SYSTEM_LOGIC_UPDATE -> EventEndSystemLogicUpdate
- CALLBACK_INDEX.BEGIN_WORLD_UPDATE -> EventBeginWorldUpdate
- CALLBACK_INDEX.END_WORLD_UPDATE -> EventEndWorldUpdate
- CALLBACK_INDEX.BEGIN_WORLD_POST_UPDATE -> EventBeginWorldPostUpdate
- CALLBACK_INDEX.END_WORLD_POST_UPDATE -> EventEndWorldPostUpdate
- CALLBACK_INDEX.BEGIN_SYSTEM_SCRIPT_POST_UPDATE -> EventBeginSystemScriptPostUpdate
- CALLBACK_INDEX.END_SYSTEM_SCRIPT_POST_UPDATE -> EventEndSystemScriptPostUpdate
- CALLBACK_INDEX.BEGIN_SYSTEM_LOGIC_POST_UPDATE -> EventBeginSystemLogicPostUpdate
- CALLBACK_INDEX.END_SYSTEM_LOGIC_POST_UPDATE -> EventEndSystemLogicPostUpdate
- CALLBACK_INDEX.BEGIN_EDITOR_POST_UPDATE -> EventBeginEditorPostUpdate
- CALLBACK_INDEX.END_EDITOR_POST_UPDATE -> EventEndEditorPostUpdate
- CALLBACK_INDEX.BEGIN_PLUGINS_POST_UPDATE -> EventBeginPluginsPostUpdate
- CALLBACK_INDEX.END_PLUGINS_POST_UPDATE -> EventEndPluginsPostUpdate
- CALLBACK_INDEX.BEGIN_SPATIAL_UPDATE -> EventBeginSpatialUpdate
- CALLBACK_INDEX.END_SPATIAL_UPDATE -> EventEndSpatialUpdate
- CALLBACK_INDEX.BEGIN_FILESYSTEM_UPDATE -> EventBeginFilesystemUpdate
- CALLBACK_INDEX.END_FILESYSTEM_UPDATE -> EventEndFilesystemUpdate
- CALLBACK_INDEX.BEGIN_PATHFINDING -> EventBeginPathfinding
- CALLBACK_INDEX.END_UPDATE -> EventEndUpdate
- CALLBACK_INDEX.BEGIN_RENDER -> EventBeginRender
- CALLBACK_INDEX.BEGIN_EDITOR_RENDER -> EventBeginEditorRender
- CALLBACK_INDEX.END_EDITOR_RENDER -> EventEndEditorRender
- CALLBACK_INDEX.BEGIN_PLUGINS_RENDER -> EventBeginPluginsRender
- CALLBACK_INDEX.END_PLUGINS_RENDER -> EventEndPluginsRender
- CALLBACK_INDEX.BEGIN_RENDER_WORLD -> EventBeginRenderWorld
- CALLBACK_INDEX.END_RENDER_WORLD -> EventEndRenderWorld
- CALLBACK_INDEX.BEGIN_PLUGINS_GUI -> EventBeginPluginsGui
- CALLBACK_INDEX.END_PLUGINS_GUI -> EventEndPluginsGui
- CALLBACK_INDEX.BEGIN_POST_RENDER -> EventBeginPostRender
- CALLBACK_INDEX.END_POST_RENDER -> EventEndPostRender
- CALLBACK_INDEX.END_RENDER -> EventEndRender
- CALLBACK_INDEX.BEGIN_SWAP -> EventBeginSwap
- CALLBACK_INDEX.END_PATHFINDING -> EventEndPathfinding
- CALLBACK_INDEX.BEGIN_WORLD_SWAP -> EventBeginWorldSwap
- CALLBACK_INDEX.END_WORLD_SWAP -> EventEndWorldSwap
- CALLBACK_INDEX.BEGIN_PLUGINS_SWAP -> EventBeginPluginsSwap
- CALLBACK_INDEX.END_PLUGINS_SWAP -> EventEndPluginsSwap
- CALLBACK_INDEX.BEGIN_DELETE_OBJECTS -> EventBeginDeleteObjects
- CALLBACK_INDEX.END_DELETE_OBJECTS -> EventEndDeleteObjects
- CALLBACK_INDEX.END_SWAP -> EventEndSwap

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = Engine.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
Engine.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
Engine.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = Engine.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
Engine.Event<CB_NAME>.Disconnect(event_connection);

See Also:

EngineWindow Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( CALLBACK_INDEX, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.WINDOW_EVENT -> EventWindowEvent
- CALLBACK_INDEX.FUNC_UPDATE -> EventFuncUpdate
- CALLBACK_INDEX.FUNC_BEGIN_RENDER -> EventFuncBeginRender
- CALLBACK_INDEX.FUNC_RENDER -> EventFuncRender
- CALLBACK_INDEX.FUNC_BEGIN_RENDER_GUI -> EventFuncBeginRenderGui
- CALLBACK_INDEX.FUNC_END_RENDER_GUI -> EventFuncEndRenderGui
- CALLBACK_INDEX.FUNC_END_RENDER -> EventFuncEndRender
- CALLBACK_INDEX.FUNC_SWAP -> EventFuncSwap
- CALLBACK_INDEX.MOVED -> EventMoved
- CALLBACK_INDEX.RESIZED -> EventResized
- CALLBACK_INDEX.FOCUSED -> EventFocused
- CALLBACK_INDEX.UNFOCUSED -> EventUnfocused
- CALLBACK_INDEX.MOUSE_ENTER -> EventMouseEnter
- CALLBACK_INDEX.MOUSE_LEAVE -> EventMouseLeave
- CALLBACK_INDEX.SHOWN -> EventShown
- CALLBACK_INDEX.HIDDEN -> EventHidden
- CALLBACK_INDEX.MINIMIZED -> EventMinimized
- CALLBACK_INDEX.MAXIMIZED -> EventMaximized
- CALLBACK_INDEX.RESTORED -> EventRestored
- CALLBACK_INDEX.CLOSE -> EventClose
- CALLBACK_INDEX.ITEM_DROP -> EventItemDrop
- CALLBACK_INDEX.UNSTACK_MOVE -> EventUnstackMove
- CALLBACK_INDEX.STACK -> EventStack
- CALLBACK_INDEX.UNSTACK -> EventUnstack

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = enginewindow.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
enginewindow.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
enginewindow.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = enginewindow.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
enginewindow.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

CollisionVolume Class#

UNIGINE 2.17 UNIGINE 2.18
AddCustomRenderCallback( CustomRenderDelegate ) Removed. Use EventCustomRender.Connect() call instead (see migration details).
RemoveCustomRenderCallback( IntPtr ) Removed. Use EventCustomRender.Disconnect() call instead (see migration details).
ClearCustomRenderCallbacks( ) Removed for safety reasons (see migration details).

FieldShoreline Class#

UNIGINE 2.17 UNIGINE 2.18
AddProgressCallback( ChangedDelegate ) Removed. Use EventProgress.Connect() call instead (see migration details).
RemoveProgressCallback( IntPtr ) Removed. Use EventProgress.Disconnect() call instead (see migration details).
ClearProgressdCallbacks( ) Removed for safety reasons (see migration details).

New Properties

FileSystem Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( int, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( int, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( int ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.FILE_ADDED -> EventFileAdded
- CALLBACK_INDEX.FILE_REMOVED -> EventFileRemoved
- CALLBACK_INDEX.FILE_CHANGED -> EventFileChanged
- CALLBACK_INDEX.FILES_ADDED -> EventFilesAdded
- CALLBACK_INDEX.FILES_REMOVED -> EventFilesRemoved
- CALLBACK_INDEX.FILES_CHANGED -> EventFilesChanged

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = FileSystem.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
FileSystem.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
FileSystem.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = FileSystem.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
FileSystem.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

Gui Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.

New Properties

Image Class#

ImageConverter Class#

Input Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( CALLBACK_INDEX, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.MOUSE_DOWN -> EventMouseDown
- CALLBACK_INDEX.MOUSE_UP -> EventMouseUp
- CALLBACK_INDEX.MOUSE_WHEEL -> EventMouseWheel
- CALLBACK_INDEX.MOUSE_WHEEL_HORIZONTAL -> EventMouseWheelHorizontal
- CALLBACK_INDEX.MOUSE_MOTION -> EventMouseMotion
- CALLBACK_INDEX.KEY_DOWN -> EventKeyDown
- CALLBACK_INDEX.KEY_UP -> EventKeyUp
- CALLBACK_INDEX.KEY_REPEAT -> EventKeyRepeat
- CALLBACK_INDEX.TEXT_PRESS -> EventTextPress
- CALLBACK_INDEX.TOUCH_DOWN -> EventTouchDown
- CALLBACK_INDEX.TOUCH_UP -> EventTouchUp
- CALLBACK_INDEX.TOUCH_MOTION -> EventTouchMotion
- CALLBACK_INDEX.GAMEPAD_CONNECTED -> EventGamepadConnected
- CALLBACK_INDEX.GAMEPAD_DISCONNECTED -> EventGamepadDisconnected
- CALLBACK_INDEX.GAMEPAD_BUTTON_DOWN -> EventGamepadButtonDown
- CALLBACK_INDEX.GAMEPAD_BUTTON_UP -> EventGamepadButtonUp
- CALLBACK_INDEX.GAMEPAD_AXIS_MOTION -> EventGamepadAxisMotion
- CALLBACK_INDEX.GAMEPAD_TOUCH_DOWN -> EventGamepadTouchDown
- CALLBACK_INDEX.GAMEPAD_TOUCH_UP -> EventGamepadTouchUp
- CALLBACK_INDEX.GAMEPAD_TOUCH_MOTION -> EventGamepadTouchMotion
- CALLBACK_INDEX.JOY_CONNECTED -> EventJoyConnected
- CALLBACK_INDEX.JOY_DISCONNECTED -> EventJoyDisconnected
- CALLBACK_INDEX.JOY_BUTTON_DOWN -> EventJoyButtonDown
- CALLBACK_INDEX.JOY_BUTTON_UP -> EventJoyButtonUp
- CALLBACK_INDEX.JOY_AXIS_MOTION -> EventJoyAxisMotion
- CALLBACK_INDEX.JOY_POV_MOTION -> EventJoyPovMotion
- CALLBACK_INDEX.IMMEDIATE_INPUT -> EventImmediateInput

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = Input.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
Input.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
Input.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = Input.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
Input.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Functions

New Properties

InputEvent Class#

Joint Class#

UNIGINE 2.17 UNIGINE 2.18
AddBrokenCallback( BrokenDelegate ) Removed. Use EventBroken.Connect() call instead (see migration details).
RemoveBrokenCallback( IntPtr ) Removed. Use EventBroken.Disconnect() call instead (see migration details).
ClearBrokenCallbacks( ) Removed for safety reasons (see migration details).

New Properties

Landscape Class#

UNIGINE 2.17 UNIGINE 2.18
AddTextureDrawCallback( TextureDrawDelegate ) Removed. Use EventTextureDraw.Connect() call instead (see migration details).
RemoveTextureDrawCallback( IntPtr ) Removed. Use EventTextureDraw.Disconnect() call instead (see migration details).
ClearTextureDrawCallback( ) Removed for safety reasons (see migration details).
AddApplyDiffCallback( ApplyDiffDelegate ) Removed. Use EventApplyDiff.Connect() call instead (see migration details).
RemoveApplyDiffCallback( IntPtr ) Removed. Use EventApplyDiff.Disconnect() call instead (see migration details).
ClearApplyDiffCallback( ) Removed for safety reasons (see migration details).
AddSaveFileCallback( SaveFileDelegate ) Removed. Use EventSaveFile.Connect() call instead (see migration details).
RemoveSaveFileCallback( IntPtr ) Removed. Use EventSaveFile.Disconnect() call instead (see migration details).
ClearSaveFileCallback( ) Removed for safety reasons (see migration details).

New Properties

LandscapeFetch Class#

UNIGINE 2.17 UNIGINE 2.18
AddStartCallback( StartDelegate ) Removed. Use EventStart.Connect() call instead (see migration details).
RemoveStartCallback( IntPtr ) Removed. Use EventStart.Disconnect() call instead (see migration details).
ClearStartCallback( ) Removed for safety reasons (see migration details).
AddEndCallback( EndDelegate ) Removed. Use EventEnd.Connect() call instead (see migration details).
RemoveEndCallback( IntPtr ) Removed. Use EventEnd.Disconnect() call instead (see migration details).
ClearEndCallback( ) Removed for safety reasons (see migration details).

New Properties

LandscapeMapFileCreator Class#

UNIGINE 2.17 UNIGINE 2.18
AddCreateCallback( CreateDelegate ) Removed. Use EventCreate.Connect() call instead (see migration details).
RemoveCreateCallback( IntPtr ) Removed. Use EventCreate.Disconnect() call instead (see migration details).
ClearCreateCallback( ) Removed for safety reasons (see migration details).
AddProgressCallback( ProgressDelegate ) Removed. Use EventProgress.Connect() call instead (see migration details).
RemoveProgressCallback( IntPtr ) Removed. Use EventProgress.Disconnect() call instead (see migration details).
ClearProgressCallback( ) Removed for safety reasons (see migration details).
AddBeginCallback( BeginDelegate ) Removed. Use EventBegin.Connect() call instead (see migration details).
RemoveBeginCallback( IntPtr ) Removed. Use EventBegin.Disconnect() call instead (see migration details).
ClearBeginCallback( ) Removed for safety reasons (see migration details).
AddEndCallback( EndDelegate ) Removed. Use EventEnd.Connect() call instead (see migration details).
RemoveEndCallback( IntPtr ) Removed. Use EventEnd.Disconnect() call instead (see migration details).
ClearEndCallback( ) Removed for safety reasons (see migration details).

New Properties

LightEnvironmentProbe Class#

LightVoxelProbe Class#

UNIGINE 2.17 UNIGINE 2.18
Property AdditiveBlending Removed. Use BlendMode instead.

New Functions

New Properties

LightWorld Class#

New Properties

LoadingScreen Class#

UNIGINE 2.17 UNIGINE 2.18
AddRenderBeginCallback( RenderBeginDelegate ) Removed. Use EventRenderBegin.Connect() call instead (see migration details).
RemoveRenderBeginCallback( IntPtr ) Removed. Use EventRenderBegin.Disconnect() call instead (see migration details).
ClearRenderBeginCallbacks( ) Removed for safety reasons (see migration details).
AddRenderEndCallback( RenderEndDelegate ) Removed. Use EventRenderEnd.Connect() call instead (see migration details).
RemoveRenderEndCallback( IntPtr ) Removed. Use EventRenderEnd.Disconnect() call instead (see migration details).
ClearRenderEndCallbacks( ) Removed for safety reasons (see migration details).

New Properties

Log Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( int, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( int, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( int ) Removed for safety reasons (see migration details).
HasCallback( int ) Removed.
Old Enum to New Event Mapping:
- CALLBACK_INDEX.MESSAGE -> EventMessage
- CALLBACK_INDEX.WARNING -> EventWarning
- CALLBACK_INDEX.ERROR -> EventError
- CALLBACK_INDEX.FATAL -> EventFatal

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = Log.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
Log.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
Log.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = Log.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
Log.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

Material Class#

Materials Class#

UNIGINE 2.17 UNIGINE 2.18
Enum LOADING_MODE Removed.
Property LoadingMode Removed.
CompileShaders( Material[] ) Removed.
AddBeginReloadCallback( BeginReloadDelegate ) Removed. Use EventBeginReload.Connect() call instead (see migration details).
RemoveBeginReloadCallback( IntPtr ) Removed. Use EventBeginReload.Disconnect() call instead (see migration details).
ClearBeginReloadCallbacks( ) Removed for safety reasons (see migration details).
AddEndReloadCallback( EndReloadDelegate ) Removed. Use EventEndReload.Connect() call instead (see migration details).
RemoveEndReloadCallback( IntPtr ) Removed. Use EventEndReload.Disconnect() call instead (see migration details).
ClearEndReloadCallbacks( ) Removed for safety reasons (see migration details).

New Properties

New Functions

Node Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( CALLBACK_INDEX, Callback0Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
AddCallback( CALLBACK_INDEX, Callback1Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
AddCallback( CALLBACK_INDEX, Callback2Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.PROPERTY_NODE_SLOTS_CHANGED -> EventPropertyNodeSlotsChanged
- CALLBACK_INDEX.PROPERTY_NODE_ADD -> EventPropertyNodeAdd
- CALLBACK_INDEX.PROPERTY_NODE_SWAP -> EventPropertyNodeSwap
- CALLBACK_INDEX.PROPERTY_NODE_REMOVE -> EventPropertyNodeRemove
- CALLBACK_INDEX.PROPERTY_CHANGE_ENABLED -> EventPropertyChangeEnabled
- CALLBACK_INDEX.PROPERTY_SURFACE_ADD -> EventPropertySurfaceAdd
- CALLBACK_INDEX.PROPERTY_SURFACE_REMOVE -> EventPropertySurfaceRemove
- CALLBACK_INDEX.CACHE_NODE_ADD -> EventCacheNodeAdd
- CALLBACK_INDEX.NODE_LOAD -> EventNodeLoad
- CALLBACK_INDEX.NODE_CLONE -> EventNodeClone
- CALLBACK_INDEX.NODE_SWAP -> EventNodeSwap
- CALLBACK_INDEX.NODE_REMOVE -> EventNodeRemove
- CALLBACK_INDEX.NODE_CHANGE_ENABLED -> EventNodeChangeEnabled

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = node.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
node.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
node.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = node.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
node.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Functions

New Properties

NodeTrigger Class#

UNIGINE 2.17 UNIGINE 2.18
AddEnabledCallback( EnabledDelegate ) Removed. Use EventEnabled.Connect() call instead (see migration details).
RemoveEnabledCallback( IntPtr ) Removed. Use EventEnabled.Disconnect() call instead (see migration details).
ClearEnabledCallbacks( ) Removed for safety reasons (see migration details).
AddPositionCallback( PositionDelegate ) Removed. Use EventPosition.Connect() call instead (see migration details).
RemovePositionCallback( IntPtr ) Removed. Use EventPosition.Disconnect() call instead (see migration details).
ClearPositionCallbacks( ) Removed for safety reasons (see migration details).

New Properties

ObjectMeshSkinned Class#

New Functions

New Properties

PackageUng Class#

PhysicalTrigger Class#

UNIGINE 2.17 UNIGINE 2.18
AddEnterCallback( EnterDelegate ) Removed. Use EventEnter.Connect() call instead (see migration details).
RemoveEnterCallback( IntPtr ) Removed. Use EventEnter.Disconnect() call instead (see migration details).
ClearEnterCallbacks( ) Removed for safety reasons (see migration details).
AddLeaveCallback( LeaveDelegate ) Removed. Use EventLeave.Connect() call instead (see migration details).
RemoveLeaveCallback( IntPtr ) Removed. Use EventLeave.Disconnect() call instead (see migration details).
ClearLeaveCallbacks( ) Removed for safety reasons (see migration details).

New Properties

Properties Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( CALLBACK_INDEX, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.CREATED -> EventCreated
- CALLBACK_INDEX.MOVED -> EventMoved
- CALLBACK_INDEX.RENAMED -> EventRenamed
- CALLBACK_INDEX.REPARENTED -> EventReparented
- CALLBACK_INDEX.REMOVED -> EventRemoved

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = Properties.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
Properties.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
Properties.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = Properties.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
Properties.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

Property Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( CALLBACK_INDEX, Callback0Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
AddCallback( CALLBACK_INDEX, Callback1Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.RELOADED -> EventReloaded
- CALLBACK_INDEX.MOVED -> EventMoved
- CALLBACK_INDEX.RENAMED -> EventRenamed
- CALLBACK_INDEX.REPARENTED -> EventReparented
- CALLBACK_INDEX.PARAMETER_CHANGED -> EventParameterChanged
- CALLBACK_INDEX.DESTROY -> EventDestroy

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = property.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
property.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
property.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = property.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
property.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

Render Class#

UNIGINE 2.17 UNIGINE 2.18
Property DenoiseDenoiseByVelocityThreshold Removed.
Property LightsInterleavedSamples Removed. Use DirectLightingInterleavedSamples instead.
Property LightsInterleavedColorClamping Removed. Use DirectLightingInterleavedColorClamping instead.
Property LightsInterleavedCatmullResampling Removed. Use DirectLightingInterleavedCatmullResampling instead.
Property LightsInterleaved Removed. Use DirectLightingInterleaved instead.
Property ShadersPreload Removed.
CreateCacheTextures( ) Removed.
Enum CALLBACK Removed.
AddCallback( int, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( int, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( int ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.BEGIN -> EventBegin
- CALLBACK_INDEX.BEGIN_ENVIRONMENT -> EventBeginEnvironment
- CALLBACK_INDEX.END_ENVIRONMENT -> EventEndEnvironment
- CALLBACK_INDEX.BEGIN_SHADOWS -> EventBeginShadows
- CALLBACK_INDEX.BEGIN_WORLD_SHADOW -> EventBeginWorldShadow
- CALLBACK_INDEX.END_WORLD_SHADOW -> EventEndWorldShadow
- CALLBACK_INDEX.BEGIN_PROJ_SHADOW -> EventBeginProjShadow
- CALLBACK_INDEX.END_PROJ_SHADOW -> EventEndProjShadow
- CALLBACK_INDEX.BEGIN_OMNI_SHADOW -> EventBeginOmniShadow
- CALLBACK_INDEX.END_OMNI_SHADOW -> EventEndOmniShadow
- CALLBACK_INDEX.END_SHADOWS -> EventEndShadows
- CALLBACK_INDEX.BEGIN_SCREEN -> EventBeginScreen
- CALLBACK_INDEX.BEGIN_OPACITY_GBUFFER -> EventBeginOpacityGBuffer
- CALLBACK_INDEX.END_OPACITY_GBUFFER -> EventEndOpacityGBuffer
- CALLBACK_INDEX.BEGIN_OPACITY_DECALS -> EventBeginOpacityDecals
- CALLBACK_INDEX.END_OPACITY_DECALS -> EventEndOpacityDecals
- CALLBACK_INDEX.BEGIN_CURVATURE -> EventBeginCurvature
- CALLBACK_INDEX.END_CURVATURE -> EventEndCurvature
- CALLBACK_INDEX.BEGIN_CURVATURE_COMPOSITE -> EventBeginCurvatureComposite
- CALLBACK_INDEX.END_CURVATURE_COMPOSITE -> EventEndCurvatureComposite
- CALLBACK_INDEX.BEGIN_SSRTGI -> EventBeginSSRTGI
- CALLBACK_INDEX.END_SSRTGI -> EventEndSSRTGI
- CALLBACK_INDEX.BEGIN_OPACITY_LIGHTS -> EventBeginOpacityLights
- CALLBACK_INDEX.END_OPACITY_LIGHTS -> EventEndOpacityLights
- CALLBACK_INDEX.BEGIN_OPACITY_VOXEL_PROBES -> EventBeginOpacityVoxelProbes
- CALLBACK_INDEX.END_OPACITY_VOXEL_PROBES -> EventEndOpacityVoxelProbes
- CALLBACK_INDEX.BEGIN_OPACITY_ENVIRONMENT_PROBES -> EventBeginOpacityEnvironmentProbes
- CALLBACK_INDEX.END_OPACITY_ENVIRONMENT_PROBES -> EventEndOpacityEnvironmentProbes
- CALLBACK_INDEX.BEGIN_OPACITY_PLANAR_PROBES -> EventBeginOpacityPlanarProbes
- CALLBACK_INDEX.END_OPACITY_PLANAR_PROBES -> EventEndOpacityPlanarProbes
- CALLBACK_INDEX.BEGIN_AUXILIARY_BUFFER -> EventBeginAuxiliaryBuffer
- CALLBACK_INDEX.END_AUXILIARY_BUFFER -> EventEndAuxiliaryBuffer
- CALLBACK_INDEX.BEGIN_REFRACTION_BUFFER -> EventBeginRefractionBuffer
- CALLBACK_INDEX.END_REFRACTION_BUFFER -> EventEndRefractionBuffer
- CALLBACK_INDEX.BEGIN_TRANSPARENT_BLUR_BUFFER -> EventBeginTransparentBlurBuffer
- CALLBACK_INDEX.END_TRANSPARENT_BLUR_BUFFER -> EventEndTransparentBlurBuffer
- CALLBACK_INDEX.BEGIN_SSSS -> EventBeginSSSS
- CALLBACK_INDEX.END_SSSS -> EventEndSSSS
- CALLBACK_INDEX.BEGIN_SSR -> EventBeginSSR
- CALLBACK_INDEX.END_SSR -> EventEndSSR
- CALLBACK_INDEX.BEGIN_SSAO -> EventBeginSSAO
- CALLBACK_INDEX.END_SSAO -> EventEndSSAO
- CALLBACK_INDEX.BEGIN_SSGI -> EventBeginSSGI
- CALLBACK_INDEX.END_SSGI -> EventEndSSGI
- CALLBACK_INDEX.BEGIN_SKY -> EventBeginSky
- CALLBACK_INDEX.END_SKY -> EventEndSky
- CALLBACK_INDEX.BEGIN_COMPOSITE_DEFERRED -> EventBeginCompositeDeferred
- CALLBACK_INDEX.END_COMPOSITE_DEFERRED -> EventEndCompositeDeferred
- CALLBACK_INDEX.BEGIN_TRANSPARENT -> EventBeginTransparent
- CALLBACK_INDEX.BEGIN_CLOUDS -> EventBeginClouds
- CALLBACK_INDEX.END_CLOUDS -> EventEndClouds
- CALLBACK_INDEX.BEGIN_WATER -> EventBeginWater
- CALLBACK_INDEX.BEGIN_WATER_DECALS -> EventBeginWaterDecals
- CALLBACK_INDEX.END_WATER_DECALS -> EventEndWaterDecals
- CALLBACK_INDEX.BEGIN_WATER_LIGHTS -> EventBeginWaterLights
- CALLBACK_INDEX.END_WATER_LIGHTS -> EventEndWaterLights
- CALLBACK_INDEX.BEGIN_WATER_VOXEL_PROBES -> EventBeginWaterVoxelProbes
- CALLBACK_INDEX.END_WATER_VOXEL_PROBES -> EventEndWaterVoxelProbes
- CALLBACK_INDEX.BEGIN_WATER_ENVIRONMENT_PROBES -> EventBeginWaterEnvironmentProbes
- CALLBACK_INDEX.END_WATER_ENVIRONMENT_PROBES -> EventEndWaterEnvironmentProbes
- CALLBACK_INDEX.BEGIN_WATER_PLANAR_PROBES -> EventBeginWaterPlanarProbes
- CALLBACK_INDEX.END_WATER_PLANAR_PROBES -> EventEndWaterPlanarProbes
- CALLBACK_INDEX.END_WATER -> EventEndWater
- CALLBACK_INDEX.END_TRANSPARENT -> EventEndTransparent
- CALLBACK_INDEX.BEGIN_SRGB_CORRECTION -> EventBeginSrgbCorrection
- CALLBACK_INDEX.END_SRGB_CORRECTION -> EventEndSrgbCorrection
- CALLBACK_INDEX.BEGIN_ADAPTATION_COLOR_AVERAGE -> EventBeginAdaptationColorAverage
- CALLBACK_INDEX.END_ADAPTATION_COLOR_AVERAGE -> EventEndAdaptationColorAverage
- CALLBACK_INDEX.BEGIN_ADAPTATION_COLOR -> EventBeginAdaptationColor
- CALLBACK_INDEX.END_ADAPTATION_COLOR -> EventEndAdaptationColor
- CALLBACK_INDEX.BEGIN_TAA -> EventBeginTAA
- CALLBACK_INDEX.END_TAA -> EventEndTAA
- CALLBACK_INDEX.BEGIN_CAMERA_EFFECTS -> EventBeginCameraEffects
- CALLBACK_INDEX.END_CAMERA_EFFECTS -> EventEndCameraEffects
- CALLBACK_INDEX.BEGIN_POST_MATERIALS -> EventBeginPostMaterials
- CALLBACK_INDEX.END_POST_MATERIALS -> EventEndPostMaterials
- CALLBACK_INDEX.BEGIN_DEBUG_MATERIALS -> EventBeginDebugMaterials
- CALLBACK_INDEX.END_DEBUG_MATERIALS -> EventEndDebugMaterials
- CALLBACK_INDEX.BEGIN_VISUALIZER -> EventBeginVisualizer
- CALLBACK_INDEX.END_VISUALIZER -> EventEndVisualizer
- CALLBACK_INDEX.END_SCREEN -> EventEndScreen
- CALLBACK_INDEX.END -> EventEnd

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = Render.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
Render.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
Render.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = Render.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
Render.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Functions

New Properties

Renderer Class#

UNIGINE 2.17 UNIGINE 2.18
Property TextureLights Removed. Use TextureIndirectLights or TextureDirectLights instead.

New Properties

Shader Class#

UNIGINE 2.17 UNIGINE 2.18
Compile( string, string, string, string, string, string, string, ulong ) Set of arguments changed.
LoadCompute( string, string ) Removed.
LoadControl( string, string ) Removed.
LoadEvaluate( string, string ) Removed.
LoadFragment( string, string ) Removed.
LoadGeometry( string, string ) Removed.
LoadVertex( string, string ) Removed.

New Functions

StructuredBuffer Class#

UNIGINE 2.17 UNIGINE 2.18
BindCompute( int ) Removed. Use the RenderState.SetStructuredBuffer() method.
UnbindCompute( int ) Removed. Use the RenderState.ClearStructuredBuffer() method.
BindControl( int ) Removed. Use the RenderState.SetStructuredBuffer() method.
UnbindControl( int ) Removed. Use the RenderState.ClearStructuredBuffer() method.
BindEvaluate( int ) Removed. Use the RenderState.SetStructuredBuffer() method.
UnbindEvaluate( int ) Removed. Use the RenderState.ClearStructuredBuffer() method.
BindFragment( int ) Removed. Use the RenderState.SetStructuredBuffer() method.
UnbindFragment( int ) Removed. Use the RenderState.ClearStructuredBuffer() method.
BindGeometry( int ) Removed. Use the RenderState.SetStructuredBuffer() method.
UnbindGeometry( int ) Removed. Use the RenderState.ClearStructuredBuffer() method.
BindVertex( int ) Removed. Use the RenderState.SetStructuredBuffer() method.
UnbindVertex( int ) Removed. Use the RenderState.ClearStructuredBuffer() method.

Socket Class#

UNIGINE 2.17 UNIGINE 2.18
Socket( ) Set of arguments changed.
Socket( ) Set of arguments changed.
Socket( ) Set of arguments changed.
Close( ) Set of arguments changed.
SOCKET_STREAM Renamed as SOCKET_TYPE.STREAM.
SOCKET_DGRAM Renamed as SOCKET_TYPE.DGRAM.

SSLSocket Class#

Texture Class#

UNIGINE 2.17 UNIGINE 2.18
BindCompute( int ) Removed. Use the RenderState.SetTexture() method with the BIND_ALL variable as an argument.
BindFragment( int ) Removed. Use the RenderState.SetTexture() method with the BIND_FRAGMENT variable as an argument.
BindVertex( int ) Removed. Use the RenderState.SetTexture() method with the BIND_ALL variable as an argument.
UnbindCompute( int ) Removed. Use the RenderState.ClearTexture() method.
UnbindFragment( int ) Removed. Use the RenderState.ClearTexture() method.
UnbindVertex( int ) Removed. Use the RenderState.ClearTexture() method.

TextureRamp Class#

UNIGINE 2.17 UNIGINE 2.18
AddChangedCallback( ChangedDelegate ) Removed. Use EventChanged.Connect() call instead (see migration details).
RemoveChangedCallback( IntPtr ) Removed. Use EventChanged.Disconnect() call instead (see migration details).
ClearChangedCallbacks( ) Removed for safety reasons (see migration details).

New Properties

UserInterface Class#

UNIGINE 2.17 UNIGINE 2.18
AddCallback( string, Gui.CALLBACK_INDEX, Callback0Delegate ) Removed.
AddCallback( string, Gui.CALLBACK_INDEX, Callback1Delegate ) Removed.
AddCallback( string, Gui.CALLBACK_INDEX, Call2backDelegate ) Removed.
AddCallback( string, Gui.CALLBACK_INDEX, Callback3Delegate ) Removed.
RemoveCallback( string, Gui.CALLBACK_INDEX, IntPtr ) Removed.
ClearCallbacks( string, Gui.CALLBACK_INDEX ) Removed.

New Functions

Visualizer Class#

Viewport Class#

UNIGINE 2.17 UNIGINE 2.18
AddCallback( int, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( int, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( int ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- Render.CALLBACK_INDEX.BEGIN -> EventBegin
- Render.CALLBACK_INDEX.BEGIN_ENVIRONMENT -> EventBeginEnvironment
- Render.CALLBACK_INDEX.END_ENVIRONMENT -> EventEndEnvironment
- Render.CALLBACK_INDEX.BEGIN_SHADOWS -> EventBeginShadows
- Render.CALLBACK_INDEX.BEGIN_WORLD_SHADOW -> EventBeginWorldShadow
- Render.CALLBACK_INDEX.END_WORLD_SHADOW -> EventEndWorldShadow
- Render.CALLBACK_INDEX.BEGIN_PROJ_SHADOW -> EventBeginProjShadow
- Render.CALLBACK_INDEX.END_PROJ_SHADOW -> EventEndProjShadow
- Render.CALLBACK_INDEX.BEGIN_OMNI_SHADOW -> EventBeginOmniShadow
- Render.CALLBACK_INDEX.END_OMNI_SHADOW -> EventEndOmniShadow
- Render.CALLBACK_INDEX.END_SHADOWS -> EventEndShadows
- Render.CALLBACK_INDEX.BEGIN_SCREEN -> EventBeginScreen
- Render.CALLBACK_INDEX.BEGIN_OPACITY_GBUFFER -> EventBeginOpacityGBuffer
- Render.CALLBACK_INDEX.END_OPACITY_GBUFFER -> EventEndOpacityGBuffer
- Render.CALLBACK_INDEX.BEGIN_OPACITY_DECALS -> EventBeginOpacityDecals
- Render.CALLBACK_INDEX.END_OPACITY_DECALS -> EventEndOpacityDecals
- Render.CALLBACK_INDEX.BEGIN_CURVATURE -> EventBeginCurvature
- Render.CALLBACK_INDEX.END_CURVATURE -> EventEndCurvature
- Render.CALLBACK_INDEX.BEGIN_CURVATURE_COMPOSITE -> EventBeginCurvatureComposite
- Render.CALLBACK_INDEX.END_CURVATURE_COMPOSITE -> EventEndCurvatureComposite
- Render.CALLBACK_INDEX.BEGIN_SSRTGI -> EventBeginSSRTGI
- Render.CALLBACK_INDEX.END_SSRTGI -> EventEndSSRTGI
- Render.CALLBACK_INDEX.BEGIN_OPACITY_LIGHTS -> EventBeginOpacityLights
- Render.CALLBACK_INDEX.END_OPACITY_LIGHTS -> EventEndOpacityLights
- Render.CALLBACK_INDEX.BEGIN_OPACITY_VOXEL_PROBES -> EventBeginOpacityVoxelProbes
- Render.CALLBACK_INDEX.END_OPACITY_VOXEL_PROBES -> EventEndOpacityVoxelProbes
- Render.CALLBACK_INDEX.BEGIN_OPACITY_ENVIRONMENT_PROBES -> EventBeginOpacityEnvironmentProbes
- Render.CALLBACK_INDEX.END_OPACITY_ENVIRONMENT_PROBES -> EventEndOpacityEnvironmentProbes
- Render.CALLBACK_INDEX.BEGIN_OPACITY_PLANAR_PROBES -> EventBeginOpacityPlanarProbes
- Render.CALLBACK_INDEX.END_OPACITY_PLANAR_PROBES -> EventEndOpacityPlanarProbes
- Render.CALLBACK_INDEX.BEGIN_AUXILIARY_BUFFER -> EventBeginAuxiliaryBuffer
- Render.CALLBACK_INDEX.END_AUXILIARY_BUFFER -> EventEndAuxiliaryBuffer
- Render.CALLBACK_INDEX.BEGIN_REFRACTION_BUFFER -> EventBeginRefractionBuffer
- Render.CALLBACK_INDEX.END_REFRACTION_BUFFER -> EventEndRefractionBuffer
- Render.CALLBACK_INDEX.BEGIN_TRANSPARENT_BLUR_BUFFER -> EventBeginTransparentBlurBuffer
- Render.CALLBACK_INDEX.END_TRANSPARENT_BLUR_BUFFER -> EventEndTransparentBlurBuffer
- Render.CALLBACK_INDEX.BEGIN_SSSS -> EventBeginSSSS
- Render.CALLBACK_INDEX.END_SSSS -> EventEndSSSS
- Render.CALLBACK_INDEX.BEGIN_SSR -> EventBeginSSR
- Render.CALLBACK_INDEX.END_SSR -> EventEndSSR
- Render.CALLBACK_INDEX.BEGIN_SSAO -> EventBeginSSAO
- Render.CALLBACK_INDEX.END_SSAO -> EventEndSSAO
- Render.CALLBACK_INDEX.BEGIN_SSGI -> EventBeginSSGI
- Render.CALLBACK_INDEX.END_SSGI -> EventEndSSGI
- Render.CALLBACK_INDEX.BEGIN_SKY -> EventBeginSky
- Render.CALLBACK_INDEX.END_SKY -> EventEndSky
- Render.CALLBACK_INDEX.BEGIN_COMPOSITE_DEFERRED -> EventBeginCompositeDeferred
- Render.CALLBACK_INDEX.END_COMPOSITE_DEFERRED -> EventEndCompositeDeferred
- Render.CALLBACK_INDEX.BEGIN_TRANSPARENT -> EventBeginTransparent
- Render.CALLBACK_INDEX.BEGIN_CLOUDS -> EventBeginClouds
- Render.CALLBACK_INDEX.END_CLOUDS -> EventEndClouds
- Render.CALLBACK_INDEX.BEGIN_WATER -> EventBeginWater
- Render.CALLBACK_INDEX.BEGIN_WATER_DECALS -> EventBeginWaterDecals
- Render.CALLBACK_INDEX.END_WATER_DECALS -> EventEndWaterDecals
- Render.CALLBACK_INDEX.BEGIN_WATER_LIGHTS -> EventBeginWaterLights
- Render.CALLBACK_INDEX.END_WATER_LIGHTS -> EventEndWaterLights
- Render.CALLBACK_INDEX.BEGIN_WATER_VOXEL_PROBES -> EventBeginWaterVoxelProbes
- Render.CALLBACK_INDEX.END_WATER_VOXEL_PROBES -> EventEndWaterVoxelProbes
- Render.CALLBACK_INDEX.BEGIN_WATER_ENVIRONMENT_PROBES -> EventBeginWaterEnvironmentProbes
- Render.CALLBACK_INDEX.END_WATER_ENVIRONMENT_PROBES -> EventEndWaterEnvironmentProbes
- Render.CALLBACK_INDEX.BEGIN_WATER_PLANAR_PROBES -> EventBeginWaterPlanarProbes
- Render.CALLBACK_INDEX.END_WATER_PLANAR_PROBES -> EventEndWaterPlanarProbes
- Render.CALLBACK_INDEX.END_WATER -> EventEndWater
- Render.CALLBACK_INDEX.END_TRANSPARENT -> EventEndTransparent
- Render.CALLBACK_INDEX.BEGIN_SRGB_CORRECTION -> EventBeginSrgbCorrection
- Render.CALLBACK_INDEX.END_SRGB_CORRECTION -> EventEndSrgbCorrection
- Render.CALLBACK_INDEX.BEGIN_ADAPTATION_COLOR_AVERAGE -> EventBeginAdaptationColorAverage
- Render.CALLBACK_INDEX.END_ADAPTATION_COLOR_AVERAGE -> EventEndAdaptationColorAverage
- Render.CALLBACK_INDEX.BEGIN_ADAPTATION_COLOR -> EventBeginAdaptationColor
- Render.CALLBACK_INDEX.END_ADAPTATION_COLOR -> EventEndAdaptationColor
- Render.CALLBACK_INDEX.BEGIN_TAA -> EventBeginTAA
- Render.CALLBACK_INDEX.END_TAA -> EventEndTAA
- Render.CALLBACK_INDEX.BEGIN_CAMERA_EFFECTS -> EventBeginCameraEffects
- Render.CALLBACK_INDEX.END_CAMERA_EFFECTS -> EventEndCameraEffects
- Render.CALLBACK_INDEX.BEGIN_POST_MATERIALS -> EventBeginPostMaterials
- Render.CALLBACK_INDEX.END_POST_MATERIALS -> EventEndPostMaterials
- Render.CALLBACK_INDEX.BEGIN_DEBUG_MATERIALS -> EventBeginDebugMaterials
- Render.CALLBACK_INDEX.END_DEBUG_MATERIALS -> EventEndDebugMaterials
- Render.CALLBACK_INDEX.BEGIN_VISUALIZER -> EventBeginVisualizer
- Render.CALLBACK_INDEX.END_VISUALIZER -> EventEndVisualizer
- Render.CALLBACK_INDEX.END_SCREEN -> EventEndScreen
- Render.CALLBACK_INDEX.END -> EventEnd

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = viewport.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
viewport.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
viewport.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = viewport.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
viewport.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Functions

New Properties

Widget Class#

UNIGINE 2.17 UNIGINE 2.18
IsCallback( int ) Removed.
AddCallback( Gui.CALLBACK_INDEX, Callback0Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
AddCallback( Gui.CALLBACK_INDEX, Callback1Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
AddCallback( Gui.CALLBACK_INDEX, Callback2Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
AddCallback( Gui.CALLBACK_INDEX, Callback3Delegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( Gui.CALLBACK_INDEX, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( Gui.CALLBACK_INDEX ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- Gui.CALLBACK_INDEX.SHOW -> EventShow
- Gui.CALLBACK_INDEX.HIDE -> EventHide
- Gui.CALLBACK_INDEX.FOCUS_IN -> EventFocusIn
- Gui.CALLBACK_INDEX.FOCUS_OUT -> EventFocusOut
- Gui.CALLBACK_INDEX.CHANGED -> EventChanged
- Gui.CALLBACK_INDEX.CLICKED -> EventClicked
- Gui.CALLBACK_INDEX.DOUBLE_CLICKED -> EventDoubleClicked
- Gui.CALLBACK_INDEX.PRESSED -> EventPressed
- Gui.CALLBACK_INDEX.RELEASED -> EventReleased
- Gui.CALLBACK_INDEX.KEY_PRESSED -> EventKeyPressed
- Gui.CALLBACK_INDEX.TEXT_PRESSED -> EventTextPressed
- Gui.CALLBACK_INDEX.ENTER -> EventEnter
- Gui.CALLBACK_INDEX.LEAVE -> EventLeave
- Gui.CALLBACK_INDEX.DRAG_MOVE -> EventDragMove
- Gui.CALLBACK_INDEX.DRAG_DROP -> EventDragDrop
- Gui.CALLBACK_INDEX.REMOVE -> EventRemove

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = widget.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
widget.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
widget.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = widget.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
widget.Event<CB_NAME>.Disconnect(event_connection);

See Also:

SetCallbackAccel( Gui.CALLBACK_INDEX, uint, int, int, int ) Removed.
GetCallbackAccel( Gui.CALLBACK_INDEX, out uint, out int, out int, out int ) Removed.
IsCallbackAccel( uint, int, int, int ) Removed.
SetCallbackEnabled( Gui.CALLBACK_INDEX, bool ) Removed.
IsCallbackEnabled( Gui.CALLBACK_INDEX ) Removed.
RunCallback( int ) Removed.

New Functions

New Properties

WindowManager Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACKS Removed.
addCallback( CALLBACKS, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
removeCallback( CALLBACKS, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
clearCallbacks( CALLBACKS ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACKS.WINDOW_CREATED -> EventWindowCreated
- CALLBACKS.WINDOW_REMOVED -> EventWindowRemoved
- CALLBACKS.WINDOW_STACKED -> EventWindowStacked
- CALLBACKS.WINDOW_UNSTACKED -> EventWindowUnstacked

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = WindowManager.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
WindowManager.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
WindowManager.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = WindowManager.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
WindowManager.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

World Class#

UNIGINE 2.17 UNIGINE 2.18
Enum CALLBACK_INDEX Removed.
AddCallback( int, CallbackDelegate ) Removed. Use one of the Event***.Connect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
RemoveCallback( int, IntPtr ) Removed. Use one of the Event***.Disconnect() calls instead. See the list of separate replacement properties for the corresponding events here (see migration details).
ClearCallbacks( int ) Removed for safety reasons (see migration details).
Old Enum to New Event Mapping:
- CALLBACK_INDEX.PRE_WORLD_LOAD -> EventPreWorldLoad
- CALLBACK_INDEX.POST_WORLD_LOAD -> EventPostWorldLoad
- CALLBACK_INDEX.PRE_WORLD_SAVE -> EventPreWorldSave
- CALLBACK_INDEX.POST_WORLD_SAVE -> EventPostWorldSave
- CALLBACK_INDEX.PRE_WORLD_CLEAR -> EventPreWorldClear
- CALLBACK_INDEX.POST_WORLD_CLEAR -> EventPostWorldClear
- CALLBACK_INDEX.PRE_NODE_SAVE -> EventPreNodeSave
- CALLBACK_INDEX.POST_NODE_SAVE -> EventPostNodeSave
- CALLBACK_INDEX.PRE_WORLD_INIT -> EventPreWorldInit
- CALLBACK_INDEX.POST_WORLD_INIT -> EventPostWorldInit
- CALLBACK_INDEX.PRE_WORLD_SHUTDOWN -> EventPreWorldShutdown
- CALLBACK_INDEX.POST_WORLD_SHUTDOWN -> EventPostWorldShutdown

Migration Example

UNIGINE 2.17UNIGINE 2.18
Source code (C#)
// callback ID to be used to remove callback later
void callback_id;

// implement the <CB_NAME> callback
void <CB_NAME>_callback({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// add a <CB_NAME> callback and keep its ID
callback_id = World.Add<CB_NAME>Callback(<CB_NAME>_callback);

// remove the callback by using its id
World.Remove<CB_NAME>Callback(callback_id);

// clear all <CB_NAME> callbacks
World.Clear<CB_NAME>Callbacks();
Source code (C#)
// connection to be used to unsubscribe later
EventConnection event_connection;

// implement the <CB_NAME> event handler
void event_handler({params})
{
	Log.Message("\Handling <CB_NAME> event\n");
}

// subscribe for the <CB_NAME> event with a handler function
// and keep the connection
event_connection = World.Event<CB_NAME>.Connect(event_handler);

// remove the subscription using the saved connection
World.Event<CB_NAME>.Disconnect(event_connection);

See Also:

New Properties

WorldSplineGraph Class#

UNIGINE 2.17 UNIGINE 2.18
AddPointAddedCallback( PointAddedDelegate ) Removed. Use EventPointAdded.Connect() call instead (see migration details).
RemovePointAddedCallback( IntPtr ) Removed. Use EventPointAdded.Disconnect() call instead (see migration details).
ClearPointAddedCallbacks( ) Removed for safety reasons (see migration details).
AddPointChangedCallback( PointChangedDelegate ) Removed. Use EventPointChanged.Connect() call instead (see migration details).
RemovePointChangedCallback( IntPtr ) Removed. Use EventPointChanged.Disconnect() call instead (see migration details).
ClearPointChangedCallbacks( ) Removed for safety reasons (see migration details).
AddPointRemovedCallback( PointRemovedDelegate ) Removed. Use EventPointRemoved.Connect() call instead (see migration details).
RemovePointRemovedCallback( IntPtr ) Removed. Use EventPointRemoved.Disconnect() call instead (see migration details).
ClearPointRemovedCallbacks( ) Removed for safety reasons (see migration details).
AddSegmentAddedCallback( SegmentAddedDelegate ) Removed. Use EventSegmentAdded.Connect() call instead (see migration details).
RemoveSegmentAddedCallback( IntPtr ) Removed. Use EventSegmentAdded.Disconnect() call instead (see migration details).
ClearSegmentAddedCallbacks( ) Removed for safety reasons (see migration details).
AddSegmentChangedCallback( SegmentChangedDelegate ) Removed. Use EventSegmentChanged.Connect() call instead (see migration details).
RemoveSegmentChangedCallback( IntPtr ) Removed. Use EventSegmentChanged.Disconnect() call instead (see migration details).
ClearSegmentChangedCallbacks( ) Removed for safety reasons (see migration details).
AddSegmentRemovedCallback( SegmentRemovedDelegate ) Removed. Use EventSegmentRemoved.Connect() call instead (see migration details).
RemoveSegmentRemovedCallback( IntPtr ) Removed. Use EventSegmentRemoved.Disconnect() call instead (see migration details).
ClearSegmentRemovedCallbacks( ) Removed for safety reasons (see migration details).

New Properties

WorldTrigger Class#

UNIGINE 2.17 UNIGINE 2.18
AddEnterCallback( EnterDelegate ) Removed. Use EventEnter.Connect() call instead (see migration details).
RemoveEnterCallback( IntPtr ) Removed. Use EventEnter.Disconnect() call instead (see migration details).
ClearEnterCallbacks( ) Removed for safety reasons (see migration details).
AddLeaveCallback( LeaveDelegate ) Removed. Use EventLeave.Connect() call instead (see migration details).
RemoveLeaveCallback( IntPtr ) Removed. Use EventLeave.Disconnect() call instead (see migration details).
ClearLeaveCallbacks( ) Removed for safety reasons (see migration details).

New Properties

FMODStudio Class#

Last update: 2024-04-16
Build: ()