Added separate game file

This commit is contained in:
2025-07-05 06:19:03 +03:00
parent 52d6d31241
commit c72b1cf35e
3 changed files with 911 additions and 48 deletions

View File

@@ -5,6 +5,11 @@
#include <OgreMaterialManager.h>
#include "water.h"
/* TODO: use blender glb model for water shape.
* TODO: Finish main shader
* TODO: Add caustics
* TODO: Add below shader */
static const uint32_t SUBMERGED_MASK = 0x0F0;
static const uint32_t SURFACE_MASK = 0x00F;
static const uint32_t WATER_MASK = 0xF00;
@@ -30,10 +35,6 @@ Water::~Water()
mScnMgr->destroySceneNode(mWaterNode);
if(mReflectionTexture)
mReflectionTexture->removeAllListeners();
#if 0
if(mRefractionTexture)
mRefractionTexture->removeAllListeners();
#endif
}
void Water::create_cameras()
@@ -55,8 +56,6 @@ void Water::create_cameras()
reflectionViewport->setAutoUpdated(false);
mViewports.push_back(reflectionViewport);
// mRefractionTexture->addListener(this);
#if 1
mRefractionCamera = mScnMgr->createCamera("RefractionCamera");
mCamera->getParentSceneNode()->attachObject(mRefractionCamera);
mRefractionCamera->setAspectRatio(mCamera->getAspectRatio());
@@ -71,7 +70,6 @@ void Water::create_cameras()
refractionViewport->setSkiesEnabled(false);
refractionViewport->setAutoUpdated(false);
mViewports.push_back(refractionViewport);
#endif
}
void Water::create_textures()
@@ -86,17 +84,6 @@ void Water::create_textures()
mReflectionTexture = reflectionTexture->getBuffer()->getRenderTarget();
mReflectionTexture->setAutoUpdated(false);
#if 0
Ogre::TexturePtr refractionTexture = Ogre::TextureManager::getSingleton().createManual(
"RefractionTexture",
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
Ogre::TEX_TYPE_2D, 512, 512,
0,
Ogre::PF_R8G8B8A8,
Ogre::TU_RENDERTARGET);
mRefractionTexture = refractionTexture->getBuffer()->getRenderTarget();
#endif
}
void Water::init()
@@ -127,21 +114,9 @@ void Water::init()
auto mat = Ogre::MaterialManager::getSingleton().getByName("Water/Above");
mat->load();
mat->setReceiveShadows(false);
#if 0
mat->getTechnique(0)
->getPass(0)
->getTextureUnitState(0)
->setProjectiveTexturing(true, mCamera);
#endif
auto mat2 = Ogre::MaterialManager::getSingleton().getByName("Water/Below");
mat2->load();
mat2->setReceiveShadows(false);
#if 0
mat2->getTechnique(0)
->getPass(0)
->getTextureUnitState(0)
->setProjectiveTexturing(true, mCamera);
#endif
for (i = 0; i < (int)sizeof(positions) / (int)sizeof(positions[0]);
i++) {
@@ -158,9 +133,6 @@ void Water::init()
water_lod1->setVisibilityFlags(WATER_MASK);
mWaterMeshes.push_back(water_lod1);
}
/*
Ogre::Root::getSingleton().addFrameListener(this);
*/
}
void Water::createWater(Ogre::RenderWindow * window, Ogre::Camera *camera)
@@ -202,27 +174,14 @@ void Water::updateWater(float delta)
mWaterMeshes[i]->setVisible(false);
for (i = 0; i < mViewports.size(); i++)
mViewports[i]->update();
// mReflectionTexture->update();
for (i = 0; i < mWaterMeshes.size(); i++)
mWaterMeshes[i]->setVisible(true);
}
/*
bool Water::frameEnded(const Ogre::FrameEvent &evt)
{
updateWater(evt.timeSinceLastFrame);
return true;
}
bool Water::frameRenderingQueued(const Ogre::FrameEvent &evt)
{
return FrameListener::frameRenderingQueued(evt);
}
*/
void Water::preRenderTargetUpdate(const Ogre::RenderTargetEvent &evt)
{
int i;
if (evt.source == mReflectionTexture /*|| evt.source == mRefractionTexture */) {
if (evt.source == mReflectionTexture) {
for (i = 0; i < mWaterMeshes.size(); i++)
mWaterMeshes[i]->setVisible(false);
if (evt.source == mReflectionTexture)
@@ -254,5 +213,4 @@ void Water::add_surface_entity(Ogre::Entity *ent)
void Water::dump_textures()
{
mReflectionTexture->writeContentsToFile("Reflection.png");
// mRefractionTexture->writeContentsToFile("Refraction.png");
}