umn-drone / project / libs / transit / src / Beeline.cc
Beeline.cc
Raw
#include "Beeline.h"

Beeline::Beeline(Vector3 pos_, Vector3 des_) {
    pos = pos_;
    des = des_;
}

bool Beeline::IsCompleted(){
    return (des - lastPos).Magnitude()<1.0;
}

void Beeline::Move(IEntity* entity, double dt){
    Vector3 currentPos = entity->GetPosition();
    Vector3 dir = (des - currentPos).Unit();
    float speed = entity->GetSpeed(); 
    currentPos = currentPos + dir * speed * dt;
    lastPos = currentPos;
    entity->SetPosition(currentPos);
    entity->SetDirection(dir);
}

Vector3 Beeline::GetPos() {
    return pos;
}

Vector3 Beeline::GetDes() {
    return des;
}