1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef LASER_PROJECTILE_H
#define LASER_PROJECTILE_H
#include "WeaponProjectile.h"
class CLaserProjectile : public CWeaponProjectile
{
CR_DECLARE_DERIVED(CLaserProjectile)
public:
// creg only
CLaserProjectile() { }
CLaserProjectile(const ProjectileParams& params);
void Draw(CVertexArray* va) override;
void Update() override;
void Collision(CUnit* unit) override;
void Collision(CFeature* feature) override;
void Collision() override;
int ShieldRepulse(const float3& shieldPos, float shieldForce, float shieldMaxSpeed) override;
int GetProjectilesCount() const override;
private:
void UpdateIntensity();
void UpdateLength();
void UpdatePos(const float4& oldSpeed);
void CollisionCommon(const float3& oldPos);
private:
float speedf;
float maxLength;
float curLength;
float intensity;
float intensityFalloff;
float midtexx;
/**
* Number of frames the laser had left to expand
* if it impacted before reaching full length.
*/
int stayTime;
float3 color;
float3 color2;
};
#endif /* LASER_PROJECTILE_H */
|