#ifndef MAT_WATER_H #define MAT_WATER_H #include class App; class Water : public Ogre::FrameListener, Ogre::RenderTargetListener { Ogre::SceneManager *mScnMgr; Ogre::SceneNode *mWaterNode, *mCameraNode; Ogre::Vector3 mCameraPosition; Ogre::Camera *mCamera; Ogre::Plane mWaterPlane; public: Water(); virtual ~Water(); void createWater(Ogre::Camera *camera); void updateWater(float delta); bool frameEnded(const Ogre::FrameEvent &evt) override; bool frameRenderingQueued(const Ogre::FrameEvent &evt) override; void preRenderTargetUpdate(const Ogre::RenderTargetEvent &evt) override; void postRenderTargetUpdate(const Ogre::RenderTargetEvent &evt) override; void add_submerged_entity(Ogre::Entity *ent); void add_surface_entity(Ogre::Entity *ent); }; #endif