diff --git a/Source/Editor/Options/InterfaceOptions.cs b/Source/Editor/Options/InterfaceOptions.cs
index 223420191..7fa08cc39 100644
--- a/Source/Editor/Options/InterfaceOptions.cs
+++ b/Source/Editor/Options/InterfaceOptions.cs
@@ -312,6 +312,13 @@ namespace FlaxEditor.Options
[EditorDisplay("Cook & Run"), EditorOrder(500)]
public int NumberOfGameClientsToLaunch = 1;
+ ///
+ /// Gets or sets the visject connection curvature.
+ ///
+ [DefaultValue(1.0f), Range(0.0f, 2.0f)]
+ [EditorDisplay("Visject"), EditorOrder(550)]
+ public float ConnectionCurvature { get; set; } = 1.0f;
+
private static FontAsset DefaultFont => FlaxEngine.Content.LoadAsyncInternal(EditorAssets.PrimaryFont);
private static FontAsset ConsoleFont => FlaxEngine.Content.LoadAsyncInternal(EditorAssets.InconsolataRegularFont);
diff --git a/Source/Editor/Surface/Elements/OutputBox.cs b/Source/Editor/Surface/Elements/OutputBox.cs
index 999b1bb72..d60e283f4 100644
--- a/Source/Editor/Surface/Elements/OutputBox.cs
+++ b/Source/Editor/Surface/Elements/OutputBox.cs
@@ -3,6 +3,7 @@
using FlaxEngine;
using FlaxEngine.GUI;
using System;
+using FlaxEditor.Options;
namespace FlaxEditor.Surface.Elements
{
@@ -57,8 +58,8 @@ namespace FlaxEditor.Surface.Elements
private static void CalculateBezierControlPoints(Float2 start, Float2 end, out Float2 control1, out Float2 control2)
{
// Control points parameters
- const float minControlLength = 100f;
- const float maxControlLength = 150f;
+ const float minControlLength = 50f;
+ const float maxControlLength = 120f;
var dst = (end - start).Length;
var yDst = Mathf.Abs(start.Y - end.Y);
@@ -66,6 +67,7 @@ namespace FlaxEditor.Surface.Elements
var minControlDst = dst * 0.5f;
var maxControlDst = Mathf.Max(Mathf.Min(maxControlLength, dst), minControlLength);
var controlDst = Mathf.Lerp(minControlDst, maxControlDst, Mathf.Clamp(yDst / minControlLength, 0f, 1f));
+ controlDst *= Editor.Instance.Options.Options.Interface.ConnectionCurvature;
control1 = new Float2(start.X + controlDst, start.Y);
control2 = new Float2(end.X - controlDst, end.Y);