Making this work

This commit is contained in:
2025-08-21 10:47:57 +03:00
parent 52de5b16a8
commit d3b2ae30d5
9 changed files with 147 additions and 46 deletions

View File

@@ -2,37 +2,38 @@
#define MAT_WATER_H
#include <Ogre.h>
class App;
class btGhostObject;
class Water : public /* Ogre::FrameListener, */ Ogre::RenderTargetListener {
Ogre::SceneManager *mScnMgr;
Ogre::RenderWindow * mWindow;
Ogre::RenderWindow *mWindow;
Ogre::SceneNode *mWaterNode, *mCameraNode;
Ogre::Vector3 mCameraPosition;
Ogre::Camera *mCamera;
Ogre::Plane mWaterPlane,
mReflectionPlane,
mReflectionClipPlaneAbove,
mReflectionClipPlaneBelow,
mRefractionClipPlaneAbove,
Ogre::Plane mWaterPlane, mReflectionPlane, mReflectionClipPlaneAbove,
mReflectionClipPlaneBelow, mRefractionClipPlaneAbove,
mRefractionClipPlaneBelow;
bool mAbove;
std::vector<Ogre::Entity *> mWaterMeshes;
std::vector<Ogre::Viewport *> mViewports;
// Reflection
Ogre::RenderTexture * mReflectionTexture;
Ogre::Camera * mReflectionCamera;
Ogre::RenderTexture *mReflectionTexture;
Ogre::Camera *mReflectionCamera;
// Refraction
// Ogre::RenderTexture * mRefractionTexture;
Ogre::Camera * mRefractionCamera;
Ogre::Camera *mRefractionCamera;
bool mInRefTexUpdate;
Ogre::Timer mtexture_dump;
void create_cameras();
btGhostObject *mWaterBody;
Ogre::Bullet::DynamicsWorld *mDynWorld;
public:
Water();
virtual ~Water();
void create_textures();
void dump_textures();
void createWater(Ogre::RenderWindow * window, Ogre::Camera *camera);
void createWater(Ogre::RenderWindow *window, Ogre::Camera *camera,
Ogre::Bullet::DynamicsWorld *world);
void init();
void updateWater(float delta);
/* bool frameEnded(const Ogre::FrameEvent &evt) override; */