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

#pragma once

#include "CoreMinimal.h"
#include "Modules/ModuleManager.h"

/** Log category for Inworld Character plugin messages and debugging */
INWORLDCHARACTER_API DECLARE_LOG_CATEGORY_EXTERN(LogInworldCharacter, Log, All);

/**
 * @class FInworldCharacter
 * @brief Main module class for the Inworld Character plugin.
 *
 * This class manages the lifecycle of the Inworld Character plugin, providing
 * character management functionality including conversation systems, character
 * profiles, relationships, emotions, and goal-based interactions. It handles
 * module initialization and cleanup during engine startup and shutdown.
 */
class FInworldCharacter : public IModuleInterface
{
public:
	/**
	 * @brief Called when the module is being loaded into memory.
	 *
	 * This function performs initialization tasks for the Inworld Character plugin,
	 * setting up subsystems and registering necessary components.
	 */
	virtual void StartupModule() override;

	/**
	 * @brief Called when the module is being unloaded from memory.
	 *
	 * This function performs cleanup tasks for the Inworld Character plugin,
	 * releasing resources and unregistering components before engine shutdown.
	 */
	virtual void ShutdownModule() override;
};
