Release Notes/2023.30000/next
Build 2023.32093 - Jan 30, 2024
Note: Experimental builds do not work with Non-commercial licenses.
New Features
- TDI Library
- TriPlanar texturing ...
- PBR MAT / Phong MAT - Added new menu 'Texture Sampling Mode' to PBR MAT and Phong MAT with options Regular, Screen Space Coordinates and Triplanar.
- Screen Space Coordinates backwards compatibility working with the old 'Texture Coordinates' menu.
- Triplanar texture mapping working with the 'Triplanar' menu option, where the Triplanar texture attribs need to be generated first via the Texture Map POP or Texture SOP
- describe all the features added to MATs and texture OPs
- TOP To CHOP working with 3DTextures or 2D Arrays
- All Out operators now have an optional 'Select' parameter as an alternative to wired input.
- Text COMP - Now has parameters for adding drop shadows to text, including control over color and offset.
- Laser CHOP -
- Serial Devices DAT - New DAT that lists the available serial ports and identifies if a port is in use or not.
- Script CHOP - Added parameter 'Modify Outside of Cook' which when true allows the CHOP's output to be updated by an external script.
- Script TOP - Added parameter 'Modify Outside of Cook' which when true allows the TOP's output to be updated by an external script.
- Individual parameter disabling within a ParGroup
- Thread Manager - See also...
- macOS - Minimum OS version supported now macOS 12.0 Monterey.
- DMX Out CHOP - Better support for serial and for DMXKing devices.
- ST2110 support improvements
New Python
- Python version updated to 3.11.10
- Updated all extra Python packages we ship with to the latest versions.
- Upgraded to NumPy 2.1.2.
- Added box python package
- Individual parameter disabling within a ParGroup
- AbsTime Class - .frame .seconds now pause with main timeline.
- Camera Class.frameBounds - Added a new 'padding' keyword expressed as a fraction of the viewport height e.g. 0.1 puts a minimum 10% padding around all sides.
- Camera Class / ArcBall Class - Added errors for unexpected arguments and keywords.
- COMP Class - layout(ops, horizontal=False, vertical=False, gridRows=0) - Added a method to automatically layout operators.
- COMP Class - .findChildren(renamed=True) - Returns a list of children whose names have been edited, ie. any non-default name.
- DAT Class.csv - Get or set the contents as csv format. Unlike .text supports newlines in cells.
- DAT Class - Removed textFormat member from DAT class and moved to textDAT Class and scriptDAT Class.
- datexecuteDAT Class - sizeChanged added to info argument.
- datexecuteDAT Class - onRow(Col)HeadersChange now provides prevDAT
- datexecuteDAT Class - onTableChanged(dat, prevDAT, info) now includes DAT in its previous state as well as a description of which rows/columns were removed/added.
- datexecuteDAT Class - onTableChanged() info argument now contains:
rowsChanged - a list of row indices with different contents rowsAdded - the list of added *header* indices (in dat) rowsRemoved - the list of removed *header* indices (in prevDAT) colsChanged - a list of col indices with different contents colsAdded - the list of added *header* indices (in dat) colsRemoved - the list of removed *header* indices (in prevDAT) cellsChanged - the list of cells that have changed content sizeChanged - bool, true if number of rows or columns changed
- listCOMP Class - Rolling outside cells now shows popup help defined in table attribute.
- listCOMP Class - New members displayColWidth and displayRowHeight that return the actual row or height of a cell including any resizing.
- mediafileinfoDAT Class - Added a python member for all the information rows of the DAT.
- Monitor Class - Added
.connectedGPUName
,.connectedGPUIndex
members.
- Page Class / Cell Class - Comparisons to 'None' vs None now work properly.
- Par Class - Comparisons now use parameter evaluations in all cases. BACKWARD COMPATIBILITY par1 == par2 would previously only return true if it were the same parameter object, now it compares their evaluation results.
- Par Class - enablePar Get or set the single parameter's enable state within the ParGroup. For the entire ParGroup use ParGroup.enable or Par.enable. Can only be set on Custom Parameters.
- ParGroup - enableExpr now supports lambda format to enable individual Par enabling within the ParGroup. Example: n.parGroup.enableExpr = 'lambda x: x==2'. #only enables third component
- ParGroup - .enable member now returns a tuple of values instead of a single value, as Par's are now individually enablable.
- BACKWARD COMPATIBILITY - The return type of ParGroup.enable is now a tuple, not a single bool.
- Par Class / ParGroup Class - .readOnly can now be set per Par, not just the entire ParGroup as a whole.
- BACKWARD COMPATIBILITY - ParGroup.readOnly now returns a tuple of individual values, not a single bool.
- Par Class - isPar(x)
- ParGroup Class - isParGroup(x) - Returns True if argument passed refers to same parameter as object does. For example: n.par.tx.isPar(p) returns True if p is the same parameter as n.par.tx
- ParGroup Class - .maxSize - Returns the maximum number of Par elements for this ParGroup.
- ParGroup - .defaultSize - Returns default number of Par elements for this ParGroup.
- ParGroup - .suffixes - Returns a list of suffixes used to name the Par elements of this ParGroup
- isPar, isParGroup renamed to isSamePar, isSameParGroup
- Par Class / ParGroup Class - .sequenceBlock returns the sequenceBlock Class the object belongs to, or None.
- Run Class when executed from a DAT, Cell, or td, now remains persistent. Allows you to check the state after its completed.
- Properly setup context 'me', when executing a run() command. In some cases 'me' value was set to root instead of the location the run command originated from. This could lead to permission errors trying to access neighbouring content within a private component for example. BACKWARD COMPATIBILITY - 'me' context no longer wrongly set to root in some cases.
- ParCollection Class / ParGroupCollection Class is now iterable. You can iterate through all the parameters of an operator, a sequence or even a block:
debug(list(n.par)) debug(list(n.par.S.sequence.blockPars)) debug(list(n.par.S.sequence[1].par)) debug(list(n.parGroup)) debug(list(n.par.S.sequence.blockParGroups)) debug(list(n.par.S.sequence[1].parGroup))
- Sequence Class - reorderBlocks(index1, index2..) - Reorder the specified blocks, leaving the rest in place.
- Sequence Class - sortBlocks(key=lambda block: (block.namePar or block[0]).eval(), baseName=, reverse=False)
- key - A function that is passed every block in the sequence to return a sortable value. By default it evaluates the blocks main name parameters, if defined, else the first parameter of the block.
- baseName - If specified, uses the parameter of each block with that baseName as the sort value.
- reverse - If True, reverses the order of the sort.
For Example: .sortBlocks(baseName='value', reverse=True) # sort on reverse *value parameters in the sequence .sortBlocks(key=lambda block: block.par.value) # same as above .sortBlocks(key=lambda block: block.par.x + block.par.y) # sort on combined x+y value of each block
- Sequence Class - blockName - Gets the base name of the block name parameters. By default this is 'blockname'.
- Sequence Class - moveBlock now takes optional keyword 'num', describing number of blocks to move.
- SequenceBlock Class - destroy() as Sequence Class destroyBlock(index) is now deprecated.
- SequenceBlock Class - namePar. Returns Par defining name of block (or None).
- Sequence Class - moveBlock, insertBlock, deleteBlock arguments can be names, integers, or SequenceBlock objects.
- Sequence Class - Sequence[name or index] find a block by its position or block name.
- sequenceBlock Class - moveBlock(blockFromIndex, blockToIndex) move the specified blocks.
- sequenceBlock Class - name # get or set block name (if parameter exists).
- SysInfo Class - Added
.GPUName
,.GPUID
,.GPUPlatformID
members.
- textCOMP Class - evalTextSize now takes optional keywords wordWrap and pageWidth that can override the parameter values during this call.
- TOP Class - Added support for
.numpyArray()
to download 3D textures. - TOP Class -
.numpyArray()
now downloads full Cube Maps. - TOP Class -
.cudaMemory()
now supports outputting data from 3D/2DArray/Cube textures. - UI Class - rolloverParGroup returns ParGroup currently under the mouse, including parameter labels.
- Optional keyword argument alwaysOnTop added to several UI elements
OP.openViewer(alwaysOnTop=False) OP.openParameters(alwaysOnTop=False) UI.openBookmarks(alwaysOnTop=False) UI.openTextport(alwaysOnTop=False) UI.openWindowPlacement(alwaysOnTop=False) UI.openPaletteBrowser(alwaysOnTop=False) UI.openMIDIDeviceMapper(alwaysOnTop=False) UI.openNewProject(alwaysOnTop=False) UI.openKeyManager(alwaysOnTop=False) UI.openErrors(alwaysOnTop=False) UI.openVersion(alwaysOnTop=False) UI.openPreferences(alwaysOnTop=False) UI.openBeat(alwaysOnTop=False)
- Extension changes
onDestroyTD
called instead of __delTD__ when extension destroyed (still backward compatible)onPostInit
renamed toonInitTD
New Palette
- Palette:cameraViewport - Version 1.0.2 - Added instance Id and custom attributes to pick callback.
- Palette:cameraViewport - Version 1.0.3 - New parameter to add padding around an object when framing.
- Palette:cameraViewport - Callback return value can now be used to indicate the event was handled and camera movement should not be initiated.
- Palette:cameraViewport - 1.0.4 - Pivot position is now saved to file. Fixed Pivot Distance parameter default.
- Palette:cameraViewport - Nodes tagged with 'cameraViewportExcludeBounds' are now excluded from bounding box calculations used for framing and homing.
- Palette:cameraViewport - Version 1.0.5 - New parameters to set the homing bounds manually.
- Palette:cppParsTemplateGen - 0.1.2 - Fixed namespace issue that was occurring with the latest CPlusPlus Custom OPs API.
- Palette:lister - Added drag-to-size column headers. (updated)
- Controlled by Sizeable Cols and Save Col Resizes parameters
- colDefine now has a "sizeable" row for every column
- Works best with a maximum of 1 stretchy column
- Includes a cleanup of the Select/Sort/Filter parameter page
- sizeable: old listers will require setting the "sizeable" row in the colDefine table for this feature to work
- Column border: listers using old listerConfig components will not have a border between column headers. This is controlled by the border settings on the header component in listerConfig. Change Right Border to Border A, then set color on Border A. Gray 0.4 is the default.
- Palette:lister - colDefine and look OPs now use "topFill" to define how TOPs in cells fill the cell
- Palette:logger - v2.6.1 - Major overall.
- The logger object (self.Logger) is now always initialized. This prevents possible error where logging would fail because the logger was not initialized. This can however cause cases of silent logging, where the messages are added to a queue and not dequeued. See following point.
- The logger is now initialized with a QueueHandler. The QueueHandler allow for messages to be queued and dequeued overtime. Messages can be queued safely from additional threads, and dequeued on the main TouchDesigner thread. When dequeued, messages are eventually passed to the extra handlers such as the StreamHandler (textport) or FileHandler.
- A new dictionnary ExtraHandler is holding the handlers managed by the Logger COMP. When any of the managed handlers is updated, a new QueueListener is created to handle the future log messages and changes.
- New methods to Add or Remove Extra Handlers are exposed. They should be used when a user want to add a custom handler and the log messages should be passed to this handler when dequeued.
- New defaults and measures to avoid a case where a new Logger COMP reuse a logger instance caused by a perfect name match in the Logger name and hierarchy. This could happen in the past if a Logger was named “ABC” and pointing to a parent “project1”. The resulting logger name would be “project1.ABC” and this match could exist in another component when using multiple loggers. This should be mitigated by new defaults, but this is not entirely avoidable. Try to name your loggers without generic names.
- Adding support for File rotation settings.
- Code cleanup, removing unnecessary methods, various fixes.
- Palette:operatorPath - 1.4.0 - Added 'Font File' parameter.
- Palette:popDialog - Added text entry modes including password, float, and int. Available in parameters or Open command.
- Palette:popMenu 1.3.1 - Submenus will now work when timeline is paused.
- Palette:quadReproject - v1.0.0 - Complete rework. COMP is now almost exclusively relying on parSequences and expressions.
- TDAbleton - 2.5.3
- Ableton Component's sendOSC functions no longer work when Connect parameter is off. If you need to override this in script, call sendOSC directly on the TDAbleton master component.
- Firing an empty clip slot (from abletonClipSlot component) on a record-armed track will start recording a new clip.
- Thread Manager - v1.0.2 - First public release. A new system component and a set of palette components designed to facilitate Python threading in TouchDesigner.
- Palette:threadManagerClient - v1.0.3 - Fixed an issue with the docked callback DAT parameter not being set after drag n drop.
- Palette:threadManagerClient - v1.0.8 - Fixing callback template that would fail during exception hook.
- Palette:treeLister - Has the new lister topFill and sizable columns features.
- Widgets - v2.1.108
- Fix to fieldTextArea widget binding
- Widgets - v2.1.109
- Removed fraction scaling for dropmenu which was broken anyway. Now there is just Pixel or Point where Point should be the default.
- Widgets - v2.2.3
- Adding feature to divorce widget interaction from widget value view.
- Look for Widget View Only mode near customize interaction section.
- Widgets - v2.2.2
- Fixed a few more custom font file assignments.
Bug Fixes and Improvements
- Upgraded to Blackmagic SDK 14.2. - Blackmagic Design
- Upgraded to Deltacast SDK/Driver 6.24.1. - Deltacast
- Upgraded to depthai 2.28.0. - OAK-D
- Upgraded to OpenCV 4.10.0. - OpenCV
- Upgraded to RenderStream 2.0. - RenderStream
- Upgraded to slugLibrary 7.2 - Text COMP, Text TOP, DAT viewers, etc.
- Upgraded to Spout SDK 2.007.014.
- Upgraded to ZED SDK 4.2.2. - ZED
COMP
- Button COMP - New text parameters exposed.
- Engine COMP - Fixed connected multi-input OPs (eg Merge) losing connections during reload.
- FBX COMP / USD COMP - Added 'Import POPs' parameter.
- FBX COMP - Normalize bone weights of the imported assets.
- Geo Text COMP - Fixed'Face Cam' relative orientation of appended blocks
- Geo Text COMP - 'Face Camera' parameter now works properly with the specDAT 'append' flag.
- 'Width Affected by 'FOV' and 'Lift Towards Cam' parameter now works with Orthographic camera type.
- Geo Text COMP - 'Face Camera' behaviour changed such that it rotates about the anchor point of the layout box.
- Added 'Lift Towards Camera' parameter.
- Make 'Depth Scale S Curve' parm independent from 'Face Camera'.
- Improvements to 'Depth Scaling'. Some erroneous translations fixed. Major code refactor.
- Fixed 'Face Camera' and 'Depth Scaling' to work for all align modes and anchorUVs.
- Geo Text COMP - Added 'Face Camera' parm to make text face the camera regardless of orientation.
- Added depth Scaling parms, similar to the Line MAT, to change the scaling of the text based on the distance.
- Added 'Width Affected by FOV/OrthoWidth' parm, similar to the Line MAT, to make sizing FOV independent
- All of the above new features, work independently for each camera. So, for instance, with the 'Face Camera' parm toggled, the text will face each loaded camera op.
- List COMP - New attributes: topFill controls background TOP: fillMode.STRETCH, HORIZONTAL, VERTICAL, BEST, NATIVE, OUTSIDE
- Panel COMP - All Panel COMPs have new Fill option: 'Fill Outside' (covers available area without distorting).
- Panel Component - Drop menu now includes 'Fill Parameter' to easily fill a single parameter without need of setting up a callback.
- Panel Component - 'Built-In Drop Options' control whether or not built-in options are included when dropping onto this node.
- Text COMP - Added placeholder text that is displayed when the text contents are empty.
- Text COMP - Copying text when in 'Select Only' mode no longer includes hidden formatting directives.
- Text COMP - Fixed cursor movement and selection with formatting directives when using 'Select Only' mode.
- Text COMP - Improved layout of text when both 'Scale Text to Fit' and 'Word Wrap' are enabled together.
- Text COMP - Fixed a bug that removed leading line breaks in multi-line mode.
- Window COMP - 'Prevent monitor sleep' toggle upgrades.
- Window COMP - Renamed "monitor" to "display" in parameters, menus and warnings.
- Window COMP - Added a warning if the specified monitor doesn't exist while the window is opened in perform mode.
- Window COMP - Fixed issue which could cause the wrong OP to be used in Perform Mode after using Open as Perform Window from a Window COMP's parameter dialog.
- Window COMP - on macOS, when a window is sized to exactly fill one or all monitors and has no borders, it will open as a full-screen window, matching behaviour on Windows.
- Window COMP - Removed notion of 'Stereo' from Window COMP and underlaying classes.
TOP
- Chroma Key TOP - Fixed a hang that can occur with this operator.
- Corner Pin TOP - Added 'Mapping' parameter to the 'Extract' page for option between Bilinear and Perspective extraction.
- Movie File In TOP - Allow 'Index' parameter to be a negative number. When negative the index will cycle back through the movie.
- Movie File In TOP - Added 'Pre-Download HTTP Addresses' parameter. This was the default behavior before, but now can be turned off.
- Movie File In TOP - Fixed issue that can occur with 2 channel .exr files.
- Movie File In TOP / Video Stream In TOP - 'Hardware Decode' now defaults to On.
- Movie File Out TOP - Header DAT parameter is now disabled for formats that don't support it.
- Movie File Out TOP - Added support for AAC audio output.
- Movie File Out TOP - Added 'Stereo Mode' and 'Spherical Mode' parameters, to write out metadata for stereo and spherical video content.
- Movie File Out TOP - Added 'Leading Zeros Digits' parameter to specify the minimum number of suffix digits that the filename will have. If the sequence number is less than this number, then leading zeros are appended so that the total number of suffix digits is at least this value.
- Movie File Out TOP - Fixed H264/H265 files producing artifacts when seeking.
- Movie File Out TOP - Added VVC encoding support.
- Noise TOP - 'Derivative' now supported for Simplex 4D and Perlin 4D noise.
- Noise TOP - For derivatives of 4D noise types, 'Alpha' parameter will get disabled and the alpha channel will have the 4th component of the derivative.
- OP Viewer TOP - Fixed cook dependency warnings when appending anything to an OP Viewer TOP.
- Render TOP - Added new pulse parameter to render one frame when render toggle is turned off.
- Render TOP - Added new 'Background Color' parameter, which is combined with the Camera COMP's Background Color to determine the final Background Color of the render.
- Render Pass TOP - Can no longer have a different pixel format than the Render TOP it's downstream from.
- Render Select TOP - Fixed crash that can occur when deleting this node in some cases.
- Resolution TOP - Don't allow mipmap filtering on the input when High Quality Resize is used.
- Script TOP -
copyNumpyArray
now supports 3D, 2D Array and Cube textures. - Script TOP -
cudaCUDAMemory()
now supporst 3D, 2D Array and Cube textures. - Syphon Spout In TOP / Syphon Spout Out TOP- Upgrade to SDK 2.007.014. Add support for Sender FPS in Info CHOP. When enabled in the Spout Settings dialog.
- Video Device In TOP - Improvied performance when using 'Media Foundation' library and the pixel format of the data stream is NV12.
- Video Device In TOP - AJA devices can now use the Sync to Input Frame with multiple inputs.
- Video Device In TOP - Now supports capturing up to 16 audio channels for Deltacast devices.
- Video Stream Out TOP - Added support for AAC audio for RTMP and SRT modes.
- Video Stream Out TOP - Added parameters to force the Mux Size and the VBV Buffer Size.
- Video Stream Out TOP - Improved re-buffering behavior and added a new Pulse parameter to be able to force a re-buffer.
- Video Stream In TOP - Avoid truncating the end of the file when streaming a non-realtime file source.
- Video Stream In TOP - Added 'sample_rate' and 'true_length' Info CHOP channels.
- ZED TOP - Added SVO2 playback support.
- ZED TOP - Added support for network streaming the data from another machine using ZED native streaming.
- ZED TOP - Avoid one of the stalls that occured during initialization.
- ZED Select TOP - Added this new operator to select different images from a ZED TOP.
CHOP
- Audio File Out CHOP - Added support for big-endian .aiff formats.
- Audio Movie CHOP - Added 'Volume' parameter.
- Blob Track CHOP - Internal ID counting behavior improved. The final effect is that IDs ramp up in a much more controlled manner.
- Count CHOP - Added 'Count Up' and 'Count Down' momentary parameters to allow counting with no input connected.
- Delay CHOP - Better queueing behavior when frames skipped / max delay setup incorrectly.
- DMX Out CHOP / DMX In CHOP - Added better support for DMXking devices, re-categorized parameters.
- Feedback CHOP - Reset on startup/initial cook similar to Feedback TOP.
- Join CHOP - Changed behaviour such that the first input to the CHOP doesn't need to be non-empty for the rest of the inputs to be joined.
- Perform CHOP - Enabled GPU temperature for NVIDIA GPUs.
- RenderStream In CHOP - Added support for multiple Scenes and Schemas.
- Speed CHOP - New 'Speed' parameter that allows generating values when no inputs are connected.
- Stretch CHOP / Resample CHOP - New interpolation method 'Repeat Samples' that provides better spaced results when lengths are integer multiples of original.
- Timer CHOP - Fixed bug where Timer CHOP's python object didn't update after hitting the done state and returning to zero.
- Timer CHOP - Better spacing of Timer CHOP output in first timeslice to work better with non-timesliced OPs (such as the Movie File Out TOP).
- Timer CHOP - Fixed bad behavior when spaces were in Info DAT names.
- Timer CHOP - Fixed growing cook delays when external time runs past timer length.
- Timer CHOP - 'Defer Par Changes' now defaults to off.
- Trigger CHOP - Added option to remap total length to a new value.
- ZED CHOP - Added a backwards compatibility warning for ZED on startup for older projects - BACKWARDS COMPATIBILITY ISSUE - ZED CHOP - Now needs to point to a ZED TOP to select it's camera source.
DAT
- Audio Devices DAT / Video Devices DAT - Now refreshes properly with fewer redundant intermediate callbacks.
- Folder DAT - When "All Extensions" is off, an empty value in the "Extensions" parameter matches files with no extension.
- Media File Info DAT - Added stand in values for the table.
- Media File Info DAT - 'valid' row added to indicate if the entries in the value columns are valid.
- Python members for 'seconds' row, and 'valid' row.
- OP Find DAT - Now supports different aliases for toggle values (on/1/True off/0/False)
- Web Server DAT - Fixed
onWebSocketClose
callback not triggered on server de-activation or restart and also made a fix to WebSocket closing so that it correctly sends a 'Close Frame' to the client.
SOP
- Sphere SOP - The w texture coordinate is now zero when creating Equirectangular coordinates.
- ZED SOP - Added a backwards compatibility warning for ZED on startup for older projects - BACKWARDS COMPATIBILITY ISSUE - ZED SOP - Now needs to point to a ZED TOP to select it's camera source.
MAT
- Point Sprite MAT - New menu 'Sizing Model' allows the depth based scaling of the sprites to be either via the Constant/Attenuate parameters, or Perspective Correct scaling like most geo objects.
- Added 'Size Affected by FOV/OrthoWidth' parameter to make scaling FOV independent or dependent.
- Added proper parm disabling for 'Texture Sampling Mode' menu of Multitex map
- Add 'Texture Sampling Mode' menu to PBR MAT Metallic map, Roughness map, Ambient Occlusion map
- Add 'Texture Sampling Mode' menu to PBR MAT Specular Level map
- Add 'Texture Sampling Mode' menu to Alpha map
- Add 'Texture Sampling Mode' menu to Height maps, Emit maps, Darkness Emit maps
- Add 'Texture Sampling Mode' menu to Diffuse maps, Specular maps, Normal maps
Misc
- GLSL -
TDCreateRotMatrix()
is now available in all GLSL shaders. - Custom Operators - XYZW par type now supported.
- Script OPs - Allow setting parameter values in the onSetupParameters() callback.
- Some changes to how .dmp files are created to obtain more information.
- Panels: 'Fixed Aspect : Vertical' option fixed.
- Fixed aligning a row of children with simultaneous Fill and Fixed Aspect ratios.
- All In operators now have an optional 'OP' parameter as an alternative to wired input.
- Fixed re-opening a minimized parameter dialog, view etc, instead of doing nothing.
- DATs - Since newlines are supported in DAT cells, display them as symbols and allow them to be selected/deleted/copied etc.
- Fixed bug where Undo shortcuts were blocked when the mouse was over an active DAT, CHOP or TOP.
- Fixed problem displaying UTF8 characters in the Textport when it is closed.
- macOS - stop playback during system sleep.
- macOS - Folder parameters and ui.chooseFolder() now display a New Folder button in the open dialog.
- sys.executable now points to the included python executable, not TouchDesigner.
Operator Snippets
Backward Compatibility Changes
BACKWARD COMPATIBILITY ISSUE
BACKWARDS COMPATIBILITY ISSUE - ZED SOP - Now needs to point to a ZED TOP to select it's camera source. BACKWARDS COMPATIBILITY ISSUE - ZED CHOP - Now needs to point to a ZED TOP to select it's camera source. BACKWARD COMPATIBILITY - Par Class - Comparisons now use parameter evaluations in all cases. par1 == par2 would previously only return true if it were the same parameter object, now it compares their evaluation results.
BACKWARD COMPATIBILITY - 'me' context no longer wrongly set to root in some cases. When executing a run() command, in some cases 'me' value was set to root instead of the location the run command originated from. This could lead to permission errors trying to access neighbouring content within a private component for example.