Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/Samples/Water/include/WaterMesh.h @ 3

Last change on this file since 3 was 3, checked in by anonymous, 17 years ago

=update

File size: 1.9 KB
Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2006 Torus Knot Software Ltd
8Also see acknowledgements in Readme.html
9
10You may use this sample code for anything you like, it is not covered by the
11LGPL like the rest of the engine.
12-----------------------------------------------------------------------------
13*/
14
15
16#ifndef _WATER_MESH_H_
17#define _WATER_MESH_H_
18
19#include "OgrePlatform.h"
20#include "Ogre.h"
21
22using namespace Ogre ;
23
24class WaterMesh
25{
26private:
27        MeshPtr mesh ;
28        SubMesh *subMesh ; 
29        float *vertexBuffers[3] ; // we need 3 vertex buffers
30        int currentBuffNumber ;
31        int complexity ;
32        String meshName ;
33        int numFaces ;
34        int numVertices ;
35        Vector3* vNormals ;
36
37        HardwareVertexBufferSharedPtr posVertexBuffer ;
38        HardwareVertexBufferSharedPtr normVertexBuffer ;
39        HardwareVertexBufferSharedPtr texcoordsVertexBuffer ;
40        HardwareIndexBufferSharedPtr indexBuffer ;
41
42        Real lastTimeStamp ;
43        Real lastAnimationTimeStamp;
44        Real lastFrameTime ;
45       
46        void calculateFakeNormals();
47        void calculateNormals();
48public:
49        WaterMesh(const String& meshName, Real planeSize, int complexity) ;
50   
51    virtual ~WaterMesh ();
52
53
54        /** "pushes" a mesh at position [x,y]. Note, that x,y are float, hence
55        *       4 vertices are actually pushed
56        *       @note
57        *               This should be replaced by push with 'radius' parameter to simulate
58        *               big objects falling into water
59        */
60        void push(Real x, Real y, Real depth, bool absolute=false) ;
61
62        /** gets height at given x and y, takes average value of the closes nodes */
63        Real getHeight(Real x, Real y);
64
65        /** updates mesh */
66        void updateMesh(Real timeSinceLastFrame) ;
67       
68        Real PARAM_C ; // ripple speed
69        Real PARAM_D ; // distance
70        Real PARAM_U ; // viscosity
71        Real PARAM_T ; // time
72        bool useFakeNormals ;
73} ;
74
75#endif
Note: See TracBrowser for help on using the repository browser.