/***************************************************************************
*                                                                          *
*  Copyright (C) Golaem S.A.  All Rights Reserved.                         *
*                                                                          *
***************************************************************************/

#pragma once

#include "glmSDKAPI.h"
#include "glmAbstractTargetProvider.h"

namespace glm
{
    class PathContext;
    class TargetRandomizer;
    class Entity;
    class NavigationData;
    class RandomNumberGenerator;
    class AbstractBehavior;

    // Crowd random target provider (used on goto behaviors)
    class GLM_SDK_API RandomTargetProvider : public AbstractTargetProvider
    {
    public:
        RandomTargetProvider(PathContext* pathContext = NULL, AbstractBehavior* userBehavior = NULL);
        virtual ~RandomTargetProvider();

        virtual void computeTargets(int64_t index, BehaviorGraph& graph, const Vector3& entityPosition, glm::Array<TargetData>& outTargets, bool force = false) override;

    protected:
        PathContext* _pathContext;
    };
} // namespace glm
