Colobot
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Pages
src
graphics
engine
water.h
Go to the documentation of this file.
1
// * This file is part of the COLOBOT source code
2
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
3
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
4
// *
5
// * This program is free software: you can redistribute it and/or modify
6
// * it under the terms of the GNU General Public License as published by
7
// * the Free Software Foundation, either version 3 of the License, or
8
// * (at your option) any later version.
9
// *
10
// * This program is distributed in the hope that it will be useful,
11
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// * GNU General Public License for more details.
14
// *
15
// * You should have received a copy of the GNU General Public License
16
// * along with this program. If not, see http://www.gnu.org/licenses/.
17
23
#pragma once
24
25
26
#include "
common/event.h
"
27
28
#include "
graphics/engine/particle.h
"
29
30
31
class
CSoundInterface
;
32
33
34
// Graphics module namespace
35
namespace
Gfx {
36
37
38
class
CEngine;
39
class
CTerrain;
40
45
struct
WaterLine
46
{
48
49
short
x
, y;
51
52
short
len
;
54
float
px1
, px2, pz;
55
56
WaterLine
()
57
{
58
x
= y = 0;
59
len
= 0;
60
px1
= px2 = pz = 0.0f;
61
}
62
};
63
68
struct
WaterVapor
69
{
70
bool
used;
71
ParticleType
type;
72
Math::Vector
pos;
73
float
delay;
74
float
time;
75
float
last;
76
77
WaterVapor
()
78
{
79
used =
false
;
80
type =
PARTIWATER
;
81
delay = time = last = 0.0f;
82
}
83
};
84
89
enum
WaterType
90
{
92
WATER_NULL
= 0,
94
WATER_TT
= 1,
96
WATER_TO
= 2,
98
WATER_CT
= 3,
100
WATER_CO
= 4,
101
};
102
116
class
CWater
117
{
118
public
:
119
CWater
(
CEngine
* engine);
120
virtual
~
CWater
();
121
122
void
SetDevice(
CDevice
* device);
123
bool
EventProcess(
const
Event
&event);
125
void
Flush
();
127
void
Create
(
WaterType
type1,
WaterType
type2,
const
std::string& fileName,
128
Color
diffuse,
Color
ambient,
float
level,
float
glint,
Math::Vector
eddy);
130
void
DrawBack
();
132
void
DrawSurf
();
133
135
void
SetLevel
(
float
level);
137
float
GetLevel
();
139
float
GetLevel
(
CObject
*
object
);
140
142
143
void
SetLava
(
bool
lava);
144
bool
GetLava();
146
148
void
AdjustEye
(
Math::Vector
&eye);
149
150
protected
:
152
bool
EventFrame
(
const
Event
&event);
154
void
LavaFrame
(
float
rTime);
156
void
AdjustLevel
(
Math::Vector
&pos,
Math::Vector
&norm,
Math::Point
&uv1,
Math::Point
&uv2);
158
bool
GetWater
(
int
x,
int
y);
160
void
CreateLine
(
int
x,
int
y,
int
len);
161
163
void
VaporFlush
();
165
bool
VaporCreate
(
ParticleType
type,
Math::Vector
pos,
float
delay);
167
void
VaporFrame
(
int
i,
float
rTime);
168
169
protected
:
170
CEngine
* m_engine;
171
CDevice
* m_device;
172
CTerrain
* m_terrain;
173
CParticle
* m_particle;
174
CSoundInterface
* m_sound;
175
176
WaterType
m_type[2];
177
std::string m_fileName;
179
float
m_level
;
181
float
m_glint
;
183
Math::Vector
m_eddy
;
185
Color
m_diffuse
;
187
Color
m_ambient
;
188
float
m_time;
189
float
m_lastLava;
190
int
m_subdiv;
191
193
int
m_brickCount
;
195
float
m_brickSize
;
196
197
std::vector<WaterLine> m_lines;
198
std::vector<WaterVapor> m_vapors;
199
200
bool
m_draw;
201
bool
m_lava;
202
Color
m_color;
203
};
204
205
206
}
// namespace Gfx
207
Generated on Sat Jul 5 2014 09:25:03 for Colobot by
1.8.1.2