diff --git a/Source/Editor/Surface/VisjectSurface.Input.cs b/Source/Editor/Surface/VisjectSurface.Input.cs
index ecc29d74f..062a0d603 100644
--- a/Source/Editor/Surface/VisjectSurface.Input.cs
+++ b/Source/Editor/Surface/VisjectSurface.Input.cs
@@ -299,7 +299,7 @@ namespace FlaxEditor.Surface
if (IsMouseOver && !_leftMouseDown && !IsPrimaryMenuOpened)
{
var nextViewScale = ViewScale + delta * 0.1f;
-
+
if (delta > 0 && !_rightMouseDown)
{
// Scale towards mouse when zooming in
@@ -314,7 +314,7 @@ namespace FlaxEditor.Surface
ViewScale = nextViewScale;
ViewCenterPosition = viewCenter;
}
-
+
return true;
}
@@ -329,12 +329,12 @@ namespace FlaxEditor.Surface
if (!handled)
CustomMouseDoubleClick?.Invoke(ref location, button, ref handled);
- if (!handled && CanEdit)
+ // Insert reroute node
+ if (!handled && CanEdit && CanUseNodeType(7, 29))
{
var mousePos = _rootControl.PointFromParent(ref _mousePos);
if (IntersectsConnection(mousePos, out InputBox inputBox, out OutputBox outputBox) && GetControlUnderMouse() == null)
{
- // Insert reroute node
if (Undo != null)
{
bool undoEnabled = Undo.Enabled;
diff --git a/Source/Editor/Surface/VisjectSurface.cs b/Source/Editor/Surface/VisjectSurface.cs
index 675598b16..0275586a4 100644
--- a/Source/Editor/Surface/VisjectSurface.cs
+++ b/Source/Editor/Surface/VisjectSurface.cs
@@ -524,6 +524,27 @@ namespace FlaxEditor.Surface
///
public virtual bool CanSetParameters => false;
+ ///
+ /// Determines whether the specified node archetype can be used in the surface.
+ ///
+ /// The nodes group archetype identifier.
+ /// The node archetype identifier.
+ /// True if can use this node archetype, otherwise false.
+ public bool CanUseNodeType(ushort groupID, ushort typeID)
+ {
+ var result = false;
+ var nodeArchetypes = NodeArchetypes ?? NodeFactory.DefaultGroups;
+ if (NodeFactory.GetArchetype(nodeArchetypes, groupID, typeID, out var groupArchetype, out var nodeArchetype))
+ {
+ var flags = nodeArchetype.Flags;
+ nodeArchetype.Flags &= ~NodeFlags.NoSpawnViaGUI;
+ nodeArchetype.Flags &= ~NodeFlags.NoSpawnViaPaste;
+ result = CanUseNodeType(groupArchetype, nodeArchetype);
+ nodeArchetype.Flags = flags;
+ }
+ return result;
+ }
+
///
/// Determines whether the specified node archetype can be used in the surface.
///