Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/water/src/world_entities/environments/mapped_water.h @ 8632

Last change on this file since 8632 was 8630, checked in by stefalie, 19 years ago

water: one bug left

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.