Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/environments/mapped_water.h @ 8730

Last change on this file since 8730 was 8719, checked in by bensch, 18 years ago

merged the water branche back. conflicts resolved in favour of the trunk

File size: 2.6 KB
Line 
1/*!
2 * @file mapped_water.h
3 *  worldentity for flat, cool looking, mapped water
4*/
5/*! example input in .oxw file with the standard values
6<MappedWater>
7  <waterpos>0,0,0</waterpos>
8  <watersize>100,100</watersize>
9  <wateruv>9</wateruv><!-- size of the waves -->
10  <waterflow>0.08</waterflow>
11  <lightpos>0,10,0</lightpos>
12  <waterangle>0</waterangle>
13  <normalmapscale>0.25</normalmapscale><!-- you won't see a big differnce if you change that -->
14</MappedWater>
15*/
16
17
18#ifndef _MAPPED_WATER_H
19#define _MAPPED_WATER_H
20
21#include "world_entity.h"
22#include "material.h"
23#include "shader.h"
24
25
26class MappedWater : public WorldEntity
27{
28public:
29  MappedWater(const TiXmlElement* root = NULL);
30  virtual ~MappedWater();
31
32  void loadParams(const TiXmlElement* root);
33
34  void draw() const;
35  void tick(float dt);
36
37  // function to prepare renderpaths for creation of refleaction and reflaction textures
38  void activateReflection();
39  void deactivateReflection();
40  void activateRefraction();
41  void deactivateRefraction();
42
43  // functions to set parameters for the water, usually they're called through loadparam
44  void setLightPos(float x, float y, float z) { this->lightPos = Vector(x,y,z); };
45  void setWaterPos(float x, float y, float z) { this->waterPos = Vector(x,y,z); };
46  void setWaterSize(float x, float z) { this->xWidth = x; this->zWidth = z; };
47  void setWaterAngle(float angle) { this->waterAngle = angle; };
48  void setWaterUV(float uv) { this->waterUV = uv; };
49  void setWaterFlow(float flow) { this->waterFlow = flow; };
50  void setNormalMapScale(float scale) { this->kNormalMapScale = scale; };
51
52private:
53  void initParams();
54  void initTextures();
55  void initShaders();
56
57private:
58  Vector              waterPos;               //!< position of the water
59  float               xWidth, zWidth;         //!< size of the water quad
60  Vector              lightPos;               //!< position of the light that is used to render the reflection
61  float               waterAngle;             //!< defines how much the water will be turned around the point waterPos
62
63  float               move;                   //!< textures coords, speeds, positions for the shaded textures....
64  float               move2;
65  float               waterUV;                //!< size of the waves
66  float               waterFlow;              //!< speed of the water
67  float               normalUV;
68  float               kNormalMapScale;
69
70  int                 textureSize;            //!< height and width of the texture
71  Material            mat;
72  Shader*             shader;
73  Shader::Uniform*    cam_uni;                //!< uniform that is used for the camera position
74};
75
76#endif
Note: See TracBrowser for help on using the repository browser.