Files
PlanetFleet/missile.cpp
T
2021-11-01 11:49:56 +02:00

32 lines
1.0 KiB
C++
Executable File

#include <util.h>
#include <model.h>
#include "missile.h"
using namespace vb01;
namespace battleship{
Missile::Missile(Unit *unit, Node *node, Vector3 *target, Vector3 pos, Vector3 dir, Vector3 left, Vector3 up, int id, int weaponTypeId, int weaponId) :
Projectile(unit, node, pos, dir, left, up, id, weaponTypeId, weaponId) {
this->target = target;
this->type = (MissileType)weaponId;
this->initTime = getTime();
}
void Missile::update() {
Projectile::update();
pos = pos + dirVec * speed;
node->setPosition(pos);
float angle = dirVec.getAngleBetween(*target - pos);
Vector3 axis = dirVec.cross(*target - pos).norm();
if(rotationSpeed / 180 * PI < angle){
Quaternion rotQuat = Quaternion(rotationSpeed / 180 * PI, axis);
orientProjectile(rotQuat * dirVec);
}
if(!exploded && getTime() - initTime > selfDistructTime)
Projectile::explode(nullptr);
}
}