vvvv gamma 6.6
released on 02 07 24
Installer |
Offline Installer
Fixes
- Select (ByPath): now able to work with arrays forum
- ToChannel node now can be forced to push "unchanged values" forum
- Kairos docking broke in 6.5:
ImGui (Version 1) [Graphics.Skia.Layer]
added as obsolete node - converter added. This is to ensure that Kairos 1.1.10 still works as expected. - Fixes
MonoFlop (FrameBased)
. Issue was: With 'Retriggerable' active, it would return true for one frame longer than specified. Converter added to not break patches - Fixes: ImGui Tabs not switchable if Object editor holds open Spread forum
- VL doc deserialization: Adds the ability to deal with positions that are not integer-based. Allows to change format later without locking the user into one version.
- Fixes value editor on constant pads no longer working (regression introduced with 6.0)
- Fixes dynamic enum warnings showing up on connected pins
- Fixes newly created dynamic enum IO box with invalid value not rendering as such
- Fixes existence of pins not updating correctly in deeply nested patch hierachies
- Fixes pads of cross-links showing up in property list ("__slot__ID"). They'll no longer get serialized and will also no longer show up in the object editor (and other reflection based tools).
- Fixes issues with enum popups not having the correct z-drawing index in a patch forum forum forum
- Frames created via the nodebrowser now appear at the correct location forum
- Fixes an issue with labels on definition nodes that could be unintentionally edited forum
- TryParse (String) now returns false in case of NULL on input
New
- Shortcuts to change font size of IOBoxes/Comments: Alt+1 through Alt+6 forum
- The Dynamic Enum C# template now also demoes usage of Tags
- Adds
OneSnapshotPerFrame
. This way you can calm down a channel - Adds debug outputs to ClockSyncer
Libraries
Stride
- TextureWriter now saves files on render forum
ImGui
- Fixes regression introduced in 6.5 causing docking to not work as advertised. Windows got immediately undocked, also moving them had some strange feedback.
- Fixes docking not getting disabled once it was enabled
- Docking and fullscreen window related changes:
- Docking enabled one no longer has a fullscreen window. Any content not surrounded by a Window will end up in the Debug window. The screen serves as the docking space.
- Docking enabled without a fullscreen window means one can't dock with the edges of the screen. Only the windows itself are dockable.
- Docking with fullscreen enabled will no longer draw background.
ImGui.Stride
- Fixes empty Debug window showing up even if there are no widgets to be rendered
- Fixes num pad enter key not working
vvvv gamma 6.5
released on 12 06 24
Installer |
Offline Installer
Change
- IOBoxes clipping their values now show an indicator rather than ending value with ellipsis
- Less aggressive invalidation strategy when reloading documents. While the previous approach was invalidating the whole document graph when any change in the dependency list was detected we'll now only do so when a forwarded dependency was added or removed.
- Better C# record support
- Our symbols recognize them as immutable
WithValueByPath
clones them properly (whatwith
expression would do)- Adds basic support to serialize them
Select (ByPath)
more precise with its warnings- Allow making use of
Dispose
in mainApplication
patch: what to do when the app shuts down - DynamicEnum Template has CreateDefault for its Definition added, allowing for easier access to its methods in the patch
- AppExporter has Troubleshooting button added, pointing to the respective page in the gray book
Fixes
- Pad editors keep their settings when being connected to from upstream - forum
- Fixes layout issues with EntryIndex of CollectionEditors - forum
- Fixes potential lag/mini freeze of UI when changing values in patch - forum
- Fixes regression introduced in 6.4 release that when creating an IO box from
Optional<T>
the system wouldn't go for theT
- Fixes regression introduced in 6.4 release causing Fuse patches with unconnected pins of type
Delegate1In1Out
to crash. - Fixes regressions in
TryGetValueByPath
introduced with 6.0 release- Was throwing cast exception for most trivial case instead of returning false
- Did not return user provided default value in case the path couldn't be resolved
- Fixes incoming links of pads not getting duplicated when pasting within context (Ctrl+Shift+D)
- NodeReferences store the the user choices but also the found symbol. This info will never get adjusted by the system. Restructuring a document or editing a read-only package won't corrupt your patches. Also less irritations in git.
- Fixes an UI glitch that lead to a diappearing mouse cursor
- Fixes inconsistency with default values on pin groups in exported code - forum
- Fixes some inconsistencies in new timer introduced with 6.4
- Fixes startup crash when having corrupt source package in repo list
- Fixes
DefaultValueAttribute
not getting picked up on C# input parameters Damper
works with colors again
Libraries
Audio
- References VL.Audio 1.8.2, fixes issue with export not working
Video
- Fixes
VideoIn
node not releasing the device when disabled - Fixes
VideoSourceToImage
/VideoSourceToTexture
not releasing the last received frame after changing of video source
Stride
- Fixes
#include "file.hlsl"
not working at all
ImGui
- Fixes collpased state of TreeNode when using in a loop without having a channel connected. Widgets taking a channel as input will no longer write to it in case the channel was generated by the system. This ensures that the internal state is not shared across all instances connected to the same system generated channel.
- Fixes hard crash when double disposing the ImGui node
- Adds
IsKeyDown
,IsKeyPressed
,IsKeyReleased
nodes to deal with keyboard input
MessagePack
- Re-adds typeless object formatter - was already in use for objects like
Unit
orIDynamicEnum
in previous releases. - Adds nicer formatter for dynamic enums (they're just strings)
vvvv gamma 6.4
released on 27 05 24
Installer |
Offline Installer
New
- Improves auto-conversion: allows to connect
T1
toM<T2>
, ifT1
is a subtype ofT2
- Disabling auto-lifting for
Channel<Channel (Ungeneric)>
- Adds new resource friendly timer implementation one can opt-in by disabling a new setting called "High Precision Timer"
Changes
- C# generated
Deconstruct
methods of records are now imported asSplit
Fixes
- Fixes GlobalChannel node Null exception when trying to warn because of wrong type
- IOBoxes with Spreads: fixes CollectionEditor not applying the settings to new editors when increasing editor count - forum
- Comment regions not emitting warnings or errors
- Cache regions: fix for a rare crashes when working with interfaces and Dispose
- TypeRegistry.GetTypeByName fix. Assembly scanning wasn't triggered in the right moment
- In 6.0 introduced
IStartup.Configure
was not working as advertised - Fixes runtime crash (CastException) when connecting
Object
toOptional<T>
- forum - Fixes bangs getting stuck when used in spread editors - forum
- ObjectEditor: update DynamicEnumEditor when entries changed
Libraries
- ships with VL.IO.OSC 1.1.3
Stride
- Fixes
SkiaRenderer
not propagating the right transformation during its Notify calls - github
MessagePack
- Fixes typeless serialization. For example
Deserialize<object>(Serialize<object>(X))
didn't work, and also serializing a class containing a property using an abstract type was broken. - Adds support for
NonSerialized
attribute and addsSKTypeface
formatter - Allows to serialize
SkiaPaint
objects - Some performance improvements to
VLObject
serializer
vvvv gamma 6.3
released on 03 05 24
Installer |
Offline Installer
New
- DynamicEnum C# template whose entries can be changed via the patch
- Added a new overload for the
Contains (String)
that includesComparison Type
enum, that allows case-insensetive comparison.
Changes
- SaveAll command will only save documents with actual user changes - forum
Fixes
- Ensures
UseWindowsForms
is set in exported entry point project when output type isWinExe
- forum - Fixes spreaded press/bang IO box no longer working correctly. Regression introduced with 6.0 - forum
- Fixes a regression in
ForEach [Reactive]
introduced with 6.0 - forum - VL.IO.Midi: fixes issue with ControllerState node not properly responding to channel changes - forum
- VL.IO.ArtNet: reworked to fix two issues: forum, forum
- VL.Audio: fixed regression with Audio config UI not working in export - forum
- VL.Pipette.HDE: working again with 6.x - forum
- Fixes filtering bug in the Log Window.
Skia
- added
ImageWriter (Async)
Stride
- Updates Stride to 4.2.0.2121
- Adds
Passthrough [VirtualReality]
node to control the passthrough feature
vvvv gamma 6.2
released on 11 04 24
Installer |
Offline Installer
Fixes regression we introduced in 6.1 causing spread IO boxes of type string or color to grow after saving
vvvv gamma 6.1
released on 11 04 24
Changes
- F1 now opens helpbrowser if multiple nodes are selected - forum
- VL.IO.OSC: added new Unpack node to allow implementation of non-udp based receivers
- Custom regions now come with Create, Update & Dispose
Fixes
- Fixes out-box inside of region connected to outer patch only not showing any value - forum
- Fixes typo in inspector
- Fixes "HowTo Use Configuration" help patch
Regressions introduced in 6.0
- Fixes values of FUSE pins no longer getting stored in vl document - forum
- Fixes serialization of patched generic types
- Fixes crash when closing tooltips of observable values - forum
- Fixes two regressions in ImGui, one causing a render glitch in scrollable content, the other was breaking the Kairos Compositor
vvvv gamma 6.0
released on 02 04 24
Installer |
Offline Installer
vvvv itself - HDE & Runtime
New
- Update to .NET 8.0
- Added Node Inspector
- Added new Debug Views: Build Result, App Health and Log
- Adds command line option
--log
to enable logging to file (%UserProfile%\Documents\vvvv\gamma\vvvv.log
) - Added Support for Configuration
Changes
- Changing values in pins and pads no longer need a compile step. This improves playfulness.
- Drawing links is now easier to get right when starting from an IOBox, Pad, or Control point. forum
- Patch Editor & Node Browser: Improved patching speed. Better support for touchpads and tablets.
- Connectors of pins pads and control points are easier to interact with, while still making sure that short links and nodes are still interactable with
- Combining view and world space approaches. Links and datahubs get picked by a refined cursor size (view space); independently datahubs now can have that extended world space interaction area. By that, all zoom levels get the best of both spaces
- For those that don't like middle-clicks: to create an IOBox at the end of a link: double-click, choose IOBox, and get the IOBox correctly typed
- Drawing a link also works with drag & drop gesture. Dropping works on region bars, existing data hubs, and empty patch areas.
- Node browser opens when doing an "unprecise" double click
- Refined auto link segmentation. Sometimes you ended up with only ugly links, sometimes with a completely unreadable patch. The cursor helps you when drawing links by showing which patch areas you can link into. Setting now allows to disable link auto segmentation
- Node Browser highlights search text in results
- Node Browser that searches for connectable nodes:
- Faster and more relevant results at the top. Examples:
- Starting from an input pin of type
GPU<RGBA>
and link upstream: nodes outputting RGBA come directly after those that outputGPU<RGBA>
- Starting from RootScene and link downstream: We see SceneWindow, SceneTexture
- Starting from an input pin of type
- Choice comes with full category path -> fixes TransformSRT issue forum
- Categories in choices can be searched for
- Rich-text choices: greying out category for better readability
- Node browser allows you to go in and out of connectable-nodes mode on the fly.
- Mode is supported when inserting a node into a link. Checking inputs and outputs for connectability.
- Faster and more relevant results at the top. Examples:
- Refined Copy & paste logic: sets references to packages in the target patch.
- Ctrl-T makes HDE windows topmost
- Type annotation: allows to enter a type not showing up in the list.
- PatchEditor: allows panning both with right-drag & SPACE-left-drag - even while drawing a connection
- Patch Explorer and Document Menu are now colored red in case of errors
- Unifies keyboard shortcut handling across patch editor, extensions and renderers
- All render windows will invoke global commands from the patch editor (quad menu). User can opt out of this with existing "Enabled Shortcuts" pin.
- All render windows now take an optional
ICommandList
. Any commands defined there will take precedence over system commands. - Command lists can be created with the new
VL.Core.Commands
package
- Font Size of the Extensions is defined in Settings
- Whether or not a state output pin is visible by default was slightly changed: the pin is always visible except for get/split operations on records.
- All pins (hidden and optional) of a node are now stored in the model. This allows library developers to hide certain pins but still use them to store data. For example, the
Bounds
input on a newly createdRenderer
is now hidden by default. - Use
false
as the default value for forced apply pins (Set
/Reset
/etc.) but notUpdate
. Such fragments with forced apply pins are now placed onUpdate
. This fixes a very long readability and usability issue with nodes likeLFO
orCounter
which were showingtrue
on pins likeReset
. - The node replace command renames pins in case there is a simple solution. For example replacing a property getter with another one will no longer lead to a red pin with the message "Pin X does not exist on Y".
- Gets rid of magic pin renamings on pin creation. Basically, let the compiler figure out whether or not a pin is valid / should have an error that it already exists.
- Newly created pins & slots from a rename action will copy over metadata (like type, value, attributes) from original.
- Our dark theme will also make the window title bars dark (works only in Windows >= 10).
- New serialization options
- Thanks to https://github.com/vvvv/VL.StandardLibs/pull/664 we can now serialize from/to MessagePack. The new nodes can be found in the pre-installed package
VL.Serialization.MessagePack
. - The previous PR also brought in some plain & simple binary serialization - these nodes can be accessed via the new
VL.Serialization.Raw
package. Note that you should know what a blittable type is or you'll not be happy with them. - To make thing symetric we moved the FSPickler based nodes to the new
VL.Serialization.FSPickler
package. A converter will take care of fixing your existing patches.
- Thanks to https://github.com/vvvv/VL.StandardLibs/pull/664 we can now serialize from/to MessagePack. The new nodes can be found in the pre-installed package
- Our serializer supports the
NonSerializedAttribute
- Fixes extremely bad performance in our serializer
- Patched objects use the VL type name for their string rendering. For example calling
ToString
on aPerson
class will result in "Person" and not some compiler generated mangled name. - Direct import of types & nodes from C#
- It's now possible to write types & nodes directly from within C# with the new
ImportAsIs
assembly attribute. When set, all public classes, structs and enums will be available in VL as if they'd have been defined there directly. No type forwarding required. - It's further possible to write process nodes directly in C# by attaching the new
ProcessNode
attribute on a class. Again, no further work has to be done on the VL side of things. - This way (if desired) the C# code can be become the single source of truth for a library project.
- It's now possible to write types & nodes directly from within C# with the new
- More fine-grained control over what types are allowed over a
T -> M<T>
connection via newIMonadicTypeFilter
interface (used by FUSE) - Restructured Settings
- Global Channels Browser was worked on. A detailed list of the changes will come with the 6.1 release.
- Solution explorer showing instance operations & Used By. Makes it easier to understand bigger systems.
- Warning on through-pads in records as proposed here: VL-Language issue
- Node browser:
- Now draws itself via Skia - was System.Drawing
- IOBox creation: Int2/3/4 supported
- Pressing "." when drawing a link opens the node browser filtered for the type
- Filtering via type is also possible when creating the node while linking. The type of the link is choosable as one of the first choices
- When filtering by type, nodes of related types get shown as well. The direction of the link decides whether sub- or super-types are shown.
- Moved some stuff behind
New...
choice - When entering "pa" the pad entry shows up again, even when not in "New.." mode. This aligns with the fact that you don't have to click into categories to see all nodes that start with "pa"
- Primitive nodes show first. entering "If" or "Ca" will show "If" or "Cache" before any type.
- Sorting in general improved
- Some cleanup in CoreLib that messed up the browsing experience (If2...)
- Refined exception rendering in tooltips. now comes with why and how
- Apply-pins are always "used"/not greyed out/part of the program, but false (a boolean is sufficient to distinguish running or not running). Makes the tooltip easier to read as well.
- New Settings for IOBoxes: Dragging values horizontally, interacting with left mouse button
- When ending a link directly over the connector of a data hub the link will be drawn no matter what - no force modifier needed
- Adds viewer for non-generic IMonadicValue and for GPU
Fixes
- IOBoxes now handle display of NULL correctly
- Configuring Int2/3/4 IOBoxes now also has option to set Minimum, Maximum,..
- Fixes export issue when using C# project further down in the document hierachy
- Fixes null pointer when clicking on frame border - forum
- Fixes passing of arrays via link into custom regions - forum
- Couple of fixes in regards to dynamic enums - forum, forum
- Initialize user fields only with VL defaults if the Create operation does indeed make use of the
This
node. Fixes memory allocations the user wasn't aware of. - Protection against recursive
CreateDefault
call stacks is now done at runtime. When creating the default value we will now place the instance being created in a thread static field. Should we now again run into the same method that stored instance will be returned. This ensures that any CreateDefault cycles get closed properly. Fixes full crash when connectingThis
toChanged
node. - Fixes regression introduced with 5.0 that packages like
Stride.Graphics
could get referenced without being installed in the packages folder - forum - Fixes auto download of vvvv in
VL.TestEnvironment
- Fixes regression introduced with 5.0 that Create operations wouldn't show their category in the UI
- Fixes crash in single-file exported apps
- Fixes editor crash after deleting a class used by a stateful region - forum
- Fixes error propagation in patches - forum, forum
SKImage
tooltip (and IO boxes for that matter) will no longer display if triggered from a background thread to avoid complete vvvv crash - forum- Fixes wrong assembly getting loaded when a package was both present in user folder as well as in internal packs/dependencies folder
- Fixes IO box of type
Spread<Spread<Char>>
crashing - Fixes handling of parameters which actually use
null
as their default. For example when calling a method defined asFoo(string? s = null)
our system will now correctly passnull
and not the empty string. - Fixes nodes not turning pink when their exception triggered inside a reactive foreach from within an Update call
- Fixes misleading / hard to grasp error message when duplicating an output pin
- Fixes warning that there're errors deeper inside not propagating all the way up
- Fixes assembly load error when package was providing runtime assembly in
runtimes/win/lib
(like for example inSystem.Management.Automation
) - Fixes vvvv not starting after double click on vl file in explorer - forum
- Fixes implicit state pin renaming not working for nested patches
- Fixes settings icon not adjusting to light theme
- Fixes tooltip rendering a "ticking clock" on certain observables while in truth they were only pushing one value
- Fixes system not dealing with network paths correctly - forum
- Thread-safe adaptive node witness building. fixes: VL.StandarLibs issue
- Compiler Fix for a corrupt patch with declaring a Property twice. Now reports the error.
- IOBox Editors: nested editors (e.g. Spread of Enum) move to front. Fixes forum
- Don't show "Default: " on pin views of node application when pin is unused. This tricks people into thinking that this default is somehow relevant, which it is not, since the fragment of that pin doesn't get executed anyway. forum
- Fixes value indicator on pins: fix for sometimes value not ending up in the model (when right-dragging on a bool input instead of right-clicking it)
- Fixes Ctrl-P (new patch definition + instantiation) when executed in "Definitions" or "Category" canvas -> only definition gets created
- clearing persistent messages on restart
- Compiler fix: make sure ConstructProgram gets called asap when a new type incarnation gets emitted - to ensure we always access the right state class (via static Program field). we had a case where the collection of properties was empty still
- Tooltip/viewers:
- for Spread
ObjectViewer is used if SomeType doesn't have a registered viewer. Was: EmptyViewer - improves viewers for Optional, Nullable, Observable and Channel
- for Spread
- Patch Editor &
Warn
nodes: error severity leads to red node, not pink (tooltip as well red). this aligns with the "App Health" view. Pink nodes are only meant for critical problems (like exceptions) - Nodebrowser - creating iobox. pressing ESCAPE doesn't close the node browser but goes back into main mode
- Patch explorer main button reacting on each click (not filtering out double clicks, allows for a quick peek)
- Making sure that resize cursor and connection-direction indicators only appear when this is what would happen
- Making sure sloppy clicks in general are clicks (until they are not and become detected as drags). We had a situation where depending on drag area setting some clicks were not a click, nor a drag leading to the frustration of being too stupid to click
- Moment tinting in regions wasn't quite right. This could lead to a node showing up in grey while actually being executed on Create.
- Fix for dark theme: Unused pins were just hard to distinguish from normal pins.
- NodeBrowser: temp node info on the right panel wasn't going away when it should
- When linking and creating an IOBox upstream make sure that a spread IOBox with one entry gets created if the sink is uninitialized. If the sink has a value take this.
- Making sure runtime messages don't slow down the HDE
- Making sure that patches show themselves even when some view-element has a problem
Standard Libraries
New Libraries
- Ships with support for OSCQuery via the VL.OSCQuery package
- Adds VL.IO.Redis
- Adds VL.TPL.Dataflow, combined with new
MainLoopTaskScheduler
inAppHost
one can build pipelines which render on the main thread while read/writing data in background threads.
New Nodes
- Added
Log
node to conveniently log to the new log window Exit
(CoreLib.Windows) andOtherInstancesRunning
(CoreLib) nodes- Send & Receive nodes refined
S
&R
nodes are now calledSend (Global)
&Receive (Global)
Send (Local)
region +Receive (Local)
nodes were added for better support of scopes. Values are only receivable in a defined area of the patch. Reasoning about execution order is not necessary.- Nesting several Send (Local) regions is possible. By that, you can temporarily overwrite the value for a certain Key. When leaving the inner
Send
region the value gets reset to the value of the outer region.
- Introduces central
AppHost
class. It gives access to various services as well as allows to register new ones (service registry). - Adds
GaussianSpread
nodes,Histogram
andBounds [Collections]
(thanks @tebjan) - Predefined
DefaultDarkTheme
andDefaultLightTheme
based onColorTheme
allow setting up color palettes DefaultStyle
node for a convenient predefined style- Adds
IList (NonGeneric Mutable)
&IDictionary (NonGeneric Mutable)
- Adds
OnException [Reactive]
&CatchAndReport [Reactive]
- Adds
SaveToPin
,SaveToModelPin
,EnsureValidChannel
,SelectEnumFlag
- Channel: adds
SetValidator
allowing to block certain values from getting pushed - Adds
Warn (Lazy)
node - Adds
ToStringComparer
which allows to create case insensitive dictionaries
Changes
Select (ByPath)
,TryGetValueByPath
,WithValueByPath
- now are able to work with properties of objects other than VLObject
- can start with a root object of type dictionary or Spread
ManageTask
regions: pin-namings: OnFinished -> "On Finished" "is Running" -> "Is Running", Classes now internal as you only want to use the "process region". some "simplifications" in the help patch- Removes
Object.Create
Identity [Object]
now obsolete,CastAs (Generic) [Object]
experimentalGlobalChannel
outputsChannel<T>
instead ofChannel<Object>
. improved waringsSelect (ByPath)
: Path is a Channel now; warns if Path is incorrectGetSlice (Channel)
: Entries now a Channel. If a new Spread gets pushed both Index and Entry might update.- ChannelHub:
TryAddChannel
andGetOrAddChannel
got "Got Created" outputs - Adds System.Type forward
- Adds ValueType type forward. Now, when filtering by type & starting the link from a sink of type object makes all value types show up
Fixes
ImagePlayer
(Skia/Stride) now always have files in correct order- Fixes memory leaks when rendering Skia into Stride - forum
SingleInstance
is now thread-safeAsyncLoop
installs a frame clock now. Fixes animation nodes not returning meaningful results when used inside - forum- Various
IVLTypeInfo
related fixes - Fixes pitch and yaw being switched in
Rotation (Vector3)
- VL.StandardLibs issue - Fixes
Select (ByPath Dynamic)
injecting values of typeobject
when given path could no longer be resolved - forum - Fixes Enabled pin on
VideoIn
- VL.StandardLibs issue - Fixes flickering image output after switching video file resolution - forum
- Fixes bug in frame clock. frame number needs to count up before invoking the frame start event
- Fix for
GlobalChannel
node: not creating objects on the fly if Channel.Value = default Select (ByPath)
: When main channel changes, sub channel doesn't throw exception if old path isn't valid any longer; Don't create defaults all the time for mutable TsSynchronizer
regions dispose unused states before creating & updating new ones- Fix for
Changed
node: option "Changed On Create" didn't work
VL.Stride
- Update to Stride 4.2
- Shaders can now be organized in subfolders - their name must still be unique though
- Adds support for
ComputeColor
/ComputeFloat4
+ 'Color' attribute pins - PR- TextureFX RGBA inputs are now of type ComputeColor
- Adds
CustomPostFX
region which allows to patch a custom post-processing effect chain using the regular node set - Adds
ApplyImageEffect
node to be able to run image effects in the post effect region - Adds
CustomColorTransform
node to patch color transform post-processing effects with ShaderFX - Moves TextureFX into new package
VL.Stride.TextureFX
to make space for others - Fixes duplicate pins in Stride physics nodes
- Fixes world matrix from downstream not taken into account in DrawFX
- Fixes non-deterministic behavior of some material nodes (e.g. for MaterialSpecularThinGlassModelFeature) - forum
- Fixes
Enable [Entity]
node by adding a pin to be able to infer the type of the component - forum PBRMaterial (Metallic)
: Metalness and Roughness are 1.0 by default. This now gets displayed on application sidePBRMaterial (Specular)
: Glossiness and Specular Intensity are 1.0 by default, Specular is white. This now gets displayed on application side
VL.ImGui
- Update to Dear ImGui 1.90
- Breaking Change: Due to update to the ImGui.Net 1.90
ChildWindow
's "AlwaysUseWindowPadding" flag is moved from theFlags
into theChild Flags
. - Adds Stride rendering backend
VL.ImGui.Stride
(thanks @kopffarben) - PR - Item state gets captured for TreeNode and CollapsingHeader so subsequent query nodes return the correct result - forum, forum
MenuItem
gotSelected Channel
input pin.- Adds new pin to
LayerWidget
which gives more control over what events are allowed to pass through - Fixes init order in generated target code of ImGui region - forum
- Fixes default value on various channel input pins not showing up correctly
- Exposes
SetNextWindowScroll
TableGetColumnFlags
's 'Index' input pin fixedNGon
offset fixed when drawing with theAtCursor
DrawList style- Fix:
SetIndent
is using hectopixel - Adds
Context
forward - Adds
EnumFlagButton
TabItem
now comes with LifeSpan inputObjectEditor
- Now takes non-generic channel (easier to connect) and now has Style input
- fixes exception when collection shrinks. forum Superfluous Slice-Based Merge subscriptions get removed before they can react.
- Adds support for dynamic enums
- Bug fix for label logic (-> Inspector for
FontAndParagraph
node now allowing to adjust font family) - Fix for deeply mutating object structure. Now displaying the changes deep inside.
- Supports DisplayAttribute: Name wins over ShortName, allows to order properties.
- Fix for nested property description.
- ImGui now reacting on mouse leave and lost focus events of skia control. IsItemHovered will return false when not over the Skia renderer. -> Tooltip in Inspector will close when leaving window
VL.Video
- rename. Was
VL.Video.MediaFoundation
. TheMediaFoundation
part has been dropped in the package name to lay the groundwork for more platform-neutral work. - The package has no more dependencies on
Stride
,Skia
orSharpDX
. This reduces the size of exported applications. - All backend-specific node duplications have been removed. For example
VideoPlayer (Skia)
,VideoPlayer (Stride)
are no more, instead we only haveVideoPlayer
. - The
VideoPlayer
andVideoIn
nodes return aIVideoSource
on their main output. That pin can be connected toVideoSourceToSKImage
(found withinVL.Skia
) orVideoSourceToTexture
(found withinVL.Stride
). Both of these nodes take care of efficiently turning the received video frames into their respective image type. - The before-mentioned nodes were introduced earlier this year, but didn't get much attention yet as they were only usable in VL.IO.NDI. With this release, their functionality has been enhanced so that they can transport the used graphics device upstream. That allows the source (for example the
VideoPlayer
) to enter faster code paths if possible. The produced video frames can be backed by textures and used for rendering directly - no unnecessary memory copies, or GPU download & uploads. - Whether or not the graphics device gets communicated to the video source can be controlled via a pin which defaults to true. The video sink nodes further allow to pull the video frames from upstream, which could be useful in scenarios where one wants to synchronize the update rate to the video source. This mode might also be useful if a non-changing texture output is desired (forum).
VL.Skia
- Update to SkiaSharp 2.88.6
InjectNotifications
allows creating custom Mouse/Keyboard- LottiePlayer: added
Version
,Original Size
andActual Bounds
output pins.