void Ship::Shoot(const Vector2D &direction, const Resource_Projectile_t &projectile, Vector2D offset) { Projectile *p = (Projectile*)GetGameContext()->CreateEntityNoSpawn("projectile"); Q_ASSERT(p != nullptr); float volume = IsPlayer() ? 0.5f : 0.3f; offset.Rotate(GetAngle()); p->SetOwner(this); p->Teleport(GetOrigin() + offset); p->SetAngle(direction.Angle()); p->Init(projectile, IsPlayer()); p->Launch(direction, volume); if (projectile.fire_rate > 0.0f) shootDelay = GetGameContext()->GetGameTime() + 1.0f / projectile.fire_rate; GetGameContext()->SpawnEntity(p); }
void Player::Fire(Projectile &ar_oActiveWeapon) { ar_oActiveWeapon.Launch(*this); }