class AAnalyticsManager

#include <AnalyticsManager.h>

class AAnalyticsManager: public AActor
{
public:
    // fields

    int CurrentSubActionInitialized =-1;
    TMap<FString, float> Results;
    TMap<FString, int> Errors;
    TMap<int, TArray<UScoringFactor*>> ComponentsReference;
    TMap<int, TArray<FScoringFactorData>> currentActionStats;
    float CurrentScore;
    int LastIdx =0;
    UActionProperties* actionProperties;
    TMap<int, TArray<UScoringFactor*>> CustomScoringFactors;

    // methods

    float GetWeightFromEnum(EFactorImportance enumWeight);
    virtual void Tick(float DeltaTime);
    void InitializeAction(class ABasePrototype* ActionInstance, const FString& Name);

    void Perform(
        const FString& ActionName,
        ABasePrototype* Action,
        bool skipped = false
        );

    void SubPerform(int Index);
    void Undo(ABasePrototype* Action);
    void DebugLog();

    void AddScoringFactor(
        TSubclassOf<class UScoringFactor> ScoringFactor,
        int SubAction = 0
        );
};