// Copyright (c) 2024 Codemongous LLC. All Rights Reserved.

#pragma once

#include "ISCW_UEdGraphSchema.h"
#include "SCW_UObject.h"

class UEdGraphSchema;

namespace Sourcify
{
	class SCW_UEdGraphSchema : public SCW_UObject, public virtual ISCW_UEdGraphSchema
	{
	public:
		SCW_UEdGraphSchema(UEdGraphSchema* InEdGraphSchema);

		UEdGraphSchema* ToUEdGraphSchema() const;

		ISCW_UEdGraphSchemaPtr ToUEdGraphSchemaPtr() override;
		ISCW_UEdGraphSchemaConstPtr ToUEdGraphSchemaPtr() const override;

		bool TryCreateConnection(ISCW_UEdGraphPinPtr A, ISCW_UEdGraphPinPtr B) const override;

		void SplitPin(ISCW_UEdGraphPinPtr Pin, bool bNotify = true) const override;
		void RecombinePin(ISCW_UEdGraphPinPtr Pin) const override;

	protected:
		UEdGraphSchema* EdGraphSchema;
	};
} // namespace Sourcify