/**
 * Copyright 2022-2025 Theai, Inc. dba Inworld AI
 */

#pragma once

#include "Modules/ModuleManager.h"

#include <EdGraphUtilities.h>
#include <IAssetTools.h>

INWORLDRUNTIMEEDITOR_API DECLARE_LOG_CATEGORY_EXTERN(LogInworldRuntimeEditor, Log, All);

class INWORLDRUNTIMEEDITOR_API FInworldRuntimeEditorModule : public IModuleInterface
{
public:
	/** IModuleInterface implementation */
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;

private:
	void GraphEditor_Startup();
	void GraphEditor_Shutdown();
	static void MenuRegistration();

private:
	TSharedPtr<FGraphPanelNodeFactory> GraphPanelNodeFactory_InworldGraph;
	TArray<TSharedPtr<IAssetTypeActions>> CreatedAssetTypeActions;
	EAssetTypeCategories::Type InworldAssetCategoryBit;
	FDelegateHandle OnInworldAssetsPreSaveHandle;
	FDelegateHandle OnInworldEmitTrackingEventHandle;
};
