Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 8628 was 8628, checked in by stefalie, 18 years ago

water: cleanup and waste of time, but i got nothing better to do ;-)

File size: 2.7 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{
28  public:
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
52  private:
53    void initParams();
54    void initTextures();
55    void initShaders();
56
57  private:
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.