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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef FLYING_PIECE_H
#define FLYING_PIECE_H
#if !defined(USE_MMGR) && !(defined(USE_GML) && GML_ENABLE_SIM)
#include "System/mmgr.h"
#include "System/MemPool.h"
#endif
#include "System/float3.h"
class CVertexArray;
struct S3DOPrimitive;
struct S3DOPiece;
struct SS3OVertex;
struct FlyingPiece {
#if !defined(USE_MMGR) && !(defined(USE_GML) && GML_ENABLE_SIM)
inline void* operator new(size_t size) { return mempool.Alloc(size); }
inline void operator delete(void* p, size_t size) { mempool.Free(p, size); }
#endif
public:
FlyingPiece(int team, const float3& pos, const float3& speed, const S3DOPiece* _object, const S3DOPrimitive* piece)
{
Init(team, pos, speed);
//! 3D0
prim = piece;
object = _object;
}
FlyingPiece(int team, const float3& pos, const float3& speed, int textureType, SS3OVertex* _verts)
{
Init(team, pos, speed);
//! S30
verts = _verts;
texture = textureType;
}
~FlyingPiece();
void Draw(int modelType, size_t* lastTeam, size_t* lastTex, CVertexArray* va);
public:
const S3DOPrimitive* prim;
const S3DOPiece* object;
SS3OVertex* verts;
size_t texture;
float3 pos;
float3 speed;
float3 rotAxis;
float rot;
float rotSpeed;
size_t team;
private:
void Init(int _team, const float3& _pos, const float3& _speed);
};
#endif // FLYING_PIECE_H
|