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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef GROUND_FLASH_H
#define GROUND_FLASH_H
#include "Sim/Projectiles/ExplosionGenerator.h"
struct AtlasedTexture;
struct GroundFXTexture;
class CColorMap;
class CVertexArray;
class CGroundFlash : public CExpGenSpawnable
{
public:
CR_DECLARE(CGroundFlash);
CGroundFlash(const float3& p);
CGroundFlash();
virtual ~CGroundFlash() {}
virtual void Draw() {}
/// @return false when it should be deleted
virtual bool Update() { return false; }
virtual void Init(const float3& pos, CUnit* owner) {}
float size;
bool depthTest;
bool depthMask;
static CVertexArray* va;
};
class CStandardGroundFlash : public CGroundFlash
{
public:
CR_DECLARE(CStandardGroundFlash);
CStandardGroundFlash();
CStandardGroundFlash(const float3& pos, float circleAlpha, float flashAlpha, float flashSize, float circleSpeed, float ttl, const float3& color = float3(1.0f, 1.0f, 0.7f));
void Draw();
/// @return false when it should be deleted
bool Update();
float3 side1;
float3 side2;
float flashSize;
float circleSize;
float circleGrowth;
float circleAlpha;
float flashAlpha;
float flashAge;
float flashAgeSpeed;
float circleAlphaDec;
unsigned char color[3];
int ttl;
};
/**
* A simple groundflash, using a texture and a colormap, used in
* the custom explosion-generator (unlike CStandardGroundFlash)
*/
class CSimpleGroundFlash : public CGroundFlash
{
public:
CR_DECLARE(CSimpleGroundFlash);
CSimpleGroundFlash();
void Init(const float3& explosionPos, CUnit* owner);
void Draw();
/// @return false when it should be deleted
bool Update();
float3 side1;
float3 side2;
float sizeGrowth;
int ttl;
float age, agerate;
CColorMap* colorMap;
GroundFXTexture* texture;
};
/**
* A simple groundflash, only creating one quad with specified texture.
* This one also sets alwaysVisible=true, because it is used
* by the seismic effect, so do not use it (or fix it)
* for things that should be affected by LOS.
*/
class CSeismicGroundFlash : public CGroundFlash
{
public:
CR_DECLARE(CSeismicGroundFlash);
CSeismicGroundFlash(const float3& pos, int ttl, int fade, float size, float sizeGrowth, float alpha, const float3& col);
void Draw();
/// @return false when it should be deleted
bool Update();
float3 side1;
float3 side2;
AtlasedTexture* texture;
float sizeGrowth;
float alpha;
int fade;
int ttl;
unsigned char color[4];
};
#endif /* GROUND_FLASH_H */
|