-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlayerView.h
142 lines (107 loc) · 4.14 KB
/
PlayerView.h
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// RAVEN BEGIN
// bdube: note that this file is no longer merged with Doom3 updates
//
// MERGE_DATE 07/07/2004
#ifndef __GAME_PLAYERVIEW_H__
#define __GAME_PLAYERVIEW_H__
/*
===============================================================================
Player view.
===============================================================================
*/
// screenBlob_t are for the on-screen damage claw marks, etc
typedef struct {
const idMaterial * material;
float x, y, w, h;
float s1, t1, s2, t2;
int finishTime;
int startFadeTime;
float driftAmount;
} screenBlob_t;
#define MAX_SCREEN_BLOBS 8
class idPlayerView {
public:
idPlayerView();
void Save( idSaveGame *savefile ) const;
void Restore( idRestoreGame *savefile );
void SetPlayerEntity( class idPlayer *playerEnt );
void ClearEffects( void );
// RAVEN BEGIN
// jnewquist: Controller rumble
void DamageImpulse( idVec3 localKickDir, const idDict *damageDef, int damage );
// RAVEN END
void WeaponFireFeedback( const idDict *weaponDef );
idAngles AngleOffset( void ) const; // returns the current kick angle
// RAVEN BEGIN
// jnewquist: Controller rumble
float CalculateShake( idAngles &shakeAngleOffset ) const;
// RAVEN END
// RAVEN BEGIN
// jscott: for screen shake
void ShakeOffsets( idVec3 &shakeOffset, idAngles &shakeAngleOffset, const idBounds bounds ) const;
// RAVEN END
// adds little entities to the renderer for local blood blobs, etc
// this may involve rendering to a texture and displaying
// that with a warp model or in double vision mode
void RenderPlayerView( idUserInterface *hud );
void Fade( idVec4 color, int time );
void Flash( idVec4 color, int time );
void AddBloodSpray( float duration );
// temp for view testing
void EnableBFGVision( bool b ) { bfgVision = b; };
// RAVEN BEGIN
// jscott: accessors required for the fx system
void SetDoubleVisionParms( float time, float scale ) { dvFinishTime = SEC2MS( time ); dvScale = scale; }
void SetShakeParms( float time, float scale ) { shakeFinishTime = SEC2MS( time ); shakeScale = scale; }
void SetTunnelParms( float time, float scale ) { tvStartTime = gameLocal.time; tvFinishTime = tvStartTime + time; tvScale = 1.0f / scale; }
// RAVEN END
private:
// RAVEN BEGIN
// AReis: Modified SingleView() signature to include renderFlags variable.
void SingleView( idUserInterface *hud, const renderView_t *view, int renderFlags = RF_NORMAL );
// RAVEN END
void DoubleVision( idUserInterface *hud, const renderView_t *view, int offset );
void BerserkVision( idUserInterface *hud, const renderView_t *view );
void InfluenceVision( idUserInterface *hud, const renderView_t *view );
void ScreenFade();
screenBlob_t * GetScreenBlob();
screenBlob_t screenBlobs[MAX_SCREEN_BLOBS];
int dvFinishTime; // double vision will be stopped at this time
const idMaterial * dvMaterial; // material to take the double vision screen shot
// RAVEN BEGIN
// jscott: to make double vision work with alpha components
const idMaterial * dvMaterialBlend;
// jscott: for effects
float dvScale;
// RAVEN END
int kickFinishTime; // view kick will be stopped at this time
idAngles kickAngles;
bool bfgVision; //
const idMaterial * tunnelMaterial; // health tunnel vision
const idMaterial * armorMaterial; // armor damage view effect
// RAVEN BEGIN
// bdube: not using these
// const idMaterial * berserkMaterial; // berserk effect
// const idMaterial * irGogglesMaterial; // ir effect
const idMaterial * bloodSprayMaterial; // blood spray
// const idMaterial * bfgMaterial; // when targeted with BFG
// RAVEN END
float lastDamageTime; // accentuate the tunnel effect for a while
// RAVEN BEGIN
// jscott: for effects
float shakeFinishTime;
float shakeScale;
float tvScale;
int tvFinishTime;
int tvStartTime;
// RAVEN END
idVec4 fadeColor; // fade color
idVec4 fadeToColor; // color to fade to
idVec4 fadeFromColor; // color to fade from
float fadeRate; // fade rate
int fadeTime; // fade time
idPlayer * player;
renderView_t view;
};
#endif /* !__GAME_PLAYERVIEW_H__ */
// RAVEN END