Editor/ShaderGraphPlus/ProjectConverter/Node Core/SubgraphInputNodeConvert.cs
using VanillaGraph = Editor.ShaderGraph;
using VanillaNodes = Editor.ShaderGraph.Nodes;
using ShaderGraphBaseNode = Editor.ShaderGraph.BaseNode;

namespace ShaderGraphPlus.Internal;

// TODO

/*
internal class SubgraphInputNodeConvert : BaseNodeConvert
{
	public override Type NodeTypeToConvert => typeof( VanillaGraph.SubgraphInput );

	public override IEnumerable<BaseNodePlus> Convert( ProjectConverter converter, ShaderGraphBaseNode oldNode )
	{
		var newNodes = new List<BaseNodePlus>();
		var oldSubgraphInputNode = oldNode as VanillaGraph.SubgraphInput;

		var newNode = new SubgraphInput();
		newNode.Identifier = oldNode.Identifier;
		newNode.Position = oldNode.Position;
		newNode.InputName = oldSubgraphInputNode.InputName;
		newNode.InputDescription = oldSubgraphInputNode.InputDescription;
		newNode.InputType = oldSubgraphInputNode.InputType switch
		{
			VanillaGraph.InputType.Float => SubgraphPortType.Float,
			VanillaGraph.InputType.Float2 => SubgraphPortType.Vector2,
			VanillaGraph.InputType.Float3 => SubgraphPortType.Vector3,
			VanillaGraph.InputType.Color => SubgraphPortType.Color,
			_ => throw new NotImplementedException( $"Unknown InputType \"{oldSubgraphInputNode.InputType}\"" ),
		};
		newNode.DefaultData = oldSubgraphInputNode.InputType switch
		{
			VanillaGraph.InputType.Float => oldSubgraphInputNode.DefaultFloat,
			VanillaGraph.InputType.Float2 => oldSubgraphInputNode.DefaultFloat2,
			VanillaGraph.InputType.Float3 => oldSubgraphInputNode.DefaultFloat3,
			VanillaGraph.InputType.Color => oldSubgraphInputNode.DefaultColor,
			_ => throw new NotImplementedException( $"Unknown InputType \"{oldSubgraphInputNode.InputType}\"" ),
		};

		newNode.IsRequired = oldSubgraphInputNode.IsRequired;
		newNode.PortOrder = oldSubgraphInputNode.PortOrder;

		switch ( newNode.InputType )
		{
			case SubgraphPortType.Float:
				converter.AddBlackboardParameter( new FloatSubgraphInputParameter()
				{
					Identifier = newNode.ParameterIdentifier,
					Name = newNode.InputName,
					Description = newNode.InputDescription,
					Value = newNode.GetValue<float>(),
					IsRequired = newNode.IsRequired,
					PortOrder = newNode.PortOrder
				} );
				break;
			case SubgraphPortType.Vector2:
				converter.AddBlackboardParameter( new Float2SubgraphInputParameter()
				{
					Identifier = newNode.ParameterIdentifier,
					Name = newNode.InputName,
					Description = newNode.InputDescription,
					Value = newNode.GetValue<Vector2>(),
					IsRequired = newNode.IsRequired,
					PortOrder = newNode.PortOrder
				} );
				break;
			case SubgraphPortType.Vector3:
				converter.AddBlackboardParameter( new Float3SubgraphInputParameter()
				{
					Identifier = newNode.ParameterIdentifier,
					Name = newNode.InputName,
					Description = newNode.InputDescription,
					Value = newNode.GetValue<Vector3>(),
					IsRequired = newNode.IsRequired,
					PortOrder = newNode.PortOrder
				} );
				break;
			case SubgraphPortType.Color:
				converter.AddBlackboardParameter( new ColorSubgraphInputParameter()
				{
					Identifier = newNode.ParameterIdentifier,
					Name = newNode.InputName,
					Description = newNode.InputDescription,
					Value = newNode.GetValue<Color>(),
					IsRequired = newNode.IsRequired,
					PortOrder = newNode.PortOrder
				} );
				break;
		}
		;

		newNodes.Add( newNode );

		return newNodes;
	}
}
*/