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

#pragma once

#include "glmAbstractTargetProvider.h"

namespace glm
{
class Entity;

// Constant Target Provider
class GLM_SDK_API StaticTargetProvider : public AbstractTargetProvider
{
  public:
    GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation);

    typedef SmartPointer<StaticTargetProvider> SP;

    // Constant target (can be updated by external)
    Vector3 _target;
    Quaternion _targetOrientation;

    StaticTargetProvider(const Vector3& target = Vector3(0, 0, 0), const Quaternion& targetOrientation = Quaternion::getIdentity());
    virtual ~StaticTargetProvider();

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