Add GroupArchetype to Visject nodes spawn query check
This commit is contained in:
@@ -345,7 +345,7 @@ namespace FlaxEditor.Surface
|
||||
_cmStateMachineMenu = new VisjectCM(new VisjectCM.InitInfo
|
||||
{
|
||||
Groups = StateMachineGroupArchetypes,
|
||||
CanSpawnNode = arch => true,
|
||||
CanSpawnNode = (_, _) => true,
|
||||
});
|
||||
_cmStateMachineMenu.ShowExpanded = true;
|
||||
}
|
||||
@@ -406,9 +406,9 @@ namespace FlaxEditor.Surface
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public override bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
return (nodeArchetype.Flags & NodeFlags.AnimGraph) != 0 && base.CanUseNodeType(nodeArchetype);
|
||||
return (nodeArchetype.Flags & NodeFlags.AnimGraph) != 0 && base.CanUseNodeType(groupArchetype, nodeArchetype);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace FlaxEditor.Surface
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public override bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
if (nodeArchetype.Title == "Function Input")
|
||||
return true;
|
||||
@@ -44,7 +44,7 @@ namespace FlaxEditor.Surface
|
||||
if (Context == RootContext && nodeArchetype.Title == "Function Output")
|
||||
return true;
|
||||
|
||||
return base.CanUseNodeType(nodeArchetype);
|
||||
return base.CanUseNodeType(groupArchetype, nodeArchetype);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -29,9 +29,10 @@ namespace FlaxEditor.Surface.ContextMenu
|
||||
/// <summary>
|
||||
/// Visject Surface node archetype spawn ability checking delegate.
|
||||
/// </summary>
|
||||
/// <param name="groupArch">The nodes group archetype to check.</param>
|
||||
/// <param name="arch">The node archetype to check.</param>
|
||||
/// <returns>True if can use this node to spawn it on a surface, otherwise false..</returns>
|
||||
public delegate bool NodeSpawnCheckDelegate(NodeArchetype arch);
|
||||
public delegate bool NodeSpawnCheckDelegate(GroupArchetype groupArch, NodeArchetype arch);
|
||||
|
||||
/// <summary>
|
||||
/// Visject Surface parameters getter delegate.
|
||||
@@ -184,7 +185,7 @@ namespace FlaxEditor.Surface.ContextMenu
|
||||
nodes.Clear();
|
||||
foreach (var nodeArchetype in groupArchetype.Archetypes)
|
||||
{
|
||||
if ((nodeArchetype.Flags & NodeFlags.NoSpawnViaGUI) == 0 && info.CanSpawnNode(nodeArchetype))
|
||||
if ((nodeArchetype.Flags & NodeFlags.NoSpawnViaGUI) == 0 && info.CanSpawnNode(groupArchetype, nodeArchetype))
|
||||
{
|
||||
nodes.Add(nodeArchetype);
|
||||
}
|
||||
|
||||
@@ -36,13 +36,13 @@ namespace FlaxEditor.Surface
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public override bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
if (nodeArchetype.Title == "Function Input" ||
|
||||
nodeArchetype.Title == "Function Output")
|
||||
return true;
|
||||
|
||||
return base.CanUseNodeType(nodeArchetype);
|
||||
return base.CanUseNodeType(groupArchetype, nodeArchetype);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -33,9 +33,9 @@ namespace FlaxEditor.Surface
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public override bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
return (nodeArchetype.Flags & NodeFlags.MaterialGraph) != 0 && base.CanUseNodeType(nodeArchetype);
|
||||
return (nodeArchetype.Flags & NodeFlags.MaterialGraph) != 0 && base.CanUseNodeType(groupArchetype, nodeArchetype);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -35,13 +35,13 @@ namespace FlaxEditor.Surface
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public override bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
if (nodeArchetype.Title == "Function Input" ||
|
||||
nodeArchetype.Title == "Function Output")
|
||||
return true;
|
||||
|
||||
return base.CanUseNodeType(nodeArchetype);
|
||||
return base.CanUseNodeType(groupArchetype, nodeArchetype);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -87,9 +87,9 @@ namespace FlaxEditor.Surface
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public override bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
return (nodeArchetype.Flags & NodeFlags.ParticleEmitterGraph) != 0 && base.CanUseNodeType(nodeArchetype);
|
||||
return (nodeArchetype.Flags & NodeFlags.ParticleEmitterGraph) != 0 && base.CanUseNodeType(groupArchetype, nodeArchetype);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -254,7 +254,7 @@ namespace FlaxEditor.Surface
|
||||
throw new InvalidOperationException("Unknown node type.");
|
||||
|
||||
// Validate given node type
|
||||
if (!CanUseNodeType(nodeArchetype))
|
||||
if (!CanUseNodeType(groupArchetype, nodeArchetype))
|
||||
continue;
|
||||
|
||||
// Create
|
||||
|
||||
@@ -520,9 +520,10 @@ namespace FlaxEditor.Surface
|
||||
/// <summary>
|
||||
/// Determines whether the specified node archetype can be used in the surface.
|
||||
/// </summary>
|
||||
/// <param name="groupArchetype">The nodes group archetype.</param>
|
||||
/// <param name="nodeArchetype">The node archetype.</param>
|
||||
/// <returns>True if can use this node archetype, otherwise false.</returns>
|
||||
public virtual bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public virtual bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
return (nodeArchetype.Flags & NodeFlags.NoSpawnViaPaste) == 0;
|
||||
}
|
||||
|
||||
@@ -361,7 +361,7 @@ namespace FlaxEditor.Surface
|
||||
var flags = nodeArchetype.Flags;
|
||||
nodeArchetype.Flags &= ~NodeFlags.NoSpawnViaGUI;
|
||||
nodeArchetype.Flags &= ~NodeFlags.NoSpawnViaPaste;
|
||||
if (_surface != null && !_surface.CanUseNodeType(nodeArchetype))
|
||||
if (_surface != null && !_surface.CanUseNodeType(groupArchetype, nodeArchetype))
|
||||
{
|
||||
nodeArchetype.Flags = flags;
|
||||
Editor.LogWarning("Cannot spawn given node type. Title: " + nodeArchetype.Title);
|
||||
|
||||
@@ -532,9 +532,9 @@ namespace FlaxEditor.Surface
|
||||
public override bool CanSetParameters => true;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanUseNodeType(NodeArchetype nodeArchetype)
|
||||
public override bool CanUseNodeType(GroupArchetype groupArchetype, NodeArchetype nodeArchetype)
|
||||
{
|
||||
return (nodeArchetype.Flags & NodeFlags.VisualScriptGraph) != 0 && base.CanUseNodeType(nodeArchetype);
|
||||
return (nodeArchetype.Flags & NodeFlags.VisualScriptGraph) != 0 && base.CanUseNodeType(groupArchetype, nodeArchetype);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
Reference in New Issue
Block a user