Skip to main content

2.8.0

Very huge update for the system.

Spotlighted

Improved Editor Visual

This will be the last update for the visuals.

img_5.png

We completely reworked the visual of the nodes from the very bottom level. Especially now they have very cool looking animations and interactions!

img_8.png

We changed the color scheme of the graph, and changed it to use individual settings from the other graphs on the engine.

img_9.png

You can customize the color of the graph and connection as you want in the editor settings of Joint.

img_10.png

You can also reset the settings to the default in the Joint Management tab as well.

Node Pointer Widget Reworked

img_6.png

Now Node Pointer Widget has much better visual and editing supports. if you hover your mouse over them, you will see those buttons are getting popped up.

Explanations for each button are as following:

  • Node Picking : Start node picking.
  • Go to : Go to the current node that the structure contains.
  • Copy : Copy the content of the structure to the clipboard.
  • Paste : Paste the copied reference to the structure from the clipboard.
  • Unlink : reset the structure to the default value.

img_7.png

Not only the properties, but also the slate level node picker widget has been reworked as well. It will boost your development's speed!

Build Preset System

Joint Build Preset is an asset that defines whether your nodes will be included or excluded according to the build condition.

If a node that contains this asset is not allowed for type, then that node will be excluded on the package stages.

This will help you to reduce and optimize the dialogue manager asset according to the session type, and help you to prevent some memory corruption related security concerns.

info

Of course, we've supported a way to control the playback on each session, for example with some fragments like OnServer, OnClient, but they had their limitation since even if they are not be played, but still stays in the memory and object.

So basically, this new method is superior version of those fragments.

img_11.png

You can create a new preset in the content browser. right click and go Joint -> Joint Build Preset.

img_14.png

Once you created it, you can put it to each node's detail tab, to the property Build Preset.

img_13.png

In the asset, you can specify the behavior of the preset for each build platform.

  • On Client Behavior: Whether a node with this preset will be included in clients.
  • On Server Behavior: Whether a node with this preset will be included in servers.
  • Default Build Target Behavior : Default behavior for the build targets settings. If per build target settings doesn't have a setting for the current build target, it will be used instead.
  • Per Build Target Settings : behavior for the specific build targets settings. It takes the name of the build target.
info

These are the name it requires.

img_15.png

To add a new build target, you can make a new .Target.cs file and add a definition there. See more information related to this here: https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-build-tool-target-reference

img_16.png

It's very straight forward to understand. All the behaviors will be overlapped; If the current build platform can be applied to multiple options, then that node with that preset will be included only when all options are set to be included

For example, a build platform for standalone game will be included when On Client, On Server is set to Include, and the build target you used is allowed in the system.

img_12.png

Individual Simple Display Property Visibility System

Now the simple display property tab provide a visibility option for each property! For example, let's say we have a node like this.

img_17.png

but well.. It looks like a crap. It almost looks like a dumbbell. It's too big.

fb11fecd4866226c6535e623725e9f67.jpg

You might don't want to see some of the properties for this node because they are not necessary for now, but at the same time, you might don't want to exclude them from the simple display list for the future usage.

So we added individual visibility option for the simple property display! You can press 'x' to start off marking each property's visibility on the graph node.

img_18.png

Then those visibility button will show off. If you disable them and see the result...

img_19.png

img_20.png

Tada. Now it looks much clean! The visibility will be remembered by each graph node, thus you can make multiple nodes with the same class displays different properties on the graph node slate.

info

It will be remained on the copy-paste actions as well.

Added

Added Joint Version Comparison Macros

Now Joint supports JOINT_VERSION_NEWER_THAN, JOINT_VERSION_OLDER_THAN macro for the compatibility between versions in code framework.

img_23.png

This will help you to make your own system that works with Joint together.

Added Joint Management Extension

Now additional modules can attach additional tabs in the Joint Management tab.

img_24.png

Check out FJointManagementTab_JointNativeUtility, FJointNativeEditorModule::StartupModule() for the better understanding.

Yeah, we're changing the system to be more generous and opened up for the extensibility. It's a little, foreshadowing for the next step of Joint. I will keep my words for now though.

Changed

Removed & Improved Orphaned Node Removal Actions

Improved orphaned node removal logic : Now it cleans up all the nodes with better logic.

The older version actually check all the subobjects under the object whenever the assets loads, but it was not the best all the time (Actually it was bad, but it must be introduced so urgently back then so we didn't have time to think about the better one), so we improved it.

info

If you have Joint Manager assets from older versions (before 2.8 update), we recommend you to do manual clean for once, it will let you flush down possible garbage nodes for your assets.

You can visit Joint Management tab for the action.

img_21.png

Please make sure to save the changed package after the action!

Pin Data Now Has Settings & Changes on ImplementPins

Pin Data now has a property Settings(FJointEdPinDataSetting) that contains editor only visual & editor related settings.

For now, it has one property : bAlwaysDisplayNameText, which tells the editor to display the name of the pin without hovering on the graph.

ImplementPins now also updates visual settings properties as well.

info

You might have to change your fragments' logic if your fragment uses custom pin related actions.

Improved Editor Performance

We optimized the editor actions' performance to its limit. Everything related to the graph now has zero lag. Copy & paste, move fragment, add fragments... etc!

warning

We also added an LOD slate rendering for simple property display on the system for better performance when the graph is zoomed out.

But this feature is still unstable and experimental. If you experience any crashes with no reason, try to turn it off at first.

img_22.png

Fixed

Fixed an old bug that WYSIWYG editor's applied text style widget's internal margin getting changed after pick up.

Fixed an old bug that Joint Tools option's icon on the toolbar is missing after UE 5.4 (I believe) has been changed.

Fixed the issue that Joint related graph nodes can be played outside Joint Manager has been fixed.