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

#pragma once

#include "ISCW_UK2Node_FunctionEntry.h"
#include "SCW_UK2Node_FunctionTerminator.h"

class UK2Node_FunctionEntry;

namespace Sourcify
{
	class SCW_UK2Node_FunctionEntry : public SCW_UK2Node_FunctionTerminator, public virtual ISCW_UK2Node_FunctionEntry
	{
	public:
		SCW_UK2Node_FunctionEntry(UK2Node_FunctionEntry* InK2Node_FunctionEntry);

		ISCW_UEdGraphNodePtr AsUEdGraphNode() const override;
		
		ISCW_UK2Node_FunctionTerminatorPtr AsUK2Node_FunctionTerminator() const override;

		bool GetCanRenameNode() const override;

		vector<ISCW_FBPVariableDescriptionPtr> GetLocalVariables() const override;

		void SetExtraFlags(int32_t InFlags) override;

		UK2Node_FunctionEntry* ToUK2Node_FunctionEntry() const;

	protected:
		UK2Node_FunctionEntry* K2Node_FunctionEntry;
	};
} // namespace Sourcify