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
|
#ifndef PROJECTILE_H
#define PROJECTILE_H
#include "Rendering/GL/myGL.h"
// Projectile.h: interface for the CProjectile class.
//
//////////////////////////////////////////////////////////////////////
#ifdef _MSC_VER
#pragma warning(disable:4291)
#endif
class CProjectileHandler;
class CBuilding;
#include "ExplosionGenerator.h"
#include "Sim/Units/UnitHandler.h"
class CUnit;
class CFeature;
class CVertexArray;
struct S3DModel;
#define COLLISION_NOFRIENDLY 1
#define COLLISION_NOFEATURE 2
#define COLLISION_NONEUTRAL 4
class CProjectile: public CExpGenSpawnable
{
public:
CR_DECLARE(CProjectile);
static bool inArray;
static CVertexArray* va;
static int DrawArray();
virtual void Draw();
virtual void DrawOnMinimap(CVertexArray& lines, CVertexArray& points);
CProjectile(); // default constructor is needed for creg
CProjectile(const float3& pos, const float3& speed, CUnit* owner, bool isSynced, bool isWeapon, bool isPiece GML_PARG_H);
virtual void Collision();
virtual void Collision(CUnit* unit);
virtual void Collision(CFeature* feature);
virtual ~CProjectile();
virtual void Update();
virtual void Init(const float3& pos, CUnit* owner GML_PARG_H);
bool synced; //! is this projectile part of the simulation?
bool weapon; //! is this a weapon projectile? (true implies synced true)
bool piece; //! is this a piece projectile? (true implies synced true)
bool checkCol;
bool deleteMe;
bool castShadow;
unsigned int collisionFlags;
void UpdateDrawPos();
float3 drawPos;
#if defined(USE_GML) && GML_ENABLE_SIM
unsigned lastProjUpdate;
#endif
inline CUnit* owner() const {
return uh->units[ownerId];
}
float3 speed;
float mygravity;
virtual void DrawCallback(void);
virtual void DrawUnitPart(void);
virtual void DrawS3O() { DrawUnitPart(); }
S3DModel* s3domodel;
float tempdist; // temp distance used for sorting when rendering
private:
int ownerId;
};
#endif /* PROJECTILE_H */
|