File: FlyingPiece.h

package info (click to toggle)
spring 98.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 41,928 kB
  • ctags: 60,665
  • sloc: cpp: 356,167; ansic: 39,434; python: 12,228; java: 12,203; awk: 5,856; sh: 1,719; xml: 997; perl: 405; php: 253; objc: 194; makefile: 72; sed: 2
file content (84 lines) | stat: -rw-r--r-- 1,755 bytes parent folder | download
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
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */

#ifndef FLYING_PIECE_H
#define FLYING_PIECE_H

#include "System/MemPool.h"

#include "System/float3.h"
#include "System/Matrix44f.h"

class CVertexArray;
struct S3DOPrimitive;
struct S3DOPiece;
struct SS3OVertex;

struct FlyingPiece {
public:
	virtual ~FlyingPiece() {}
	virtual void Draw(size_t* lastTeam, size_t* lastTex, CVertexArray* va) {}

	bool Update();

	size_t GetTeam() const { return team; }
	size_t GetTexture() const { return texture; }

	inline void* operator new(size_t size) { return mempool.Alloc(size); }
	inline void operator delete(void* p, size_t size) { mempool.Free(p, size); }

protected:
	void InitCommon(const float3& _pos, const float3& _speed, int _team);
	void DrawCommon(size_t* lastTeam, CVertexArray* va);

protected:
	CMatrix44f transMat;

	float3 pos;
	float3 speed;
	float3 rotAxis;

	float rotAngle;
	float rotSpeed;

	size_t team;
	size_t texture;
};



struct S3DOFlyingPiece: public FlyingPiece {
public:
	S3DOFlyingPiece(const float3& pos, const float3& speed, int team, const S3DOPiece* _piece, const S3DOPrimitive* _chunk)
	{
		InitCommon(pos, speed, team);

		piece = _piece;
		chunk = _chunk;
	}

	void Draw(size_t* lastTeam, size_t* lastTex, CVertexArray* va);

private:
	const S3DOPiece* piece;
	const S3DOPrimitive* chunk;
};

struct SS3OFlyingPiece: public FlyingPiece {
public:
	~SS3OFlyingPiece();
	SS3OFlyingPiece(const float3& pos, const float3& speed, int team, int textureType, const SS3OVertex* _chunk)
	{
		InitCommon(pos, speed, team);

		chunk = _chunk;
		texture = textureType;
	}

	void Draw(size_t* lastTeam, size_t* lastTex, CVertexArray* va);

private:
	const SS3OVertex* chunk;
};

#endif // FLYING_PIECE_H