From 8798f7dd40485bd905e36290169f02d1ecd442fe Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Sat, 14 Jan 2012 18:34:14 -0500 Subject: [PATCH 001/488] Bringing in some of Azathoth's work --- CMakeLists.txt | 1 + apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwrender/water.cpp | 104 ++++++++++++++ apps/openmw/mwrender/water.hpp | 45 +++++++ apps/openmw/mwworld/scene.cpp | 122 +++++------------ files/CMakeLists.txt | 12 ++ files/plugins.cfg.linux | 2 +- files/water/Example_Fresnel.cg | 116 ++++++++++++++++ files/water/Example_FresnelPS.asm | 72 ++++++++++ files/water/GlassFP.cg | 15 +++ files/water/GlassVP.cg | 24 ++++ files/water/Water02.jpg | Bin 0 -> 185893 bytes files/water/caustic_0.png | Bin 0 -> 35147 bytes files/water/perlinvolume.dds | Bin 0 -> 2097280 bytes files/water/water.compositor | 21 +++ files/water/water.material | 217 ++++++++++++++++++++++++++++++ files/water/waves2.dds | Bin 0 -> 262272 bytes 17 files changed, 661 insertions(+), 92 deletions(-) create mode 100644 apps/openmw/mwrender/water.cpp create mode 100644 apps/openmw/mwrender/water.hpp create mode 100644 files/CMakeLists.txt create mode 100644 files/water/Example_Fresnel.cg create mode 100644 files/water/Example_FresnelPS.asm create mode 100644 files/water/GlassFP.cg create mode 100644 files/water/GlassVP.cg create mode 100644 files/water/Water02.jpg create mode 100644 files/water/caustic_0.png create mode 100644 files/water/perlinvolume.dds create mode 100644 files/water/water.compositor create mode 100644 files/water/water.material create mode 100644 files/water/waves2.dds diff --git a/CMakeLists.txt b/CMakeLists.txt index 723d10b347..b3439d1a53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,6 +202,7 @@ link_directories(${Boost_LIBRARY_DIRS} ${OGRE_LIB_DIR}) add_subdirectory( extern/caelum ) add_subdirectory( extern/mygui_3.0.1 ) +add_subdirectory( files/) # Make sure that certain libraries are used as static libraries # This is in effect turns off __declspec (dllexport) for windows diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index e17a2cb25f..f1d940253d 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -16,7 +16,7 @@ set(GAME_HEADER source_group(game FILES ${GAME} ${GAME_HEADER}) add_openmw_dir (mwrender - renderingmanager debugging sky player npcs creatures objects renderinginterface + renderingmanager debugging sky player npcs creatures objects renderinginterface water ) add_openmw_dir (mwinput diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp new file mode 100644 index 0000000000..acfda488bc --- /dev/null +++ b/apps/openmw/mwrender/water.cpp @@ -0,0 +1,104 @@ +#include "water.hpp" + +namespace MWRender { + Water::Water (Ogre::Camera *camera) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) { + + try { + Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + } catch(...) { + } + mIsUnderwater = false; + + mCamera->addListener(this); + + + for (unsigned int i = 0; i < 2; i++) { + Ogre::TexturePtr tex = Ogre::TextureManager::getSingleton().createManual(i == 0 ? "refraction" : "reflection", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D, 512, 512, 0, Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET); + + Ogre::RenderTarget* rtt = tex->getBuffer()->getRenderTarget(); + rtt->addViewport(mCamera)->setOverlaysEnabled(false); + rtt->addListener(this); + + if (i == 0) mRefractionTarget = rtt; + else mReflectionTarget = rtt; + } + + + mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 7000, 7000, 10, 10, true, 1, 3, 5, Ogre::Vector3::UNIT_Z); + + + mWater = mSceneManager->createEntity("Water", "water"); + mWater->setMaterialName("Water/ReflectionRefraction"); + mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); + mWaterNode->attachObject(mWater); + + } + + + Water::~Water() { + Ogre::MeshManager::getSingleton().remove("water"); + Ogre::TextureManager::getSingleton().remove("refraction"); + Ogre::TextureManager::getSingleton().remove("reflection"); + Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); + } + + + void Water::preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt) { + mWater->setVisible(false); + + if (evt.source == mReflectionTarget) { + mCamera->enableReflection(mWaterPlane); + } else { + } + } + + void Water::postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt) { + mWater->setVisible(true); + + if (evt.source == mReflectionTarget) { + mCamera->disableReflection(); + } else { + } + } + + void Water::checkUnderwater() { + Ogre::Vector3 pos = mCamera->getPosition(); + if (mIsUnderwater && pos.y > 0) { + try { + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + } catch(...) { + } + std::cout << "Removing water compositor" << "\n"; + mIsUnderwater = false; + } + + if (!mIsUnderwater && pos.y < 0) { + try { + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); + } catch(...) { + } + mIsUnderwater = true; + std::cout << "Adding water compositor" << "\n"; + } + } + + + void Water::cameraPreRenderScene(Ogre::Camera *cam) { + Ogre::Vector3 pos = cam->getPosition(); + + if (pos != mOldCameraPos) { + mWaterNode->setPosition(pos.x, 0, pos.z); + + mOldCameraPos = pos; + } + } + + void Water::cameraPostRenderScene(Ogre::Camera *cam) { + } + + void Water::cameraDestroyed(Ogre::Camera *cam) { + } + +} diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp new file mode 100644 index 0000000000..8e04ca3c81 --- /dev/null +++ b/apps/openmw/mwrender/water.hpp @@ -0,0 +1,45 @@ +#ifndef GAME_MWRENDER_WATER_H +#define GAME_MWRENDER_WATER_H + +#include + + +namespace MWRender { + + /// Water rendering + class Water : Ogre::RenderTargetListener, Ogre::Camera::Listener { + Ogre::Camera *mCamera; + Ogre::SceneManager *mSceneManager; + Ogre::Viewport *mViewport; + + Ogre::RenderTarget *mRefractionTarget; + Ogre::RenderTarget *mReflectionTarget; + + Ogre::Plane mWaterPlane; + Ogre::SceneNode *mWaterNode; + Ogre::Entity *mWater; + + Ogre::Vector3 mOldCameraPos; + bool mIsUnderwater; + + + + void preRenderTargetUpdate(const Ogre::RenderTargetEvent&); + void postRenderTargetUpdate(const Ogre::RenderTargetEvent&); + + void cameraPreRenderScene(Ogre::Camera *cam); + void cameraPostRenderScene(Ogre::Camera *cam); + void cameraDestroyed(Ogre::Camera *cam); + + public: + + Water (Ogre::Camera *camera); + ~Water(); + + void checkUnderwater(); + + + }; +} + +#endif diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index c9d477833b..152e001302 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -15,30 +15,6 @@ namespace { - - -template -void insertCellRefList (T& cellRefList, ESMS::CellStore &cell) -{ - if (!cellRefList.list.empty()) - { - //const MWWorld::Class& class_ = MWWorld::Class::get (MWWorld::Ptr (&*cellRefList.list.begin(), &cell)); - - for (typename T::List::iterator it = cellRefList.list.begin(); - it != cellRefList.list.end(); it++) - { - if (it->mData.getCount() || it->mData.isEnabled()) - { - MWWorld::Ptr ptr (&*it, &cell); - /* TODO: call - * RenderingManager.insertObject - * class_.insertObjectPhysic - * class_.insertObjectMechanics - */ - } - } - } -} template void insertCellRefList(MWRender::RenderingManager& rendering, MWWorld::Environment& environment, T& cellRefList, ESMS::CellStore &cell, MWWorld::PhysicsSystem& physics) @@ -76,20 +52,22 @@ void insertCellRefList(MWRender::RenderingManager& rendering, MWWorld::Environme namespace MWWorld { - + void Scene::unloadCell (CellStoreCollection::iterator iter) { - + std::cout << "Unloading cell\n"; ListHandles functor; - + MWWorld::Ptr::CellStore* active = *iter; - mRendering.removeCell(active); + + + active->forEach(functor); - { + { + - // silence annoying g++ warning for (std::vector::const_iterator iter (functor.mHandles.begin()); iter!=functor.mHandles.end(); ++iter){ @@ -97,10 +75,13 @@ namespace MWWorld mPhysics->removeObject (node->getName()); } } + mRendering.removeCell(active); + //mPhysics->removeObject("Unnamed_43"); mWorld->getLocalScripts().clearCell (active); mEnvironment.mMechanicsManager->dropActors (active); mEnvironment.mSoundManager->stopSound (active); - mActiveCells.erase (iter); + mActiveCells.erase(active); + } void Scene::loadCell (Ptr::CellStore *cell) @@ -108,18 +89,18 @@ namespace MWWorld // register local scripts mWorld->getLocalScripts().addCell (cell); - + std::pair result = mActiveCells.insert(cell); if(result.second){ insertCell(*cell, mEnvironment); - mRendering.getObjects().buildStaticGeometry(*cell); + //mRendering.cellAdded (cell); mRendering.configureAmbient(*cell); - + } - - + + } void Scene::playerCellChange (Ptr::CellStore *cell, const ESM::Position& position, @@ -140,15 +121,13 @@ namespace MWWorld mEnvironment.mMechanicsManager->removeActor (mWorld->getPlayer().getPlayer()); CellStoreCollection::iterator active = mActiveCells.begin(); - Ptr::CellStore* cellstore = *active; - + while (active!=mActiveCells.end()) { - cellstore = *active; - if (!(cellstore->cell->data.flags & ESM::Cell::Interior)) + if (!((*active)->cell->data.flags & ESM::Cell::Interior)) { - if (std::abs (X-cellstore->cell->data.gridX)<=1 && - std::abs (Y-cellstore->cell->data.gridY)<=1) + if (std::abs (X-(*active)->cell->data.gridX)<=1 && + std::abs (Y-(*active)->cell->data.gridY)<=1) { // keep cells within the new 3x3 grid ++active; @@ -164,15 +143,13 @@ namespace MWWorld for (int y=Y-1; y<=Y+1; ++y) { CellStoreCollection::iterator iter = mActiveCells.begin(); - while (iter!=mActiveCells.end()) { - cellstore = *iter; - assert (!(cellstore->cell->data.flags & ESM::Cell::Interior)); + assert (!((*iter)->cell->data.flags & ESM::Cell::Interior)); - if (x==cellstore->cell->data.gridX && - y==cellstore->cell->data.gridY) + if (x==(*iter)->cell->data.gridX && + y==(*iter)->cell->data.gridY) break; ++iter; @@ -188,15 +165,13 @@ namespace MWWorld // find current cell CellStoreCollection::iterator iter = mActiveCells.begin(); - while (iter!=mActiveCells.end()) { - cellstore = *iter; - assert (!(iter->first->cell->data.flags & ESM::Cell::Interior)); + assert (!((*iter)->cell->data.flags & ESM::Cell::Interior)); - if (X==cellstore->cell->data.gridX && - Y==cellstore->cell->data.gridY) + if (X==(*iter)->cell->data.gridX && + Y==(*iter)->cell->data.gridY) break; ++iter; @@ -204,7 +179,7 @@ namespace MWWorld assert (iter!=mActiveCells.end()); - mCurrentCell = cellstore; + mCurrentCell = *iter; // adjust player playerCellChange (mWorld->getExterior(X, Y), position, adjustPlayerPos); @@ -215,10 +190,10 @@ namespace MWWorld mCellChanged = true; } - //We need the ogre renderer and a scene node. + //We need the ogre renderer and a scene node. Scene::Scene (Environment& environment, World *world, MWRender::RenderingManager& rendering, PhysicsSystem *physics) - : mRendering(rendering), mCurrentCell (0), - mCellChanged (false), mEnvironment (environment), mWorld(world), mPhysics(physics) + : mCurrentCell (0), mCellChanged (false), mEnvironment (environment), mWorld(world), + mPhysics(physics), mRendering(rendering) { } @@ -241,7 +216,7 @@ namespace MWWorld std::cout << "Changing to interior\n"; // remove active CellStoreCollection::iterator active = mActiveCells.begin(); - std::cout << "Size: " << mActiveCells.size() << "\n"; + while (active!=mActiveCells.end()) { unloadCell (active++); @@ -261,7 +236,6 @@ namespace MWWorld mWorld->adjustSky(); mCellChanged = true; - //currentRegion->name = ""; } void Scene::changeToExteriorCell (const ESM::Position& position) @@ -284,38 +258,6 @@ namespace MWWorld mCellChanged = false; } -/*#include -#include -#include - -#include "../mwworld/class.hpp" -#include "../mwworld/ptr.hpp"*/ - -void Scene::insertCell(ESMS::CellStore &cell) -{ - // Loop through all references in the cell - insertCellRefList (cell.activators, cell); - insertCellRefList (cell.potions, cell); - insertCellRefList (cell.appas, cell); - insertCellRefList (cell.armors, cell); - insertCellRefList (cell.books, cell); - insertCellRefList (cell.clothes, cell); - insertCellRefList (cell.containers, cell); - insertCellRefList (cell.creatures, cell); - insertCellRefList (cell.doors, cell); - insertCellRefList (cell.ingreds, cell); - insertCellRefList (cell.creatureLists, cell); - insertCellRefList (cell.itemLists, cell); - insertCellRefList (cell.lights, cell); - insertCellRefList (cell.lockpicks, cell); - insertCellRefList (cell.miscItems, cell); - insertCellRefList (cell.npcs, cell); - insertCellRefList (cell.probes, cell); - insertCellRefList (cell.repairs, cell); - insertCellRefList (cell.statics, cell); - insertCellRefList(cell.weapons, cell); -} - void Scene::insertCell(ESMS::CellStore &cell, MWWorld::Environment& environment) { diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt new file mode 100644 index 0000000000..720044df8d --- /dev/null +++ b/files/CMakeLists.txt @@ -0,0 +1,12 @@ +project(resources) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/caustic_0.png "${OpenMW_BINARY_DIR}/resources/water/caustic_0.png" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Example_Fresnel.cg "${OpenMW_BINARY_DIR}/resources/water/Example_Fresnel.cg" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Example_FresnelPS.asm "${OpenMW_BINARY_DIR}/resources/water/Example_FresnelPS.asm" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassFP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassFP.cg" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassVP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassVP.cg" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/perlinvolume.dds "${OpenMW_BINARY_DIR}/resources/water/perlinvolume.dds" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Water02.jpg "${OpenMW_BINARY_DIR}/resources/water/Water02.jpg" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.compositor "${OpenMW_BINARY_DIR}/resources/water/water.compositor" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.material "${OpenMW_BINARY_DIR}/resources/water/water.material" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/waves2.dds "${OpenMW_BINARY_DIR}/resources/water/waves2.dds" COPYONLY) diff --git a/files/plugins.cfg.linux b/files/plugins.cfg.linux index b6e104351d..2921153b4f 100644 --- a/files/plugins.cfg.linux +++ b/files/plugins.cfg.linux @@ -7,6 +7,6 @@ PluginFolder=${OGRE_PLUGIN_DIR} Plugin=RenderSystem_GL Plugin=Plugin_ParticleFX Plugin=Plugin_OctreeSceneManager -# Plugin=Plugin_CgProgramManager +Plugin=Plugin_CgProgramManager diff --git a/files/water/Example_Fresnel.cg b/files/water/Example_Fresnel.cg new file mode 100644 index 0000000000..e091fc5878 --- /dev/null +++ b/files/water/Example_Fresnel.cg @@ -0,0 +1,116 @@ +// Vertex program for fresnel reflections / refractions +void main_vp( + float4 pos : POSITION, + float4 normal : NORMAL, + float2 tex : TEXCOORD0, + + out float4 oPos : POSITION, + out float3 noiseCoord : TEXCOORD0, + out float4 projectionCoord : TEXCOORD1, + out float3 oEyeDir : TEXCOORD2, + out float3 oNormal : TEXCOORD3, + + uniform float4x4 worldViewProjMatrix, + uniform float3 eyePosition, // object space + uniform float timeVal, + uniform float scale, // the amount to scale the noise texture by + uniform float scroll, // the amount by which to scroll the noise + uniform float noise // the noise perturb as a factor of the time + ) +{ + oPos = mul(worldViewProjMatrix, pos); + // Projective texture coordinates, adjust for mapping + float4x4 scalemat = float4x4(0.5, 0, 0, 0.5, + 0,-0.5, 0, 0.5, + 0, 0, 0.5, 0.5, + 0, 0, 0, 1); + projectionCoord = mul(scalemat, oPos); + // Noise map coords + noiseCoord.xy = (tex + (timeVal * scroll)) * scale; + noiseCoord.z = noise * timeVal; + + oEyeDir = normalize(pos.xyz - eyePosition); + oNormal = normal.rgb; + +} + +// Fragment program for distorting a texture using a 3D noise texture +void main_fp( + float3 noiseCoord : TEXCOORD0, + float4 projectionCoord : TEXCOORD1, + float3 eyeDir : TEXCOORD2, + float3 normal : TEXCOORD3, + + out float4 col : COLOR, + + uniform float4 tintColour, + uniform float noiseScale, + uniform float fresnelBias, + uniform float fresnelScale, + uniform float fresnelPower, + uniform sampler2D waterTex : register(s0), + uniform sampler2D noiseMap : register(s1), + uniform sampler2D reflectMap : register(s2), + uniform sampler2D refractMap : register(s3) + ) +{ + // Do the tex projection manually so we can distort _after_ + float2 final = projectionCoord.xy / projectionCoord.w; + + // Noise + float3 noiseNormal = (tex2D(noiseMap, (noiseCoord.xy / 5)).rgb - 0.5).rbg * noiseScale; + final += noiseNormal.xz; + + // Fresnel + //normal = normalize(normal + noiseNormal.xz); + float fresnel = fresnelBias + fresnelScale * pow(1 + dot(eyeDir, normal), fresnelPower); + + // Reflection / refraction + float4 reflectionColour = tex2D(reflectMap, final); + float4 refractionColour = tex2D(refractMap, final) + tintColour; + + // Final colour + col = lerp(refractionColour, reflectionColour, fresnel) * tex2D(waterTex, noiseNormal) / 3 ; + + +} + + +// Old version to match ATI PS 1.3 implementation +void main_vp_old( + float4 pos : POSITION, + float4 normal : NORMAL, + float2 tex : TEXCOORD0, + + out float4 oPos : POSITION, + out float fresnel : COLOR, + out float3 noiseCoord : TEXCOORD0, + out float4 projectionCoord : TEXCOORD1, + + uniform float4x4 worldViewProjMatrix, + uniform float3 eyePosition, // object space + uniform float fresnelBias, + uniform float fresnelScale, + uniform float fresnelPower, + uniform float timeVal, + uniform float scale, // the amount to scale the noise texture by + uniform float scroll, // the amount by which to scroll the noise + uniform float noise // the noise perturb as a factor of the time + ) +{ + oPos = mul(worldViewProjMatrix, pos); + // Projective texture coordinates, adjust for mapping + float4x4 scalemat = float4x4(0.5, 0, 0, 0.5, + 0,-0.5, 0, 0.5, + 0, 0, 0.5, 0.5, + 0, 0, 0, 1); + projectionCoord = mul(scalemat, oPos); + // Noise map coords + noiseCoord.xy = (tex + (timeVal * scroll)) * scale; + noiseCoord.z = noise * timeVal; + + // calc fresnel factor (reflection coefficient) + float3 eyeDir = normalize(pos.xyz - eyePosition); + fresnel = fresnelBias + fresnelScale * pow(1 + dot(eyeDir, normal), fresnelPower); + +} diff --git a/files/water/Example_FresnelPS.asm b/files/water/Example_FresnelPS.asm new file mode 100644 index 0000000000..2de078ef5a --- /dev/null +++ b/files/water/Example_FresnelPS.asm @@ -0,0 +1,72 @@ +ps.1.4 + // conversion from Cg generated ARB_fragment_program to ps.1.4 by NFZ + // command line args: -profile arbfp1 -entry main_fp + // program main_fp + // c0 : distortionRange + // c1 : tintColour + // testure 0 : noiseMap + // texture 1 : reflectMap + // texture 2 : refractMap + // v0.x : fresnel + // t0.xyz : noiseCoord + // t1.xyw : projectionCoord + +def c2, 2, 1, 0, 0 + + // Cg: distort.x = tex3D(noiseMap, noiseCoord).x; + // arbfp1: TEX R0.x, fragment.texcoord[0], texture[0], 3D; + // sample noise map using noiseCoord in TEX unit 0 + +texld r0, t0.xyz + + // get projected texture coordinates from TEX coord 1 + // will be used in phase 2 + +texcrd r1.xy, t1_dw.xyw +mov r1.z, c2.y + + // Cg: distort.y = tex3D(noiseMap, noiseCoord + yoffset).x; + // arbfp1: ADD R1.xyz, fragment.texcoord[0], c1; + // arbfp1: TEX R1.x, R1, texture[0], 3D; + // arbfp1: MOV R0.y, R1.x; + + // Cg: distort = (distort * 2 - 1) * distortionRange; + // arbfp1: MAD R0.xy, R0, c0.x, -c0.y; + // arbfp1: MUL R0.xy, R0, u0.x; + // (distort * 2 - 1) same as 2*(distort -.5) so use _bx2 + + + // Cg: final = projectionCoord.xy / projectionCoord.w; + // Cg: final += distort; + // arbfp1: RCP R0.w, fragment.texcoord[1].w; + // arbfp1: MAD R0.xy, fragment.texcoord[1], R0.w, R0; + // final = (distort * projectionCoord.w) + projectionCoord.xy + // for ps.1.4 have to re-arrange things a bit to perturb projected texture coordinates + +mad r0.xyz, r0_bx2, c0.x, r1 + +phase + + // do dependant texture reads + // Cg: reflectionColour = tex2D(reflectMap, final); + // arbfp1: TEX R0, R0, texture[1], 2D; + // sampe reflectMap using dependant read : texunit 1 + +texld r1, r0.xyz + + // Cg: refractionColour = tex2D(refractMap, final) + tintColour; + // arbfp1: TEX R1, R0, texture[2], 2D; + // sample refractMap : texunit 2 + +texld r2, r0.xyz + + // adding tintColour that is in global c1 + // arbfp1: ADD R1, R1, u1; + +add r2, r2, c1 + + // Cg: col = lerp(refractionColour, reflectionColour, fresnel); + // arbfp1: ADD R0, R0, -R1; + // arbfp1: MAD result.color, fragment.color.primary.x, R0, R1; + +lrp r0, v0.x, r1, r2 diff --git a/files/water/GlassFP.cg b/files/water/GlassFP.cg new file mode 100644 index 0000000000..eb18885d25 --- /dev/null +++ b/files/water/GlassFP.cg @@ -0,0 +1,15 @@ +sampler RT : register(s0); +sampler NormalMap : register(s1); +sampler CausticMap : register(s2); + +float4 main_ps(float2 iTexCoord : TEXCOORD0, + float3 noiseCoord : TEXCOORD1, + uniform float4 tintColour) : COLOR +{ + float4 normal = tex2D(NormalMap, noiseCoord); + + + return tex2D(RT, iTexCoord + normal.xy * 0.05) + + (tex2D(CausticMap, noiseCoord) / 5) + + tintColour ; +} diff --git a/files/water/GlassVP.cg b/files/water/GlassVP.cg new file mode 100644 index 0000000000..71153769c2 --- /dev/null +++ b/files/water/GlassVP.cg @@ -0,0 +1,24 @@ +void glass_vp +( + in float4 inPos : POSITION, + + out float4 pos : POSITION, + out float2 uv0 : TEXCOORD0, + out float4 noiseCoord : TEXCOORD1, + + uniform float4x4 worldViewProj, + uniform float timeVal, + uniform float scale +) +{ + // Use standardise transform, so work accord with render system specific (RS depth, requires texture flipping, etc) + pos = mul(worldViewProj, inPos); + + // The input positions adjusted by texel offsets, so clean up inaccuracies + inPos.xy = sign(inPos.xy); + + // Convert to image-space + uv0 = (float2(inPos.x, -inPos.y) + 1.0f) * 0.5f; + noiseCoord = (pos + timeVal) * scale; +} + diff --git a/files/water/Water02.jpg b/files/water/Water02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3efda7b6a88488f34f83ef292e57466db09818d3 GIT binary patch literal 185893 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

ki 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 literal 0 HcmV?d00001 diff --git a/files/water/caustic_0.png b/files/water/caustic_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fee464860ea42100b844a4d8dfaa101c3bb80a88 GIT binary patch literal 35147 zcmeAS@N?(olHy`uVBq!ia0y~yU}OMc4kiW$hRXu>h71f0oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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%0Dra 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 AMgRZ+ literal 0 HcmV?d00001 diff --git a/files/water/perlinvolume.dds b/files/water/perlinvolume.dds new file mode 100644 index 0000000000000000000000000000000000000000..bd8147d49fd5f5d9ecea444c92d462d4b3f21138 GIT binary patch literal 2097280 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%0A1Px;sfi55I=$SYPJhB7Y12%Qal!>67 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π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%0AM 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

iP!IWMn}^@(EidzidphXw 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

voqEwKV!fDIad0iB3Y4LV$^1hlIZvi~03;f;-n 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%0AcAHl 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 literal 0 HcmV?d00001 diff --git a/files/water/water.compositor b/files/water/water.compositor new file mode 100644 index 0000000000..67bf908960 --- /dev/null +++ b/files/water/water.compositor @@ -0,0 +1,21 @@ +compositor Water +{ + technique + { + texture rt0 target_width target_height PF_R8G8B8 + + target rt0 { input previous } + + target_output + { + // Start with clear output + input none + + pass render_quad + { + material Water/Compositor + input 0 rt0 + } + } + } +} diff --git a/files/water/water.material b/files/water/water.material new file mode 100644 index 0000000000..9929feabc3 --- /dev/null +++ b/files/water/water.material @@ -0,0 +1,217 @@ +// Derived from ogre samples + + +vertex_program Water/GlassVP cg +{ + source GlassVP.cg + entry_point glass_vp + profiles vs_1_1 arbvp1 + + default_params + { + param_named_auto worldViewProj worldviewproj_matrix + } +} + + +fragment_program Water/GlassFP cg +{ + source GlassFP.cg + entry_point main_ps + profiles ps_2_0 arbfp1 +} + +material Water/Compositor +{ + technique + { + pass + { + depth_check off + + vertex_program_ref Water/GlassVP + { + param_named_auto timeVal time 0.25 + param_named scale float 0.1 + } + + fragment_program_ref Water/GlassFP + { + param_named tintColour float4 0 0.35 0.35 1 + } + + texture_unit RT + { + tex_coord_set 0 + tex_address_mode clamp + filtering linear linear linear + } + + texture_unit + { + texture WaterNormal1.tga 2d + tex_coord_set 1 + //tex_address_mode clamp + filtering linear linear linear + } + texture_unit + { + texture caustic_0.png 2d + tex_coord_set 2 + //tex_address_mode clamp + filtering linear linear linear + } + } + } +} + + + + + + + +vertex_program Water/RefractReflectVP cg +{ + source Example_Fresnel.cg + entry_point main_vp + profiles vs_1_1 arbvp1 +} +vertex_program Water/RefractReflectVPold cg +{ + source Example_Fresnel.cg + entry_point main_vp_old + profiles vs_1_1 arbvp1 +} + +fragment_program Water/RefractReflectFP cg +{ + source Example_Fresnel.cg + entry_point main_fp + // sorry, ps_1_1 and fp20 can't do this + profiles ps_2_0 arbfp1 +} + +fragment_program Water/RefractReflectPS asm +{ + source Example_FresnelPS.asm + // sorry, only for ps_1_4 :) + syntax ps_1_4 + +} + + +material Water/ReflectionRefraction +{ + // ps_2_0 / arbfp1 + technique + { + pass + { + + vertex_program_ref Water/RefractReflectVP + { + param_named_auto worldViewProjMatrix worldviewproj_matrix + param_named_auto eyePosition camera_position_object_space + param_named_auto timeVal time 0.15 + param_named scroll float 1 + param_named scale float 1 + param_named noise float 1 + // scroll and noisePos will need updating per frame + } + fragment_program_ref Water/RefractReflectFP + { + param_named fresnelBias float -0.1 + param_named fresnelScale float 0.8 + param_named fresnelPower float 20 + param_named tintColour float4 0 0.15 0.15 1 + param_named noiseScale float 0.05 + } + // Water + texture_unit + { + // Water texture + texture Water02.jpg + // min / mag filtering, no mip + filtering linear linear none + } + // Noise + texture_unit + { + // Perlin noise volume + texture waves2.dds + // min / mag filtering, no mip + filtering linear linear none + } + // Reflection + texture_unit + { + // Will be filled in at runtime + texture reflection + tex_address_mode clamp + } + // Refraction + texture_unit + { + // Will be filled in at runtime + texture refraction + tex_address_mode clamp + } + } + + + } + + // ATI 8500 + + technique + { + pass + { + vertex_program_ref Water/RefractReflectVPold + { + param_named_auto worldViewProjMatrix worldviewproj_matrix + param_named_auto eyePosition camera_position_object_space + param_named fresnelBias float -0.3 + param_named fresnelScale float 1.4 + param_named fresnelPower float 8 + param_named_auto timeVal time_0_1 20 + param_named scroll float 1 + param_named scale float 4 + param_named noise float 1 + // scroll and noisePos will need updating per frame + } + + // for ATI RADEON 8500 - 9200 + fragment_program_ref Water/RefractReflectPS + { + // distortionRange + param_indexed 0 float 0.025 + // tintColour + param_indexed 1 float4 0.05 0.12 0.15 1 + } + + // Noise + texture_unit + { + // Perlin noise volume + texture perlinvolume.dds 3d + // min / mag filtering, no mip + filtering linear linear none + } + // Reflection + texture_unit + { + // Will be filled in at runtime + texture Reflection + tex_address_mode clamp + } + // Refraction + texture_unit + { + // Will be filled in at runtime + texture Refraction + tex_address_mode clamp + } + } + } +} diff --git a/files/water/waves2.dds b/files/water/waves2.dds new file mode 100644 index 0000000000000000000000000000000000000000..c379886faec80aa3b6772a890e0f49822782b33d GIT binary patch literal 262272 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 Cxy8Z& literal 0 HcmV?d00001 From ff2bbc9fc5c36f0418d1b28fea6f561e56f9f9d4 Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Wed, 18 Jan 2012 22:42:07 -0500 Subject: [PATCH 002/488] Transparent water --- apps/openmw/engine.cpp | 6 + apps/openmw/mwrender/renderingmanager.cpp | 4 + apps/openmw/mwrender/renderingmanager.hpp | 3 + apps/openmw/mwrender/water.cpp | 24 +- apps/openmw/mwworld/world.cpp | 1 + files/water/Examples-Water.material | 321 ++++++++++++++++++++++ files/water/Water01.jpg | Bin 0 -> 295326 bytes files/water/water1.cg | 39 +++ 8 files changed, 380 insertions(+), 18 deletions(-) create mode 100644 files/water/Examples-Water.material create mode 100644 files/water/Water01.jpg create mode 100644 files/water/water1.cg diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index acff9c8be4..36d8013267 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -310,7 +310,13 @@ void OMW::Engine::go() // This has to be added BEFORE MyGUI is initialized, as it needs // to find core.xml here. + std::cout << "Before the water\n"; + + std::cout << "After the water" << mResDir << "\n"; + //addResourcesDirectory(mResDir); + addResourcesDirectory(mResDir / "mygui"); + addResourcesDirectory(mResDir / "water"); // Create the window mOgre->createWindow("OpenMW"); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index fffa6f3d66..54c1b55efb 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -57,6 +57,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const cameraPitchNode->attachObject(rend.getCamera()); mPlayer = new MWRender::Player (rend.getCamera(), playerNode); + mWater = new MWRender::Water(rend.getCamera()); //std::cout << "Three"; } @@ -220,6 +221,9 @@ void RenderingManager::toggleLight() setAmbientMode(); } +void RenderingManager::checkUnderwater(){ + mWater->checkUnderwater(); +} diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index e4dc5deb40..7130bdc2bb 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -24,6 +24,7 @@ #include "creatures.hpp" #include "objects.hpp" #include "player.hpp" +#include "water.hpp" namespace Ogre { @@ -69,6 +70,7 @@ class RenderingManager: private RenderingInterface { void moveObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& position); void scaleObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& scale); void rotateObject (const MWWorld::Ptr& ptr, const::Ogre::Quaternion& orientation); + void checkUnderwater(); /// \param store Cell the object was in previously (\a ptr has already been updated to the new cell). void moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Vector3& position, MWWorld::Ptr::CellStore *store); @@ -100,6 +102,7 @@ class RenderingManager: private RenderingInterface { Ogre::Camera* camera; MWRender::Npcs npcs; MWRender::Creatures creatures; + MWRender::Water *mWater; MWRender::Objects objects; // 0 normal, 1 more bright, 2 max diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index acfda488bc..2e4882b637 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -2,7 +2,7 @@ namespace MWRender { Water::Water (Ogre::Camera *camera) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) { - + std::cout << "1\n"; try { Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); @@ -11,26 +11,14 @@ namespace MWRender { mIsUnderwater = false; mCamera->addListener(this); - - - for (unsigned int i = 0; i < 2; i++) { - Ogre::TexturePtr tex = Ogre::TextureManager::getSingleton().createManual(i == 0 ? "refraction" : "reflection", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D, 512, 512, 0, Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET); - - Ogre::RenderTarget* rtt = tex->getBuffer()->getRenderTarget(); - rtt->addViewport(mCamera)->setOverlaysEnabled(false); - rtt->addListener(this); - - if (i == 0) mRefractionTarget = rtt; - else mReflectionTarget = rtt; - } mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 7000, 7000, 10, 10, true, 1, 3, 5, Ogre::Vector3::UNIT_Z); - + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 7000, 7000, 1, 1, true, 1, 3,5, Ogre::Vector3::UNIT_Z); mWater = mSceneManager->createEntity("Water", "water"); - mWater->setMaterialName("Water/ReflectionRefraction"); + mWater->setMaterialName("Examples/Water0"); + mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); mWaterNode->attachObject(mWater); @@ -39,8 +27,8 @@ namespace MWRender { Water::~Water() { Ogre::MeshManager::getSingleton().remove("water"); - Ogre::TextureManager::getSingleton().remove("refraction"); - Ogre::TextureManager::getSingleton().remove("reflection"); + //Ogre::TextureManager::getSingleton().remove("refraction"); + //Ogre::TextureManager::getSingleton().remove("reflection"); Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); } diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 93cf19aef2..b32f0203f1 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -525,6 +525,7 @@ namespace MWWorld if (ptr==mPlayer->getPlayer()) { + mRendering.checkUnderwater(); Ptr::CellStore *currentCell = mWorldScene->getCurrentCell(); if (currentCell) { diff --git a/files/water/Examples-Water.material b/files/water/Examples-Water.material new file mode 100644 index 0000000000..285cb22ce8 --- /dev/null +++ b/files/water/Examples-Water.material @@ -0,0 +1,321 @@ +vertex_program Water/Test cg +{ + source water1.cg + entry_point main + profiles vs_1_1 arbvp1 + +} +vertex_program Water/GlassVP cg +{ + source GlassVP.cg + entry_point glass_vp + profiles vs_1_1 arbvp1 + + default_params + { + param_named_auto worldViewProj worldviewproj_matrix + } +} + + +fragment_program Water/GlassFP cg +{ + source GlassFP.cg + entry_point main_ps + profiles ps_2_0 arbfp1 +} + +material Water/Compositor +{ + technique + { + pass + { + depth_check off + + vertex_program_ref Water/GlassVP + { + param_named_auto timeVal time 0.25 + param_named scale float 0.1 + } + + fragment_program_ref Water/GlassFP + { + param_named tintColour float4 0 0.35 0.35 1 + } + + texture_unit RT + { + tex_coord_set 0 + tex_address_mode clamp + filtering linear linear linear + } + + texture_unit + { + texture WaterNormal1.tga 2d + tex_coord_set 1 + //tex_address_mode clamp + filtering linear linear linear + } + texture_unit + { + texture caustic_0.png 2d + tex_coord_set 2 + //tex_address_mode clamp + filtering linear linear linear + } + } + } +} +vertex_program Water/RefractReflectVP cg +{ + source Example_Fresnel.cg + entry_point main_vp + profiles vs_1_1 arbvp1 +} +vertex_program Water/RefractReflectVPold cg +{ + source Example_Fresnel.cg + entry_point main_vp_old + profiles vs_1_1 arbvp1 +} + +fragment_program Water/RefractReflectFP cg +{ + source Example_Fresnel.cg + entry_point main_fp + // sorry, ps_1_1 and fp20 can't do this + profiles ps_2_0 arbfp1 +} + +fragment_program Water/RefractReflectPS asm +{ + source Example_FresnelPS.asm + // sorry, only for ps_1_4 :) + syntax ps_1_4 + +} +material Examples/Water0 +{ + + technique + { + pass + { + // + + + vertex_program_ref Water/RefractReflectVP + { + param_named_auto worldViewProjMatrix worldviewproj_matrix + param_named_auto eyePosition camera_position_object_space + param_named_auto timeVal time 0.15 + param_named scroll float 1 + param_named scale float 1 + param_named noise float 1 + // scroll and noisePos will need updating per frame + } + fragment_program_ref Water/RefractReflectFP + { + param_named fresnelBias float -0.1 + param_named fresnelScale float 0.8 + param_named fresnelPower float 20 + param_named tintColour float4 1 1 1 1 + param_named noiseScale float 0.05 + } + // Water + scene_blend alpha_blend + texture_unit + { + + // Water texture + texture Water02.jpg + // min / mag filtering, no mip + filtering linear linear none + colour_op_ex source1 src_manual src_current 0 1 0 + alpha_op_ex source1 src_manual src_current 0.1 + + } + // Noise + texture_unit + { + colour_op_ex source1 src_manual src_current 0 1 0 + alpha_op_ex source1 src_manual src_current 0.1 + // Perlin noise volume + texture waves2.dds + // min / mag filtering, no mip + filtering linear linear none + } + + + } + + + } + +} +material Examples/Water1 +{ + technique + { + pass + { + scene_blend colour_blend + depth_write off + + texture_unit + { + texture BeachStones.jpg + scale 0.25 0.25 + } + + texture_unit + { + texture Water01.jpg + env_map spherical + scroll_anim 0.01 0.01 + } + } + } +} +material Examples/Water2 +{ + technique + { + pass + { + scene_blend colour_blend + depth_write off + + texture_unit + { + texture Water01.jpg + scroll_anim 0.01 0.01 + } + } + } +} +material Examples/Water3 +{ + technique + { + pass + { + scene_blend colour_blend + depth_write off + + texture_unit + { + texture Water02.jpg + env_map spherical + scroll_anim 0.01 0.01 + rotate_anim 0.03 + } + } + } +} +material Examples/Water4 +{ + technique + { + pass + { + cull_hardware none + cull_software none + + texture_unit + { + texture Water02.jpg + env_map spherical + scroll_anim 0.01 0.01 + } + } + } +} +material Examples/Water5 +{ + technique + { + pass + { + cull_hardware none + cull_software none + + texture_unit + { + texture BeachStones.jpg + scale 0.25 0.25 + } + + texture_unit + { + texture Water01.jpg + env_map spherical + scroll_anim 0.01 0.01 + } + } + } +} +material Examples/Water6 +{ + technique + { + pass + { + lighting off + + texture_unit + { + cubic_texture cubescene.jpg combinedUVW + tex_address_mode clamp + env_map cubic_reflection + } + } + } +} +material Examples/Water7 +{ + technique + { + pass + { + cull_hardware none + cull_software none + + texture_unit + { + texture BeachStones.jpg + scale 0.25 0.25 + } + + texture_unit + { + cubic_texture cubescene.jpg combinedUVW + tex_address_mode clamp + env_map cubic_reflection + } + } + } +} +material Examples/Water8 +{ + technique + { + pass + { + lighting off + scene_blend add + depth_write off + cull_hardware none + cull_software none + + texture_unit + { + cubic_texture cubescene.jpg combinedUVW + tex_address_mode clamp + env_map cubic_reflection + } + } + } +} diff --git a/files/water/Water01.jpg b/files/water/Water01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f9c9b7feec540c35e7a1972cb78c5661912da77d GIT binary patch literal 295326 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

-ig1-0_ilxuvTQ$%+3;{m;N!6YMfed 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 oD~>qN69Y{?7D|Ta~|uaYDV;{7+w&9mp{Z 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

OQa_xX=LQBkt()8dQVBDyBcMb5tPfS3%1m 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�l5w2FpxQ*@(mQ`;Bp&b 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

8TxP&x#~1*jT=l&Fv)9mtR-*jSJW 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 Date: Sat, 21 Jan 2012 16:59:08 +0000 Subject: [PATCH 006/488] Merge of corristo's terrain rendering and fixes so that the terrain is correctly positioned and rendered --- CMakeLists.txt | 11 +++ apps/openmw/CMakeLists.txt | 3 +- apps/openmw/mwrender/renderingmanager.cpp | 4 + apps/openmw/mwrender/renderingmanager.hpp | 2 + apps/openmw/mwrender/terrain.cpp | 62 ++++++++++++++++ apps/openmw/mwrender/terrain.hpp | 31 ++++++++ cmake/FindOGRE.cmake | 15 ++++ components/esm/loadcell.hpp | 15 ++++ components/esm/loadland.cpp | 89 +++++++++++++++++++++-- components/esm/loadland.hpp | 44 +++++++++++ components/esm_store/cell_store.hpp | 33 ++++++++- components/esm_store/reclists.hpp | 2 +- components/esm_store/store.hpp | 2 +- files/plugins.cfg.linux | 2 +- files/plugins.cfg.mac | 2 +- 15 files changed, 306 insertions(+), 11 deletions(-) create mode 100644 apps/openmw/mwrender/terrain.cpp create mode 100644 apps/openmw/mwrender/terrain.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 723d10b347..015ffd7cee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,6 +188,7 @@ find_package(OpenAL REQUIRED) find_package(Bullet REQUIRED) include_directories("." ${OGRE_INCLUDE_DIR} ${OGRE_INCLUDE_DIR}/Ogre ${OGRE_INCLUDE_DIR}/OGRE + ${OGRE_Terrain_INCLUDE_DIR} ${OIS_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${PLATFORM_INCLUDE_DIR} ${CMAKE_HOME_DIRECTORY}/extern/caelum/include @@ -259,6 +260,16 @@ if (APPLE) configure_file(${OGRE_PLUGIN_DIR}/Plugin_ParticleFX.dylib "${APP_BUNDLE_DIR}/Contents/Plugins/Plugin_ParticleFX.dylib" COPYONLY) + # prepare components + configure_file(${OGRE_LIB_DIR}/libOgrePaging.dylib + "${APP_BUNDLE_DIR}/Contents/Components/libOgrePaging.dylib" COPYONLY) + + configure_file(${OGRE_LIB_DIR}/libOgreTerrain.dylib + "${APP_BUNDLE_DIR}/Contents/Components/libOgreTerrain.dylib" COPYONLY) + + configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg + "${APP_BUNDLE_DIR}/Contents/MacOS/openmw.cfg") + endif (APPLE) diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index e17a2cb25f..663a10787d 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -16,7 +16,7 @@ set(GAME_HEADER source_group(game FILES ${GAME} ${GAME_HEADER}) add_openmw_dir (mwrender - renderingmanager debugging sky player npcs creatures objects renderinginterface + renderingmanager debugging sky terrain player npcs creatures objects renderinginterface ) add_openmw_dir (mwinput @@ -75,6 +75,7 @@ add_definitions(${SOUND_DEFINE}) target_link_libraries(openmw ${OGRE_LIBRARIES} + ${OGRE_Terrain_LIBRARY} ${OIS_LIBRARIES} ${Boost_LIBRARIES} ${OPENAL_LIBRARY} diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 06339cdd40..b0b7c88c4a 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -26,6 +26,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const { rend.createScene("PlayerCam", 55, 5); mSkyManager = MWRender::SkyManager::create(rend.getWindow(), rend.getCamera(), resDir); + mTerrainManager = new TerrainManager(rend.getScene()); // Set default mipmap level (NB some APIs ignore this) TextureManager::getSingleton().setDefaultNumMipmaps(5); @@ -59,6 +60,7 @@ RenderingManager::~RenderingManager () { delete mPlayer; delete mSkyManager; + delete mTerrainManager; } MWRender::Npcs& RenderingManager::getNPCs(){ @@ -76,11 +78,13 @@ MWRender::Player& RenderingManager::getPlayer(){ void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store){ objects.removeCell(store); + mTerrainManager->cellRemoved(store); } void RenderingManager::cellAdded (MWWorld::Ptr::CellStore *store) { objects.buildStaticGeometry (*store); + mTerrainManager->cellAdded(store); } void RenderingManager::addObject (const MWWorld::Ptr& ptr){ diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 8d8c982324..5afbd9b78b 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -3,6 +3,7 @@ #include "sky.hpp" +#include "terrain.hpp" #include "debugging.hpp" #include "../mwworld/class.hpp" @@ -97,6 +98,7 @@ class RenderingManager: private RenderingInterface { void setAmbientMode(); SkyManager* mSkyManager; + TerrainManager* mTerrainManager; OEngine::Render::OgreRenderer &rend; Ogre::Camera* camera; MWRender::Npcs npcs; diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp new file mode 100644 index 0000000000..44c4991309 --- /dev/null +++ b/apps/openmw/mwrender/terrain.cpp @@ -0,0 +1,62 @@ +#include +#include + +#include "terrain.hpp" + +#include "components/esm/loadland.hpp" + +namespace MWRender +{ + TerrainManager::TerrainManager(Ogre::SceneManager* mgr) + { + mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions(); + + mTerrainGlobals->setMaxPixelError(8); + + mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mgr, + Ogre::Terrain::ALIGN_X_Z, ESM::Land::LAND_SIZE, + ESM::Land::REAL_SIZE); + + mTerrainGroup->setOrigin(Ogre::Vector3(ESM::Land::REAL_SIZE/2, + 0, + -ESM::Land::REAL_SIZE/2)); + + Ogre::Terrain::ImportData importSettings = + mTerrainGroup->getDefaultImportSettings(); + + importSettings.terrainSize = ESM::Land::LAND_SIZE; + importSettings.worldSize = ESM::Land::REAL_SIZE; + importSettings.minBatchSize = 9; + importSettings.maxBatchSize = 33; + + importSettings.deleteInputData = false; + } + + TerrainManager::~TerrainManager() + { + OGRE_DELETE mTerrainGroup; + OGRE_DELETE mTerrainGlobals; + } + + void TerrainManager::cellAdded(MWWorld::Ptr::CellStore *store) + { + int x = store->cell->getGridX(); + int y = store->cell->getGridY(); + + Ogre::Terrain::ImportData terrainData; + + terrainData.inputBias = 0; + terrainData.inputFloat = store->land->landData->heights; + + mTerrainGroup->defineTerrain(x, y, &terrainData); + + mTerrainGroup->loadTerrain(x, y, true); + } + + void TerrainManager::cellRemoved(MWWorld::Ptr::CellStore *store) + { + mTerrainGroup->removeTerrain(store->cell->getGridX(), + store->cell->getGridY()); + } + +} diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp new file mode 100644 index 0000000000..0a8b1ace0a --- /dev/null +++ b/apps/openmw/mwrender/terrain.hpp @@ -0,0 +1,31 @@ +#ifndef _GAME_RENDER_TERRAIN_H +#define _GAME_RENDER_TERRAIN_H + +#include "../mwworld/ptr.hpp" + +namespace Ogre{ + class SceneManager; + class TerrainGroup; + class TerrainGlobalOptions; +} + +namespace MWRender{ + + /** + * Implements the Morrowind terrain using the Ogre Terrain Component + */ + class TerrainManager{ + public: + TerrainManager(Ogre::SceneManager*); + virtual ~TerrainManager(); + + void cellAdded(MWWorld::Ptr::CellStore* store); + void cellRemoved(MWWorld::Ptr::CellStore* store); + private: + Ogre::TerrainGlobalOptions* mTerrainGlobals; + Ogre::TerrainGroup* mTerrainGroup; + }; + +} + +#endif // _GAME_RENDER_TERRAIN_H diff --git a/cmake/FindOGRE.cmake b/cmake/FindOGRE.cmake index ce3993805b..c3b471bb21 100644 --- a/cmake/FindOGRE.cmake +++ b/cmake/FindOGRE.cmake @@ -96,10 +96,25 @@ IF (OGRE_INCLUDE_DIR AND OGRE_LIBRARIES) ENDIF (OGRE_INCLUDE_DIR AND OGRE_LIBRARIES) IF (OGRE_FOUND) + # find terrain component + find_path(OGRE_Terrain_INCLUDE_DIR NAMES OgreTerrain.h HINTS ${OGRE_INCLUDE_DIR} PATH_SUFFIXES Terrain Components/Terrain/include) + set(OGRE_Terrain_LIBRARY_NAMES "OgreTerrain") + find_library(OGRE_Terrain_LIBRARY NAMES ${OGRE_Terrain_LIBRARY_NAMES} HINTS ${OGRE_LIB_DIR} PATH_SUFFIXES "" "release" "relwithdebinfo" "minsizerel") + if(OGRE_Terrain_INCLUDE_DIR AND OGRE_Terrain_LIBRARY) + SET(OGRE_Terrain_FOUND TRUE) + endif(OGRE_Terrain_INCLUDE_DIR AND OGRE_Terrain_LIBRARY) + IF (NOT OGRE_FIND_QUIETLY) MESSAGE(STATUS " libraries : ${OGRE_LIBRARIES} from ${OGRE_LIB_DIR}") MESSAGE(STATUS " includes : ${OGRE_INCLUDE_DIR}") MESSAGE(STATUS " plugins : ${OGRE_PLUGIN_DIR}") + IF (OGRE_Terrain_FOUND) + MESSAGE(STATUS "Ogre Terrain component found:") + MESSAGE(STATUS " include : ${OGRE_Terrain_INCLUDE_DIR}") + MESSAGE(STATUS " library : ${OGRE_Terrain_LIBRARY}") + ELSE (OGRE_Terrain_FOUND) + MESSAGE(FATAL_ERROR "Required Ogre terrain component not found") + ENDIF (OGRE_Terrain_FOUND) ENDIF (NOT OGRE_FIND_QUIETLY) ELSE (OGRE_FOUND) IF (OGRE_FIND_REQUIRED) diff --git a/components/esm/loadcell.hpp b/components/esm/loadcell.hpp index 671f702cab..a5d61f9304 100644 --- a/components/esm/loadcell.hpp +++ b/components/esm/loadcell.hpp @@ -119,6 +119,21 @@ struct Cell void load(ESMReader &esm); + bool isExterior() const + { + return !(data.flags & Interior); + } + + int getGridX() const + { + return data.gridX; + } + + int getGridY() const + { + return data.gridY; + } + // Restore the given reader to the stored position. Will try to open // the file matching the stored file name. If you want to read from // somewhere other than the file system, you need to pre-open the diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index 740d15a400..b8de98f0a6 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -19,14 +19,93 @@ void Land::load(ESMReader &esm) int cnt = 0; // Skip these here. Load the actual data when the cell is loaded. - if(esm.isNextSub("VNML")) {esm.skipHSubSize(12675);cnt++;} - if(esm.isNextSub("VHGT")) {esm.skipHSubSize(4232);cnt++;} - if(esm.isNextSub("WNAM")) esm.skipHSubSize(81); - if(esm.isNextSub("VCLR")) esm.skipHSubSize(12675); - if(esm.isNextSub("VTEX")) {esm.skipHSubSize(512);cnt++;} + if (esm.isNextSub("VNML")) + { + esm.skipHSubSize(12675); + cnt++; + } + if (esm.isNextSub("VHGT")) + { + esm.skipHSubSize(4232); + cnt++; + } + if (esm.isNextSub("WNAM")) + { + esm.skipHSubSize(81); + } + if (esm.isNextSub("VCLR")) + { + esm.skipHSubSize(12675); + } + if (esm.isNextSub("VTEX")) + { + esm.skipHSubSize(512); + cnt++; + } // We need all three of VNML, VHGT and VTEX in order to use the // landscape. hasData = (cnt == 3); + + dataLoaded = false; + landData = NULL; } + +void Land::loadData(ESMReader &esm) +{ + if (dataLoaded) + { + return; + } + + landData = new LandData; + + if (hasData) + { + esm.restoreContext(context); + + //esm.getHNExact(landData->normals, sizeof(VNML), "VNML"); + if (esm.isNextSub("VNML")) + { + esm.skipHSubSize(12675); + } + + VHGT rawHeights; + + esm.getHNExact(&rawHeights, sizeof(VHGT), "VHGT"); + int currentHeightOffset = rawHeights.heightOffset; + for (int y = 0; y < LAND_SIZE; y++) + { + currentHeightOffset += rawHeights.heightData[y * LAND_SIZE]; + landData->heights[y * LAND_SIZE] = currentHeightOffset * HEIGHT_SCALE; + + int tempOffset = currentHeightOffset; + for (int x = 1; x < LAND_SIZE; x++) + { + tempOffset += rawHeights.heightData[y * LAND_SIZE + x]; + landData->heights[x + y * LAND_SIZE] = tempOffset * HEIGHT_SCALE; + } + } + } + else + { + for (int i = 0; i < LAND_NUM_VERTS; i++) + { + landData->heights[i] = -256.0f * HEIGHT_SCALE; + } + } + + dataLoaded = true; +} + +void Land::unloadData() +{ + if (dataLoaded) + { + delete landData; + landData = NULL; + dataLoaded = false; + } +} + } diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index af91850ac0..898e7f529d 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -21,7 +21,51 @@ struct Land bool hasData; + bool dataLoaded; + + // number of vertices per side + static const int LAND_SIZE = 65; + + // cell terrain size in world coords + static const int REAL_SIZE = 8192; + + // total number of vertices + static const int LAND_NUM_VERTS = LAND_SIZE * LAND_SIZE; + + static const int HEIGHT_SCALE = 8; + +#pragma pack(push,1) + struct VHGT + { + float heightOffset; + int8_t heightData[LAND_NUM_VERTS]; + short unknown1; + char unknown2; + }; +#pragma pack(pop) + + typedef uint8_t VNML[LAND_NUM_VERTS * 3]; + + struct LandData + { + float heightOffset; + float heights[LAND_NUM_VERTS]; + //float normals[LAND_NUM_VERTS * 3]; + }; + + LandData *landData; + void load(ESMReader &esm); + + /** + * Actually loads data + */ + void loadData(ESMReader &esm); + + /** + * Frees memory allocated for land data + */ + void unloadData(); }; } #endif diff --git a/components/esm_store/cell_store.hpp b/components/esm_store/cell_store.hpp index d064312f10..7c2ee48fb4 100644 --- a/components/esm_store/cell_store.hpp +++ b/components/esm_store/cell_store.hpp @@ -96,7 +96,8 @@ namespace ESMS State_Unloaded, State_Preloaded, State_Loaded }; - CellStore (const ESM::Cell *cell_) : cell (cell_), mState (State_Unloaded) {} + CellStore (const ESM::Cell *cell_) : cell (cell_), mState (State_Unloaded), + land(NULL) {} const ESM::Cell *cell; State mState; @@ -124,6 +125,8 @@ namespace ESMS CellRefList statics; CellRefList weapons; + const Land* land; + void load (const ESMStore &store, ESMReader &esm) { if (mState!=State_Loaded) @@ -135,6 +138,11 @@ namespace ESMS loadRefs (store, esm); + if ( ! (cell->data.flags & ESM::Cell::Interior) ) + { + loadTerrain(cell->data.gridX, cell->data.gridY, store, esm); + } + mState = State_Loaded; } } @@ -180,6 +188,29 @@ namespace ESMS private: + void loadTerrain(int X, int Y, const ESMStore &store, ESMReader &esm) + { + // load terrain + Land *land = store.lands.search(X, Y); + if (land != NULL) + { + land->loadData(esm); + } + + this->land = land; + } + + void unloadTerrain(int X, int Y, const ESMStore &store) { + Land *land = store.lands.search(X,Y); + // unload terrain + if (land != NULL) + { + land->unloadData(); + } + + this->land = NULL; + } + template bool forEachImp (Functor& functor, List& list) { diff --git a/components/esm_store/reclists.hpp b/components/esm_store/reclists.hpp index 20a2e8ff95..e150f10854 100644 --- a/components/esm_store/reclists.hpp +++ b/components/esm_store/reclists.hpp @@ -235,7 +235,7 @@ namespace ESMS virtual void listIdentifier (std::vector& identifier) const {} // Find land for the given coordinates. Return null if no data. - const Land *search(int x, int y) const + Land *search(int x, int y) const { Lands::const_iterator it = lands.find(x); if(it==lands.end()) diff --git a/components/esm_store/store.hpp b/components/esm_store/store.hpp index e3bbf9e82c..83cd5ab16e 100644 --- a/components/esm_store/store.hpp +++ b/components/esm_store/store.hpp @@ -115,7 +115,7 @@ namespace ESMS recLists[REC_GLOB] = &globals; recLists[REC_GMST] = &gameSettings; recLists[REC_INGR] = &ingreds; - //recLists[REC_LAND] = &lands; + recLists[REC_LAND] = &lands; recLists[REC_LEVC] = &creatureLists; recLists[REC_LEVI] = &itemLists; recLists[REC_LIGH] = &lights; diff --git a/files/plugins.cfg.linux b/files/plugins.cfg.linux index b6e104351d..2921153b4f 100644 --- a/files/plugins.cfg.linux +++ b/files/plugins.cfg.linux @@ -7,6 +7,6 @@ PluginFolder=${OGRE_PLUGIN_DIR} Plugin=RenderSystem_GL Plugin=Plugin_ParticleFX Plugin=Plugin_OctreeSceneManager -# Plugin=Plugin_CgProgramManager +Plugin=Plugin_CgProgramManager diff --git a/files/plugins.cfg.mac b/files/plugins.cfg.mac index baaca44792..0c16bddaf7 100644 --- a/files/plugins.cfg.mac +++ b/files/plugins.cfg.mac @@ -7,6 +7,6 @@ PluginFolder= Plugin=RenderSystem_GL.dylib Plugin=Plugin_ParticleFX.dylib Plugin=Plugin_OctreeSceneManager.dylib -# Plugin=Plugin_CgProgramManager +Plugin=Plugin_CgProgramManager From 637302fc87a85fb3c67574861baef406734a7076 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Sat, 21 Jan 2012 17:59:12 +0000 Subject: [PATCH 007/488] Added blended textures to the terrain --- apps/openmw/mwrender/terrain.cpp | 150 ++++++++++++++++++++++++++++ apps/openmw/mwrender/terrain.hpp | 28 ++++++ components/esm/loadland.cpp | 19 ++++ components/esm/loadland.hpp | 8 ++ components/esm_store/cell_store.hpp | 2 + 5 files changed, 207 insertions(+) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 44c4991309..4d13b68893 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -48,9 +48,13 @@ namespace MWRender terrainData.inputBias = 0; terrainData.inputFloat = store->land->landData->heights; + std::map indexes; + initTerrainTextures(&terrainData, store, indexes); mTerrainGroup->defineTerrain(x, y, &terrainData); mTerrainGroup->loadTerrain(x, y, true); + Ogre::Terrain* terrain = mTerrainGroup->getTerrain(x,y); + initTerrainBlendMaps(terrain, store, indexes); } void TerrainManager::cellRemoved(MWWorld::Ptr::CellStore *store) @@ -59,4 +63,150 @@ namespace MWRender store->cell->getGridY()); } + void TerrainManager::initTerrainTextures(Ogre::Terrain::ImportData* terrainData, + MWWorld::Ptr::CellStore* store, + std::map& indexes) + { + //have a base texture for now, but this is probably not needed on most cells + terrainData->layerList.resize(1); + terrainData->layerList[0].worldSize = 256; + terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); + terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); + + const uint16_t* const textures = store->land->landData->textures; + for ( int y = 0; y < ESM::Land::LAND_TEXTURE_SIZE; y++ ) + { + for ( int x = 0; x < ESM::Land::LAND_TEXTURE_SIZE; x++ ) + { + const uint16_t ltexIndex = textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; + if ( ltexIndex == 0 ) + { + continue; + } + + const std::map::const_iterator it = indexes.find(ltexIndex); + + if ( it == indexes.end() ) + { + //NB: All vtex ids are +1 compared to the ltex ids + assert((int)ltexIndex - 1 > 0 && + store->landTextures->ltex.size() > (size_t)ltexIndex - 1 && + "LAND.VTEX must be within the bounds of the LTEX array"); + + std::string texture = store->landTextures->ltex[ltexIndex-1].texture; + //TODO this is needed due to MWs messed up texture handling + texture = texture.substr(0, texture.rfind(".")) + ".dds"; + + const size_t position = terrainData->layerList.size(); + terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); + + terrainData->layerList[position].worldSize = 256; + terrainData->layerList[position].textureNames.push_back("textures\\" + texture); + + //Normal map. This should be removed but it would require alterations to + //the material generator. Another option would be to use a 1x1 blank texture + terrainData->layerList[position].textureNames.push_back("textures\\" + texture); + + indexes[ltexIndex] = position; + } + } + } + + } + + void TerrainManager::initTerrainBlendMaps(Ogre::Terrain* terrain, + MWWorld::Ptr::CellStore* store, + const std::map& indexes) + { + const int blendSize = terrain->getLayerBlendMapSize(); + const int blendDist = TERRAIN_SHADE_DISTANCE * + (blendSize / ESM::Land::LAND_TEXTURE_SIZE); + + //zero out every map + std::map::const_iterator iter; + for ( iter = indexes.begin(); iter != indexes.end(); ++iter ) + { + float* pBlend = terrain->getLayerBlendMap(iter->second) + ->getBlendPointer(); + memset(pBlend, 0, sizeof(float) * blendSize * blendSize); + } + + //covert the ltex data into a set of blend maps + const uint16_t* const textures = store->land->landData->textures; + for ( int texY = 0; texY < ESM::Land::LAND_TEXTURE_SIZE; texY++ ) + { + for ( int texX = 0; texX < ESM::Land::LAND_TEXTURE_SIZE; texX++ ) + { + const uint16_t ltexIndex = textures[texY * ESM::Land::LAND_TEXTURE_SIZE + texX]; + if ( ltexIndex == 0 ){ + continue; + } + const int layerIndex = indexes.find(ltexIndex)->second; + + float* const pBlend = terrain->getLayerBlendMap(layerIndex) + ->getBlendPointer(); + + const int splatSize = blendSize / ESM::Land::LAND_TEXTURE_SIZE; + + //setup the bounds for the shading of this texture splat + const int startX = std::max(0, texX*splatSize - blendDist); + const int endX = std::min(blendSize, (texX+1)*splatSize + blendDist); + + const int startY = std::max(0, texY*splatSize - blendDist); + const int endY = std::min(blendSize, (texY+1)*splatSize + blendDist); + + for ( int blendX = startX; blendX < endX; blendX++ ) + { + for ( int blendY = startY; blendY < endY; blendY++ ) + { + assert(blendX >= 0 && blendX < blendSize && + "index must be within texture bounds"); + + assert(blendY >= 0 && blendY < blendSize && + "index must be within texture bounds"); + + //calculate the distance from the edge of the square + // to the point we are shading + int distX = texX*splatSize - blendX; + if ( distX < 0 ) + { + distX = std::max(0, blendX - (texX+1)*splatSize); + } + + int distY = texY*splatSize - blendY; + if ( distY < 0 ) + { + distY = std::max(0, blendY - (texY+1)*splatSize); + } + + float blendAmount = blendDist - std::sqrt((float)distX*distX + distY*distY); + blendAmount /= blendDist; + + //this is required as blendDist < sqrt(blendDist*blendDist + blendDist*blendDist) + //this means that the corners are slightly the "wrong" shape but totaly smooth + //shading for the edges + blendAmount = std::max( (float) 0.0, blendAmount); + + assert(blendAmount >= 0 && "Blend should never be negative"); + + //flips the y + const int index = blendSize*(blendSize - 1 - blendY) + blendX; + pBlend[index] += blendAmount; + pBlend[index] = std::min((float)1, pBlend[index]); + } + } + + } + } + + //update the maps + for ( iter = indexes.begin(); iter != indexes.end(); ++iter ) + { + Ogre::TerrainLayerBlendMap* blend = terrain->getLayerBlendMap(iter->second); + blend->dirty(); + blend->update(); + } + + } + } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 0a8b1ace0a..127c3f5f2f 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -1,12 +1,15 @@ #ifndef _GAME_RENDER_TERRAIN_H #define _GAME_RENDER_TERRAIN_H +#include + #include "../mwworld/ptr.hpp" namespace Ogre{ class SceneManager; class TerrainGroup; class TerrainGlobalOptions; + class Terrain; } namespace MWRender{ @@ -24,6 +27,31 @@ namespace MWRender{ private: Ogre::TerrainGlobalOptions* mTerrainGlobals; Ogre::TerrainGroup* mTerrainGroup; + + /** + * The distance that the current cell should be shaded into the neighbouring + * texture. The distance is in terms of the splat size of a texture + */ + static const float TERRAIN_SHADE_DISTANCE = 0.5; + + /** + * Setups up the list of textures for the cell + * @param terrainData the terrain data to setup the textures for + * @param indexes a mapping of ltex index to the terrain texture layer that + * can be used by initTerrainBlendMaps + */ + void initTerrainTextures(Ogre::Terrain::ImportData* terrainData, + MWWorld::Ptr::CellStore* store, + std::map& indexes); + + /** + * Creates the blend (splatting maps) for the given terrain from the ltex data. + * @param terrain the terrain object for the current cell + * @param indexes the mapping of ltex to blend map produced by initTerrainTextures + */ + void initTerrainBlendMaps(Ogre::Terrain* terrain, + MWWorld::Ptr::CellStore* store, + const std::map& indexes); }; } diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index b8de98f0a6..1d670036e3 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -86,6 +86,25 @@ void Land::loadData(ESMReader &esm) landData->heights[x + y * LAND_SIZE] = tempOffset * HEIGHT_SCALE; } } + + if (esm.isNextSub("WNAM")) + { + esm.skipHSubSize(81); + } + if (esm.isNextSub("VCLR")) + { + esm.skipHSubSize(12675); + } + //TODO fix magic numbers + uint16_t vtex[512]; + esm.getHNExact(&vtex, 512, "VTEX"); + + int readPos = 0; //bit ugly, but it works + for ( int y1 = 0; y1 < 4; y1++ ) + for ( int x1 = 0; x1 < 4; x1++ ) + for ( int y2 = 0; y2 < 4; y2++) + for ( int x2 = 0; x2 < 4; x2++ ) + landData->textures[(y1*4+y2)*16+(x1*4+x2)] = vtex[readPos++]; } else { diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index 898e7f529d..4219f3eb63 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -34,6 +34,12 @@ struct Land static const int HEIGHT_SCALE = 8; + //number of textures per side of land + static const int LAND_TEXTURE_SIZE = 16; + + //total number of textures per land + static const int LAND_NUM_TEXTURES = LAND_TEXTURE_SIZE * LAND_TEXTURE_SIZE; + #pragma pack(push,1) struct VHGT { @@ -51,6 +57,8 @@ struct Land float heightOffset; float heights[LAND_NUM_VERTS]; //float normals[LAND_NUM_VERTS * 3]; + uint16_t textures[LAND_NUM_TEXTURES]; + char colours[3 * LAND_NUM_VERTS]; }; LandData *landData; diff --git a/components/esm_store/cell_store.hpp b/components/esm_store/cell_store.hpp index 7c2ee48fb4..5310237fed 100644 --- a/components/esm_store/cell_store.hpp +++ b/components/esm_store/cell_store.hpp @@ -126,6 +126,7 @@ namespace ESMS CellRefList weapons; const Land* land; + const LTexList* landTextures; void load (const ESMStore &store, ESMReader &esm) { @@ -141,6 +142,7 @@ namespace ESMS if ( ! (cell->data.flags & ESM::Cell::Interior) ) { loadTerrain(cell->data.gridX, cell->data.gridY, store, esm); + landTextures = &store.landTexts; } mState = State_Loaded; From a0838369b2c11f98108845f685a67c7847c9f93b Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Sat, 21 Jan 2012 20:05:08 -0500 Subject: [PATCH 008/488] Very basic exterior water --- apps/openmw/mwrender/renderingmanager.cpp | 11 +++++++++-- apps/openmw/mwrender/renderingmanager.hpp | 1 + apps/openmw/mwrender/water.cpp | 19 +++++++++++++++++-- apps/openmw/mwrender/water.hpp | 7 +++++-- apps/openmw/mwworld/scene.cpp | 9 +++++++-- apps/openmw/mwworld/world.cpp | 2 +- 6 files changed, 40 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index b5fce4b447..b86f73ba49 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -84,6 +84,9 @@ MWRender::Player& RenderingManager::getPlayer(){ void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store){ objects.removeCell(store); + +} +void RenderingManager::removeWater (){ if(mWater){ delete mWater; mWater = 0; @@ -120,8 +123,12 @@ void RenderingManager::update (float duration){ } void RenderingManager::cellAdded (MWWorld::Ptr::CellStore *store){ - if(store->cell->data.flags & store->cell->HasWater) - mWater = new MWRender::Water(rend.getCamera(), store->cell->water); + if(store->cell->data.flags & store->cell->HasWater){ + if(mWater == 0) + mWater = new MWRender::Water(rend.getCamera(), store->cell); + //else + + } } diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 99926e4005..e35a807516 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -64,6 +64,7 @@ class RenderingManager: private RenderingInterface { bool toggleRenderMode(int mode); void removeCell (MWWorld::Ptr::CellStore *store); // TODO do we want this? + void removeWater(); void addObject (const MWWorld::Ptr& ptr); void removeObject (const MWWorld::Ptr& ptr); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 2ab2fee385..98730922cb 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,18 +1,21 @@ #include "water.hpp" namespace MWRender { - Water::Water (Ogre::Camera *camera, int top) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), mTop(top) { + Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) { try { Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) { } + mTop = cell->water; + + std::cout << "Making water\n"; mIsUnderwater = false; mCamera->addListener(this); mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, mTop); - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 14000, 14000, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*3 + 10000, CELL_SIZE * 3 + 10000, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); mWater = mSceneManager->createEntity("water"); @@ -23,6 +26,13 @@ namespace MWRender { mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); + + //if(!(cell->data.flags & cell->Interior)) + //{ + mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); + //} + //else + // mWaterNode->setPosition(10000, 0, 10000); //Don't mess with y mWaterNode->attachObject(mWater); } @@ -95,5 +105,10 @@ namespace MWRender { void Water::cameraDestroyed(Ogre::Camera *cam) { } + Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY){ + Ogre::Vector3 out = Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), 0, -gridY * CELL_SIZE - (CELL_SIZE / 2)); + + return out; + } } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 73057cc340..e07e93eefa 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -2,12 +2,13 @@ #define GAME_MWRENDER_WATER_H #include - +#include namespace MWRender { /// Water rendering class Water : Ogre::RenderTargetListener, Ogre::Camera::Listener { + static const int CELL_SIZE = 8192; Ogre::Camera *mCamera; Ogre::SceneManager *mSceneManager; Ogre::Viewport *mViewport; @@ -31,13 +32,15 @@ namespace MWRender { void cameraPreRenderScene(Ogre::Camera *cam); void cameraPostRenderScene(Ogre::Camera *cam); void cameraDestroyed(Ogre::Camera *cam); + Ogre::Vector3 getSceneNodeCoordinates(int gridX, int gridY); public: - Water (Ogre::Camera *camera, int top); + Water (Ogre::Camera *camera, const ESM::Cell* cell); ~Water(); void checkUnderwater(float y); + void changeCell(float x, float y); }; diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index fde4d6394a..12264913e6 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -75,7 +75,7 @@ namespace MWWorld mPhysics->removeObject (node->getName()); } } - mRendering.removeCell(active); + //mPhysics->removeObject("Unnamed_43"); mWorld->getLocalScripts().clearCell (active); mEnvironment.mMechanicsManager->dropActors (active); @@ -95,7 +95,6 @@ namespace MWWorld mActiveCells.insert(cell); if(result.second){ insertCell(*cell, mEnvironment); - mRendering.cellAdded (cell); mRendering.configureAmbient(*cell); } @@ -180,6 +179,7 @@ namespace MWWorld assert (iter!=mActiveCells.end()); mCurrentCell = *iter; + std::cout << "GridX: " << mCurrentCell->cell->data.gridX << "GridY: " << mCurrentCell->cell->data.gridY << "\n"; // adjust player playerCellChange (mWorld->getExterior(X, Y), position, adjustPlayerPos); @@ -188,6 +188,7 @@ namespace MWWorld mWorld->adjustSky(); mCellChanged = true; + mRendering.cellAdded(mCurrentCell); } //We need the ogre renderer and a scene node. @@ -214,6 +215,7 @@ namespace MWWorld void Scene::changeToInteriorCell (const std::string& cellName, const ESM::Position& position) { std::cout << "Changing to interior\n"; + mRendering.removeWater(); // remove active CellStoreCollection::iterator active = mActiveCells.begin(); @@ -227,6 +229,7 @@ namespace MWWorld Ptr::CellStore *cell = mWorld->getInterior(cellName); loadCell (cell); + // adjust player mCurrentCell = cell; @@ -236,12 +239,14 @@ namespace MWWorld mWorld->adjustSky(); mCellChanged = true; + mRendering.cellAdded(cell); } void Scene::changeToExteriorCell (const ESM::Position& position) { int x = 0; int y = 0; + mRendering.removeWater(); mWorld->positionToIndex (position.pos[0], position.pos[1], x, y); diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index d290e093b1..f02c71ed64 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -524,7 +524,7 @@ namespace MWWorld ptr.getRefData().getPosition().pos[2] = z; if (ptr==mPlayer->getPlayer()) { - //std::cout << "Current pos" << ptr.getRefData().getPosition().pos[1]; + //std::cout << "X:" << ptr.getRefData().getPosition().pos[0] << " Z: " << ptr.getRefData().getPosition().pos[1] << "\n"; mRendering.checkUnderwater( ptr.getRefData().getPosition().pos[2]); Ptr::CellStore *currentCell = mWorldScene->getCurrentCell(); From 1b1ce485024ddca13ad354ff4ee38c349dc00222 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sun, 22 Jan 2012 20:20:12 +0400 Subject: [PATCH 009/488] Now terrain manager donesn't try to load terrain for interiors --- apps/openmw/mwrender/renderingmanager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index b0b7c88c4a..471ce5c417 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -78,13 +78,15 @@ MWRender::Player& RenderingManager::getPlayer(){ void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store){ objects.removeCell(store); - mTerrainManager->cellRemoved(store); + if (store->cell->isExterior()) + mTerrainManager->cellRemoved(store); } void RenderingManager::cellAdded (MWWorld::Ptr::CellStore *store) { objects.buildStaticGeometry (*store); - mTerrainManager->cellAdded(store); + if (store->cell->isExterior()) + mTerrainManager->cellAdded(store); } void RenderingManager::addObject (const MWWorld::Ptr& ptr){ From e1aba44da643a1e776fa69873ebf8e59bdc5cd0f Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Sun, 22 Jan 2012 16:38:10 -0500 Subject: [PATCH 010/488] Switching cells in exterior works --- apps/openmw/mwrender/renderingmanager.cpp | 4 ++++ apps/openmw/mwrender/water.cpp | 20 ++++++++++++++++---- apps/openmw/mwrender/water.hpp | 2 +- apps/openmw/mwworld/scene.cpp | 2 -- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index b18415e659..3adfa6929a 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -133,9 +133,13 @@ void RenderingManager::waterAdded (MWWorld::Ptr::CellStore *store){ if(store->cell->data.flags & store->cell->HasWater){ if(mWater == 0) mWater = new MWRender::Water(rend.getCamera(), store->cell); + else + mWater->changeCell(store->cell); //else } + else + removeWater(); } diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 4ab809567c..5cf6df99e2 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -12,9 +12,9 @@ namespace MWRender { mIsUnderwater = false; - mCamera->addListener(this); + //mCamera->addListener(this); - mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, mTop); + mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*3 + 10000, CELL_SIZE * 3 + 10000, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); @@ -27,6 +27,7 @@ namespace MWRender { mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); + mWaterNode->setPosition(0, mTop, 0); if(!(cell->data.flags & cell->Interior)) @@ -40,7 +41,7 @@ namespace MWRender { Water::~Water() { Ogre::MeshManager::getSingleton().remove("water"); - mCamera->removeListener(this); + //mCamera->removeListener(this); mWaterNode->detachObject(mWater); mSceneManager->destroyEntity(mWater); @@ -51,6 +52,17 @@ namespace MWRender { Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); } + void Water::changeCell(const ESM::Cell* cell){ + mTop = cell->water; + + + + if(!(cell->data.flags & cell->Interior)) + mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); + else + mWaterNode->setPosition(0, mTop, 0); + } + void Water::preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt) { mWater->setVisible(false); @@ -106,7 +118,7 @@ namespace MWRender { void Water::cameraDestroyed(Ogre::Camera *cam) { } Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY){ - Ogre::Vector3 out = Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), 0, -gridY * CELL_SIZE - (CELL_SIZE / 2)); + Ogre::Vector3 out = Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); return out; } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index e07e93eefa..bdc9895fd6 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -40,7 +40,7 @@ namespace MWRender { ~Water(); void checkUnderwater(float y); - void changeCell(float x, float y); + void changeCell(const ESM::Cell* cell); }; diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index b222d5aec9..0b02a867ee 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -218,7 +218,6 @@ namespace MWWorld void Scene::changeToInteriorCell (const std::string& cellName, const ESM::Position& position) { std::cout << "Changing to interior\n"; - mRendering.removeWater(); // remove active CellStoreCollection::iterator active = mActiveCells.begin(); @@ -250,7 +249,6 @@ namespace MWWorld { int x = 0; int y = 0; - mRendering.removeWater(); mWorld->positionToIndex (position.pos[0], position.pos[1], x, y); From 3a1d7b7864145a00a05ec716e215b327928119a6 Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Sun, 22 Jan 2012 19:24:35 -0500 Subject: [PATCH 011/488] Huge Water --- apps/openmw/mwrender/water.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 5cf6df99e2..06ab53734c 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -7,7 +7,6 @@ namespace MWRender { Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) { } - std::cout << "Water Constructor\n"; mTop = cell->water; @@ -16,7 +15,7 @@ namespace MWRender { mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*3 + 10000, CELL_SIZE * 3 + 10000, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); mWater = mSceneManager->createEntity("water"); From cd0df082df5c83cca1170651d7b74068e701d146 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Mon, 23 Jan 2012 17:19:54 +0000 Subject: [PATCH 012/488] Textures are now blended between cells and the texture blending functions are now more abstract --- apps/openmw/mwrender/terrain.cpp | 103 ++++++++++++++++++++++++---- apps/openmw/mwrender/terrain.hpp | 28 +++++++- components/esm_store/cell_store.hpp | 32 +++++---- 3 files changed, 133 insertions(+), 30 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 4d13b68893..90dc917313 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -46,15 +46,17 @@ namespace MWRender Ogre::Terrain::ImportData terrainData; terrainData.inputBias = 0; - terrainData.inputFloat = store->land->landData->heights; + terrainData.inputFloat = store->land[1][1]->landData->heights; std::map indexes; - initTerrainTextures(&terrainData, store, indexes); + initTerrainTextures(&terrainData, store, 0, 0, + ESM::Land::LAND_TEXTURE_SIZE, indexes); mTerrainGroup->defineTerrain(x, y, &terrainData); mTerrainGroup->loadTerrain(x, y, true); Ogre::Terrain* terrain = mTerrainGroup->getTerrain(x,y); - initTerrainBlendMaps(terrain, store, indexes); + initTerrainBlendMaps(terrain, store, 0, 0, + ESM::Land::LAND_TEXTURE_SIZE, indexes); } void TerrainManager::cellRemoved(MWWorld::Ptr::CellStore *store) @@ -65,20 +67,29 @@ namespace MWRender void TerrainManager::initTerrainTextures(Ogre::Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, + int fromX, int fromY, int size, std::map& indexes) { + assert(store != NULL && "store must be a valid pointer"); + assert(terrainData != NULL && "Must have valid terrain data"); + assert(fromX >= 0 && fromY >= 0 && + "Can't get a terrain texture on terrain outside the current cell"); + assert(fromX+size <= ESM::Land::LAND_TEXTURE_SIZE && + fromY+size <= ESM::Land::LAND_TEXTURE_SIZE && + "Can't get a terrain texture on terrain outside the current cell"); + //have a base texture for now, but this is probably not needed on most cells terrainData->layerList.resize(1); terrainData->layerList[0].worldSize = 256; terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); - const uint16_t* const textures = store->land->landData->textures; - for ( int y = 0; y < ESM::Land::LAND_TEXTURE_SIZE; y++ ) + for ( int y = fromY - 1; y < fromY + size + 1; y++ ) { - for ( int x = 0; x < ESM::Land::LAND_TEXTURE_SIZE; x++ ) + for ( int x = fromX - 1; x < fromX + size + 1; x++ ) { - const uint16_t ltexIndex = textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; + const uint16_t ltexIndex = getLtexIndexAt(store, x, y); + //this is the base texture, so we can ignore this at present if ( ltexIndex == 0 ) { continue; @@ -89,7 +100,7 @@ namespace MWRender if ( it == indexes.end() ) { //NB: All vtex ids are +1 compared to the ltex ids - assert((int)ltexIndex - 1 > 0 && + assert((int)ltexIndex >= 0 && store->landTextures->ltex.size() > (size_t)ltexIndex - 1 && "LAND.VTEX must be within the bounds of the LTEX array"); @@ -116,11 +127,23 @@ namespace MWRender void TerrainManager::initTerrainBlendMaps(Ogre::Terrain* terrain, MWWorld::Ptr::CellStore* store, + int fromX, int fromY, int size, const std::map& indexes) { + assert(store != NULL && "store must be a valid pointer"); + assert(terrain != NULL && "Must have valid terrain"); + assert(fromX >= 0 && fromY >= 0 && + "Can't get a terrain texture on terrain outside the current cell"); + assert(fromX+size <= ESM::Land::LAND_TEXTURE_SIZE && + fromY+size <= ESM::Land::LAND_TEXTURE_SIZE && + "Can't get a terrain texture on terrain outside the current cell"); + + //size must be a power of 2 as we do divisions with a power of 2 number + //that need to result in an integer for correct splatting + assert( (size & (size - 1)) == 0 && "Size must be a power of 2"); + const int blendSize = terrain->getLayerBlendMapSize(); - const int blendDist = TERRAIN_SHADE_DISTANCE * - (blendSize / ESM::Land::LAND_TEXTURE_SIZE); + const int blendDist = TERRAIN_SHADE_DISTANCE * (blendSize / size); //zero out every map std::map::const_iterator iter; @@ -132,21 +155,24 @@ namespace MWRender } //covert the ltex data into a set of blend maps - const uint16_t* const textures = store->land->landData->textures; - for ( int texY = 0; texY < ESM::Land::LAND_TEXTURE_SIZE; texY++ ) + for ( int texY = fromY - 1; texY < fromY + size + 1; texY++ ) { - for ( int texX = 0; texX < ESM::Land::LAND_TEXTURE_SIZE; texX++ ) + for ( int texX = fromY - 1; texX < fromY + size + 1; texX++ ) { - const uint16_t ltexIndex = textures[texY * ESM::Land::LAND_TEXTURE_SIZE + texX]; + const uint16_t ltexIndex = getLtexIndexAt(store, texX, texY); + + //this is the ground texture, which is currently the base texture + //so don't alter the splatting map if ( ltexIndex == 0 ){ continue; } + const int layerIndex = indexes.find(ltexIndex)->second; float* const pBlend = terrain->getLayerBlendMap(layerIndex) ->getBlendPointer(); - const int splatSize = blendSize / ESM::Land::LAND_TEXTURE_SIZE; + const int splatSize = blendSize / size; //setup the bounds for the shading of this texture splat const int startX = std::max(0, texX*splatSize - blendDist); @@ -209,4 +235,51 @@ namespace MWRender } + + int TerrainManager::getLtexIndexAt(MWWorld::Ptr::CellStore* store, + int x, int y) + { + //check texture index falls within the 9 cell bounds + //as this function can't cope with anything above that + assert(x >= -ESM::Land::LAND_TEXTURE_SIZE && + y >= -ESM::Land::LAND_TEXTURE_SIZE && + "Trying to get land textures that are out of bounds"); + + assert(x < 2*ESM::Land::LAND_TEXTURE_SIZE && + y < 2*ESM::Land::LAND_TEXTURE_SIZE && + "Trying to get land textures that are out of bounds"); + + assert(store != NULL && "Store pointer must be valid"); + + //default center cell is indexed at (1,1) + int cellX = 1; + int cellY = 1; + + if ( x < 0 ) + { + cellX--; + x += ESM::Land::LAND_TEXTURE_SIZE; + } + else if ( x >= ESM::Land::LAND_TEXTURE_SIZE ) + { + cellX++; + x -= ESM::Land::LAND_TEXTURE_SIZE; + } + + if ( y < 0 ) + { + cellY--; + y += ESM::Land::LAND_TEXTURE_SIZE; + } + else if ( y >= ESM::Land::LAND_TEXTURE_SIZE ) + { + cellY++; + y -= ESM::Land::LAND_TEXTURE_SIZE; + } + + return store->land[cellX][cellY] + ->landData + ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; + } + } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 127c3f5f2f..c64b741d57 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -35,23 +35,49 @@ namespace MWRender{ static const float TERRAIN_SHADE_DISTANCE = 0.5; /** - * Setups up the list of textures for the cell + * Setups up the list of textures for part of a cell, using indexes as + * an output to create a mapping of MW LtexIndex to the relevant terrain + * layer + * * @param terrainData the terrain data to setup the textures for + * @param store the cell store for the given terrain cell + * @param fromX the ltex index in the current cell to start making the texture from + * @param fromY the ltex index in the current cell to start making the texture from + * @param size the size (number of splats) to get * @param indexes a mapping of ltex index to the terrain texture layer that * can be used by initTerrainBlendMaps */ void initTerrainTextures(Ogre::Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, + int fromX, int fromY, int size, std::map& indexes); /** * Creates the blend (splatting maps) for the given terrain from the ltex data. + * * @param terrain the terrain object for the current cell + * @param store the cell store for the given terrain cell + * @param fromX the ltex index in the current cell to start making the texture from + * @param fromY the ltex index in the current cell to start making the texture from + * @param size the size (number of splats) to get * @param indexes the mapping of ltex to blend map produced by initTerrainTextures */ void initTerrainBlendMaps(Ogre::Terrain* terrain, MWWorld::Ptr::CellStore* store, + int fromX, int fromY, int size, const std::map& indexes); + + /** + * Gets a LTEX index at the given point, assuming the current cell + * starts at (0,0). This supports getting values from the surrounding + * cells so negative x, y is acceptable + * + * @param store the cell store for the current cell + * @param x, y the splat position of the ltex index to get relative to the + * first splat of the current cell + */ + int getLtexIndexAt(MWWorld::Ptr::CellStore* store, int x, int y); + }; } diff --git a/components/esm_store/cell_store.hpp b/components/esm_store/cell_store.hpp index 5310237fed..951b0736a9 100644 --- a/components/esm_store/cell_store.hpp +++ b/components/esm_store/cell_store.hpp @@ -96,8 +96,8 @@ namespace ESMS State_Unloaded, State_Preloaded, State_Loaded }; - CellStore (const ESM::Cell *cell_) : cell (cell_), mState (State_Unloaded), - land(NULL) {} + CellStore (const ESM::Cell *cell_) : cell (cell_), mState (State_Unloaded) + {} const ESM::Cell *cell; State mState; @@ -125,7 +125,7 @@ namespace ESMS CellRefList statics; CellRefList weapons; - const Land* land; + const Land* land[3][3]; const LTexList* landTextures; void load (const ESMStore &store, ESMReader &esm) @@ -141,7 +141,16 @@ namespace ESMS if ( ! (cell->data.flags & ESM::Cell::Interior) ) { - loadTerrain(cell->data.gridX, cell->data.gridY, store, esm); + for ( size_t x = 0; x < 3; x++ ) + { + for ( size_t y = 0; y < 3; y++ ) + { + land[x][y] = loadTerrain(cell->data.gridX + x - 1, + cell->data.gridY + y - 1, + store, + esm); + } + } landTextures = &store.landTexts; } @@ -190,7 +199,7 @@ namespace ESMS private: - void loadTerrain(int X, int Y, const ESMStore &store, ESMReader &esm) + Land* loadTerrain(int X, int Y, const ESMStore &store, ESMReader &esm) { // load terrain Land *land = store.lands.search(X, Y); @@ -199,18 +208,13 @@ namespace ESMS land->loadData(esm); } - this->land = land; + return land; } void unloadTerrain(int X, int Y, const ESMStore &store) { - Land *land = store.lands.search(X,Y); - // unload terrain - if (land != NULL) - { - land->unloadData(); - } - - this->land = NULL; + assert (false && + "This function is not implemented due to the fact that we now store overlapping land blocks so" && + "we cannot be sure that the land segment is not being used by another CellStore"); } template From 5e3e6f916562ddeb8a7e3928551a0a810718e232 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Tue, 24 Jan 2012 13:29:31 +0000 Subject: [PATCH 013/488] Fixed some minor bugs, a cells terrain can now be rendered as 4 Ogre::Terrain objects, possibly giving a speed increase --- apps/openmw/mwrender/terrain.cpp | 184 +++++++++++++++++++++++++------ apps/openmw/mwrender/terrain.hpp | 30 +++++ 2 files changed, 179 insertions(+), 35 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 90dc917313..70ecdee73d 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "terrain.hpp" @@ -7,64 +8,167 @@ namespace MWRender { + + //---------------------------------------------------------------------------------------------- + TerrainManager::TerrainManager(Ogre::SceneManager* mgr) { mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions(); mTerrainGlobals->setMaxPixelError(8); + mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 1024 : 256); + + Ogre::TerrainMaterialGenerator::Profile* const activeProfile = + mTerrainGlobals->getDefaultMaterialGenerator() + ->getActiveProfile(); + Ogre::TerrainMaterialGeneratorA::SM2Profile* matProfile = + static_cast(activeProfile); + + matProfile->setLightmapEnabled(false); + matProfile->setReceiveDynamicShadowsEnabled(false); + + mLandSize = ESM::Land::LAND_SIZE; + mRealSize = ESM::Land::REAL_SIZE; + if ( SPLIT_TERRAIN ) + { + mLandSize = (mLandSize - 1)/2 + 1; + mRealSize /= 2; + } mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mgr, - Ogre::Terrain::ALIGN_X_Z, ESM::Land::LAND_SIZE, - ESM::Land::REAL_SIZE); + Ogre::Terrain::ALIGN_X_Z, + mLandSize, + mRealSize); - mTerrainGroup->setOrigin(Ogre::Vector3(ESM::Land::REAL_SIZE/2, - 0, - -ESM::Land::REAL_SIZE/2)); + mTerrainGroup->setOrigin(Ogre::Vector3(mRealSize/2, + 0, + -mRealSize/2)); - Ogre::Terrain::ImportData importSettings = + Ogre::Terrain::ImportData& importSettings = mTerrainGroup->getDefaultImportSettings(); - importSettings.terrainSize = ESM::Land::LAND_SIZE; - importSettings.worldSize = ESM::Land::REAL_SIZE; + importSettings.inputBias = 0; + importSettings.terrainSize = mLandSize; + importSettings.worldSize = mRealSize; importSettings.minBatchSize = 9; - importSettings.maxBatchSize = 33; + importSettings.maxBatchSize = mLandSize; - importSettings.deleteInputData = false; + importSettings.deleteInputData = true; } + //---------------------------------------------------------------------------------------------- + TerrainManager::~TerrainManager() { OGRE_DELETE mTerrainGroup; OGRE_DELETE mTerrainGlobals; } + //---------------------------------------------------------------------------------------------- + void TerrainManager::cellAdded(MWWorld::Ptr::CellStore *store) { - int x = store->cell->getGridX(); - int y = store->cell->getGridY(); + const int cellX = store->cell->getGridX(); + const int cellY = store->cell->getGridY(); - Ogre::Terrain::ImportData terrainData; + Ogre::Terrain::ImportData terrainData = + mTerrainGroup->getDefaultImportSettings(); - terrainData.inputBias = 0; - terrainData.inputFloat = store->land[1][1]->landData->heights; + if ( SPLIT_TERRAIN ) + { + //split the cell terrain into four segments + const int numTextures = ESM::Land::LAND_TEXTURE_SIZE/2; - std::map indexes; - initTerrainTextures(&terrainData, store, 0, 0, - ESM::Land::LAND_TEXTURE_SIZE, indexes); - mTerrainGroup->defineTerrain(x, y, &terrainData); + for ( int x = 0; x < 2; x++ ) + { + for ( int y = 0; y < 2; y++ ) + { + const int terrainX = cellX * 2 + x; + const int terrainY = cellY * 2 + y; + + terrainData.inputFloat = OGRE_ALLOC_T(float, + mLandSize*mLandSize, + Ogre::MEMCATEGORY_GEOMETRY); + + //copy the height data row by row + for ( int terrainCopyY = 0; terrainCopyY < mLandSize; terrainCopyY++ ) + { + //the offset of the current segment + const size_t yOffset = y * (mLandSize-1) * ESM::Land::LAND_SIZE + + //offset of the row + terrainCopyY * ESM::Land::LAND_SIZE; + const size_t xOffset = x * (mLandSize-1); + + memcpy(&terrainData.inputFloat[terrainCopyY*mLandSize], + &store->land[1][1]->landData->heights[yOffset + xOffset], + mLandSize*sizeof(float)); + } + + std::map indexes; + initTerrainTextures(&terrainData, store, + x * numTextures, y * numTextures, + numTextures, indexes); + + mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); + + mTerrainGroup->loadTerrain(terrainX, terrainY, true); + Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); + initTerrainBlendMaps(terrain, store, + x * numTextures, y * numTextures, + numTextures, indexes); + + } + } + } + else + { + //one cell is one terrain segment + terrainData.inputFloat = OGRE_ALLOC_T(float, + mLandSize*mLandSize, + Ogre::MEMCATEGORY_GEOMETRY); + + memcpy(&terrainData.inputFloat[0], + &store->land[1][1]->landData->heights[0], + mLandSize*mLandSize*sizeof(float)); + + std::map indexes; + initTerrainTextures(&terrainData, store, 0, 0, + ESM::Land::LAND_TEXTURE_SIZE, indexes); + + mTerrainGroup->defineTerrain(cellX, cellY, &terrainData); + + mTerrainGroup->loadTerrain(cellX, cellY, true); + Ogre::Terrain* terrain = mTerrainGroup->getTerrain(cellX, cellY); + initTerrainBlendMaps(terrain, store, 0, 0, + ESM::Land::LAND_TEXTURE_SIZE, indexes); + } - mTerrainGroup->loadTerrain(x, y, true); - Ogre::Terrain* terrain = mTerrainGroup->getTerrain(x,y); - initTerrainBlendMaps(terrain, store, 0, 0, - ESM::Land::LAND_TEXTURE_SIZE, indexes); } + //---------------------------------------------------------------------------------------------- + void TerrainManager::cellRemoved(MWWorld::Ptr::CellStore *store) { - mTerrainGroup->removeTerrain(store->cell->getGridX(), - store->cell->getGridY()); + if ( SPLIT_TERRAIN ) + { + for ( int x = 0; x < 2; x++ ) + { + for ( int y = 0; y < 2; y++ ) + { + mTerrainGroup->removeTerrain(store->cell->getGridX() * 2 + x, + store->cell->getGridY() * 2 + y); + } + } + } + else + { + mTerrainGroup->removeTerrain(store->cell->getGridX(), + store->cell->getGridY()); + } } + //---------------------------------------------------------------------------------------------- + void TerrainManager::initTerrainTextures(Ogre::Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, @@ -122,9 +226,10 @@ namespace MWRender } } } - } + //---------------------------------------------------------------------------------------------- + void TerrainManager::initTerrainBlendMaps(Ogre::Terrain* terrain, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, @@ -157,16 +262,24 @@ namespace MWRender //covert the ltex data into a set of blend maps for ( int texY = fromY - 1; texY < fromY + size + 1; texY++ ) { - for ( int texX = fromY - 1; texX < fromY + size + 1; texX++ ) + for ( int texX = fromX - 1; texX < fromX + size + 1; texX++ ) { const uint16_t ltexIndex = getLtexIndexAt(store, texX, texY); + //whilte texX is the splat index relative to the entire cell, + //relX is relative to the current segment we are splatting + const int relX = texX - fromX; + const int relY = texY - fromY; + //this is the ground texture, which is currently the base texture //so don't alter the splatting map if ( ltexIndex == 0 ){ continue; } + assert (indexes.find(ltexIndex) != indexes.end() && + "Texture layer must exist"); + const int layerIndex = indexes.find(ltexIndex)->second; float* const pBlend = terrain->getLayerBlendMap(layerIndex) @@ -175,11 +288,11 @@ namespace MWRender const int splatSize = blendSize / size; //setup the bounds for the shading of this texture splat - const int startX = std::max(0, texX*splatSize - blendDist); - const int endX = std::min(blendSize, (texX+1)*splatSize + blendDist); + const int startX = std::max(0, relX*splatSize - blendDist); + const int endX = std::min(blendSize, (relX+1)*splatSize + blendDist); - const int startY = std::max(0, texY*splatSize - blendDist); - const int endY = std::min(blendSize, (texY+1)*splatSize + blendDist); + const int startY = std::max(0, relY*splatSize - blendDist); + const int endY = std::min(blendSize, (relY+1)*splatSize + blendDist); for ( int blendX = startX; blendX < endX; blendX++ ) { @@ -193,16 +306,16 @@ namespace MWRender //calculate the distance from the edge of the square // to the point we are shading - int distX = texX*splatSize - blendX; + int distX = relX*splatSize - blendX; if ( distX < 0 ) { - distX = std::max(0, blendX - (texX+1)*splatSize); + distX = std::max(0, blendX - (relX+1)*splatSize); } - int distY = texY*splatSize - blendY; + int distY = relY*splatSize - blendY; if ( distY < 0 ) { - distY = std::max(0, blendY - (texY+1)*splatSize); + distY = std::max(0, blendY - (relY+1)*splatSize); } float blendAmount = blendDist - std::sqrt((float)distX*distX + distY*distY); @@ -235,6 +348,7 @@ namespace MWRender } + //---------------------------------------------------------------------------------------------- int TerrainManager::getLtexIndexAt(MWWorld::Ptr::CellStore* store, int x, int y) diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index c64b741d57..195741b0f7 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -16,6 +16,15 @@ namespace MWRender{ /** * Implements the Morrowind terrain using the Ogre Terrain Component + * + * This currently has two options as to how the terrain is rendered, one + * is that one cell is rendered as one Ogre::Terrain and the other that + * it is rendered as 4 Ogre::Terrain segments + * + * Splitting it up into segments has the following advantages + * * Seems to be faster + * * Terrain can now be culled more aggressivly using view frustram culling + * * We don't hit splat limits as much */ class TerrainManager{ public: @@ -28,6 +37,27 @@ namespace MWRender{ Ogre::TerrainGlobalOptions* mTerrainGlobals; Ogre::TerrainGroup* mTerrainGroup; + /** + * Should each cell be split into a further four Ogre::Terrain objects + * + * This has the advantage that it is possible to cull more terrain and + * we are more likly to be able to be able to fit all the required splats + * in (Ogre's default material generator only works with about 6 textures) + */ + static const bool SPLIT_TERRAIN = true; + + /** + * The length in verticies of a single terrain block. + * This takes into account the SPLIT_TERRAIN option + */ + int mLandSize; + + /** + * The length in game units of a single terrain block. + * This takes into account the SPLIT_TERRAIN option + */ + int mRealSize; + /** * The distance that the current cell should be shaded into the neighbouring * texture. The distance is in terms of the splat size of a texture From 9cc3af34e5dc8ebd8b90cee9a3e1bd3da48321b0 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Tue, 7 Feb 2012 12:41:08 +0000 Subject: [PATCH 014/488] Removed composite maps, fixes to texture sizes and unloading --- apps/openmw/mwrender/terrain.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 70ecdee73d..a468a44069 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -16,7 +16,20 @@ namespace MWRender mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions(); mTerrainGlobals->setMaxPixelError(8); - mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 1024 : 256); + mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setLightMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setCompositeMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setDefaultGlobalColourMapSize(256); + + //10 (default) didn't seem to be quite enough + mTerrainGlobals->setSkirtSize(32); + + /* + * Here we are pushing the composite map distance beyond the edge + * of the rendered terrain due to light issues (the lighting differs + * so much that it is very noticable + */ + mTerrainGlobals->setCompositeMapDistance(ESM::Land::REAL_SIZE*4); Ogre::TerrainMaterialGenerator::Profile* const activeProfile = mTerrainGlobals->getDefaultMaterialGenerator() @@ -27,6 +40,7 @@ namespace MWRender matProfile->setLightmapEnabled(false); matProfile->setReceiveDynamicShadowsEnabled(false); + //scale the land size if required mLandSize = ESM::Land::LAND_SIZE; mRealSize = ESM::Land::REAL_SIZE; if ( SPLIT_TERRAIN ) @@ -109,6 +123,8 @@ namespace MWRender x * numTextures, y * numTextures, numTextures, indexes); + assert( mTerrainGroup->getTerrain(cellX, cellY) == NULL && + "The terrain for this cell already existed" ); mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); mTerrainGroup->loadTerrain(terrainX, terrainY, true); @@ -143,6 +159,7 @@ namespace MWRender ESM::Land::LAND_TEXTURE_SIZE, indexes); } + mTerrainGroup->freeTemporaryResources(); } //---------------------------------------------------------------------------------------------- @@ -155,14 +172,14 @@ namespace MWRender { for ( int y = 0; y < 2; y++ ) { - mTerrainGroup->removeTerrain(store->cell->getGridX() * 2 + x, + mTerrainGroup->unloadTerrain(store->cell->getGridX() * 2 + x, store->cell->getGridY() * 2 + y); } } } else { - mTerrainGroup->removeTerrain(store->cell->getGridX(), + mTerrainGroup->unloadTerrain(store->cell->getGridX(), store->cell->getGridY()); } } From 286701e3a5ace50f60d60e0f8dcd9078b043f893 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Sat, 11 Feb 2012 20:54:29 +0000 Subject: [PATCH 015/488] Removed the flawed shading, updated textures, removed the need for a unused base texture --- apps/openmw/mwrender/terrain.cpp | 152 +++++++++++++++++++------------ apps/openmw/mwrender/terrain.hpp | 13 ++- 2 files changed, 107 insertions(+), 58 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index a468a44069..710a3ad05e 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -22,12 +22,11 @@ namespace MWRender mTerrainGlobals->setDefaultGlobalColourMapSize(256); //10 (default) didn't seem to be quite enough - mTerrainGlobals->setSkirtSize(32); + mTerrainGlobals->setSkirtSize(128); /* * Here we are pushing the composite map distance beyond the edge - * of the rendered terrain due to light issues (the lighting differs - * so much that it is very noticable + * of the rendered terrain due to not having setup lighting */ mTerrainGlobals->setCompositeMapDistance(ESM::Land::REAL_SIZE*4); @@ -38,6 +37,10 @@ namespace MWRender static_cast(activeProfile); matProfile->setLightmapEnabled(false); + matProfile->setLayerSpecularMappingEnabled(false); + + matProfile->setLayerParallaxMappingEnabled(false); + matProfile->setReceiveDynamicShadowsEnabled(false); //scale the land size if required @@ -85,8 +88,6 @@ namespace MWRender const int cellX = store->cell->getGridX(); const int cellY = store->cell->getGridY(); - Ogre::Terrain::ImportData terrainData = - mTerrainGroup->getDefaultImportSettings(); if ( SPLIT_TERRAIN ) { @@ -97,6 +98,9 @@ namespace MWRender { for ( int y = 0; y < 2; y++ ) { + Ogre::Terrain::ImportData terrainData = + mTerrainGroup->getDefaultImportSettings(); + const int terrainX = cellX * 2 + x; const int terrainY = cellY * 2 + y; @@ -138,6 +142,9 @@ namespace MWRender } else { + Ogre::Terrain::ImportData terrainData = + mTerrainGroup->getDefaultImportSettings(); + //one cell is one terrain segment terrainData.inputFloat = OGRE_ALLOC_T(float, mLandSize*mLandSize, @@ -199,19 +206,17 @@ namespace MWRender fromY+size <= ESM::Land::LAND_TEXTURE_SIZE && "Can't get a terrain texture on terrain outside the current cell"); - //have a base texture for now, but this is probably not needed on most cells - terrainData->layerList.resize(1); - terrainData->layerList[0].worldSize = 256; - terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); - terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); - + //there is one texture that we want to use as a base (i.e. it won't have + //a blend map). This holds the ltex index of that base texture so that + //we know not to include it in the output map + int baseTexture = -1; for ( int y = fromY - 1; y < fromY + size + 1; y++ ) { for ( int x = fromX - 1; x < fromX + size + 1; x++ ) { const uint16_t ltexIndex = getLtexIndexAt(store, x, y); //this is the base texture, so we can ignore this at present - if ( ltexIndex == 0 ) + if ( ltexIndex == baseTexture ) { continue; } @@ -225,21 +230,35 @@ namespace MWRender store->landTextures->ltex.size() > (size_t)ltexIndex - 1 && "LAND.VTEX must be within the bounds of the LTEX array"); - std::string texture = store->landTextures->ltex[ltexIndex-1].texture; - //TODO this is needed due to MWs messed up texture handling - texture = texture.substr(0, texture.rfind(".")) + ".dds"; + std::string texture; + if ( ltexIndex == 0 ) + { + texture = "_land_default.dds"; + } + else + { + texture = store->landTextures->ltex[ltexIndex-1].texture; + //TODO this is needed due to MWs messed up texture handling + texture = texture.substr(0, texture.rfind(".")) + ".dds"; + } const size_t position = terrainData->layerList.size(); terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); + Ogre::TexturePtr normDisp = getNormalDisp("textures\\" + texture); + terrainData->layerList[position].worldSize = 256; terrainData->layerList[position].textureNames.push_back("textures\\" + texture); + terrainData->layerList[position].textureNames.push_back(normDisp->getName()); - //Normal map. This should be removed but it would require alterations to - //the material generator. Another option would be to use a 1x1 blank texture - terrainData->layerList[position].textureNames.push_back("textures\\" + texture); - - indexes[ltexIndex] = position; + if ( baseTexture == -1 ) + { + baseTexture = ltexIndex; + } + else + { + indexes[ltexIndex] = position; + } } } } @@ -271,9 +290,9 @@ namespace MWRender std::map::const_iterator iter; for ( iter = indexes.begin(); iter != indexes.end(); ++iter ) { - float* pBlend = terrain->getLayerBlendMap(iter->second) - ->getBlendPointer(); - memset(pBlend, 0, sizeof(float) * blendSize * blendSize); + float* pBlend = terrain->getLayerBlendMap(iter->second) + ->getBlendPointer(); + memset(pBlend, 0, sizeof(float) * blendSize * blendSize); } //covert the ltex data into a set of blend maps @@ -288,15 +307,13 @@ namespace MWRender const int relX = texX - fromX; const int relY = texY - fromY; - //this is the ground texture, which is currently the base texture - //so don't alter the splatting map - if ( ltexIndex == 0 ){ + //check if it is the base texture (which isn't in the map) and + //if it is don't bother altering the blend map for it + if ( indexes.find(ltexIndex) == indexes.end() ) + { continue; } - assert (indexes.find(ltexIndex) != indexes.end() && - "Texture layer must exist"); - const int layerIndex = indexes.find(ltexIndex)->second; float* const pBlend = terrain->getLayerBlendMap(layerIndex) @@ -310,7 +327,7 @@ namespace MWRender const int startY = std::max(0, relY*splatSize - blendDist); const int endY = std::min(blendSize, (relY+1)*splatSize + blendDist); - + for ( int blendX = startX; blendX < endX; blendX++ ) { for ( int blendY = startY; blendY < endY; blendY++ ) @@ -321,34 +338,16 @@ namespace MWRender assert(blendY >= 0 && blendY < blendSize && "index must be within texture bounds"); - //calculate the distance from the edge of the square - // to the point we are shading - int distX = relX*splatSize - blendX; - if ( distX < 0 ) - { - distX = std::max(0, blendX - (relX+1)*splatSize); - } - - int distY = relY*splatSize - blendY; - if ( distY < 0 ) - { - distY = std::max(0, blendY - (relY+1)*splatSize); - } - - float blendAmount = blendDist - std::sqrt((float)distX*distX + distY*distY); - blendAmount /= blendDist; - - //this is required as blendDist < sqrt(blendDist*blendDist + blendDist*blendDist) - //this means that the corners are slightly the "wrong" shape but totaly smooth - //shading for the edges - blendAmount = std::max( (float) 0.0, blendAmount); - - assert(blendAmount >= 0 && "Blend should never be negative"); - - //flips the y const int index = blendSize*(blendSize - 1 - blendY) + blendX; - pBlend[index] += blendAmount; - pBlend[index] = std::min((float)1, pBlend[index]); + if ( blendX >= relX*splatSize && blendX < (relX+1)*splatSize && + blendY >= relY*splatSize && blendY < (relY+1)*splatSize ) + { + pBlend[index] = 1; + } + else + { + pBlend[index] = std::max((float)pBlend[index], 0.5f); + } } } @@ -413,4 +412,43 @@ namespace MWRender ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; } + //---------------------------------------------------------------------------------------------- + + Ogre::TexturePtr TerrainManager::getNormalDisp(const std::string& fileName) + { + Ogre::TextureManager* const texMgr = Ogre::TextureManager::getSingletonPtr(); + const std::string normalTextureName = fileName.substr(0, fileName.rfind(".")) + + "_n.dds"; + if ( !texMgr->getByName(normalTextureName).isNull() ) + { + return texMgr->getByName(normalTextureName); + } + + const std::string textureName = "default_terrain_normal"; + if ( !texMgr->getByName(textureName).isNull() ) + { + return texMgr->getByName(textureName); + } + + Ogre::TexturePtr tex = texMgr->createManual( + textureName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + Ogre::TEX_TYPE_2D, 1, 1, 0, Ogre::PF_BYTE_BGRA); + + Ogre::HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); + + pixelBuffer->lock(Ogre::HardwareBuffer::HBL_NORMAL); + const Ogre::PixelBox& pixelBox = pixelBuffer->getCurrentLock(); + + Ogre::uint8* pDest = static_cast(pixelBox.data); + + *pDest++ = 128; // B + *pDest++ = 128; // G + *pDest++ = 128; // R + *pDest++ = 0; // A + + pixelBuffer->unlock(); + + return tex; + } + } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 195741b0f7..548d00eab3 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -62,7 +62,7 @@ namespace MWRender{ * The distance that the current cell should be shaded into the neighbouring * texture. The distance is in terms of the splat size of a texture */ - static const float TERRAIN_SHADE_DISTANCE = 0.5; + static const float TERRAIN_SHADE_DISTANCE = 0.25f; /** * Setups up the list of textures for part of a cell, using indexes as @@ -107,6 +107,17 @@ namespace MWRender{ * first splat of the current cell */ int getLtexIndexAt(MWWorld::Ptr::CellStore* store, int x, int y); + + /** + * Retrives the texture that is the normal and parallax map for the + * terrain. If it doesn't exist a blank texture is used + * + * The file name of the texture should be the same as the file name of + * the base diffuse texture, but with _n appended before the extension + * + * @param fileName the name of the *diffuse* texture + */ + Ogre::TexturePtr getNormalDisp(const std::string& fileName); }; From f34b2c73c5f81f15a02ee9a4fe878ff005ff4e37 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 27 Feb 2012 19:44:52 +0100 Subject: [PATCH 016/488] committing the terrain material generator from ogre 1.7.4, it seems to be almost impossible to make a derived class of TerrainMaterialGeneratorA because of the many classes it contains and the inter-relationships between them; just adding the whole source makes it a lot easier to modify if we decide to update this source from OGRE upstream at any point (which seems unlikely), we can take the diff from this commit on to see the changes we did to the material generator --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwrender/terrain.cpp | 18 +- apps/openmw/mwrender/terrainmaterial.cpp | 1656 ++++++++++++++++++++++ apps/openmw/mwrender/terrainmaterial.hpp | 261 ++++ 4 files changed, 1932 insertions(+), 5 deletions(-) create mode 100644 apps/openmw/mwrender/terrainmaterial.cpp create mode 100644 apps/openmw/mwrender/terrainmaterial.hpp diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 663a10787d..8ee865a0bf 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -16,7 +16,7 @@ set(GAME_HEADER source_group(game FILES ${GAME} ${GAME_HEADER}) add_openmw_dir (mwrender - renderingmanager debugging sky terrain player npcs creatures objects renderinginterface + renderingmanager debugging sky terrain terrainmaterial player npcs creatures objects renderinginterface ) add_openmw_dir (mwinput diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 70ecdee73d..568ed37415 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -1,11 +1,13 @@ #include #include -#include +#include "terrainmaterial.hpp" #include "terrain.hpp" #include "components/esm/loadland.hpp" +using namespace Ogre; + namespace MWRender { @@ -18,15 +20,23 @@ namespace MWRender mTerrainGlobals->setMaxPixelError(8); mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 1024 : 256); + Ogre::TerrainMaterialGeneratorPtr matGen; + TerrainMaterialGeneratorB* matGenP = new TerrainMaterialGeneratorB(); + matGen.bind(matGenP); + mTerrainGlobals->setDefaultMaterialGenerator(matGen); + Ogre::TerrainMaterialGenerator::Profile* const activeProfile = mTerrainGlobals->getDefaultMaterialGenerator() ->getActiveProfile(); - Ogre::TerrainMaterialGeneratorA::SM2Profile* matProfile = - static_cast(activeProfile); + TerrainMaterialGeneratorB::SM2Profile* matProfile = + static_cast(activeProfile); matProfile->setLightmapEnabled(false); matProfile->setReceiveDynamicShadowsEnabled(false); - + matProfile->setLayerNormalMappingEnabled(false); + //matProfile->setLayerParallaxMappingEnabled(false); + matProfile->setLayerSpecularMappingEnabled(false); + mLandSize = ESM::Land::LAND_SIZE; mRealSize = ESM::Land::REAL_SIZE; if ( SPLIT_TERRAIN ) diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp new file mode 100644 index 0000000000..313a4a90cf --- /dev/null +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -0,0 +1,1656 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org/ + +Copyright (c) 2000-2011 Torus Knot Software Ltd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ +#include "terrainmaterial.hpp" +#include "OgreTerrain.h" +#include "OgreMaterialManager.h" +#include "OgreTechnique.h" +#include "OgrePass.h" +#include "OgreTextureUnitState.h" +#include "OgreGpuProgramManager.h" +#include "OgreHighLevelGpuProgramManager.h" +#include "OgreHardwarePixelBuffer.h" +#include "OgreShadowCameraSetupPSSM.h" + +namespace Ogre +{ + //--------------------------------------------------------------------- + TerrainMaterialGeneratorB::TerrainMaterialGeneratorB() + { + // define the layers + // We expect terrain textures to have no alpha, so we use the alpha channel + // in the albedo texture to store specular reflection + // similarly we double-up the normal and height (for parallax) + mLayerDecl.samplers.push_back(TerrainLayerSampler("albedo_specular", PF_BYTE_RGBA)); + mLayerDecl.samplers.push_back(TerrainLayerSampler("normal_height", PF_BYTE_RGBA)); + + mLayerDecl.elements.push_back( + TerrainLayerSamplerElement(0, TLSS_ALBEDO, 0, 3)); + mLayerDecl.elements.push_back( + TerrainLayerSamplerElement(0, TLSS_SPECULAR, 3, 1)); + mLayerDecl.elements.push_back( + TerrainLayerSamplerElement(1, TLSS_NORMAL, 0, 3)); + mLayerDecl.elements.push_back( + TerrainLayerSamplerElement(1, TLSS_HEIGHT, 3, 1)); + + + mProfiles.push_back(OGRE_NEW SM2Profile(this, "SM2", "Profile for rendering on Shader Model 2 capable cards")); + // TODO - check hardware capabilities & use fallbacks if required (more profiles needed) + setActiveProfile("SM2"); + + } + //--------------------------------------------------------------------- + TerrainMaterialGeneratorB::~TerrainMaterialGeneratorB() + { + + } + //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + TerrainMaterialGeneratorB::SM2Profile::SM2Profile(TerrainMaterialGenerator* parent, const String& name, const String& desc) + : Profile(parent, name, desc) + , mShaderGen(0) + , mLayerNormalMappingEnabled(true) + , mLayerParallaxMappingEnabled(true) + , mLayerSpecularMappingEnabled(true) + , mGlobalColourMapEnabled(true) + , mLightmapEnabled(true) + , mCompositeMapEnabled(true) + , mReceiveDynamicShadows(true) + , mPSSM(0) + , mDepthShadows(false) + , mLowLodShadows(false) + { + + } + //--------------------------------------------------------------------- + TerrainMaterialGeneratorB::SM2Profile::~SM2Profile() + { + OGRE_DELETE mShaderGen; + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::requestOptions(Terrain* terrain) + { + terrain->_setMorphRequired(true); + terrain->_setNormalMapRequired(true); + terrain->_setLightMapRequired(mLightmapEnabled, true); + terrain->_setCompositeMapRequired(mCompositeMapEnabled); + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setLayerNormalMappingEnabled(bool enabled) + { + if (enabled != mLayerNormalMappingEnabled) + { + mLayerNormalMappingEnabled = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setLayerParallaxMappingEnabled(bool enabled) + { + if (enabled != mLayerParallaxMappingEnabled) + { + mLayerParallaxMappingEnabled = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setLayerSpecularMappingEnabled(bool enabled) + { + if (enabled != mLayerSpecularMappingEnabled) + { + mLayerSpecularMappingEnabled = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setGlobalColourMapEnabled(bool enabled) + { + if (enabled != mGlobalColourMapEnabled) + { + mGlobalColourMapEnabled = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setLightmapEnabled(bool enabled) + { + if (enabled != mLightmapEnabled) + { + mLightmapEnabled = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setCompositeMapEnabled(bool enabled) + { + if (enabled != mCompositeMapEnabled) + { + mCompositeMapEnabled = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setReceiveDynamicShadowsEnabled(bool enabled) + { + if (enabled != mReceiveDynamicShadows) + { + mReceiveDynamicShadows = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setReceiveDynamicShadowsPSSM(PSSMShadowCameraSetup* pssmSettings) + { + if (pssmSettings != mPSSM) + { + mPSSM = pssmSettings; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setReceiveDynamicShadowsDepth(bool enabled) + { + if (enabled != mDepthShadows) + { + mDepthShadows = enabled; + mParent->_markChanged(); + } + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setReceiveDynamicShadowsLowLod(bool enabled) + { + if (enabled != mLowLodShadows) + { + mLowLodShadows = enabled; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + uint8 TerrainMaterialGeneratorB::SM2Profile::getMaxLayers(const Terrain* terrain) const + { + // count the texture units free + uint8 freeTextureUnits = 16; + // lightmap + --freeTextureUnits; + // normalmap + --freeTextureUnits; + // colourmap + if (terrain->getGlobalColourMapEnabled()) + --freeTextureUnits; + if (isShadowingEnabled(HIGH_LOD, terrain)) + { + uint numShadowTextures = 1; + if (getReceiveDynamicShadowsPSSM()) + { + numShadowTextures = getReceiveDynamicShadowsPSSM()->getSplitCount(); + } + freeTextureUnits -= numShadowTextures; + } + + // each layer needs 2.25 units (1xdiffusespec, 1xnormalheight, 0.25xblend) + return static_cast(freeTextureUnits / 2.25f); + + + } + //--------------------------------------------------------------------- + MaterialPtr TerrainMaterialGeneratorB::SM2Profile::generate(const Terrain* terrain) + { + // re-use old material if exists + MaterialPtr mat = terrain->_getMaterial(); + if (mat.isNull()) + { + MaterialManager& matMgr = MaterialManager::getSingleton(); + + // it's important that the names are deterministic for a given terrain, so + // use the terrain pointer as an ID + const String& matName = terrain->getMaterialName(); + mat = matMgr.getByName(matName); + if (mat.isNull()) + { + mat = matMgr.create(matName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + } + } + // clear everything + mat->removeAllTechniques(); + + // Automatically disable normal & parallax mapping if card cannot handle it + // We do this rather than having a specific technique for it since it's simpler + GpuProgramManager& gmgr = GpuProgramManager::getSingleton(); + if (!gmgr.isSyntaxSupported("ps_3_0") && !gmgr.isSyntaxSupported("ps_2_x") + && !gmgr.isSyntaxSupported("fp40") && !gmgr.isSyntaxSupported("arbfp1")) + { + setLayerNormalMappingEnabled(false); + setLayerParallaxMappingEnabled(false); + } + + addTechnique(mat, terrain, HIGH_LOD); + + // LOD + if(mCompositeMapEnabled) + { + addTechnique(mat, terrain, LOW_LOD); + Material::LodValueList lodValues; + lodValues.push_back(TerrainGlobalOptions::getSingleton().getCompositeMapDistance()); + mat->setLodLevels(lodValues); + Technique* lowLodTechnique = mat->getTechnique(1); + lowLodTechnique->setLodIndex(1); + } + + updateParams(mat, terrain); + + return mat; + + } + //--------------------------------------------------------------------- + MaterialPtr TerrainMaterialGeneratorB::SM2Profile::generateForCompositeMap(const Terrain* terrain) + { + // re-use old material if exists + MaterialPtr mat = terrain->_getCompositeMapMaterial(); + if (mat.isNull()) + { + MaterialManager& matMgr = MaterialManager::getSingleton(); + + // it's important that the names are deterministic for a given terrain, so + // use the terrain pointer as an ID + const String& matName = terrain->getMaterialName() + "/comp"; + mat = matMgr.getByName(matName); + if (mat.isNull()) + { + mat = matMgr.create(matName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + } + } + // clear everything + mat->removeAllTechniques(); + + addTechnique(mat, terrain, RENDER_COMPOSITE_MAP); + + updateParamsForCompositeMap(mat, terrain); + + return mat; + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::addTechnique( + const MaterialPtr& mat, const Terrain* terrain, TechniqueType tt) + { + + Technique* tech = mat->createTechnique(); + + // Only supporting one pass + Pass* pass = tech->createPass(); + + GpuProgramManager& gmgr = GpuProgramManager::getSingleton(); + HighLevelGpuProgramManager& hmgr = HighLevelGpuProgramManager::getSingleton(); + if (!mShaderGen) + { + bool check2x = mLayerNormalMappingEnabled || mLayerParallaxMappingEnabled; + if (hmgr.isLanguageSupported("cg")) + mShaderGen = OGRE_NEW ShaderHelperCg(); + else if (hmgr.isLanguageSupported("hlsl") && + ((check2x && gmgr.isSyntaxSupported("ps_2_x")) || + (!check2x && gmgr.isSyntaxSupported("ps_2_0")))) + mShaderGen = OGRE_NEW ShaderHelperHLSL(); + else if (hmgr.isLanguageSupported("glsl")) + mShaderGen = OGRE_NEW ShaderHelperGLSL(); + else + { + // todo + } + + // check SM3 features + mSM3Available = GpuProgramManager::getSingleton().isSyntaxSupported("ps_3_0"); + + } + HighLevelGpuProgramPtr vprog = mShaderGen->generateVertexProgram(this, terrain, tt); + HighLevelGpuProgramPtr fprog = mShaderGen->generateFragmentProgram(this, terrain, tt); + + pass->setVertexProgram(vprog->getName()); + pass->setFragmentProgram(fprog->getName()); + + if (tt == HIGH_LOD || tt == RENDER_COMPOSITE_MAP) + { + // global normal map + TextureUnitState* tu = pass->createTextureUnitState(); + tu->setTextureName(terrain->getTerrainNormalMap()->getName()); + tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); + + // global colour map + if (terrain->getGlobalColourMapEnabled() && isGlobalColourMapEnabled()) + { + tu = pass->createTextureUnitState(terrain->getGlobalColourMap()->getName()); + tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); + } + + // light map + if (isLightmapEnabled()) + { + tu = pass->createTextureUnitState(terrain->getLightmap()->getName()); + tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); + } + + // blend maps + uint maxLayers = getMaxLayers(terrain); + uint numBlendTextures = std::min(terrain->getBlendTextureCount(maxLayers), terrain->getBlendTextureCount()); + uint numLayers = std::min(maxLayers, static_cast(terrain->getLayerCount())); + for (uint i = 0; i < numBlendTextures; ++i) + { + tu = pass->createTextureUnitState(terrain->getBlendTextureName(i)); + tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); + } + + // layer textures + for (uint i = 0; i < numLayers; ++i) + { + // diffuse / specular + tu = pass->createTextureUnitState(terrain->getLayerTextureName(i, 0)); + // normal / height + tu = pass->createTextureUnitState(terrain->getLayerTextureName(i, 1)); + } + + } + else + { + // LOW_LOD textures + // composite map + TextureUnitState* tu = pass->createTextureUnitState(); + tu->setTextureName(terrain->getCompositeMap()->getName()); + tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); + + // That's it! + + } + + // Add shadow textures (always at the end) + if (isShadowingEnabled(tt, terrain)) + { + uint numTextures = 1; + if (getReceiveDynamicShadowsPSSM()) + { + numTextures = getReceiveDynamicShadowsPSSM()->getSplitCount(); + } + for (uint i = 0; i < numTextures; ++i) + { + TextureUnitState* tu = pass->createTextureUnitState(); + tu->setContentType(TextureUnitState::CONTENT_SHADOW); + tu->setTextureAddressingMode(TextureUnitState::TAM_BORDER); + tu->setTextureBorderColour(ColourValue::White); + } + } + + } + //--------------------------------------------------------------------- + bool TerrainMaterialGeneratorB::SM2Profile::isShadowingEnabled(TechniqueType tt, const Terrain* terrain) const + { + return getReceiveDynamicShadowsEnabled() && tt != RENDER_COMPOSITE_MAP && + (tt != LOW_LOD || mLowLodShadows) && + terrain->getSceneManager()->isShadowTechniqueTextureBased(); + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::updateParams(const MaterialPtr& mat, const Terrain* terrain) + { + mShaderGen->updateParams(this, mat, terrain, false); + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::updateParamsForCompositeMap(const MaterialPtr& mat, const Terrain* terrain) + { + mShaderGen->updateParams(this, mat, terrain, true); + } + //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::generateVertexProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramPtr ret = createVertexProgram(prof, terrain, tt); + + StringUtil::StrStreamType sourceStr; + generateVertexProgramSource(prof, terrain, tt, sourceStr); + ret->setSource(sourceStr.str()); + ret->load(); + defaultVpParams(prof, terrain, tt, ret); +#if OGRE_DEBUG_MODE + LogManager::getSingleton().stream(LML_TRIVIAL) << "*** Terrain Vertex Program: " + << ret->getName() << " ***\n" << ret->getSource() << "\n*** ***"; +#endif + + return ret; + + } + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::generateFragmentProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramPtr ret = createFragmentProgram(prof, terrain, tt); + + StringUtil::StrStreamType sourceStr; + generateFragmentProgramSource(prof, terrain, tt, sourceStr); + ret->setSource(sourceStr.str()); + ret->load(); + defaultFpParams(prof, terrain, tt, ret); + +#if OGRE_DEBUG_MODE + LogManager::getSingleton().stream(LML_TRIVIAL) << "*** Terrain Fragment Program: " + << ret->getName() << " ***\n" << ret->getSource() << "\n*** ***"; +#endif + + return ret; + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::generateVertexProgramSource( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + generateVpHeader(prof, terrain, tt, outStream); + + if (tt != LOW_LOD) + { + uint maxLayers = prof->getMaxLayers(terrain); + uint numLayers = std::min(maxLayers, static_cast(terrain->getLayerCount())); + + for (uint i = 0; i < numLayers; ++i) + generateVpLayer(prof, terrain, tt, i, outStream); + } + + generateVpFooter(prof, terrain, tt, outStream); + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::generateFragmentProgramSource( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + generateFpHeader(prof, terrain, tt, outStream); + + if (tt != LOW_LOD) + { + uint maxLayers = prof->getMaxLayers(terrain); + uint numLayers = std::min(maxLayers, static_cast(terrain->getLayerCount())); + + for (uint i = 0; i < numLayers; ++i) + generateFpLayer(prof, terrain, tt, i, outStream); + } + + generateFpFooter(prof, terrain, tt, outStream); + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::defaultVpParams( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const HighLevelGpuProgramPtr& prog) + { + GpuProgramParametersSharedPtr params = prog->getDefaultParameters(); + params->setIgnoreMissingParams(true); + params->setNamedAutoConstant("worldMatrix", GpuProgramParameters::ACT_WORLD_MATRIX); + params->setNamedAutoConstant("viewProjMatrix", GpuProgramParameters::ACT_VIEWPROJ_MATRIX); + params->setNamedAutoConstant("lodMorph", GpuProgramParameters::ACT_CUSTOM, + Terrain::LOD_MORPH_CUSTOM_PARAM); + params->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); + + if (prof->isShadowingEnabled(tt, terrain)) + { + uint numTextures = 1; + if (prof->getReceiveDynamicShadowsPSSM()) + { + numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); + } + for (uint i = 0; i < numTextures; ++i) + { + params->setNamedAutoConstant("texViewProjMatrix" + StringConverter::toString(i), + GpuProgramParameters::ACT_TEXTURE_VIEWPROJ_MATRIX, i); + if (prof->getReceiveDynamicShadowsDepth()) + { + params->setNamedAutoConstant("depthRange" + StringConverter::toString(i), + GpuProgramParameters::ACT_SHADOW_SCENE_DEPTH_RANGE, i); + } + } + } + + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::defaultFpParams( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const HighLevelGpuProgramPtr& prog) + { + GpuProgramParametersSharedPtr params = prog->getDefaultParameters(); + params->setIgnoreMissingParams(true); + + params->setNamedAutoConstant("ambient", GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR); + params->setNamedAutoConstant("lightPosObjSpace", GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, 0); + params->setNamedAutoConstant("lightDiffuseColour", GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, 0); + params->setNamedAutoConstant("lightSpecularColour", GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR, 0); + params->setNamedAutoConstant("eyePosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); + params->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); + + if (prof->isShadowingEnabled(tt, terrain)) + { + uint numTextures = 1; + if (prof->getReceiveDynamicShadowsPSSM()) + { + PSSMShadowCameraSetup* pssm = prof->getReceiveDynamicShadowsPSSM(); + numTextures = pssm->getSplitCount(); + Vector4 splitPoints; + const PSSMShadowCameraSetup::SplitPointList& splitPointList = pssm->getSplitPoints(); + // Populate from split point 1, not 0, since split 0 isn't useful (usually 0) + for (uint i = 1; i < numTextures; ++i) + { + splitPoints[i-1] = splitPointList[i]; + } + params->setNamedConstant("pssmSplitPoints", splitPoints); + } + + if (prof->getReceiveDynamicShadowsDepth()) + { + size_t samplerOffset = (tt == HIGH_LOD) ? mShadowSamplerStartHi : mShadowSamplerStartLo; + for (uint i = 0; i < numTextures; ++i) + { + params->setNamedAutoConstant("inverseShadowmapSize" + StringConverter::toString(i), + GpuProgramParameters::ACT_INVERSE_TEXTURE_SIZE, i + samplerOffset); + } + } + } + + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::updateParams( + const SM2Profile* prof, const MaterialPtr& mat, const Terrain* terrain, bool compositeMap) + { + Pass* p = mat->getTechnique(0)->getPass(0); + if (compositeMap) + { + updateVpParams(prof, terrain, RENDER_COMPOSITE_MAP, p->getVertexProgramParameters()); + updateFpParams(prof, terrain, RENDER_COMPOSITE_MAP, p->getFragmentProgramParameters()); + } + else + { + // high lod + updateVpParams(prof, terrain, HIGH_LOD, p->getVertexProgramParameters()); + updateFpParams(prof, terrain, HIGH_LOD, p->getFragmentProgramParameters()); + + if(prof->isCompositeMapEnabled()) + { + // low lod + p = mat->getTechnique(1)->getPass(0); + updateVpParams(prof, terrain, LOW_LOD, p->getVertexProgramParameters()); + updateFpParams(prof, terrain, LOW_LOD, p->getFragmentProgramParameters()); + } + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::updateVpParams( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const GpuProgramParametersSharedPtr& params) + { + params->setIgnoreMissingParams(true); + uint maxLayers = prof->getMaxLayers(terrain); + uint numLayers = std::min(maxLayers, static_cast(terrain->getLayerCount())); + uint numUVMul = numLayers / 4; + if (numLayers % 4) + ++numUVMul; + for (uint i = 0; i < numUVMul; ++i) + { + Vector4 uvMul( + terrain->getLayerUVMultiplier(i * 4), + terrain->getLayerUVMultiplier(i * 4 + 1), + terrain->getLayerUVMultiplier(i * 4 + 2), + terrain->getLayerUVMultiplier(i * 4 + 3) + ); + params->setNamedConstant("uvMul" + StringConverter::toString(i), uvMul); + } + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::updateFpParams( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const GpuProgramParametersSharedPtr& params) + { + params->setIgnoreMissingParams(true); + // TODO - parameterise this? + Vector4 scaleBiasSpecular(0.03, -0.04, 32, 1); + params->setNamedConstant("scaleBiasSpecular", scaleBiasSpecular); + + } + //--------------------------------------------------------------------- + String TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::getChannel(uint idx) + { + uint rem = idx % 4; + switch(rem) + { + case 0: + default: + return "r"; + case 1: + return "g"; + case 2: + return "b"; + case 3: + return "a"; + }; + } + //--------------------------------------------------------------------- + String TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::getVertexProgramName( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + String progName = terrain->getMaterialName() + "/sm2/vp"; + + switch(tt) + { + case HIGH_LOD: + progName += "/hlod"; + break; + case LOW_LOD: + progName += "/llod"; + break; + case RENDER_COMPOSITE_MAP: + progName += "/comp"; + break; + } + + return progName; + + } + //--------------------------------------------------------------------- + String TerrainMaterialGeneratorB::SM2Profile::ShaderHelper::getFragmentProgramName( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + + String progName = terrain->getMaterialName() + "/sm2/fp"; + + switch(tt) + { + case HIGH_LOD: + progName += "/hlod"; + break; + case LOW_LOD: + progName += "/llod"; + break; + case RENDER_COMPOSITE_MAP: + progName += "/comp"; + break; + } + + return progName; + } + //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::createVertexProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + String progName = getVertexProgramName(prof, terrain, tt); + HighLevelGpuProgramPtr ret = mgr.getByName(progName); + if (ret.isNull()) + { + ret = mgr.createProgram(progName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "cg", GPT_VERTEX_PROGRAM); + } + else + { + ret->unload(); + } + + ret->setParameter("profiles", "vs_3_0 vs_2_0 arbvp1"); + ret->setParameter("entry_point", "main_vp"); + + return ret; + + } + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::createFragmentProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + String progName = getFragmentProgramName(prof, terrain, tt); + + HighLevelGpuProgramPtr ret = mgr.getByName(progName); + if (ret.isNull()) + { + ret = mgr.createProgram(progName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "cg", GPT_FRAGMENT_PROGRAM); + } + else + { + ret->unload(); + } + + if(prof->isLayerNormalMappingEnabled() || prof->isLayerParallaxMappingEnabled()) + ret->setParameter("profiles", "ps_3_0 ps_2_x fp40 arbfp1"); + else + ret->setParameter("profiles", "ps_3_0 ps_2_0 fp30 arbfp1"); + ret->setParameter("entry_point", "main_fp"); + + return ret; + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateVpHeader( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + outStream << + "void main_vp(\n" + "float4 pos : POSITION,\n" + "float2 uv : TEXCOORD0,\n"; + if (tt != RENDER_COMPOSITE_MAP) + outStream << "float2 delta : TEXCOORD1,\n"; // lodDelta, lodThreshold + + outStream << + "uniform float4x4 worldMatrix,\n" + "uniform float4x4 viewProjMatrix,\n" + "uniform float2 lodMorph,\n"; // morph amount, morph LOD target + + // uv multipliers + uint maxLayers = prof->getMaxLayers(terrain); + uint numLayers = std::min(maxLayers, static_cast(terrain->getLayerCount())); + uint numUVMultipliers = (numLayers / 4); + if (numLayers % 4) + ++numUVMultipliers; + for (uint i = 0; i < numUVMultipliers; ++i) + outStream << "uniform float4 uvMul" << i << ", \n"; + + outStream << + "out float4 oPos : POSITION,\n" + "out float4 oPosObj : TEXCOORD0 \n"; + + uint texCoordSet = 1; + outStream << + ", out float4 oUVMisc : TEXCOORD" << texCoordSet++ <<" // xy = uv, z = camDepth\n"; + + // layer UV's premultiplied, packed as xy/zw + uint numUVSets = numLayers / 2; + if (numLayers % 2) + ++numUVSets; + if (tt != LOW_LOD) + { + for (uint i = 0; i < numUVSets; ++i) + { + outStream << + ", out float4 oUV" << i << " : TEXCOORD" << texCoordSet++ << "\n"; + } + } + + if (prof->getParent()->getDebugLevel() && tt != RENDER_COMPOSITE_MAP) + { + outStream << ", out float2 lodInfo : TEXCOORD" << texCoordSet++ << "\n"; + } + + bool fog = terrain->getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; + if (fog) + { + outStream << + ", uniform float4 fogParams\n" + ", out float fogVal : COLOR\n"; + } + + if (prof->isShadowingEnabled(tt, terrain)) + { + texCoordSet = generateVpDynamicShadowsParams(texCoordSet, prof, terrain, tt, outStream); + } + + // check we haven't exceeded texture coordinates + if (texCoordSet > 8) + { + OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, + "Requested options require too many texture coordinate sets! Try reducing the number of layers.", + __FUNCTION__); + } + + outStream << + ")\n" + "{\n" + " float4 worldPos = mul(worldMatrix, pos);\n" + " oPosObj = pos;\n"; + + if (tt != RENDER_COMPOSITE_MAP) + { + // determine whether to apply the LOD morph to this vertex + // we store the deltas against all vertices so we only want to apply + // the morph to the ones which would disappear. The target LOD which is + // being morphed to is stored in lodMorph.y, and the LOD at which + // the vertex should be morphed is stored in uv.w. If we subtract + // the former from the latter, and arrange to only morph if the + // result is negative (it will only be -1 in fact, since after that + // the vertex will never be indexed), we will achieve our aim. + // sign(vertexLOD - targetLOD) == -1 is to morph + outStream << + " float toMorph = -min(0, sign(delta.y - lodMorph.y));\n"; + // this will either be 1 (morph) or 0 (don't morph) + if (prof->getParent()->getDebugLevel()) + { + // x == LOD level (-1 since value is target level, we want to display actual) + outStream << "lodInfo.x = (lodMorph.y - 1) / " << terrain->getNumLodLevels() << ";\n"; + // y == LOD morph + outStream << "lodInfo.y = toMorph * lodMorph.x;\n"; + } + + // morph + switch (terrain->getAlignment()) + { + case Terrain::ALIGN_X_Y: + outStream << " worldPos.z += delta.x * toMorph * lodMorph.x;\n"; + break; + case Terrain::ALIGN_X_Z: + outStream << " worldPos.y += delta.x * toMorph * lodMorph.x;\n"; + break; + case Terrain::ALIGN_Y_Z: + outStream << " worldPos.x += delta.x * toMorph * lodMorph.x;\n"; + break; + }; + } + + + // generate UVs + if (tt != LOW_LOD) + { + for (uint i = 0; i < numUVSets; ++i) + { + uint layer = i * 2; + uint uvMulIdx = layer / 4; + + outStream << + " oUV" << i << ".xy = " << " uv.xy * uvMul" << uvMulIdx << "." << getChannel(layer) << ";\n"; + outStream << + " oUV" << i << ".zw = " << " uv.xy * uvMul" << uvMulIdx << "." << getChannel(layer+1) << ";\n"; + + } + + } + + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateFpHeader( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + + // Main header + outStream << + // helpers + "float4 expand(float4 v)\n" + "{ \n" + " return v * 2 - 1;\n" + "}\n\n\n"; + + if (prof->isShadowingEnabled(tt, terrain)) + generateFpDynamicShadowsHelpers(prof, terrain, tt, outStream); + + + outStream << + "float4 main_fp(\n" + "float4 position : TEXCOORD0,\n"; + + uint texCoordSet = 1; + outStream << + "float4 uvMisc : TEXCOORD" << texCoordSet++ << ",\n"; + + // UV's premultiplied, packed as xy/zw + uint maxLayers = prof->getMaxLayers(terrain); + uint numBlendTextures = std::min(terrain->getBlendTextureCount(maxLayers), terrain->getBlendTextureCount()); + uint numLayers = std::min(maxLayers, static_cast(terrain->getLayerCount())); + uint numUVSets = numLayers / 2; + if (numLayers % 2) + ++numUVSets; + if (tt != LOW_LOD) + { + for (uint i = 0; i < numUVSets; ++i) + { + outStream << + "float4 layerUV" << i << " : TEXCOORD" << texCoordSet++ << ", \n"; + } + + } + if (prof->getParent()->getDebugLevel() && tt != RENDER_COMPOSITE_MAP) + { + outStream << "float2 lodInfo : TEXCOORD" << texCoordSet++ << ", \n"; + } + + bool fog = terrain->getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; + if (fog) + { + outStream << + "uniform float3 fogColour, \n" + "float fogVal : COLOR,\n"; + } + + uint currentSamplerIdx = 0; + + outStream << + // Only 1 light supported in this version + // deferred shading profile / generator later, ok? :) + "uniform float3 ambient,\n" + "uniform float4 lightPosObjSpace,\n" + "uniform float3 lightDiffuseColour,\n" + "uniform float3 lightSpecularColour,\n" + "uniform float3 eyePosObjSpace,\n" + // pack scale, bias and specular + "uniform float4 scaleBiasSpecular,\n"; + + if (tt == LOW_LOD) + { + // single composite map covers all the others below + outStream << + "uniform sampler2D compositeMap : register(s" << currentSamplerIdx++ << ")\n"; + } + else + { + outStream << + "uniform sampler2D globalNormal : register(s" << currentSamplerIdx++ << ")\n"; + + + if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) + { + outStream << ", uniform sampler2D globalColourMap : register(s" + << currentSamplerIdx++ << ")\n"; + } + if (prof->isLightmapEnabled()) + { + outStream << ", uniform sampler2D lightMap : register(s" + << currentSamplerIdx++ << ")\n"; + } + // Blend textures - sampler definitions + for (uint i = 0; i < numBlendTextures; ++i) + { + outStream << ", uniform sampler2D blendTex" << i + << " : register(s" << currentSamplerIdx++ << ")\n"; + } + + // Layer textures - sampler definitions & UV multipliers + for (uint i = 0; i < numLayers; ++i) + { + outStream << ", uniform sampler2D difftex" << i + << " : register(s" << currentSamplerIdx++ << ")\n"; + outStream << ", uniform sampler2D normtex" << i + << " : register(s" << currentSamplerIdx++ << ")\n"; + } + } + + if (prof->isShadowingEnabled(tt, terrain)) + { + generateFpDynamicShadowsParams(&texCoordSet, ¤tSamplerIdx, prof, terrain, tt, outStream); + } + + // check we haven't exceeded samplers + if (currentSamplerIdx > 16) + { + OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, + "Requested options require too many texture samplers! Try reducing the number of layers.", + __FUNCTION__); + } + + outStream << + ") : COLOR\n" + "{\n" + " float4 outputCol;\n" + " float shadow = 1.0;\n" + " float2 uv = uvMisc.xy;\n" + // base colour + " outputCol = float4(0,0,0,1);\n"; + + if (tt != LOW_LOD) + { + outStream << + // global normal + " float3 normal = expand(tex2D(globalNormal, uv)).rgb;\n"; + + } + + outStream << + " float3 lightDir = \n" + " lightPosObjSpace.xyz - (position.xyz * lightPosObjSpace.w);\n" + " float3 eyeDir = eyePosObjSpace - position.xyz;\n" + + // set up accumulation areas + " float3 diffuse = float3(0,0,0);\n" + " float specular = 0;\n"; + + + if (tt == LOW_LOD) + { + // we just do a single calculation from composite map + outStream << + " float4 composite = tex2D(compositeMap, uv);\n" + " diffuse = composite.rgb;\n"; + // TODO - specular; we'll need normals for this! + } + else + { + // set up the blend values + for (uint i = 0; i < numBlendTextures; ++i) + { + outStream << " float4 blendTexVal" << i << " = tex2D(blendTex" << i << ", uv);\n"; + } + + if (prof->isLayerNormalMappingEnabled()) + { + // derive the tangent space basis + // we do this in the pixel shader because we don't have per-vertex normals + // because of the LOD, we use a normal map + // tangent is always +x or -z in object space depending on alignment + switch(terrain->getAlignment()) + { + case Terrain::ALIGN_X_Y: + case Terrain::ALIGN_X_Z: + outStream << " float3 tangent = float3(1, 0, 0);\n"; + break; + case Terrain::ALIGN_Y_Z: + outStream << " float3 tangent = float3(0, 0, -1);\n"; + break; + }; + + outStream << " float3 binormal = normalize(cross(tangent, normal));\n"; + // note, now we need to re-cross to derive tangent again because it wasn't orthonormal + outStream << " tangent = normalize(cross(normal, binormal));\n"; + // derive final matrix + outStream << " float3x3 TBN = float3x3(tangent, binormal, normal);\n"; + + // set up lighting result placeholders for interpolation + outStream << " float4 litRes, litResLayer;\n"; + outStream << " float3 TSlightDir, TSeyeDir, TShalfAngle, TSnormal;\n"; + if (prof->isLayerParallaxMappingEnabled()) + outStream << " float displacement;\n"; + // move + outStream << " TSlightDir = normalize(mul(TBN, lightDir));\n"; + outStream << " TSeyeDir = normalize(mul(TBN, eyeDir));\n"; + + } + else + { + // simple per-pixel lighting with no normal mapping + outStream << " lightDir = normalize(lightDir);\n"; + outStream << " eyeDir = normalize(eyeDir);\n"; + outStream << " float3 halfAngle = normalize(lightDir + eyeDir);\n"; + outStream << " float4 litRes = lit(dot(lightDir, normal), dot(halfAngle, normal), scaleBiasSpecular.z);\n"; + + } + } + + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateVpLayer( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) + { + // nothing to do + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateFpLayer( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) + { + uint uvIdx = layer / 2; + String uvChannels = layer % 2 ? ".zw" : ".xy"; + uint blendIdx = (layer-1) / 4; + String blendChannel = getChannel(layer-1); + String blendWeightStr = String("blendTexVal") + StringConverter::toString(blendIdx) + + "." + blendChannel; + + // generate early-out conditional + /* Disable - causing some issues even when trying to force the use of texldd + if (layer && prof->_isSM3Available()) + outStream << " if (" << blendWeightStr << " > 0.0003)\n { \n"; + */ + + // generate UV + outStream << " float2 uv" << layer << " = layerUV" << uvIdx << uvChannels << ";\n"; + + // calculate lighting here if normal mapping + if (prof->isLayerNormalMappingEnabled()) + { + if (prof->isLayerParallaxMappingEnabled() && tt != RENDER_COMPOSITE_MAP) + { + // modify UV - note we have to sample an extra time + outStream << " displacement = tex2D(normtex" << layer << ", uv" << layer << ").a\n" + " * scaleBiasSpecular.x + scaleBiasSpecular.y;\n"; + outStream << " uv" << layer << " += TSeyeDir.xy * displacement;\n"; + } + + // access TS normal map + outStream << " TSnormal = expand(tex2D(normtex" << layer << ", uv" << layer << ")).rgb;\n"; + outStream << " TShalfAngle = normalize(TSlightDir + TSeyeDir);\n"; + outStream << " litResLayer = lit(dot(TSlightDir, TSnormal), dot(TShalfAngle, TSnormal), scaleBiasSpecular.z);\n"; + if (!layer) + outStream << " litRes = litResLayer;\n"; + else + outStream << " litRes = lerp(litRes, litResLayer, " << blendWeightStr << ");\n"; + + } + + // sample diffuse texture + outStream << " float4 diffuseSpecTex" << layer + << " = tex2D(difftex" << layer << ", uv" << layer << ");\n"; + + // apply to common + if (!layer) + { + outStream << " diffuse = diffuseSpecTex0.rgb;\n"; + if (prof->isLayerSpecularMappingEnabled()) + outStream << " specular = diffuseSpecTex0.a;\n"; + } + else + { + outStream << " diffuse = lerp(diffuse, diffuseSpecTex" << layer + << ".rgb, " << blendWeightStr << ");\n"; + if (prof->isLayerSpecularMappingEnabled()) + outStream << " specular = lerp(specular, diffuseSpecTex" << layer + << ".a, " << blendWeightStr << ");\n"; + + } + + // End early-out + /* Disable - causing some issues even when trying to force the use of texldd + if (layer && prof->_isSM3Available()) + outStream << " } // early-out blend value\n"; + */ + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateVpFooter( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + + outStream << + " oPos = mul(viewProjMatrix, worldPos);\n" + " oUVMisc.xy = uv.xy;\n"; + + bool fog = terrain->getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; + if (fog) + { + if (terrain->getSceneManager()->getFogMode() == FOG_LINEAR) + { + outStream << + " fogVal = saturate((oPos.z - fogParams.y) * fogParams.w);\n"; + } + else + { + outStream << + " fogVal = saturate(1 / (exp(oPos.z * fogParams.x)));\n"; + } + } + + if (prof->isShadowingEnabled(tt, terrain)) + generateVpDynamicShadows(prof, terrain, tt, outStream); + + outStream << + "}\n"; + + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateFpFooter( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + + if (tt == LOW_LOD) + { + if (prof->isShadowingEnabled(tt, terrain)) + { + generateFpDynamicShadows(prof, terrain, tt, outStream); + outStream << + " outputCol.rgb = diffuse * rtshadow;\n"; + } + else + { + outStream << + " outputCol.rgb = diffuse;\n"; + } + } + else + { + if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) + { + // sample colour map and apply to diffuse + outStream << " diffuse *= tex2D(globalColourMap, uv).rgb;\n"; + } + if (prof->isLightmapEnabled()) + { + // sample lightmap + outStream << " shadow = tex2D(lightMap, uv).r;\n"; + } + + if (prof->isShadowingEnabled(tt, terrain)) + { + generateFpDynamicShadows(prof, terrain, tt, outStream); + } + + // diffuse lighting + outStream << " outputCol.rgb += ambient * diffuse + litRes.y * lightDiffuseColour * diffuse * shadow;\n"; + + // specular default + if (!prof->isLayerSpecularMappingEnabled()) + outStream << " specular = 1.0;\n"; + + if (tt == RENDER_COMPOSITE_MAP) + { + // Lighting embedded in alpha + outStream << + " outputCol.a = shadow;\n"; + + } + else + { + // Apply specular + outStream << " outputCol.rgb += litRes.z * lightSpecularColour * specular * shadow;\n"; + + if (prof->getParent()->getDebugLevel()) + { + outStream << " outputCol.rg += lodInfo.xy;\n"; + } + } + } + + bool fog = terrain->getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; + if (fog) + { + outStream << " outputCol.rgb = lerp(outputCol.rgb, fogColour, fogVal);\n"; + } + + // Final return + outStream << " return outputCol;\n" + << "}\n"; + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateFpDynamicShadowsHelpers( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + // TODO make filtering configurable + outStream << + "// Simple PCF \n" + "// Number of samples in one dimension (square for total samples) \n" + "#define NUM_SHADOW_SAMPLES_1D 2.0 \n" + "#define SHADOW_FILTER_SCALE 1 \n" + + "#define SHADOW_SAMPLES NUM_SHADOW_SAMPLES_1D*NUM_SHADOW_SAMPLES_1D \n" + + "float4 offsetSample(float4 uv, float2 offset, float invMapSize) \n" + "{ \n" + " return float4(uv.xy + offset * invMapSize * uv.w, uv.z, uv.w); \n" + "} \n"; + + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << + "float calcDepthShadow(sampler2D shadowMap, float4 uv, float invShadowMapSize) \n" + "{ \n" + " // 4-sample PCF \n" + + " float shadow = 0.0; \n" + " float offset = (NUM_SHADOW_SAMPLES_1D/2 - 0.5) * SHADOW_FILTER_SCALE; \n" + " for (float y = -offset; y <= offset; y += SHADOW_FILTER_SCALE) \n" + " for (float x = -offset; x <= offset; x += SHADOW_FILTER_SCALE) \n" + " { \n" + " float4 newUV = offsetSample(uv, float2(x, y), invShadowMapSize);\n" + " // manually project and assign derivatives \n" + " // to avoid gradient issues inside loops \n" + " newUV = newUV / newUV.w; \n" + " float depth = tex2D(shadowMap, newUV.xy, 1, 1).x; \n" + " if (depth >= 1 || depth >= uv.z)\n" + " shadow += 1.0;\n" + " } \n" + + " shadow /= SHADOW_SAMPLES; \n" + + " return shadow; \n" + "} \n"; + } + else + { + outStream << + "float calcSimpleShadow(sampler2D shadowMap, float4 shadowMapPos) \n" + "{ \n" + " return tex2Dproj(shadowMap, shadowMapPos).x; \n" + "} \n"; + + } + + if (prof->getReceiveDynamicShadowsPSSM()) + { + uint numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); + + + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << + "float calcPSSMDepthShadow("; + } + else + { + outStream << + "float calcPSSMSimpleShadow("; + } + + outStream << "\n "; + for (uint i = 0; i < numTextures; ++i) + outStream << "sampler2D shadowMap" << i << ", "; + outStream << "\n "; + for (uint i = 0; i < numTextures; ++i) + outStream << "float4 lsPos" << i << ", "; + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << "\n "; + for (uint i = 0; i < numTextures; ++i) + outStream << "float invShadowmapSize" << i << ", "; + } + outStream << "\n" + " float4 pssmSplitPoints, float camDepth) \n" + "{ \n" + " float shadow; \n" + " // calculate shadow \n"; + + for (uint i = 0; i < numTextures; ++i) + { + if (!i) + outStream << " if (camDepth <= pssmSplitPoints." << ShaderHelper::getChannel(i) << ") \n"; + else if (i < numTextures - 1) + outStream << " else if (camDepth <= pssmSplitPoints." << ShaderHelper::getChannel(i) << ") \n"; + else + outStream << " else \n"; + + outStream << + " { \n"; + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << + " shadow = calcDepthShadow(shadowMap" << i << ", lsPos" << i << ", invShadowmapSize" << i << "); \n"; + } + else + { + outStream << + " shadow = calcSimpleShadow(shadowMap" << i << ", lsPos" << i << "); \n"; + } + outStream << + " } \n"; + + } + + outStream << + " return shadow; \n" + "} \n\n\n"; + } + + + } + //--------------------------------------------------------------------- + uint TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateVpDynamicShadowsParams( + uint texCoord, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + // out semantics & params + uint numTextures = 1; + if (prof->getReceiveDynamicShadowsPSSM()) + { + numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); + } + for (uint i = 0; i < numTextures; ++i) + { + outStream << + ", out float4 oLightSpacePos" << i << " : TEXCOORD" << texCoord++ << " \n" << + ", uniform float4x4 texViewProjMatrix" << i << " \n"; + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << + ", uniform float4 depthRange" << i << " // x = min, y = max, z = range, w = 1/range \n"; + } + } + + return texCoord; + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateVpDynamicShadows( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + uint numTextures = 1; + if (prof->getReceiveDynamicShadowsPSSM()) + { + numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); + } + + // Calculate the position of vertex in light space + for (uint i = 0; i < numTextures; ++i) + { + outStream << + " oLightSpacePos" << i << " = mul(texViewProjMatrix" << i << ", worldPos); \n"; + if (prof->getReceiveDynamicShadowsDepth()) + { + // make linear + outStream << + "oLightSpacePos" << i << ".z = (oLightSpacePos" << i << ".z - depthRange" << i << ".x) * depthRange" << i << ".w;\n"; + + } + } + + + if (prof->getReceiveDynamicShadowsPSSM()) + { + outStream << + " // pass cam depth\n" + " oUVMisc.z = oPos.z;\n"; + } + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateFpDynamicShadowsParams( + uint* texCoord, uint* sampler, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + if (tt == HIGH_LOD) + mShadowSamplerStartHi = *sampler; + else if (tt == LOW_LOD) + mShadowSamplerStartLo = *sampler; + + // in semantics & params + uint numTextures = 1; + if (prof->getReceiveDynamicShadowsPSSM()) + { + numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); + outStream << + ", uniform float4 pssmSplitPoints \n"; + } + for (uint i = 0; i < numTextures; ++i) + { + outStream << + ", float4 lightSpacePos" << i << " : TEXCOORD" << *texCoord << " \n" << + ", uniform sampler2D shadowMap" << i << " : register(s" << *sampler << ") \n"; + *sampler = *sampler + 1; + *texCoord = *texCoord + 1; + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << + ", uniform float inverseShadowmapSize" << i << " \n"; + } + } + + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateFpDynamicShadows( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) + { + if (prof->getReceiveDynamicShadowsPSSM()) + { + uint numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); + outStream << + " float camDepth = uvMisc.z;\n"; + + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << + " float rtshadow = calcPSSMDepthShadow("; + } + else + { + outStream << + " float rtshadow = calcPSSMSimpleShadow("; + } + for (uint i = 0; i < numTextures; ++i) + outStream << "shadowMap" << i << ", "; + outStream << "\n "; + + for (uint i = 0; i < numTextures; ++i) + outStream << "lightSpacePos" << i << ", "; + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << "\n "; + for (uint i = 0; i < numTextures; ++i) + outStream << "inverseShadowmapSize" << i << ", "; + } + outStream << "\n" << + " pssmSplitPoints, camDepth);\n"; + + } + else + { + if (prof->getReceiveDynamicShadowsDepth()) + { + outStream << + " float rtshadow = calcDepthShadow(shadowMap0, lightSpacePos0, inverseShadowmapSize0);"; + } + else + { + outStream << + " float rtshadow = calcSimpleShadow(shadowMap0, lightSpacePos0);"; + } + } + + outStream << + " shadow = min(shadow, rtshadow);\n"; + + } + //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelperHLSL::createVertexProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + String progName = getVertexProgramName(prof, terrain, tt); + + HighLevelGpuProgramPtr ret = mgr.getByName(progName); + if (ret.isNull()) + { + ret = mgr.createProgram(progName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "hlsl", GPT_VERTEX_PROGRAM); + } + else + { + ret->unload(); + } + + if (prof->_isSM3Available()) + ret->setParameter("target", "vs_3_0"); + else + ret->setParameter("target", "vs_2_0"); + ret->setParameter("entry_point", "main_vp"); + + return ret; + + } + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelperHLSL::createFragmentProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + String progName = getFragmentProgramName(prof, terrain, tt); + + + HighLevelGpuProgramPtr ret = mgr.getByName(progName); + if (ret.isNull()) + { + ret = mgr.createProgram(progName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "hlsl", GPT_FRAGMENT_PROGRAM); + } + else + { + ret->unload(); + } + + if (prof->_isSM3Available()) + ret->setParameter("target", "ps_3_0"); + else + ret->setParameter("target", "ps_2_x"); + ret->setParameter("entry_point", "main_fp"); + + return ret; + + } + //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelperGLSL::createVertexProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + String progName = getVertexProgramName(prof, terrain, tt); + + switch(tt) + { + case HIGH_LOD: + progName += "/hlod"; + break; + case LOW_LOD: + progName += "/llod"; + break; + case RENDER_COMPOSITE_MAP: + progName += "/comp"; + break; + } + + HighLevelGpuProgramPtr ret = mgr.getByName(progName); + if (ret.isNull()) + { + ret = mgr.createProgram(progName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "glsl", GPT_VERTEX_PROGRAM); + } + else + { + ret->unload(); + } + + return ret; + + } + //--------------------------------------------------------------------- + HighLevelGpuProgramPtr + TerrainMaterialGeneratorB::SM2Profile::ShaderHelperGLSL::createFragmentProgram( + const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) + { + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + String progName = getFragmentProgramName(prof, terrain, tt); + + HighLevelGpuProgramPtr ret = mgr.getByName(progName); + if (ret.isNull()) + { + ret = mgr.createProgram(progName, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "glsl", GPT_FRAGMENT_PROGRAM); + } + else + { + ret->unload(); + } + + return ret; + + } + + +} diff --git a/apps/openmw/mwrender/terrainmaterial.hpp b/apps/openmw/mwrender/terrainmaterial.hpp new file mode 100644 index 0000000000..eaa5572ee7 --- /dev/null +++ b/apps/openmw/mwrender/terrainmaterial.hpp @@ -0,0 +1,261 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org/ + +Copyright (c) 2000-2011 Torus Knot Software Ltd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +#ifndef __Ogre_TerrainMaterialGeneratorB_H__ +#define __Ogre_TerrainMaterialGeneratorB_H__ + +#include "OgreTerrainPrerequisites.h" +#include "OgreTerrainMaterialGenerator.h" +#include "OgreGpuProgramParams.h" + +namespace Ogre +{ + class PSSMShadowCameraSetup; + + /** \addtogroup Optional Components + * @{ + */ + /** \addtogroup Terrain + * Some details on the terrain component + * @{ + */ + + + /** A TerrainMaterialGenerator which can cope with normal mapped, specular mapped + terrain. + @note Requires the Cg plugin to render correctly + */ + class _OgreTerrainExport TerrainMaterialGeneratorB : public TerrainMaterialGenerator + { + public: + TerrainMaterialGeneratorB(); + ~TerrainMaterialGeneratorB(); + + /** Shader model 2 profile target. + */ + class _OgreTerrainExport SM2Profile : public TerrainMaterialGenerator::Profile + { + public: + SM2Profile(TerrainMaterialGenerator* parent, const String& name, const String& desc); + ~SM2Profile(); + MaterialPtr generate(const Terrain* terrain); + MaterialPtr generateForCompositeMap(const Terrain* terrain); + uint8 getMaxLayers(const Terrain* terrain) const; + void updateParams(const MaterialPtr& mat, const Terrain* terrain); + void updateParamsForCompositeMap(const MaterialPtr& mat, const Terrain* terrain); + void requestOptions(Terrain* terrain); + + /** Whether to support normal mapping per layer in the shader (default true). + */ + bool isLayerNormalMappingEnabled() const { return mLayerNormalMappingEnabled; } + /** Whether to support normal mapping per layer in the shader (default true). + */ + void setLayerNormalMappingEnabled(bool enabled); + /** Whether to support parallax mapping per layer in the shader (default true). + */ + bool isLayerParallaxMappingEnabled() const { return mLayerParallaxMappingEnabled; } + /** Whether to support parallax mapping per layer in the shader (default true). + */ + void setLayerParallaxMappingEnabled(bool enabled); + /** Whether to support specular mapping per layer in the shader (default true). + */ + bool isLayerSpecularMappingEnabled() const { return mLayerSpecularMappingEnabled; } + /** Whether to support specular mapping per layer in the shader (default true). + */ + void setLayerSpecularMappingEnabled(bool enabled); + /** Whether to support a global colour map over the terrain in the shader, + if it's present (default true). + */ + bool isGlobalColourMapEnabled() const { return mGlobalColourMapEnabled; } + /** Whether to support a global colour map over the terrain in the shader, + if it's present (default true). + */ + void setGlobalColourMapEnabled(bool enabled); + /** Whether to support a light map over the terrain in the shader, + if it's present (default true). + */ + bool isLightmapEnabled() const { return mLightmapEnabled; } + /** Whether to support a light map over the terrain in the shader, + if it's present (default true). + */ + void setLightmapEnabled(bool enabled); + /** Whether to use the composite map to provide a lower LOD technique + in the distance (default true). + */ + bool isCompositeMapEnabled() const { return mCompositeMapEnabled; } + /** Whether to use the composite map to provide a lower LOD technique + in the distance (default true). + */ + void setCompositeMapEnabled(bool enabled); + /** Whether to support dynamic texture shadows received from other + objects, on the terrain (default true). + */ + bool getReceiveDynamicShadowsEnabled() const { return mReceiveDynamicShadows; } + /** Whether to support dynamic texture shadows received from other + objects, on the terrain (default true). + */ + void setReceiveDynamicShadowsEnabled(bool enabled); + + /** Whether to use PSSM support dynamic texture shadows, and if so the + settings to use (default 0). + */ + void setReceiveDynamicShadowsPSSM(PSSMShadowCameraSetup* pssmSettings); + /** Whether to use PSSM support dynamic texture shadows, and if so the + settings to use (default 0). + */ + PSSMShadowCameraSetup* getReceiveDynamicShadowsPSSM() const { return mPSSM; } + /** Whether to use depth shadows (default false). + */ + void setReceiveDynamicShadowsDepth(bool enabled); + /** Whether to use depth shadows (default false). + */ + bool getReceiveDynamicShadowsDepth() const { return mDepthShadows; } + /** Whether to use shadows on low LOD material rendering (when using composite map) (default false). + */ + void setReceiveDynamicShadowsLowLod(bool enabled); + /** Whether to use shadows on low LOD material rendering (when using composite map) (default false). + */ + bool getReceiveDynamicShadowsLowLod() const { return mLowLodShadows; } + + /// Internal + bool _isSM3Available() const { return mSM3Available; } + + protected: + + enum TechniqueType + { + HIGH_LOD, + LOW_LOD, + RENDER_COMPOSITE_MAP + }; + void addTechnique(const MaterialPtr& mat, const Terrain* terrain, TechniqueType tt); + + /// Interface definition for helper class to generate shaders + class _OgreTerrainExport ShaderHelper : public TerrainAlloc + { + public: + ShaderHelper() {} + virtual ~ShaderHelper() {} + virtual HighLevelGpuProgramPtr generateVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + virtual HighLevelGpuProgramPtr generateFragmentProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + virtual void updateParams(const SM2Profile* prof, const MaterialPtr& mat, const Terrain* terrain, bool compositeMap); + protected: + virtual String getVertexProgramName(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + virtual String getFragmentProgramName(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + virtual HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) = 0; + virtual HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) = 0; + virtual void generateVertexProgramSource(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + virtual void generateFragmentProgramSource(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + virtual void generateVpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0; + virtual void generateFpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0; + virtual void generateVpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) = 0; + virtual void generateFpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) = 0; + virtual void generateVpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0; + virtual void generateFpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0; + virtual void defaultVpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const HighLevelGpuProgramPtr& prog); + virtual void defaultFpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const HighLevelGpuProgramPtr& prog); + virtual void updateVpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const GpuProgramParametersSharedPtr& params); + virtual void updateFpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const GpuProgramParametersSharedPtr& params); + static String getChannel(uint idx); + + size_t mShadowSamplerStartHi; + size_t mShadowSamplerStartLo; + + }; + + /// Utility class to help with generating shaders for Cg / HLSL. + class _OgreTerrainExport ShaderHelperCg : public ShaderHelper + { + protected: + HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + void generateVpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + void generateFpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + void generateVpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream); + void generateFpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream); + void generateVpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + void generateFpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + uint generateVpDynamicShadowsParams(uint texCoordStart, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + void generateVpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + void generateFpDynamicShadowsHelpers(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + void generateFpDynamicShadowsParams(uint* texCoord, uint* sampler, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + void generateFpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); + }; + + class _OgreTerrainExport ShaderHelperHLSL : public ShaderHelperCg + { + protected: + HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + }; + + /// Utility class to help with generating shaders for GLSL. + class _OgreTerrainExport ShaderHelperGLSL : public ShaderHelper + { + protected: + HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); + void generateVpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) {} + void generateFpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) {} + void generateVpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) {} + void generateFpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) {} + void generateVpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) {} + void generateFpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) {} + }; + + ShaderHelper* mShaderGen; + bool mLayerNormalMappingEnabled; + bool mLayerParallaxMappingEnabled; + bool mLayerSpecularMappingEnabled; + bool mGlobalColourMapEnabled; + bool mLightmapEnabled; + bool mCompositeMapEnabled; + bool mReceiveDynamicShadows; + PSSMShadowCameraSetup* mPSSM; + bool mDepthShadows; + bool mLowLodShadows; + bool mSM3Available; + + bool isShadowingEnabled(TechniqueType tt, const Terrain* terrain) const; + + }; + + + + + }; + + + + /** @} */ + /** @} */ + + +} + +#endif From dbd2d390fd4e4858d672c9c11f882010988f96f0 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 27 Feb 2012 21:12:16 +0100 Subject: [PATCH 017/488] terrain material fixes: - disable normal and parallax mapping - disable specular mapping and specular --- apps/openmw/mwrender/terrain.cpp | 10 +++---- apps/openmw/mwrender/terrainmaterial.cpp | 36 ++++++++++++++---------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 568ed37415..f3104ef59b 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -31,10 +31,10 @@ namespace MWRender TerrainMaterialGeneratorB::SM2Profile* matProfile = static_cast(activeProfile); - matProfile->setLightmapEnabled(false); + matProfile->setLightmapEnabled(false); // this doesn't disable the lightmap, although it should ?? matProfile->setReceiveDynamicShadowsEnabled(false); matProfile->setLayerNormalMappingEnabled(false); - //matProfile->setLayerParallaxMappingEnabled(false); + matProfile->setLayerParallaxMappingEnabled(false); matProfile->setLayerSpecularMappingEnabled(false); mLandSize = ESM::Land::LAND_SIZE; @@ -195,8 +195,8 @@ namespace MWRender //have a base texture for now, but this is probably not needed on most cells terrainData->layerList.resize(1); terrainData->layerList[0].worldSize = 256; - terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); - terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); + terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); // diffuseSpec + //terrainData->layerList[0].textureNames.push_back("textures\\_land_default.dds"); // normalHeight for ( int y = fromY - 1; y < fromY + size + 1; y++ ) { @@ -230,7 +230,7 @@ namespace MWRender //Normal map. This should be removed but it would require alterations to //the material generator. Another option would be to use a 1x1 blank texture - terrainData->layerList[position].textureNames.push_back("textures\\" + texture); + //terrainData->layerList[position].textureNames.push_back("textures\\" + texture); indexes[ltexIndex] = position; } diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 313a4a90cf..61a7cdb190 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -46,16 +46,16 @@ namespace Ogre // in the albedo texture to store specular reflection // similarly we double-up the normal and height (for parallax) mLayerDecl.samplers.push_back(TerrainLayerSampler("albedo_specular", PF_BYTE_RGBA)); - mLayerDecl.samplers.push_back(TerrainLayerSampler("normal_height", PF_BYTE_RGBA)); + //mLayerDecl.samplers.push_back(TerrainLayerSampler("normal_height", PF_BYTE_RGBA)); mLayerDecl.elements.push_back( TerrainLayerSamplerElement(0, TLSS_ALBEDO, 0, 3)); - mLayerDecl.elements.push_back( - TerrainLayerSamplerElement(0, TLSS_SPECULAR, 3, 1)); - mLayerDecl.elements.push_back( - TerrainLayerSamplerElement(1, TLSS_NORMAL, 0, 3)); - mLayerDecl.elements.push_back( - TerrainLayerSamplerElement(1, TLSS_HEIGHT, 3, 1)); + //mLayerDecl.elements.push_back( + // TerrainLayerSamplerElement(0, TLSS_SPECULAR, 3, 1)); + //mLayerDecl.elements.push_back( + // TerrainLayerSamplerElement(1, TLSS_NORMAL, 0, 3)); + //mLayerDecl.elements.push_back( + // TerrainLayerSamplerElement(1, TLSS_HEIGHT, 3, 1)); mProfiles.push_back(OGRE_NEW SM2Profile(this, "SM2", "Profile for rendering on Shader Model 2 capable cards")); @@ -212,8 +212,8 @@ namespace Ogre freeTextureUnits -= numShadowTextures; } - // each layer needs 2.25 units (1xdiffusespec, 1xnormalheight, 0.25xblend) - return static_cast(freeTextureUnits / 2.25f); + // each layer needs 2.25 units (1xdiffusespec, (1xnormalheight), 0.25xblend) + return static_cast(freeTextureUnits / (1.25f + (mLayerNormalMappingEnabled||mLayerParallaxMappingEnabled))); } @@ -368,8 +368,10 @@ namespace Ogre { // diffuse / specular tu = pass->createTextureUnitState(terrain->getLayerTextureName(i, 0)); + // normal / height - tu = pass->createTextureUnitState(terrain->getLayerTextureName(i, 1)); + if (mLayerNormalMappingEnabled || mLayerParallaxMappingEnabled) + tu = pass->createTextureUnitState(terrain->getLayerTextureName(i, 1)); } } @@ -739,8 +741,10 @@ namespace Ogre if(prof->isLayerNormalMappingEnabled() || prof->isLayerParallaxMappingEnabled()) ret->setParameter("profiles", "ps_3_0 ps_2_x fp40 arbfp1"); - else - ret->setParameter("profiles", "ps_3_0 ps_2_0 fp30 arbfp1"); + //else + //ret->setParameter("profiles", "ps_3_0 ps_2_0 fp30 arbfp1"); + else // fp30 doesn't work (black terrain) + ret->setParameter("profiles", "ps_3_0 ps_2_x fp40 arbfp1"); ret->setParameter("entry_point", "main_fp"); return ret; @@ -982,7 +986,9 @@ namespace Ogre { outStream << ", uniform sampler2D difftex" << i << " : register(s" << currentSamplerIdx++ << ")\n"; - outStream << ", uniform sampler2D normtex" << i + + if (prof->mLayerNormalMappingEnabled || prof->mLayerParallaxMappingEnabled) + outStream << ", uniform sampler2D normtex" << i << " : register(s" << currentSamplerIdx++ << ")\n"; } } @@ -1238,7 +1244,7 @@ namespace Ogre // specular default if (!prof->isLayerSpecularMappingEnabled()) - outStream << " specular = 1.0;\n"; + outStream << " specular = 0.0;\n"; if (tt == RENDER_COMPOSITE_MAP) { @@ -1266,7 +1272,7 @@ namespace Ogre } // Final return - outStream << " return outputCol;\n" + outStream << " return outputCol;\n" << "}\n"; } From 5b5e8ba4fdb0fdd6bf0c62787b8cb32736bca7f9 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 28 Feb 2012 16:20:57 +0100 Subject: [PATCH 018/488] fix a typo that caused SPLIT_TERRAIN=true blendmap to be too detailed (causing insane loading times) --- apps/openmw/mwrender/terrain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index f3104ef59b..e25b4b1893 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -18,7 +18,7 @@ namespace MWRender mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions(); mTerrainGlobals->setMaxPixelError(8); - mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 1024 : 256); + mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 256 : 1024); Ogre::TerrainMaterialGeneratorPtr matGen; TerrainMaterialGeneratorB* matGenP = new TerrainMaterialGeneratorB(); From abcf25ead21909d6f9f0f6ac33ed98b31526d686 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 28 Feb 2012 16:41:05 +0100 Subject: [PATCH 019/488] terrain shader performance improvement (tested on opengl only, please test on directx) --- apps/openmw/mwrender/terrainmaterial.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 61a7cdb190..2b1eb26041 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -1113,10 +1113,17 @@ namespace Ogre "." + blendChannel; // generate early-out conditional - /* Disable - causing some issues even when trying to force the use of texldd + // Disable - causing some issues even when trying to force the use of texldd + + // comment by scrawl: + // on a NVIDIA card in opengl mode, didn't produce any problems, + // while increasing FPS from 170 to 185 (!!!) in the same area + // so let's try this out - if something does cause problems for + // someone else (with a different card / renderer) we can just + // add a vendor-specific check here if (layer && prof->_isSM3Available()) outStream << " if (" << blendWeightStr << " > 0.0003)\n { \n"; - */ + // generate UV outStream << " float2 uv" << layer << " = layerUV" << uvIdx << uvChannels << ";\n"; @@ -1165,10 +1172,17 @@ namespace Ogre } // End early-out - /* Disable - causing some issues even when trying to force the use of texldd + // Disable - causing some issues even when trying to force the use of texldd + + // comment by scrawl: + // on a NVIDIA card in opengl mode, didn't produce any problems, + // while increasing FPS from 170 to 185 (!!!) in the same area + // so let's try this out - if something does cause problems for + // someone else (with a different card / renderer) we can just + // add a vendor-specific check here if (layer && prof->_isSM3Available()) outStream << " } // early-out blend value\n"; - */ + } //--------------------------------------------------------------------- void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateVpFooter( From f55905609f21036cfbf265194171acc9de47cedb Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 28 Feb 2012 17:18:07 +0100 Subject: [PATCH 020/488] fixed the terrain normals - they had to be adjusted because we use Morrowind's coordinate system --- apps/openmw/mwrender/terrain.cpp | 2 +- apps/openmw/mwrender/terrainmaterial.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index e25b4b1893..d5f7684288 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -31,7 +31,7 @@ namespace MWRender TerrainMaterialGeneratorB::SM2Profile* matProfile = static_cast(activeProfile); - matProfile->setLightmapEnabled(false); // this doesn't disable the lightmap, although it should ?? + matProfile->setLightmapEnabled(false); matProfile->setReceiveDynamicShadowsEnabled(false); matProfile->setLayerNormalMappingEnabled(false); matProfile->setLayerParallaxMappingEnabled(false); diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 2b1eb26041..541fcb91eb 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -196,7 +196,8 @@ namespace Ogre // count the texture units free uint8 freeTextureUnits = 16; // lightmap - --freeTextureUnits; + if (mLightmapEnabled) + --freeTextureUnits; // normalmap --freeTextureUnits; // colourmap @@ -1019,7 +1020,8 @@ namespace Ogre { outStream << // global normal - " float3 normal = expand(tex2D(globalNormal, uv)).rgb;\n"; + " float3 normal = expand(tex2D(globalNormal, uv)).rgb;\n" + " normal = float3(normal.x, normal.z, -normal.y); \n"; // convert Ogre to MW coordinate system } From be5555956ced6012bba5937accc9043bfbc425bd Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 28 Feb 2012 22:04:44 +0100 Subject: [PATCH 021/488] improved composite map, now adapts to the ambient/diffuse light --- apps/openmw/mwrender/renderingmanager.cpp | 8 +++++--- apps/openmw/mwrender/terrain.cpp | 14 ++++++++++++++ apps/openmw/mwrender/terrain.hpp | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 04ddc2cf86..7fcfc2a8d2 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -232,17 +232,17 @@ void RenderingManager::setAmbientMode() { case 0: - mRendering.getScene()->setAmbientLight(mAmbientColor); + setAmbientColour(mAmbientColor); break; case 1: - mRendering.getScene()->setAmbientLight(0.7f*mAmbientColor + 0.3f*ColourValue(1,1,1)); + setAmbientColour(0.7f*mAmbientColor + 0.3f*ColourValue(1,1,1)); break; case 2: - mRendering.getScene()->setAmbientLight(ColourValue(1,1,1)); + setAmbientColour(ColourValue(1,1,1)); break; } } @@ -297,11 +297,13 @@ void RenderingManager::skipAnimation (const MWWorld::Ptr& ptr) void RenderingManager::setSunColour(const Ogre::ColourValue& colour) { mSun->setDiffuseColour(colour); + mTerrainManager->setDiffuse(colour); } void RenderingManager::setAmbientColour(const Ogre::ColourValue& colour) { mRendering.getScene()->setAmbientLight(colour); + mTerrainManager->setAmbient(colour); } void RenderingManager::sunEnable() diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index d5f7684288..dd05bf3336 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -73,6 +73,20 @@ namespace MWRender OGRE_DELETE mTerrainGroup; OGRE_DELETE mTerrainGlobals; } + + //---------------------------------------------------------------------------------------------- + + void TerrainManager::setDiffuse(const Ogre::ColourValue& diffuse) + { + mTerrainGlobals->setCompositeMapDiffuse(diffuse); + } + + //---------------------------------------------------------------------------------------------- + + void TerrainManager::setAmbient(const Ogre::ColourValue& ambient) + { + mTerrainGlobals->setCompositeMapAmbient(ambient); + } //---------------------------------------------------------------------------------------------- diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 195741b0f7..3f2633ff9f 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -31,6 +31,9 @@ namespace MWRender{ TerrainManager(Ogre::SceneManager*); virtual ~TerrainManager(); + void setDiffuse(const Ogre::ColourValue& diffuse); + void setAmbient(const Ogre::ColourValue& ambient); + void cellAdded(MWWorld::Ptr::CellStore* store); void cellRemoved(MWWorld::Ptr::CellStore* store); private: From f2b807142a8f1be856c88a62eab9cfaec70f213c Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 29 Feb 2012 11:08:25 +0100 Subject: [PATCH 022/488] update mangle --- libs/mangle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/mangle b/libs/mangle index f3c9694bf2..14b2851e72 160000 --- a/libs/mangle +++ b/libs/mangle @@ -1 +1 @@ -Subproject commit f3c9694bf249a34eae05f0304e6bfc120014ce8c +Subproject commit 14b2851e72f610ae81dd296598867e6fb0babd2a From 1d0ae9c8d122ea168b9515bb696a74e6d8c9aa05 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Wed, 29 Feb 2012 23:05:22 +0000 Subject: [PATCH 023/488] Start of a basic implementation of fake vertex colours --- apps/openmw/mwrender/terrain.cpp | 146 ++++++++++++++++++++++++++++--- apps/openmw/mwrender/terrain.hpp | 26 +++++- components/esm/loadland.cpp | 5 +- components/esm/loadland.hpp | 2 + 4 files changed, 167 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 710a3ad05e..89c362c4cd 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -2,6 +2,8 @@ #include #include +#include + #include "terrain.hpp" #include "components/esm/loadland.hpp" @@ -104,6 +106,9 @@ namespace MWRender const int terrainX = cellX * 2 + x; const int terrainY = cellY * 2 + y; + //it makes far more sense to reallocate the memory here, + //and let Ogre deal with it due to the issues with deleting + //it at the wrong time if using threads (Which Ogre::Terrain does) terrainData.inputFloat = OGRE_ALLOC_T(float, mLandSize*mLandSize, Ogre::MEMCATEGORY_GEOMETRY); @@ -122,10 +127,16 @@ namespace MWRender mLandSize*sizeof(float)); } + //this should really be 33*33 + Ogre::uchar* vertexColourAlpha = OGRE_ALLOC_T(Ogre::uchar, + mLandSize*mLandSize, + Ogre::MEMCATEGORY_GENERAL); + std::map indexes; initTerrainTextures(&terrainData, store, x * numTextures, y * numTextures, - numTextures, indexes); + numTextures, vertexColourAlpha, + indexes); assert( mTerrainGroup->getTerrain(cellX, cellY) == NULL && "The terrain for this cell already existed" ); @@ -133,9 +144,20 @@ namespace MWRender mTerrainGroup->loadTerrain(terrainX, terrainY, true); Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); + + Ogre::Image vertexColourBlendMap = Ogre::Image(); + vertexColourBlendMap.loadDynamicImage(vertexColourAlpha, + mLandSize, mLandSize, 1, + Ogre::PF_A8, true) + .resize(mTerrainGlobals->getLayerBlendMapSize(), + mTerrainGlobals->getLayerBlendMapSize(), + Ogre::Image::FILTER_BOX); + initTerrainBlendMaps(terrain, store, x * numTextures, y * numTextures, - numTextures, indexes); + numTextures, + vertexColourBlendMap.getData(), + indexes); } } @@ -154,16 +176,30 @@ namespace MWRender &store->land[1][1]->landData->heights[0], mLandSize*mLandSize*sizeof(float)); + Ogre::uchar* vertexColourAlpha = OGRE_ALLOC_T(Ogre::uchar, + mLandSize*mLandSize, + Ogre::MEMCATEGORY_GENERAL); + std::map indexes; initTerrainTextures(&terrainData, store, 0, 0, - ESM::Land::LAND_TEXTURE_SIZE, indexes); + ESM::Land::LAND_TEXTURE_SIZE, vertexColourAlpha, indexes); mTerrainGroup->defineTerrain(cellX, cellY, &terrainData); mTerrainGroup->loadTerrain(cellX, cellY, true); Ogre::Terrain* terrain = mTerrainGroup->getTerrain(cellX, cellY); + + Ogre::Image vertexColourBlendMap = Ogre::Image(); + vertexColourBlendMap.loadDynamicImage(vertexColourAlpha, + mLandSize, mLandSize, 1, + Ogre::PF_A8, true) + .resize(mTerrainGlobals->getLayerBlendMapSize(), + mTerrainGlobals->getLayerBlendMapSize(), + Ogre::Image::FILTER_BOX); + initTerrainBlendMaps(terrain, store, 0, 0, - ESM::Land::LAND_TEXTURE_SIZE, indexes); + ESM::Land::LAND_TEXTURE_SIZE, + vertexColourBlendMap.getData(), indexes); } mTerrainGroup->freeTemporaryResources(); @@ -196,6 +232,7 @@ namespace MWRender void TerrainManager::initTerrainTextures(Ogre::Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, + Ogre::uchar* vertexColourAlpha, std::map& indexes) { assert(store != NULL && "store must be a valid pointer"); @@ -227,7 +264,7 @@ namespace MWRender { //NB: All vtex ids are +1 compared to the ltex ids assert((int)ltexIndex >= 0 && - store->landTextures->ltex.size() > (size_t)ltexIndex - 1 && + (int)store->landTextures->ltex.size() >= (int)ltexIndex - 1 && "LAND.VTEX must be within the bounds of the LTEX array"); std::string texture; @@ -262,6 +299,17 @@ namespace MWRender } } } + + //add the vertex colour overlay + //TODO sort the *4 bit + Ogre::TexturePtr vclr = getVertexColours(store, vertexColourAlpha, fromX*4, fromY*4, mLandSize); + Ogre::TexturePtr normDisp = getNormalDisp("DOES_NOT_EXIST"); + + const size_t position = terrainData->layerList.size(); + terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); + terrainData->layerList[position].worldSize = mRealSize; + terrainData->layerList[position].textureNames.push_back(vclr->getName()); + terrainData->layerList[position].textureNames.push_back(normDisp->getName()); } //---------------------------------------------------------------------------------------------- @@ -269,6 +317,7 @@ namespace MWRender void TerrainManager::initTerrainBlendMaps(Ogre::Terrain* terrain, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, + Ogre::uchar* vertexColourAlpha, const std::map& indexes) { assert(store != NULL && "store must be a valid pointer"); @@ -294,6 +343,15 @@ namespace MWRender ->getBlendPointer(); memset(pBlend, 0, sizeof(float) * blendSize * blendSize); } + //except the overlay, which we will just splat over the top + { + //the overlay is always the last texture layer + float* pBlend = terrain->getLayerBlendMap(terrain->getLayerCount() - 1) + ->getBlendPointer(); + for ( int i = 0; i < blendSize * blendSize; i++ ){ + *pBlend++ = (*vertexColourAlpha++)/255.0f; + } + } //covert the ltex data into a set of blend maps for ( int texY = fromY - 1; texY < fromY + size + 1; texY++ ) @@ -354,10 +412,9 @@ namespace MWRender } } - //update the maps - for ( iter = indexes.begin(); iter != indexes.end(); ++iter ) + for ( int i = 1; i < terrain->getLayerCount(); i++ ) { - Ogre::TerrainLayerBlendMap* blend = terrain->getLayerBlendMap(iter->second); + Ogre::TerrainLayerBlendMap* blend = terrain->getLayerBlendMap(i); blend->dirty(); blend->update(); } @@ -424,8 +481,7 @@ namespace MWRender return texMgr->getByName(normalTextureName); } - const std::string textureName = "default_terrain_normal"; - if ( !texMgr->getByName(textureName).isNull() ) + const std::string textureName = "default_terrain_normal"; if ( !texMgr->getByName(textureName).isNull() ) { return texMgr->getByName(textureName); } @@ -451,4 +507,74 @@ namespace MWRender return tex; } + //---------------------------------------------------------------------------------------------- + + Ogre::TexturePtr TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, + Ogre::uchar* alpha, + int fromX, int fromY, int size) + { + Ogre::TextureManager* const texMgr = Ogre::TextureManager::getSingletonPtr(); + const char* const colours = store->land[1][1]->landData->colours; + + const std::string colourTextureName = "VtexColours_" + + boost::lexical_cast(store->cell->getGridX()) + + "_" + + boost::lexical_cast(store->cell->getGridY()) + + "_" + + boost::lexical_cast(fromX) + + "_" + + boost::lexical_cast(fromY); + + Ogre::TexturePtr tex = texMgr->getByName(colourTextureName); + if ( !tex.isNull() ) + { + return tex; + } + + tex = texMgr->createManual(colourTextureName, + Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + Ogre::TEX_TYPE_2D, size, size, 0, Ogre::PF_BYTE_BGRA); + + Ogre::HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); + + pixelBuffer->lock(Ogre::HardwareBuffer::HBL_NORMAL); + const Ogre::PixelBox& pixelBox = pixelBuffer->getCurrentLock(); + + Ogre::uint8* pDest = static_cast(pixelBox.data); + + for ( int y = 0; y < size; y++ ) + { + for ( int x = 0; x < size; x++ ) + { + const size_t colourOffset = (y+fromY)*3*65 + (x+fromX)*3; + + assert( colourOffset >= 0 && colourOffset < 65*65*3 && + "Colour offset is out of the expected bounds of record" ); + + const unsigned char r = colours[colourOffset + 0]; + const unsigned char g = colours[colourOffset + 1]; + const unsigned char b = colours[colourOffset + 2]; + + //as is the case elsewhere we need to flip the y + const size_t imageOffset = (size - 1 - y)*size*4 + x*4; + pDest[imageOffset + 0] = b; + pDest[imageOffset + 1] = g; + pDest[imageOffset + 2] = r; + pDest[imageOffset + 3] = 255; //Alpha, TODO this needs to be removed + + const size_t alphaOffset = (size - 1 - y)*size + x; + if ( r == 255 && g == 255 && b == 255 ){ + alpha[alphaOffset] = 0; + }else{ + alpha[alphaOffset] = 128; + } + + } + } + + pixelBuffer->unlock(); + + return tex; + } + } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 548d00eab3..a201fdb614 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -74,12 +74,16 @@ namespace MWRender{ * @param fromX the ltex index in the current cell to start making the texture from * @param fromY the ltex index in the current cell to start making the texture from * @param size the size (number of splats) to get + * @param vertexColourAlpha this should be an empty array containing the number of + * vertexes in this terrain segment. It is filled with the + * alpha values for the vertex colours * @param indexes a mapping of ltex index to the terrain texture layer that * can be used by initTerrainBlendMaps */ void initTerrainTextures(Ogre::Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, + Ogre::uchar* vertexColourAlpha, std::map& indexes); /** @@ -90,11 +94,16 @@ namespace MWRender{ * @param fromX the ltex index in the current cell to start making the texture from * @param fromY the ltex index in the current cell to start making the texture from * @param size the size (number of splats) to get + * @param vertexColourAlpha this should be an array containing the alpha values + * for the vertex colours. NOTE: This should be the + * size of a splat map, which is NOT the same size + * as retured from initTerrainTextures. * @param indexes the mapping of ltex to blend map produced by initTerrainTextures */ void initTerrainBlendMaps(Ogre::Terrain* terrain, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, + Ogre::uchar* vertexColourAlpha, const std::map& indexes); /** @@ -118,7 +127,22 @@ namespace MWRender{ * @param fileName the name of the *diffuse* texture */ Ogre::TexturePtr getNormalDisp(const std::string& fileName); - + + /** + * Due to the fact that Ogre terrain doesn't support vertex colours + * we have to generate them manually + * + * @param store the cell store for the given terrain cell + * @param vertexColourAlpha this should be an empty array containing the number of + * vertexes in this terrain segment. It is filled with the + * alpha values for the vertex colours + * @param fromX the *vertex* index in the current cell to start making texture from + * @param fromY the *vertex* index in the current cell to start making the texture from + * @param size the size (number of vertexes) to get + */ + Ogre::TexturePtr getVertexColours(MWWorld::Ptr::CellStore* store, + Ogre::uchar* alpha, + int fromX, int fromY, int size); }; } diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index 1d670036e3..3bca8692b7 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -93,7 +93,10 @@ void Land::loadData(ESMReader &esm) } if (esm.isNextSub("VCLR")) { - esm.skipHSubSize(12675); + landData->usingColours = true; + esm.getHExact(&landData->colours, 3*LAND_NUM_VERTS); + }else{ + landData->usingColours = false; } //TODO fix magic numbers uint16_t vtex[512]; diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index 4219f3eb63..eeb198e905 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -58,6 +58,8 @@ struct Land float heights[LAND_NUM_VERTS]; //float normals[LAND_NUM_VERTS * 3]; uint16_t textures[LAND_NUM_TEXTURES]; + + bool usingColours; char colours[3 * LAND_NUM_VERTS]; }; From 69243486960bb9b4ab8bed03d591dcbf04a0f085 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Wed, 29 Feb 2012 23:33:54 +0000 Subject: [PATCH 024/488] Fixed some texture splatting issues with loading empty terrain cells --- apps/openmw/mwrender/terrain.cpp | 3 +-- components/esm/loadland.cpp | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 89c362c4cd..0e6fdff01e 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -263,8 +263,7 @@ namespace MWRender if ( it == indexes.end() ) { //NB: All vtex ids are +1 compared to the ltex ids - assert((int)ltexIndex >= 0 && - (int)store->landTextures->ltex.size() >= (int)ltexIndex - 1 && + assert( (int)store->landTextures->ltex.size() >= (int)ltexIndex - 1 && "LAND.VTEX must be within the bounds of the LTEX array"); std::string texture; diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index 3bca8692b7..4fe6279d32 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -111,6 +111,8 @@ void Land::loadData(ESMReader &esm) } else { + landData->usingColours = false; + memset(&landData->textures, 0, 512 * sizeof(uint16_t)); for (int i = 0; i < LAND_NUM_VERTS; i++) { landData->heights[i] = -256.0f * HEIGHT_SCALE; From 611f336d0731bdff53203c6aa93fa5b9af087522 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Wed, 29 Feb 2012 23:38:21 +0000 Subject: [PATCH 025/488] Now doesn't attempt to use fake vertex colours with cells that don't have vertex colours --- apps/openmw/mwrender/terrain.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 0e6fdff01e..59f2f2082f 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -300,15 +300,18 @@ namespace MWRender } //add the vertex colour overlay - //TODO sort the *4 bit - Ogre::TexturePtr vclr = getVertexColours(store, vertexColourAlpha, fromX*4, fromY*4, mLandSize); - Ogre::TexturePtr normDisp = getNormalDisp("DOES_NOT_EXIST"); + if ( store->land[1][1]->landData->usingColours ) + { + //TODO sort the *4 bit + Ogre::TexturePtr vclr = getVertexColours(store, vertexColourAlpha, fromX*4, fromY*4, mLandSize); + Ogre::TexturePtr normDisp = getNormalDisp("DOES_NOT_EXIST"); - const size_t position = terrainData->layerList.size(); - terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); - terrainData->layerList[position].worldSize = mRealSize; - terrainData->layerList[position].textureNames.push_back(vclr->getName()); - terrainData->layerList[position].textureNames.push_back(normDisp->getName()); + const size_t position = terrainData->layerList.size(); + terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); + terrainData->layerList[position].worldSize = mRealSize; + terrainData->layerList[position].textureNames.push_back(vclr->getName()); + terrainData->layerList[position].textureNames.push_back(normDisp->getName()); + } } //---------------------------------------------------------------------------------------------- @@ -343,6 +346,7 @@ namespace MWRender memset(pBlend, 0, sizeof(float) * blendSize * blendSize); } //except the overlay, which we will just splat over the top + if ( store->land[1][1]->landData->usingColours ) { //the overlay is always the last texture layer float* pBlend = terrain->getLayerBlendMap(terrain->getLayerCount() - 1) From fddf7b4dd059eae8c0b0a536d8914471d7869642 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 1 Mar 2012 14:35:39 +0100 Subject: [PATCH 026/488] terrain material now supports point lights --- apps/openmw/mwrender/terrain.cpp | 10 +-- apps/openmw/mwrender/terrainmaterial.cpp | 93 ++++++++++++++++++++---- apps/openmw/mwrender/terrainmaterial.hpp | 2 + 3 files changed, 84 insertions(+), 21 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 30e0823f94..df5bba7c46 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -29,10 +29,10 @@ namespace MWRender static_cast(activeProfile); mTerrainGlobals->setMaxPixelError(8); - //mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 256 : 1024); - //mTerrainGlobals->setLightMapSize(SPLIT_TERRAIN ? 256 : 1024); - //mTerrainGlobals->setCompositeMapSize(SPLIT_TERRAIN ? 256 : 1024); - //mTerrainGlobals->setDefaultGlobalColourMapSize(256); + mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setLightMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setCompositeMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setDefaultGlobalColourMapSize(256); //10 (default) didn't seem to be quite enough mTerrainGlobals->setSkirtSize(128); @@ -266,7 +266,7 @@ namespace MWRender Ogre::TexturePtr normDisp = getNormalDisp("textures\\" + texture); - //terrainData->layerList[position].worldSize = 256; + terrainData->layerList[position].worldSize = 256; terrainData->layerList[position].textureNames.push_back("textures\\" + texture); //Normal map. This should be removed but it would require alterations to diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 8985fc8ae2..9121da793b 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -36,6 +36,8 @@ THE SOFTWARE. #include "OgreHardwarePixelBuffer.h" #include "OgreShadowCameraSetupPSSM.h" +#define POINTLIGHTS + namespace Ogre { //--------------------------------------------------------------------- @@ -218,6 +220,22 @@ namespace Ogre } + int TerrainMaterialGeneratorB::SM2Profile::getNumberOfLightsSupported() const + { + #ifndef POINTLIGHTS + return 1; + #else + // number of supported lights depends on the number of available constant registers, + // which in turn depends on the shader profile used + if (GpuProgramManager::getSingleton().isSyntaxSupported("ps_3_0") + || GpuProgramManager::getSingleton().isSyntaxSupported("ps_4_0") + || GpuProgramManager::getSingleton().isSyntaxSupported("fp40") + ) + return 32; + else + return 8; + #endif + } //--------------------------------------------------------------------- MaterialPtr TerrainMaterialGeneratorB::SM2Profile::generate(const Terrain* terrain) { @@ -542,9 +560,15 @@ namespace Ogre params->setIgnoreMissingParams(true); params->setNamedAutoConstant("ambient", GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR); - params->setNamedAutoConstant("lightPosObjSpace", GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, 0); - params->setNamedAutoConstant("lightDiffuseColour", GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, 0); - //params->setNamedAutoConstant("lightSpecularColour", GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR, 0); + + for (int i=0; igetNumberOfLightsSupported(); ++i) + { + params->setNamedAutoConstant("lightPosObjSpace"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, i); + params->setNamedAutoConstant("lightDiffuseColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, i); + params->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); + //params->setNamedAutoConstant("lightSpecularColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR, i); + } + params->setNamedAutoConstant("eyePosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); params->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); @@ -945,10 +969,25 @@ namespace Ogre outStream << // Only 1 light supported in this version // deferred shading profile / generator later, ok? :) - "uniform float3 ambient,\n" - "uniform float4 lightPosObjSpace,\n" - "uniform float3 lightDiffuseColour,\n" - //"uniform float3 lightSpecularColour,\n" + "uniform float3 ambient,\n"; + + + for (int i=0; igetNumberOfLightsSupported(); ++i) + { + outStream << + "uniform float4 lightPosObjSpace"<getNumberOfLightsSupported(); ++i) + outStream << + " float3 lightDir"<getNumberOfLightsSupported(); ++i) + { + outStream << " float3 halfAngle"<getNumberOfLightsSupported(); ++i) + outStream << " outputCol.rgb += litRes"<isLayerSpecularMappingEnabled()) diff --git a/apps/openmw/mwrender/terrainmaterial.hpp b/apps/openmw/mwrender/terrainmaterial.hpp index eaa5572ee7..7c0b87ce46 100644 --- a/apps/openmw/mwrender/terrainmaterial.hpp +++ b/apps/openmw/mwrender/terrainmaterial.hpp @@ -142,6 +142,8 @@ namespace Ogre */ bool getReceiveDynamicShadowsLowLod() const { return mLowLodShadows; } + int getNumberOfLightsSupported() const; + /// Internal bool _isSM3Available() const { return mSM3Available; } From 562cc7aa30f96cabf3d8380696f777f622dcd45c Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 1 Mar 2012 15:03:43 +0100 Subject: [PATCH 027/488] fixed 2 assertions that caused crashes --- apps/openmw/mwrender/terrain.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index df5bba7c46..5925ad82a0 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -146,16 +146,16 @@ namespace MWRender x * numTextures, y * numTextures, numTextures, indexes); - assert( mTerrainGroup->getTerrain(cellX, cellY) == NULL && - "The terrain for this cell already existed" ); - mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); + if (mTerrainGroup->getTerrain(cellX, cellY) == NULL) + { + mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); - mTerrainGroup->loadTerrain(terrainX, terrainY, true); - Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); - initTerrainBlendMaps(terrain, store, - x * numTextures, y * numTextures, - numTextures, indexes); - + mTerrainGroup->loadTerrain(terrainX, terrainY, true); + Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); + initTerrainBlendMaps(terrain, store, + x * numTextures, y * numTextures, + numTextures, indexes); + } } } } @@ -246,7 +246,7 @@ namespace MWRender { //NB: All vtex ids are +1 compared to the ltex ids assert((int)ltexIndex >= 0 && - store->landTextures->ltex.size() > (size_t)ltexIndex - 1 && + (int)store->landTextures->ltex.size() > (int)ltexIndex - 1 && "LAND.VTEX must be within the bounds of the LTEX array"); std::string texture; From 8dd6e75ae1437f9db6db52e0d9fab5498f78624b Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Fri, 2 Mar 2012 11:56:51 +0000 Subject: [PATCH 028/488] Vertex colours now uses the Ogre::Terrain colour map --- apps/openmw/mwrender/terrain.cpp | 134 +++++++------------------------ apps/openmw/mwrender/terrain.hpp | 17 +--- 2 files changed, 34 insertions(+), 117 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 59f2f2082f..2d433d52f5 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -2,8 +2,6 @@ #include #include -#include - #include "terrain.hpp" #include "components/esm/loadland.hpp" @@ -127,38 +125,29 @@ namespace MWRender mLandSize*sizeof(float)); } - //this should really be 33*33 - Ogre::uchar* vertexColourAlpha = OGRE_ALLOC_T(Ogre::uchar, - mLandSize*mLandSize, - Ogre::MEMCATEGORY_GENERAL); - std::map indexes; initTerrainTextures(&terrainData, store, x * numTextures, y * numTextures, - numTextures, vertexColourAlpha, - indexes); + numTextures, indexes); assert( mTerrainGroup->getTerrain(cellX, cellY) == NULL && "The terrain for this cell already existed" ); mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); mTerrainGroup->loadTerrain(terrainX, terrainY, true); + Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); - - Ogre::Image vertexColourBlendMap = Ogre::Image(); - vertexColourBlendMap.loadDynamicImage(vertexColourAlpha, - mLandSize, mLandSize, 1, - Ogre::PF_A8, true) - .resize(mTerrainGlobals->getLayerBlendMapSize(), - mTerrainGlobals->getLayerBlendMapSize(), - Ogre::Image::FILTER_BOX); - initTerrainBlendMaps(terrain, store, x * numTextures, y * numTextures, numTextures, - vertexColourBlendMap.getData(), indexes); - + + if ( store->land[1][1]->landData->usingColours ) + { + Ogre::Image vertex = getVertexColours(store, x*32, y*32, mLandSize); + terrain->setGlobalColourMapEnabled(true); + terrain->getGlobalColourMap()->loadImage(vertex); + } } } } @@ -176,30 +165,25 @@ namespace MWRender &store->land[1][1]->landData->heights[0], mLandSize*mLandSize*sizeof(float)); - Ogre::uchar* vertexColourAlpha = OGRE_ALLOC_T(Ogre::uchar, - mLandSize*mLandSize, - Ogre::MEMCATEGORY_GENERAL); - std::map indexes; initTerrainTextures(&terrainData, store, 0, 0, - ESM::Land::LAND_TEXTURE_SIZE, vertexColourAlpha, indexes); + ESM::Land::LAND_TEXTURE_SIZE, indexes); mTerrainGroup->defineTerrain(cellX, cellY, &terrainData); mTerrainGroup->loadTerrain(cellX, cellY, true); Ogre::Terrain* terrain = mTerrainGroup->getTerrain(cellX, cellY); - Ogre::Image vertexColourBlendMap = Ogre::Image(); - vertexColourBlendMap.loadDynamicImage(vertexColourAlpha, - mLandSize, mLandSize, 1, - Ogre::PF_A8, true) - .resize(mTerrainGlobals->getLayerBlendMapSize(), - mTerrainGlobals->getLayerBlendMapSize(), - Ogre::Image::FILTER_BOX); - initTerrainBlendMaps(terrain, store, 0, 0, ESM::Land::LAND_TEXTURE_SIZE, - vertexColourBlendMap.getData(), indexes); + indexes); + + if ( store->land[1][1]->landData->usingColours ) + { + Ogre::Image vertex = getVertexColours(store, 0, 0, mLandSize); + terrain->setGlobalColourMapEnabled(true); + terrain->getGlobalColourMap()->loadImage(vertex); + } } mTerrainGroup->freeTemporaryResources(); @@ -232,7 +216,6 @@ namespace MWRender void TerrainManager::initTerrainTextures(Ogre::Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, - Ogre::uchar* vertexColourAlpha, std::map& indexes) { assert(store != NULL && "store must be a valid pointer"); @@ -298,20 +281,6 @@ namespace MWRender } } } - - //add the vertex colour overlay - if ( store->land[1][1]->landData->usingColours ) - { - //TODO sort the *4 bit - Ogre::TexturePtr vclr = getVertexColours(store, vertexColourAlpha, fromX*4, fromY*4, mLandSize); - Ogre::TexturePtr normDisp = getNormalDisp("DOES_NOT_EXIST"); - - const size_t position = terrainData->layerList.size(); - terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); - terrainData->layerList[position].worldSize = mRealSize; - terrainData->layerList[position].textureNames.push_back(vclr->getName()); - terrainData->layerList[position].textureNames.push_back(normDisp->getName()); - } } //---------------------------------------------------------------------------------------------- @@ -319,7 +288,6 @@ namespace MWRender void TerrainManager::initTerrainBlendMaps(Ogre::Terrain* terrain, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, - Ogre::uchar* vertexColourAlpha, const std::map& indexes) { assert(store != NULL && "store must be a valid pointer"); @@ -345,16 +313,6 @@ namespace MWRender ->getBlendPointer(); memset(pBlend, 0, sizeof(float) * blendSize * blendSize); } - //except the overlay, which we will just splat over the top - if ( store->land[1][1]->landData->usingColours ) - { - //the overlay is always the last texture layer - float* pBlend = terrain->getLayerBlendMap(terrain->getLayerCount() - 1) - ->getBlendPointer(); - for ( int i = 0; i < blendSize * blendSize; i++ ){ - *pBlend++ = (*vertexColourAlpha++)/255.0f; - } - } //covert the ltex data into a set of blend maps for ( int texY = fromY - 1; texY < fromY + size + 1; texY++ ) @@ -484,7 +442,8 @@ namespace MWRender return texMgr->getByName(normalTextureName); } - const std::string textureName = "default_terrain_normal"; if ( !texMgr->getByName(textureName).isNull() ) + const std::string textureName = "default_terrain_normal"; + if ( !texMgr->getByName(textureName).isNull() ) { return texMgr->getByName(textureName); } @@ -512,38 +471,14 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - Ogre::TexturePtr TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, - Ogre::uchar* alpha, + Ogre::Image TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size) { - Ogre::TextureManager* const texMgr = Ogre::TextureManager::getSingletonPtr(); const char* const colours = store->land[1][1]->landData->colours; - const std::string colourTextureName = "VtexColours_" + - boost::lexical_cast(store->cell->getGridX()) + - "_" + - boost::lexical_cast(store->cell->getGridY()) + - "_" + - boost::lexical_cast(fromX) + - "_" + - boost::lexical_cast(fromY); - - Ogre::TexturePtr tex = texMgr->getByName(colourTextureName); - if ( !tex.isNull() ) - { - return tex; - } - - tex = texMgr->createManual(colourTextureName, - Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - Ogre::TEX_TYPE_2D, size, size, 0, Ogre::PF_BYTE_BGRA); - - Ogre::HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); - - pixelBuffer->lock(Ogre::HardwareBuffer::HBL_NORMAL); - const Ogre::PixelBox& pixelBox = pixelBuffer->getCurrentLock(); - - Ogre::uint8* pDest = static_cast(pixelBox.data); + Ogre::uchar* imgData = OGRE_ALLOC_T(Ogre::uchar, + size*size*sizeof(Ogre::uchar)*3, + Ogre::MEMCATEGORY_GENERAL); for ( int y = 0; y < size; y++ ) { @@ -559,25 +494,18 @@ namespace MWRender const unsigned char b = colours[colourOffset + 2]; //as is the case elsewhere we need to flip the y - const size_t imageOffset = (size - 1 - y)*size*4 + x*4; - pDest[imageOffset + 0] = b; - pDest[imageOffset + 1] = g; - pDest[imageOffset + 2] = r; - pDest[imageOffset + 3] = 255; //Alpha, TODO this needs to be removed - - const size_t alphaOffset = (size - 1 - y)*size + x; - if ( r == 255 && g == 255 && b == 255 ){ - alpha[alphaOffset] = 0; - }else{ - alpha[alphaOffset] = 128; - } + const size_t imageOffset = (size - 1 - y)*size*3 + x*3; + imgData[imageOffset + 0] = r; + imgData[imageOffset + 1] = g; + imgData[imageOffset + 2] = b; } } - pixelBuffer->unlock(); + Ogre::Image img; + img.loadDynamicImage(imgData, size, size, 1, Ogre::PF_R8G8B8, true); - return tex; + return img; } } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index a201fdb614..232c1d103d 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -74,16 +74,12 @@ namespace MWRender{ * @param fromX the ltex index in the current cell to start making the texture from * @param fromY the ltex index in the current cell to start making the texture from * @param size the size (number of splats) to get - * @param vertexColourAlpha this should be an empty array containing the number of - * vertexes in this terrain segment. It is filled with the - * alpha values for the vertex colours * @param indexes a mapping of ltex index to the terrain texture layer that * can be used by initTerrainBlendMaps */ void initTerrainTextures(Ogre::Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, - Ogre::uchar* vertexColourAlpha, std::map& indexes); /** @@ -94,16 +90,11 @@ namespace MWRender{ * @param fromX the ltex index in the current cell to start making the texture from * @param fromY the ltex index in the current cell to start making the texture from * @param size the size (number of splats) to get - * @param vertexColourAlpha this should be an array containing the alpha values - * for the vertex colours. NOTE: This should be the - * size of a splat map, which is NOT the same size - * as retured from initTerrainTextures. * @param indexes the mapping of ltex to blend map produced by initTerrainTextures */ void initTerrainBlendMaps(Ogre::Terrain* terrain, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, - Ogre::uchar* vertexColourAlpha, const std::map& indexes); /** @@ -133,15 +124,13 @@ namespace MWRender{ * we have to generate them manually * * @param store the cell store for the given terrain cell - * @param vertexColourAlpha this should be an empty array containing the number of - * vertexes in this terrain segment. It is filled with the - * alpha values for the vertex colours * @param fromX the *vertex* index in the current cell to start making texture from * @param fromY the *vertex* index in the current cell to start making the texture from * @param size the size (number of vertexes) to get + * + * @TODO FIXME the return of this function possibly copies the image data */ - Ogre::TexturePtr getVertexColours(MWWorld::Ptr::CellStore* store, - Ogre::uchar* alpha, + Ogre::Image getVertexColours(MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size); }; From 2bea4c47242420b8d0b5db4661745a410186a727 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 2 Mar 2012 15:29:12 +0100 Subject: [PATCH 029/488] fixed the global colour map, apparently Ogre::Terrain was corrupting it somehow, now we are just bypassing Ogre::Terrain for the colour map and passing it directly to the material, which makes more sense performance-wise anyway --- apps/openmw/mwrender/terrain.cpp | 68 +++++++++++++++++------- apps/openmw/mwrender/terrain.hpp | 4 +- apps/openmw/mwrender/terrainmaterial.cpp | 10 ++-- 3 files changed, 55 insertions(+), 27 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 4dd03c0970..8d82cb2967 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -6,6 +6,8 @@ #include "components/esm/loadland.hpp" +#include + using namespace Ogre; namespace MWRender @@ -48,6 +50,7 @@ namespace MWRender matProfile->setLayerNormalMappingEnabled(false); matProfile->setLayerParallaxMappingEnabled(false); matProfile->setReceiveDynamicShadowsEnabled(false); + matProfile->setGlobalColourMapEnabled(true); mLandSize = ESM::Land::LAND_SIZE; mRealSize = ESM::Land::REAL_SIZE; @@ -163,9 +166,12 @@ namespace MWRender if ( store->land[1][1]->landData->usingColours ) { - Ogre::Image vertex = getVertexColours(store, x*32, y*32, mLandSize); - terrain->setGlobalColourMapEnabled(true); - terrain->getGlobalColourMap()->loadImage(vertex); + Ogre::TexturePtr vertex = getVertexColours(store, x*32, y*32, mLandSize); + + MaterialPtr mat = terrain->_getMaterial(); + mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); + mat = terrain->_getCompositeMapMaterial(); + mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); } } } @@ -200,9 +206,12 @@ namespace MWRender if ( store->land[1][1]->landData->usingColours ) { - Ogre::Image vertex = getVertexColours(store, 0, 0, mLandSize); - terrain->setGlobalColourMapEnabled(true); - terrain->getGlobalColourMap()->loadImage(vertex); + Ogre::TexturePtr vertex = getVertexColours(store, 0, 0, mLandSize); + + MaterialPtr mat = terrain->_getMaterial(); + mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); + mat = terrain->_getCompositeMapMaterial(); + mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); } } @@ -495,14 +504,37 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - Ogre::Image TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, - int fromX, int fromY, int size) + Ogre::TexturePtr TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, + int fromX, int fromY, int size) { + Ogre::TextureManager* const texMgr = Ogre::TextureManager::getSingletonPtr(); const char* const colours = store->land[1][1]->landData->colours; - Ogre::uchar* imgData = OGRE_ALLOC_T(Ogre::uchar, - size*size*sizeof(Ogre::uchar)*3, - Ogre::MEMCATEGORY_GENERAL); + const std::string colourTextureName = "VtexColours_" + + boost::lexical_cast(store->cell->getGridX()) + + "_" + + boost::lexical_cast(store->cell->getGridY()) + + "_" + + boost::lexical_cast(fromX) + + "_" + + boost::lexical_cast(fromY); + + Ogre::TexturePtr tex = texMgr->getByName(colourTextureName); + if ( !tex.isNull() ) + { + return tex; + } + + tex = texMgr->createManual(colourTextureName, + Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + Ogre::TEX_TYPE_2D, size, size, 0, Ogre::PF_BYTE_BGRA); + + Ogre::HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); + + pixelBuffer->lock(Ogre::HardwareBuffer::HBL_DISCARD); + const Ogre::PixelBox& pixelBox = pixelBuffer->getCurrentLock(); + + Ogre::uint8* pDest = static_cast(pixelBox.data); for ( int y = 0; y < size; y++ ) { @@ -518,18 +550,16 @@ namespace MWRender const unsigned char b = colours[colourOffset + 2]; //as is the case elsewhere we need to flip the y - const size_t imageOffset = (size - 1 - y)*size*3 + x*3; - imgData[imageOffset + 0] = r; - imgData[imageOffset + 1] = g; - imgData[imageOffset + 2] = b; - + const size_t imageOffset = (size - 1 - y)*size*4 + x*4; + pDest[imageOffset + 0] = b; + pDest[imageOffset + 1] = g; + pDest[imageOffset + 2] = r; } } - Ogre::Image img; - img.loadDynamicImage(imgData, size, size, 1, Ogre::PF_R8G8B8, true); + pixelBuffer->unlock(); - return img; + return tex; } } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 923f4fc2bf..a0a48fb37f 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -130,10 +130,8 @@ namespace MWRender{ * @param fromX the *vertex* index in the current cell to start making texture from * @param fromY the *vertex* index in the current cell to start making the texture from * @param size the size (number of vertexes) to get - * - * @TODO FIXME the return of this function possibly copies the image data */ - Ogre::Image getVertexColours(MWWorld::Ptr::CellStore* store, + Ogre::TexturePtr getVertexColours(MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size); }; diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 9121da793b..0edc23a71b 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -203,7 +203,7 @@ namespace Ogre // normalmap --freeTextureUnits; // colourmap - if (terrain->getGlobalColourMapEnabled()) + //if (terrain->getGlobalColourMapEnabled()) --freeTextureUnits; if (isShadowingEnabled(HIGH_LOD, terrain)) { @@ -359,9 +359,9 @@ namespace Ogre tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); // global colour map - if (terrain->getGlobalColourMapEnabled() && isGlobalColourMapEnabled()) + //if (terrain->getGlobalColourMapEnabled() && isGlobalColourMapEnabled()) { - tu = pass->createTextureUnitState(terrain->getGlobalColourMap()->getName()); + tu = pass->createTextureUnitState(""); tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); } @@ -1004,7 +1004,7 @@ namespace Ogre "uniform sampler2D globalNormal : register(s" << currentSamplerIdx++ << ")\n"; - if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) + //if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) { outStream << ", uniform sampler2D globalColourMap : register(s" << currentSamplerIdx++ << ")\n"; @@ -1299,7 +1299,7 @@ namespace Ogre } else { - if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) + //if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) { // sample colour map and apply to diffuse outStream << " diffuse *= tex2D(globalColourMap, uv).rgb;\n"; From 0d4e3b8e758ba916f83e3b4ddc496348df3d79e1 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 2 Mar 2012 18:33:05 +0100 Subject: [PATCH 030/488] remove alpha channel from colour map --- apps/openmw/mwrender/terrain.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 8d82cb2967..3258925637 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -527,7 +527,7 @@ namespace MWRender tex = texMgr->createManual(colourTextureName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - Ogre::TEX_TYPE_2D, size, size, 0, Ogre::PF_BYTE_BGRA); + Ogre::TEX_TYPE_2D, size, size, 0, Ogre::PF_BYTE_BGR); Ogre::HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); @@ -550,7 +550,7 @@ namespace MWRender const unsigned char b = colours[colourOffset + 2]; //as is the case elsewhere we need to flip the y - const size_t imageOffset = (size - 1 - y)*size*4 + x*4; + const size_t imageOffset = (size - 1 - y)*size*3 + x*3; pDest[imageOffset + 0] = b; pDest[imageOffset + 1] = g; pDest[imageOffset + 2] = r; From 461ec9f3d6ddfb3642644d85af925c2c7518e642 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 2 Mar 2012 18:50:55 +0100 Subject: [PATCH 031/488] fix regarding last commit --- apps/openmw/mwrender/terrain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 3258925637..ee71754653 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -550,7 +550,7 @@ namespace MWRender const unsigned char b = colours[colourOffset + 2]; //as is the case elsewhere we need to flip the y - const size_t imageOffset = (size - 1 - y)*size*3 + x*3; + const size_t imageOffset = (size - 1 - y)*size*4 + x*4; pDest[imageOffset + 0] = b; pDest[imageOffset + 1] = g; pDest[imageOffset + 2] = r; From 3ecc427b9606f8f7d85adee4b528c0dc6bb12a80 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Fri, 2 Mar 2012 20:27:20 +0000 Subject: [PATCH 032/488] Implemented slightly better texture splatting --- apps/openmw/mwrender/terrain.cpp | 172 ++++++++++++++++--------------- apps/openmw/mwrender/terrain.hpp | 6 -- 2 files changed, 90 insertions(+), 88 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index ee71754653..39aeb64371 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -31,7 +31,7 @@ namespace MWRender static_cast(activeProfile); mTerrainGlobals->setMaxPixelError(8); - mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 32 : 1024); mTerrainGlobals->setLightMapSize(SPLIT_TERRAIN ? 256 : 1024); mTerrainGlobals->setCompositeMapSize(SPLIT_TERRAIN ? 256 : 1024); mTerrainGlobals->setDefaultGlobalColourMapSize(256); @@ -255,62 +255,75 @@ namespace MWRender fromY+size <= ESM::Land::LAND_TEXTURE_SIZE && "Can't get a terrain texture on terrain outside the current cell"); - //there is one texture that we want to use as a base (i.e. it won't have - //a blend map). This holds the ltex index of that base texture so that - //we know not to include it in the output map - int baseTexture = -1; + //this ensures that the ltex indexes are sorted (or retrived as sorted + //which simplifies shading between cells). + // + //If we don't sort the ltex indexes, the splatting order may differ between + //cells which may lead to inconsistent results when shading between cells + std::set ltexIndexes; for ( int y = fromY - 1; y < fromY + size + 1; y++ ) { for ( int x = fromX - 1; x < fromX + size + 1; x++ ) { - const uint16_t ltexIndex = getLtexIndexAt(store, x, y); - //this is the base texture, so we can ignore this at present - if ( ltexIndex == baseTexture ) + ltexIndexes.insert(getLtexIndexAt(store, x, y)); + } + } + + //there is one texture that we want to use as a base (i.e. it won't have + //a blend map). This holds the ltex index of that base texture so that + //we know not to include it in the output map + int baseTexture = -1; + for ( std::set::iterator iter = ltexIndexes.begin(); + iter != ltexIndexes.end(); + ++iter ) + { + const uint16_t ltexIndex = *iter; + //this is the base texture, so we can ignore this at present + if ( ltexIndex == baseTexture ) + { + continue; + } + + const std::map::const_iterator it = indexes.find(ltexIndex); + + if ( it == indexes.end() ) + { + //NB: All vtex ids are +1 compared to the ltex ids + + assert( (int)store->landTextures->ltex.size() >= (int)ltexIndex - 1 && + "LAND.VTEX must be within the bounds of the LTEX array"); + + std::string texture; + if ( ltexIndex == 0 ) { - continue; + texture = "_land_default.dds"; + } + else + { + texture = store->landTextures->ltex[ltexIndex-1].texture; + //TODO this is needed due to MWs messed up texture handling + texture = texture.substr(0, texture.rfind(".")) + ".dds"; } - const std::map::const_iterator it = indexes.find(ltexIndex); + const size_t position = terrainData->layerList.size(); + terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); - if ( it == indexes.end() ) + Ogre::TexturePtr normDisp = getNormalDisp("textures\\" + texture); + + terrainData->layerList[position].worldSize = 256; + terrainData->layerList[position].textureNames.push_back("textures\\" + texture); + + //Normal map. This should be removed but it would require alterations to + //the material generator. Another option would be to use a 1x1 blank texture + //terrainData->layerList[position].textureNames.push_back(normDisp->getName()); + + if ( baseTexture == -1 ) { - //NB: All vtex ids are +1 compared to the ltex ids - - assert( (int)store->landTextures->ltex.size() >= (int)ltexIndex - 1 && - "LAND.VTEX must be within the bounds of the LTEX array"); - - std::string texture; - if ( ltexIndex == 0 ) - { - texture = "_land_default.dds"; - } - else - { - texture = store->landTextures->ltex[ltexIndex-1].texture; - //TODO this is needed due to MWs messed up texture handling - texture = texture.substr(0, texture.rfind(".")) + ".dds"; - } - - const size_t position = terrainData->layerList.size(); - terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); - - Ogre::TexturePtr normDisp = getNormalDisp("textures\\" + texture); - - terrainData->layerList[position].worldSize = 256; - terrainData->layerList[position].textureNames.push_back("textures\\" + texture); - - //Normal map. This should be removed but it would require alterations to - //the material generator. Another option would be to use a 1x1 blank texture - //terrainData->layerList[position].textureNames.push_back(normDisp->getName()); - - if ( baseTexture == -1 ) - { - baseTexture = ltexIndex; - } - else - { - indexes[ltexIndex] = position; - } + baseTexture = ltexIndex; + } + else + { + indexes[ltexIndex] = position; } } } @@ -335,8 +348,8 @@ namespace MWRender //that need to result in an integer for correct splatting assert( (size & (size - 1)) == 0 && "Size must be a power of 2"); - const int blendSize = terrain->getLayerBlendMapSize(); - const int blendDist = TERRAIN_SHADE_DISTANCE * (blendSize / size); + const int blendMapSize = terrain->getLayerBlendMapSize(); + const int splatSize = blendMapSize / size; //zero out every map std::map::const_iterator iter; @@ -344,7 +357,7 @@ namespace MWRender { float* pBlend = terrain->getLayerBlendMap(iter->second) ->getBlendPointer(); - memset(pBlend, 0, sizeof(float) * blendSize * blendSize); + memset(pBlend, 0, sizeof(float) * blendMapSize * blendMapSize); } //covert the ltex data into a set of blend maps @@ -354,11 +367,6 @@ namespace MWRender { const uint16_t ltexIndex = getLtexIndexAt(store, texX, texY); - //whilte texX is the splat index relative to the entire cell, - //relX is relative to the current segment we are splatting - const int relX = texX - fromX; - const int relY = texY - fromY; - //check if it is the base texture (which isn't in the map) and //if it is don't bother altering the blend map for it if ( indexes.find(ltexIndex) == indexes.end() ) @@ -366,43 +374,43 @@ namespace MWRender continue; } + //while texX is the splat index relative to the entire cell, + //relX is relative to the current segment we are splatting + const int relX = texX - fromX; + const int relY = texY - fromY; + const int layerIndex = indexes.find(ltexIndex)->second; float* const pBlend = terrain->getLayerBlendMap(layerIndex) ->getBlendPointer(); - const int splatSize = blendSize / size; + for ( int y = -1; y < splatSize + 1; y++ ){ + for ( int x = -1; x < splatSize + 1; x++ ){ - //setup the bounds for the shading of this texture splat - const int startX = std::max(0, relX*splatSize - blendDist); - const int endX = std::min(blendSize, (relX+1)*splatSize + blendDist); + //Note: Y is reversed + const int splatY = blendMapSize - 1 - relY * splatSize - y; + const int splatX = relX * splatSize + x; - const int startY = std::max(0, relY*splatSize - blendDist); - const int endY = std::min(blendSize, (relY+1)*splatSize + blendDist); - - for ( int blendX = startX; blendX < endX; blendX++ ) - { - for ( int blendY = startY; blendY < endY; blendY++ ) - { - assert(blendX >= 0 && blendX < blendSize && - "index must be within texture bounds"); - - assert(blendY >= 0 && blendY < blendSize && - "index must be within texture bounds"); - - const int index = blendSize*(blendSize - 1 - blendY) + blendX; - if ( blendX >= relX*splatSize && blendX < (relX+1)*splatSize && - blendY >= relY*splatSize && blendY < (relY+1)*splatSize ) + if ( splatX >= 0 && splatX < blendMapSize && + splatY >= 0 && splatY < blendMapSize ) { - pBlend[index] = 1; - } - else - { - pBlend[index] = std::max((float)pBlend[index], 0.5f); + const int index = (splatY)*blendMapSize + splatX; + + if ( y >= 0 && y < splatSize && + x >= 0 && x < splatSize ) + { + pBlend[index] = 1; + } + else + { + //this provides a transition shading but also + //rounds off the corners slightly + pBlend[index] = std::min(1.0f, pBlend[index] + 0.5f); + } } + } } - } } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index a0a48fb37f..c298b7fc18 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -61,12 +61,6 @@ namespace MWRender{ */ int mRealSize; - /** - * The distance that the current cell should be shaded into the neighbouring - * texture. The distance is in terms of the splat size of a texture - */ - static const float TERRAIN_SHADE_DISTANCE = 0.25f; - /** * Setups up the list of textures for part of a cell, using indexes as * an output to create a mapping of MW LtexIndex to the relevant terrain From 0f705eaca580da7bf11bc773529b9fc54c9d2b28 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Fri, 2 Mar 2012 21:03:53 +0000 Subject: [PATCH 033/488] Removed the option of not splitting terrain as it was slower and adding to code complexity. The only real reason for keeping it, which was that it made debugging some texture issues easier is now gone. --- apps/openmw/mwrender/terrain.cpp | 183 +++++++++++-------------------- apps/openmw/mwrender/terrain.hpp | 25 +---- 2 files changed, 69 insertions(+), 139 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 39aeb64371..113a4a8317 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -31,9 +31,9 @@ namespace MWRender static_cast(activeProfile); mTerrainGlobals->setMaxPixelError(8); - mTerrainGlobals->setLayerBlendMapSize(SPLIT_TERRAIN ? 32 : 1024); - mTerrainGlobals->setLightMapSize(SPLIT_TERRAIN ? 256 : 1024); - mTerrainGlobals->setCompositeMapSize(SPLIT_TERRAIN ? 256 : 1024); + mTerrainGlobals->setLayerBlendMapSize(32); + mTerrainGlobals->setLightMapSize(256); + mTerrainGlobals->setCompositeMapSize(256); mTerrainGlobals->setDefaultGlobalColourMapSize(256); //10 (default) didn't seem to be quite enough @@ -52,29 +52,21 @@ namespace MWRender matProfile->setReceiveDynamicShadowsEnabled(false); matProfile->setGlobalColourMapEnabled(true); - mLandSize = ESM::Land::LAND_SIZE; - mRealSize = ESM::Land::REAL_SIZE; - if ( SPLIT_TERRAIN ) - { - mLandSize = (mLandSize - 1)/2 + 1; - mRealSize /= 2; - } - mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mgr, Ogre::Terrain::ALIGN_X_Z, mLandSize, - mRealSize); + mWorldSize); - mTerrainGroup->setOrigin(Ogre::Vector3(mRealSize/2, + mTerrainGroup->setOrigin(Ogre::Vector3(mWorldSize/2, 0, - -mRealSize/2)); + -mWorldSize/2)); Ogre::Terrain::ImportData& importSettings = mTerrainGroup->getDefaultImportSettings(); importSettings.inputBias = 0; importSettings.terrainSize = mLandSize; - importSettings.worldSize = mRealSize; + importSettings.worldSize = mWorldSize; importSettings.minBatchSize = 9; importSettings.maxBatchSize = mLandSize; @@ -111,109 +103,72 @@ namespace MWRender const int cellY = store->cell->getGridY(); - if ( SPLIT_TERRAIN ) + //split the cell terrain into four segments + const int numTextures = ESM::Land::LAND_TEXTURE_SIZE/2; + + for ( int x = 0; x < 2; x++ ) { - //split the cell terrain into four segments - const int numTextures = ESM::Land::LAND_TEXTURE_SIZE/2; - - for ( int x = 0; x < 2; x++ ) + for ( int y = 0; y < 2; y++ ) { - for ( int y = 0; y < 2; y++ ) + Ogre::Terrain::ImportData terrainData = + mTerrainGroup->getDefaultImportSettings(); + + const int terrainX = cellX * 2 + x; + const int terrainY = cellY * 2 + y; + + //it makes far more sense to reallocate the memory here, + //and let Ogre deal with it due to the issues with deleting + //it at the wrong time if using threads (Which Ogre::Terrain does) + terrainData.inputFloat = OGRE_ALLOC_T(float, + mLandSize*mLandSize, + Ogre::MEMCATEGORY_GEOMETRY); + + //copy the height data row by row + for ( int terrainCopyY = 0; terrainCopyY < mLandSize; terrainCopyY++ ) { - Ogre::Terrain::ImportData terrainData = - mTerrainGroup->getDefaultImportSettings(); + //the offset of the current segment + const size_t yOffset = y * (mLandSize-1) * ESM::Land::LAND_SIZE + + //offset of the row + terrainCopyY * ESM::Land::LAND_SIZE; + const size_t xOffset = x * (mLandSize-1); - const int terrainX = cellX * 2 + x; - const int terrainY = cellY * 2 + y; + memcpy(&terrainData.inputFloat[terrainCopyY*mLandSize], + &store->land[1][1]->landData->heights[yOffset + xOffset], + mLandSize*sizeof(float)); + } - //it makes far more sense to reallocate the memory here, - //and let Ogre deal with it due to the issues with deleting - //it at the wrong time if using threads (Which Ogre::Terrain does) - terrainData.inputFloat = OGRE_ALLOC_T(float, - mLandSize*mLandSize, - Ogre::MEMCATEGORY_GEOMETRY); + std::map indexes; + initTerrainTextures(&terrainData, store, + x * numTextures, y * numTextures, + numTextures, indexes); - //copy the height data row by row - for ( int terrainCopyY = 0; terrainCopyY < mLandSize; terrainCopyY++ ) + if (mTerrainGroup->getTerrain(cellX, cellY) == NULL) + { + mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); + + mTerrainGroup->loadTerrain(terrainX, terrainY, true); + + Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); + initTerrainBlendMaps(terrain, store, + x * numTextures, y * numTextures, + numTextures, + indexes); + + if ( store->land[1][1]->landData->usingColours ) { - //the offset of the current segment - const size_t yOffset = y * (mLandSize-1) * ESM::Land::LAND_SIZE + - //offset of the row - terrainCopyY * ESM::Land::LAND_SIZE; - const size_t xOffset = x * (mLandSize-1); + Ogre::TexturePtr vertex = getVertexColours(store, + x*(mLandSize-1), + y*(mLandSize-1), + mLandSize); - memcpy(&terrainData.inputFloat[terrainCopyY*mLandSize], - &store->land[1][1]->landData->heights[yOffset + xOffset], - mLandSize*sizeof(float)); - } - - std::map indexes; - initTerrainTextures(&terrainData, store, - x * numTextures, y * numTextures, - numTextures, indexes); - - if (mTerrainGroup->getTerrain(cellX, cellY) == NULL) - { - mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); - - mTerrainGroup->loadTerrain(terrainX, terrainY, true); - - Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); - initTerrainBlendMaps(terrain, store, - x * numTextures, y * numTextures, - numTextures, - indexes); - - if ( store->land[1][1]->landData->usingColours ) - { - Ogre::TexturePtr vertex = getVertexColours(store, x*32, y*32, mLandSize); - - MaterialPtr mat = terrain->_getMaterial(); - mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); - mat = terrain->_getCompositeMapMaterial(); - mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); - } + MaterialPtr mat = terrain->_getMaterial(); + mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); + mat = terrain->_getCompositeMapMaterial(); + mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); } } } } - else - { - Ogre::Terrain::ImportData terrainData = - mTerrainGroup->getDefaultImportSettings(); - - //one cell is one terrain segment - terrainData.inputFloat = OGRE_ALLOC_T(float, - mLandSize*mLandSize, - Ogre::MEMCATEGORY_GEOMETRY); - - memcpy(&terrainData.inputFloat[0], - &store->land[1][1]->landData->heights[0], - mLandSize*mLandSize*sizeof(float)); - - std::map indexes; - initTerrainTextures(&terrainData, store, 0, 0, - ESM::Land::LAND_TEXTURE_SIZE, indexes); - - mTerrainGroup->defineTerrain(cellX, cellY, &terrainData); - - mTerrainGroup->loadTerrain(cellX, cellY, true); - Ogre::Terrain* terrain = mTerrainGroup->getTerrain(cellX, cellY); - - initTerrainBlendMaps(terrain, store, 0, 0, - ESM::Land::LAND_TEXTURE_SIZE, - indexes); - - if ( store->land[1][1]->landData->usingColours ) - { - Ogre::TexturePtr vertex = getVertexColours(store, 0, 0, mLandSize); - - MaterialPtr mat = terrain->_getMaterial(); - mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); - mat = terrain->_getCompositeMapMaterial(); - mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); - } - } mTerrainGroup->freeTemporaryResources(); } @@ -222,22 +177,14 @@ namespace MWRender void TerrainManager::cellRemoved(MWWorld::Ptr::CellStore *store) { - if ( SPLIT_TERRAIN ) + for ( int x = 0; x < 2; x++ ) { - for ( int x = 0; x < 2; x++ ) + for ( int y = 0; y < 2; y++ ) { - for ( int y = 0; y < 2; y++ ) - { - mTerrainGroup->unloadTerrain(store->cell->getGridX() * 2 + x, - store->cell->getGridY() * 2 + y); - } + mTerrainGroup->unloadTerrain(store->cell->getGridX() * 2 + x, + store->cell->getGridY() * 2 + y); } } - else - { - mTerrainGroup->unloadTerrain(store->cell->getGridX(), - store->cell->getGridY()); - } } //---------------------------------------------------------------------------------------------- diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index c298b7fc18..eba437a2d5 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -17,14 +17,8 @@ namespace MWRender{ /** * Implements the Morrowind terrain using the Ogre Terrain Component * - * This currently has two options as to how the terrain is rendered, one - * is that one cell is rendered as one Ogre::Terrain and the other that - * it is rendered as 4 Ogre::Terrain segments - * - * Splitting it up into segments has the following advantages - * * Seems to be faster - * * Terrain can now be culled more aggressivly using view frustram culling - * * We don't hit splat limits as much + * Each terrain cell is split into four blocks as this leads to an increase + * in performance and means we don't hit splat limits quite as much */ class TerrainManager{ public: @@ -40,26 +34,15 @@ namespace MWRender{ Ogre::TerrainGlobalOptions* mTerrainGlobals; Ogre::TerrainGroup* mTerrainGroup; - /** - * Should each cell be split into a further four Ogre::Terrain objects - * - * This has the advantage that it is possible to cull more terrain and - * we are more likly to be able to be able to fit all the required splats - * in (Ogre's default material generator only works with about 6 textures) - */ - static const bool SPLIT_TERRAIN = true; - /** * The length in verticies of a single terrain block. - * This takes into account the SPLIT_TERRAIN option */ - int mLandSize; + static const int mLandSize = (ESM::Land::LAND_SIZE - 1)/2 + 1; /** * The length in game units of a single terrain block. - * This takes into account the SPLIT_TERRAIN option */ - int mRealSize; + static const int mWorldSize = ESM::Land::REAL_SIZE/2; /** * Setups up the list of textures for part of a cell, using indexes as From 07a2e5a5be7edea0b0a4e14807202b74d91bbd01 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Fri, 2 Mar 2012 21:20:12 +0000 Subject: [PATCH 034/488] Removed dead code, fixed a error, added comments and tweaked some constants (after trying to find their min/max values) --- apps/openmw/mwrender/terrain.cpp | 65 ++++++-------------------------- apps/openmw/mwrender/terrain.hpp | 11 ------ 2 files changed, 12 insertions(+), 64 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 113a4a8317..9cc0a9f370 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -30,7 +30,11 @@ namespace MWRender TerrainMaterialGeneratorB::SM2Profile* matProfile = static_cast(activeProfile); - mTerrainGlobals->setMaxPixelError(8); + //The pixel error should be as high as possible without it being noticed + //as it governs how fast mesh quality decreases. 16 was just about Ok + //when tested at the small swamp pond in Seyda Neen + mTerrainGlobals->setMaxPixelError(16); + mTerrainGlobals->setLayerBlendMapSize(32); mTerrainGlobals->setLightMapSize(256); mTerrainGlobals->setCompositeMapSize(256); @@ -39,11 +43,9 @@ namespace MWRender //10 (default) didn't seem to be quite enough mTerrainGlobals->setSkirtSize(128); - /* - * Here we are pushing the composite map distance beyond the edge - * of the rendered terrain due to not having setup lighting - */ - //mTerrainGlobals->setCompositeMapDistance(ESM::Land::REAL_SIZE*4); + //due to the sudden flick between composite and non composite textures, + //this seemed the distance where it wasn't too noticeable + mTerrainGlobals->setCompositeMapDistance(mWorldSize*2); matProfile->setLightmapEnabled(false); matProfile->setLayerSpecularMappingEnabled(false); @@ -142,7 +144,7 @@ namespace MWRender x * numTextures, y * numTextures, numTextures, indexes); - if (mTerrainGroup->getTerrain(cellX, cellY) == NULL) + if (mTerrainGroup->getTerrain(terrainX, terrainY) == NULL) { mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); @@ -161,6 +163,8 @@ namespace MWRender y*(mLandSize-1), mLandSize); + //this is a hack to get around the fact that Ogre seems to + //corrupt the composite map leading to rendering errors MaterialPtr mat = terrain->_getMaterial(); mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); mat = terrain->_getCompositeMapMaterial(); @@ -255,15 +259,9 @@ namespace MWRender const size_t position = terrainData->layerList.size(); terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); - Ogre::TexturePtr normDisp = getNormalDisp("textures\\" + texture); - terrainData->layerList[position].worldSize = 256; terrainData->layerList[position].textureNames.push_back("textures\\" + texture); - //Normal map. This should be removed but it would require alterations to - //the material generator. Another option would be to use a 1x1 blank texture - //terrainData->layerList[position].textureNames.push_back(normDisp->getName()); - if ( baseTexture == -1 ) { baseTexture = ltexIndex; @@ -418,52 +416,12 @@ namespace MWRender ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; } - //---------------------------------------------------------------------------------------------- - - Ogre::TexturePtr TerrainManager::getNormalDisp(const std::string& fileName) - { - Ogre::TextureManager* const texMgr = Ogre::TextureManager::getSingletonPtr(); - const std::string normalTextureName = fileName.substr(0, fileName.rfind(".")) - + "_n.dds"; - if ( !texMgr->getByName(normalTextureName).isNull() ) - { - return texMgr->getByName(normalTextureName); - } - - const std::string textureName = "default_terrain_normal"; - if ( !texMgr->getByName(textureName).isNull() ) - { - return texMgr->getByName(textureName); - } - - Ogre::TexturePtr tex = texMgr->createManual( - textureName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - Ogre::TEX_TYPE_2D, 1, 1, 0, Ogre::PF_BYTE_BGRA); - - Ogre::HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); - - pixelBuffer->lock(Ogre::HardwareBuffer::HBL_NORMAL); - const Ogre::PixelBox& pixelBox = pixelBuffer->getCurrentLock(); - - Ogre::uint8* pDest = static_cast(pixelBox.data); - - *pDest++ = 128; // B - *pDest++ = 128; // G - *pDest++ = 128; // R - *pDest++ = 0; // A - - pixelBuffer->unlock(); - - return tex; - } - //---------------------------------------------------------------------------------------------- Ogre::TexturePtr TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size) { Ogre::TextureManager* const texMgr = Ogre::TextureManager::getSingletonPtr(); - const char* const colours = store->land[1][1]->landData->colours; const std::string colourTextureName = "VtexColours_" + boost::lexical_cast(store->cell->getGridX()) + @@ -491,6 +449,7 @@ namespace MWRender Ogre::uint8* pDest = static_cast(pixelBox.data); + const char* const colours = store->land[1][1]->landData->colours; for ( int y = 0; y < size; y++ ) { for ( int x = 0; x < size; x++ ) diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index eba437a2d5..6d98655400 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -88,17 +88,6 @@ namespace MWRender{ */ int getLtexIndexAt(MWWorld::Ptr::CellStore* store, int x, int y); - /** - * Retrives the texture that is the normal and parallax map for the - * terrain. If it doesn't exist a blank texture is used - * - * The file name of the texture should be the same as the file name of - * the base diffuse texture, but with _n appended before the extension - * - * @param fileName the name of the *diffuse* texture - */ - Ogre::TexturePtr getNormalDisp(const std::string& fileName); - /** * Due to the fact that Ogre terrain doesn't support vertex colours * we have to generate them manually From 3c934e3e44ae0a3cc87beb51a2dc2e1fe378bb33 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Fri, 2 Mar 2012 22:31:17 +0000 Subject: [PATCH 035/488] Fixed a bug with fog not being applied to initially created terrain when starting in exteriors. --- apps/openmw/mwrender/renderingmanager.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index e204b5856a..1c7edb7da8 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -25,6 +25,10 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mRendering.createScene("PlayerCam", 55, 5); mTerrainManager = new TerrainManager(mRendering.getScene()); + //The fog type must be set before any terrain objects are created as if the + //fog type is set to FOG_NONE then the initially created terrain won't have any fog + configureFog(1, ColourValue(1,1,1)); + // Set default mipmap level (NB some APIs ignore this) TextureManager::getSingleton().setDefaultNumMipmaps(5); From b882c03adc95d5ed9a6b888d69084aff2b5bc2d2 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 2 Mar 2012 23:36:48 +0100 Subject: [PATCH 036/488] fixed terrain regions without vertexcolours, tweaked maxPixelError --- apps/openmw/mwrender/terrain.cpp | 32 +++++++++++++++--------- apps/openmw/mwrender/terrain.hpp | 3 +++ apps/openmw/mwrender/terrainmaterial.cpp | 8 +++--- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 9cc0a9f370..ca218388f5 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -27,13 +27,12 @@ namespace MWRender Ogre::TerrainMaterialGenerator::Profile* const activeProfile = mTerrainGlobals->getDefaultMaterialGenerator() ->getActiveProfile(); - TerrainMaterialGeneratorB::SM2Profile* matProfile = + mActiveProfile = static_cast(activeProfile); //The pixel error should be as high as possible without it being noticed - //as it governs how fast mesh quality decreases. 16 was just about Ok - //when tested at the small swamp pond in Seyda Neen - mTerrainGlobals->setMaxPixelError(16); + //as it governs how fast mesh quality decreases. + mTerrainGlobals->setMaxPixelError(8); mTerrainGlobals->setLayerBlendMapSize(32); mTerrainGlobals->setLightMapSize(256); @@ -47,12 +46,11 @@ namespace MWRender //this seemed the distance where it wasn't too noticeable mTerrainGlobals->setCompositeMapDistance(mWorldSize*2); - matProfile->setLightmapEnabled(false); - matProfile->setLayerSpecularMappingEnabled(false); - matProfile->setLayerNormalMappingEnabled(false); - matProfile->setLayerParallaxMappingEnabled(false); - matProfile->setReceiveDynamicShadowsEnabled(false); - matProfile->setGlobalColourMapEnabled(true); + mActiveProfile->setLightmapEnabled(false); + mActiveProfile->setLayerSpecularMappingEnabled(false); + mActiveProfile->setLayerNormalMappingEnabled(false); + mActiveProfile->setLayerParallaxMappingEnabled(false); + mActiveProfile->setReceiveDynamicShadowsEnabled(false); mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mgr, Ogre::Terrain::ALIGN_X_Z, @@ -156,15 +154,25 @@ namespace MWRender numTextures, indexes); + // disable or enable global colour map (depends on available vertex colours) if ( store->land[1][1]->landData->usingColours ) - { + mActiveProfile->setGlobalColourMapEnabled(true); + else + mActiveProfile->setGlobalColourMapEnabled(false); + + /// \todo are we possibly generating the materials twice? + mActiveProfile->generate(terrain); + mActiveProfile->generateForCompositeMap(terrain); + + if ( store->land[1][1]->landData->usingColours ) + { Ogre::TexturePtr vertex = getVertexColours(store, x*(mLandSize-1), y*(mLandSize-1), mLandSize); //this is a hack to get around the fact that Ogre seems to - //corrupt the composite map leading to rendering errors + //corrupt the global colour map leading to rendering errors MaterialPtr mat = terrain->_getMaterial(); mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); mat = terrain->_getCompositeMapMaterial(); diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 6d98655400..397c0c473f 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -2,6 +2,7 @@ #define _GAME_RENDER_TERRAIN_H #include +#include "terrainmaterial.hpp" #include "../mwworld/ptr.hpp" @@ -34,6 +35,8 @@ namespace MWRender{ Ogre::TerrainGlobalOptions* mTerrainGlobals; Ogre::TerrainGroup* mTerrainGroup; + Ogre::TerrainMaterialGeneratorB::SM2Profile* mActiveProfile; + /** * The length in verticies of a single terrain block. */ diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 0edc23a71b..67ebf45af6 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -134,7 +134,7 @@ namespace Ogre if (enabled != mGlobalColourMapEnabled) { mGlobalColourMapEnabled = enabled; - mParent->_markChanged(); + //mParent->_markChanged(); } } //--------------------------------------------------------------------- @@ -359,7 +359,7 @@ namespace Ogre tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); // global colour map - //if (terrain->getGlobalColourMapEnabled() && isGlobalColourMapEnabled()) + if (isGlobalColourMapEnabled()) { tu = pass->createTextureUnitState(""); tu->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); @@ -1004,7 +1004,7 @@ namespace Ogre "uniform sampler2D globalNormal : register(s" << currentSamplerIdx++ << ")\n"; - //if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) + if (prof->isGlobalColourMapEnabled()) { outStream << ", uniform sampler2D globalColourMap : register(s" << currentSamplerIdx++ << ")\n"; @@ -1299,7 +1299,7 @@ namespace Ogre } else { - //if (terrain->getGlobalColourMapEnabled() && prof->isGlobalColourMapEnabled()) + if (prof->isGlobalColourMapEnabled()) { // sample colour map and apply to diffuse outStream << " diffuse *= tex2D(globalColourMap, uv).rgb;\n"; From a8939bc3180a8475be9dd38878228c924a31e9b0 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 4 Mar 2012 00:08:56 +0100 Subject: [PATCH 037/488] disabled the composite map, improves loading time a lot --- apps/openmw/mwrender/terrain.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index ca218388f5..a66b4ad3f0 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -51,6 +51,7 @@ namespace MWRender mActiveProfile->setLayerNormalMappingEnabled(false); mActiveProfile->setLayerParallaxMappingEnabled(false); mActiveProfile->setReceiveDynamicShadowsEnabled(false); + mActiveProfile->setCompositeMapEnabled(false); mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mgr, Ogre::Terrain::ALIGN_X_Z, @@ -160,10 +161,6 @@ namespace MWRender else mActiveProfile->setGlobalColourMapEnabled(false); - /// \todo are we possibly generating the materials twice? - mActiveProfile->generate(terrain); - mActiveProfile->generateForCompositeMap(terrain); - if ( store->land[1][1]->landData->usingColours ) { Ogre::TexturePtr vertex = getVertexColours(store, @@ -173,10 +170,10 @@ namespace MWRender //this is a hack to get around the fact that Ogre seems to //corrupt the global colour map leading to rendering errors - MaterialPtr mat = terrain->_getMaterial(); - mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); - mat = terrain->_getCompositeMapMaterial(); + MaterialPtr mat = terrain->getMaterial(); mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); + //mat = terrain->_getCompositeMapMaterial(); + //mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); } } } From bcd2371baa318b9393ccec684a34d1b1a5bc3f53 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Sun, 4 Mar 2012 11:21:47 +0000 Subject: [PATCH 038/488] Code cleanup: Removed unneeded Ogre namespace --- apps/openmw/mwrender/terrain.cpp | 56 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 9cc0a9f370..3db5dfc8cb 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -15,16 +15,16 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - TerrainManager::TerrainManager(Ogre::SceneManager* mgr) + TerrainManager::TerrainManager(SceneManager* mgr) { - mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions(); + mTerrainGlobals = OGRE_NEW TerrainGlobalOptions(); - Ogre::TerrainMaterialGeneratorPtr matGen; + TerrainMaterialGeneratorPtr matGen; TerrainMaterialGeneratorB* matGenP = new TerrainMaterialGeneratorB(); matGen.bind(matGenP); mTerrainGlobals->setDefaultMaterialGenerator(matGen); - Ogre::TerrainMaterialGenerator::Profile* const activeProfile = + TerrainMaterialGenerator::Profile* const activeProfile = mTerrainGlobals->getDefaultMaterialGenerator() ->getActiveProfile(); TerrainMaterialGeneratorB::SM2Profile* matProfile = @@ -54,16 +54,16 @@ namespace MWRender matProfile->setReceiveDynamicShadowsEnabled(false); matProfile->setGlobalColourMapEnabled(true); - mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mgr, - Ogre::Terrain::ALIGN_X_Z, + mTerrainGroup = OGRE_NEW TerrainGroup(mgr, + Terrain::ALIGN_X_Z, mLandSize, mWorldSize); - mTerrainGroup->setOrigin(Ogre::Vector3(mWorldSize/2, + mTerrainGroup->setOrigin(Vector3(mWorldSize/2, 0, -mWorldSize/2)); - Ogre::Terrain::ImportData& importSettings = + Terrain::ImportData& importSettings = mTerrainGroup->getDefaultImportSettings(); importSettings.inputBias = 0; @@ -85,14 +85,14 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - void TerrainManager::setDiffuse(const Ogre::ColourValue& diffuse) + void TerrainManager::setDiffuse(const ColourValue& diffuse) { mTerrainGlobals->setCompositeMapDiffuse(diffuse); } //---------------------------------------------------------------------------------------------- - void TerrainManager::setAmbient(const Ogre::ColourValue& ambient) + void TerrainManager::setAmbient(const ColourValue& ambient) { mTerrainGlobals->setCompositeMapAmbient(ambient); } @@ -112,7 +112,7 @@ namespace MWRender { for ( int y = 0; y < 2; y++ ) { - Ogre::Terrain::ImportData terrainData = + Terrain::ImportData terrainData = mTerrainGroup->getDefaultImportSettings(); const int terrainX = cellX * 2 + x; @@ -120,10 +120,10 @@ namespace MWRender //it makes far more sense to reallocate the memory here, //and let Ogre deal with it due to the issues with deleting - //it at the wrong time if using threads (Which Ogre::Terrain does) + //it at the wrong time if using threads (Which Terrain does) terrainData.inputFloat = OGRE_ALLOC_T(float, mLandSize*mLandSize, - Ogre::MEMCATEGORY_GEOMETRY); + MEMCATEGORY_GEOMETRY); //copy the height data row by row for ( int terrainCopyY = 0; terrainCopyY < mLandSize; terrainCopyY++ ) @@ -150,7 +150,7 @@ namespace MWRender mTerrainGroup->loadTerrain(terrainX, terrainY, true); - Ogre::Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); + Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); initTerrainBlendMaps(terrain, store, x * numTextures, y * numTextures, numTextures, @@ -158,7 +158,7 @@ namespace MWRender if ( store->land[1][1]->landData->usingColours ) { - Ogre::TexturePtr vertex = getVertexColours(store, + TexturePtr vertex = getVertexColours(store, x*(mLandSize-1), y*(mLandSize-1), mLandSize); @@ -193,7 +193,7 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - void TerrainManager::initTerrainTextures(Ogre::Terrain::ImportData* terrainData, + void TerrainManager::initTerrainTextures(Terrain::ImportData* terrainData, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, std::map& indexes) @@ -257,7 +257,7 @@ namespace MWRender } const size_t position = terrainData->layerList.size(); - terrainData->layerList.push_back(Ogre::Terrain::LayerInstance()); + terrainData->layerList.push_back(Terrain::LayerInstance()); terrainData->layerList[position].worldSize = 256; terrainData->layerList[position].textureNames.push_back("textures\\" + texture); @@ -276,7 +276,7 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - void TerrainManager::initTerrainBlendMaps(Ogre::Terrain* terrain, + void TerrainManager::initTerrainBlendMaps(Terrain* terrain, MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size, const std::map& indexes) @@ -361,7 +361,7 @@ namespace MWRender for ( int i = 1; i < terrain->getLayerCount(); i++ ) { - Ogre::TerrainLayerBlendMap* blend = terrain->getLayerBlendMap(i); + TerrainLayerBlendMap* blend = terrain->getLayerBlendMap(i); blend->dirty(); blend->update(); } @@ -418,10 +418,10 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - Ogre::TexturePtr TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, + TexturePtr TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, int fromX, int fromY, int size) { - Ogre::TextureManager* const texMgr = Ogre::TextureManager::getSingletonPtr(); + TextureManager* const texMgr = TextureManager::getSingletonPtr(); const std::string colourTextureName = "VtexColours_" + boost::lexical_cast(store->cell->getGridX()) + @@ -432,22 +432,22 @@ namespace MWRender "_" + boost::lexical_cast(fromY); - Ogre::TexturePtr tex = texMgr->getByName(colourTextureName); + TexturePtr tex = texMgr->getByName(colourTextureName); if ( !tex.isNull() ) { return tex; } tex = texMgr->createManual(colourTextureName, - Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - Ogre::TEX_TYPE_2D, size, size, 0, Ogre::PF_BYTE_BGR); + ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + TEX_TYPE_2D, size, size, 0, PF_BYTE_BGR); - Ogre::HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); + HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); - pixelBuffer->lock(Ogre::HardwareBuffer::HBL_DISCARD); - const Ogre::PixelBox& pixelBox = pixelBuffer->getCurrentLock(); + pixelBuffer->lock(HardwareBuffer::HBL_DISCARD); + const PixelBox& pixelBox = pixelBuffer->getCurrentLock(); - Ogre::uint8* pDest = static_cast(pixelBox.data); + uint8* pDest = static_cast(pixelBox.data); const char* const colours = store->land[1][1]->landData->colours; for ( int y = 0; y < size; y++ ) From eca91d17bb823a6f0fda3b88764b9a8a8c84274a Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Sun, 4 Mar 2012 11:46:33 +0000 Subject: [PATCH 039/488] Indentation tweaks and code cleanup --- apps/openmw/mwrender/terrain.cpp | 42 +++++++++++++++----------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index d9e6c1cf60..64acd9fe38 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -27,17 +27,14 @@ namespace MWRender TerrainMaterialGenerator::Profile* const activeProfile = mTerrainGlobals->getDefaultMaterialGenerator() ->getActiveProfile(); - mActiveProfile = - static_cast(activeProfile); + mActiveProfile = static_cast(activeProfile); //The pixel error should be as high as possible without it being noticed //as it governs how fast mesh quality decreases. mTerrainGlobals->setMaxPixelError(8); mTerrainGlobals->setLayerBlendMapSize(32); - mTerrainGlobals->setLightMapSize(256); - mTerrainGlobals->setCompositeMapSize(256); - mTerrainGlobals->setDefaultGlobalColourMapSize(256); + mTerrainGlobals->setDefaultGlobalColourMapSize(65); //10 (default) didn't seem to be quite enough mTerrainGlobals->setSkirtSize(128); @@ -51,19 +48,21 @@ namespace MWRender mActiveProfile->setLayerNormalMappingEnabled(false); mActiveProfile->setLayerParallaxMappingEnabled(false); mActiveProfile->setReceiveDynamicShadowsEnabled(false); + + //composite maps lead to a drastic reduction in loading time so are + //disabled mActiveProfile->setCompositeMapEnabled(false); mTerrainGroup = OGRE_NEW TerrainGroup(mgr, - Terrain::ALIGN_X_Z, - mLandSize, - mWorldSize); + Terrain::ALIGN_X_Z, + mLandSize, + mWorldSize); mTerrainGroup->setOrigin(Vector3(mWorldSize/2, - 0, - -mWorldSize/2)); + 0, + -mWorldSize/2)); - Terrain::ImportData& importSettings = - mTerrainGroup->getDefaultImportSettings(); + Terrain::ImportData& importSettings = mTerrainGroup->getDefaultImportSettings(); importSettings.inputBias = 0; importSettings.terrainSize = mLandSize; @@ -103,7 +102,6 @@ namespace MWRender const int cellX = store->cell->getGridX(); const int cellY = store->cell->getGridY(); - //split the cell terrain into four segments const int numTextures = ESM::Land::LAND_TEXTURE_SIZE/2; @@ -155,18 +153,14 @@ namespace MWRender numTextures, indexes); - // disable or enable global colour map (depends on available vertex colours) if ( store->land[1][1]->landData->usingColours ) + { + // disable or enable global colour map (depends on available vertex colours) mActiveProfile->setGlobalColourMapEnabled(true); - else - mActiveProfile->setGlobalColourMapEnabled(false); - - if ( store->land[1][1]->landData->usingColours ) - { TexturePtr vertex = getVertexColours(store, - x*(mLandSize-1), - y*(mLandSize-1), - mLandSize); + x*(mLandSize-1), + y*(mLandSize-1), + mLandSize); //this is a hack to get around the fact that Ogre seems to //corrupt the global colour map leading to rendering errors @@ -175,6 +169,10 @@ namespace MWRender //mat = terrain->_getCompositeMapMaterial(); //mat->getTechnique(0)->getPass(0)->getTextureUnitState(1)->setTextureName( vertex->getName() ); } + else + { + mActiveProfile->setGlobalColourMapEnabled(false); + } } } } From 5328853445fbe2dc7b35df12e06167b973ea803e Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Thu, 8 Mar 2012 01:03:46 +0400 Subject: [PATCH 040/488] Feature #37 (In Progress) Render Path Grid added "togglepathgrid" script command --- CMakeLists.txt | 10 +++++-- apps/openmw/mwscript/docs/vmformat.txt | 5 ++-- apps/openmw/mwscript/miscextensions.cpp | 36 +++++++++++++++++++------ apps/openmw/mwworld/world.hpp | 15 ++++++----- 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e116d8759..60731c092e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -255,8 +255,14 @@ if (APPLE) "${APP_BUNDLE_DIR}/Contents/Resources/OpenMW.icns" COPYONLY) # prepare plugins - if (${CMAKE_BUILD_TYPE} MATCHES "Release" OR - ${CMAKE_BUILD_TYPE} MATCHES "RelWithDebugInfo") + if (${CMAKE_BUILD_TYPE} MATCHES "Release") + set(OPENMW_RELEASE_BUILD 1) + endif() + if (${CMAKE_BUILD_TYPE} MATCHES "Release") + set(OPENMW_RELEASE_BUILD 1) + endif() + + if (${OPENMW_RELEASE_BUILD}) set(OGRE_PLUGIN_DIR ${OGRE_PLUGIN_DIR_REL}) else() set(OGRE_PLUGIN_DIR ${OGRE_PLUGIN_DIR_DBG}) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 09b0c04825..efdc63a2d8 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -115,10 +115,11 @@ op 0x2000136: GetPCCell op 0x2000137: GetButtonPressed op 0x2000138: SkipAnim op 0x2000139: SkipAnim, expplicit reference -op 0x200013b: twf +op 0x200013b: ToggleWireframe op 0x200013c: FadeIn op 0x200013d: FadeOut op 0x200013e: FadeTo op 0x200013f: GetCurrentWeather op 0x2000140: ChangeWeather -opcodes 0x2000141-0x3ffffff unused +op 0x2000141: TogglePathgrid +opcodes 0x2000142-0x3ffffff unused diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 5bfffd3a26..45189e698e 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -106,7 +106,7 @@ namespace MWScript "Collision Mesh Rendering -> On" : "Collision Mesh Rendering -> Off"); } }; - + class OpToggleWireframe : public Interpreter::Opcode0 { public: @@ -123,7 +123,23 @@ namespace MWScript "Wireframe Rendering -> On" : "Wireframe Rendering -> Off"); } }; - + + class OpTogglePathgrind : public Interpreter::Opcode0 + { + public: + virtual void execute (Interpreter::Runtime& runtime) + { + InterpreterContext& context = + static_cast (runtime.getContext()); + + bool enabled = + context.getWorld().toggleRenderMode (MWWorld::World::Render_Wireframe); + + context.report (enabled ? + "Path Grid rendering -> On" : "Path Grid Rendering -> Off"); + } + }; + class OpFadeIn : public Interpreter::Opcode0 { public: @@ -135,11 +151,11 @@ namespace MWScript Interpreter::Type_Float time = runtime[0].mFloat; runtime.pop(); - + context.getWorld().getFader()->fadeIn(time); } }; - + class OpFadeOut : public Interpreter::Opcode0 { public: @@ -151,11 +167,11 @@ namespace MWScript Interpreter::Type_Float time = runtime[0].mFloat; runtime.pop(); - + context.getWorld().getFader()->fadeOut(time); } }; - + class OpFadeTo : public Interpreter::Opcode0 { public: @@ -167,10 +183,10 @@ namespace MWScript Interpreter::Type_Float alpha = runtime[0].mFloat; runtime.pop(); - + Interpreter::Type_Float time = runtime[0].mFloat; runtime.pop(); - + context.getWorld().getFader()->fadeTo(alpha, time); } }; @@ -187,6 +203,7 @@ namespace MWScript const int opcodeFadeIn = 0x200013c; const int opcodeFadeOut = 0x200013d; const int opcodeFadeTo = 0x200013e; + const int opcodeTogglePathgrid = 0x2000141; void registerExtensions (Compiler::Extensions& extensions) { @@ -204,6 +221,8 @@ namespace MWScript extensions.registerInstruction ("fadein", "f", opcodeFadeIn); extensions.registerInstruction ("fadeout", "f", opcodeFadeOut); extensions.registerInstruction ("fadeto", "ff", opcodeFadeTo); + extensions.registerInstruction ("togglepathgrid", "", opcodeTogglePathgrid); + extensions.registerInstruction ("tpg", "", opcodeTogglePathgrid); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -220,6 +239,7 @@ namespace MWScript interpreter.installSegment5 (opcodeFadeIn, new OpFadeIn); interpreter.installSegment5 (opcodeFadeOut, new OpFadeOut); interpreter.installSegment5 (opcodeFadeTo, new OpFadeTo); + interpreter.installSegment5 (opcodeTogglePathgrid, new OpTogglePathgrind); } } } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 71cca3545d..bd62be4159 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -63,13 +63,14 @@ namespace MWWorld enum RenderMode { Render_CollisionDebug, - Render_Wireframe + Render_Wireframe, + Render_Pathgrid }; private: MWRender::RenderingManager* mRendering; - + MWWorld::WeatherManager* mWeatherManager; MWWorld::Scene *mWorldScene; @@ -106,13 +107,13 @@ namespace MWWorld Environment& environment, const std::string& encoding); ~World(); - + OEngine::Render::Fader* getFader(); Ptr::CellStore *getExterior (int x, int y); Ptr::CellStore *getInterior (const std::string& name); - + void adjustSky(); MWWorld::Player& getPlayer(); @@ -125,7 +126,7 @@ namespace MWWorld bool hasCellChanged() const; ///< Has the player moved to a different cell, since the last frame? - + bool isCellExterior() const; bool isCellQuasiExterior() const; @@ -163,9 +164,9 @@ namespace MWWorld bool toggleSky(); ///< \return Resulting mode - + void changeWeather(const std::string& region, const unsigned int id); - + int getCurrentWeather() const; int getMasserPhase() const; From 6357adffcf11da817d449a4aefd61a0f026cd89e Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Thu, 8 Mar 2012 01:09:06 +0400 Subject: [PATCH 041/488] Fixed typo --- apps/openmw/mwscript/miscextensions.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 45189e698e..36b8df70b9 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -124,7 +124,7 @@ namespace MWScript } }; - class OpTogglePathgrind : public Interpreter::Opcode0 + class OpTogglePathgrid : public Interpreter::Opcode0 { public: virtual void execute (Interpreter::Runtime& runtime) @@ -239,7 +239,7 @@ namespace MWScript interpreter.installSegment5 (opcodeFadeIn, new OpFadeIn); interpreter.installSegment5 (opcodeFadeOut, new OpFadeOut); interpreter.installSegment5 (opcodeFadeTo, new OpFadeTo); - interpreter.installSegment5 (opcodeTogglePathgrid, new OpTogglePathgrind); + interpreter.installSegment5 (opcodeTogglePathgrid, new OpTogglePathgrid); } } } From 11f957a64d677d0b1bed3574dc61eb378e090261 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Thu, 8 Mar 2012 10:46:34 +0400 Subject: [PATCH 042/488] Feature #37 (In Progress) Render Path Grid cubes for path grid points strange crash when trying to get path grids from Debugging --- apps/openmw/mwrender/debugging.cpp | 124 +++++++++++++++++++++- apps/openmw/mwrender/debugging.hpp | 35 ++++-- apps/openmw/mwrender/renderingmanager.cpp | 31 +++--- apps/openmw/mwrender/renderingmanager.hpp | 18 ++-- apps/openmw/mwscript/miscextensions.cpp | 2 +- components/esm_store/cell_store.hpp | 4 + components/esm_store/reclists.hpp | 8 +- 7 files changed, 186 insertions(+), 36 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index 60b299acd1..f1e601af52 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -12,27 +12,141 @@ #include "../mwworld/world.hpp" // these includes can be removed once the static-hack is gone #include "../mwworld/ptr.hpp" #include +#include #include "player.hpp" using namespace MWRender; using namespace Ogre; -Debugging::Debugging(OEngine::Physic::PhysicEngine* engine){ - eng = engine; +Debugging::Debugging(const ESMS::ESMStore &store, SceneManager* sceneMgr, OEngine::Physic::PhysicEngine *engine) : + mStore(store), mSceneMgr(sceneMgr), mEngine(engine), pathgridEnabled(false) +{ } bool Debugging::toggleRenderMode (int mode){ - switch (mode) + switch (mode) { case MWWorld::World::Render_CollisionDebug: // TODO use a proper function instead of accessing the member variable // directly. - eng->setDebugRenderingMode (!eng->isDebugCreated); - return eng->isDebugCreated; + mEngine->setDebugRenderingMode (!mEngine->isDebugCreated); + return mEngine->isDebugCreated; + case MWWorld::World::Render_Pathgrid: + togglePathgrid(); + return pathgridEnabled; } return false; } + +void Debugging::cellAdded(MWWorld::Ptr::CellStore *store) +{ + std::cout << "Cell added to debugging" << std::endl; + mActiveCells.push_back(store); + if (pathgridEnabled) + togglePathgridForCell(store, true); +} + +void Debugging::cellRemoved(MWWorld::Ptr::CellStore *store) +{ + mActiveCells.erase(std::remove(mActiveCells.begin(), mActiveCells.end(), store), mActiveCells.end()); + std::cout << "Cell removed from debugging, active cells count: " << mActiveCells.size() << std::endl; + if (pathgridEnabled) + togglePathgridForCell(store, false); +} + +void Debugging::togglePathgrid() +{ + pathgridEnabled = !pathgridEnabled; + if (pathgridEnabled) + { + // add path grid meshes to already loaded cells + mPathGridRoot = mSceneMgr->getRootSceneNode()->createChildSceneNode(); + for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) + { + togglePathgridForCell(*it, true); + } + } + else { + // remove path grid meshes from already loaded cells + for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) + { + togglePathgridForCell(*it, false); + } + mPathGridRoot->removeAndDestroyAllChildren(); + mSceneMgr->destroySceneNode(mPathGridRoot); + } +} + +void Debugging::togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabled) +{ + ESM::Pathgrid *pathgrid = mStore.pathgrids.search(*store->cell); + if (!pathgrid) + { + std::cout << "No path grid :(" << std::endl; + return; + } + std::cout << "Path grid exists!" << std::endl; + + if (enabled) + { + Vector3 cellPathGridPos; + if (!(store->cell->data.flags & ESM::Cell::Interior)) + { + /// \todo Replace with ESM::Land::REAL_SIZE after merging with terrain branch + cellPathGridPos.x = store->cell->data.gridX * 8192; + cellPathGridPos.z = -store->cell->data.gridY * 8192; + } + SceneNode *cellPathGrid = mPathGridRoot->createChildSceneNode(cellPathGridPos); + ESM::Pathgrid::PointList points = pathgrid->points; + for (ESM::Pathgrid::PointList::iterator it = points.begin(); it != points.end(); it++) + { + Vector3 position(it->x, it->z, -it->y); + SceneNode* pointNode = cellPathGrid->createChildSceneNode(position); + pointNode->setScale(0.5, 0.5, 0.5); + Entity *pointMesh = mSceneMgr->createEntity(SceneManager::PT_CUBE); + pointNode->attachObject(pointMesh); + } + + if (!(store->cell->data.flags & ESM::Cell::Interior)) + { + mExteriorPathgridNodes[std::make_pair(store->cell->data.gridX, store->cell->data.gridY)] = cellPathGrid; + } + else + { + assert(mInteriorPathgridNode == NULL); + mInteriorPathgridNode = cellPathGrid; + } + } + else + { + /// \todo Don't forget to destroy cubes too! + SceneNode *cellPathGridNode; + if (!(store->cell->data.flags & ESM::Cell::Interior)) + { + ExteriorPathgridNodes::iterator it = + mExteriorPathgridNodes.find(std::make_pair(store->cell->data.gridX, store->cell->data.gridY)); + if (it != mExteriorPathgridNodes.end()) + { + cellPathGridNode = it->second; + mPathGridRoot->removeChild(cellPathGridNode); + cellPathGridNode->removeAndDestroyAllChildren(); + mSceneMgr->destroySceneNode(cellPathGridNode); + mExteriorPathgridNodes.erase(it); + } + } + else + { + if (mInteriorPathgridNode) + { + mPathGridRoot->removeChild(mInteriorPathgridNode); + mInteriorPathgridNode->removeAndDestroyAllChildren(); + mSceneMgr->destroySceneNode(mInteriorPathgridNode); + mInteriorPathgridNode = NULL; + } + } + } +} diff --git a/apps/openmw/mwrender/debugging.hpp b/apps/openmw/mwrender/debugging.hpp index b48cfaee2a..2258fec219 100644 --- a/apps/openmw/mwrender/debugging.hpp +++ b/apps/openmw/mwrender/debugging.hpp @@ -4,6 +4,7 @@ #include #include #include +#include "../mwworld/ptr.hpp" #include #include @@ -28,14 +29,36 @@ namespace MWRender { class Player; - class Debugging{ - OEngine::Physic::PhysicEngine* eng; + class Debugging + { + OEngine::Physic::PhysicEngine* mEngine; + Ogre::SceneManager* mSceneMgr; + const ESMS::ESMStore& mStore; + // Path grid stuff + bool pathgridEnabled; - public: - Debugging(OEngine::Physic::PhysicEngine* engine); - bool toggleRenderMode (int mode); - }; + void togglePathgrid(); + + typedef std::vector CellList; + + CellList mActiveCells; + + Ogre::SceneNode *mPathGridRoot; + Ogre::SceneNode *mInteriorPathgridNode; + + typedef std::map, Ogre::SceneNode *> ExteriorPathgridNodes; + ExteriorPathgridNodes mExteriorPathgridNodes; + + void togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabled); + + public: + Debugging(const ESMS::ESMStore &store, Ogre::SceneManager *mSceneMgr, OEngine::Physic::PhysicEngine* engine); + bool toggleRenderMode (int mode); + + void cellAdded(MWWorld::Ptr::CellStore* store); + void cellRemoved(MWWorld::Ptr::CellStore* store); + }; } diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 7b58a80d76..94197108d9 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -20,10 +20,12 @@ using namespace Ogre; namespace MWRender { RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine, MWWorld::Environment& environment) -:mRendering(_rend), mObjects(mRendering), mActors(mRendering, environment), mAmbientMode(0), mDebugging(engine) + :mRendering(_rend), mObjects(mRendering), mActors(mRendering, environment), mAmbientMode(0) { mRendering.createScene("PlayerCam", 55, 5); + mDebugging = new Debugging(environment.mWorld->getStore(), mRendering.getScene(), engine); + // Set default mipmap level (NB some APIs ignore this) TextureManager::getSingleton().setDefaultNumMipmaps(5); @@ -40,7 +42,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mMwRoot->pitch(Degree(-90)); mObjects.setMwRoot(mMwRoot); mActors.setMwRoot(mMwRoot); - + //used to obtain ingame information of ogre objects (which are faced or selected) mRaySceneQuery = mRendering.getScene()->createRayQuery(Ray()); @@ -49,7 +51,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const Ogre::SceneNode *cameraYawNode = playerNode->createChildSceneNode(); Ogre::SceneNode *cameraPitchNode = cameraYawNode->createChildSceneNode(); cameraPitchNode->attachObject(mRendering.getCamera()); - + //mSkyManager = 0; mSkyManager = new SkyManager(mMwRoot, mRendering.getCamera()); @@ -62,6 +64,7 @@ RenderingManager::~RenderingManager () //TODO: destroy mSun? delete mPlayer; delete mSkyManager; + delete mDebugging; } MWRender::SkyManager* RenderingManager::getSkyManager() @@ -88,11 +91,13 @@ OEngine::Render::Fader* RenderingManager::getFader() void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store){ mObjects.removeCell(store); mActors.removeCell(store); + mDebugging->cellRemoved(store); } void RenderingManager::cellAdded (MWWorld::Ptr::CellStore *store) { mObjects.buildStaticGeometry (*store); + mDebugging->cellAdded(store); } void RenderingManager::addObject (const MWWorld::Ptr& ptr){ @@ -133,9 +138,9 @@ void RenderingManager::moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Ve void RenderingManager::update (float duration){ mActors.update (duration); - + mSkyManager->update(duration); - + mRendering.update(duration); } @@ -166,7 +171,7 @@ void RenderingManager::skySetDate (int day, int month) int RenderingManager::skyGetMasserPhase() const { - + return mSkyManager->getMasserPhase(); } @@ -182,8 +187,8 @@ void RenderingManager::skySetMoonColour (bool red){ bool RenderingManager::toggleRenderMode(int mode) { - if (mode == MWWorld::World::Render_CollisionDebug) - return mDebugging.toggleRenderMode(mode); + if (mode != MWWorld::World::Render_Wireframe) + return mDebugging->toggleRenderMode(mode); else // if (mode == MWWorld::World::Render_Wireframe) { if (mRendering.getCamera()->getPolygonMode() == PM_SOLID) @@ -208,13 +213,13 @@ void RenderingManager::configureFog(ESMS::CellStore &mCell) } void RenderingManager::configureFog(const float density, const Ogre::ColourValue& colour) -{ +{ /// \todo make the viewing distance and fog start/end configurable float low = 3000 / density; float high = 6200 / density; - + mRendering.getScene()->setFog (FOG_LINEAR, colour, 0, low, high); - + mRendering.getCamera()->setFarClipDistance ( high ); mRendering.getViewport()->setBackgroundColour (colour); } @@ -310,10 +315,10 @@ void RenderingManager::sunDisable() void RenderingManager::setSunDirection(const Ogre::Vector3& direction) { - // direction * -1 (because 'direction' is camera to sun vector and not sun to camera), + // direction * -1 (because 'direction' is camera to sun vector and not sun to camera), // then convert from MW to ogre coordinates (swap y,z and make y negative) if (mSun) mSun->setDirection(Vector3(-direction.x, -direction.z, direction.y)); - + mSkyManager->setSunDirection(direction); } diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index d84ee43e00..9be3892727 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -66,7 +66,7 @@ class RenderingManager: private RenderingInterface { void toggleLight(); bool toggleRenderMode(int mode); - + OEngine::Render::Fader* getFader(); void removeCell (MWWorld::Ptr::CellStore *store); @@ -86,13 +86,13 @@ class RenderingManager: private RenderingInterface { void moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Vector3& position, MWWorld::Ptr::CellStore *store); void update (float duration); - + void setAmbientColour(const Ogre::ColourValue& colour); void setSunColour(const Ogre::ColourValue& colour); void setSunDirection(const Ogre::Vector3& direction); void sunEnable(); void sunDisable(); - + void setGlare(bool glare); void skyEnable (); void skyDisable (); @@ -102,13 +102,13 @@ class RenderingManager: private RenderingInterface { int skyGetSecundaPhase() const; void skySetMoonColour (bool red); void configureAmbient(ESMS::CellStore &mCell); - + /// configure fog according to cell void configureFog(ESMS::CellStore &mCell); - + /// configure fog manually void configureFog(const float density, const Ogre::ColourValue& colour); - + void playAnimationGroup (const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number = 1); ///< Run animation for a MW-reference. Calls to this function for references that are currently not @@ -124,9 +124,9 @@ class RenderingManager: private RenderingInterface { private: void setAmbientMode(); - + SkyManager* mSkyManager; - + OEngine::Render::OgreRenderer &mRendering; MWRender::Objects mObjects; @@ -147,7 +147,7 @@ class RenderingManager: private RenderingInterface { OEngine::Physic::PhysicEngine* mPhysicsEngine; MWRender::Player *mPlayer; - MWRender::Debugging mDebugging; + MWRender::Debugging *mDebugging; }; } diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 36b8df70b9..425fa3727d 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -133,7 +133,7 @@ namespace MWScript static_cast (runtime.getContext()); bool enabled = - context.getWorld().toggleRenderMode (MWWorld::World::Render_Wireframe); + context.getWorld().toggleRenderMode (MWWorld::World::Render_Pathgrid); context.report (enabled ? "Path Grid rendering -> On" : "Path Grid Rendering -> Off"); diff --git a/components/esm_store/cell_store.hpp b/components/esm_store/cell_store.hpp index c4bcf84d81..4f5b6b6ec4 100644 --- a/components/esm_store/cell_store.hpp +++ b/components/esm_store/cell_store.hpp @@ -123,6 +123,8 @@ namespace ESMS CellRefList statics; CellRefList weapons; + ESM::Pathgrid *pathgrid; + void load (const ESMStore &store, ESMReader &esm) { if (mState!=State_Loaded) @@ -134,6 +136,8 @@ namespace ESMS loadRefs (store, esm); + pathgrid = store.pathgrids.search(*cell); + mState = State_Loaded; } } diff --git a/components/esm_store/reclists.hpp b/components/esm_store/reclists.hpp index 4aacf2332b..da6e9b3d5f 100644 --- a/components/esm_store/reclists.hpp +++ b/components/esm_store/reclists.hpp @@ -428,14 +428,16 @@ namespace ESMS if (grid->data.x == 0 && grid->data.y == 0) { intGrids[grid->cell] = grid; + std::cout << "int grids size " << intGrids.size() << std::endl; } else { extGrids[std::make_pair(grid->data.x, grid->data.y)] = grid; + std::cout << "ext grids size " << extGrids.size() << std::endl; } } - Pathgrid *find(int cellX, int cellY, std::string cellName) const + Pathgrid *find(int cellX, int cellY, const std::string &cellName) const { Pathgrid *result = search(cellX, cellY, cellName); if (!result) @@ -445,8 +447,10 @@ namespace ESMS return result; } - Pathgrid *search(int cellX, int cellY, std::string cellName) const + Pathgrid *search(int cellX, int cellY, const std::string &cellName) const { + std::cout << "int grids size " << intGrids.size() << std::endl; + std::cout << "ext grids size " << extGrids.size() << std::endl; Pathgrid *result = NULL; if (cellX == 0 && cellY == 0) // possibly interior { From 4659076129de9185e3b0f6e7d11ff28c1fe9df61 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sat, 10 Mar 2012 20:45:55 +0400 Subject: [PATCH 043/488] Feature #37 (In Progress) Render Path Grid workaround for strange ESMStore bug --- apps/openmw/mwrender/debugging.cpp | 7 ++++--- apps/openmw/mwrender/debugging.hpp | 6 ++++-- apps/openmw/mwrender/renderingmanager.cpp | 2 +- components/esm_store/cell_store.hpp | 4 ---- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index f1e601af52..8df4850dbc 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -10,6 +10,7 @@ #include "OgreTextureManager.h" #include "../mwworld/world.hpp" // these includes can be removed once the static-hack is gone +#include "../mwworld/environment.hpp" #include "../mwworld/ptr.hpp" #include #include @@ -19,8 +20,8 @@ using namespace MWRender; using namespace Ogre; -Debugging::Debugging(const ESMS::ESMStore &store, SceneManager* sceneMgr, OEngine::Physic::PhysicEngine *engine) : - mStore(store), mSceneMgr(sceneMgr), mEngine(engine), pathgridEnabled(false) +Debugging::Debugging(MWWorld::Environment &env, SceneManager* sceneMgr, OEngine::Physic::PhysicEngine *engine) : + mEnvironment(env), mSceneMgr(sceneMgr), mEngine(engine), pathgridEnabled(false) { } @@ -83,7 +84,7 @@ void Debugging::togglePathgrid() void Debugging::togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabled) { - ESM::Pathgrid *pathgrid = mStore.pathgrids.search(*store->cell); + ESM::Pathgrid *pathgrid = mEnvironment.mWorld->getStore().pathgrids.search(*store->cell); if (!pathgrid) { std::cout << "No path grid :(" << std::endl; diff --git a/apps/openmw/mwrender/debugging.hpp b/apps/openmw/mwrender/debugging.hpp index 2258fec219..2b47eb773c 100644 --- a/apps/openmw/mwrender/debugging.hpp +++ b/apps/openmw/mwrender/debugging.hpp @@ -23,6 +23,7 @@ namespace Ogre namespace MWWorld { class World; + class Environment; } namespace MWRender @@ -33,7 +34,8 @@ namespace MWRender { OEngine::Physic::PhysicEngine* mEngine; Ogre::SceneManager* mSceneMgr; - const ESMS::ESMStore& mStore; + MWWorld::Environment& mEnvironment; + //const ESMS::ESMStore& mStore; // Path grid stuff bool pathgridEnabled; @@ -53,7 +55,7 @@ namespace MWRender void togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabled); public: - Debugging(const ESMS::ESMStore &store, Ogre::SceneManager *mSceneMgr, OEngine::Physic::PhysicEngine* engine); + Debugging(MWWorld::Environment &env, Ogre::SceneManager *mSceneMgr, OEngine::Physic::PhysicEngine* engine); bool toggleRenderMode (int mode); void cellAdded(MWWorld::Ptr::CellStore* store); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 94197108d9..4cb8b42fab 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -24,7 +24,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const { mRendering.createScene("PlayerCam", 55, 5); - mDebugging = new Debugging(environment.mWorld->getStore(), mRendering.getScene(), engine); + mDebugging = new Debugging(environment, mRendering.getScene(), engine); // Set default mipmap level (NB some APIs ignore this) TextureManager::getSingleton().setDefaultNumMipmaps(5); diff --git a/components/esm_store/cell_store.hpp b/components/esm_store/cell_store.hpp index 4f5b6b6ec4..c4bcf84d81 100644 --- a/components/esm_store/cell_store.hpp +++ b/components/esm_store/cell_store.hpp @@ -123,8 +123,6 @@ namespace ESMS CellRefList statics; CellRefList weapons; - ESM::Pathgrid *pathgrid; - void load (const ESMStore &store, ESMReader &esm) { if (mState!=State_Loaded) @@ -136,8 +134,6 @@ namespace ESMS loadRefs (store, esm); - pathgrid = store.pathgrids.search(*cell); - mState = State_Loaded; } } From 387c84e60631399ac86dcd24e4b5cd53e4bd510d Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sun, 11 Mar 2012 18:46:32 +0400 Subject: [PATCH 044/488] small fix in CMakeLists, thx ace13 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 60731c092e..ce03542904 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -258,7 +258,7 @@ if (APPLE) if (${CMAKE_BUILD_TYPE} MATCHES "Release") set(OPENMW_RELEASE_BUILD 1) endif() - if (${CMAKE_BUILD_TYPE} MATCHES "Release") + if (${CMAKE_BUILD_TYPE} MATCHES "RelWithDebugInfo") set(OPENMW_RELEASE_BUILD 1) endif() From f292a5a7ca8295d61b6bf6c9f6fd9850b750ae6c Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Mon, 12 Mar 2012 02:12:56 +0400 Subject: [PATCH 045/488] Feature #37 (In Progress) Render Path Grid now using mwRoot instead of ogre's root, so no more messing with coordinates. --- apps/openmw/mwrender/debugging.cpp | 55 ++++++++++++++--------- apps/openmw/mwrender/debugging.hpp | 8 ++-- apps/openmw/mwrender/renderingmanager.cpp | 4 +- components/esm_store/reclists.hpp | 4 -- 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index 8df4850dbc..ebaab5703f 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -2,12 +2,8 @@ #include -#include "OgreRoot.h" -#include "OgreRenderWindow.h" -#include "OgreSceneManager.h" -#include "OgreViewport.h" -#include "OgreCamera.h" -#include "OgreTextureManager.h" +#include +#include #include "../mwworld/world.hpp" // these includes can be removed once the static-hack is gone #include "../mwworld/environment.hpp" @@ -20,8 +16,11 @@ using namespace MWRender; using namespace Ogre; -Debugging::Debugging(MWWorld::Environment &env, SceneManager* sceneMgr, OEngine::Physic::PhysicEngine *engine) : - mEnvironment(env), mSceneMgr(sceneMgr), mEngine(engine), pathgridEnabled(false) +Debugging::Debugging(SceneNode *mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine) : + mMwRoot(mwRoot), mEnvironment(env), mEngine(engine), + mSceneMgr(mwRoot->getCreator()), + pathgridEnabled(false), + mInteriorPathgridNode(NULL), mPathGridRoot(NULL) { } @@ -65,7 +64,7 @@ void Debugging::togglePathgrid() if (pathgridEnabled) { // add path grid meshes to already loaded cells - mPathGridRoot = mSceneMgr->getRootSceneNode()->createChildSceneNode(); + mPathGridRoot = mMwRoot->createChildSceneNode(); for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) { togglePathgridForCell(*it, true); @@ -79,6 +78,7 @@ void Debugging::togglePathgrid() } mPathGridRoot->removeAndDestroyAllChildren(); mSceneMgr->destroySceneNode(mPathGridRoot); + mPathGridRoot = NULL; } } @@ -87,25 +87,24 @@ void Debugging::togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabl ESM::Pathgrid *pathgrid = mEnvironment.mWorld->getStore().pathgrids.search(*store->cell); if (!pathgrid) { - std::cout << "No path grid :(" << std::endl; return; } - std::cout << "Path grid exists!" << std::endl; if (enabled) { Vector3 cellPathGridPos; + /// \todo replace tests like this with isExterior method of ESM::Cell after merging with terrain branch if (!(store->cell->data.flags & ESM::Cell::Interior)) { /// \todo Replace with ESM::Land::REAL_SIZE after merging with terrain branch cellPathGridPos.x = store->cell->data.gridX * 8192; - cellPathGridPos.z = -store->cell->data.gridY * 8192; + cellPathGridPos.y = store->cell->data.gridY * 8192; } SceneNode *cellPathGrid = mPathGridRoot->createChildSceneNode(cellPathGridPos); ESM::Pathgrid::PointList points = pathgrid->points; for (ESM::Pathgrid::PointList::iterator it = points.begin(); it != points.end(); it++) { - Vector3 position(it->x, it->z, -it->y); + Vector3 position(it->x, it->y, it->z); SceneNode* pointNode = cellPathGrid->createChildSceneNode(position); pointNode->setScale(0.5, 0.5, 0.5); Entity *pointMesh = mSceneMgr->createEntity(SceneManager::PT_CUBE); @@ -124,18 +123,13 @@ void Debugging::togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabl } else { - /// \todo Don't forget to destroy cubes too! - SceneNode *cellPathGridNode; if (!(store->cell->data.flags & ESM::Cell::Interior)) { ExteriorPathgridNodes::iterator it = mExteriorPathgridNodes.find(std::make_pair(store->cell->data.gridX, store->cell->data.gridY)); if (it != mExteriorPathgridNodes.end()) { - cellPathGridNode = it->second; - mPathGridRoot->removeChild(cellPathGridNode); - cellPathGridNode->removeAndDestroyAllChildren(); - mSceneMgr->destroySceneNode(cellPathGridNode); + destroyCellPathgridNode(it->second); mExteriorPathgridNodes.erase(it); } } @@ -143,11 +137,28 @@ void Debugging::togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabl { if (mInteriorPathgridNode) { - mPathGridRoot->removeChild(mInteriorPathgridNode); - mInteriorPathgridNode->removeAndDestroyAllChildren(); - mSceneMgr->destroySceneNode(mInteriorPathgridNode); + destroyCellPathgridNode(mInteriorPathgridNode); mInteriorPathgridNode = NULL; } } } } + +void Debugging::destroyCellPathgridNode(SceneNode *node) +{ + mPathGridRoot->removeChild(node); + + SceneNode::ChildNodeIterator childIt = node->getChildIterator(); + while (childIt.hasMoreElements()) + { + SceneNode *child = static_cast(childIt.getNext()); + SceneNode::ObjectIterator objIt = child->getAttachedObjectIterator(); + while (objIt.hasMoreElements()) + { + MovableObject *mesh = static_cast(objIt.getNext()); + child->getCreator()->destroyMovableObject(mesh); + } + } + node->removeAndDestroyAllChildren(); + mSceneMgr->destroySceneNode(node); +} diff --git a/apps/openmw/mwrender/debugging.hpp b/apps/openmw/mwrender/debugging.hpp index 2b47eb773c..eb592b98d9 100644 --- a/apps/openmw/mwrender/debugging.hpp +++ b/apps/openmw/mwrender/debugging.hpp @@ -33,9 +33,8 @@ namespace MWRender class Debugging { OEngine::Physic::PhysicEngine* mEngine; - Ogre::SceneManager* mSceneMgr; + Ogre::SceneManager *mSceneMgr; MWWorld::Environment& mEnvironment; - //const ESMS::ESMStore& mStore; // Path grid stuff bool pathgridEnabled; @@ -46,6 +45,7 @@ namespace MWRender CellList mActiveCells; + Ogre::SceneNode *mMwRoot; Ogre::SceneNode *mPathGridRoot; Ogre::SceneNode *mInteriorPathgridNode; @@ -54,8 +54,10 @@ namespace MWRender void togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabled); + void destroyCellPathgridNode(Ogre::SceneNode *node); + public: - Debugging(MWWorld::Environment &env, Ogre::SceneManager *mSceneMgr, OEngine::Physic::PhysicEngine* engine); + Debugging(Ogre::SceneNode* mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine); bool toggleRenderMode (int mode); void cellAdded(MWWorld::Ptr::CellStore* store); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 4cb8b42fab..8880122802 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -24,8 +24,6 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const { mRendering.createScene("PlayerCam", 55, 5); - mDebugging = new Debugging(environment, mRendering.getScene(), engine); - // Set default mipmap level (NB some APIs ignore this) TextureManager::getSingleton().setDefaultNumMipmaps(5); @@ -57,6 +55,8 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mPlayer = new MWRender::Player (mRendering.getCamera(), playerNode); mSun = 0; + + mDebugging = new Debugging(mMwRoot, environment, engine); } RenderingManager::~RenderingManager () diff --git a/components/esm_store/reclists.hpp b/components/esm_store/reclists.hpp index da6e9b3d5f..f2c07dda5e 100644 --- a/components/esm_store/reclists.hpp +++ b/components/esm_store/reclists.hpp @@ -428,12 +428,10 @@ namespace ESMS if (grid->data.x == 0 && grid->data.y == 0) { intGrids[grid->cell] = grid; - std::cout << "int grids size " << intGrids.size() << std::endl; } else { extGrids[std::make_pair(grid->data.x, grid->data.y)] = grid; - std::cout << "ext grids size " << extGrids.size() << std::endl; } } @@ -449,8 +447,6 @@ namespace ESMS Pathgrid *search(int cellX, int cellY, const std::string &cellName) const { - std::cout << "int grids size " << intGrids.size() << std::endl; - std::cout << "ext grids size " << extGrids.size() << std::endl; Pathgrid *result = NULL; if (cellX == 0 && cellY == 0) // possibly interior { From d22678faab028d31283d4ef0ccbd26c14f19d5ef Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 13 Mar 2012 17:14:02 +0100 Subject: [PATCH 046/488] fixed wrong merge --- CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index cc1dea25ca..18c312229d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -255,6 +255,20 @@ if (APPLE) configure_file(${OpenMW_SOURCE_DIR}/files/mac/openmw.icns "${APP_BUNDLE_DIR}/Contents/Resources/OpenMW.icns" COPYONLY) + # prepare plugins + if (${CMAKE_BUILD_TYPE} MATCHES "Release") + set(OPENMW_RELEASE_BUILD 1) + endif() + if (${CMAKE_BUILD_TYPE} MATCHES "RelWithDebugInfo") + set(OPENMW_RELEASE_BUILD 1) + endif() + + if (${OPENMW_RELEASE_BUILD}) + set(OGRE_PLUGIN_DIR ${OGRE_PLUGIN_DIR_REL}) + else() + set(OGRE_PLUGIN_DIR ${OGRE_PLUGIN_DIR_DBG}) + endif() + foreach(plugin ${USED_OGRE_PLUGINS}) configure_file("${OGRE_PLUGIN_DIR}/${plugin}.dylib" "${APP_BUNDLE_DIR}/Contents/Plugins/${plugin}.dylib" From 3a705baa29c9887057a20ee5f4586121e53efee9 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Wed, 14 Mar 2012 03:06:56 +0400 Subject: [PATCH 047/488] Feature #37 (In Progress) Render Path Grid added simple pathgrid edges --- apps/openmw/mwrender/debugging.cpp | 162 +++++++++++++++++++---------- apps/openmw/mwrender/debugging.hpp | 6 +- 2 files changed, 113 insertions(+), 55 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index ebaab5703f..3b01d4b36c 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -13,15 +13,51 @@ #include "player.hpp" -using namespace MWRender; using namespace Ogre; +namespace MWRender +{ + +static const std::string PATHGRID_LINE_MATERIAL = "pathgridLineMaterial"; +static const std::string DEBUGGING_GROUP = "debugging"; + +ManualObject *createPathgridLine(SceneManager* sceneMgr, const Vector3& from, const Vector3& to) +{ + ManualObject *line = sceneMgr->createManualObject(); + if (MaterialManager::getSingleton().getByName(PATHGRID_LINE_MATERIAL, DEBUGGING_GROUP).isNull()) + { + MaterialPtr lineMatPtr = MaterialManager::getSingleton().create(PATHGRID_LINE_MATERIAL, DEBUGGING_GROUP); + lineMatPtr->setReceiveShadows(false); + lineMatPtr->getTechnique(0)->setLightingEnabled(true); + lineMatPtr->getTechnique(0)->getPass(0)->setDiffuse(1,1,0,0); + lineMatPtr->getTechnique(0)->getPass(0)->setAmbient(1,1,0); + lineMatPtr->getTechnique(0)->getPass(0)->setSelfIllumination(1,1,0); + } + + line->begin(PATHGRID_LINE_MATERIAL, Ogre::RenderOperation::OT_LINE_LIST); + line->position(from); + line->position(to); + line->end(); + + return line; +} + +ManualObject *createPathgridPoint(SceneManager* sceneMgr, const Vector3& pos) +{ +} + Debugging::Debugging(SceneNode *mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine) : mMwRoot(mwRoot), mEnvironment(env), mEngine(engine), mSceneMgr(mwRoot->getCreator()), pathgridEnabled(false), mInteriorPathgridNode(NULL), mPathGridRoot(NULL) { + ResourceGroupManager::getSingleton().createResourceGroup(DEBUGGING_GROUP); +} + +Debugging::~Debugging() +{ + ResourceGroupManager::getSingleton().destroyResourceGroup(DEBUGGING_GROUP); } @@ -47,7 +83,7 @@ void Debugging::cellAdded(MWWorld::Ptr::CellStore *store) std::cout << "Cell added to debugging" << std::endl; mActiveCells.push_back(store); if (pathgridEnabled) - togglePathgridForCell(store, true); + enableCellPathgrid(store); } void Debugging::cellRemoved(MWWorld::Ptr::CellStore *store) @@ -55,7 +91,7 @@ void Debugging::cellRemoved(MWWorld::Ptr::CellStore *store) mActiveCells.erase(std::remove(mActiveCells.begin(), mActiveCells.end(), store), mActiveCells.end()); std::cout << "Cell removed from debugging, active cells count: " << mActiveCells.size() << std::endl; if (pathgridEnabled) - togglePathgridForCell(store, false); + disableCellPathgrid(store); } void Debugging::togglePathgrid() @@ -67,14 +103,14 @@ void Debugging::togglePathgrid() mPathGridRoot = mMwRoot->createChildSceneNode(); for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) { - togglePathgridForCell(*it, true); + enableCellPathgrid(*it); } } else { // remove path grid meshes from already loaded cells for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) { - togglePathgridForCell(*it, false); + disableCellPathgrid(*it); } mPathGridRoot->removeAndDestroyAllChildren(); mSceneMgr->destroySceneNode(mPathGridRoot); @@ -82,7 +118,7 @@ void Debugging::togglePathgrid() } } -void Debugging::togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabled) +void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) { ESM::Pathgrid *pathgrid = mEnvironment.mWorld->getStore().pathgrids.search(*store->cell); if (!pathgrid) @@ -90,56 +126,65 @@ void Debugging::togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabl return; } - if (enabled) + Vector3 cellPathGridPos; + /// \todo replace tests like this with isExterior method of ESM::Cell after merging with terrain branch + if (!(store->cell->data.flags & ESM::Cell::Interior)) { - Vector3 cellPathGridPos; - /// \todo replace tests like this with isExterior method of ESM::Cell after merging with terrain branch - if (!(store->cell->data.flags & ESM::Cell::Interior)) - { - /// \todo Replace with ESM::Land::REAL_SIZE after merging with terrain branch - cellPathGridPos.x = store->cell->data.gridX * 8192; - cellPathGridPos.y = store->cell->data.gridY * 8192; - } - SceneNode *cellPathGrid = mPathGridRoot->createChildSceneNode(cellPathGridPos); - ESM::Pathgrid::PointList points = pathgrid->points; - for (ESM::Pathgrid::PointList::iterator it = points.begin(); it != points.end(); it++) - { - Vector3 position(it->x, it->y, it->z); - SceneNode* pointNode = cellPathGrid->createChildSceneNode(position); - pointNode->setScale(0.5, 0.5, 0.5); - Entity *pointMesh = mSceneMgr->createEntity(SceneManager::PT_CUBE); - pointNode->attachObject(pointMesh); - } + /// \todo Replace with ESM::Land::REAL_SIZE after merging with terrain branch + cellPathGridPos.x = store->cell->data.gridX * 8192; + cellPathGridPos.y = store->cell->data.gridY * 8192; + } + SceneNode *cellPathGrid = mPathGridRoot->createChildSceneNode(cellPathGridPos); + ESM::Pathgrid::PointList points = pathgrid->points; + for (ESM::Pathgrid::PointList::iterator it = points.begin(); it != points.end(); it++) + { + Vector3 position(it->x, it->y, it->z); + SceneNode* pointNode = cellPathGrid->createChildSceneNode(position); + pointNode->setScale(0.5, 0.5, 0.5); + Entity *pointMesh = mSceneMgr->createEntity(SceneManager::PT_CUBE); + pointNode->attachObject(pointMesh); + } - if (!(store->cell->data.flags & ESM::Cell::Interior)) + ESM::Pathgrid::EdgeList edges = pathgrid->edges; + for(ESM::Pathgrid::EdgeList::const_iterator it = edges.begin(); + it != edges.end(); it++) + { + ESM::Pathgrid::Edge edge = *it; + ESM::Pathgrid::Point p1 = points[edge.v0], p2 = points[edge.v1]; + cellPathGrid->attachObject(createPathgridLine(cellPathGrid->getCreator(), + Vector3(p1.x, p1.y, p1.z), + Vector3(p2.x, p2.y, p2.z))); + } + + if (!(store->cell->data.flags & ESM::Cell::Interior)) + { + mExteriorPathgridNodes[std::make_pair(store->cell->data.gridX, store->cell->data.gridY)] = cellPathGrid; + } + else + { + assert(mInteriorPathgridNode == NULL); + mInteriorPathgridNode = cellPathGrid; + } +} + +void Debugging::disableCellPathgrid(MWWorld::Ptr::CellStore *store) +{ + if (!(store->cell->data.flags & ESM::Cell::Interior)) + { + ExteriorPathgridNodes::iterator it = + mExteriorPathgridNodes.find(std::make_pair(store->cell->data.gridX, store->cell->data.gridY)); + if (it != mExteriorPathgridNodes.end()) { - mExteriorPathgridNodes[std::make_pair(store->cell->data.gridX, store->cell->data.gridY)] = cellPathGrid; - } - else - { - assert(mInteriorPathgridNode == NULL); - mInteriorPathgridNode = cellPathGrid; + destroyCellPathgridNode(it->second); + mExteriorPathgridNodes.erase(it); } } else { - if (!(store->cell->data.flags & ESM::Cell::Interior)) + if (mInteriorPathgridNode) { - ExteriorPathgridNodes::iterator it = - mExteriorPathgridNodes.find(std::make_pair(store->cell->data.gridX, store->cell->data.gridY)); - if (it != mExteriorPathgridNodes.end()) - { - destroyCellPathgridNode(it->second); - mExteriorPathgridNodes.erase(it); - } - } - else - { - if (mInteriorPathgridNode) - { - destroyCellPathgridNode(mInteriorPathgridNode); - mInteriorPathgridNode = NULL; - } + destroyCellPathgridNode(mInteriorPathgridNode); + mInteriorPathgridNode = NULL; } } } @@ -148,17 +193,26 @@ void Debugging::destroyCellPathgridNode(SceneNode *node) { mPathGridRoot->removeChild(node); + /// \todo should object be killed by hand or removeAndDestroyAllChildren is sufficient? SceneNode::ChildNodeIterator childIt = node->getChildIterator(); while (childIt.hasMoreElements()) { SceneNode *child = static_cast(childIt.getNext()); - SceneNode::ObjectIterator objIt = child->getAttachedObjectIterator(); - while (objIt.hasMoreElements()) - { - MovableObject *mesh = static_cast(objIt.getNext()); - child->getCreator()->destroyMovableObject(mesh); - } + destroyAttachedObjects(child); } + destroyAttachedObjects(node); node->removeAndDestroyAllChildren(); mSceneMgr->destroySceneNode(node); } + +void Debugging::destroyAttachedObjects(SceneNode *node) +{ + SceneNode::ObjectIterator objIt = node->getAttachedObjectIterator(); + while (objIt.hasMoreElements()) + { + MovableObject *mesh = static_cast(objIt.getNext()); + node->getCreator()->destroyMovableObject(mesh); + } +} + +} diff --git a/apps/openmw/mwrender/debugging.hpp b/apps/openmw/mwrender/debugging.hpp index eb592b98d9..cfa7723307 100644 --- a/apps/openmw/mwrender/debugging.hpp +++ b/apps/openmw/mwrender/debugging.hpp @@ -52,12 +52,16 @@ namespace MWRender typedef std::map, Ogre::SceneNode *> ExteriorPathgridNodes; ExteriorPathgridNodes mExteriorPathgridNodes; - void togglePathgridForCell(MWWorld::Ptr::CellStore *store, bool enabled); + void enableCellPathgrid(MWWorld::Ptr::CellStore *store); + void disableCellPathgrid(MWWorld::Ptr::CellStore *store); + // utility void destroyCellPathgridNode(Ogre::SceneNode *node); + void destroyAttachedObjects(Ogre::SceneNode *node); public: Debugging(Ogre::SceneNode* mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine); + ~Debugging(); bool toggleRenderMode (int mode); void cellAdded(MWWorld::Ptr::CellStore* store); From a8e25bc32ce3c862b512b130531db24eb0f9f704 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Wed, 14 Mar 2012 15:03:04 +0400 Subject: [PATCH 048/488] Feature #37 (In Progress) Render Path Grid improved path grid point mesh (closer to vanilla MW) --- apps/openmw/mwrender/debugging.cpp | 96 +++++++++++++++++++++++------- apps/openmw/mwrender/debugging.hpp | 14 ++++- 2 files changed, 86 insertions(+), 24 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index 3b01d4b36c..aa98f433fd 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -4,6 +4,8 @@ #include #include +#include +#include #include "../mwworld/world.hpp" // these includes can be removed once the static-hack is gone #include "../mwworld/environment.hpp" @@ -18,12 +20,15 @@ using namespace Ogre; namespace MWRender { +static const std::string PATHGRID_POINT_MATERIAL = "pathgridPointMaterial"; static const std::string PATHGRID_LINE_MATERIAL = "pathgridLineMaterial"; static const std::string DEBUGGING_GROUP = "debugging"; +static const int POINT_MESH_BASE = 80; -ManualObject *createPathgridLine(SceneManager* sceneMgr, const Vector3& from, const Vector3& to) +void Debugging::createGridMaterials() { - ManualObject *line = sceneMgr->createManualObject(); + if (mGridMatsCreated) return; + if (MaterialManager::getSingleton().getByName(PATHGRID_LINE_MATERIAL, DEBUGGING_GROUP).isNull()) { MaterialPtr lineMatPtr = MaterialManager::getSingleton().create(PATHGRID_LINE_MATERIAL, DEBUGGING_GROUP); @@ -34,6 +39,31 @@ ManualObject *createPathgridLine(SceneManager* sceneMgr, const Vector3& from, co lineMatPtr->getTechnique(0)->getPass(0)->setSelfIllumination(1,1,0); } + if (MaterialManager::getSingleton().getByName(PATHGRID_POINT_MATERIAL, DEBUGGING_GROUP).isNull()) + { + MaterialPtr pointMatPtr = MaterialManager::getSingleton().create(PATHGRID_POINT_MATERIAL, DEBUGGING_GROUP); + pointMatPtr->setReceiveShadows(false); + pointMatPtr->getTechnique(0)->setLightingEnabled(true); + pointMatPtr->getTechnique(0)->getPass(0)->setDiffuse(1,0,0,0); + pointMatPtr->getTechnique(0)->getPass(0)->setAmbient(1,0,0); + pointMatPtr->getTechnique(0)->getPass(0)->setSelfIllumination(1,0,0); + } + mGridMatsCreated = true; +} + +void Debugging::destroyGridMaterials() +{ + if (mGridMatsCreated) + { + MaterialManager::getSingleton().remove(PATHGRID_POINT_MATERIAL); + MaterialManager::getSingleton().remove(PATHGRID_LINE_MATERIAL); + mGridMatsCreated = false; + } +} + +MovableObject *Debugging::createPathgridLine(const Vector3& from, const Vector3& to) +{ + ManualObject *line = mSceneMgr->createManualObject(); line->begin(PATHGRID_LINE_MATERIAL, Ogre::RenderOperation::OT_LINE_LIST); line->position(from); line->position(to); @@ -42,21 +72,47 @@ ManualObject *createPathgridLine(SceneManager* sceneMgr, const Vector3& from, co return line; } -ManualObject *createPathgridPoint(SceneManager* sceneMgr, const Vector3& pos) +MovableObject *Debugging::createPathgridPoint() { + ManualObject *point = mSceneMgr->createManualObject(); + point->begin(PATHGRID_POINT_MATERIAL, Ogre::RenderOperation::OT_TRIANGLE_FAN); + float height = POINT_MESH_BASE /*/ sqrtf(2)*/; + point->position(0, 0, height); + point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); + point->position(POINT_MESH_BASE, -POINT_MESH_BASE, 0); + point->position(POINT_MESH_BASE, POINT_MESH_BASE, 0); + point->position(-POINT_MESH_BASE, POINT_MESH_BASE, 0); + point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); + point->end(); + point->begin(PATHGRID_POINT_MATERIAL, Ogre::RenderOperation::OT_TRIANGLE_FAN); + point->position(0, 0, -height); + point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); + point->position(-POINT_MESH_BASE, POINT_MESH_BASE, 0); + point->position(POINT_MESH_BASE, POINT_MESH_BASE, 0); + point->position(POINT_MESH_BASE, -POINT_MESH_BASE, 0); + point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); + point->end(); + + return point; } Debugging::Debugging(SceneNode *mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine) : mMwRoot(mwRoot), mEnvironment(env), mEngine(engine), mSceneMgr(mwRoot->getCreator()), - pathgridEnabled(false), - mInteriorPathgridNode(NULL), mPathGridRoot(NULL) + mPathgridEnabled(false), + mInteriorPathgridNode(NULL), mPathGridRoot(NULL), + mGridMatsCreated(false) { ResourceGroupManager::getSingleton().createResourceGroup(DEBUGGING_GROUP); } Debugging::~Debugging() { + if (mPathgridEnabled) + { + togglePathgrid(); + } + ResourceGroupManager::getSingleton().destroyResourceGroup(DEBUGGING_GROUP); } @@ -72,7 +128,7 @@ bool Debugging::toggleRenderMode (int mode){ return mEngine->isDebugCreated; case MWWorld::World::Render_Pathgrid: togglePathgrid(); - return pathgridEnabled; + return mPathgridEnabled; } return false; @@ -82,7 +138,7 @@ void Debugging::cellAdded(MWWorld::Ptr::CellStore *store) { std::cout << "Cell added to debugging" << std::endl; mActiveCells.push_back(store); - if (pathgridEnabled) + if (mPathgridEnabled) enableCellPathgrid(store); } @@ -90,15 +146,17 @@ void Debugging::cellRemoved(MWWorld::Ptr::CellStore *store) { mActiveCells.erase(std::remove(mActiveCells.begin(), mActiveCells.end(), store), mActiveCells.end()); std::cout << "Cell removed from debugging, active cells count: " << mActiveCells.size() << std::endl; - if (pathgridEnabled) + if (mPathgridEnabled) disableCellPathgrid(store); } void Debugging::togglePathgrid() { - pathgridEnabled = !pathgridEnabled; - if (pathgridEnabled) + mPathgridEnabled = !mPathgridEnabled; + if (mPathgridEnabled) { + createGridMaterials(); + // add path grid meshes to already loaded cells mPathGridRoot = mMwRoot->createChildSceneNode(); for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) @@ -106,7 +164,8 @@ void Debugging::togglePathgrid() enableCellPathgrid(*it); } } - else { + else + { // remove path grid meshes from already loaded cells for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) { @@ -115,16 +174,14 @@ void Debugging::togglePathgrid() mPathGridRoot->removeAndDestroyAllChildren(); mSceneMgr->destroySceneNode(mPathGridRoot); mPathGridRoot = NULL; + destroyGridMaterials(); } } void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) { ESM::Pathgrid *pathgrid = mEnvironment.mWorld->getStore().pathgrids.search(*store->cell); - if (!pathgrid) - { - return; - } + if (!pathgrid) return; Vector3 cellPathGridPos; /// \todo replace tests like this with isExterior method of ESM::Cell after merging with terrain branch @@ -141,8 +198,7 @@ void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) Vector3 position(it->x, it->y, it->z); SceneNode* pointNode = cellPathGrid->createChildSceneNode(position); pointNode->setScale(0.5, 0.5, 0.5); - Entity *pointMesh = mSceneMgr->createEntity(SceneManager::PT_CUBE); - pointNode->attachObject(pointMesh); + pointNode->attachObject(createPathgridPoint()); } ESM::Pathgrid::EdgeList edges = pathgrid->edges; @@ -151,8 +207,7 @@ void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) { ESM::Pathgrid::Edge edge = *it; ESM::Pathgrid::Point p1 = points[edge.v0], p2 = points[edge.v1]; - cellPathGrid->attachObject(createPathgridLine(cellPathGrid->getCreator(), - Vector3(p1.x, p1.y, p1.z), + cellPathGrid->attachObject(createPathgridLine(Vector3(p1.x, p1.y, p1.z), Vector3(p2.x, p2.y, p2.z))); } @@ -193,7 +248,6 @@ void Debugging::destroyCellPathgridNode(SceneNode *node) { mPathGridRoot->removeChild(node); - /// \todo should object be killed by hand or removeAndDestroyAllChildren is sufficient? SceneNode::ChildNodeIterator childIt = node->getChildIterator(); while (childIt.hasMoreElements()) { @@ -211,7 +265,7 @@ void Debugging::destroyAttachedObjects(SceneNode *node) while (objIt.hasMoreElements()) { MovableObject *mesh = static_cast(objIt.getNext()); - node->getCreator()->destroyMovableObject(mesh); + mSceneMgr->destroyMovableObject(mesh); } } diff --git a/apps/openmw/mwrender/debugging.hpp b/apps/openmw/mwrender/debugging.hpp index cfa7723307..c8c19fb8cb 100644 --- a/apps/openmw/mwrender/debugging.hpp +++ b/apps/openmw/mwrender/debugging.hpp @@ -37,20 +37,20 @@ namespace MWRender MWWorld::Environment& mEnvironment; // Path grid stuff - bool pathgridEnabled; + bool mPathgridEnabled; void togglePathgrid(); typedef std::vector CellList; - CellList mActiveCells; Ogre::SceneNode *mMwRoot; + Ogre::SceneNode *mPathGridRoot; - Ogre::SceneNode *mInteriorPathgridNode; typedef std::map, Ogre::SceneNode *> ExteriorPathgridNodes; ExteriorPathgridNodes mExteriorPathgridNodes; + Ogre::SceneNode *mInteriorPathgridNode; void enableCellPathgrid(MWWorld::Ptr::CellStore *store); void disableCellPathgrid(MWWorld::Ptr::CellStore *store); @@ -59,6 +59,14 @@ namespace MWRender void destroyCellPathgridNode(Ogre::SceneNode *node); void destroyAttachedObjects(Ogre::SceneNode *node); + // materials + bool mGridMatsCreated; + void createGridMaterials(); + void destroyGridMaterials(); + + // path grid meshes + Ogre::MovableObject* createPathgridLine(const Ogre::Vector3& from, const Ogre::Vector3& to); + Ogre::MovableObject* createPathgridPoint(); public: Debugging(Ogre::SceneNode* mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine); ~Debugging(); From 42b445383f7b3193f12588142f4762ff1af6c72e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 16 Mar 2012 17:08:13 -0700 Subject: [PATCH 049/488] Remove Mangle- and OpenEngine-related sound code Start of the sound code refactoring. Currently there is no sound, but it will be added back. --- CMakeLists.txt | 19 +- apps/openmw/mwsound/soundmanager.cpp | 509 ++++++------------ apps/openmw/mwsound/soundmanager.hpp | 38 -- libs/mangle/sound/.gitignore | 1 - .../sound/clients/ogre_listener_mover.hpp | 79 --- .../sound/clients/ogre_output_updater.hpp | 31 -- libs/mangle/sound/filters/input_filter.hpp | 68 --- libs/mangle/sound/filters/openal_audiere.hpp | 24 - libs/mangle/sound/filters/openal_ffmpeg.hpp | 23 - libs/mangle/sound/filters/openal_mpg123.hpp | 24 - libs/mangle/sound/filters/openal_sndfile.hpp | 24 - .../sound/filters/openal_sndfile_mpg123.hpp | 33 -- libs/mangle/sound/filters/openal_various.hpp | 39 -- libs/mangle/sound/filters/pure_filter.hpp | 73 --- libs/mangle/sound/filters/source_splicer.hpp | 90 ---- libs/mangle/sound/output.hpp | 183 ------- libs/mangle/sound/outputs/openal_out.cpp | 500 ----------------- libs/mangle/sound/outputs/openal_out.hpp | 44 -- libs/mangle/sound/source.hpp | 62 --- libs/mangle/sound/sources/audiere_source.cpp | 77 --- libs/mangle/sound/sources/audiere_source.hpp | 48 -- libs/mangle/sound/sources/ffmpeg_source.cpp | 189 ------- libs/mangle/sound/sources/ffmpeg_source.hpp | 52 -- libs/mangle/sound/sources/libsndfile.cpp | 48 -- libs/mangle/sound/sources/libsndfile.hpp | 36 -- libs/mangle/sound/sources/loadertemplate.hpp | 28 - libs/mangle/sound/sources/mpg123_source.cpp | 115 ---- libs/mangle/sound/sources/mpg123_source.hpp | 47 -- libs/mangle/sound/sources/sample_reader.cpp | 99 ---- libs/mangle/sound/sources/sample_reader.hpp | 48 -- libs/mangle/sound/sources/stream_source.hpp | 47 -- libs/mangle/sound/sources/wav_source.cpp | 99 ---- libs/mangle/sound/sources/wav_source.hpp | 49 -- libs/mangle/sound/tests/.gitignore | 1 - libs/mangle/sound/tests/Makefile | 38 -- .../sound/tests/audiere_source_test.cpp | 68 --- libs/mangle/sound/tests/cow.raw | Bin 37502 -> 0 bytes libs/mangle/sound/tests/cow.wav | Bin 37546 -> 0 bytes .../mangle/sound/tests/ffmpeg_source_test.cpp | 62 --- .../sound/tests/openal_audiere_test.cpp | 52 -- .../mangle/sound/tests/openal_ffmpeg_test.cpp | 52 -- .../mangle/sound/tests/openal_mpg123_test.cpp | 54 -- .../mangle/sound/tests/openal_output_test.cpp | 59 -- .../sound/tests/openal_sndfile_test.cpp | 52 -- .../sound/tests/openal_various_test.cpp | 51 -- .../tests/output/audiere_source_test.out | 21 - .../sound/tests/output/ffmpeg_source_test.out | 12 - .../tests/output/openal_audiere_test.out | 3 - .../sound/tests/output/openal_ffmpeg_test.out | 2 - .../sound/tests/output/openal_mpg123_test.out | 1 - .../sound/tests/output/openal_output_test.out | 5 - .../tests/output/openal_sndfile_test.out | 2 - .../tests/output/openal_various_test.out | 1 - .../sound/tests/output/wav_source_test.out | 12 - libs/mangle/sound/tests/owl.ogg | Bin 18641 -> 0 bytes libs/mangle/sound/tests/test.sh | 18 - libs/mangle/sound/tests/wav_source_test.cpp | 48 -- libs/openengine/sound/sndmanager.cpp | 219 -------- libs/openengine/sound/sndmanager.hpp | 93 ---- libs/openengine/sound/tests/Makefile | 16 - .../sound/tests/output/sound_3d_test.out | 3 - .../sound/tests/output/sound_manager_test.out | 5 - libs/openengine/sound/tests/sound_3d_test.cpp | 46 -- .../sound/tests/sound_manager_test.cpp | 73 --- libs/openengine/sound/tests/test.sh | 18 - 65 files changed, 167 insertions(+), 3766 deletions(-) delete mode 100644 libs/mangle/sound/.gitignore delete mode 100644 libs/mangle/sound/clients/ogre_listener_mover.hpp delete mode 100644 libs/mangle/sound/clients/ogre_output_updater.hpp delete mode 100644 libs/mangle/sound/filters/input_filter.hpp delete mode 100644 libs/mangle/sound/filters/openal_audiere.hpp delete mode 100644 libs/mangle/sound/filters/openal_ffmpeg.hpp delete mode 100644 libs/mangle/sound/filters/openal_mpg123.hpp delete mode 100644 libs/mangle/sound/filters/openal_sndfile.hpp delete mode 100644 libs/mangle/sound/filters/openal_sndfile_mpg123.hpp delete mode 100644 libs/mangle/sound/filters/openal_various.hpp delete mode 100644 libs/mangle/sound/filters/pure_filter.hpp delete mode 100644 libs/mangle/sound/filters/source_splicer.hpp delete mode 100644 libs/mangle/sound/output.hpp delete mode 100644 libs/mangle/sound/outputs/openal_out.cpp delete mode 100644 libs/mangle/sound/outputs/openal_out.hpp delete mode 100644 libs/mangle/sound/source.hpp delete mode 100644 libs/mangle/sound/sources/audiere_source.cpp delete mode 100644 libs/mangle/sound/sources/audiere_source.hpp delete mode 100644 libs/mangle/sound/sources/ffmpeg_source.cpp delete mode 100644 libs/mangle/sound/sources/ffmpeg_source.hpp delete mode 100644 libs/mangle/sound/sources/libsndfile.cpp delete mode 100644 libs/mangle/sound/sources/libsndfile.hpp delete mode 100644 libs/mangle/sound/sources/loadertemplate.hpp delete mode 100644 libs/mangle/sound/sources/mpg123_source.cpp delete mode 100644 libs/mangle/sound/sources/mpg123_source.hpp delete mode 100644 libs/mangle/sound/sources/sample_reader.cpp delete mode 100644 libs/mangle/sound/sources/sample_reader.hpp delete mode 100644 libs/mangle/sound/sources/stream_source.hpp delete mode 100644 libs/mangle/sound/sources/wav_source.cpp delete mode 100644 libs/mangle/sound/sources/wav_source.hpp delete mode 100644 libs/mangle/sound/tests/.gitignore delete mode 100644 libs/mangle/sound/tests/Makefile delete mode 100644 libs/mangle/sound/tests/audiere_source_test.cpp delete mode 100644 libs/mangle/sound/tests/cow.raw delete mode 100644 libs/mangle/sound/tests/cow.wav delete mode 100644 libs/mangle/sound/tests/ffmpeg_source_test.cpp delete mode 100644 libs/mangle/sound/tests/openal_audiere_test.cpp delete mode 100644 libs/mangle/sound/tests/openal_ffmpeg_test.cpp delete mode 100644 libs/mangle/sound/tests/openal_mpg123_test.cpp delete mode 100644 libs/mangle/sound/tests/openal_output_test.cpp delete mode 100644 libs/mangle/sound/tests/openal_sndfile_test.cpp delete mode 100644 libs/mangle/sound/tests/openal_various_test.cpp delete mode 100644 libs/mangle/sound/tests/output/audiere_source_test.out delete mode 100644 libs/mangle/sound/tests/output/ffmpeg_source_test.out delete mode 100644 libs/mangle/sound/tests/output/openal_audiere_test.out delete mode 100644 libs/mangle/sound/tests/output/openal_ffmpeg_test.out delete mode 100644 libs/mangle/sound/tests/output/openal_mpg123_test.out delete mode 100644 libs/mangle/sound/tests/output/openal_output_test.out delete mode 100644 libs/mangle/sound/tests/output/openal_sndfile_test.out delete mode 100644 libs/mangle/sound/tests/output/openal_various_test.out delete mode 100644 libs/mangle/sound/tests/output/wav_source_test.out delete mode 100644 libs/mangle/sound/tests/owl.ogg delete mode 100755 libs/mangle/sound/tests/test.sh delete mode 100644 libs/mangle/sound/tests/wav_source_test.cpp delete mode 100644 libs/openengine/sound/sndmanager.cpp delete mode 100644 libs/openengine/sound/sndmanager.hpp delete mode 100644 libs/openengine/sound/tests/Makefile delete mode 100644 libs/openengine/sound/tests/output/sound_3d_test.out delete mode 100644 libs/openengine/sound/tests/output/sound_manager_test.out delete mode 100644 libs/openengine/sound/tests/sound_3d_test.cpp delete mode 100644 libs/openengine/sound/tests/sound_manager_test.cpp delete mode 100755 libs/openengine/sound/tests/test.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dbd27a68c..d06085322a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,10 +120,6 @@ set(OENGINE_BULLET # Sound setup if (USE_AUDIERE) - set(MANGLE_SOUND_OUTPUT - ${LIBDIR}/mangle/sound/sources/audiere_source.cpp - ${LIBDIR}/mangle/sound/sources/sample_reader.cpp - ${LIBDIR}/mangle/stream/clients/audiere_file.cpp) find_package(Audiere REQUIRED) set(SOUND_INPUT_INCLUDES ${AUDIERE_INCLUDE_DIR}) set(SOUND_INPUT_LIBRARY ${AUDIERE_LIBRARY}) @@ -131,8 +127,6 @@ if (USE_AUDIERE) endif (USE_AUDIERE) if (USE_FFMPEG) - set(MANGLE_SOUND_OUTPUT - ${LIBDIR}/mangle/sound/sources/ffmpeg_source.cpp) find_package(FFMPEG REQUIRED) set(SOUND_INPUT_INCLUDES ${FFMPEG_INCLUDE_DIR}) set(SOUND_INPUT_LIBRARY ${FFMPEG_LIBRARIES}) @@ -140,10 +134,6 @@ if (USE_FFMPEG) endif (USE_FFMPEG) if (USE_MPG123) - set(MANGLE_SOUND_OUTPUT - ${LIBDIR}/mangle/sound/sources/mpg123_source.cpp - ${LIBDIR}/mangle/sound/sources/libsndfile.cpp - ${LIBDIR}/mangle/sound/sources/sample_reader.cpp) find_package(MPG123 REQUIRED) find_package(SNDFILE REQUIRED) set(SOUND_INPUT_INCLUDES ${MPG123_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR}) @@ -151,14 +141,7 @@ if (USE_MPG123) set(SOUND_DEFINE -DOPENMW_USE_MPG123) endif (USE_MPG123) -set(OENGINE_SOUND - # Mangle and OEngine sound files are sort of intertwined, so put - # them together here - ${LIBDIR}/openengine/sound/sndmanager.cpp - ${LIBDIR}/mangle/sound/outputs/openal_out.cpp - ${MANGLE_SOUND_OUTPUT} -) -set(OENGINE_ALL ${OENGINE_OGRE} ${OENGINE_GUI} ${OENGINE_SOUND} ${OENGINE_BULLET}) +set(OENGINE_ALL ${OENGINE_OGRE} ${OENGINE_GUI} ${OENGINE_BULLET}) source_group(libs\\openengine FILES ${OENGINE_ALL}) set(OPENMW_LIBS ${MANGLE_ALL} ${OENGINE_ALL}) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a5ba04e261..e0d7167de8 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -6,10 +6,6 @@ #include -#include -#include -#include - #include #include "../mwworld/environment.hpp" @@ -21,39 +17,23 @@ CMakeLists.txt. */ #ifdef OPENMW_USE_AUDIERE -#include #define SOUND_FACTORY OpenAL_Audiere_Factory #define SOUND_OUT "OpenAL" #define SOUND_IN "Audiere" #endif #ifdef OPENMW_USE_FFMPEG -#include #define SOUND_FACTORY OpenAL_FFMpeg_Factory #define SOUND_OUT "OpenAL" #define SOUND_IN "FFmpeg" #endif #ifdef OPENMW_USE_MPG123 -#include #define SOUND_FACTORY OpenAL_SndFile_Mpg123_Factory #define SOUND_OUT "OpenAL" #define SOUND_IN "mpg123,sndfile" #endif -using namespace Mangle::Sound; -typedef OEngine::Sound::SoundManager OEManager; - -// Set the position on a sound based on a Ptr. -static void setPos(SoundPtr &snd, const MWWorld::Ptr ref) -{ - // Get sound position from the reference - const float *pos = ref.getCellRef().pos.pos; - - // Move the sound, converting from MW coordinates to Ogre - // coordinates. - snd->setPos(pos[0], pos[2], -pos[1]); -} namespace MWSound { @@ -63,50 +43,36 @@ namespace MWSound bool useSound, bool fsstrict, MWWorld::Environment& environment) : mFSStrict(fsstrict) , mEnvironment(environment) - , mgr(new OEManager(SoundFactoryPtr(new SOUND_FACTORY))) - , updater(mgr) - , cameraTracker(mgr) , mCurrentPlaylist(NULL) { - if(useSound) - { - // The music library will accept these filetypes - // If none is given then it will accept all filetypes - std::vector acceptableExtensions; - acceptableExtensions.push_back(".mp3"); - acceptableExtensions.push_back(".wav"); - acceptableExtensions.push_back(".ogg"); - acceptableExtensions.push_back(".flac"); + if(!useSound) + return; - // Makes a list of all sound files, searches in reverse for priority reasons - for (Files::PathContainer::const_reverse_iterator it = dataDirs.rbegin(); it != dataDirs.rend(); ++it) - { - Files::FileLister(*it / std::string("Sound"), mSoundFiles, true); - } + // The music library will accept these filetypes + // If none is given then it will accept all filetypes + std::vector acceptableExtensions; + acceptableExtensions.push_back(".mp3"); + acceptableExtensions.push_back(".wav"); + acceptableExtensions.push_back(".ogg"); + acceptableExtensions.push_back(".flac"); - // Makes a FileLibrary of all music files, searches in reverse for priority reasons - for (Files::PathContainer::const_reverse_iterator it = dataDirs.rbegin(); it != dataDirs.rend(); ++it) - { - mMusicLibrary.add(*it / std::string("Music"), true, mFSStrict, acceptableExtensions); - } + // Makes a list of all sound files, searches in reverse for priority reasons + for(Files::PathContainer::const_reverse_iterator it = dataDirs.rbegin(); it != dataDirs.rend(); ++it) + Files::FileLister(*it / std::string("Sound"), mSoundFiles, true); - std::string anything = "anything"; // anything is better that a segfault - mCurrentPlaylist = mMusicLibrary.section(anything, mFSStrict); // now points to an empty path + // Makes a FileLibrary of all music files, searches in reverse for priority reasons + for(Files::PathContainer::const_reverse_iterator it = dataDirs.rbegin(); it != dataDirs.rend(); ++it) + mMusicLibrary.add(*it / std::string("Music"), true, mFSStrict, acceptableExtensions); - std::cout << "Sound output: " << SOUND_OUT << std::endl; - std::cout << "Sound decoder: " << SOUND_IN << std::endl; - // Attach the camera to the camera tracker - cameraTracker.followCamera(camera); + std::string anything = "anything"; // anything is better that a segfault + mCurrentPlaylist = mMusicLibrary.section(anything, mFSStrict); // now points to an empty path - // Tell Ogre to update the sound system each frame - root->addFrameListener(&updater); - } - } + std::cout << "Sound output: " << SOUND_OUT << std::endl; + std::cout << "Sound decoder: " << SOUND_IN << std::endl; + } SoundManager::~SoundManager() { - Ogre::Root::getSingleton().removeFrameListener(&updater); - cameraTracker.unfollowCamera(); } // Convert a soundId to file name, and modify the volume @@ -115,28 +81,28 @@ namespace MWSound std::string SoundManager::lookup(const std::string &soundId, float &volume, float &min, float &max) { - const ESM::Sound *snd = mEnvironment.mWorld->getStore().sounds.search(soundId); - if(snd == NULL) return ""; + const ESM::Sound *snd = mEnvironment.mWorld->getStore().sounds.search(soundId); + if(snd == NULL) return ""; - if(snd->data.volume == 0) - volume = 0.0f; - else - volume *= pow(10.0, (snd->data.volume/255.0f*3348.0 - 3348.0) / 2000.0); + if(snd->data.volume == 0) + volume = 0.0f; + else + volume *= pow(10.0, (snd->data.volume/255.0f*3348.0 - 3348.0) / 2000.0); - if(snd->data.minRange == 0 && snd->data.maxRange == 0) - { - min = 100.0f; - max = 2000.0f; - } - else - { - min = snd->data.minRange * 20.0f; - max = snd->data.maxRange * 50.0f; - min = std::max(min, 1.0f); - max = std::max(min, max); - } + if(snd->data.minRange == 0 && snd->data.maxRange == 0) + { + min = 100.0f; + max = 2000.0f; + } + else + { + min = snd->data.minRange * 20.0f; + max = snd->data.maxRange * 50.0f; + min = std::max(min, 1.0f); + max = std::max(min, max); + } - return Files::FileListLocator(mSoundFiles, snd->sound, mFSStrict, false); + return Files::FileListLocator(mSoundFiles, snd->sound, mFSStrict, false); } // Add a sound to the list and play it @@ -147,190 +113,79 @@ namespace MWSound float min, float max, bool loop, bool untracked) { - try - { - SoundPtr snd = mgr->load(file); - snd->setRepeat(loop); - snd->setVolume(volume); - snd->setPitch(pitch); - snd->setRange(min,max); - setPos(snd, ptr); - snd->play(); - - if (!untracked) - { - sounds[ptr][id] = WSoundPtr(snd); - } - } - catch(...) - { - std::cout << "Error loading " << file << ", skipping.\n"; - } - } - - // Clears all the sub-elements of a given iterator, and then - // removes it from 'sounds'. - void SoundManager::clearAll(PtrMap::iterator& it) - { - IDMap::iterator sit = it->second.begin(); - - while(sit != it->second.end()) - { - // Get sound pointer, if any - SoundPtr snd = sit->second.lock(); - - // Stop the sound - if(snd) snd->stop(); - - sit++; - } - - // Remove the ptr reference - sounds.erase(it); + //std::cout << "Cannot load " << file << ", skipping.\n"; } // Stop a sound and remove it from the list. If id="" then // remove the entire object and stop all its sounds. void SoundManager::remove(MWWorld::Ptr ptr, const std::string &id) { - PtrMap::iterator it = sounds.find(ptr); - if(it != sounds.end()) - { - if(id == "") - // Kill all references to 'ptr' - clearAll(it); - else - { - // Only find the id we're looking for - IDMap::iterator it2 = it->second.find(id); - if(it2 != it->second.end()) - { - // Stop the sound and remove it from the list - SoundPtr snd = it2->second.lock(); - if(snd) snd->stop(); - it->second.erase(it2); - } - } - } } bool SoundManager::isPlaying(MWWorld::Ptr ptr, const std::string &id) const { - PtrMap::const_iterator it = sounds.find(ptr); - if(it != sounds.end()) - { - IDMap::const_iterator it2 = it->second.find(id); - if(it2 != it->second.end()) - { - // Get a shared_ptr from the weak_ptr - SoundPtr snd = it2->second.lock();; - - // Is it still alive? - if(snd) - { - // Then return its status! - return snd->isPlaying(); - } - } - } - // Nothing found, sound is not playing - return false; + // HACK: Return true to prevent the engine from trying to keep playing + // sounds and tanking the framerate. + return true; } // Remove all references to objects belonging to a given cell void SoundManager::removeCell(const MWWorld::Ptr::CellStore *cell) { - PtrMap::iterator it2, it = sounds.begin(); - while(it != sounds.end()) - { - // Make sure to increase the iterator before we erase it. - it2 = it++; - if(it2->first.getCell() == cell) - clearAll(it2); - } } void SoundManager::updatePositions(MWWorld::Ptr ptr) { - // Find the reference (if any) - PtrMap::iterator it = sounds.find(ptr); - if(it != sounds.end()) - { - // Then find all sounds in it (if any) - IDMap::iterator it2 = it->second.begin(); - for(;it2 != it->second.end(); it2++) - { - // Get the sound (if it still exists) - SoundPtr snd = it2->second.lock(); - if(snd) - // Update position - setPos(snd, ptr); - } - } } void SoundManager::stopMusic() { - if (music) - music->stop(); setPlaylist(); } - void SoundManager::streamMusicFull(const std::string& filename) - { - // Play the sound and tell it to stream, if possible. TODO: - // Store the reference, the jukebox will need to check status, - // control volume etc. - if (music) - music->stop(); - music = mgr->load(filename); - music->setStreaming(true); - music->setVolume(0.4); - music->play(); - - } + void SoundManager::streamMusicFull(const std::string& filename) + { + // Play the sound and tell it to stream, if possible. TODO: + // Store the reference, the jukebox will need to check status, + // control volume etc. + } void SoundManager::streamMusic(const std::string& filename) { std::string filePath = mMusicLibrary.locate(filename, mFSStrict, true).string(); if(!filePath.empty()) - { streamMusicFull(filePath); - } } - void SoundManager::startRandomTitle() - { - if(mCurrentPlaylist && !mCurrentPlaylist->empty()) + void SoundManager::startRandomTitle() { - Files::PathContainer::const_iterator fileIter = mCurrentPlaylist->begin(); - srand( time(NULL) ); - int r = rand() % mCurrentPlaylist->size() + 1; //old random code - - std::advance(fileIter, r - 1); - std::string music = fileIter->string(); - std::cout << "Playing " << music << "\n"; - - try + if(mCurrentPlaylist && !mCurrentPlaylist->empty()) { - streamMusicFull(music); - } - catch (std::exception &e) - { - std::cout << " Music Error: " << e.what() << "\n"; + Files::PathContainer::const_iterator fileIter = mCurrentPlaylist->begin(); + srand( time(NULL) ); + int r = rand() % mCurrentPlaylist->size() + 1; //old random code + + std::advance(fileIter, r - 1); + std::string music = fileIter->string(); + //std::cout << "Playing " << music << "\n"; + + try + { + streamMusicFull(music); + } + catch (std::exception &e) + { + std::cout << "Music Error: " << e.what() << "\n"; + } } } - } bool SoundManager::isMusicPlaying() { - bool test = false; - if(music) - { - test = music->isPlaying(); - } - return test; + // HACK: Return true to prevent the engine from trying to keep playing + // music and tanking the framerate. + return true; } bool SoundManager::setPlaylist(std::string playlist) @@ -373,154 +228,122 @@ namespace MWSound } } - void SoundManager::say (MWWorld::Ptr ptr, const std::string& filename) - { - // The range values are not tested - std::string filePath = Files::FileListLocator(mSoundFiles, filename, mFSStrict, true); - if(!filePath.empty()) - add(filePath, ptr, "_say_sound", 1, 1, 100, 20000, false); - else - std::cout << "Sound file " << filename << " not found, skipping.\n"; - } - - bool SoundManager::sayDone (MWWorld::Ptr ptr) const - { - return !isPlaying(ptr, "_say_sound"); - } - - - void SoundManager::playSound(const std::string& soundId, float volume, float pitch, bool loop) - { - float min, max; - const std::string &file = lookup(soundId, volume, min, max); - if (file != "") + void SoundManager::say(MWWorld::Ptr ptr, const std::string& filename) { - SoundPtr snd = mgr->load(file); - snd->setRepeat(loop); - snd->setVolume(volume); - snd->setRange(min,max); - snd->setPitch(pitch); - snd->setRelative(true); - snd->play(); - - if (loop) - { - // Only add the looping sound once - IDMap::iterator it = mLoopedSounds.find(soundId); - if(it == mLoopedSounds.end()) - { - mLoopedSounds[soundId] = WSoundPtr(snd); - } - } + // The range values are not tested + std::string filePath = Files::FileListLocator(mSoundFiles, filename, mFSStrict, true); + if(!filePath.empty()) + add(filePath, ptr, "_say_sound", 1, 1, 100, 20000, false); + else + std::cout << "Sound file " << filename << " not found, skipping.\n"; } - } - void SoundManager::playSound3D (MWWorld::Ptr ptr, const std::string& soundId, - float volume, float pitch, bool loop, bool untracked) - { - // Look up the sound in the ESM data - float min, max; - const std::string &file = lookup(soundId, volume, min, max); - if (file != "") - add(file, ptr, soundId, volume, pitch, min, max, loop, untracked); - } + bool SoundManager::sayDone(MWWorld::Ptr ptr) const + { + return !isPlaying(ptr, "_say_sound"); + } - void SoundManager::stopSound3D (MWWorld::Ptr ptr, const std::string& soundId) - { - remove(ptr, soundId); - } - void SoundManager::stopSound (MWWorld::Ptr::CellStore *cell) - { - removeCell(cell); - } + void SoundManager::playSound(const std::string& soundId, float volume, float pitch, bool loop) + { + float min, max; + const std::string &file = lookup(soundId, volume, min, max); + std::cout << "Cannot play " << file << ", skipping.\n"; + } + + void SoundManager::playSound3D(MWWorld::Ptr ptr, const std::string& soundId, + float volume, float pitch, bool loop, bool untracked) + { + // Look up the sound in the ESM data + float min, max; + const std::string &file = lookup(soundId, volume, min, max); + if(file != "") + add(file, ptr, soundId, volume, pitch, min, max, loop, untracked); + } + + void SoundManager::stopSound3D(MWWorld::Ptr ptr, const std::string& soundId) + { + remove(ptr, soundId); + } + + void SoundManager::stopSound(MWWorld::Ptr::CellStore *cell) + { + removeCell(cell); + } void SoundManager::stopSound(const std::string& soundId) { - IDMap::iterator it = mLoopedSounds.find(soundId); - if(it != mLoopedSounds.end()) - { - SoundPtr snd = it->second.lock(); - if(snd) snd->stop(); - mLoopedSounds.erase(it); - } } - bool SoundManager::getSoundPlaying (MWWorld::Ptr ptr, const std::string& soundId) const - { - // Mark all sounds as playing, otherwise the scripts will just - // keep trying to play them every frame. + bool SoundManager::getSoundPlaying(MWWorld::Ptr ptr, const std::string& soundId) const + { + // Mark all sounds as playing, otherwise the scripts will just + // keep trying to play them every frame. - return isPlaying(ptr, soundId); - } + return isPlaying(ptr, soundId); + } - void SoundManager::updateObject(MWWorld::Ptr ptr) - { - updatePositions(ptr); - } + void SoundManager::updateObject(MWWorld::Ptr ptr) + { + updatePositions(ptr); + } - void SoundManager::update (float duration) - { + void SoundManager::update(float duration) + { MWWorld::Ptr::CellStore *current = mEnvironment.mWorld->getPlayer().getPlayer().getCell(); static int total = 0; static std::string regionName = ""; static float timePassed = 0.0; - timePassed += duration; //If the region has changed - if(!(current->cell->data.flags & current->cell->Interior) && timePassed >= 10) + timePassed += duration; + if((current->cell->data.flags & current->cell->Interior) || timePassed < 10) + return; + + ESM::Region test = (ESM::Region) *(mEnvironment.mWorld->getStore().regions.find(current->cell->region)); + + timePassed = 0; + if(regionName != current->cell->region) { - - ESM::Region test = (ESM::Region) *(mEnvironment.mWorld->getStore().regions.find(current->cell->region)); - - timePassed = 0; - if (regionName != current->cell->region) - { - regionName = current->cell->region; - total = 0; - } - - if(test.soundList.size() > 0) - { - std::vector::iterator soundIter = test.soundList.begin(); - //mEnvironment.mSoundManager - if(total == 0) - { - while (soundIter != test.soundList.end()) - { - int chance = (int) soundIter->chance; - //ESM::NAME32 go = soundIter->sound; - //std::cout << "Sound: " << go.name <<" Chance:" << chance << "\n"; - soundIter++; - total += chance; - } - } - - int r = rand() % total; //old random code - int pos = 0; - soundIter = test.soundList.begin(); - while (soundIter != test.soundList.end()) - { - const std::string go = soundIter->sound.toString(); - int chance = (int) soundIter->chance; - //std::cout << "Sound: " << go.name <<" Chance:" << chance << "\n"; - soundIter++; - if( r - pos < chance) - { - //play sound - std::cout << "Sound: " << go <<" Chance:" << chance << "\n"; - mEnvironment.mSoundManager->playSound(go, 20.0, 1.0); - - break; - } - pos += chance; - } - } - } - else if(current->cell->data.flags & current->cell->Interior) - { - regionName = ""; + regionName = current->cell->region; + total = 0; } - } + if(test.soundList.size() == 0) + return; + + std::vector::iterator soundIter; + if(total == 0) + { + soundIter = test.soundList.begin(); + while(soundIter != test.soundList.end()) + { + int chance = (int) soundIter->chance; + //ESM::NAME32 go = soundIter->sound; + //std::cout << "Sound: " << go.name <<" Chance:" << chance << "\n"; + soundIter++; + total += chance; + } + } + + int r = rand() % total; //old random code + int pos = 0; + + soundIter = test.soundList.begin(); + while(soundIter != test.soundList.end()) + { + const std::string go = soundIter->sound.toString(); + int chance = (int) soundIter->chance; + //std::cout << "Sound: " << go.name <<" Chance:" << chance << "\n"; + soundIter++; + if(r - pos < chance) + { + //play sound + std::cout << "Sound: " << go <<" Chance:" << chance << "\n"; + playSound(go, 20.0, 1.0); + break; + } + pos += chance; + } + } } diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index bd3b676797..9db7fe1b70 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -3,11 +3,6 @@ #include -#include -#include - -#include - #include #include "../mwworld/ptr.hpp" @@ -19,16 +14,6 @@ namespace Ogre class Camera; } -namespace Mangle -{ - namespace Sound - { - typedef boost::shared_ptr SoundPtr; - } -} - -typedef OEngine::Sound::SoundManagerPtr OEManagerPtr; - namespace MWWorld { struct Environment; @@ -51,26 +36,6 @@ namespace MWSound ///< Play a soundifle /// \param absolute filename - /* This is the sound manager. It loades, stores and deletes - sounds based on the sound factory it is given. - */ - OEManagerPtr mgr; - Mangle::Sound::SoundPtr music; - - /* This class calls update() on the sound manager each frame - using and Ogre::FrameListener - */ - Mangle::Sound::OgreOutputUpdater updater; - - /* This class tracks the movement of an Ogre::Camera and moves - a sound listener automatically to follow it. - */ - Mangle::Sound::OgreListenerMover cameraTracker; - - typedef std::map IDMap; - typedef std::map PtrMap; - PtrMap sounds; - // A list of all sound files used to lookup paths Files::PathContainer mSoundFiles; @@ -80,15 +45,12 @@ namespace MWSound // Points to the current playlist of music files stored in the music library const Files::PathContainer* mCurrentPlaylist; - IDMap mLoopedSounds; - std::string lookup(const std::string &soundId, float &volume, float &min, float &max); void add(const std::string &file, MWWorld::Ptr ptr, const std::string &id, float volume, float pitch, float min, float max, bool loop, bool untracked=false); - void clearAll(PtrMap::iterator& it); void remove(MWWorld::Ptr ptr, const std::string &id = ""); bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; void removeCell(const MWWorld::Ptr::CellStore *cell); diff --git a/libs/mangle/sound/.gitignore b/libs/mangle/sound/.gitignore deleted file mode 100644 index 8b13789179..0000000000 --- a/libs/mangle/sound/.gitignore +++ /dev/null @@ -1 +0,0 @@ - diff --git a/libs/mangle/sound/clients/ogre_listener_mover.hpp b/libs/mangle/sound/clients/ogre_listener_mover.hpp deleted file mode 100644 index 74c21db32a..0000000000 --- a/libs/mangle/sound/clients/ogre_listener_mover.hpp +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef MANGLE_SOUND_OGRELISTENERMOVER_H -#define MANGLE_SOUND_OGRELISTENERMOVER_H - -#include -#include -#include "../output.hpp" - -namespace Mangle { -namespace Sound { - - /** This class lets a sound listener (ie. the SoundFactory) track a - given camera in Ogre3D. The position and orientation of the - listener will be updated to match the camera whenever the camera - is moved. - */ - struct OgreListenerMover : Ogre::Camera::Listener - { - OgreListenerMover(Mangle::Sound::SoundFactoryPtr snd) - : soundFact(snd), camera(NULL) - {} - - /// Follow a camera. WARNING: This will OVERRIDE any other - /// MovableObject::Listener you may have attached to the camera. - void followCamera(Ogre::Camera *cam) - { - camera = cam; - camera->addListener(this); - } - - void unfollowCamera() - { - // If the camera is null, this object wasn't following a camera. - // It doesn't make sense to call unfollow - assert(camera != NULL); - - camera->removeListener(this); - camera = NULL; - } - - private: - Mangle::Sound::SoundFactoryPtr soundFact; - Ogre::Camera *camera; - Ogre::Vector3 pos, dir, up; - - /// From Camera::Listener. This is called once per - /// frame. Unfortunately, Ogre doesn't allow us to be notified - /// only when the camera itself has moved, so we must poll every - /// frame. - void cameraPreRenderScene(Ogre::Camera *cam) - { - assert(cam == camera); - - Ogre::Vector3 nPos, nDir, nUp; - - nPos = camera->getRealPosition(); - nDir = camera->getRealDirection(); - nUp = camera->getRealUp(); - - // Don't bother the sound system needlessly - if(nDir != dir || nPos != pos || nUp != up) - { - pos = nPos; - dir = nDir; - up = nUp; - - soundFact->setListenerPos(pos.x, pos.y, pos.z, - dir.x, dir.y, dir.z, - up.x, up.y, up.z); - } - } - - void cameraDestroyed(Ogre::Camera *cam) - { - assert(cam == camera); - camera = NULL; - } - }; -}} -#endif diff --git a/libs/mangle/sound/clients/ogre_output_updater.hpp b/libs/mangle/sound/clients/ogre_output_updater.hpp deleted file mode 100644 index b73168c759..0000000000 --- a/libs/mangle/sound/clients/ogre_output_updater.hpp +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef MANGLE_SOUND_OGREUPDATER_H -#define MANGLE_SOUND_OGREUPDATER_H - -/* - This Ogre FrameListener calls update on a SoundFactory - */ - -#include -#include "../output.hpp" -#include - -namespace Mangle { -namespace Sound { - - struct OgreOutputUpdater : Ogre::FrameListener - { - Mangle::Sound::SoundFactoryPtr driver; - - OgreOutputUpdater(Mangle::Sound::SoundFactoryPtr drv) - : driver(drv) - { assert(drv->needsUpdate); } - - bool frameStarted(const Ogre::FrameEvent &evt) - { - driver->update(); - return true; - } - }; -}} - -#endif diff --git a/libs/mangle/sound/filters/input_filter.hpp b/libs/mangle/sound/filters/input_filter.hpp deleted file mode 100644 index 00ee187660..0000000000 --- a/libs/mangle/sound/filters/input_filter.hpp +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef MANGLE_INPUT_FILTER_H -#define MANGLE_INPUT_FILTER_H - -#include "../output.hpp" - -#include - -namespace Mangle { -namespace Sound { - -/** - @brief This filter class adds file loading capabilities to a - Sound::SoundFactory class, by associating a SampleSourceLoader with - it. - - The class takes an existing SoundFactory able to load streams, and - associates a SampleSourceLoader with it. The combined class is able - to load files directly. */ -class InputFilter : public SoundFactory -{ - protected: - SoundFactoryPtr snd; - SampleSourceLoaderPtr inp; - - public: - /// Empty constructor - InputFilter() {} - - /// Assign an input manager and a sound manager to this object - InputFilter(SoundFactoryPtr _snd, SampleSourceLoaderPtr _inp) - { set(_snd, _inp); } - - /// Assign an input manager and a sound manager to this object - void set(SoundFactoryPtr _snd, SampleSourceLoaderPtr _inp) - { - inp = _inp; - snd = _snd; - - // Set capabilities - needsUpdate = snd->needsUpdate; - has3D = snd->has3D; - canLoadStream = inp->canLoadStream; - - // Both these should be true, or the use of this class is pretty - // pointless - canLoadSource = snd->canLoadSource; - canLoadFile = inp->canLoadFile; - assert(canLoadSource && canLoadFile); - } - - virtual SoundPtr load(const std::string &file) - { return loadRaw(inp->load(file)); } - - virtual SoundPtr load(Stream::StreamPtr input) - { return loadRaw(inp->load(input)); } - - virtual SoundPtr loadRaw(SampleSourcePtr input) - { return snd->loadRaw(input); } - - virtual void update() { snd->update(); } - virtual void setListenerPos(float x, float y, float z, - float fx, float fy, float fz, - float ux, float uy, float uz) - { snd->setListenerPos(x,y,z,fx,fy,fz,ux,uy,uz); } -}; - -}} -#endif diff --git a/libs/mangle/sound/filters/openal_audiere.hpp b/libs/mangle/sound/filters/openal_audiere.hpp deleted file mode 100644 index 5b9b518249..0000000000 --- a/libs/mangle/sound/filters/openal_audiere.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef MANGLE_AUDIERE_OPENAL_H -#define MANGLE_AUDIERE_OPENAL_H - -#include "input_filter.hpp" -#include "../sources/audiere_source.hpp" -#include "../outputs/openal_out.hpp" - -namespace Mangle { -namespace Sound { - -/// A InputFilter that adds audiere decoding to OpenAL. Audiere has -/// it's own output, but OpenAL sports 3D and other advanced features. -class OpenAL_Audiere_Factory : public InputFilter -{ - public: - OpenAL_Audiere_Factory() - { - set(SoundFactoryPtr(new OpenAL_Factory), - SampleSourceLoaderPtr(new AudiereLoader)); - } -}; - -}} -#endif diff --git a/libs/mangle/sound/filters/openal_ffmpeg.hpp b/libs/mangle/sound/filters/openal_ffmpeg.hpp deleted file mode 100644 index 42c76af0cd..0000000000 --- a/libs/mangle/sound/filters/openal_ffmpeg.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef MANGLE_FFMPEG_OPENAL_H -#define MANGLE_FFMPEG_OPENAL_H - -#include "input_filter.hpp" -#include "../sources/ffmpeg_source.hpp" -#include "../outputs/openal_out.hpp" - -namespace Mangle { -namespace Sound { - -/// A InputFilter that adds ffmpeg decoding to OpenAL. -class OpenAL_FFMpeg_Factory : public InputFilter -{ - public: - OpenAL_FFMpeg_Factory() - { - set(SoundFactoryPtr(new OpenAL_Factory), - SampleSourceLoaderPtr(new FFMpegLoader)); - } -}; - -}} -#endif diff --git a/libs/mangle/sound/filters/openal_mpg123.hpp b/libs/mangle/sound/filters/openal_mpg123.hpp deleted file mode 100644 index bfd926c0bb..0000000000 --- a/libs/mangle/sound/filters/openal_mpg123.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef MANGLE_MPG123_OPENAL_H -#define MANGLE_MPG123_OPENAL_H - -#include "input_filter.hpp" -#include "../sources/mpg123_source.hpp" -#include "../outputs/openal_out.hpp" - -namespace Mangle { -namespace Sound { - -/// A InputFilter that adds mpg123 decoding to OpenAL. Only supports -/// MP3 files. -class OpenAL_Mpg123_Factory : public InputFilter -{ - public: - OpenAL_Mpg123_Factory() - { - set(SoundFactoryPtr(new OpenAL_Factory), - SampleSourceLoaderPtr(new Mpg123Loader)); - } -}; - -}} -#endif diff --git a/libs/mangle/sound/filters/openal_sndfile.hpp b/libs/mangle/sound/filters/openal_sndfile.hpp deleted file mode 100644 index fd7e780259..0000000000 --- a/libs/mangle/sound/filters/openal_sndfile.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef MANGLE_SNDFILE_OPENAL_H -#define MANGLE_SNDFILE_OPENAL_H - -#include "input_filter.hpp" -#include "../sources/libsndfile.hpp" -#include "../outputs/openal_out.hpp" - -namespace Mangle { -namespace Sound { - -/// A InputFilter that adds libsnd decoding to OpenAL. libsndfile -/// supports most formats except MP3. -class OpenAL_SndFile_Factory : public InputFilter -{ - public: - OpenAL_SndFile_Factory() - { - set(SoundFactoryPtr(new OpenAL_Factory), - SampleSourceLoaderPtr(new SndFileLoader)); - } -}; - -}} -#endif diff --git a/libs/mangle/sound/filters/openal_sndfile_mpg123.hpp b/libs/mangle/sound/filters/openal_sndfile_mpg123.hpp deleted file mode 100644 index 6e5db4d0e1..0000000000 --- a/libs/mangle/sound/filters/openal_sndfile_mpg123.hpp +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef MANGLE_SNDFILE_MPG123_OPENAL_H -#define MANGLE_SNDFILE_MPG123_OPENAL_H - -#include "input_filter.hpp" -#include "source_splicer.hpp" -#include "../sources/mpg123_source.hpp" -#include "../sources/libsndfile.hpp" -#include "../outputs/openal_out.hpp" - -namespace Mangle { -namespace Sound { - -/// A InputFilter that uses OpenAL for output, and mpg123 (for MP3) + -/// libsndfile (for everything else) to decode files. Can only load -/// from the file system, and uses the file name to differentiate -/// between mp3 and non-mp3 types. -class OpenAL_SndFile_Mpg123_Factory : public InputFilter -{ - public: - OpenAL_SndFile_Mpg123_Factory() - { - SourceSplicer *splice = new SourceSplicer; - - splice->add("mp3", SampleSourceLoaderPtr(new Mpg123Loader)); - splice->setDefault(SampleSourceLoaderPtr(new SndFileLoader)); - - set(SoundFactoryPtr(new OpenAL_Factory), - SampleSourceLoaderPtr(splice)); - } -}; - -}} -#endif diff --git a/libs/mangle/sound/filters/openal_various.hpp b/libs/mangle/sound/filters/openal_various.hpp deleted file mode 100644 index 945b3dabda..0000000000 --- a/libs/mangle/sound/filters/openal_various.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef MANGLE_VARIOUS_OPENAL_H -#define MANGLE_VARIOUS_OPENAL_H - -#include "input_filter.hpp" -#include "source_splicer.hpp" -#include "../sources/mpg123_source.hpp" -#include "../sources/wav_source.hpp" -#include "../outputs/openal_out.hpp" - -namespace Mangle { -namespace Sound { - -/** A InputFilter that uses OpenAL for output, and load input from - various individual sources, depending on file extension. Currently - supports: - - MP3: mpg123 - WAV: custom wav loader (PCM only) - - This could be an alternative to using eg. 3rd party decoder - libraries like libsndfile. - */ -class OpenAL_Various_Factory : public InputFilter -{ - public: - OpenAL_Various_Factory() - { - SourceSplicer *splice = new SourceSplicer; - - splice->add("mp3", SampleSourceLoaderPtr(new Mpg123Loader)); - splice->add("wav", SampleSourceLoaderPtr(new WavLoader)); - - set(SoundFactoryPtr(new OpenAL_Factory), - SampleSourceLoaderPtr(splice)); - } -}; - -}} -#endif diff --git a/libs/mangle/sound/filters/pure_filter.hpp b/libs/mangle/sound/filters/pure_filter.hpp deleted file mode 100644 index fc5e625744..0000000000 --- a/libs/mangle/sound/filters/pure_filter.hpp +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef MANGLE_SOUND_OUTPUT_PUREFILTER_H -#define MANGLE_SOUND_OUTPUT_PUREFILTER_H - -#include "../output.hpp" - -namespace Mangle -{ - namespace Sound - { - // For use in writing other filters - class SoundFilter : public Sound - { - protected: - SoundPtr client; - - public: - SoundFilter(SoundPtr c) : client(c) {} - void play() { client->play(); } - void stop() { client->stop(); } - void pause() { client->pause(); } - bool isPlaying() const { return client->isPlaying(); } - void setVolume(float f) { client->setVolume(f); } - void setPan(float f) { client->setPan(f); } - void setPos(float x, float y, float z) - { client->setPos(x,y,z); } - void setPitch(float p) { client->setPitch(p); } - void setRepeat(bool b) { client->setRepeat(b); } - void setRange(float a, float b=0, float c=0) - { client->setRange(a,b,c); } - void setStreaming(bool b) { client->setStreaming(b); } - void setRelative(bool b) { client->setRelative(b); } - - // The clone() function is not implemented here, as you will - // almost certainly want to override it yourself - }; - - class FactoryFilter : public SoundFactory - { - protected: - SoundFactoryPtr client; - - public: - FactoryFilter(SoundFactoryPtr c) : client(c) - { - needsUpdate = client->needsUpdate; - has3D = client->has3D; - canLoadFile = client->canLoadFile; - canLoadStream = client->canLoadStream; - canLoadSource = client->canLoadSource; - } - - SoundPtr loadRaw(SampleSourcePtr input) - { return client->loadRaw(input); } - - SoundPtr load(Stream::StreamPtr input) - { return client->load(input); } - - SoundPtr load(const std::string &file) - { return client->load(file); } - - void update() - { client->update(); } - - void setListenerPos(float x, float y, float z, - float fx, float fy, float fz, - float ux, float uy, float uz) - { - client->setListenerPos(x,y,z,fx,fy,fz,ux,uy,uz); - } - }; - } -} -#endif diff --git a/libs/mangle/sound/filters/source_splicer.hpp b/libs/mangle/sound/filters/source_splicer.hpp deleted file mode 100644 index 9c76230865..0000000000 --- a/libs/mangle/sound/filters/source_splicer.hpp +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef MANGLE_SOUND_SOURCE_SPLICE_H -#define MANGLE_SOUND_SOURCE_SPLICE_H - -#include "../source.hpp" -#include -#include -#include -#include - -namespace Mangle -{ - namespace Sound - { - class SourceSplicer : public SampleSourceLoader - { - struct SourceType - { - std::string type; - SampleSourceLoaderPtr loader; - }; - - typedef std::list TypeList; - TypeList list; - SampleSourceLoaderPtr catchAll; - - static bool isMatch(char a, char b) - { - if(a >= 'A' && a <= 'Z') - a += 'a' - 'A'; - if(b >= 'A' && b <= 'Z') - b += 'a' - 'A'; - return a == b; - } - - public: - SourceSplicer() - { - canLoadStream = false; - canLoadFile = true; - } - - void add(const std::string &type, SampleSourceLoaderPtr fact) - { - SourceType tp; - tp.type = type; - tp.loader = fact; - list.push_back(tp); - } - - void setDefault(SampleSourceLoaderPtr def) - { - catchAll = def; - } - - SampleSourcePtr load(const std::string &file) - { - // Search the list for this file type. - for(TypeList::iterator it = list.begin(); - it != list.end(); it++) - { - const std::string &t = it->type; - - int diff = file.size() - t.size(); - if(diff < 0) continue; - - bool match = true; - for(unsigned i=0; iloader->load(file); - } - // If not found, use the catch-all - if(catchAll) - return catchAll->load(file); - - throw std::runtime_error("No handler for sound file " + file); - } - - SampleSourcePtr load(Stream::StreamPtr input) { assert(0); } - }; - } -} - -#endif diff --git a/libs/mangle/sound/output.hpp b/libs/mangle/sound/output.hpp deleted file mode 100644 index e30bf21e27..0000000000 --- a/libs/mangle/sound/output.hpp +++ /dev/null @@ -1,183 +0,0 @@ -#ifndef MANGLE_SOUND_OUTPUT_H -#define MANGLE_SOUND_OUTPUT_H - -#include -#include - -#include "source.hpp" -#include "../stream/stream.hpp" - -namespace Mangle { -namespace Sound { - -/// Abstract interface for a single playable sound -/** This class represents one sound outlet, which may be played, - stopped, paused and so on. - - Sound instances are created from the SoundFactory class. Sounds - may be connected to a SampleSource or read directly from a file, - and they may support 3d sounds, looping and other features - depending on the capabilities of the backend system. - - To create multiple instances of one sound, it is recommended to - 'clone' an existing instance instead of reloading it from - file. Cloned sounds will often (depending on the back-end) use - less memory due to shared buffers. -*/ -class Sound; -typedef boost::shared_ptr SoundPtr; -typedef boost::weak_ptr WSoundPtr; - -class Sound -{ - public: - /// Play or resume the sound - virtual void play() = 0; - - /// Stop the sound - virtual void stop() = 0; - - /// Pause the sound, may be resumed later - virtual void pause() = 0; - - /// Check if the sound is still playing - virtual bool isPlaying() const = 0; - - /// Set the volume. The parameter must be between 0.0 and 1.0. - virtual void setVolume(float) = 0; - - /// Set left/right pan. -1.0 is left, 0.0 is center and 1.0 is right. - virtual void setPan(float) = 0; - - /// Set pitch (1.0 is normal speed) - virtual void setPitch(float) = 0; - - /// Set range factors for 3D sounds. The meaning of the fields - /// depend on implementation. - virtual void setRange(float a, float b=0.0, float c=0.0) = 0; - - /// Set the position. May not work with all backends. - virtual void setPos(float x, float y, float z) = 0; - - /// Set loop mode - virtual void setRepeat(bool) = 0; - - /// If set to true the sound will not be affected by player movement - virtual void setRelative(bool) = 0; - - /// Set streaming mode. - /** This may be used by implementations to optimize for very large - files. If streaming mode is off (default), most implementations - will load the entire file into memory before starting playback. - */ - virtual void setStreaming(bool) = 0; - - /// Create a new instance of this sound. - /** Playback status is not cloned, only the sound data - itself. Back-ends can use this as a means of sharing data and - saving memory. */ - virtual SoundPtr clone() = 0; - - /// Virtual destructor - virtual ~Sound() {} -}; - -/// Factory interface for creating Sound objects -/** The SoundFactory is the main entry point to a given sound output - system. It is used to create Sound objects, which may be connected - to a sound file or stream, and which may be individually played, - paused, and so on. - - The class also contains a set of public bools which describe the - capabilities the particular system. These should be set by - implementations (base classes) in their respective constructors. - */ -class SoundFactory -{ - public: - /// Virtual destructor - virtual ~SoundFactory() {} - - /** @brief If set to true, you should call update() regularly (every frame - or so) on this sound manager. If false, update() should not be - called. - */ - bool needsUpdate; - - /** @brief true if 3D functions are available. If false, all use of - 3D sounds and calls to setPos / setListenerPos will result in - undefined behavior. - */ - bool has3D; - - /// true if we can load sounds directly from file (containing encoded data) - bool canLoadFile; - - /// If true, we can lound sound files from a Stream (containing encoded data) - bool canLoadStream; - - /// true if we can load sounds from a SampleSource (containing raw data) - bool canLoadSource; - - /** - @brief Load a sound from a sample source. Only valid if - canLoadSource is true. - - This function loads a sound from a given stream as defined by - SampleSource. - - @param input the input source - @param stream true if the file should be streamed. - Implementations may use this for optimizing playback of - large files, but they are not required to. - @return a new Sound object - */ - virtual SoundPtr loadRaw(SampleSourcePtr input) = 0; - - /** - @brief Load a sound file from stream. Only valid if canLoadStream - is true. - - @param input audio file stream - @param stream true if the file should be streamed - @see load(InputSource*,bool) - */ - virtual SoundPtr load(Stream::StreamPtr input) = 0; - - /** - @brief Load a sound directly from file. Only valid if canLoadFile - is true. - - @param file filename - @param stream true if the file should be streamed - @see load(InputSource*,bool) - */ - virtual SoundPtr load(const std::string &file) = 0; - - /// Call this every frame if needsUpdate is true - /** - This should be called regularly (about every frame in a normal - game setting.) Implementions may use this for filling streaming - buffers and similar tasks. Implementations that do not need this - should set needsUpdate to false. - */ - virtual void update() { assert(0); } - - /// Set listener position (coordinates, front and up vectors) - /** - Only valid if has3D is true. - - @param x,y,z listener position - @param fx,fy,fz listener's looking direction - @param ux,uy,uz listener's up direction - */ - virtual void setListenerPos(float x, float y, float z, - float fx, float fy, float fz, - float ux, float uy, float uz) = 0; -}; - -typedef boost::shared_ptr SoundFactoryPtr; - -}} // Namespaces - -#endif diff --git a/libs/mangle/sound/outputs/openal_out.cpp b/libs/mangle/sound/outputs/openal_out.cpp deleted file mode 100644 index 2056b4f602..0000000000 --- a/libs/mangle/sound/outputs/openal_out.cpp +++ /dev/null @@ -1,500 +0,0 @@ -#include "openal_out.hpp" -#include -#include - -#include "../../stream/filters/buffer_stream.hpp" - -#ifdef _WIN32 -#include -#include -#elif defined(__APPLE__) -#include -#include -#else -#include -#include -#endif - -using namespace Mangle::Sound; - -// ---- Helper functions and classes ---- - -// Static buffer used to shuffle sound data from the input into -// OpenAL. The data is only stored temporarily and then immediately -// shuffled off to the library. This is not thread safe, but it works -// fine with multiple sounds in one thread. It could be made thread -// safe simply by using thread local storage. -const size_t BSIZE = 32*1024; -static char tmp_buffer[BSIZE]; - -// Number of buffers used (per sound) for streaming sounds. Each -// buffer is of size BSIZE. Increasing this will make streaming sounds -// more fault tolerant against temporary lapses in call to update(), -// but will also increase memory usage. -// This was changed from 4 to 150 for an estimated 30 seconds tolerance. -// At some point we should replace it with a more multithreading-ish -// solution. -const int STREAM_BUF_NUM = 150; - -static void fail(const std::string &msg) -{ throw std::runtime_error("OpenAL exception: " + msg); } - -/* - Check for AL error. Since we're always calling this with string - literals, and it only makes sense to optimize for the non-error - case, the parameter is const char* rather than std::string. - - This way we don't force the compiler to create a string object each - time we're called (since the string is never used unless there's an - error), although a good compiler might have optimized that away in - any case. - */ -static void checkALError(const char *where) -{ - ALenum err = alGetError(); - if(err != AL_NO_ERROR) - { - std::string msg = where; - - const ALchar* errmsg = alGetString(err); - if(errmsg) - fail("\"" + std::string(alGetString(err)) + "\" while " + msg); - else - fail("non-specified error while " + msg + " (did you forget to initialize OpenAL?)"); - } -} - -static void getALFormat(SampleSourcePtr inp, int &fmt, int &rate) -{ - boost::int32_t rate_, ch, bits; - inp->getInfo(&rate_, &ch, &bits); - rate = rate_; - - fmt = 0; - - if(bits == 8) - { - if(ch == 1) fmt = AL_FORMAT_MONO8; - if(ch == 2) fmt = AL_FORMAT_STEREO8; - if(alIsExtensionPresent("AL_EXT_MCFORMATS")) - { - if(ch == 4) fmt = alGetEnumValue("AL_FORMAT_QUAD8"); - if(ch == 6) fmt = alGetEnumValue("AL_FORMAT_51CHN8"); - } - } - if(bits == 16) - { - if(ch == 1) fmt = AL_FORMAT_MONO16; - if(ch == 2) fmt = AL_FORMAT_STEREO16; - if(ch == 4) fmt = alGetEnumValue("AL_FORMAT_QUAD16"); - if(alIsExtensionPresent("AL_EXT_MCFORMATS")) - { - if(ch == 4) fmt = alGetEnumValue("AL_FORMAT_QUAD16"); - if(ch == 6) fmt = alGetEnumValue("AL_FORMAT_51CHN16"); - } - } - - if(fmt == 0) - fail("Unsupported input format"); -} - -/// OpenAL sound output -class Mangle::Sound::OpenAL_Sound : public Sound -{ - ALuint inst; - - // Buffers. Only the first is used for non-streaming sounds. - ALuint bufferID[STREAM_BUF_NUM]; - - // Number of buffers used - int bufNum; - - // Parameters used for filling buffers - int fmt, rate; - - // Poor mans reference counting. Might improve this later. When - // NULL, the buffer has not been set up yet. - int *refCnt; - - bool streaming; - - // Input stream - SampleSourcePtr input; - - OpenAL_Factory *owner; - bool ownerAlive; - - // Used for streamed sound list - OpenAL_Sound *next, *prev; - - void setupBuffer(); - - // Fill data into the given buffer and queue it, if there is any - // data left to queue. Assumes the buffer is already unqueued, if - // necessary. - void queueBuffer(ALuint buf) - { - // If there is no more data, do nothing - if(!input) return; - if(input->eof()) - { - input.reset(); - return; - } - - // Get some new data - size_t bytes = input->read(tmp_buffer, BSIZE); - if(bytes == 0) - { - input.reset(); - return; - } - - // Move data into the OpenAL buffer - alBufferData(buf, fmt, tmp_buffer, bytes, rate); - // Queue it - alSourceQueueBuffers(inst, 1, &buf); - checkALError("Queueing buffer data"); - } - - public: - /// Read samples from the given input buffer - OpenAL_Sound(SampleSourcePtr input, OpenAL_Factory *fact); - - /// Play an existing buffer, with a given ref counter. Used - /// internally for cloning. - OpenAL_Sound(ALuint buf, int *ref, OpenAL_Factory *fact); - - ~OpenAL_Sound(); - - // Must be called regularly on streamed sounds - void update() - { - if(!streaming) return; - if(!input) return; - - // Get the number of processed buffers - ALint count; - alGetSourcei(inst, AL_BUFFERS_PROCESSED, &count); - checkALError("getting number of unprocessed buffers"); - - for(int i=0; iupdate(); -} - -void OpenAL_Factory::notifyStreaming(OpenAL_Sound *snd) -{ - // Add the sound to the streaming list - streaming.push_back(snd); -} - -void OpenAL_Factory::notifyDelete(OpenAL_Sound *snd) -{ - // Remove the sound from the stream list - streaming.remove(snd); -} - -OpenAL_Factory::~OpenAL_Factory() -{ - // Notify remaining streamed sounds that we're dying - StreamList::iterator it = streaming.begin(); - for(;it != streaming.end(); it++) - (*it)->notifyOwnerDeath(); - - // Deinitialize sound system - if(didSetup) - { - alcMakeContextCurrent(NULL); - if(context) alcDestroyContext((ALCcontext*)context); - if(device) alcCloseDevice((ALCdevice*)device); - } -} - -// ---- OpenAL_Sound ---- - -void OpenAL_Sound::play() -{ - setupBuffer(); - alSourcePlay(inst); - checkALError("starting playback"); -} - -void OpenAL_Sound::stop() -{ - alSourceStop(inst); - checkALError("stopping"); -} - -void OpenAL_Sound::pause() -{ - alSourcePause(inst); - checkALError("pausing"); -} - -bool OpenAL_Sound::isPlaying() const -{ - ALint state; - alGetSourcei(inst, AL_SOURCE_STATE, &state); - - return state == AL_PLAYING; -} - -void OpenAL_Sound::setVolume(float volume) -{ - if(volume > 1.0) volume = 1.0; - if(volume < 0.0) volume = 0.0; - alSourcef(inst, AL_GAIN, volume); - checkALError("setting volume"); -} - -void OpenAL_Sound::setRange(float a, float b, float) -{ - alSourcef(inst, AL_REFERENCE_DISTANCE, a); - alSourcef(inst, AL_MAX_DISTANCE, b); - checkALError("setting sound ranges"); -} - -void OpenAL_Sound::setPos(float x, float y, float z) -{ - alSource3f(inst, AL_POSITION, x, y, z); - checkALError("setting position"); -} - -void OpenAL_Sound::setPitch(float pitch) -{ - alSourcef(inst, AL_PITCH, pitch); - checkALError("setting pitch"); -} - -void OpenAL_Sound::setRepeat(bool rep) -{ - alSourcei(inst, AL_LOOPING, rep?AL_TRUE:AL_FALSE); -} - -void OpenAL_Sound::setRelative(bool rel) -{ - alSourcei(inst, AL_SOURCE_RELATIVE, rel?AL_TRUE:AL_FALSE); - checkALError("setting relative"); -} - -SoundPtr OpenAL_Sound::clone() -{ - setupBuffer(); - assert(!streaming && "cloning streamed sounds not supported"); - return SoundPtr(new OpenAL_Sound(bufferID[0], refCnt, owner)); -} - -// Constructor used for cloned sounds -OpenAL_Sound::OpenAL_Sound(ALuint buf, int *ref, OpenAL_Factory *fact) - : refCnt(ref), streaming(false), owner(fact), ownerAlive(false) -{ - // Increase the reference count - assert(ref != NULL); - (*refCnt)++; - - // Set up buffer - bufferID[0] = buf; - bufNum = 1; - - // Create a source - alGenSources(1, &inst); - checkALError("creating instance (clone)"); - alSourcei(inst, AL_BUFFER, bufferID[0]); - checkALError("assigning buffer (clone)"); -} - -// Constructor used for original (non-cloned) sounds -OpenAL_Sound::OpenAL_Sound(SampleSourcePtr _input, OpenAL_Factory *fact) - : refCnt(NULL), streaming(false), input(_input), owner(fact), ownerAlive(false) -{ - // Create a source - alGenSources(1, &inst); - checkALError("creating source"); - - // By default, the sound starts out in a buffer-less mode. We don't - // create a buffer until the sound is played. This gives the user - // the chance to call setStreaming(true) first. -} - -void OpenAL_Sound::setupBuffer() -{ - if(refCnt != NULL) return; - - assert(input); - - // Get the format - getALFormat(input, fmt, rate); - - // Create a cheap reference counter for the buffer - refCnt = new int; - *refCnt = 1; - - if(streaming) bufNum = STREAM_BUF_NUM; - else bufNum = 1; - - // Set up the OpenAL buffer(s) - alGenBuffers(bufNum, bufferID); - checkALError("generating buffer(s)"); - assert(bufferID[0] != 0); - - // STREAMING. - if(streaming) - { - // Just queue all the buffers with data and exit. queueBuffer() - // will work correctly also in the case where there is not - // enough data to fill all the buffers. - for(int i=0; inotifyStreaming(this); - ownerAlive = true; - - return; - } - - // NON-STREAMING. We have to load all the data and shove it into the - // buffer. - - // Does the stream support pointer operations? - if(input->hasPtr) - { - // If so, we can read the data directly from the stream - alBufferData(bufferID[0], fmt, input->getPtr(), input->size(), rate); - } - else - { - // Read the entire stream into a temporary buffer first - Mangle::Stream::BufferStream buf(input, 128*1024); - - // Then copy that into OpenAL - alBufferData(bufferID[0], fmt, buf.getPtr(), buf.size(), rate); - } - checkALError("loading sound data"); - - // We're done with the input stream, release the pointer - input.reset(); - - alSourcei(inst, AL_BUFFER, bufferID[0]); - checkALError("assigning buffer"); -} - -OpenAL_Sound::~OpenAL_Sound() -{ - // Stop - alSourceStop(inst); - - // Return sound - alDeleteSources(1, &inst); - - // Notify the factory that we quit. You will hear from our union - // rep. The bool check is to handle cases where the manager goes out - // of scope before the sounds do. In that case, don't try to contact - // the factory. - if(ownerAlive) - owner->notifyDelete(this); - - // Decrease the reference counter - if((-- (*refCnt)) == 0) - { - // We're the last owner. Delete the buffer(s) and the counter - // itself. - alDeleteBuffers(bufNum, bufferID); - checkALError("deleting buffer"); - delete refCnt; - } -} diff --git a/libs/mangle/sound/outputs/openal_out.hpp b/libs/mangle/sound/outputs/openal_out.hpp deleted file mode 100644 index 44d03ecf81..0000000000 --- a/libs/mangle/sound/outputs/openal_out.hpp +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef MANGLE_SOUND_OPENAL_OUT_H -#define MANGLE_SOUND_OPENAL_OUT_H - -#include "../output.hpp" -#include - -namespace Mangle { -namespace Sound { - -class OpenAL_Sound; - -class OpenAL_Factory : public SoundFactory -{ - void *device; - void *context; - bool didSetup; - - // List of streaming sounds that need to be updated every frame. - typedef std::list StreamList; - StreamList streaming; - - friend class OpenAL_Sound; - void notifyStreaming(OpenAL_Sound*); - void notifyDelete(OpenAL_Sound*); - - public: - /// Initialize object. Pass true (default) if you want the - /// constructor to set up the current ALCdevice and ALCcontext for - /// you. - OpenAL_Factory(bool doSetup = true); - ~OpenAL_Factory(); - - SoundPtr load(const std::string &file) { assert(0); return SoundPtr(); } - SoundPtr load(Stream::StreamPtr input) { assert(0); return SoundPtr(); } - SoundPtr loadRaw(SampleSourcePtr input); - - void update(); - void setListenerPos(float x, float y, float z, - float fx, float fy, float fz, - float ux, float uy, float uz); -}; - -}} // namespaces -#endif diff --git a/libs/mangle/sound/source.hpp b/libs/mangle/sound/source.hpp deleted file mode 100644 index fbe7cf958b..0000000000 --- a/libs/mangle/sound/source.hpp +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef MANGLE_SOUND_SOURCE_H -#define MANGLE_SOUND_SOURCE_H - -#include -#include -#include - -#include "../stream/stream.hpp" - -namespace Mangle { -namespace Sound { - -typedef boost::int32_t int32_t; - -/// A stream containing raw sound data and information about the format -class SampleSource : public Stream::Stream -{ - protected: - bool isEof; - - public: - SampleSource() : isEof(false) {} - - /// Get the sample rate, number of channels, and bits per - /// sample. NULL parameters are ignored. - virtual void getInfo(int32_t *rate, int32_t *channels, int32_t *bits) = 0; - - bool eof() const { return isEof; } - - // Disabled functions by default. You can still override them in - // subclasses. - void seek(size_t pos) { assert(0); } - size_t tell() const { assert(0); return 0; } - size_t size() const { assert(0); return 0; } -}; - -typedef boost::shared_ptr SampleSourcePtr; - -/// A factory interface for loading SampleSources from file or stream -class SampleSourceLoader -{ - public: - /// If true, the stream version of load() works - bool canLoadStream; - - /// If true, the file version of load() works - bool canLoadFile; - - /// Load a sound input source from file (if canLoadFile is true) - virtual SampleSourcePtr load(const std::string &file) = 0; - - /// Load a sound input source from stream (if canLoadStream is true) - virtual SampleSourcePtr load(Stream::StreamPtr input) = 0; - - /// Virtual destructor - virtual ~SampleSourceLoader() {} -}; - -typedef boost::shared_ptr SampleSourceLoaderPtr; - -}} // namespaces -#endif diff --git a/libs/mangle/sound/sources/audiere_source.cpp b/libs/mangle/sound/sources/audiere_source.cpp deleted file mode 100644 index faaa3c8c5b..0000000000 --- a/libs/mangle/sound/sources/audiere_source.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "audiere_source.hpp" - -#include "../../stream/clients/audiere_file.hpp" - -#include - -using namespace Mangle::Stream; - -static void fail(const std::string &msg) -{ throw std::runtime_error("Audiere exception: " + msg); } - -using namespace audiere; -using namespace Mangle::Sound; - -// --- SampleSource --- - -void AudiereSource::getInfo(Mangle::Sound::int32_t *rate, - Mangle::Sound::int32_t *channels, Mangle::Sound::int32_t *bits) -{ - SampleFormat fmt; - int channels_, rate_; - sample->getFormat(channels_, rate_, fmt); - *channels = channels_; - *rate = rate_; - if(bits) - { - if(fmt == SF_U8) - *bits = 8; - else if(fmt == SF_S16) - *bits = 16; - else assert(0); - } -} - -// --- Constructors --- - -AudiereSource::AudiereSource(const std::string &file) -{ - sample = OpenSampleSource(file.c_str()); - - if(!sample) - fail("Couldn't load file " + file); - - doSetup(); -} - -AudiereSource::AudiereSource(StreamPtr input) -{ - // Use our Stream::AudiereFile implementation to convert a Mangle - // 'Stream' to an Audiere 'File' - sample = OpenSampleSource(new AudiereFile(input)); - if(!sample) - fail("Couldn't load stream"); - - doSetup(); -} - -AudiereSource::AudiereSource(audiere::SampleSourcePtr src) - : sample(src) -{ assert(sample); doSetup(); } - -// Common function called from all constructors -void AudiereSource::doSetup() -{ - assert(sample); - - SampleFormat fmt; - int channels, rate; - sample->getFormat(channels, rate, fmt); - - // Calculate the size of one frame, and pass it to SampleReader. - setup(GetSampleSize(fmt) * channels); - - isSeekable = sample->isSeekable(); - hasPosition = true; - hasSize = true; -} diff --git a/libs/mangle/sound/sources/audiere_source.hpp b/libs/mangle/sound/sources/audiere_source.hpp deleted file mode 100644 index d797c55c86..0000000000 --- a/libs/mangle/sound/sources/audiere_source.hpp +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef MANGLE_SOUND_AUDIERE_SOURCE_H -#define MANGLE_SOUND_AUDIERE_SOURCE_H - -#include "sample_reader.hpp" - -// audiere.h from 1.9.4 (latest) release uses -// cstring routines like strchr() and strlen() without -// including cstring itself. -#include -#include - -namespace Mangle { -namespace Sound { - -/// A sample source that decodes files using Audiere -class AudiereSource : public SampleReader -{ - audiere::SampleSourcePtr sample; - - size_t readSamples(void *data, size_t length) - { return sample->read(length, data); } - - void doSetup(); - - public: - /// Decode the given sound file - AudiereSource(const std::string &file); - - /// Decode the given sound stream - AudiereSource(Mangle::Stream::StreamPtr src); - - /// Read directly from an existing audiere::SampleSource - AudiereSource(audiere::SampleSourcePtr src); - - void getInfo(int32_t *rate, int32_t *channels, int32_t *bits); - - void seek(size_t pos) { sample->setPosition(pos/frameSize); } - size_t tell() const { return sample->getPosition()*frameSize; } - size_t size() const { return sample->getLength()*frameSize; } -}; - -#include "loadertemplate.hpp" - -/// A factory that loads AudiereSources from file and stream -typedef SSL_Template AudiereLoader; - -}} // Namespace -#endif diff --git a/libs/mangle/sound/sources/ffmpeg_source.cpp b/libs/mangle/sound/sources/ffmpeg_source.cpp deleted file mode 100644 index 6349be6913..0000000000 --- a/libs/mangle/sound/sources/ffmpeg_source.cpp +++ /dev/null @@ -1,189 +0,0 @@ -#include "ffmpeg_source.hpp" - -#include - -using namespace Mangle::Sound; - -// Static output buffer. Not thread safe, but supports multiple -// streams operated from the same thread. -static uint8_t outBuf[AVCODEC_MAX_AUDIO_FRAME_SIZE]; - -static void fail(const std::string &msg) -{ throw std::runtime_error("FFMpeg exception: " + msg); } - -// --- Loader --- - -static bool init = false; - -FFMpegLoader::FFMpegLoader(bool setup) -{ - if(setup && !init) - { - av_register_all(); - av_log_set_level(AV_LOG_ERROR); - init = true; - } -} - -// --- Source --- - -FFMpegSource::FFMpegSource(const std::string &file) -{ - std::string msg; - AVCodec *codec; - - if(av_open_input_file(&FmtCtx, file.c_str(), NULL, 0, NULL) != 0) - fail("Error loading audio file " + file); - - if(av_find_stream_info(FmtCtx) < 0) - { - msg = "Error in file stream " + file; - goto err; - } - - // Pick the first audio stream, if any - for(StreamNum = 0; StreamNum < FmtCtx->nb_streams; StreamNum++) - { - // Pick the first audio stream - if(FmtCtx->streams[StreamNum]->codec->codec_type == CODEC_TYPE_AUDIO) - break; - } - - if(StreamNum == FmtCtx->nb_streams) - fail("File '" + file + "' didn't contain any audio streams"); - - // Open the decoder - CodecCtx = FmtCtx->streams[StreamNum]->codec; - codec = avcodec_find_decoder(CodecCtx->codec_id); - - if(!codec || avcodec_open(CodecCtx, codec) < 0) - { - msg = "Error loading '" + file + "': "; - if(codec) - msg += "coded error"; - else - msg += "no codec found"; - goto err; - } - - // No errors, we're done - return; - - // Handle errors - err: - av_close_input_file(FmtCtx); - fail(msg); -} - -FFMpegSource::~FFMpegSource() -{ - avcodec_close(CodecCtx); - av_close_input_file(FmtCtx); -} - -void FFMpegSource::getInfo(int32_t *rate, int32_t *channels, int32_t *bits) -{ - if(rate) *rate = CodecCtx->sample_rate; - if(channels) *channels = CodecCtx->channels; - if(bits) *bits = 16; -} - -size_t FFMpegSource::read(void *data, size_t length) -{ - if(isEof) return 0; - - size_t left = length; - uint8_t *outPtr = (uint8_t*)data; - - // First, copy over any stored data we might be sitting on - { - size_t s = storage.size(); - size_t copy = s; - if(s) - { - // Make sure there's room - if(copy > left) - copy = left; - - // Copy - memcpy(outPtr, &storage[0], copy); - outPtr += copy; - left -= copy; - - // Is there anything left in the storage? - assert(s>= copy); - s -= copy; - if(s) - { - assert(left == 0); - - // Move it to the start and resize - memmove(&storage[0], &storage[copy], s); - storage.resize(s); - } - } - } - - // Next, get more input data from stream, and decode it - while(left) - { - AVPacket packet; - - // Get the next packet, if any - if(av_read_frame(FmtCtx, &packet) < 0) - break; - - // We only allow one stream per file at the moment - assert((int)StreamNum == packet.stream_index); - - // Decode the packet - int len = AVCODEC_MAX_AUDIO_FRAME_SIZE; - int tmp = avcodec_decode_audio2(CodecCtx, (int16_t*)outBuf, - &len, packet.data, packet.size); - assert(tmp < 0 || tmp == packet.size); - - // We don't need the input packet any longer - av_free_packet(&packet); - - if(tmp < 0) - fail("Error decoding audio stream"); - - // Copy whatever data we got, and advance the pointer - if(len > 0) - { - // copy = how many bytes do we copy now - size_t copy = len; - if(copy > left) - copy = left; - - // len = how many bytes are left uncopied - len -= copy; - - // copy data - memcpy(outPtr, outBuf, copy); - - // left = how much space is left in the caller output - // buffer. This loop repeats as long left is > 0 - left -= copy; - outPtr += copy; - assert(left >= 0); - - if(len > 0) - { - // There were uncopied bytes. Store them for later. - assert(left == 0); - storage.resize(len); - memcpy(&storage[0], outBuf, len); - } - } - } - - // End of loop. Return the number of bytes copied. - assert(left <= length); - - // If we're returning less than asked for, then we're done - if(left > 0) - isEof = true; - - return length - left; -} diff --git a/libs/mangle/sound/sources/ffmpeg_source.hpp b/libs/mangle/sound/sources/ffmpeg_source.hpp deleted file mode 100644 index d422b98090..0000000000 --- a/libs/mangle/sound/sources/ffmpeg_source.hpp +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef MANGLE_SOUND_FFMPEG_H -#define MANGLE_SOUND_FFMPEG_H - -#include "../source.hpp" -#include -#include - -extern "C" -{ -#include -#include -} - -namespace Mangle { -namespace Sound { - -class FFMpegSource : public SampleSource -{ - AVFormatContext *FmtCtx; - AVCodecContext *CodecCtx; - unsigned int StreamNum; - - std::vector storage; - - public: - /// Decode the given sound file - FFMpegSource(const std::string &file); - - /// Decode the given sound stream (not supported by FFmpeg) - FFMpegSource(Mangle::Stream::StreamPtr src) { assert(0); } - - ~FFMpegSource(); - - // Overrides - void getInfo(int32_t *rate, int32_t *channels, int32_t *bits); - size_t read(void *data, size_t length); -}; - -#include "loadertemplate.hpp" - -/// A factory that loads FFMpegSources from file -class FFMpegLoader : public SSL_Template -{ - public: - - /// Sets up the libavcodec library. If you want to do your own - /// setup, send a setup=false parameter. - FFMpegLoader(bool setup=true); -}; - -}} // namespaces -#endif diff --git a/libs/mangle/sound/sources/libsndfile.cpp b/libs/mangle/sound/sources/libsndfile.cpp deleted file mode 100644 index b69a2d4368..0000000000 --- a/libs/mangle/sound/sources/libsndfile.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "libsndfile.hpp" - -#include -#include - -using namespace Mangle::Stream; - -static void fail(const std::string &msg) -{ throw std::runtime_error("Mangle::libsndfile: " + msg); } - -using namespace Mangle::Sound; - -void SndFileSource::getInfo(int32_t *_rate, int32_t *_channels, int32_t *_bits) -{ - *_rate = rate; - *_channels = channels; - *_bits = bits; -} - -size_t SndFileSource::readSamples(void *data, size_t length) -{ - // readf_* reads entire frames, including channels - return sf_readf_short((SNDFILE*)handle, (short*)data, length); -} - -SndFileSource::SndFileSource(const std::string &file) -{ - SF_INFO info; - info.format = 0; - handle = sf_open(file.c_str(), SFM_READ, &info); - if(handle == NULL) - fail("Failed to open " + file); - - // I THINK that using sf_read_short forces the library to convert to - // 16 bits no matter what, but the libsndfile docs aren't exactly - // very clear on this point. - channels = info.channels; - rate = info.samplerate; - bits = 16; - - // 16 bits per sample times number of channels - setup(2*channels); -} - -SndFileSource::~SndFileSource() -{ - sf_close((SNDFILE*)handle); -} diff --git a/libs/mangle/sound/sources/libsndfile.hpp b/libs/mangle/sound/sources/libsndfile.hpp deleted file mode 100644 index 7286cf0fe4..0000000000 --- a/libs/mangle/sound/sources/libsndfile.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef MANGLE_SOUND_SNDFILE_SOURCE_H -#define MANGLE_SOUND_SNDFILE_SOURCE_H - -#include "sample_reader.hpp" - -namespace Mangle { -namespace Sound { - -/// A sample source that decodes files using libsndfile. Supports most -/// formats except mp3. -class SndFileSource : public SampleReader -{ - void *handle; - int channels, rate, bits; - - size_t readSamples(void *data, size_t length); - - public: - /// Decode the given sound file - SndFileSource(const std::string &file); - - /// Decode the given sound stream (not supported) - SndFileSource(Mangle::Stream::StreamPtr src) { assert(0); } - - ~SndFileSource(); - - void getInfo(int32_t *rate, int32_t *channels, int32_t *bits); -}; - -#include "loadertemplate.hpp" - -/// A factory that loads SndFileSources from file and stream -typedef SSL_Template SndFileLoader; - -}} // Namespace -#endif diff --git a/libs/mangle/sound/sources/loadertemplate.hpp b/libs/mangle/sound/sources/loadertemplate.hpp deleted file mode 100644 index a27a77d106..0000000000 --- a/libs/mangle/sound/sources/loadertemplate.hpp +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SSL_TEMPL_H -#define SSL_TEMPL_H - -template -class SSL_Template : public SampleSourceLoader -{ - public: - - SSL_Template() - { - canLoadStream = stream; - canLoadFile = file; - } - - SampleSourcePtr load(const std::string &filename) - { - assert(canLoadFile); - return SampleSourcePtr(new SourceT(filename)); - } - - SampleSourcePtr load(Stream::StreamPtr input) - { - assert(canLoadStream); - return SampleSourcePtr(new SourceT(input)); - } -}; - -#endif diff --git a/libs/mangle/sound/sources/mpg123_source.cpp b/libs/mangle/sound/sources/mpg123_source.cpp deleted file mode 100644 index 24d6ecce1c..0000000000 --- a/libs/mangle/sound/sources/mpg123_source.cpp +++ /dev/null @@ -1,115 +0,0 @@ -#include "mpg123_source.hpp" - -#include - -#include - -using namespace Mangle::Stream; - -/* - TODOs: - - - mpg123 impressively enough supports custom stream reading. Which - means we could (and SHOULD!) support reading from Mangle::Streams - as well. But I'll save it til I need it. - - An alternative way to do this is through feeding (which they also - support), but that's more messy. - - - the library also supports output, via various other sources, - including ALSA, OSS, PortAudio, PulseAudio and SDL. Using this - library as a pure output library (if that is possible) would be a - nice shortcut over using those libraries - OTOH it's another - dependency. - - - we could implement seek(), tell() and size(), but they aren't - really necessary. Furthermore, since the returned size is only a - guess, it is not safe to rely on it. - */ - -static void fail(const std::string &msg) -{ throw std::runtime_error("Mangle::Mpg123 exception: " + msg); } - -static void checkError(int err, void *mh = NULL) -{ - if(err != MPG123_OK) - { - std::string msg; - if(mh) msg = mpg123_strerror((mpg123_handle*)mh); - else msg = mpg123_plain_strerror(err); - fail(msg); - } -} - -using namespace Mangle::Sound; - -void Mpg123Source::getInfo(int32_t *pRate, int32_t *pChannels, int32_t *pBits) -{ - // Use the values we found in the constructor - *pRate = rate; - *pChannels = channels; - *pBits = bits; -} - -size_t Mpg123Source::read(void *data, size_t length) -{ - size_t done; - // This is extraordinarily nice. I like this library. - int err = mpg123_read((mpg123_handle*)mh, (unsigned char*)data, length, &done); - assert(done <= length); - if(err == MPG123_DONE) - isEof = true; - else - checkError(err, mh); - return done; -} - -Mpg123Loader::Mpg123Loader(bool setup) -{ - // Do as we're told - if(setup) - { - int err = mpg123_init(); - checkError(err); - } - didSetup = setup; -} - -Mpg123Loader::~Mpg123Loader() -{ - // Deinitialize the library on exit - if(didSetup) - mpg123_exit(); -} - -Mpg123Source::Mpg123Source(const std::string &file) -{ - int err; - - // Create a new handle - mh = mpg123_new(NULL, &err); - if(mh == NULL) - checkError(err, mh); - - mpg123_handle *mhh = (mpg123_handle*)mh; - - // Open the file (hack around constness) - err = mpg123_open(mhh, (char*)file.c_str()); - checkError(err, mh); - - // Get the format - int encoding; - err = mpg123_getformat(mhh, &rate, &channels, &encoding); - checkError(err, mh); - if(encoding != MPG123_ENC_SIGNED_16) - fail("Unsupported encoding in " + file); - - // This is the only bit size we support. - bits = 16; -} - -Mpg123Source::~Mpg123Source() -{ - mpg123_close((mpg123_handle*)mh); - mpg123_delete((mpg123_handle*)mh); -} diff --git a/libs/mangle/sound/sources/mpg123_source.hpp b/libs/mangle/sound/sources/mpg123_source.hpp deleted file mode 100644 index 1ac16b5306..0000000000 --- a/libs/mangle/sound/sources/mpg123_source.hpp +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef MANGLE_SOUND_MPG123_SOURCE_H -#define MANGLE_SOUND_MPG123_SOURCE_H - -#include "../source.hpp" -#include - -namespace Mangle { -namespace Sound { - -/// A sample source that decodes files using libmpg123. Only supports -/// MP3 files. -class Mpg123Source : public SampleSource -{ - void *mh; - long int rate; - int channels, bits; - - public: - /// Decode the given sound file - Mpg123Source(const std::string &file); - - /// Needed by SSL_Template but not yet supported - Mpg123Source(Mangle::Stream::StreamPtr data) - { assert(0); } - - ~Mpg123Source(); - - void getInfo(int32_t *rate, int32_t *channels, int32_t *bits); - size_t read(void *data, size_t length); -}; - -#include "loadertemplate.hpp" - -/// A factory that loads Mpg123Sources from file and stream -struct Mpg123Loader : SSL_Template -{ - /** Sets up libmpg123 for you, and closes it on destruction. If you - want to do this yourself, send setup=false. - */ - Mpg123Loader(bool setup=true); - ~Mpg123Loader(); -private: - bool didSetup; -}; - -}} // Namespace -#endif diff --git a/libs/mangle/sound/sources/sample_reader.cpp b/libs/mangle/sound/sources/sample_reader.cpp deleted file mode 100644 index c30de654a5..0000000000 --- a/libs/mangle/sound/sources/sample_reader.cpp +++ /dev/null @@ -1,99 +0,0 @@ -#include "sample_reader.hpp" - -#include - -using namespace Mangle::Sound; - -void SampleReader::setup(int size) -{ - pullSize = 0; - frameSize = size; - pullOver = new char[size]; -} - -SampleReader::~SampleReader() -{ - if(pullOver) - delete[] pullOver; -} - -size_t SampleReader::read(void *_data, size_t length) -{ - if(isEof) return 0; - char *data = (char*)_data; - - // Pullsize holds the number of bytes that were copied "extra" at - // the end of LAST round. If non-zero, it also means there is data - // left in the pullOver buffer. - if(pullSize) - { - // Amount of data left - size_t doRead = frameSize - pullSize; - assert(doRead > 0); - - // Make sure we don't read more than we're supposed to - if(doRead > length) doRead = length; - - memcpy(data, pullOver+pullSize, doRead); - - // Update the number of bytes now copied - pullSize += doRead; - assert(pullSize <= frameSize); - - if(pullSize < frameSize) - { - // There is STILL data left in the pull buffer, and we've - // done everything we were supposed to. Leave it and return. - assert(doRead == length); - return doRead; - } - - // Set up variables for further reading below. No need to update - // pullSize, it is overwritten anyway. - length -= doRead; - data += doRead; - } - - // Number of whole frames - size_t frames = length / frameSize; - - // Read the data - size_t res = readSamples(data, frames); - assert(res <= frames); - - // Total bytes read - size_t num = res*frameSize; - data += num; - - if(res < frames) - { - // End of stream. - isEof = true; - // Determine how much we read - return data-(char*)_data; - } - - // Determine the overshoot - pullSize = length - num; - assert(pullSize < frameSize && pullSize >= 0); - - // Are we missing data? - if(pullSize) - { - // Fill in one sample - res = readSamples(pullOver,1); - assert(res == 1 || res == 0); - if(res) - { - // Move as much as we can into the output buffer - memcpy(data, pullOver, pullSize); - data += pullSize; - } - else - // Failed reading, we're out of data - isEof = true; - } - - // Return the total number of bytes stored - return data-(char*)_data; -} diff --git a/libs/mangle/sound/sources/sample_reader.hpp b/libs/mangle/sound/sources/sample_reader.hpp deleted file mode 100644 index 89ddf1f652..0000000000 --- a/libs/mangle/sound/sources/sample_reader.hpp +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef MANGLE_SOUND_SAMPLE_READER_H -#define MANGLE_SOUND_SAMPLE_READER_H - -#include "../source.hpp" - -namespace Mangle { -namespace Sound { - - /* This is a helper base class for other SampleSource - implementations. Certain sources (like Audiere and libsndfile) - insist on reading whole samples rather than bytes. This class - compensates for that, and allows you to read bytes rather than - samples. - - There are two ways for subclasses to use this class. EITHER call - setup() with the size of frameSize. This will allocate a buffer, - which the destructor frees. OR set frameSize manually and - manipulate the pullOver pointer yourself. In that case you MUST - reset it to NULL if you don't want the destructor to call - delete[] on it. - */ -class SampleReader : public SampleSource -{ - // How much of the above buffer is in use. - int pullSize; - -protected: - // Pullover buffer - char* pullOver; - - // Size of one frame, in bytes. This is also the size of the - // pullOver buffer. - int frameSize; - - // The parameter gives the size of one sample/frame, in bytes. - void setup(int); - - // Read the given number of samples, in multiples of frameSize. Does - // not have to set or respect isEof. - virtual size_t readSamples(void *data, size_t num) = 0; - - public: - SampleReader() : pullSize(0), pullOver(NULL) {} - ~SampleReader(); - size_t read(void *data, size_t length); -}; -}} // Namespace -#endif diff --git a/libs/mangle/sound/sources/stream_source.hpp b/libs/mangle/sound/sources/stream_source.hpp deleted file mode 100644 index 43c605a004..0000000000 --- a/libs/mangle/sound/sources/stream_source.hpp +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef MANGLE_SOUND_STREAMSOURCE_H -#define MANGLE_SOUND_STREAMSOURCE_H - -#include "../source.hpp" - -namespace Mangle { -namespace Sound { - -/// A class for reading raw samples directly from a stream. -class Stream2Samples : public SampleSource -{ - Mangle::Stream::StreamPtr inp; - int32_t rate, channels, bits; - - public: - Stream2Samples(Mangle::Stream::StreamPtr _inp, int32_t _rate, int32_t _channels, int32_t _bits) - : inp(_inp), rate(_rate), channels(_channels), bits(_bits) - { - isSeekable = inp->isSeekable; - hasPosition = inp->hasPosition; - hasSize = inp->hasSize; - hasPtr = inp->hasPtr; - } - - /// Get the sample rate, number of channels, and bits per - /// sample. NULL parameters are ignored. - void getInfo(int32_t *_rate, int32_t *_channels, int32_t *_bits) - { - if(_rate) *_rate = rate; - if(_channels) *_channels = channels; - if(_bits) *_bits = bits; - } - - size_t read(void *out, size_t count) - { return inp->read(out, count); } - - void seek(size_t pos) { inp->seek(pos); } - size_t tell() const { return inp->tell(); } - size_t size() const { return inp->size(); } - bool eof() const { return inp->eof(); } - const void *getPtr() { return inp->getPtr(); } - const void *getPtr(size_t size) { return inp->getPtr(size); } - const void *getPtr(size_t pos, size_t size) { return inp->getPtr(pos, size); } -}; - -}} // namespaces -#endif diff --git a/libs/mangle/sound/sources/wav_source.cpp b/libs/mangle/sound/sources/wav_source.cpp deleted file mode 100644 index a46b3d27ec..0000000000 --- a/libs/mangle/sound/sources/wav_source.cpp +++ /dev/null @@ -1,99 +0,0 @@ -#include "wav_source.hpp" - -#include "../../stream/servers/file_stream.hpp" - -#include - -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -static void fail(const std::string &msg) -{ throw std::runtime_error("Mangle::Wav exception: " + msg); } - -void WavSource::getInfo(int32_t *pRate, int32_t *pChannels, int32_t *pBits) -{ - // Use the values we found in the constructor - *pRate = rate; - *pChannels = channels; - *pBits = bits; -} - -void WavSource::seek(size_t pos) -{ - // Seek the stream and set 'left' - assert(isSeekable); - if(pos > total) pos = total; - input->seek(dataOffset + pos); - left = total-pos; -} - -size_t WavSource::read(void *data, size_t length) -{ - if(length > left) - length = left; - size_t read = input->read(data, length); - if(read < length) - // Something went wrong - fail("WAV read error"); - return length; -} - -void WavSource::open(Mangle::Stream::StreamPtr data) -{ - input = data; - - hasPosition = true; - hasSize = true; - // If we can check position and seek in the input stream, then we - // can seek the wav data too. - isSeekable = input->isSeekable && input->hasPosition; - - // Read header - unsigned int val; - - input->read(&val,4); // header - if(val != 0x46464952) // "RIFF" - fail("Not a WAV file"); - - input->read(&val,4); // size (ignored) - input->read(&val,4); // file format - if(val != 0x45564157) // "WAVE" - fail("Not a valid WAV file"); - - input->read(&val,4); // "fmt " - input->read(&val,4); // chunk size (must be 16) - if(val != 16) - fail("Unsupported WAV format"); - - input->read(&val,2); - if(val != 1) - fail("Non-PCM (compressed) WAV files not supported"); - - // Sound data specification - channels = 0; - input->read(&channels,2); - input->read(&rate, 4); - - // Skip next 6 bytes - input->read(&val, 4); - input->read(&val, 2); - - // Bits per sample - bits = 0; - input->read(&bits,2); - - input->read(&val,4); // Data header - if(val != 0x61746164) // "data" - fail("Expected data block"); - - // Finally, read the data size - input->read(&total,4); - left = total; - - // Store the beginning of the data block for later - if(input->hasPosition) - dataOffset = input->tell(); -} - -WavSource::WavSource(const std::string &file) -{ open(StreamPtr(new FileStream(file))); } diff --git a/libs/mangle/sound/sources/wav_source.hpp b/libs/mangle/sound/sources/wav_source.hpp deleted file mode 100644 index 227f4da733..0000000000 --- a/libs/mangle/sound/sources/wav_source.hpp +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef MANGLE_SOUND_WAV_SOURCE_H -#define MANGLE_SOUND_WAV_SOURCE_H - -#include "../source.hpp" -#include - -namespace Mangle { -namespace Sound { - -/// WAV file decoder. Has no external library dependencies. -class WavSource : public SampleSource -{ - // Sound info - uint32_t rate, channels, bits; - - // Total size (of output) and bytes left - uint32_t total, left; - - // Offset in input of the beginning of the data block - size_t dataOffset; - - Mangle::Stream::StreamPtr input; - - void open(Mangle::Stream::StreamPtr); - - public: - /// Decode the given sound file - WavSource(const std::string&); - - /// Decode from stream - WavSource(Mangle::Stream::StreamPtr s) - { open(s); } - - void getInfo(int32_t *rate, int32_t *channels, int32_t *bits); - size_t read(void *data, size_t length); - - void seek(size_t); - size_t tell() const { return total-left; } - size_t size() const { return total; } - bool eof() const { return left > 0; } -}; - -#include "loadertemplate.hpp" - -/// A factory that loads WavSources from file and stream -typedef SSL_Template WavLoader; - -}} // Namespace -#endif diff --git a/libs/mangle/sound/tests/.gitignore b/libs/mangle/sound/tests/.gitignore deleted file mode 100644 index 8144904045..0000000000 --- a/libs/mangle/sound/tests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*_test diff --git a/libs/mangle/sound/tests/Makefile b/libs/mangle/sound/tests/Makefile deleted file mode 100644 index 6fcac72da7..0000000000 --- a/libs/mangle/sound/tests/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -GCC=g++ -I../ -Wall - -all: audiere_source_test ffmpeg_source_test openal_output_test openal_audiere_test openal_ffmpeg_test openal_mpg123_test openal_sndfile_test wav_source_test openal_various_test - -L_FFMPEG=$(shell pkg-config --libs libavcodec libavformat) -I_FFMPEG=-I/usr/include/libavcodec -I/usr/include/libavformat -L_OPENAL=$(shell pkg-config --libs openal) -L_AUDIERE=-laudiere - -wav_source_test: wav_source_test.cpp ../sources/wav_source.cpp - $(GCC) $^ -o $@ - -openal_various_test: openal_various_test.cpp ../sources/mpg123_source.cpp ../sources/wav_source.cpp ../outputs/openal_out.cpp - $(GCC) $^ -o $@ -lmpg123 ${L_OPENAL} - -openal_audiere_test: openal_audiere_test.cpp ../sources/audiere_source.cpp ../sources/sample_reader.cpp ../outputs/openal_out.cpp ../../stream/clients/audiere_file.cpp - $(GCC) $^ -o $@ $(L_AUDIERE) $(L_OPENAL) - -openal_ffmpeg_test: openal_ffmpeg_test.cpp ../sources/ffmpeg_source.cpp ../outputs/openal_out.cpp - $(GCC) $^ -o $@ $(L_FFMPEG) $(L_OPENAL) $(I_FFMPEG) - -openal_mpg123_test: openal_mpg123_test.cpp ../sources/mpg123_source.cpp ../outputs/openal_out.cpp - $(GCC) $^ -o $@ -lmpg123 ${L_OPENAL} - -openal_sndfile_test: openal_sndfile_test.cpp ../sources/libsndfile.cpp ../sources/sample_reader.cpp ../outputs/openal_out.cpp - $(GCC) $^ -o $@ -lsndfile ${L_OPENAL} - -openal_output_test: openal_output_test.cpp ../outputs/openal_out.cpp - $(GCC) $^ -o $@ $(L_OPENAL) - -audiere_source_test: audiere_source_test.cpp ../sources/audiere_source.cpp ../../stream/clients/audiere_file.cpp ../sources/sample_reader.cpp - $(GCC) $^ -o $@ $(L_AUDIERE) - -ffmpeg_source_test: ffmpeg_source_test.cpp ../sources/ffmpeg_source.cpp - $(GCC) $^ -o $@ $(L_FFMPEG) $(I_FFMPEG) - -clean: - rm *_test diff --git a/libs/mangle/sound/tests/audiere_source_test.cpp b/libs/mangle/sound/tests/audiere_source_test.cpp deleted file mode 100644 index 637d743b21..0000000000 --- a/libs/mangle/sound/tests/audiere_source_test.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include - -#include "../../stream/servers/file_stream.hpp" -#include "../sources/audiere_source.hpp" - -#include -#include - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -// Contents and size of cow.raw -void *orig; -size_t orig_size; - -void run(SampleSourcePtr &src) -{ - size_t ss = src->size(); - assert(ss == orig_size); - - cout << "Source size: " << ss << endl; - int rate, channels, bits; - src->getInfo(&rate, &channels, &bits); - cout << "rate=" << rate << "\nchannels=" << channels - << "\nbits=" << bits << endl; - - cout << "Reading entire buffer into memory\n"; - void *buf = malloc(ss); - src->read(buf, ss); - - cout << "Comparing...\n"; - if(memcmp(buf, orig, ss) != 0) - { - cout << "Oops!\n"; - assert(0); - } - - cout << "Done\n"; -} - -int main() -{ - { - cout << "Reading cow.raw first\n"; - FileStream tmp("cow.raw"); - orig_size = tmp.size(); - cout << "Size: " << orig_size << endl; - orig = malloc(orig_size); - tmp.read(orig, orig_size); - cout << "Done\n"; - } - - { - cout << "\nLoading cow.wav by filename:\n"; - SampleSourcePtr cow_file( new AudiereSource("cow.wav") ); - run(cow_file); - } - - { - cout << "\nLoading cow.wav by stream:\n"; - StreamPtr inp( new FileStream("cow.wav") ); - SampleSourcePtr cow_stream( new AudiereSource(inp) ); - run(cow_stream); - } - - return 0; -} diff --git a/libs/mangle/sound/tests/cow.raw b/libs/mangle/sound/tests/cow.raw deleted file mode 100644 index c4d155bbfb1caba2e41b1a97e01f29276c945c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37502 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 O1S+E#K;S<}?SBBl=Neo9 diff --git a/libs/mangle/sound/tests/cow.wav b/libs/mangle/sound/tests/cow.wav deleted file mode 100644 index 494e6c4ac12a3d318532fdf8178d72f775bc40af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37546 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 - -#include "../../stream/servers/file_stream.hpp" -#include "../sources/ffmpeg_source.hpp" - -#include -#include - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -// Contents and size of cow.raw -void *orig; -size_t orig_size; - -void run(SampleSourcePtr &src) -{ - int rate, channels, bits; - src->getInfo(&rate, &channels, &bits); - cout << "rate=" << rate << "\nchannels=" << channels - << "\nbits=" << bits << endl; - - cout << "Reading entire buffer into memory\n"; - void *buf = malloc(orig_size); - size_t ss = src->read(buf, orig_size); - cout << "Actually read: " << ss << endl; - assert(ss == orig_size); - - cout << "Comparing...\n"; - if(memcmp(buf, orig, ss) != 0) - { - cout << "Oops!\n"; - assert(0); - } - - cout << "Done\n"; -} - -int main() -{ - { - cout << "Reading cow.raw first\n"; - FileStream tmp("cow.raw"); - orig_size = tmp.size(); - cout << "Size: " << orig_size << endl; - orig = malloc(orig_size); - tmp.read(orig, orig_size); - cout << "Done\n"; - } - - // Initializes the library, not used for anything else. - FFMpegLoader fm; - - { - cout << "\nLoading cow.wav by filename:\n"; - SampleSourcePtr cow_file( new FFMpegSource("cow.wav") ); - run(cow_file); - } - - return 0; -} diff --git a/libs/mangle/sound/tests/openal_audiere_test.cpp b/libs/mangle/sound/tests/openal_audiere_test.cpp deleted file mode 100644 index ced7fe5d23..0000000000 --- a/libs/mangle/sound/tests/openal_audiere_test.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include - -#include "../../stream/servers/file_stream.hpp" -#include "../filters/openal_audiere.hpp" - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -OpenAL_Audiere_Factory mg; - -void play(const char* name, bool stream=false) -{ - // Only load streams if the backend supports it - if(stream && !mg.canLoadStream) - return; - - cout << "Playing " << name; - if(stream) cout << " (from stream)"; - cout << "\n"; - - SoundPtr snd; - - try - { - if(stream) - snd = mg.load(StreamPtr(new FileStream(name))); - else - snd = mg.load(name); - - snd->play(); - - while(snd->isPlaying()) - { - usleep(10000); - if(mg.needsUpdate) mg.update(); - } - } - catch(exception &e) - { - cout << " ERROR: " << e.what() << "\n"; - } -} - -int main() -{ - play("cow.wav"); - play("owl.ogg"); - play("cow.wav", true); - return 0; -} diff --git a/libs/mangle/sound/tests/openal_ffmpeg_test.cpp b/libs/mangle/sound/tests/openal_ffmpeg_test.cpp deleted file mode 100644 index d4b8e93003..0000000000 --- a/libs/mangle/sound/tests/openal_ffmpeg_test.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include - -#include "../../stream/servers/file_stream.hpp" -#include "../filters/openal_ffmpeg.hpp" - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -OpenAL_FFMpeg_Factory mg; - -void play(const char* name, bool stream=false) -{ - // Only load streams if the backend supports it - if(stream && !mg.canLoadStream) - return; - - cout << "Playing " << name; - if(stream) cout << " (from stream)"; - cout << "\n"; - - SoundPtr snd; - - try - { - if(stream) - snd = mg.load(StreamPtr(new FileStream(name))); - else - snd = mg.load(name); - - snd->play(); - - while(snd->isPlaying()) - { - usleep(10000); - if(mg.needsUpdate) mg.update(); - } - } - catch(exception &e) - { - cout << " ERROR: " << e.what() << "\n"; - } -} - -int main() -{ - play("cow.wav"); - play("owl.ogg"); - play("cow.wav", true); - return 0; -} diff --git a/libs/mangle/sound/tests/openal_mpg123_test.cpp b/libs/mangle/sound/tests/openal_mpg123_test.cpp deleted file mode 100644 index fef1a5605a..0000000000 --- a/libs/mangle/sound/tests/openal_mpg123_test.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include - -#include "../../stream/servers/file_stream.hpp" -#include "../filters/openal_mpg123.hpp" - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -OpenAL_Mpg123_Factory mg; - -void play(const char* name, bool stream=false) -{ - // Only load streams if the backend supports it - if(stream && !mg.canLoadStream) - return; - - cout << "Playing " << name; - if(stream) cout << " (from stream)"; - cout << "\n"; - - SoundPtr snd; - - try - { - if(stream) - snd = mg.load(StreamPtr(new FileStream(name))); - else - snd = mg.load(name); - - snd->setStreaming(true); - snd->play(); - - while(snd->isPlaying()) - { - usleep(10000); - if(mg.needsUpdate) mg.update(); - } - } - catch(exception &e) - { - cout << " ERROR: " << e.what() << "\n"; - } -} - -int main(int argc, char**argv) -{ - if(argc != 2) - cout << "Please specify an MP3 file\n"; - else - play(argv[1]); - return 0; -} diff --git a/libs/mangle/sound/tests/openal_output_test.cpp b/libs/mangle/sound/tests/openal_output_test.cpp deleted file mode 100644 index a8059ec652..0000000000 --- a/libs/mangle/sound/tests/openal_output_test.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include - -#include "../../stream/servers/file_stream.hpp" -#include "../sources/stream_source.hpp" -#include "../outputs/openal_out.hpp" - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -int main() -{ - cout << "Loading cow.raw\n"; - - int rate = 11025; - int chan = 1; - int bits = 16; - - cout << " rate=" << rate << "\n channels=" << chan - << "\n bits=" << bits << endl; - - StreamPtr file( new FileStream("cow.raw") ); - SampleSourcePtr source( new Stream2Samples( file, rate, chan, bits)); - - cout << "Playing\n"; - - OpenAL_Factory mg; - - SoundPtr snd = mg.loadRaw(source); - - try - { - // Try setting all kinds of stuff before playing. OpenAL_Sound - // uses delayed buffer loading, but these should still work - // without a buffer. - snd->stop(); - snd->pause(); - snd->setVolume(0.8); - snd->setPitch(0.9); - - // Also test streaming, since all the other examples test - // non-streaming sounds. - snd->setStreaming(true); - - snd->play(); - - while(snd->isPlaying()) - { - usleep(10000); - mg.update(); - } - } - catch(exception &e) - { - cout << " ERROR: " << e.what() << "\n"; - } - return 0; -} diff --git a/libs/mangle/sound/tests/openal_sndfile_test.cpp b/libs/mangle/sound/tests/openal_sndfile_test.cpp deleted file mode 100644 index bd5f117a59..0000000000 --- a/libs/mangle/sound/tests/openal_sndfile_test.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include - -#include "../../stream/servers/file_stream.hpp" -#include "../filters/openal_sndfile.hpp" - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -OpenAL_SndFile_Factory mg; - -void play(const char* name, bool stream=false) -{ - // Only load streams if the backend supports it - if(stream && !mg.canLoadStream) - return; - - cout << "Playing " << name; - if(stream) cout << " (from stream)"; - cout << "\n"; - - SoundPtr snd; - - try - { - if(stream) - snd = mg.load(StreamPtr(new FileStream(name))); - else - snd = mg.load(name); - - snd->play(); - - while(snd->isPlaying()) - { - usleep(10000); - if(mg.needsUpdate) mg.update(); - } - } - catch(exception &e) - { - cout << " ERROR: " << e.what() << "\n"; - } -} - -int main() -{ - play("cow.wav"); - play("owl.ogg"); - play("cow.wav", true); - return 0; -} diff --git a/libs/mangle/sound/tests/openal_various_test.cpp b/libs/mangle/sound/tests/openal_various_test.cpp deleted file mode 100644 index 9426a672ec..0000000000 --- a/libs/mangle/sound/tests/openal_various_test.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include - -#include "../../stream/servers/file_stream.hpp" -#include "../filters/openal_various.hpp" - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; - -OpenAL_Various_Factory mg; - -void play(const char* name, bool stream=false) -{ - // Only load streams if the backend supports it - if(stream && !mg.canLoadStream) - return; - - cout << "Playing " << name; - if(stream) cout << " (from stream)"; - cout << "\n"; - - SoundPtr snd; - - try - { - if(stream) - snd = mg.load(StreamPtr(new FileStream(name))); - else - snd = mg.load(name); - - snd->play(); - - while(snd->isPlaying()) - { - usleep(10000); - if(mg.needsUpdate) mg.update(); - } - } - catch(exception &e) - { - cout << " ERROR: " << e.what() << "\n"; - } -} - -int main() -{ - play("cow.wav"); - play("cow.wav", true); - return 0; -} diff --git a/libs/mangle/sound/tests/output/audiere_source_test.out b/libs/mangle/sound/tests/output/audiere_source_test.out deleted file mode 100644 index 47a5a9e418..0000000000 --- a/libs/mangle/sound/tests/output/audiere_source_test.out +++ /dev/null @@ -1,21 +0,0 @@ -Reading cow.raw first -Size: 37502 -Done - -Loading cow.wav by filename: -Source size: 37502 -rate=11025 -channels=1 -bits=16 -Reading entire buffer into memory -Comparing... -Done - -Loading cow.wav by stream: -Source size: 37502 -rate=11025 -channels=1 -bits=16 -Reading entire buffer into memory -Comparing... -Done diff --git a/libs/mangle/sound/tests/output/ffmpeg_source_test.out b/libs/mangle/sound/tests/output/ffmpeg_source_test.out deleted file mode 100644 index 1c7d491139..0000000000 --- a/libs/mangle/sound/tests/output/ffmpeg_source_test.out +++ /dev/null @@ -1,12 +0,0 @@ -Reading cow.raw first -Size: 37502 -Done - -Loading cow.wav by filename: -rate=11025 -channels=1 -bits=16 -Reading entire buffer into memory -Actually read: 37502 -Comparing... -Done diff --git a/libs/mangle/sound/tests/output/openal_audiere_test.out b/libs/mangle/sound/tests/output/openal_audiere_test.out deleted file mode 100644 index 4fe01eac2b..0000000000 --- a/libs/mangle/sound/tests/output/openal_audiere_test.out +++ /dev/null @@ -1,3 +0,0 @@ -Playing cow.wav -Playing owl.ogg -Playing cow.wav (from stream) diff --git a/libs/mangle/sound/tests/output/openal_ffmpeg_test.out b/libs/mangle/sound/tests/output/openal_ffmpeg_test.out deleted file mode 100644 index 96e1db0f9a..0000000000 --- a/libs/mangle/sound/tests/output/openal_ffmpeg_test.out +++ /dev/null @@ -1,2 +0,0 @@ -Playing cow.wav -Playing owl.ogg diff --git a/libs/mangle/sound/tests/output/openal_mpg123_test.out b/libs/mangle/sound/tests/output/openal_mpg123_test.out deleted file mode 100644 index e55dabbb1d..0000000000 --- a/libs/mangle/sound/tests/output/openal_mpg123_test.out +++ /dev/null @@ -1 +0,0 @@ -Please specify an MP3 file diff --git a/libs/mangle/sound/tests/output/openal_output_test.out b/libs/mangle/sound/tests/output/openal_output_test.out deleted file mode 100644 index 04392a72e8..0000000000 --- a/libs/mangle/sound/tests/output/openal_output_test.out +++ /dev/null @@ -1,5 +0,0 @@ -Loading cow.raw - rate=11025 - channels=1 - bits=16 -Playing diff --git a/libs/mangle/sound/tests/output/openal_sndfile_test.out b/libs/mangle/sound/tests/output/openal_sndfile_test.out deleted file mode 100644 index 96e1db0f9a..0000000000 --- a/libs/mangle/sound/tests/output/openal_sndfile_test.out +++ /dev/null @@ -1,2 +0,0 @@ -Playing cow.wav -Playing owl.ogg diff --git a/libs/mangle/sound/tests/output/openal_various_test.out b/libs/mangle/sound/tests/output/openal_various_test.out deleted file mode 100644 index f25a555138..0000000000 --- a/libs/mangle/sound/tests/output/openal_various_test.out +++ /dev/null @@ -1 +0,0 @@ -Playing cow.wav diff --git a/libs/mangle/sound/tests/output/wav_source_test.out b/libs/mangle/sound/tests/output/wav_source_test.out deleted file mode 100644 index b6fc8e6fc8..0000000000 --- a/libs/mangle/sound/tests/output/wav_source_test.out +++ /dev/null @@ -1,12 +0,0 @@ -Source size: 37502 -rate=11025 -channels=1 -bits=16 -Reading entire buffer into memory - -Reading cow.raw -Size: 37502 - -Comparing... - -Done diff --git a/libs/mangle/sound/tests/owl.ogg b/libs/mangle/sound/tests/owl.ogg deleted file mode 100644 index e992f24d48206663c794ce1f835b483aed730319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18641 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 "output/$a.out" - git add "output/$a.out" - fi -done diff --git a/libs/mangle/sound/tests/wav_source_test.cpp b/libs/mangle/sound/tests/wav_source_test.cpp deleted file mode 100644 index 749af18496..0000000000 --- a/libs/mangle/sound/tests/wav_source_test.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include - -#include "../sources/wav_source.hpp" -#include "../../stream/servers/file_stream.hpp" - -#include -#include - -using namespace std; -using namespace Mangle::Sound; -using namespace Mangle::Stream; - -int main() -{ - WavSource wav("cow.wav"); - - cout << "Source size: " << wav.size() << endl; - int rate, channels, bits; - wav.getInfo(&rate, &channels, &bits); - cout << "rate=" << rate << "\nchannels=" << channels - << "\nbits=" << bits << endl; - - cout << "Reading entire buffer into memory\n"; - void *buf = malloc(wav.size()); - wav.read(buf, wav.size()); - - cout << "\nReading cow.raw\n"; - FileStream tmp("cow.raw"); - cout << "Size: " << tmp.size() << endl; - void *buf2 = malloc(tmp.size()); - tmp.read(buf2, tmp.size()); - - cout << "\nComparing...\n"; - if(tmp.size() != wav.size()) - { - cout << "SIZE MISMATCH!\n"; - assert(0); - } - - if(memcmp(buf, buf2, wav.size()) != 0) - { - cout << "CONTENT MISMATCH!\n"; - assert(0); - } - - cout << "\nDone\n"; - return 0; -} diff --git a/libs/openengine/sound/sndmanager.cpp b/libs/openengine/sound/sndmanager.cpp deleted file mode 100644 index 02c6ba1e77..0000000000 --- a/libs/openengine/sound/sndmanager.cpp +++ /dev/null @@ -1,219 +0,0 @@ -#include "sndmanager.hpp" - -#include "../misc/list.hpp" -#include - -using namespace OEngine::Sound; -using namespace Mangle::Sound; - -/** This is our own internal implementation of the - Mangle::Sound::Sound interface. This class links a SoundPtr to - itself and prevents itself from being deleted as long as the sound - is playing. - */ -struct OEngine::Sound::ManagedSound : SoundFilter -{ -private: - /** Who's your daddy? This is set if and only if we are listed - internally in the given SoundManager. - - It may be NULL if the manager has been deleted but the user - keeps their own SoundPtrs to the object. - */ - SoundManager *mgr; - - /** Keep a weak pointer to ourselves, which we convert into a - 'strong' pointer when we are playing. When 'self' is pointing to - ourselves, the object will never be deleted. - - This is used to make sure the sound is not deleted while - playing, unless it is explicitly ordered to do so by the - manager. - - TODO: This kind of construct is useful. If we need it elsewhere - later, template it. It would be generally useful in any system - where we poll to check if a resource is still needed, but where - manual references are allowed. - */ - WSoundPtr weak; - SoundPtr self; - - // Keep this object from being deleted - void lock() - { - self = SoundPtr(weak); - } - - // Release the lock. This may or may not delete the object. Never do - // anything after calling unlock()! - void unlock() - { - self.reset(); - } - -public: - // Used for putting ourselves in linked lists - ManagedSound *next, *prev; - - /** Detach this sound from its manager. This means that the manager - will no longer know we exist. Typically only called when either - the sound or the manager is about to get deleted. - - Since this means update() will no longer be called, we also have - to unlock the sound manually since it will no longer be able to - do that itself. This means that the sound may be deleted, even - if it is still playing, when the manager is deleted. - - However, you are still allowed to keep and manage your own - SoundPtr references, but the lock/unlock system is disabled - after the manager is gone. - */ - void detach() - { - if(mgr) - { - mgr->detach(this); - mgr = NULL; - } - - // Unlock must be last command. Object may get deleted at this - // point. - unlock(); - } - - ManagedSound(SoundPtr snd, SoundManager *mg) - : SoundFilter(snd), mgr(mg) - {} - ~ManagedSound() { detach(); } - - // Needed to set up the weak pointer - void setup(SoundPtr self) - { - weak = WSoundPtr(self); - } - - // Override play() to mark the object as locked - void play() - { - SoundFilter::play(); - - // Lock the object so that it is not deleted while playing. Only - // do this if we have a manager, otherwise the object will never - // get unlocked. - if(mgr) lock(); - } - - // Called regularly by the manager - void update() - { - // If we're no longer playing, don't force object retention. - if(!isPlaying()) - unlock(); - - // unlock() may delete the object, so don't do anything below this - // point. - } - - SoundPtr clone() - { - // Cloning only works when we have a manager. - assert(mgr); - return mgr->wrap(client->clone()); - } -}; - -struct SoundManager::SoundManagerList -{ -private: - // A linked list of ManagedSound objects. - typedef Misc::List SoundList; - SoundList list; - -public: - // Add a new sound to the list - void addNew(ManagedSound* snd) - { - list.insert(snd); - } - - // Remove a sound from the list - void remove(ManagedSound *snd) - { - list.remove(snd); - } - - // Number of sounds in the list - int numSounds() { return list.getNum(); } - - // Update all sounds - void updateAll() - { - ManagedSound *s = list.getHead(); - while(s) - { - ManagedSound *cur = s; - // Propagate first, since update() may delete object - s = s->next; - cur->update(); - } - } - - // Detach and unlock all sounds - void detachAll() - { - ManagedSound *s = list.getHead(); - while(s) - { - ManagedSound *cur = s; - s = s->next; - cur->detach(); - } - } -}; - -SoundManager::SoundManager(SoundFactoryPtr fact) - : FactoryFilter(fact) -{ - needsUpdate = true; - list = new SoundManagerList; -} - -SoundManager::~SoundManager() -{ - // Detach all sounds - list->detachAll(); -} - -SoundPtr SoundManager::wrap(SoundPtr client) -{ - // Create and set up the sound wrapper - ManagedSound *snd = new ManagedSound(client,this); - SoundPtr ptr(snd); - snd->setup(ptr); - - // Add ourselves to the list of all sounds - list->addNew(snd); - - return ptr; -} - -// Remove the sound from this manager. -void SoundManager::detach(ManagedSound *sound) -{ - list->remove(sound); -} - -int SoundManager::numSounds() -{ - return list->numSounds(); -} - -void SoundManager::update() -{ - // Update all the sounds we own - list->updateAll(); - - // Update the source if it needs it - if(client->needsUpdate) - client->update(); -} diff --git a/libs/openengine/sound/sndmanager.hpp b/libs/openengine/sound/sndmanager.hpp deleted file mode 100644 index 5ea0c4fc37..0000000000 --- a/libs/openengine/sound/sndmanager.hpp +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef OENGINE_SOUND_MANAGER_H -#define OENGINE_SOUND_MANAGER_H - -#include - -namespace OEngine -{ - namespace Sound - { - using namespace Mangle::Sound; - - class ManagedSound; - - /** A manager of Mangle::Sounds. - - The sound manager is a wrapper around the more low-level - SoundFactory - although it is also itself an implementation of - SoundFactory. It will: - - keep a list of all created sounds - - let you iterate the list - - keep references to playing sounds so you don't have to - - auto-release references to sounds that are finished playing - (ie. deleting them if you're not referencing them) - */ - class SoundManager : public FactoryFilter - { - // Shove the implementation details into the cpp file. - struct SoundManagerList; - SoundManagerList *list; - - // Create a new sound wrapper based on the given source sound. - SoundPtr wrap(SoundPtr snd); - - /** Internal function. Will completely disconnect the given - sound from this manager. Called from ManagedSound. - */ - friend class ManagedSound; - void detach(ManagedSound *sound); - public: - SoundManager(SoundFactoryPtr fact); - ~SoundManager(); - void update(); - - /// Get number of sounds currently managed by this manager. - int numSounds(); - - SoundPtr loadRaw(SampleSourcePtr input) - { return wrap(client->loadRaw(input)); } - - SoundPtr load(Mangle::Stream::StreamPtr input) - { return wrap(client->load(input)); } - - SoundPtr load(const std::string &file) - { return wrap(client->load(file)); } - - // Play a sound immediately, and release when done unless you - // keep the returned SoundPtr. - SoundPtr play(Mangle::Stream::StreamPtr sound) - { - SoundPtr snd = load(sound); - snd->play(); - return snd; - } - - SoundPtr play(const std::string &sound) - { - SoundPtr snd = load(sound); - snd->play(); - return snd; - } - - // Ditto for 3D sounds - SoundPtr play3D(Mangle::Stream::StreamPtr sound, float x, float y, float z) - { - SoundPtr snd = load(sound); - snd->setPos(x,y,z); - snd->play(); - return snd; - } - - SoundPtr play3D(const std::string &sound, float x, float y, float z) - { - SoundPtr snd = load(sound); - snd->setPos(x,y,z); - snd->play(); - return snd; - } - }; - - typedef boost::shared_ptr SoundManagerPtr; - } -} -#endif diff --git a/libs/openengine/sound/tests/Makefile b/libs/openengine/sound/tests/Makefile deleted file mode 100644 index 04952167f7..0000000000 --- a/libs/openengine/sound/tests/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -GCC=g++ -I../ - -all: sound_manager_test sound_3d_test - -L_FFMPEG=$(shell pkg-config --libs libavcodec libavformat) -L_OPENAL=$(shell pkg-config --libs openal) -L_AUDIERE=-laudiere - -sound_manager_test: sound_manager_test.cpp ../../mangle/sound/sources/audiere_source.cpp ../../mangle/sound/outputs/openal_out.cpp ../../mangle/stream/clients/audiere_file.cpp ../sndmanager.cpp - $(GCC) $^ -o $@ $(L_AUDIERE) $(L_OPENAL) -I../.. - -sound_3d_test: sound_3d_test.cpp ../../mangle/sound/sources/audiere_source.cpp ../../mangle/sound/outputs/openal_out.cpp ../../mangle/stream/clients/audiere_file.cpp ../sndmanager.cpp - $(GCC) $^ -o $@ $(L_AUDIERE) $(L_OPENAL) -I../.. - -clean: - rm *_test diff --git a/libs/openengine/sound/tests/output/sound_3d_test.out b/libs/openengine/sound/tests/output/sound_3d_test.out deleted file mode 100644 index a443c84f02..0000000000 --- a/libs/openengine/sound/tests/output/sound_3d_test.out +++ /dev/null @@ -1,3 +0,0 @@ -Playing at 0,0,0 -Playing at 1,1,0 -Playing at -1,0,0 diff --git a/libs/openengine/sound/tests/output/sound_manager_test.out b/libs/openengine/sound/tests/output/sound_manager_test.out deleted file mode 100644 index 2b458493d2..0000000000 --- a/libs/openengine/sound/tests/output/sound_manager_test.out +++ /dev/null @@ -1,5 +0,0 @@ -Playing ../../mangle/sound/tests/cow.wav -Replaying -pause -restart -Done playing. diff --git a/libs/openengine/sound/tests/sound_3d_test.cpp b/libs/openengine/sound/tests/sound_3d_test.cpp deleted file mode 100644 index f5b197fd0b..0000000000 --- a/libs/openengine/sound/tests/sound_3d_test.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include - -#include -#include - -#include - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; -using namespace OEngine::Sound; - -const std::string sound = "../../mangle/sound/tests/cow.wav"; - -SoundManagerPtr m; - -// Play and wait for finish -void play(float x, float y, float z) -{ - cout << "Playing at " << x << "," << y << "," << z << endl; - - SoundPtr snd = m->play3D(sound,x,y,z); - - while(snd->isPlaying()) - { - usleep(10000); - m->update(); - } -} - -int main() -{ - SoundFactoryPtr oaf(new OpenAL_Audiere_Factory); - SoundManagerPtr mg(new SoundManager(oaf)); - m = mg; - - mg->setListenerPos(0,0,0,0,1,0,0,0,1); - - play(0,0,0); - play(1,1,0); - play(-1,0,0); - - return 0; -} diff --git a/libs/openengine/sound/tests/sound_manager_test.cpp b/libs/openengine/sound/tests/sound_manager_test.cpp deleted file mode 100644 index 3794c4a3cf..0000000000 --- a/libs/openengine/sound/tests/sound_manager_test.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include -#include - -#include -#include - -#include - -using namespace std; -using namespace Mangle::Stream; -using namespace Mangle::Sound; -using namespace OEngine::Sound; - -const std::string sound = "../../mangle/sound/tests/cow.wav"; - -int main() -{ - SoundFactoryPtr oaf(new OpenAL_Audiere_Factory); - SoundManagerPtr mg(new SoundManager(oaf)); - - cout << "Playing " << sound << "\n"; - - assert(mg->numSounds() == 0); - - /** Start the sound playing, and then let the pointer go out of - scope. Lower-level players (like 'oaf' above) will immediately - delete the sound. SoundManager OTOH will keep it until it's - finished. - */ - mg->play(sound); - - assert(mg->numSounds() == 1); - - // Loop while there are still sounds to manage - while(mg->numSounds() != 0) - { - assert(mg->numSounds() == 1); - usleep(10000); - if(mg->needsUpdate) - mg->update(); - } - - SoundPtr snd = mg->play(sound); - cout << "Replaying\n"; - int i = 0; - while(mg->numSounds() != 0) - { - assert(mg->numSounds() == 1); - usleep(10000); - if(mg->needsUpdate) - mg->update(); - - if(i++ == 70) - { - cout << "pause\n"; - snd->pause(); - } - if(i == 130) - { - cout << "restart\n"; - snd->play(); - // Let the sound go out of scope - snd.reset(); - } - } - - cout << "Done playing.\n"; - - assert(mg->numSounds() == 0); - - return 0; -} diff --git a/libs/openengine/sound/tests/test.sh b/libs/openengine/sound/tests/test.sh deleted file mode 100755 index 2d07708adc..0000000000 --- a/libs/openengine/sound/tests/test.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -make || exit - -mkdir -p output - -PROGS=*_test - -for a in $PROGS; do - if [ -f "output/$a.out" ]; then - echo "Running $a:" - ./$a | diff output/$a.out - - else - echo "Creating $a.out" - ./$a > "output/$a.out" - git add "output/$a.out" - fi -done From 45b612ab3bf32b98209e8a8b205bce573bd358a7 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 16 Mar 2012 22:12:17 -0700 Subject: [PATCH 050/488] Add a skeleton output classs using OpenAL --- CMakeLists.txt | 12 +- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwsound/openal_output.cpp | 60 ++++++++++ apps/openmw/mwsound/openal_output.hpp | 29 +++++ apps/openmw/mwsound/soundmanager.cpp | 26 +++-- apps/openmw/mwsound/soundmanager.hpp | 157 +++++++++++++++----------- 6 files changed, 199 insertions(+), 87 deletions(-) create mode 100644 apps/openmw/mwsound/openal_output.cpp create mode 100644 apps/openmw/mwsound/openal_output.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d06085322a..876ea8273b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,6 +118,12 @@ set(OENGINE_BULLET ${LIBDIR}/openengine/bullet/BulletShapeLoader.h ) +set(OENGINE_ALL ${OENGINE_OGRE} ${OENGINE_GUI} ${OENGINE_BULLET}) +source_group(libs\\openengine FILES ${OENGINE_ALL}) + +set(OPENMW_LIBS ${MANGLE_ALL} ${OENGINE_ALL}) +set(OPENMW_LIBS_HEADER) + # Sound setup if (USE_AUDIERE) find_package(Audiere REQUIRED) @@ -141,12 +147,6 @@ if (USE_MPG123) set(SOUND_DEFINE -DOPENMW_USE_MPG123) endif (USE_MPG123) -set(OENGINE_ALL ${OENGINE_OGRE} ${OENGINE_GUI} ${OENGINE_BULLET}) -source_group(libs\\openengine FILES ${OENGINE_ALL}) - -set(OPENMW_LIBS ${MANGLE_ALL} ${OENGINE_ALL}) -set(OPENMW_LIBS_HEADER) - # Platform specific if (WIN32) set(PLATFORM_INCLUDE_DIR "platform") diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 77f465b4c9..e9002f1116 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -38,7 +38,7 @@ add_openmw_dir (mwscript ) add_openmw_dir (mwsound - soundmanager + soundmanager openal_output ) add_openmw_dir (mwworld diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp new file mode 100644 index 0000000000..59e9037c4e --- /dev/null +++ b/apps/openmw/mwsound/openal_output.cpp @@ -0,0 +1,60 @@ +#include "openal_output.hpp" + +namespace MWSound +{ + +static void fail(const std::string &msg) +{ throw std::runtime_error("OpenAL exception: " + msg); } + + +bool OpenAL_Output::Initialize(const std::string &devname) +{ + if(Context) + fail("Device already initialized"); + + Device = alcOpenDevice(devname.c_str()); + if(!Device) + { + std::cout << "Failed to open \""<Initialize()) + { + Output.reset(); + return; + } + // The music library will accept these filetypes // If none is given then it will accept all filetypes std::vector acceptableExtensions; @@ -66,13 +72,11 @@ namespace MWSound std::string anything = "anything"; // anything is better that a segfault mCurrentPlaylist = mMusicLibrary.section(anything, mFSStrict); // now points to an empty path - - std::cout << "Sound output: " << SOUND_OUT << std::endl; - std::cout << "Sound decoder: " << SOUND_IN << std::endl; } SoundManager::~SoundManager() { + Output.reset(); } // Convert a soundId to file name, and modify the volume @@ -258,7 +262,7 @@ namespace MWSound float min, max; const std::string &file = lookup(soundId, volume, min, max); if(file != "") - add(file, ptr, soundId, volume, pitch, min, max, loop, untracked); + std::cout << "Cannot play " << file << ", skipping.\n"; } void SoundManager::stopSound3D(MWWorld::Ptr ptr, const std::string& soundId) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 9db7fe1b70..f77222cb4c 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -21,103 +21,122 @@ namespace MWWorld namespace MWSound { + class Sound_Output; + class SoundManager { + // This is used for case insensitive and slash-type agnostic file + // finding. It takes DOS paths (any case, \\ slashes or / slashes) + // relative to the sound dir, and translates them into full paths + // of existing files in the filesystem, if they exist. + bool mFSStrict; - // This is used for case insensitive and slash-type agnostic file - // finding. It takes DOS paths (any case, \\ slashes or / slashes) - // relative to the sound dir, and translates them into full paths - // of existing files in the filesystem, if they exist. - bool mFSStrict; + MWWorld::Environment& mEnvironment; - MWWorld::Environment& mEnvironment; + std::auto_ptr Output; - void streamMusicFull (const std::string& filename); - ///< Play a soundifle - /// \param absolute filename + void streamMusicFull(const std::string& filename); + ///< Play a soundifle + /// \param absolute filename - // A list of all sound files used to lookup paths - Files::PathContainer mSoundFiles; + // A list of all sound files used to lookup paths + Files::PathContainer mSoundFiles; - // A library of all Music file paths stored by the folder they are contained in - Files::FileLibrary mMusicLibrary; + // A library of all Music file paths stored by the folder they are contained in + Files::FileLibrary mMusicLibrary; - // Points to the current playlist of music files stored in the music library - const Files::PathContainer* mCurrentPlaylist; + // Points to the current playlist of music files stored in the music library + const Files::PathContainer* mCurrentPlaylist; - std::string lookup(const std::string &soundId, - float &volume, float &min, float &max); - void add(const std::string &file, - MWWorld::Ptr ptr, const std::string &id, - float volume, float pitch, float min, float max, - bool loop, bool untracked=false); - void remove(MWWorld::Ptr ptr, const std::string &id = ""); - bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; - void removeCell(const MWWorld::Ptr::CellStore *cell); - void updatePositions(MWWorld::Ptr ptr); + std::string lookup(const std::string &soundId, + float &volume, float &min, float &max); + void add(const std::string &file, + MWWorld::Ptr ptr, const std::string &id, + float volume, float pitch, float min, float max, + bool loop, bool untracked=false); + void remove(MWWorld::Ptr ptr, const std::string &id = ""); + bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; + void removeCell(const MWWorld::Ptr::CellStore *cell); + void updatePositions(MWWorld::Ptr ptr); - public: - - SoundManager(Ogre::Root*, Ogre::Camera*, + public: + SoundManager(Ogre::Root*, Ogre::Camera*, const Files::PathContainer& dataDir, bool useSound, bool fsstrict, MWWorld::Environment& environment); - ~SoundManager(); + ~SoundManager(); - void stopMusic(); - ///< Stops music if it's playing + void stopMusic(); + ///< Stops music if it's playing - void streamMusic(const std::string& filename); - ///< Play a soundifle - /// \param filename name of a sound file in "Music/" in the data directory. + void streamMusic(const std::string& filename); + ///< Play a soundifle + /// \param filename name of a sound file in "Music/" in the data directory. - void startRandomTitle(); - ///< Starts a random track from the current playlist + void startRandomTitle(); + ///< Starts a random track from the current playlist - bool isMusicPlaying(); - ///< Returns true if music is playing + bool isMusicPlaying(); + ///< Returns true if music is playing - bool setPlaylist(std::string playlist=""); - ///< Set the playlist to an existing folder - /// \param name of the folder that contains the playlist - /// if none is set then it is set to an empty playlist - /// \return Return true if the previous playlist was the same + bool setPlaylist(std::string playlist=""); + ///< Set the playlist to an existing folder + /// \param name of the folder that contains the playlist + /// if none is set then it is set to an empty playlist + /// \return Return true if the previous playlist was the same - void playPlaylist(std::string playlist=""); - ///< Start playing music from the selected folder - /// \param name of the folder that contains the playlist - /// if none is set then it plays from the current playlist + void playPlaylist(std::string playlist=""); + ///< Start playing music from the selected folder + /// \param name of the folder that contains the playlist + /// if none is set then it plays from the current playlist - void say (MWWorld::Ptr reference, const std::string& filename); - ///< Make an actor say some text. - /// \param filename name of a sound file in "Sound/Vo/" in the data directory. + void say(MWWorld::Ptr reference, const std::string& filename); + ///< Make an actor say some text. + /// \param filename name of a sound file in "Sound/Vo/" in the data directory. - bool sayDone (MWWorld::Ptr reference) const; - ///< Is actor not speaking? + bool sayDone(MWWorld::Ptr reference) const; + ///< Is actor not speaking? - void playSound (const std::string& soundId, float volume, float pitch, bool loop=false); - ///< Play a sound, independently of 3D-position + void playSound(const std::string& soundId, float volume, float pitch, bool loop=false); + ///< Play a sound, independently of 3D-position - void playSound3D (MWWorld::Ptr reference, const std::string& soundId, - float volume, float pitch, bool loop, bool untracked=false); - ///< Play a sound from an object + void playSound3D(MWWorld::Ptr reference, const std::string& soundId, + float volume, float pitch, bool loop, + bool untracked=false); + ///< Play a sound from an object - void stopSound3D (MWWorld::Ptr reference, const std::string& soundId = ""); - ///< Stop the given object from playing the given sound, If no soundId is given, - /// all sounds for this reference will stop. + void stopSound3D(MWWorld::Ptr reference, const std::string& soundId=""); + ///< Stop the given object from playing the given sound, If no soundId is given, + /// all sounds for this reference will stop. - void stopSound (MWWorld::Ptr::CellStore *cell); - ///< Stop all sounds for the given cell. + void stopSound(MWWorld::Ptr::CellStore *cell); + ///< Stop all sounds for the given cell. - void stopSound(const std::string& soundId); - ///< Stop a non-3d looping sound + void stopSound(const std::string& soundId); + ///< Stop a non-3d looping sound - bool getSoundPlaying (MWWorld::Ptr reference, const std::string& soundId) const; - ///< Is the given sound currently playing on the given object? + bool getSoundPlaying(MWWorld::Ptr reference, const std::string& soundId) const; + ///< Is the given sound currently playing on the given object? - void updateObject(MWWorld::Ptr reference); - ///< Update the position of all sounds connected to the given object. + void updateObject(MWWorld::Ptr reference); + ///< Update the position of all sounds connected to the given object. - void update (float duration); + void update(float duration); + }; + + class Sound_Output + { + SoundManager &mgr; + + virtual bool Initialize(const std::string &devname="") = 0; + virtual void Deinitialize() = 0; + + Sound_Output(SoundManager &mgr) : mgr(mgr) { } + + public: + virtual ~Sound_Output() { } + + friend class OpenAL_Output; + friend class SoundManager; }; } From 10037e79e70ff5a4822f73e7da792c7ba6178e54 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 16 Mar 2012 23:18:15 -0700 Subject: [PATCH 051/488] Add a skeleton decoder class using mpg123 and libsndfile --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwsound/mpgsnd_decoder.cpp | 29 ++++++++++++++++++++++++++ apps/openmw/mwsound/mpgsnd_decoder.hpp | 29 ++++++++++++++++++++++++++ apps/openmw/mwsound/sound_decoder.hpp | 19 +++++++++++++++++ apps/openmw/mwsound/soundmanager.cpp | 2 ++ apps/openmw/mwsound/soundmanager.hpp | 2 +- 6 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 apps/openmw/mwsound/mpgsnd_decoder.cpp create mode 100644 apps/openmw/mwsound/mpgsnd_decoder.hpp create mode 100644 apps/openmw/mwsound/sound_decoder.hpp diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index e9002f1116..bb7655a3c5 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -38,7 +38,7 @@ add_openmw_dir (mwscript ) add_openmw_dir (mwsound - soundmanager openal_output + soundmanager openal_output mpgsnd_decoder ) add_openmw_dir (mwworld diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp new file mode 100644 index 0000000000..cdc392e703 --- /dev/null +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -0,0 +1,29 @@ +#include "mpgsnd_decoder.hpp" + + +namespace MWSound +{ + +bool MpgSnd_Decoder::Open(const std::string &fname) +{ + return false; +} + +void MpgSnd_Decoder::Close() +{ +} + + +MpgSnd_Decoder::MpgSnd_Decoder() +{ + static bool initdone = false; + if(!initdone) + mpg123_init(); + initdone = true; +} + +MpgSnd_Decoder::~MpgSnd_Decoder() +{ +} + +} diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp new file mode 100644 index 0000000000..ffa9037a7a --- /dev/null +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -0,0 +1,29 @@ +#ifndef GAME_SOUND_MPGSND_DECODER_H +#define GAME_SOUND_MPGSND_DECODER_H + +#include + +#include "mpg123.h" +#include "sndfile.h" + +#include "sound_decoder.hpp" + + +namespace MWSound +{ + class MpgSnd_Decoder : public Sound_Decoder + { + virtual bool Open(const std::string &fname); + virtual void Close(); + + MpgSnd_Decoder(); + virtual ~MpgSnd_Decoder(); + + friend class SoundManager; + }; +#ifndef DEFAULT_DECODER +#define DEFAULT_DECODER (::MWSound::MpgSnd_Decoder) +#endif +}; + +#endif diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp new file mode 100644 index 0000000000..0d7e3d9f86 --- /dev/null +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -0,0 +1,19 @@ +#ifndef GAME_SOUND_SOUND_DECODER_H +#define GAME_SOUND_SOUND_DECODER_H + +namespace MWSound +{ + class Sound_Decoder + { + public: + virtual bool Open(const std::string &fname) = 0; + virtual void Close() = 0; + + virtual ~Sound_Decoder() { } + + friend class OpenAL_Output; + friend class SoundManager; + }; +} + +#endif diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 8b852a746c..c22550a2a1 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -12,6 +12,7 @@ #include "../mwworld/world.hpp" #include "../mwworld/player.hpp" +#include "sound_decoder.hpp" #include "openal_output.hpp" #define SOUND_OUT "OpenAL" @@ -28,6 +29,7 @@ #endif #ifdef OPENMW_USE_MPG123 +#include "mpgsnd_decoder.hpp" #define SOUND_IN "mpg123,sndfile" #endif diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index f77222cb4c..8d2184c54d 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -22,6 +22,7 @@ namespace MWWorld namespace MWSound { class Sound_Output; + class Sound_Decoder; class SoundManager { @@ -131,7 +132,6 @@ namespace MWSound virtual void Deinitialize() = 0; Sound_Output(SoundManager &mgr) : mgr(mgr) { } - public: virtual ~Sound_Output() { } From 1322b1e160e2c6a3109b1d623d8ccc87443d8d5c Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 16 Mar 2012 23:40:07 -0700 Subject: [PATCH 052/488] Move Sound_Output's definition to a separate header --- apps/openmw/mwsound/openal_output.cpp | 3 +++ apps/openmw/mwsound/openal_output.hpp | 6 +++++- apps/openmw/mwsound/sound_output.hpp | 26 ++++++++++++++++++++++++++ apps/openmw/mwsound/soundmanager.cpp | 1 + apps/openmw/mwsound/soundmanager.hpp | 15 --------------- 5 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 apps/openmw/mwsound/sound_output.hpp diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 59e9037c4e..3f99100383 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -1,3 +1,6 @@ +#include +#include + #include "openal_output.hpp" namespace MWSound diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 6d0169366c..d5748ee30c 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -1,13 +1,17 @@ #ifndef GAME_SOUND_OPENAL_OUTPUT_H #define GAME_SOUND_OPENAL_OUTPUT_H -#include "soundmanager.hpp" +#include #include "alc.h" #include "al.h" +#include "sound_output.hpp" + namespace MWSound { + class SoundManager; + class OpenAL_Output : public Sound_Output { ALCdevice *Device; diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp new file mode 100644 index 0000000000..b36a4e89fc --- /dev/null +++ b/apps/openmw/mwsound/sound_output.hpp @@ -0,0 +1,26 @@ +#ifndef GAME_SOUND_SOUND_OUTPUT_H +#define GAME_SOUND_SOUND_OUTPUT_H + +#include + +namespace MWSound +{ + class SoundManager; + + class Sound_Output + { + SoundManager &mgr; + + virtual bool Initialize(const std::string &devname="") = 0; + virtual void Deinitialize() = 0; + + Sound_Output(SoundManager &mgr) : mgr(mgr) { } + public: + virtual ~Sound_Output() { } + + friend class OpenAL_Output; + friend class SoundManager; + }; +} + +#endif diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index c22550a2a1..cb9c58715e 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -12,6 +12,7 @@ #include "../mwworld/world.hpp" #include "../mwworld/player.hpp" +#include "sound_output.hpp" #include "sound_decoder.hpp" #include "openal_output.hpp" diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 8d2184c54d..5a58c60b77 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -123,21 +123,6 @@ namespace MWSound void update(float duration); }; - - class Sound_Output - { - SoundManager &mgr; - - virtual bool Initialize(const std::string &devname="") = 0; - virtual void Deinitialize() = 0; - - Sound_Output(SoundManager &mgr) : mgr(mgr) { } - public: - virtual ~Sound_Output() { } - - friend class OpenAL_Output; - friend class SoundManager; - }; } #endif From 46cd84aac56f2a396845cd2caec8e9d6596b9c65 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 16 Mar 2012 23:59:21 -0700 Subject: [PATCH 053/488] Add a skeleton ffmpeg decoder --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwsound/ffmpeg_decoder.cpp | 29 +++++++++++++++++++++++ apps/openmw/mwsound/ffmpeg_decoder.hpp | 32 ++++++++++++++++++++++++++ apps/openmw/mwsound/mpgsnd_decoder.cpp | 4 ++++ 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 apps/openmw/mwsound/ffmpeg_decoder.cpp create mode 100644 apps/openmw/mwsound/ffmpeg_decoder.hpp diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index bb7655a3c5..749b5bc5dd 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -38,7 +38,7 @@ add_openmw_dir (mwscript ) add_openmw_dir (mwsound - soundmanager openal_output mpgsnd_decoder + soundmanager openal_output mpgsnd_decoder ffmpeg_decoder ) add_openmw_dir (mwworld diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp new file mode 100644 index 0000000000..8bd6b3f8e1 --- /dev/null +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -0,0 +1,29 @@ +#ifdef OPENMW_USE_FFMPEG + +#include "ffmpeg_decoder.hpp" + + +namespace MWSound +{ + +bool FFmpeg_Decoder::Open(const std::string &fname) +{ + return false; +} + +void FFmpeg_Decoder::Close() +{ +} + + +FFmpeg_Decoder::FFmpeg_Decoder() +{ +} + +FFmpeg_Decoder::~FFmpeg_Decoder() +{ +} + +} + +#endif diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp new file mode 100644 index 0000000000..2b7363f26a --- /dev/null +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -0,0 +1,32 @@ +#ifndef GAME_SOUND_FFMPEG_DECODER_H +#define GAME_SOUND_FFMPEG_DECODER_H + +#include + +extern "C" +{ +#include +#include +} + +#include "sound_decoder.hpp" + + +namespace MWSound +{ + class FFmpeg_Decoder : public Sound_Decoder + { + virtual bool Open(const std::string &fname); + virtual void Close(); + + FFmpeg_Decoder(); + virtual ~FFmpeg_Decoder(); + + friend class SoundManager; + }; +#ifndef DEFAULT_DECODER +#define DEFAULT_DECODER (::MWSound::FFmpeg_Decoder) +#endif +}; + +#endif diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index cdc392e703..6ca46381dc 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -1,3 +1,5 @@ +#ifdef OPENMW_USE_MPG123 + #include "mpgsnd_decoder.hpp" @@ -27,3 +29,5 @@ MpgSnd_Decoder::~MpgSnd_Decoder() } } + +#endif From 246b0266fb5b7a326f8cccd9d23244ff858e2f8e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 00:11:59 -0700 Subject: [PATCH 054/488] Remove references to Audiere. It's not supported for now. --- CMakeLists.txt | 8 -------- apps/openmw/mwsound/soundmanager.cpp | 4 ---- 2 files changed, 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 876ea8273b..db8f9d1710 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,6 @@ set (OPENMW_VERSION "${OPENMW_VERSION_MAJOR}.${OPENMW_VERSION_MINOR}.${OPENMW_VE configure_file ("${OpenMW_SOURCE_DIR}/Docs/mainpage.hpp.cmake" "${OpenMW_SOURCE_DIR}/Docs/mainpage.hpp") # Sound source selection -option(USE_AUDIERE "use Audiere for sound" OFF) option(USE_FFMPEG "use ffmpeg for sound" OFF) option(USE_MPG123 "use mpg123 + libsndfile for sound" ON) @@ -125,13 +124,6 @@ set(OPENMW_LIBS ${MANGLE_ALL} ${OENGINE_ALL}) set(OPENMW_LIBS_HEADER) # Sound setup -if (USE_AUDIERE) - find_package(Audiere REQUIRED) - set(SOUND_INPUT_INCLUDES ${AUDIERE_INCLUDE_DIR}) - set(SOUND_INPUT_LIBRARY ${AUDIERE_LIBRARY}) - set(SOUND_DEFINE -DOPENMW_USE_AUDIERE) -endif (USE_AUDIERE) - if (USE_FFMPEG) find_package(FFMPEG REQUIRED) set(SOUND_INPUT_INCLUDES ${FFMPEG_INCLUDE_DIR}) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index cb9c58715e..17dfa5ef5b 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -21,10 +21,6 @@ MPG123/libsndfile for input. The OPENMW_USE_x macros are set in CMakeLists.txt. */ -#ifdef OPENMW_USE_AUDIERE -#define SOUND_IN "Audiere" -#endif - #ifdef OPENMW_USE_FFMPEG #define SOUND_IN "FFmpeg" #endif From 637617056b4a6015a151ce8342e57e312c40a662 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 02:45:18 -0700 Subject: [PATCH 055/488] Make a skeleton Sound class --- apps/openmw/mwsound/sound.hpp | 22 ++++++++++++++++++++++ apps/openmw/mwsound/soundmanager.cpp | 14 ++++++++------ apps/openmw/mwsound/soundmanager.hpp | 3 +++ 3 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 apps/openmw/mwsound/sound.hpp diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp new file mode 100644 index 0000000000..9d262416eb --- /dev/null +++ b/apps/openmw/mwsound/sound.hpp @@ -0,0 +1,22 @@ +#ifndef GAME_SOUND_SOUND_H +#define GAME_SOUND_SOUND_H + +#include + +namespace MWSound +{ + class Sound + { + virtual bool Play() = 0; + virtual void Stop() = 0; + virtual bool isPlaying() = 0; + + public: + virtual ~Sound() { } + + friend class OpenAL_Output; + friend class SoundManager; + }; +} + +#endif diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 17dfa5ef5b..d231f1d4ad 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -14,6 +14,7 @@ #include "sound_output.hpp" #include "sound_decoder.hpp" +#include "sound.hpp" #include "openal_output.hpp" #define SOUND_OUT "OpenAL" @@ -143,15 +144,18 @@ namespace MWSound void SoundManager::stopMusic() { + if(mMusic) + mMusic->Stop(); setPlaylist(); } void SoundManager::streamMusicFull(const std::string& filename) { - // Play the sound and tell it to stream, if possible. TODO: - // Store the reference, the jukebox will need to check status, - // control volume etc. + if(mMusic) + mMusic->Stop(); + std::auto_ptr decoder(new DEFAULT_DECODER); + //mMusic.reset(Output->StreamSound(filename, decoder)); } void SoundManager::streamMusic(const std::string& filename) @@ -186,9 +190,7 @@ namespace MWSound bool SoundManager::isMusicPlaying() { - // HACK: Return true to prevent the engine from trying to keep playing - // music and tanking the framerate. - return true; + return mMusic && mMusic->isPlaying(); } bool SoundManager::setPlaylist(std::string playlist) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 5a58c60b77..709ab2817d 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -23,6 +23,7 @@ namespace MWSound { class Sound_Output; class Sound_Decoder; + class Sound; class SoundManager { @@ -36,6 +37,8 @@ namespace MWSound std::auto_ptr Output; + boost::shared_ptr mMusic; + void streamMusicFull(const std::string& filename); ///< Play a soundifle /// \param absolute filename From 9cf42f6d0fcde91c25f5ffe0027cd186223421aa Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 02:51:46 -0700 Subject: [PATCH 056/488] Flesh out the sound decoder a bit more --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 15 ++++ apps/openmw/mwsound/ffmpeg_decoder.hpp | 3 + apps/openmw/mwsound/mpgsnd_decoder.cpp | 95 +++++++++++++++++++++++++- apps/openmw/mwsound/mpgsnd_decoder.hpp | 9 +++ apps/openmw/mwsound/sound_decoder.hpp | 11 +++ 5 files changed, 132 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 8bd6b3f8e1..d3715d5fe9 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -6,8 +6,12 @@ namespace MWSound { +static void fail(const std::string &msg) +{ throw std::runtime_error("FFmpeg exception: "+msg); } + bool FFmpeg_Decoder::Open(const std::string &fname) { + fail("Not currently working"); return false; } @@ -15,6 +19,17 @@ void FFmpeg_Decoder::Close() { } +void FFmpeg_Decoder::GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type) +{ + fail("Not currently working"); +} + +size_t FFmpeg_Decoder::Read(char *buffer, size_t bytes) +{ + fail("Not currently working"); + return 0; +} + FFmpeg_Decoder::FFmpeg_Decoder() { diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index 2b7363f26a..6ff93904af 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -19,6 +19,9 @@ namespace MWSound virtual bool Open(const std::string &fname); virtual void Close(); + virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type); + virtual size_t Read(char *buffer, size_t bytes); + FFmpeg_Decoder(); virtual ~FFmpeg_Decoder(); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index 6ca46381dc..4ba48f607a 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -1,22 +1,115 @@ #ifdef OPENMW_USE_MPG123 +#include +#include + #include "mpgsnd_decoder.hpp" +static void fail(const std::string &msg) +{ throw std::runtime_error("MpgSnd exception: "+msg); } + namespace MWSound { bool MpgSnd_Decoder::Open(const std::string &fname) { + Close(); + + SF_INFO info; + sndFile = sf_open(fname.c_str(), SFM_READ, &info); + if(sndFile) + { + if(info.channels == 1) + chanConfig = MonoChannels; + else if(info.channels == 1) + chanConfig = MonoChannels; + else + { + sf_close(sndFile); + sndFile = NULL; + fail("Unsupported channel count in "+fname); + } + sampleRate = info.samplerate; + return true; + } + + mpgFile = mpg123_new(NULL, NULL); + if(mpgFile && mpg123_open(mpgFile, fname.c_str()) == MPG123_OK) + { + try + { + int encoding, channels; + long rate; + if(mpg123_getformat(mpgFile, &rate, &channels, &encoding) != MPG123_OK) + fail("Failed to get audio format"); + if(encoding != MPG123_ENC_SIGNED_16) + fail("Unsupported encoding in "+fname); + if(channels != 1 && channels != 2) + fail("Unsupported channel count in "+fname); + chanConfig = ((channels==2)?StereoChannels:MonoChannels); + sampleRate = rate; + return true; + } + catch(std::exception &e) + { + mpg123_close(mpgFile); + mpg123_delete(mpgFile); + throw; + } + mpg123_close(mpgFile); + } + if(mpgFile) + mpg123_delete(mpgFile); + mpgFile = NULL; + + fail("Unsupported file type: "+fname); return false; } void MpgSnd_Decoder::Close() { + if(sndFile) + sf_close(sndFile); + sndFile = NULL; + + if(mpgFile) + { + mpg123_close(mpgFile); + mpg123_delete(mpgFile); + mpgFile = NULL; + } } +void MpgSnd_Decoder::GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type) +{ + if(!sndFile && !mpgFile) + fail("No open file"); -MpgSnd_Decoder::MpgSnd_Decoder() + *samplerate = sampleRate; + *chans = chanConfig; + *type = Int16Sample; +} + +size_t MpgSnd_Decoder::Read(char *buffer, size_t bytes) +{ + size_t got = 0; + + if(sndFile) + { + got = sf_read_short(sndFile, (short*)buffer, bytes/2)*2; + } + else if(mpgFile) + { + int err; + err = mpg123_read(mpgFile, (unsigned char*)buffer, bytes, &got); + if(err != MPG123_OK && err != MPG123_DONE) + fail("Failed to read from file"); + } + return got; +} + +MpgSnd_Decoder::MpgSnd_Decoder() : sndFile(NULL), mpgFile(NULL) { static bool initdone = false; if(!initdone) diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index ffa9037a7a..641d891a3e 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -13,9 +13,18 @@ namespace MWSound { class MpgSnd_Decoder : public Sound_Decoder { + SNDFILE *sndFile; + mpg123_handle *mpgFile; + + ChannelConfig chanConfig; + int sampleRate; + virtual bool Open(const std::string &fname); virtual void Close(); + virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type); + virtual size_t Read(char *buffer, size_t bytes); + MpgSnd_Decoder(); virtual ~MpgSnd_Decoder(); diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index 0d7e3d9f86..fd8f4ac515 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -6,9 +6,20 @@ namespace MWSound class Sound_Decoder { public: + enum SampleType { + UInt8Sample, + Int16Sample + }; + enum ChannelConfig { + MonoChannels, + StereoChannels + }; virtual bool Open(const std::string &fname) = 0; virtual void Close() = 0; + virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type) = 0; + virtual size_t Read(char *buffer, size_t bytes) = 0; + virtual ~Sound_Decoder() { } friend class OpenAL_Output; From 1ade01edc84c69692c6b3dc39e0c83389eb9e9cb Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 02:55:08 -0700 Subject: [PATCH 057/488] Add a function to stream sounds --- apps/openmw/mwsound/openal_output.cpp | 188 ++++++++++++++++++++++++++ apps/openmw/mwsound/openal_output.hpp | 4 + apps/openmw/mwsound/sound_output.hpp | 5 + apps/openmw/mwsound/soundmanager.cpp | 2 +- 4 files changed, 198 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 3f99100383..45be366874 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -1,7 +1,11 @@ #include #include +#include #include "openal_output.hpp" +#include "sound_decoder.hpp" +#include "sound.hpp" + namespace MWSound { @@ -9,6 +13,176 @@ namespace MWSound static void fail(const std::string &msg) { throw std::runtime_error("OpenAL exception: " + msg); } +static void throwALerror() +{ + ALenum err = alGetError(); + if(err != AL_NO_ERROR) + fail(alGetString(err)); +} + + +static ALenum getALFormat(Sound_Decoder::ChannelConfig chans, Sound_Decoder::SampleType type) +{ + if(chans == Sound_Decoder::MonoChannels) + { + if(type == Sound_Decoder::Int16Sample) + return AL_FORMAT_MONO16; + else if(type == Sound_Decoder::UInt8Sample) + return AL_FORMAT_MONO8; + else + fail("Unsupported sample type"); + } + else if(chans == Sound_Decoder::StereoChannels) + { + if(type == Sound_Decoder::Int16Sample) + return AL_FORMAT_STEREO16; + else if(type == Sound_Decoder::UInt8Sample) + return AL_FORMAT_STEREO8; + else + fail("Unsupported sample type"); + } + else + fail("Unsupported channel config"); + return AL_NONE; +} + + +class OpenAL_SoundStream : public Sound +{ + // This should be something sane, like 4, but currently cell loads tend to + // cause the stream to underrun + static const ALuint NumBuffers = 150; + static const ALuint BufferSize = 32768; + + ALuint Source; + ALuint Buffers[NumBuffers]; + + ALenum Format; + ALsizei SampleRate; + + std::auto_ptr Decoder; + +public: + OpenAL_SoundStream(std::auto_ptr decoder) : Decoder(decoder) + { + throwALerror(); + + alGenSources(1, &Source); + throwALerror(); + try + { + alGenBuffers(NumBuffers, Buffers); + throwALerror(); + } + catch(std::exception &e) + { + alDeleteSources(1, &Source); + alGetError(); + throw; + } + + try + { + int srate; + enum Sound_Decoder::ChannelConfig chans; + enum Sound_Decoder::SampleType type; + + Decoder->GetInfo(&srate, &chans, &type); + Format = getALFormat(chans, type); + SampleRate = srate; + } + catch(std::exception &e) + { + alDeleteSources(1, &Source); + alDeleteBuffers(NumBuffers, Buffers); + alGetError(); + throw; + } + } + virtual ~OpenAL_SoundStream() + { + alDeleteSources(1, &Source); + alDeleteBuffers(NumBuffers, Buffers); + alGetError(); + Decoder->Close(); + } + + virtual bool Play() + { + std::vector data(BufferSize); + + alSourceStop(Source); + alSourcei(Source, AL_BUFFER, 0); + throwALerror(); + + for(ALuint i = 0;i < NumBuffers;i++) + { + size_t got; + got = Decoder->Read(&data[0], data.size()); + alBufferData(Buffers[i], Format, &data[0], got, SampleRate); + } + throwALerror(); + + alSourceQueueBuffers(Source, NumBuffers, Buffers); + alSourcePlay(Source); + throwALerror(); + + return true; + } + + virtual void Stop() + { + alSourceStop(Source); + alSourcei(Source, AL_BUFFER, 0); + throwALerror(); + // FIXME: Rewind decoder + } + + virtual bool isPlaying() + { + ALint processed, state; + + alGetSourcei(Source, AL_SOURCE_STATE, &state); + alGetSourcei(Source, AL_BUFFERS_PROCESSED, &processed); + throwALerror(); + + if(processed > 0) + { + std::vector data(BufferSize); + do { + ALuint bufid; + size_t got; + + alSourceUnqueueBuffers(Source, 1, &bufid); + processed--; + + got = Decoder->Read(&data[0], data.size()); + if(got > 0) + { + alBufferData(bufid, Format, &data[0], got, SampleRate); + alSourceQueueBuffers(Source, 1, &bufid); + } + } while(processed > 0); + throwALerror(); + } + + if(state != AL_PLAYING && state != AL_PAUSED) + { + ALint queued; + + alGetSourcei(Source, AL_BUFFERS_QUEUED, &queued); + throwALerror(); + if(queued == 0) + return false; + + alSourcePlay(Source); + throwALerror(); + } + + return true; + } +}; + bool OpenAL_Output::Initialize(const std::string &devname) { @@ -50,6 +224,20 @@ void OpenAL_Output::Deinitialize() } +Sound* OpenAL_Output::StreamSound(const std::string &fname, std::auto_ptr decoder) +{ + std::auto_ptr sound; + + if(!decoder->Open(fname)) + return NULL; + + sound.reset(new OpenAL_SoundStream(decoder)); + sound->Play(); + + return sound.release(); +} + + OpenAL_Output::OpenAL_Output(SoundManager &mgr) : Sound_Output(mgr), Device(0), Context(0) { diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index d5748ee30c..b0cd469e57 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -11,6 +11,8 @@ namespace MWSound { class SoundManager; + class Sound_Decoder; + class Sound; class OpenAL_Output : public Sound_Output { @@ -20,6 +22,8 @@ namespace MWSound virtual bool Initialize(const std::string &devname=""); virtual void Deinitialize(); + virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder); + OpenAL_Output(SoundManager &mgr); virtual ~OpenAL_Output(); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index b36a4e89fc..16639de7b3 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -2,10 +2,13 @@ #define GAME_SOUND_SOUND_OUTPUT_H #include +#include namespace MWSound { class SoundManager; + class Sound_Decoder; + class Sound; class Sound_Output { @@ -14,6 +17,8 @@ namespace MWSound virtual bool Initialize(const std::string &devname="") = 0; virtual void Deinitialize() = 0; + virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder) = 0; + Sound_Output(SoundManager &mgr) : mgr(mgr) { } public: virtual ~Sound_Output() { } diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index d231f1d4ad..9ba5479d7e 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -155,7 +155,7 @@ namespace MWSound if(mMusic) mMusic->Stop(); std::auto_ptr decoder(new DEFAULT_DECODER); - //mMusic.reset(Output->StreamSound(filename, decoder)); + mMusic.reset(Output->StreamSound(filename, decoder)); } void SoundManager::streamMusic(const std::string& filename) From 207d7dd89e66d5eccc4f2b62a2288148b1df5fbe Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 03:01:51 -0700 Subject: [PATCH 058/488] Stop and delete the current music before deleting the sound output --- apps/openmw/mwsound/soundmanager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 9ba5479d7e..8b8ffcedcf 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -76,6 +76,9 @@ namespace MWSound SoundManager::~SoundManager() { + if(mMusic) + mMusic->Stop(); + mMusic.reset(); Output.reset(); } From 2f6b73d46149d08478d220d38073d389a673151d Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 03:06:35 -0700 Subject: [PATCH 059/488] Prevent streamMusic from throwing an exception --- apps/openmw/mwsound/soundmanager.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 8b8ffcedcf..b215fd7c57 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -165,7 +165,16 @@ namespace MWSound { std::string filePath = mMusicLibrary.locate(filename, mFSStrict, true).string(); if(!filePath.empty()) - streamMusicFull(filePath); + { + try + { + streamMusicFull(filePath); + } + catch(std::exception &e) + { + std::cout << "Music Error: " << e.what() << "\n"; + } + } } void SoundManager::startRandomTitle() From 1b41987e184fc63576096ad0fbc608105049cc75 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 03:15:07 -0700 Subject: [PATCH 060/488] Move OpenAL_SoundStream function definitions out of the class --- apps/openmw/mwsound/openal_output.cpp | 212 +++++++++++++------------- 1 file changed, 110 insertions(+), 102 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 45be366874..766fa018a0 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -63,125 +63,133 @@ class OpenAL_SoundStream : public Sound std::auto_ptr Decoder; public: - OpenAL_SoundStream(std::auto_ptr decoder) : Decoder(decoder) + OpenAL_SoundStream(std::auto_ptr decoder); + virtual ~OpenAL_SoundStream(); + + virtual bool Play(); + virtual void Stop(); + virtual bool isPlaying(); +}; + +OpenAL_SoundStream::OpenAL_SoundStream(std::auto_ptr decoder) + : Decoder(decoder) +{ + throwALerror(); + + alGenSources(1, &Source); + throwALerror(); + try { + alGenBuffers(NumBuffers, Buffers); throwALerror(); - - alGenSources(1, &Source); - throwALerror(); - try - { - alGenBuffers(NumBuffers, Buffers); - throwALerror(); - } - catch(std::exception &e) - { - alDeleteSources(1, &Source); - alGetError(); - throw; - } - - try - { - int srate; - enum Sound_Decoder::ChannelConfig chans; - enum Sound_Decoder::SampleType type; - - Decoder->GetInfo(&srate, &chans, &type); - Format = getALFormat(chans, type); - SampleRate = srate; - } - catch(std::exception &e) - { - alDeleteSources(1, &Source); - alDeleteBuffers(NumBuffers, Buffers); - alGetError(); - throw; - } } - virtual ~OpenAL_SoundStream() + catch(std::exception &e) + { + alDeleteSources(1, &Source); + alGetError(); + throw; + } + + try + { + int srate; + Sound_Decoder::ChannelConfig chans; + Sound_Decoder::SampleType type; + + Decoder->GetInfo(&srate, &chans, &type); + Format = getALFormat(chans, type); + SampleRate = srate; + } + catch(std::exception &e) { alDeleteSources(1, &Source); alDeleteBuffers(NumBuffers, Buffers); alGetError(); - Decoder->Close(); + throw; } +} +OpenAL_SoundStream::~OpenAL_SoundStream() +{ + alDeleteSources(1, &Source); + alDeleteBuffers(NumBuffers, Buffers); + alGetError(); + Decoder->Close(); +} - virtual bool Play() +bool OpenAL_SoundStream::Play() +{ + std::vector data(BufferSize); + + alSourceStop(Source); + alSourcei(Source, AL_BUFFER, 0); + throwALerror(); + + for(ALuint i = 0;i < NumBuffers;i++) + { + size_t got; + got = Decoder->Read(&data[0], data.size()); + alBufferData(Buffers[i], Format, &data[0], got, SampleRate); + } + throwALerror(); + + alSourceQueueBuffers(Source, NumBuffers, Buffers); + alSourcePlay(Source); + throwALerror(); + + return true; +} + +void OpenAL_SoundStream::Stop() +{ + alSourceStop(Source); + alSourcei(Source, AL_BUFFER, 0); + throwALerror(); + // FIXME: Rewind decoder +} + +bool OpenAL_SoundStream::isPlaying() +{ + ALint processed, state; + + alGetSourcei(Source, AL_SOURCE_STATE, &state); + alGetSourcei(Source, AL_BUFFERS_PROCESSED, &processed); + throwALerror(); + + if(processed > 0) { std::vector data(BufferSize); - - alSourceStop(Source); - alSourcei(Source, AL_BUFFER, 0); - throwALerror(); - - for(ALuint i = 0;i < NumBuffers;i++) - { + do { + ALuint bufid; size_t got; - got = Decoder->Read(&data[0], data.size()); - alBufferData(Buffers[i], Format, &data[0], got, SampleRate); - } - throwALerror(); - alSourceQueueBuffers(Source, NumBuffers, Buffers); + alSourceUnqueueBuffers(Source, 1, &bufid); + processed--; + + got = Decoder->Read(&data[0], data.size()); + if(got > 0) + { + alBufferData(bufid, Format, &data[0], got, SampleRate); + alSourceQueueBuffers(Source, 1, &bufid); + } + } while(processed > 0); + throwALerror(); + } + + if(state != AL_PLAYING && state != AL_PAUSED) + { + ALint queued; + + alGetSourcei(Source, AL_BUFFERS_QUEUED, &queued); + throwALerror(); + if(queued == 0) + return false; + alSourcePlay(Source); throwALerror(); - - return true; } - virtual void Stop() - { - alSourceStop(Source); - alSourcei(Source, AL_BUFFER, 0); - throwALerror(); - // FIXME: Rewind decoder - } - - virtual bool isPlaying() - { - ALint processed, state; - - alGetSourcei(Source, AL_SOURCE_STATE, &state); - alGetSourcei(Source, AL_BUFFERS_PROCESSED, &processed); - throwALerror(); - - if(processed > 0) - { - std::vector data(BufferSize); - do { - ALuint bufid; - size_t got; - - alSourceUnqueueBuffers(Source, 1, &bufid); - processed--; - - got = Decoder->Read(&data[0], data.size()); - if(got > 0) - { - alBufferData(bufid, Format, &data[0], got, SampleRate); - alSourceQueueBuffers(Source, 1, &bufid); - } - } while(processed > 0); - throwALerror(); - } - - if(state != AL_PLAYING && state != AL_PAUSED) - { - ALint queued; - - alGetSourcei(Source, AL_BUFFERS_QUEUED, &queued); - throwALerror(); - if(queued == 0) - return false; - - alSourcePlay(Source); - throwALerror(); - } - - return true; - } -}; + return true; +} bool OpenAL_Output::Initialize(const std::string &devname) From caf5d71d44b8bb0382842b56b65148cde4baa8d1 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 03:18:28 -0700 Subject: [PATCH 061/488] Make the sound decoder's Open method return void Errors are thrown, not returned --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 3 +-- apps/openmw/mwsound/ffmpeg_decoder.hpp | 2 +- apps/openmw/mwsound/mpgsnd_decoder.cpp | 7 +++---- apps/openmw/mwsound/mpgsnd_decoder.hpp | 2 +- apps/openmw/mwsound/openal_output.cpp | 3 +-- apps/openmw/mwsound/sound_decoder.hpp | 2 +- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index d3715d5fe9..5c64e4dd10 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -9,10 +9,9 @@ namespace MWSound static void fail(const std::string &msg) { throw std::runtime_error("FFmpeg exception: "+msg); } -bool FFmpeg_Decoder::Open(const std::string &fname) +void FFmpeg_Decoder::Open(const std::string &fname) { fail("Not currently working"); - return false; } void FFmpeg_Decoder::Close() diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index 6ff93904af..205fe8865b 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -16,7 +16,7 @@ namespace MWSound { class FFmpeg_Decoder : public Sound_Decoder { - virtual bool Open(const std::string &fname); + virtual void Open(const std::string &fname); virtual void Close(); virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index 4ba48f607a..2c35adeb33 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -12,7 +12,7 @@ static void fail(const std::string &msg) namespace MWSound { -bool MpgSnd_Decoder::Open(const std::string &fname) +void MpgSnd_Decoder::Open(const std::string &fname) { Close(); @@ -31,7 +31,7 @@ bool MpgSnd_Decoder::Open(const std::string &fname) fail("Unsupported channel count in "+fname); } sampleRate = info.samplerate; - return true; + return; } mpgFile = mpg123_new(NULL, NULL); @@ -49,7 +49,7 @@ bool MpgSnd_Decoder::Open(const std::string &fname) fail("Unsupported channel count in "+fname); chanConfig = ((channels==2)?StereoChannels:MonoChannels); sampleRate = rate; - return true; + return; } catch(std::exception &e) { @@ -64,7 +64,6 @@ bool MpgSnd_Decoder::Open(const std::string &fname) mpgFile = NULL; fail("Unsupported file type: "+fname); - return false; } void MpgSnd_Decoder::Close() diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index 641d891a3e..391cfbd6d3 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -19,7 +19,7 @@ namespace MWSound ChannelConfig chanConfig; int sampleRate; - virtual bool Open(const std::string &fname); + virtual void Open(const std::string &fname); virtual void Close(); virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type); diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 766fa018a0..7668dcac29 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -236,8 +236,7 @@ Sound* OpenAL_Output::StreamSound(const std::string &fname, std::auto_ptr sound; - if(!decoder->Open(fname)) - return NULL; + decoder->Open(fname); sound.reset(new OpenAL_SoundStream(decoder)); sound->Play(); diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index fd8f4ac515..4f778c3b31 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -14,7 +14,7 @@ namespace MWSound MonoChannels, StereoChannels }; - virtual bool Open(const std::string &fname) = 0; + virtual void Open(const std::string &fname) = 0; virtual void Close() = 0; virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type) = 0; From 2429755bf1daa4ddad0cae74171cf5ef41c71703 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 03:20:43 -0700 Subject: [PATCH 062/488] Make the sound's Play method return void --- apps/openmw/mwsound/openal_output.cpp | 6 ++---- apps/openmw/mwsound/sound.hpp | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 7668dcac29..246fce7e10 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -66,7 +66,7 @@ public: OpenAL_SoundStream(std::auto_ptr decoder); virtual ~OpenAL_SoundStream(); - virtual bool Play(); + virtual void Play(); virtual void Stop(); virtual bool isPlaying(); }; @@ -116,7 +116,7 @@ OpenAL_SoundStream::~OpenAL_SoundStream() Decoder->Close(); } -bool OpenAL_SoundStream::Play() +void OpenAL_SoundStream::Play() { std::vector data(BufferSize); @@ -135,8 +135,6 @@ bool OpenAL_SoundStream::Play() alSourceQueueBuffers(Source, NumBuffers, Buffers); alSourcePlay(Source); throwALerror(); - - return true; } void OpenAL_SoundStream::Stop() diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 9d262416eb..5ffb48820c 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -7,7 +7,7 @@ namespace MWSound { class Sound { - virtual bool Play() = 0; + virtual void Play() = 0; virtual void Stop() = 0; virtual bool isPlaying() = 0; From 2dabdcb9e551a97ff9d2d67a344cc66ffbf7117a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 04:22:54 -0700 Subject: [PATCH 063/488] Add a function to update the sound listener --- apps/openmw/mwsound/openal_output.cpp | 12 ++++++++++++ apps/openmw/mwsound/openal_output.hpp | 2 ++ apps/openmw/mwsound/sound_output.hpp | 3 +++ 3 files changed, 17 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 246fce7e10..1a02dc258f 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -243,6 +243,18 @@ Sound* OpenAL_Output::StreamSound(const std::string &fname, std::auto_ptr decoder); + virtual void UpdateListener(float pos[3], float atdir[3], float updir[3]); + OpenAL_Output(SoundManager &mgr); virtual ~OpenAL_Output(); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 16639de7b3..a8a91cca1b 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -19,6 +19,9 @@ namespace MWSound virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder) = 0; + // FIXME: This should take an MWWorld::Ptr that represents the in-world camera + virtual void UpdateListener(float pos[3], float atdir[3], float updir[3]) = 0; + Sound_Output(SoundManager &mgr) : mgr(mgr) { } public: virtual ~Sound_Output() { } From a46f8ced05c519a6d6b921ae3eb1ca12385c6583 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 06:18:59 -0700 Subject: [PATCH 064/488] Keep the sound output's listener updated with the camera position --- apps/openmw/mwsound/openal_output.cpp | 7 ++----- apps/openmw/mwsound/soundmanager.cpp | 23 ++++++++++++++++++++++- apps/openmw/mwsound/soundmanager.hpp | 1 + 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 1a02dc258f..2dbe4baad1 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -245,11 +245,8 @@ Sound* OpenAL_Output::StreamSound(const std::string &fname, std::auto_ptrgetPlayer().getPlayer().getCell(); static int total = 0; @@ -363,4 +363,25 @@ namespace MWSound pos += chance; } } + + void SoundManager::update(float duration) + { + static float timePassed = 0.0; + + timePassed += duration; + if(timePassed > (1.0f/30.0f)) + { + timePassed = 0.0f; + Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); + + Ogre::Vector3 nPos, nDir, nUp; + nPos = cam->getRealPosition(); + nDir = cam->getRealDirection(); + nUp = cam->getRealUp(); + + Output->UpdateListener(&nPos[0], &nDir[0], &nUp[0]); + } + + updateRegionSound(duration); + } } diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 709ab2817d..b31e1db7f1 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -62,6 +62,7 @@ namespace MWSound bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; void removeCell(const MWWorld::Ptr::CellStore *cell); void updatePositions(MWWorld::Ptr ptr); + void updateRegionSound(float duration); public: SoundManager(Ogre::Root*, Ogre::Camera*, From 656863ec6e13ab9c73b66eca069de9c73a716608 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 06:51:44 -0700 Subject: [PATCH 065/488] Add functions to play sounds --- apps/openmw/mwsound/openal_output.cpp | 16 +++++++++++ apps/openmw/mwsound/openal_output.hpp | 6 ++++ apps/openmw/mwsound/sound_output.hpp | 7 +++++ apps/openmw/mwsound/soundmanager.cpp | 41 +++++++++++++++++++++------ 4 files changed, 62 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 2dbe4baad1..a183909d38 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -230,6 +230,22 @@ void OpenAL_Output::Deinitialize() } +Sound* OpenAL_Output::PlaySound(const std::string &fname, std::auto_ptr decoder, + float volume, float pitch, bool loop) +{ + fail("PlaySound not yet supported"); + return NULL; +} + +Sound* OpenAL_Output::PlaySound3D(const std::string &fname, std::auto_ptr decoder, + MWWorld::Ptr ptr, float volume, float pitch, + float min, float max, bool loop) +{ + fail("PlaySound3D not yet supported"); + return NULL; +} + + Sound* OpenAL_Output::StreamSound(const std::string &fname, std::auto_ptr decoder) { std::auto_ptr sound; diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 6dd5a2c230..0ab8dd3496 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -22,6 +22,12 @@ namespace MWSound virtual bool Initialize(const std::string &devname=""); virtual void Deinitialize(); + virtual Sound *PlaySound(const std::string &fname, std::auto_ptr decoder, + float volume, float pitch, bool loop); + virtual Sound *PlaySound3D(const std::string &fname, std::auto_ptr decoder, + MWWorld::Ptr ptr, float volume, float pitch, + float min, float max, bool loop); + virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder); virtual void UpdateListener(float pos[3], float atdir[3], float updir[3]); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index a8a91cca1b..ba98092915 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -4,6 +4,8 @@ #include #include +#include "../mwworld/ptr.hpp" + namespace MWSound { class SoundManager; @@ -17,6 +19,11 @@ namespace MWSound virtual bool Initialize(const std::string &devname="") = 0; virtual void Deinitialize() = 0; + virtual Sound *PlaySound(const std::string &fname, std::auto_ptr decoder, + float volume, float pitch, bool loop) = 0; + virtual Sound *PlaySound3D(const std::string &fname, std::auto_ptr decoder, + MWWorld::Ptr ptr, float volume, float pitch, + float min, float max, bool loop) = 0; virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder) = 0; // FIXME: This should take an MWWorld::Ptr that represents the in-world camera diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 242755e95d..b24a748683 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -120,7 +120,17 @@ namespace MWSound float min, float max, bool loop, bool untracked) { - //std::cout << "Cannot load " << file << ", skipping.\n"; + try + { + Sound *sound; + std::auto_ptr decoder(new DEFAULT_DECODER); + sound = Output->PlaySound3D(file, decoder, ptr, volume, pitch, min, max, loop); + delete sound; + } + catch(std::exception &e) + { + std::cout <<"Sound play error: "< decoder(new DEFAULT_DECODER); + sound = Output->PlaySound(file, decoder, volume, pitch, loop); + delete sound; + } + catch(std::exception &e) + { + std::cout <<"Sound play error: "< Date: Sat, 17 Mar 2012 08:02:46 -0700 Subject: [PATCH 066/488] Keep a handle on played sounds --- apps/openmw/mwsound/soundmanager.cpp | 56 ++++++++++++++++++++++++---- apps/openmw/mwsound/soundmanager.hpp | 8 +++- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index b24a748683..535dbe774e 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -76,6 +76,8 @@ namespace MWSound SoundManager::~SoundManager() { + LooseSounds.clear(); + ActiveSounds.clear(); if(mMusic) mMusic->Stop(); mMusic.reset(); @@ -113,7 +115,7 @@ namespace MWSound } // Add a sound to the list and play it - void SoundManager::add(const std::string &file, + void SoundManager::play3d(const std::string &file, MWWorld::Ptr ptr, const std::string &id, float volume, float pitch, @@ -125,7 +127,10 @@ namespace MWSound Sound *sound; std::auto_ptr decoder(new DEFAULT_DECODER); sound = Output->PlaySound3D(file, decoder, ptr, volume, pitch, min, max, loop); - delete sound; + if(untracked) + LooseSounds[id] = SoundPtr(sound); + else + ActiveSounds[ptr][id] = SoundPtr(sound); } catch(std::exception &e) { @@ -137,6 +142,22 @@ namespace MWSound // remove the entire object and stop all its sounds. void SoundManager::remove(MWWorld::Ptr ptr, const std::string &id) { + SoundMap::iterator snditer = ActiveSounds.find(ptr); + if(snditer == ActiveSounds.end()) + return; + + if(!id.empty()) + { + IDMap::iterator iditer = snditer->second.find(id); + if(iditer != snditer->second.end()) + { + snditer->second.erase(iditer); + if(snditer->second.size() == 0) + ActiveSounds.erase(snditer); + } + } + else + ActiveSounds.erase(snditer); } bool SoundManager::isPlaying(MWWorld::Ptr ptr, const std::string &id) const @@ -149,6 +170,14 @@ namespace MWSound // Remove all references to objects belonging to a given cell void SoundManager::removeCell(const MWWorld::Ptr::CellStore *cell) { + SoundMap::iterator snditer = ActiveSounds.begin(); + while(snditer != ActiveSounds.end()) + { + if(snditer->first.getCell() == cell) + ActiveSounds.erase(snditer++); + else + snditer++; + } } void SoundManager::updatePositions(MWWorld::Ptr ptr) @@ -260,7 +289,7 @@ namespace MWSound // The range values are not tested std::string filePath = Files::FileListLocator(mSoundFiles, filename, mFSStrict, true); if(!filePath.empty()) - add(filePath, ptr, "_say_sound", 1, 1, 100, 20000, false); + play3d(filePath, ptr, "_say_sound", 1, 1, 100, 20000, false); } bool SoundManager::sayDone(MWWorld::Ptr ptr) const @@ -280,7 +309,7 @@ namespace MWSound Sound *sound; std::auto_ptr decoder(new DEFAULT_DECODER); sound = Output->PlaySound(file, decoder, volume, pitch, loop); - delete sound; + LooseSounds[soundId] = SoundPtr(sound); } catch(std::exception &e) { @@ -298,7 +327,7 @@ namespace MWSound float min, max; std::string file = lookup(soundId, volume, min, max); if(!file.empty()) - add(file, ptr, soundId, volume, pitch, min, max, false); + play3d(file, ptr, soundId, volume, pitch, min, max, false); else std::cout << "Sound file " << soundId << " not found, skipping.\n"; } @@ -315,6 +344,9 @@ namespace MWSound void SoundManager::stopSound(const std::string& soundId) { + IDMap::iterator iditer = LooseSounds.find(soundId); + if(iditer != LooseSounds.end()) + LooseSounds.erase(iditer); } bool SoundManager::getSoundPlaying(MWWorld::Ptr ptr, const std::string& soundId) const @@ -382,7 +414,7 @@ namespace MWSound { //play sound std::cout << "Sound: " << go <<" Chance:" << chance << "\n"; - playSound(go, 20.0, 1.0); + playSound(go, 1.0f, 1.0f); break; } pos += chance; @@ -397,14 +429,24 @@ namespace MWSound if(timePassed > (1.0f/30.0f)) { timePassed = 0.0f; - Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); + Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); Ogre::Vector3 nPos, nDir, nUp; nPos = cam->getRealPosition(); nDir = cam->getRealDirection(); nUp = cam->getRealUp(); Output->UpdateListener(&nPos[0], &nDir[0], &nUp[0]); + + + IDMap::iterator snditer = LooseSounds.begin(); + while(snditer != LooseSounds.end()) + { + if(!snditer->second->isPlaying()) + LooseSounds.erase(snditer++); + else + snditer++; + } } updateRegionSound(duration); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index b31e1db7f1..7b103dbad7 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -52,9 +52,15 @@ namespace MWSound // Points to the current playlist of music files stored in the music library const Files::PathContainer* mCurrentPlaylist; + typedef boost::shared_ptr SoundPtr; + typedef std::map IDMap; + typedef std::map SoundMap; + SoundMap ActiveSounds; + IDMap LooseSounds; + std::string lookup(const std::string &soundId, float &volume, float &min, float &max); - void add(const std::string &file, + void play3d(const std::string &file, MWWorld::Ptr ptr, const std::string &id, float volume, float pitch, float min, float max, bool loop, bool untracked=false); From d57051375dda480be65fbc5127b4d4433d99e0e1 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 09:15:47 -0700 Subject: [PATCH 067/488] Implement non-streaming sounds with OpenAL --- apps/openmw/mwsound/openal_output.cpp | 166 +++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index a183909d38..ac639416f3 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -47,6 +47,32 @@ static ALenum getALFormat(Sound_Decoder::ChannelConfig chans, Sound_Decoder::Sam } +ALuint LoadBuffer(std::auto_ptr decoder) +{ + int srate; + Sound_Decoder::ChannelConfig chans; + Sound_Decoder::SampleType type; + ALenum format; + + decoder->GetInfo(&srate, &chans, &type); + format = getALFormat(chans, type); + + std::vector data(32768); + size_t got, total = 0; + while((got=decoder->Read(&data[total], data.size()-total)) > 0) + { + total += got; + data.resize(total*2); + } + data.resize(total); + + ALuint buf; + alGenBuffers(1, &buf); + alBufferData(buf, format, &data[0], total, srate); + return buf; +} + + class OpenAL_SoundStream : public Sound { // This should be something sane, like 4, but currently cell loads tend to @@ -71,6 +97,21 @@ public: virtual bool isPlaying(); }; +class OpenAL_Sound : public Sound +{ +public: + ALuint Source; + ALuint Buffer; + + OpenAL_Sound(ALuint src, ALuint buf); + virtual ~OpenAL_Sound(); + + virtual void Play(); + virtual void Stop(); + virtual bool isPlaying(); +}; + + OpenAL_SoundStream::OpenAL_SoundStream(std::auto_ptr decoder) : Decoder(decoder) { @@ -190,6 +231,38 @@ bool OpenAL_SoundStream::isPlaying() } +OpenAL_Sound::OpenAL_Sound(ALuint src, ALuint buf) + : Source(src), Buffer(buf) +{ +} +OpenAL_Sound::~OpenAL_Sound() +{ + alDeleteSources(1, &Source); + alDeleteBuffers(1, &Buffer); + alGetError(); +} + +void OpenAL_Sound::Play() +{ +} + +void OpenAL_Sound::Stop() +{ + alSourceStop(Source); + throwALerror(); +} + +bool OpenAL_Sound::isPlaying() +{ + ALint state; + + alGetSourcei(Source, AL_SOURCE_STATE, &state); + throwALerror(); + + return state==AL_PLAYING; +} + + bool OpenAL_Output::Initialize(const std::string &devname) { if(Context) @@ -233,16 +306,97 @@ void OpenAL_Output::Deinitialize() Sound* OpenAL_Output::PlaySound(const std::string &fname, std::auto_ptr decoder, float volume, float pitch, bool loop) { - fail("PlaySound not yet supported"); - return NULL; + throwALerror(); + + decoder->Open(fname); + + ALuint src=0, buf=0; + try + { + buf = LoadBuffer(decoder); + alGenSources(1, &src); + throwALerror(); + } + catch(std::exception &e) + { + if(alIsSource(buf)) + alDeleteSources(1, &src); + if(alIsBuffer(buf)) + alDeleteBuffers(1, &buf); + alGetError(); + throw; + } + + std::auto_ptr sound(new OpenAL_Sound(src, buf)); + alSource3f(src, AL_POSITION, 0.0f, 0.0f, 0.0f); + alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + + alSourcef(src, AL_REFERENCE_DISTANCE, 1.0f); + alSourcef(src, AL_MAX_DISTANCE, 1000.0f); + alSourcef(src, AL_ROLLOFF_FACTOR, 0.0f); + + alSourcef(src, AL_GAIN, volume); + alSourcef(src, AL_PITCH, pitch); + + alSourcei(src, AL_SOURCE_RELATIVE, AL_TRUE); + alSourcei(src, AL_LOOPING, (loop?AL_TRUE:AL_FALSE)); + throwALerror(); + + alSourcei(src, AL_BUFFER, buf); + alSourcePlay(src); + throwALerror(); + + return sound.release(); } Sound* OpenAL_Output::PlaySound3D(const std::string &fname, std::auto_ptr decoder, - MWWorld::Ptr ptr, float volume, float pitch, - float min, float max, bool loop) + MWWorld::Ptr ptr, float volume, float pitch, + float min, float max, bool loop) { - fail("PlaySound3D not yet supported"); - return NULL; + throwALerror(); + + decoder->Open(fname); + + ALuint src=0, buf=0; + try + { + buf = LoadBuffer(decoder); + alGenSources(1, &src); + throwALerror(); + } + catch(std::exception &e) + { + if(alIsSource(buf)) + alDeleteSources(1, &src); + if(alIsBuffer(buf)) + alDeleteBuffers(1, &buf); + alGetError(); + throw; + } + + std::auto_ptr sound(new OpenAL_Sound(src, buf)); + const float *pos = ptr.getCellRef().pos.pos; + alSource3f(src, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + + alSourcef(src, AL_REFERENCE_DISTANCE, min); + alSourcef(src, AL_MAX_DISTANCE, max); + alSourcef(src, AL_ROLLOFF_FACTOR, 1.0f); + + alSourcef(src, AL_GAIN, volume); + alSourcef(src, AL_PITCH, pitch); + + alSourcei(src, AL_SOURCE_RELATIVE, AL_FALSE); + alSourcei(src, AL_LOOPING, (loop?AL_TRUE:AL_FALSE)); + throwALerror(); + + alSourcei(src, AL_BUFFER, buf); + alSourcePlay(src); + throwALerror(); + + return sound.release(); } From e49a090af787faf4115f0dece1a4aee7dd0bb70d Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 09:16:09 -0700 Subject: [PATCH 068/488] Remove unnecessary hack --- apps/openmw/mwsound/soundmanager.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 535dbe774e..796c490d9a 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -162,9 +162,15 @@ namespace MWSound bool SoundManager::isPlaying(MWWorld::Ptr ptr, const std::string &id) const { - // HACK: Return true to prevent the engine from trying to keep playing - // sounds and tanking the framerate. - return true; + SoundMap::const_iterator snditer = ActiveSounds.find(ptr); + if(snditer == ActiveSounds.end()) + return false; + + IDMap::const_iterator iditer = snditer->second.find(id); + if(iditer == snditer->second.end()) + return false; + + return iditer->second->isPlaying(); } // Remove all references to objects belonging to a given cell From cac07d0fbf5035f47dbeb4d8ed7fa64dac615394 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 09:27:31 -0700 Subject: [PATCH 069/488] Remove some unnecessary methods --- apps/openmw/mwsound/openal_output.cpp | 7 +------ apps/openmw/mwsound/sound.hpp | 1 - apps/openmw/mwsound/soundmanager.cpp | 6 +----- apps/openmw/mwsound/soundmanager.hpp | 1 - 4 files changed, 2 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index ac639416f3..bf972512bc 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -92,7 +92,7 @@ public: OpenAL_SoundStream(std::auto_ptr decoder); virtual ~OpenAL_SoundStream(); - virtual void Play(); + void Play(); virtual void Stop(); virtual bool isPlaying(); }; @@ -106,7 +106,6 @@ public: OpenAL_Sound(ALuint src, ALuint buf); virtual ~OpenAL_Sound(); - virtual void Play(); virtual void Stop(); virtual bool isPlaying(); }; @@ -242,10 +241,6 @@ OpenAL_Sound::~OpenAL_Sound() alGetError(); } -void OpenAL_Sound::Play() -{ -} - void OpenAL_Sound::Stop() { alSourceStop(Source); diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 5ffb48820c..5fb996e28a 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -7,7 +7,6 @@ namespace MWSound { class Sound { - virtual void Play() = 0; virtual void Stop() = 0; virtual bool isPlaying() = 0; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 796c490d9a..b1caf7ff37 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -186,10 +186,6 @@ namespace MWSound } } - void SoundManager::updatePositions(MWWorld::Ptr ptr) - { - } - void SoundManager::stopMusic() { if(mMusic) @@ -365,7 +361,7 @@ namespace MWSound void SoundManager::updateObject(MWWorld::Ptr ptr) { - updatePositions(ptr); + // FIXME: Update tracked sounds that are using this ptr } void SoundManager::updateRegionSound(float duration) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 7b103dbad7..df7e696dac 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -67,7 +67,6 @@ namespace MWSound void remove(MWWorld::Ptr ptr, const std::string &id = ""); bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; void removeCell(const MWWorld::Ptr::CellStore *cell); - void updatePositions(MWWorld::Ptr ptr); void updateRegionSound(float duration); public: From 979ae89aab8dadde4efff46e5a01e91436665fa7 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 09:37:41 -0700 Subject: [PATCH 070/488] Pass volume and pitch parameters to streamed sounds --- apps/openmw/mwsound/openal_output.cpp | 10 ++++++---- apps/openmw/mwsound/openal_output.hpp | 3 ++- apps/openmw/mwsound/sound_output.hpp | 3 ++- apps/openmw/mwsound/soundmanager.cpp | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index bf972512bc..9131bbe296 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -92,7 +92,7 @@ public: OpenAL_SoundStream(std::auto_ptr decoder); virtual ~OpenAL_SoundStream(); - void Play(); + void Play(float volume, float pitch); virtual void Stop(); virtual bool isPlaying(); }; @@ -156,12 +156,14 @@ OpenAL_SoundStream::~OpenAL_SoundStream() Decoder->Close(); } -void OpenAL_SoundStream::Play() +void OpenAL_SoundStream::Play(float volume, float pitch) { std::vector data(BufferSize); alSourceStop(Source); alSourcei(Source, AL_BUFFER, 0); + alSourcef(Source, AL_GAIN, volume); + alSourcef(Source, AL_PITCH, pitch); throwALerror(); for(ALuint i = 0;i < NumBuffers;i++) @@ -395,14 +397,14 @@ Sound* OpenAL_Output::PlaySound3D(const std::string &fname, std::auto_ptr decoder) +Sound* OpenAL_Output::StreamSound(const std::string &fname, std::auto_ptr decoder, float volume, float pitch) { std::auto_ptr sound; decoder->Open(fname); sound.reset(new OpenAL_SoundStream(decoder)); - sound->Play(); + sound->Play(volume, pitch); return sound.release(); } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 0ab8dd3496..65fe89c9e6 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -28,7 +28,8 @@ namespace MWSound MWWorld::Ptr ptr, float volume, float pitch, float min, float max, bool loop); - virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder); + virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder, + float volume, float pitch); virtual void UpdateListener(float pos[3], float atdir[3], float updir[3]); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index ba98092915..9c8d0303b3 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -24,7 +24,8 @@ namespace MWSound virtual Sound *PlaySound3D(const std::string &fname, std::auto_ptr decoder, MWWorld::Ptr ptr, float volume, float pitch, float min, float max, bool loop) = 0; - virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder) = 0; + virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder, + float volume, float pitch) = 0; // FIXME: This should take an MWWorld::Ptr that represents the in-world camera virtual void UpdateListener(float pos[3], float atdir[3], float updir[3]) = 0; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index b1caf7ff37..cab179f616 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -199,7 +199,7 @@ namespace MWSound if(mMusic) mMusic->Stop(); std::auto_ptr decoder(new DEFAULT_DECODER); - mMusic.reset(Output->StreamSound(filename, decoder)); + mMusic.reset(Output->StreamSound(filename, decoder, 0.4f, 1.0f)); } void SoundManager::streamMusic(const std::string& filename) From 5563f583ff6821337ae49c385986c84730925c6f Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 09:51:03 -0700 Subject: [PATCH 071/488] Add and implement methods to update tracked sounds on an object --- apps/openmw/mwsound/openal_output.cpp | 20 ++++++++++++++++++++ apps/openmw/mwsound/sound.hpp | 3 +++ apps/openmw/mwsound/soundmanager.cpp | 14 ++++++++++---- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 9131bbe296..c460aeb299 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -95,6 +95,7 @@ public: void Play(float volume, float pitch); virtual void Stop(); virtual bool isPlaying(); + virtual void Update(MWWorld::Ptr ptr); }; class OpenAL_Sound : public Sound @@ -108,6 +109,7 @@ public: virtual void Stop(); virtual bool isPlaying(); + virtual void Update(MWWorld::Ptr ptr); }; @@ -231,6 +233,15 @@ bool OpenAL_SoundStream::isPlaying() return true; } +void OpenAL_SoundStream::Update(MWWorld::Ptr ptr) +{ + const float *pos = ptr.getCellRef().pos.pos; + alSource3f(Source, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(Source, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(Source, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + throwALerror(); +} + OpenAL_Sound::OpenAL_Sound(ALuint src, ALuint buf) : Source(src), Buffer(buf) @@ -259,6 +270,15 @@ bool OpenAL_Sound::isPlaying() return state==AL_PLAYING; } +void OpenAL_Sound::Update(MWWorld::Ptr ptr) +{ + const float *pos = ptr.getCellRef().pos.pos; + alSource3f(Source, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(Source, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(Source, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + throwALerror(); +} + bool OpenAL_Output::Initialize(const std::string &devname) { diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 5fb996e28a..99be9dfeb6 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -3,12 +3,15 @@ #include +#include "../mwworld/ptr.hpp" + namespace MWSound { class Sound { virtual void Stop() = 0; virtual bool isPlaying() = 0; + virtual void Update(MWWorld::Ptr ptr) = 0; public: virtual ~Sound() { } diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index cab179f616..5918a9cf7b 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -353,15 +353,21 @@ namespace MWSound bool SoundManager::getSoundPlaying(MWWorld::Ptr ptr, const std::string& soundId) const { - // Mark all sounds as playing, otherwise the scripts will just - // keep trying to play them every frame. - return isPlaying(ptr, soundId); } void SoundManager::updateObject(MWWorld::Ptr ptr) { - // FIXME: Update tracked sounds that are using this ptr + SoundMap::iterator snditer = ActiveSounds.find(ptr); + if(snditer == ActiveSounds.end()) + return; + + IDMap::iterator iditer = snditer->second.begin(); + while(iditer != snditer->second.end()) + { + iditer->second->Update(ptr); + iditer++; + } } void SoundManager::updateRegionSound(float duration) From 87adf6002a4c8933269177038771db4a71d449d2 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 09:57:39 -0700 Subject: [PATCH 072/488] Fix a copy-paste typo in the openal output --- apps/openmw/mwsound/openal_output.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index c460aeb299..c8ed2ad8b1 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -336,7 +336,7 @@ Sound* OpenAL_Output::PlaySound(const std::string &fname, std::auto_ptr Date: Sat, 17 Mar 2012 10:16:22 -0700 Subject: [PATCH 073/488] Pass the loop and untracked flags when playing a 3d sound --- apps/openmw/mwsound/soundmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 5918a9cf7b..9f80a8e20f 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -329,7 +329,7 @@ namespace MWSound float min, max; std::string file = lookup(soundId, volume, min, max); if(!file.empty()) - play3d(file, ptr, soundId, volume, pitch, min, max, false); + play3d(file, ptr, soundId, volume, pitch, min, max, loop, untracked); else std::cout << "Sound file " << soundId << " not found, skipping.\n"; } From 7160d20db33f4b9e3d136dc613aa64a4c780412d Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 10:36:34 -0700 Subject: [PATCH 074/488] Be more consistent with the vector orientations given the sound handler --- apps/openmw/mwsound/openal_output.cpp | 13 ++++++++----- apps/openmw/mwsound/openal_output.hpp | 4 ++-- apps/openmw/mwsound/sound_output.hpp | 5 ++--- apps/openmw/mwsound/soundmanager.cpp | 8 ++++++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index c8ed2ad8b1..0cff2303fd 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -368,7 +368,7 @@ Sound* OpenAL_Output::PlaySound(const std::string &fname, std::auto_ptr decoder, - MWWorld::Ptr ptr, float volume, float pitch, + const float *pos, float volume, float pitch, float min, float max, bool loop) { throwALerror(); @@ -393,7 +393,6 @@ Sound* OpenAL_Output::PlaySound3D(const std::string &fname, std::auto_ptr sound(new OpenAL_Sound(src, buf)); - const float *pos = ptr.getCellRef().pos.pos; alSource3f(src, AL_POSITION, pos[0], pos[2], -pos[1]); alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -430,10 +429,14 @@ Sound* OpenAL_Output::StreamSound(const std::string &fname, std::auto_ptr decoder, float volume, float pitch, bool loop); virtual Sound *PlaySound3D(const std::string &fname, std::auto_ptr decoder, - MWWorld::Ptr ptr, float volume, float pitch, + const float *pos, float volume, float pitch, float min, float max, bool loop); virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder, float volume, float pitch); - virtual void UpdateListener(float pos[3], float atdir[3], float updir[3]); + virtual void UpdateListener(const float *pos, const float *atdir, const float *updir); OpenAL_Output(SoundManager &mgr); virtual ~OpenAL_Output(); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 9c8d0303b3..c69247cc9d 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -22,13 +22,12 @@ namespace MWSound virtual Sound *PlaySound(const std::string &fname, std::auto_ptr decoder, float volume, float pitch, bool loop) = 0; virtual Sound *PlaySound3D(const std::string &fname, std::auto_ptr decoder, - MWWorld::Ptr ptr, float volume, float pitch, + const float *pos, float volume, float pitch, float min, float max, bool loop) = 0; virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder, float volume, float pitch) = 0; - // FIXME: This should take an MWWorld::Ptr that represents the in-world camera - virtual void UpdateListener(float pos[3], float atdir[3], float updir[3]) = 0; + virtual void UpdateListener(const float *pos, const float *atdir, const float *updir) = 0; Sound_Output(SoundManager &mgr) : mgr(mgr) { } public: diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 9f80a8e20f..af1cdf76df 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -125,8 +125,9 @@ namespace MWSound try { Sound *sound; + const float *pos = ptr.getCellRef().pos.pos; std::auto_ptr decoder(new DEFAULT_DECODER); - sound = Output->PlaySound3D(file, decoder, ptr, volume, pitch, min, max, loop); + sound = Output->PlaySound3D(file, decoder, pos, volume, pitch, min, max, loop); if(untracked) LooseSounds[id] = SoundPtr(sound); else @@ -444,7 +445,10 @@ namespace MWSound nDir = cam->getRealDirection(); nUp = cam->getRealUp(); - Output->UpdateListener(&nPos[0], &nDir[0], &nUp[0]); + float pos[3] = { nPos[0], -nPos[2], nPos[1] }; + float at[3] = { nDir[0], -nDir[2], nDir[1] }; + float up[3] = { nUp[0], -nUp[2], nUp[1] }; + Output->UpdateListener(pos, at, up); IDMap::iterator snditer = LooseSounds.begin(); From a91085a1b904bb26cf8410721e978fc73c3392b6 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 10:45:11 -0700 Subject: [PATCH 075/488] Add a couple comments --- apps/openmw/mwsound/soundmanager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index af1cdf76df..5d872476e9 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -445,12 +445,16 @@ namespace MWSound nDir = cam->getRealDirection(); nUp = cam->getRealUp(); + // The output handler is expecting vectors oriented like the game + // (that is, -Z goes down, +Y goes forward), but that's not what we + // get from Ogre's camera, so we have to convert. float pos[3] = { nPos[0], -nPos[2], nPos[1] }; float at[3] = { nDir[0], -nDir[2], nDir[1] }; float up[3] = { nUp[0], -nUp[2], nUp[1] }; Output->UpdateListener(pos, at, up); - + // Check if any "untracked" sounds are finished playing, and trash + // them IDMap::iterator snditer = LooseSounds.begin(); while(snditer != LooseSounds.end()) { From a69ec91242eb1a781d944283af1c17b2d4110b2b Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 22:13:57 -0700 Subject: [PATCH 076/488] Remove some unnecessary wrappers and do some small cleanups --- apps/openmw/mwsound/soundmanager.cpp | 68 ++++++++++++---------------- apps/openmw/mwsound/soundmanager.hpp | 2 - 2 files changed, 28 insertions(+), 42 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 5d872476e9..5b050e6121 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -78,8 +78,6 @@ namespace MWSound { LooseSounds.clear(); ActiveSounds.clear(); - if(mMusic) - mMusic->Stop(); mMusic.reset(); Output.reset(); } @@ -135,32 +133,10 @@ namespace MWSound } catch(std::exception &e) { - std::cout <<"Sound play error: "<second.find(id); - if(iditer != snditer->second.end()) - { - snditer->second.erase(iditer); - if(snditer->second.size() == 0) - ActiveSounds.erase(snditer); - } - } - else - ActiveSounds.erase(snditer); - } - bool SoundManager::isPlaying(MWWorld::Ptr ptr, const std::string &id) const { SoundMap::const_iterator snditer = ActiveSounds.find(ptr); @@ -174,18 +150,6 @@ namespace MWSound return iditer->second->isPlaying(); } - // Remove all references to objects belonging to a given cell - void SoundManager::removeCell(const MWWorld::Ptr::CellStore *cell) - { - SoundMap::iterator snditer = ActiveSounds.begin(); - while(snditer != ActiveSounds.end()) - { - if(snditer->first.getCell() == cell) - ActiveSounds.erase(snditer++); - else - snditer++; - } - } void SoundManager::stopMusic() { @@ -194,7 +158,6 @@ namespace MWSound setPlaylist(); } - void SoundManager::streamMusicFull(const std::string& filename) { if(mMusic) @@ -337,12 +300,37 @@ namespace MWSound void SoundManager::stopSound3D(MWWorld::Ptr ptr, const std::string& soundId) { - remove(ptr, soundId); + // Stop a sound and remove it from the list. If soundId="" then + // stop all its sounds. + SoundMap::iterator snditer = ActiveSounds.find(ptr); + if(snditer == ActiveSounds.end()) + return; + + if(!soundId.empty()) + { + IDMap::iterator iditer = snditer->second.find(soundId); + if(iditer != snditer->second.end()) + { + snditer->second.erase(iditer); + if(snditer->second.size() == 0) + ActiveSounds.erase(snditer); + } + } + else + ActiveSounds.erase(snditer); } void SoundManager::stopSound(MWWorld::Ptr::CellStore *cell) { - removeCell(cell); + // Remove all references to objects belonging to a given cell + SoundMap::iterator snditer = ActiveSounds.begin(); + while(snditer != ActiveSounds.end()) + { + if(snditer->first.getCell() == cell) + ActiveSounds.erase(snditer++); + else + snditer++; + } } void SoundManager::stopSound(const std::string& soundId) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index df7e696dac..62e452cdea 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -64,9 +64,7 @@ namespace MWSound MWWorld::Ptr ptr, const std::string &id, float volume, float pitch, float min, float max, bool loop, bool untracked=false); - void remove(MWWorld::Ptr ptr, const std::string &id = ""); bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; - void removeCell(const MWWorld::Ptr::CellStore *cell); void updateRegionSound(float duration); public: From ddfa9069220c3560df1a14332f1c8b2266c7b04c Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 22:45:28 -0700 Subject: [PATCH 077/488] Add a missing include --- apps/openmw/mwsound/soundmanager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 5b050e6121..7cd8f4ea79 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -23,6 +23,7 @@ CMakeLists.txt. */ #ifdef OPENMW_USE_FFMPEG +#include "ffmpeg_decoder.hpp" #define SOUND_IN "FFmpeg" #endif From 44fc204864f15485c53d9f80492679d0b7b19d5a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 23:30:43 -0700 Subject: [PATCH 078/488] Avoid passing a sound decoder to the play methods --- apps/openmw/mwsound/mpgsnd_decoder.hpp | 1 + apps/openmw/mwsound/openal_output.cpp | 20 +++++++++++--------- apps/openmw/mwsound/openal_output.hpp | 9 +++------ apps/openmw/mwsound/sound_output.hpp | 9 +++------ apps/openmw/mwsound/soundmanager.cpp | 17 ++++++++++------- apps/openmw/mwsound/soundmanager.hpp | 6 ++++++ 6 files changed, 34 insertions(+), 28 deletions(-) diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index 391cfbd6d3..cd7e468da5 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -26,6 +26,7 @@ namespace MWSound virtual size_t Read(char *buffer, size_t bytes); MpgSnd_Decoder(); + public: virtual ~MpgSnd_Decoder(); friend class SoundManager; diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 0cff2303fd..e9df0738be 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -5,6 +5,7 @@ #include "openal_output.hpp" #include "sound_decoder.hpp" #include "sound.hpp" +#include "soundmanager.hpp" namespace MWSound @@ -47,7 +48,7 @@ static ALenum getALFormat(Sound_Decoder::ChannelConfig chans, Sound_Decoder::Sam } -ALuint LoadBuffer(std::auto_ptr decoder) +ALuint LoadBuffer(DecoderPtr decoder) { int srate; Sound_Decoder::ChannelConfig chans; @@ -86,10 +87,10 @@ class OpenAL_SoundStream : public Sound ALenum Format; ALsizei SampleRate; - std::auto_ptr Decoder; + DecoderPtr Decoder; public: - OpenAL_SoundStream(std::auto_ptr decoder); + OpenAL_SoundStream(DecoderPtr decoder); virtual ~OpenAL_SoundStream(); void Play(float volume, float pitch); @@ -113,7 +114,7 @@ public: }; -OpenAL_SoundStream::OpenAL_SoundStream(std::auto_ptr decoder) +OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) : Decoder(decoder) { throwALerror(); @@ -320,11 +321,11 @@ void OpenAL_Output::Deinitialize() } -Sound* OpenAL_Output::PlaySound(const std::string &fname, std::auto_ptr decoder, - float volume, float pitch, bool loop) +Sound* OpenAL_Output::PlaySound(const std::string &fname, float volume, float pitch, bool loop) { throwALerror(); + DecoderPtr decoder = mgr.getDecoder(); decoder->Open(fname); ALuint src=0, buf=0; @@ -367,12 +368,12 @@ Sound* OpenAL_Output::PlaySound(const std::string &fname, std::auto_ptr decoder, - const float *pos, float volume, float pitch, +Sound* OpenAL_Output::PlaySound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop) { throwALerror(); + DecoderPtr decoder = mgr.getDecoder(); decoder->Open(fname); ALuint src=0, buf=0; @@ -416,10 +417,11 @@ Sound* OpenAL_Output::PlaySound3D(const std::string &fname, std::auto_ptr decoder, float volume, float pitch) +Sound* OpenAL_Output::StreamSound(const std::string &fname, float volume, float pitch) { std::auto_ptr sound; + DecoderPtr decoder = mgr.getDecoder(); decoder->Open(fname); sound.reset(new OpenAL_SoundStream(decoder)); diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index b941aea3a4..7d5bd25f6b 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -22,14 +22,11 @@ namespace MWSound virtual bool Initialize(const std::string &devname=""); virtual void Deinitialize(); - virtual Sound *PlaySound(const std::string &fname, std::auto_ptr decoder, - float volume, float pitch, bool loop); - virtual Sound *PlaySound3D(const std::string &fname, std::auto_ptr decoder, - const float *pos, float volume, float pitch, + virtual Sound *PlaySound(const std::string &fname, float volume, float pitch, bool loop); + virtual Sound *PlaySound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop); - virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder, - float volume, float pitch); + virtual Sound *StreamSound(const std::string &fname, float volume, float pitch); virtual void UpdateListener(const float *pos, const float *atdir, const float *updir); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index c69247cc9d..8dfc0f21ee 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -19,13 +19,10 @@ namespace MWSound virtual bool Initialize(const std::string &devname="") = 0; virtual void Deinitialize() = 0; - virtual Sound *PlaySound(const std::string &fname, std::auto_ptr decoder, - float volume, float pitch, bool loop) = 0; - virtual Sound *PlaySound3D(const std::string &fname, std::auto_ptr decoder, - const float *pos, float volume, float pitch, + virtual Sound *PlaySound(const std::string &fname, float volume, float pitch, bool loop) = 0; + virtual Sound *PlaySound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop) = 0; - virtual Sound *StreamSound(const std::string &fname, std::auto_ptr decoder, - float volume, float pitch) = 0; + virtual Sound *StreamSound(const std::string &fname, float volume, float pitch) = 0; virtual void UpdateListener(const float *pos, const float *atdir, const float *updir) = 0; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 7cd8f4ea79..a603763e5f 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -83,6 +83,12 @@ namespace MWSound Output.reset(); } + // Return a new decoder instance, used as needed by the output implementations + DecoderPtr SoundManager::getDecoder() + { + return DecoderPtr(new DEFAULT_DECODER); + } + // Convert a soundId to file name, and modify the volume // according to the sounds local volume setting, minRange and // maxRange. @@ -124,9 +130,8 @@ namespace MWSound try { Sound *sound; - const float *pos = ptr.getCellRef().pos.pos; - std::auto_ptr decoder(new DEFAULT_DECODER); - sound = Output->PlaySound3D(file, decoder, pos, volume, pitch, min, max, loop); + const ESM::Position &pos = ptr.getCellRef().pos; + sound = Output->PlaySound3D(file, pos.pos, volume, pitch, min, max, loop); if(untracked) LooseSounds[id] = SoundPtr(sound); else @@ -163,8 +168,7 @@ namespace MWSound { if(mMusic) mMusic->Stop(); - std::auto_ptr decoder(new DEFAULT_DECODER); - mMusic.reset(Output->StreamSound(filename, decoder, 0.4f, 1.0f)); + mMusic.reset(Output->StreamSound(filename, 0.4f, 1.0f)); } void SoundManager::streamMusic(const std::string& filename) @@ -274,8 +278,7 @@ namespace MWSound try { Sound *sound; - std::auto_ptr decoder(new DEFAULT_DECODER); - sound = Output->PlaySound(file, decoder, volume, pitch, loop); + sound = Output->PlaySound(file, volume, pitch, loop); LooseSounds[soundId] = SoundPtr(sound); } catch(std::exception &e) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 62e452cdea..6b188c9e49 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -25,6 +25,8 @@ namespace MWSound class Sound_Decoder; class Sound; + typedef boost::shared_ptr DecoderPtr; + class SoundManager { // This is used for case insensitive and slash-type agnostic file @@ -67,6 +69,10 @@ namespace MWSound bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; void updateRegionSound(float duration); + protected: + DecoderPtr getDecoder(); + friend class OpenAL_Output; + public: SoundManager(Ogre::Root*, Ogre::Camera*, const Files::PathContainer& dataDir, bool useSound, bool fsstrict, From f7ac94d6860fc43344e403ce7904b2197262059a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 23:41:45 -0700 Subject: [PATCH 079/488] Pass the new position to the sound update method --- apps/openmw/mwsound/openal_output.cpp | 10 ++++------ apps/openmw/mwsound/sound.hpp | 2 +- apps/openmw/mwsound/soundmanager.cpp | 3 ++- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index e9df0738be..e37924088b 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -96,7 +96,7 @@ public: void Play(float volume, float pitch); virtual void Stop(); virtual bool isPlaying(); - virtual void Update(MWWorld::Ptr ptr); + virtual void Update(const float *pos); }; class OpenAL_Sound : public Sound @@ -110,7 +110,7 @@ public: virtual void Stop(); virtual bool isPlaying(); - virtual void Update(MWWorld::Ptr ptr); + virtual void Update(const float *pos); }; @@ -234,9 +234,8 @@ bool OpenAL_SoundStream::isPlaying() return true; } -void OpenAL_SoundStream::Update(MWWorld::Ptr ptr) +void OpenAL_SoundStream::Update(const float *pos) { - const float *pos = ptr.getCellRef().pos.pos; alSource3f(Source, AL_POSITION, pos[0], pos[2], -pos[1]); alSource3f(Source, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(Source, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -271,9 +270,8 @@ bool OpenAL_Sound::isPlaying() return state==AL_PLAYING; } -void OpenAL_Sound::Update(MWWorld::Ptr ptr) +void OpenAL_Sound::Update(const float *pos) { - const float *pos = ptr.getCellRef().pos.pos; alSource3f(Source, AL_POSITION, pos[0], pos[2], -pos[1]); alSource3f(Source, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(Source, AL_VELOCITY, 0.0f, 0.0f, 0.0f); diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 99be9dfeb6..3b4736fd6c 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -11,7 +11,7 @@ namespace MWSound { virtual void Stop() = 0; virtual bool isPlaying() = 0; - virtual void Update(MWWorld::Ptr ptr) = 0; + virtual void Update(const float *pos) = 0; public: virtual ~Sound() { } diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a603763e5f..650c8f0d93 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -358,7 +358,8 @@ namespace MWSound IDMap::iterator iditer = snditer->second.begin(); while(iditer != snditer->second.end()) { - iditer->second->Update(ptr); + const ESM::Position &pos = ptr.getCellRef().pos; + iditer->second->Update(pos.pos); iditer++; } } From 3fea3e7d25e59e45c5357616f46fc05e3fb56fa5 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 17 Mar 2012 23:47:12 -0700 Subject: [PATCH 080/488] Fix stereo files with libsndfile --- apps/openmw/mwsound/mpgsnd_decoder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index 2c35adeb33..9b51319dd8 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -22,8 +22,8 @@ void MpgSnd_Decoder::Open(const std::string &fname) { if(info.channels == 1) chanConfig = MonoChannels; - else if(info.channels == 1) - chanConfig = MonoChannels; + else if(info.channels == 2) + chanConfig = StereoChannels; else { sf_close(sndFile); From a256b9a7b0952803aacad7a27d4c8c2225b1418b Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 08:42:55 -0700 Subject: [PATCH 081/488] Remove a comment about Audiere --- apps/openmw/mwsound/soundmanager.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 650c8f0d93..895d580db8 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -18,9 +18,8 @@ #include "openal_output.hpp" #define SOUND_OUT "OpenAL" -/* Set up the sound manager to use Audiere, FFMPEG or - MPG123/libsndfile for input. The OPENMW_USE_x macros are set in - CMakeLists.txt. +/* Set up the sound manager to use FFMPEG or MPG123+libsndfile for input. The + * OPENMW_USE_x macros are set in CMakeLists.txt. */ #ifdef OPENMW_USE_FFMPEG #include "ffmpeg_decoder.hpp" From 2f92559fc7b7c6d64b2f5d7cd0435da20689e67a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 09:05:38 -0700 Subject: [PATCH 082/488] Use OpenAL's linear attenuation model We should use the inverse distance clamped model (the default), but we first need to handle muting sounds that are beyond their max distance. Linear attenuation doesn't give a proper rolloff, but it makes the sounds silent at max distance. --- apps/openmw/mwsound/openal_output.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index e37924088b..5ce7931684 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -303,6 +303,8 @@ bool OpenAL_Output::Initialize(const std::string &devname) Device = 0; return false; } + alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED); + throwALerror(); return true; } From 162642e6726ec741731520fde4909e4d681e7bc2 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 11:17:45 -0700 Subject: [PATCH 083/488] Prefix some SoundManager class member variables --- apps/openmw/mwsound/soundmanager.cpp | 60 ++++++++++++++-------------- apps/openmw/mwsound/soundmanager.hpp | 6 +-- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 895d580db8..d78251ef15 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -47,10 +47,10 @@ namespace MWSound std::cout << "Sound output: " << SOUND_OUT << std::endl; std::cout << "Sound decoder: " << SOUND_IN << std::endl; - Output.reset(new DEFAULT_OUTPUT(*this)); - if(!Output->Initialize()) + mOutput.reset(new DEFAULT_OUTPUT(*this)); + if(!mOutput->Initialize()) { - Output.reset(); + mOutput.reset(); return; } @@ -76,10 +76,10 @@ namespace MWSound SoundManager::~SoundManager() { - LooseSounds.clear(); - ActiveSounds.clear(); + mLooseSounds.clear(); + mActiveSounds.clear(); mMusic.reset(); - Output.reset(); + mOutput.reset(); } // Return a new decoder instance, used as needed by the output implementations @@ -130,11 +130,11 @@ namespace MWSound { Sound *sound; const ESM::Position &pos = ptr.getCellRef().pos; - sound = Output->PlaySound3D(file, pos.pos, volume, pitch, min, max, loop); + sound = mOutput->PlaySound3D(file, pos.pos, volume, pitch, min, max, loop); if(untracked) - LooseSounds[id] = SoundPtr(sound); + mLooseSounds[id] = SoundPtr(sound); else - ActiveSounds[ptr][id] = SoundPtr(sound); + mActiveSounds[ptr][id] = SoundPtr(sound); } catch(std::exception &e) { @@ -144,8 +144,8 @@ namespace MWSound bool SoundManager::isPlaying(MWWorld::Ptr ptr, const std::string &id) const { - SoundMap::const_iterator snditer = ActiveSounds.find(ptr); - if(snditer == ActiveSounds.end()) + SoundMap::const_iterator snditer = mActiveSounds.find(ptr); + if(snditer == mActiveSounds.end()) return false; IDMap::const_iterator iditer = snditer->second.find(id); @@ -167,7 +167,7 @@ namespace MWSound { if(mMusic) mMusic->Stop(); - mMusic.reset(Output->StreamSound(filename, 0.4f, 1.0f)); + mMusic.reset(mOutput->StreamSound(filename, 0.4f, 1.0f)); } void SoundManager::streamMusic(const std::string& filename) @@ -277,8 +277,8 @@ namespace MWSound try { Sound *sound; - sound = Output->PlaySound(file, volume, pitch, loop); - LooseSounds[soundId] = SoundPtr(sound); + sound = mOutput->PlaySound(file, volume, pitch, loop); + mLooseSounds[soundId] = SoundPtr(sound); } catch(std::exception &e) { @@ -305,8 +305,8 @@ namespace MWSound { // Stop a sound and remove it from the list. If soundId="" then // stop all its sounds. - SoundMap::iterator snditer = ActiveSounds.find(ptr); - if(snditer == ActiveSounds.end()) + SoundMap::iterator snditer = mActiveSounds.find(ptr); + if(snditer == mActiveSounds.end()) return; if(!soundId.empty()) @@ -316,21 +316,21 @@ namespace MWSound { snditer->second.erase(iditer); if(snditer->second.size() == 0) - ActiveSounds.erase(snditer); + mActiveSounds.erase(snditer); } } else - ActiveSounds.erase(snditer); + mActiveSounds.erase(snditer); } void SoundManager::stopSound(MWWorld::Ptr::CellStore *cell) { // Remove all references to objects belonging to a given cell - SoundMap::iterator snditer = ActiveSounds.begin(); - while(snditer != ActiveSounds.end()) + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) { if(snditer->first.getCell() == cell) - ActiveSounds.erase(snditer++); + mActiveSounds.erase(snditer++); else snditer++; } @@ -338,9 +338,9 @@ namespace MWSound void SoundManager::stopSound(const std::string& soundId) { - IDMap::iterator iditer = LooseSounds.find(soundId); - if(iditer != LooseSounds.end()) - LooseSounds.erase(iditer); + IDMap::iterator iditer = mLooseSounds.find(soundId); + if(iditer != mLooseSounds.end()) + mLooseSounds.erase(iditer); } bool SoundManager::getSoundPlaying(MWWorld::Ptr ptr, const std::string& soundId) const @@ -350,8 +350,8 @@ namespace MWSound void SoundManager::updateObject(MWWorld::Ptr ptr) { - SoundMap::iterator snditer = ActiveSounds.find(ptr); - if(snditer == ActiveSounds.end()) + SoundMap::iterator snditer = mActiveSounds.find(ptr); + if(snditer == mActiveSounds.end()) return; IDMap::iterator iditer = snditer->second.begin(); @@ -443,15 +443,15 @@ namespace MWSound float pos[3] = { nPos[0], -nPos[2], nPos[1] }; float at[3] = { nDir[0], -nDir[2], nDir[1] }; float up[3] = { nUp[0], -nUp[2], nUp[1] }; - Output->UpdateListener(pos, at, up); + mOutput->UpdateListener(pos, at, up); // Check if any "untracked" sounds are finished playing, and trash // them - IDMap::iterator snditer = LooseSounds.begin(); - while(snditer != LooseSounds.end()) + IDMap::iterator snditer = mLooseSounds.begin(); + while(snditer != mLooseSounds.end()) { if(!snditer->second->isPlaying()) - LooseSounds.erase(snditer++); + mLooseSounds.erase(snditer++); else snditer++; } diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 6b188c9e49..3c78268213 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -37,7 +37,7 @@ namespace MWSound MWWorld::Environment& mEnvironment; - std::auto_ptr Output; + std::auto_ptr mOutput; boost::shared_ptr mMusic; @@ -57,8 +57,8 @@ namespace MWSound typedef boost::shared_ptr SoundPtr; typedef std::map IDMap; typedef std::map SoundMap; - SoundMap ActiveSounds; - IDMap LooseSounds; + SoundMap mActiveSounds; + IDMap mLooseSounds; std::string lookup(const std::string &soundId, float &volume, float &min, float &max); From 362e25472017839f468a3194058a2d83b5a4a715 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 11:30:53 -0700 Subject: [PATCH 084/488] Rename some more sound class member variables and functions --- apps/openmw/mwsound/openal_output.cpp | 162 +++++++++++++------------- apps/openmw/mwsound/openal_output.hpp | 16 +-- apps/openmw/mwsound/sound_output.hpp | 16 +-- apps/openmw/mwsound/soundmanager.cpp | 10 +- 4 files changed, 102 insertions(+), 102 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 5ce7931684..ad21aefbe6 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -78,16 +78,16 @@ class OpenAL_SoundStream : public Sound { // This should be something sane, like 4, but currently cell loads tend to // cause the stream to underrun - static const ALuint NumBuffers = 150; - static const ALuint BufferSize = 32768; + static const ALuint sNumBuffers = 150; + static const ALuint sBufferSize = 32768; - ALuint Source; - ALuint Buffers[NumBuffers]; + ALuint mSource; + ALuint mBuffers[sNumBuffers]; - ALenum Format; - ALsizei SampleRate; + ALenum mFormat; + ALsizei mSampleRate; - DecoderPtr Decoder; + DecoderPtr mDecoder; public: OpenAL_SoundStream(DecoderPtr decoder); @@ -102,8 +102,8 @@ public: class OpenAL_Sound : public Sound { public: - ALuint Source; - ALuint Buffer; + ALuint mSource; + ALuint mBuffer; OpenAL_Sound(ALuint src, ALuint buf); virtual ~OpenAL_Sound(); @@ -115,20 +115,20 @@ public: OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) - : Decoder(decoder) + : mDecoder(decoder) { throwALerror(); - alGenSources(1, &Source); + alGenSources(1, &mSource); throwALerror(); try { - alGenBuffers(NumBuffers, Buffers); + alGenBuffers(sNumBuffers, mBuffers); throwALerror(); } catch(std::exception &e) { - alDeleteSources(1, &Source); + alDeleteSources(1, &mSource); alGetError(); throw; } @@ -139,53 +139,53 @@ OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) Sound_Decoder::ChannelConfig chans; Sound_Decoder::SampleType type; - Decoder->GetInfo(&srate, &chans, &type); - Format = getALFormat(chans, type); - SampleRate = srate; + mDecoder->GetInfo(&srate, &chans, &type); + mFormat = getALFormat(chans, type); + mSampleRate = srate; } catch(std::exception &e) { - alDeleteSources(1, &Source); - alDeleteBuffers(NumBuffers, Buffers); + alDeleteSources(1, &mSource); + alDeleteBuffers(sNumBuffers, mBuffers); alGetError(); throw; } } OpenAL_SoundStream::~OpenAL_SoundStream() { - alDeleteSources(1, &Source); - alDeleteBuffers(NumBuffers, Buffers); + alDeleteSources(1, &mSource); + alDeleteBuffers(sNumBuffers, mBuffers); alGetError(); - Decoder->Close(); + mDecoder->Close(); } void OpenAL_SoundStream::Play(float volume, float pitch) { - std::vector data(BufferSize); + std::vector data(sBufferSize); - alSourceStop(Source); - alSourcei(Source, AL_BUFFER, 0); - alSourcef(Source, AL_GAIN, volume); - alSourcef(Source, AL_PITCH, pitch); + alSourceStop(mSource); + alSourcei(mSource, AL_BUFFER, 0); + alSourcef(mSource, AL_GAIN, volume); + alSourcef(mSource, AL_PITCH, pitch); throwALerror(); - for(ALuint i = 0;i < NumBuffers;i++) + for(ALuint i = 0;i < sNumBuffers;i++) { size_t got; - got = Decoder->Read(&data[0], data.size()); - alBufferData(Buffers[i], Format, &data[0], got, SampleRate); + got = mDecoder->Read(&data[0], data.size()); + alBufferData(mBuffers[i], mFormat, &data[0], got, mSampleRate); } throwALerror(); - alSourceQueueBuffers(Source, NumBuffers, Buffers); - alSourcePlay(Source); + alSourceQueueBuffers(mSource, sNumBuffers, mBuffers); + alSourcePlay(mSource); throwALerror(); } void OpenAL_SoundStream::Stop() { - alSourceStop(Source); - alSourcei(Source, AL_BUFFER, 0); + alSourceStop(mSource); + alSourcei(mSource, AL_BUFFER, 0); throwALerror(); // FIXME: Rewind decoder } @@ -194,25 +194,25 @@ bool OpenAL_SoundStream::isPlaying() { ALint processed, state; - alGetSourcei(Source, AL_SOURCE_STATE, &state); - alGetSourcei(Source, AL_BUFFERS_PROCESSED, &processed); + alGetSourcei(mSource, AL_SOURCE_STATE, &state); + alGetSourcei(mSource, AL_BUFFERS_PROCESSED, &processed); throwALerror(); if(processed > 0) { - std::vector data(BufferSize); + std::vector data(sBufferSize); do { ALuint bufid; size_t got; - alSourceUnqueueBuffers(Source, 1, &bufid); + alSourceUnqueueBuffers(mSource, 1, &bufid); processed--; - got = Decoder->Read(&data[0], data.size()); + got = mDecoder->Read(&data[0], data.size()); if(got > 0) { - alBufferData(bufid, Format, &data[0], got, SampleRate); - alSourceQueueBuffers(Source, 1, &bufid); + alBufferData(bufid, mFormat, &data[0], got, mSampleRate); + alSourceQueueBuffers(mSource, 1, &bufid); } } while(processed > 0); throwALerror(); @@ -222,12 +222,12 @@ bool OpenAL_SoundStream::isPlaying() { ALint queued; - alGetSourcei(Source, AL_BUFFERS_QUEUED, &queued); + alGetSourcei(mSource, AL_BUFFERS_QUEUED, &queued); throwALerror(); if(queued == 0) return false; - alSourcePlay(Source); + alSourcePlay(mSource); throwALerror(); } @@ -236,27 +236,27 @@ bool OpenAL_SoundStream::isPlaying() void OpenAL_SoundStream::Update(const float *pos) { - alSource3f(Source, AL_POSITION, pos[0], pos[2], -pos[1]); - alSource3f(Source, AL_DIRECTION, 0.0f, 0.0f, 0.0f); - alSource3f(Source, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); throwALerror(); } OpenAL_Sound::OpenAL_Sound(ALuint src, ALuint buf) - : Source(src), Buffer(buf) + : mSource(src), mBuffer(buf) { } OpenAL_Sound::~OpenAL_Sound() { - alDeleteSources(1, &Source); - alDeleteBuffers(1, &Buffer); + alDeleteSources(1, &mSource); + alDeleteBuffers(1, &mBuffer); alGetError(); } void OpenAL_Sound::Stop() { - alSourceStop(Source); + alSourceStop(mSource); throwALerror(); } @@ -264,7 +264,7 @@ bool OpenAL_Sound::isPlaying() { ALint state; - alGetSourcei(Source, AL_SOURCE_STATE, &state); + alGetSourcei(mSource, AL_SOURCE_STATE, &state); throwALerror(); return state==AL_PLAYING; @@ -272,35 +272,35 @@ bool OpenAL_Sound::isPlaying() void OpenAL_Sound::Update(const float *pos) { - alSource3f(Source, AL_POSITION, pos[0], pos[2], -pos[1]); - alSource3f(Source, AL_DIRECTION, 0.0f, 0.0f, 0.0f); - alSource3f(Source, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); throwALerror(); } -bool OpenAL_Output::Initialize(const std::string &devname) +bool OpenAL_Output::init(const std::string &devname) { - if(Context) + if(mContext) fail("Device already initialized"); - Device = alcOpenDevice(devname.c_str()); - if(!Device) + mDevice = alcOpenDevice(devname.c_str()); + if(!mDevice) { std::cout << "Failed to open \""<Open(fname); ALuint src=0, buf=0; @@ -368,12 +368,12 @@ Sound* OpenAL_Output::PlaySound(const std::string &fname, float volume, float pi return sound.release(); } -Sound* OpenAL_Output::PlaySound3D(const std::string &fname, const float *pos, float volume, float pitch, +Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop) { throwALerror(); - DecoderPtr decoder = mgr.getDecoder(); + DecoderPtr decoder = mManager.getDecoder(); decoder->Open(fname); ALuint src=0, buf=0; @@ -417,11 +417,11 @@ Sound* OpenAL_Output::PlaySound3D(const std::string &fname, const float *pos, fl } -Sound* OpenAL_Output::StreamSound(const std::string &fname, float volume, float pitch) +Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float pitch) { std::auto_ptr sound; - DecoderPtr decoder = mgr.getDecoder(); + DecoderPtr decoder = mManager.getDecoder(); decoder->Open(fname); sound.reset(new OpenAL_SoundStream(decoder)); @@ -431,7 +431,7 @@ Sound* OpenAL_Output::StreamSound(const std::string &fname, float volume, float } -void OpenAL_Output::UpdateListener(const float *pos, const float *atdir, const float *updir) +void OpenAL_Output::updateListener(const float *pos, const float *atdir, const float *updir) { float orient[6] = { atdir[0], atdir[2], -atdir[1], @@ -445,13 +445,13 @@ void OpenAL_Output::UpdateListener(const float *pos, const float *atdir, const f OpenAL_Output::OpenAL_Output(SoundManager &mgr) - : Sound_Output(mgr), Device(0), Context(0) + : Sound_Output(mgr), mDevice(0), mContext(0) { } OpenAL_Output::~OpenAL_Output() { - Deinitialize(); + deinit(); } } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 7d5bd25f6b..25c414c6db 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -16,19 +16,19 @@ namespace MWSound class OpenAL_Output : public Sound_Output { - ALCdevice *Device; - ALCcontext *Context; + ALCdevice *mDevice; + ALCcontext *mContext; - virtual bool Initialize(const std::string &devname=""); - virtual void Deinitialize(); + virtual bool init(const std::string &devname=""); + virtual void deinit(); - virtual Sound *PlaySound(const std::string &fname, float volume, float pitch, bool loop); - virtual Sound *PlaySound3D(const std::string &fname, const float *pos, float volume, float pitch, + virtual Sound *playSound(const std::string &fname, float volume, float pitch, bool loop); + virtual Sound *playSound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop); - virtual Sound *StreamSound(const std::string &fname, float volume, float pitch); + virtual Sound *streamSound(const std::string &fname, float volume, float pitch); - virtual void UpdateListener(const float *pos, const float *atdir, const float *updir); + virtual void updateListener(const float *pos, const float *atdir, const float *updir); OpenAL_Output(SoundManager &mgr); virtual ~OpenAL_Output(); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 8dfc0f21ee..6497cc1bd9 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -14,19 +14,19 @@ namespace MWSound class Sound_Output { - SoundManager &mgr; + SoundManager &mManager; - virtual bool Initialize(const std::string &devname="") = 0; - virtual void Deinitialize() = 0; + virtual bool init(const std::string &devname="") = 0; + virtual void deinit() = 0; - virtual Sound *PlaySound(const std::string &fname, float volume, float pitch, bool loop) = 0; - virtual Sound *PlaySound3D(const std::string &fname, const float *pos, float volume, float pitch, + virtual Sound *playSound(const std::string &fname, float volume, float pitch, bool loop) = 0; + virtual Sound *playSound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop) = 0; - virtual Sound *StreamSound(const std::string &fname, float volume, float pitch) = 0; + virtual Sound *streamSound(const std::string &fname, float volume, float pitch) = 0; - virtual void UpdateListener(const float *pos, const float *atdir, const float *updir) = 0; + virtual void updateListener(const float *pos, const float *atdir, const float *updir) = 0; - Sound_Output(SoundManager &mgr) : mgr(mgr) { } + Sound_Output(SoundManager &mgr) : mManager(mgr) { } public: virtual ~Sound_Output() { } diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index d78251ef15..c496701c7c 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -48,7 +48,7 @@ namespace MWSound std::cout << "Sound decoder: " << SOUND_IN << std::endl; mOutput.reset(new DEFAULT_OUTPUT(*this)); - if(!mOutput->Initialize()) + if(!mOutput->init()) { mOutput.reset(); return; @@ -130,7 +130,7 @@ namespace MWSound { Sound *sound; const ESM::Position &pos = ptr.getCellRef().pos; - sound = mOutput->PlaySound3D(file, pos.pos, volume, pitch, min, max, loop); + sound = mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop); if(untracked) mLooseSounds[id] = SoundPtr(sound); else @@ -167,7 +167,7 @@ namespace MWSound { if(mMusic) mMusic->Stop(); - mMusic.reset(mOutput->StreamSound(filename, 0.4f, 1.0f)); + mMusic.reset(mOutput->streamSound(filename, 0.4f, 1.0f)); } void SoundManager::streamMusic(const std::string& filename) @@ -277,7 +277,7 @@ namespace MWSound try { Sound *sound; - sound = mOutput->PlaySound(file, volume, pitch, loop); + sound = mOutput->playSound(file, volume, pitch, loop); mLooseSounds[soundId] = SoundPtr(sound); } catch(std::exception &e) @@ -443,7 +443,7 @@ namespace MWSound float pos[3] = { nPos[0], -nPos[2], nPos[1] }; float at[3] = { nDir[0], -nDir[2], nDir[1] }; float up[3] = { nUp[0], -nUp[2], nUp[1] }; - mOutput->UpdateListener(pos, at, up); + mOutput->updateListener(pos, at, up); // Check if any "untracked" sounds are finished playing, and trash // them From 9656456d30adb6a30a0de6637ca4e0f6579ce6af Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 11:34:23 -0700 Subject: [PATCH 085/488] Make sure the sound decoders are closed when they're finished with --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 1 + apps/openmw/mwsound/mpgsnd_decoder.cpp | 1 + apps/openmw/mwsound/openal_output.cpp | 2 ++ 3 files changed, 4 insertions(+) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 5c64e4dd10..41e25e5b6d 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -36,6 +36,7 @@ FFmpeg_Decoder::FFmpeg_Decoder() FFmpeg_Decoder::~FFmpeg_Decoder() { + Close(); } } diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index 9b51319dd8..dbe1d0a507 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -118,6 +118,7 @@ MpgSnd_Decoder::MpgSnd_Decoder() : sndFile(NULL), mpgFile(NULL) MpgSnd_Decoder::~MpgSnd_Decoder() { + Close(); } } diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index ad21aefbe6..f28b09c077 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -332,6 +332,7 @@ Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pi try { buf = LoadBuffer(decoder); + decoder->Close(); alGenSources(1, &src); throwALerror(); } @@ -380,6 +381,7 @@ Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, fl try { buf = LoadBuffer(decoder); + decoder->Close(); alGenSources(1, &src); throwALerror(); } From efae7dfe8385a9a4455a3b730a5da2c0e6599de3 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 11:47:15 -0700 Subject: [PATCH 086/488] Rename some sound decoder class member variables and functions --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 10 ++-- apps/openmw/mwsound/ffmpeg_decoder.hpp | 8 +-- apps/openmw/mwsound/mpgsnd_decoder.cpp | 79 +++++++++++++------------- apps/openmw/mwsound/mpgsnd_decoder.hpp | 16 +++--- apps/openmw/mwsound/openal_output.cpp | 22 +++---- apps/openmw/mwsound/sound_decoder.hpp | 8 +-- 6 files changed, 72 insertions(+), 71 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 41e25e5b6d..2b84439c04 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -9,21 +9,21 @@ namespace MWSound static void fail(const std::string &msg) { throw std::runtime_error("FFmpeg exception: "+msg); } -void FFmpeg_Decoder::Open(const std::string &fname) +void FFmpeg_Decoder::open(const std::string &fname) { fail("Not currently working"); } -void FFmpeg_Decoder::Close() +void FFmpeg_Decoder::close() { } -void FFmpeg_Decoder::GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type) +void FFmpeg_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) { fail("Not currently working"); } -size_t FFmpeg_Decoder::Read(char *buffer, size_t bytes) +size_t FFmpeg_Decoder::read(char *buffer, size_t bytes) { fail("Not currently working"); return 0; @@ -36,7 +36,7 @@ FFmpeg_Decoder::FFmpeg_Decoder() FFmpeg_Decoder::~FFmpeg_Decoder() { - Close(); + close(); } } diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index 205fe8865b..676a576da3 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -16,11 +16,11 @@ namespace MWSound { class FFmpeg_Decoder : public Sound_Decoder { - virtual void Open(const std::string &fname); - virtual void Close(); + virtual void open(const std::string &fname); + virtual void close(); - virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type); - virtual size_t Read(char *buffer, size_t bytes); + virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type); + virtual size_t read(char *buffer, size_t bytes); FFmpeg_Decoder(); virtual ~FFmpeg_Decoder(); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index dbe1d0a507..6be6566f0f 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -12,103 +12,104 @@ static void fail(const std::string &msg) namespace MWSound { -void MpgSnd_Decoder::Open(const std::string &fname) +void MpgSnd_Decoder::open(const std::string &fname) { - Close(); + close(); SF_INFO info; - sndFile = sf_open(fname.c_str(), SFM_READ, &info); - if(sndFile) + mSndFile = sf_open(fname.c_str(), SFM_READ, &info); + if(mSndFile) { if(info.channels == 1) - chanConfig = MonoChannels; + mChanConfig = MonoChannels; else if(info.channels == 2) - chanConfig = StereoChannels; + mChanConfig = StereoChannels; else { - sf_close(sndFile); - sndFile = NULL; + sf_close(mSndFile); + mSndFile = NULL; fail("Unsupported channel count in "+fname); } - sampleRate = info.samplerate; + mSampleRate = info.samplerate; return; } - mpgFile = mpg123_new(NULL, NULL); - if(mpgFile && mpg123_open(mpgFile, fname.c_str()) == MPG123_OK) + mMpgFile = mpg123_new(NULL, NULL); + if(mMpgFile && mpg123_open(mMpgFile, fname.c_str()) == MPG123_OK) { try { int encoding, channels; long rate; - if(mpg123_getformat(mpgFile, &rate, &channels, &encoding) != MPG123_OK) + if(mpg123_getformat(mMpgFile, &rate, &channels, &encoding) != MPG123_OK) fail("Failed to get audio format"); if(encoding != MPG123_ENC_SIGNED_16) fail("Unsupported encoding in "+fname); if(channels != 1 && channels != 2) fail("Unsupported channel count in "+fname); - chanConfig = ((channels==2)?StereoChannels:MonoChannels); - sampleRate = rate; + mChanConfig = ((channels==2)?StereoChannels:MonoChannels); + mSampleRate = rate; return; } catch(std::exception &e) { - mpg123_close(mpgFile); - mpg123_delete(mpgFile); + mpg123_close(mMpgFile); + mpg123_delete(mMpgFile); + mMpgFile = NULL; throw; } - mpg123_close(mpgFile); + mpg123_close(mMpgFile); } - if(mpgFile) - mpg123_delete(mpgFile); - mpgFile = NULL; + if(mMpgFile) + mpg123_delete(mMpgFile); + mMpgFile = NULL; fail("Unsupported file type: "+fname); } -void MpgSnd_Decoder::Close() +void MpgSnd_Decoder::close() { - if(sndFile) - sf_close(sndFile); - sndFile = NULL; + if(mSndFile) + sf_close(mSndFile); + mSndFile = NULL; - if(mpgFile) + if(mMpgFile) { - mpg123_close(mpgFile); - mpg123_delete(mpgFile); - mpgFile = NULL; + mpg123_close(mMpgFile); + mpg123_delete(mMpgFile); + mMpgFile = NULL; } } -void MpgSnd_Decoder::GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type) +void MpgSnd_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) { - if(!sndFile && !mpgFile) + if(!mSndFile && !mMpgFile) fail("No open file"); - *samplerate = sampleRate; - *chans = chanConfig; + *samplerate = mSampleRate; + *chans = mChanConfig; *type = Int16Sample; } -size_t MpgSnd_Decoder::Read(char *buffer, size_t bytes) +size_t MpgSnd_Decoder::read(char *buffer, size_t bytes) { size_t got = 0; - if(sndFile) + if(mSndFile) { - got = sf_read_short(sndFile, (short*)buffer, bytes/2)*2; + got = sf_read_short(mSndFile, (short*)buffer, bytes/2)*2; } - else if(mpgFile) + else if(mMpgFile) { int err; - err = mpg123_read(mpgFile, (unsigned char*)buffer, bytes, &got); + err = mpg123_read(mMpgFile, (unsigned char*)buffer, bytes, &got); if(err != MPG123_OK && err != MPG123_DONE) fail("Failed to read from file"); } return got; } -MpgSnd_Decoder::MpgSnd_Decoder() : sndFile(NULL), mpgFile(NULL) +MpgSnd_Decoder::MpgSnd_Decoder() : mSndFile(NULL), mMpgFile(NULL) { static bool initdone = false; if(!initdone) @@ -118,7 +119,7 @@ MpgSnd_Decoder::MpgSnd_Decoder() : sndFile(NULL), mpgFile(NULL) MpgSnd_Decoder::~MpgSnd_Decoder() { - Close(); + close(); } } diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index cd7e468da5..4d3c7f4aba 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -13,17 +13,17 @@ namespace MWSound { class MpgSnd_Decoder : public Sound_Decoder { - SNDFILE *sndFile; - mpg123_handle *mpgFile; + SNDFILE *mSndFile; + mpg123_handle *mMpgFile; - ChannelConfig chanConfig; - int sampleRate; + ChannelConfig mChanConfig; + int mSampleRate; - virtual void Open(const std::string &fname); - virtual void Close(); + virtual void open(const std::string &fname); + virtual void close(); - virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type); - virtual size_t Read(char *buffer, size_t bytes); + virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type); + virtual size_t read(char *buffer, size_t bytes); MpgSnd_Decoder(); public: diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index f28b09c077..af8569ad78 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -55,12 +55,12 @@ ALuint LoadBuffer(DecoderPtr decoder) Sound_Decoder::SampleType type; ALenum format; - decoder->GetInfo(&srate, &chans, &type); + decoder->getInfo(&srate, &chans, &type); format = getALFormat(chans, type); std::vector data(32768); size_t got, total = 0; - while((got=decoder->Read(&data[total], data.size()-total)) > 0) + while((got=decoder->read(&data[total], data.size()-total)) > 0) { total += got; data.resize(total*2); @@ -139,7 +139,7 @@ OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) Sound_Decoder::ChannelConfig chans; Sound_Decoder::SampleType type; - mDecoder->GetInfo(&srate, &chans, &type); + mDecoder->getInfo(&srate, &chans, &type); mFormat = getALFormat(chans, type); mSampleRate = srate; } @@ -156,7 +156,7 @@ OpenAL_SoundStream::~OpenAL_SoundStream() alDeleteSources(1, &mSource); alDeleteBuffers(sNumBuffers, mBuffers); alGetError(); - mDecoder->Close(); + mDecoder->close(); } void OpenAL_SoundStream::Play(float volume, float pitch) @@ -172,7 +172,7 @@ void OpenAL_SoundStream::Play(float volume, float pitch) for(ALuint i = 0;i < sNumBuffers;i++) { size_t got; - got = mDecoder->Read(&data[0], data.size()); + got = mDecoder->read(&data[0], data.size()); alBufferData(mBuffers[i], mFormat, &data[0], got, mSampleRate); } throwALerror(); @@ -208,7 +208,7 @@ bool OpenAL_SoundStream::isPlaying() alSourceUnqueueBuffers(mSource, 1, &bufid); processed--; - got = mDecoder->Read(&data[0], data.size()); + got = mDecoder->read(&data[0], data.size()); if(got > 0) { alBufferData(bufid, mFormat, &data[0], got, mSampleRate); @@ -326,13 +326,13 @@ Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pi throwALerror(); DecoderPtr decoder = mManager.getDecoder(); - decoder->Open(fname); + decoder->open(fname); ALuint src=0, buf=0; try { buf = LoadBuffer(decoder); - decoder->Close(); + decoder->close(); alGenSources(1, &src); throwALerror(); } @@ -375,13 +375,13 @@ Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, fl throwALerror(); DecoderPtr decoder = mManager.getDecoder(); - decoder->Open(fname); + decoder->open(fname); ALuint src=0, buf=0; try { buf = LoadBuffer(decoder); - decoder->Close(); + decoder->close(); alGenSources(1, &src); throwALerror(); } @@ -424,7 +424,7 @@ Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float std::auto_ptr sound; DecoderPtr decoder = mManager.getDecoder(); - decoder->Open(fname); + decoder->open(fname); sound.reset(new OpenAL_SoundStream(decoder)); sound->Play(volume, pitch); diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index 4f778c3b31..551cd24112 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -14,11 +14,11 @@ namespace MWSound MonoChannels, StereoChannels }; - virtual void Open(const std::string &fname) = 0; - virtual void Close() = 0; + virtual void open(const std::string &fname) = 0; + virtual void close() = 0; - virtual void GetInfo(int *samplerate, ChannelConfig *chans, SampleType *type) = 0; - virtual size_t Read(char *buffer, size_t bytes) = 0; + virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) = 0; + virtual size_t read(char *buffer, size_t bytes) = 0; virtual ~Sound_Decoder() { } From 403e51cef377b1dbc9725c7f9f7efc819babc1f5 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 11:56:54 -0700 Subject: [PATCH 087/488] Move the sample type and channel config enums to MWSound and give use appropriate names for the values --- apps/openmw/mwsound/mpgsnd_decoder.cpp | 8 ++++---- apps/openmw/mwsound/openal_output.cpp | 22 +++++++++++----------- apps/openmw/mwsound/sound_decoder.hpp | 19 +++++++++++-------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index 6be6566f0f..e112d30b1d 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -21,9 +21,9 @@ void MpgSnd_Decoder::open(const std::string &fname) if(mSndFile) { if(info.channels == 1) - mChanConfig = MonoChannels; + mChanConfig = ChannelConfig_Mono; else if(info.channels == 2) - mChanConfig = StereoChannels; + mChanConfig = ChannelConfig_Stereo; else { sf_close(mSndFile); @@ -47,7 +47,7 @@ void MpgSnd_Decoder::open(const std::string &fname) fail("Unsupported encoding in "+fname); if(channels != 1 && channels != 2) fail("Unsupported channel count in "+fname); - mChanConfig = ((channels==2)?StereoChannels:MonoChannels); + mChanConfig = ((channels==2)?ChannelConfig_Stereo:ChannelConfig_Mono); mSampleRate = rate; return; } @@ -88,7 +88,7 @@ void MpgSnd_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType * *samplerate = mSampleRate; *chans = mChanConfig; - *type = Int16Sample; + *type = SampleType_Int16; } size_t MpgSnd_Decoder::read(char *buffer, size_t bytes) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index af8569ad78..cda6c89dd3 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -22,22 +22,22 @@ static void throwALerror() } -static ALenum getALFormat(Sound_Decoder::ChannelConfig chans, Sound_Decoder::SampleType type) +static ALenum getALFormat(ChannelConfig chans, SampleType type) { - if(chans == Sound_Decoder::MonoChannels) + if(chans == ChannelConfig_Mono) { - if(type == Sound_Decoder::Int16Sample) + if(type == SampleType_Int16) return AL_FORMAT_MONO16; - else if(type == Sound_Decoder::UInt8Sample) + else if(type == SampleType_UInt8) return AL_FORMAT_MONO8; else fail("Unsupported sample type"); } - else if(chans == Sound_Decoder::StereoChannels) + else if(chans == ChannelConfig_Stereo) { - if(type == Sound_Decoder::Int16Sample) + if(type == SampleType_Int16) return AL_FORMAT_STEREO16; - else if(type == Sound_Decoder::UInt8Sample) + else if(type == SampleType_UInt8) return AL_FORMAT_STEREO8; else fail("Unsupported sample type"); @@ -51,8 +51,8 @@ static ALenum getALFormat(Sound_Decoder::ChannelConfig chans, Sound_Decoder::Sam ALuint LoadBuffer(DecoderPtr decoder) { int srate; - Sound_Decoder::ChannelConfig chans; - Sound_Decoder::SampleType type; + ChannelConfig chans; + SampleType type; ALenum format; decoder->getInfo(&srate, &chans, &type); @@ -136,8 +136,8 @@ OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) try { int srate; - Sound_Decoder::ChannelConfig chans; - Sound_Decoder::SampleType type; + ChannelConfig chans; + SampleType type; mDecoder->getInfo(&srate, &chans, &type); mFormat = getALFormat(chans, type); diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index 551cd24112..e25321a906 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -1,19 +1,22 @@ #ifndef GAME_SOUND_SOUND_DECODER_H #define GAME_SOUND_SOUND_DECODER_H +#include + namespace MWSound { + enum SampleType { + SampleType_UInt8, + SampleType_Int16 + }; + enum ChannelConfig { + ChannelConfig_Mono, + ChannelConfig_Stereo + }; + class Sound_Decoder { public: - enum SampleType { - UInt8Sample, - Int16Sample - }; - enum ChannelConfig { - MonoChannels, - StereoChannels - }; virtual void open(const std::string &fname) = 0; virtual void close() = 0; From 1965b5bc796353326746129c0f8fc1a6802192d8 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 12:03:15 -0700 Subject: [PATCH 088/488] Rename some Sound class member functions --- apps/openmw/mwsound/openal_output.cpp | 22 +++++++++++----------- apps/openmw/mwsound/sound.hpp | 8 ++------ apps/openmw/mwsound/soundmanager.cpp | 6 +++--- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index cda6c89dd3..4aa76cc637 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -93,10 +93,10 @@ public: OpenAL_SoundStream(DecoderPtr decoder); virtual ~OpenAL_SoundStream(); - void Play(float volume, float pitch); - virtual void Stop(); + void play(float volume, float pitch); + virtual void stop(); virtual bool isPlaying(); - virtual void Update(const float *pos); + virtual void update(const float *pos); }; class OpenAL_Sound : public Sound @@ -108,9 +108,9 @@ public: OpenAL_Sound(ALuint src, ALuint buf); virtual ~OpenAL_Sound(); - virtual void Stop(); + virtual void stop(); virtual bool isPlaying(); - virtual void Update(const float *pos); + virtual void update(const float *pos); }; @@ -159,7 +159,7 @@ OpenAL_SoundStream::~OpenAL_SoundStream() mDecoder->close(); } -void OpenAL_SoundStream::Play(float volume, float pitch) +void OpenAL_SoundStream::play(float volume, float pitch) { std::vector data(sBufferSize); @@ -182,7 +182,7 @@ void OpenAL_SoundStream::Play(float volume, float pitch) throwALerror(); } -void OpenAL_SoundStream::Stop() +void OpenAL_SoundStream::stop() { alSourceStop(mSource); alSourcei(mSource, AL_BUFFER, 0); @@ -234,7 +234,7 @@ bool OpenAL_SoundStream::isPlaying() return true; } -void OpenAL_SoundStream::Update(const float *pos) +void OpenAL_SoundStream::update(const float *pos) { alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); @@ -254,7 +254,7 @@ OpenAL_Sound::~OpenAL_Sound() alGetError(); } -void OpenAL_Sound::Stop() +void OpenAL_Sound::stop() { alSourceStop(mSource); throwALerror(); @@ -270,7 +270,7 @@ bool OpenAL_Sound::isPlaying() return state==AL_PLAYING; } -void OpenAL_Sound::Update(const float *pos) +void OpenAL_Sound::update(const float *pos) { alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); @@ -427,7 +427,7 @@ Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float decoder->open(fname); sound.reset(new OpenAL_SoundStream(decoder)); - sound->Play(volume, pitch); + sound->play(volume, pitch); return sound.release(); } diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 3b4736fd6c..84725464be 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -1,17 +1,13 @@ #ifndef GAME_SOUND_SOUND_H #define GAME_SOUND_SOUND_H -#include - -#include "../mwworld/ptr.hpp" - namespace MWSound { class Sound { - virtual void Stop() = 0; + virtual void stop() = 0; virtual bool isPlaying() = 0; - virtual void Update(const float *pos) = 0; + virtual void update(const float *pos) = 0; public: virtual ~Sound() { } diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index c496701c7c..5d9a37065f 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -159,14 +159,14 @@ namespace MWSound void SoundManager::stopMusic() { if(mMusic) - mMusic->Stop(); + mMusic->stop(); setPlaylist(); } void SoundManager::streamMusicFull(const std::string& filename) { if(mMusic) - mMusic->Stop(); + mMusic->stop(); mMusic.reset(mOutput->streamSound(filename, 0.4f, 1.0f)); } @@ -358,7 +358,7 @@ namespace MWSound while(iditer != snditer->second.end()) { const ESM::Position &pos = ptr.getCellRef().pos; - iditer->second->Update(pos.pos); + iditer->second->update(pos.pos); iditer++; } } From b938fd7b368470ee780378ff37414a16d79ae038 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 18 Mar 2012 12:19:54 -0700 Subject: [PATCH 089/488] Make the sound output init return void --- apps/openmw/mwsound/openal_output.cpp | 24 ++++++------------------ apps/openmw/mwsound/openal_output.hpp | 2 +- apps/openmw/mwsound/sound_output.hpp | 2 +- apps/openmw/mwsound/soundmanager.cpp | 9 +++++++-- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 4aa76cc637..b1359d5f4e 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -279,34 +279,22 @@ void OpenAL_Sound::update(const float *pos) } -bool OpenAL_Output::init(const std::string &devname) +void OpenAL_Output::init(const std::string &devname) { - if(mContext) - fail("Device already initialized"); + if(mDevice || mContext) + fail("Device already open"); mDevice = alcOpenDevice(devname.c_str()); if(!mDevice) - { - std::cout << "Failed to open \""<init()) + try { + mOutput.reset(new DEFAULT_OUTPUT(*this)); + mOutput->init(); + } + catch(std::exception &e) + { + std::cout <<"Sound init failed: "< Date: Sun, 18 Mar 2012 14:27:22 -0700 Subject: [PATCH 090/488] Use a background thread to keep OpenAL streams fed Maybe this could be moved to the SoundManager instead of in OpenAL, but it's good enough for now. --- apps/openmw/mwsound/openal_output.cpp | 93 +++++++++++++++++++++++---- apps/openmw/mwsound/openal_output.hpp | 4 ++ 2 files changed, 83 insertions(+), 14 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index b1359d5f4e..9d0cd7d566 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -76,9 +77,7 @@ ALuint LoadBuffer(DecoderPtr decoder) class OpenAL_SoundStream : public Sound { - // This should be something sane, like 4, but currently cell loads tend to - // cause the stream to underrun - static const ALuint sNumBuffers = 150; + static const ALuint sNumBuffers = 4; static const ALuint sBufferSize = 32768; ALuint mSource; @@ -89,14 +88,18 @@ class OpenAL_SoundStream : public Sound DecoderPtr mDecoder; + volatile bool mIsFinished; + public: OpenAL_SoundStream(DecoderPtr decoder); virtual ~OpenAL_SoundStream(); - void play(float volume, float pitch); virtual void stop(); virtual bool isPlaying(); virtual void update(const float *pos); + + void play(float volume, float pitch); + bool process(); }; class OpenAL_Sound : public Sound @@ -114,8 +117,52 @@ public: }; +struct StreamThread { + typedef std::vector StreamVec; + static StreamVec sStreams; + static boost::mutex sMutex; + + void operator()() + { + while(1) + { + sMutex.lock(); + StreamVec::iterator iter = sStreams.begin(); + while(iter != sStreams.end()) + { + if((*iter)->process() == false) + iter = sStreams.erase(iter); + else + iter++; + } + sMutex.unlock(); + boost::this_thread::sleep(boost::posix_time::milliseconds(20)); + } + } + + static void add(OpenAL_SoundStream *stream) + { + sMutex.lock(); + if(std::find(sStreams.begin(), sStreams.end(), stream) == sStreams.end()) + sStreams.push_back(stream); + sMutex.unlock(); + } + + static void remove(OpenAL_SoundStream *stream) + { + sMutex.lock(); + StreamVec::iterator iter = std::find(sStreams.begin(), sStreams.end(), stream); + if(iter != sStreams.end()) + sStreams.erase(iter); + sMutex.unlock(); + } +}; +StreamThread::StreamVec StreamThread::sStreams; +boost::mutex StreamThread::sMutex; + + OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) - : mDecoder(decoder) + : mDecoder(decoder), mIsFinished(true) { throwALerror(); @@ -153,9 +200,12 @@ OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) } OpenAL_SoundStream::~OpenAL_SoundStream() { + StreamThread::remove(this); + alDeleteSources(1, &mSource); alDeleteBuffers(sNumBuffers, mBuffers); alGetError(); + mDecoder->close(); } @@ -180,17 +230,36 @@ void OpenAL_SoundStream::play(float volume, float pitch) alSourceQueueBuffers(mSource, sNumBuffers, mBuffers); alSourcePlay(mSource); throwALerror(); + + StreamThread::add(this); + mIsFinished = false; } void OpenAL_SoundStream::stop() { + StreamThread::remove(this); + alSourceStop(mSource); alSourcei(mSource, AL_BUFFER, 0); throwALerror(); // FIXME: Rewind decoder + mIsFinished = true; } bool OpenAL_SoundStream::isPlaying() +{ + return !mIsFinished; +} + +void OpenAL_SoundStream::update(const float *pos) +{ + alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + throwALerror(); +} + +bool OpenAL_SoundStream::process() { ALint processed, state; @@ -225,7 +294,10 @@ bool OpenAL_SoundStream::isPlaying() alGetSourcei(mSource, AL_BUFFERS_QUEUED, &queued); throwALerror(); if(queued == 0) + { + mIsFinished = true; return false; + } alSourcePlay(mSource); throwALerror(); @@ -234,14 +306,6 @@ bool OpenAL_SoundStream::isPlaying() return true; } -void OpenAL_SoundStream::update(const float *pos) -{ - alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); - alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); - alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); - throwALerror(); -} - OpenAL_Sound::OpenAL_Sound(ALuint src, ALuint buf) : mSource(src), mBuffer(buf) @@ -435,12 +499,13 @@ void OpenAL_Output::updateListener(const float *pos, const float *atdir, const f OpenAL_Output::OpenAL_Output(SoundManager &mgr) - : Sound_Output(mgr), mDevice(0), mContext(0) + : Sound_Output(mgr), mDevice(0), mContext(0), mStreamThread(StreamThread()) { } OpenAL_Output::~OpenAL_Output() { + mStreamThread.interrupt(); deinit(); } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 54c3268d71..9a6d7f9d2a 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -3,6 +3,8 @@ #include +#include + #include "alc.h" #include "al.h" @@ -19,6 +21,8 @@ namespace MWSound ALCdevice *mDevice; ALCcontext *mContext; + boost::thread mStreamThread; + virtual void init(const std::string &devname=""); virtual void deinit(); From fe9e6a732c73cd1cc471319c590bbe37c2f10c43 Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Sun, 18 Mar 2012 22:32:46 -0400 Subject: [PATCH 091/488] Some cleanup --- apps/openmw/mwrender/water.cpp | 37 +----- apps/openmw/mwrender/water.hpp | 10 +- files/CMakeLists.txt | 3 +- files/water/Water01.jpg | Bin 295326 -> 0 bytes files/water/water.material | 217 --------------------------------- files/water/water1.cg | 39 ------ 6 files changed, 6 insertions(+), 300 deletions(-) delete mode 100644 files/water/Water01.jpg delete mode 100644 files/water/water.material delete mode 100644 files/water/water1.cg diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 06ab53734c..3075041577 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -40,14 +40,12 @@ namespace MWRender { Water::~Water() { Ogre::MeshManager::getSingleton().remove("water"); - //mCamera->removeListener(this); mWaterNode->detachObject(mWater); mSceneManager->destroyEntity(mWater); mSceneManager->destroySceneNode(mWaterNode); - //Ogre::TextureManager::getSingleton().remove("refraction"); - //Ogre::TextureManager::getSingleton().remove("reflection"); + Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); } @@ -63,23 +61,6 @@ namespace MWRender { } - void Water::preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt) { - mWater->setVisible(false); - - if (evt.source == mReflectionTarget) { - mCamera->enableReflection(mWaterPlane); - } else { - } - } - - void Water::postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt) { - mWater->setVisible(true); - - if (evt.source == mReflectionTarget) { - mCamera->disableReflection(); - } else { - } - } void Water::checkUnderwater(float y) { @@ -101,21 +82,7 @@ namespace MWRender { } - void Water::cameraPreRenderScene(Ogre::Camera *cam) { - Ogre::Vector3 pos = cam->getPosition(); - - if (pos != mOldCameraPos) { - mWaterNode->setPosition(pos.x, 0, pos.z); - - mOldCameraPos = pos; - } - } - - void Water::cameraPostRenderScene(Ogre::Camera *cam) { - } - - void Water::cameraDestroyed(Ogre::Camera *cam) { - } + Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY){ Ogre::Vector3 out = Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index bdc9895fd6..48b0af9847 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -13,8 +13,7 @@ namespace MWRender { Ogre::SceneManager *mSceneManager; Ogre::Viewport *mViewport; - Ogre::RenderTarget *mRefractionTarget; - Ogre::RenderTarget *mReflectionTarget; + Ogre::Plane mWaterPlane; Ogre::SceneNode *mWaterNode; @@ -26,12 +25,7 @@ namespace MWRender { - void preRenderTargetUpdate(const Ogre::RenderTargetEvent&); - void postRenderTargetUpdate(const Ogre::RenderTargetEvent&); - - void cameraPreRenderScene(Ogre::Camera *cam); - void cameraPostRenderScene(Ogre::Camera *cam); - void cameraDestroyed(Ogre::Camera *cam); + Ogre::Vector3 getSceneNodeCoordinates(int gridX, int gridY); public: diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 720044df8d..203b406810 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -8,5 +8,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassVP.cg "${OpenMW_BINARY_DIR configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/perlinvolume.dds "${OpenMW_BINARY_DIR}/resources/water/perlinvolume.dds" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Water02.jpg "${OpenMW_BINARY_DIR}/resources/water/Water02.jpg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.compositor "${OpenMW_BINARY_DIR}/resources/water/water.compositor" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.material "${OpenMW_BINARY_DIR}/resources/water/water.material" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/waves2.dds "${OpenMW_BINARY_DIR}/resources/water/waves2.dds" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Examples-Water.material "${OpenMW_BINARY_DIR}/resources/water/Examples-Water.material" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/WaterNormal1.tga "${OpenMW_BINARY_DIR}/resources/water/WaterNormal1.tga" COPYONLY) diff --git a/files/water/Water01.jpg b/files/water/Water01.jpg deleted file mode 100644 index f9c9b7feec540c35e7a1972cb78c5661912da77d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295326 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

-ig1-0_ilxuvTQ$%+3;{m;N!6YMfed zFES$7V@=;0m7vu{uGhW!Y8QTdFQl2gJ!-Y7e}P=ci=#Oydo$*KuTiH5SYu3j5h@XDe z|LW8!neAp9>`rd)i%Oe(>~=D5@SN78{42jM_x`r7@~*iCYun2_MHi`F`6K5KAJF*v z_0vo9eO3Jr^G`lhbvyEAPJ84#O%+j-Ek9pXb!l;|dMcOft#kSEk*;kMxHmH26ze^8 zoM+1NFVp`_eRX^3zN0%7vnx->3jX1-pSj=#!~OWv&v$RT# zL{oKLy%s90m~zxIQ|kM#_#5r{yCNU77}sqz{?8zOAtrZr@2(Xe*qfh}>ho{fE9CR< z=>3zCfqgZh-rl^C6Ao=WuG49C!^SmP=ghYK_WmEgtxJnooHlXA;?BpH?}yDUn_tdzWA!zjEbr%)Em|Wg`dVeRt*%PZ-^U?r9}J_4_Em}oI$jZ3|Km>enh#4- zD)walTPG`VIKR};^>Ubvkrh`tpW1HTa9dx)(8cQncP?4kwqUp9-r!D7U&CGV4=VTP z9+e5+Ao%3pxhZ#Yr*B&&mEpktjQe7knPP-K&a`#<+pHb%x`p)3CEayrBYv~8?lsjq-~ap{-|T6U0YRqcr@1@+Wxw+{VdBcV%Zkn-q1;;6F0R>X zR=;?&#g#PPqep*i-zaqJkn)eh_~#d@i^HdxcDXJ2y~J#zV>@}K3Gm%Y`~%X>CaB7}9tiLdg{U*x{lpCSAG+Rr_*ZpmA|$2~ZBA#|y4 zn&>B?EjKwdpZtCCXIDq7gzlRsLjD`>UR~^S`=n;1 zrR6Geszi5J8%WnZ&y}2XPark$mZ`@1+cC*Y1ig9-Wxu=*Xj_tgX^vaXUn^_b#GCd^ z-=FzQhEH5x6*FN{miw`%tNE1Krd(dp6C8TvqsB@_&;6_wzwY0v=bw>w_UMN7f37(H z<7*Y0bDD>3WyY5O3_katy*gZVct_R#)t|2X=3ZIOAA9+$R(NRmmB5p;nilz#ly>!o zd=dGy$tuWz`P-K}`xfWbPR)zXd1Sw07Q=RDW`)OZ*IHbc<<#BT_&p@TCn|ZJtEY@z zLfyHxxJOHW9KR9GwJ7J;+cQU5CY{n;Z6M%swLjKKTkEK*iO>4i}(I+fBPxdn|I>c<1-e@?Mu15{{Lkg>-L}9Ydr54JlXcP-0|t+W2r0? zdFHy=O+L2B#e72C%oNs=k6)hMJEokqzh8s@jr{Xh43ldoJ#47|R6l#w^0#-dUX1>% z`^P`YbNZS{@K>nGodGUDBTgYIJrglMcOP6$7sE6Ewc@iw*9J()m=HQZRSgsJJD}nM4$Sz z@KqMeqT>OjYqs9_%E=;n^~$Nq9w9=r#!S}XDCsF!YxAF>`}u`Mwcn>s zKP<58f?oCgUjG#@l8@D!@HM`@QyRvdaZIC}H758{@{;p^_at~cFi_c}(fD6^Fjt=n$6IlIg)D0JSGbOXke z1J^@Ohn<Fxp+%Vy~em^<9aYtSJvzPntOnzs$rtI{c_Q0csURC|Z zm&AAclMeZ^ENOFg`llbadX5OXKUvfI(9rj3|2w6*k&)BhEW025@!iYa*-QO@*q^<8 z>BiA)N$-vGxAcFI>$cAAT(*EQ*;7tzRJmAxBsa4^0evZ+^Nx%7Us_Gyt`R)E_dL=N9&p-Zv{U3uqoCwK1nE}OTxVsh}}y=}*fd)qUY->^S_Ve`(HWoqSm zGxhG=+&$Yi*hVkuY{2ytp{l5oa!&uC4QC|;x+l4IeyzSc5CZ)y4Fg0c{RPe`pIj5)XFHQOE<4iUU7eZ$@Hp> zERpA*{xg{S);<0;aqaX!_Rn9>{u6v_x7fVdmYcsFy6W4hshq66VA;yZ`<}*YCeB{n z&6of4+oa2-chVCieeI6^XE68iK7CR`k*(hT^B4ZSKjuBC z-7i_Os`10EWrCcFDNe^8dhFf#t?JXg8CU)@Oei@cHu3guN%l+%<}D@?)*@{wg1SPo&7zeeZPPZzOyzsD z#(nXM6NgNLPkMb+G~|5DcI@!Yz59OsnjG~l+{XUwCAOREeFFo2w71#ce6d8nN%rnV zf&8pL+mFrJ7uNb(s#AO0U7w#??hDhth8=a;tn8}$i2a1fyxgDP^7$U8n?-c}UH<2; zP|T-q-=(u%RqB_@#*O!FLU(4Wfm#`BQ{UO}{d|rF)g; z{bk>r7A>nZsEEvdC2Du3SL9{Tq;s2Mw7Or1KEJ7ZM$pG`Q`Y)t^@lI6yIyX)|M#3N z`6ud|7yeGK>3etfL{@=x`^Js8_cKqixFsUJYF=ZX9am0USLc+8D>@fv&;R;&&Hk-B zLk`$)ULqcId0X_IHQv7JzvA;(ea)}!{RPOjy&3C-Ebh}r|y{Zm)B3zT9tla#@;JPD)hm^W^+~t+ z60SQu-!@%!`96IT2&HSn76HCWx@VcJ8~}DpFh2Tz3A{$BpuAW!K{7k+;EyY}mDmjuUqhvwAZc+DrC_s&W)c4fKIlgwv| zPN$WAE&8NV)V$u4XF)^$+tt$ro0l*8S-&lAnrOtF=1oEFp8WTHMLuRW9ldulQDdX> zl<29GY~T#ixmMxC3h(H7`fs{E$N%=5 zwpeFV*T+|X?d4lc_v2`D|tzUlWK{dxa z?TUkSGpifVF&^b#AM~F=<939@b^fBi%e44A(u020)ynzK{nw_o!Q^o6^7xBSMYb;X z>PhL^^omubcm0~(E+MyXv2MBhghAr=H~pW#L|n{F=S)=iyZ*wFxLsQMz9m7ImpE(< z6%EPumpZoSsS8W1D+@RGZ$I62)5`i%ts2ksnf$IY+uwBVle9nML67S)6`}jjU(GM? z4G+(|`%J^QUccPztl_5h-<=u5r9*sV1RoZ1R4%f)_n#rocJ^P(KDJr&Io7*YADJJe zEHLZT9L?ABH(y_QTlvBMqh~$^=Qc}HIVow*_7n087|joIyE-ZGo6obFt-e96jBF*D{Z z3zj~uES$Py=a;{>3wCASOm${I>{Y;S`QqLA>`C|3BBNEVw@+hVe|ov@!RbeG&y@U> zJ-W+qcU+%>T-ln_j&3U?3eHdABV)dTG-+_20L`d+&ws40SDHw2%JJu>G6rxkM89%=eyA{j1&pJqE&Ftx=$t%jH%EtOCC%?#C9P?qesM^dUR|Azi zxqn>XmVbHh`3>fRIkvu5!jZ@B865X{TwZ!T@IA|k()lO4&aMq)>+#FZ%6s{AHg|Na zfS`%t&nKJP6RU4<|4z@}xO?Irk1H?i^}kgK#Jn>rIJWJR!L>#0>VNL?PxzYl?Y*X9 z?Zk^S&-P9`yF}FF_Uim=X$ik|4w-YuJBfu()3`Bl$qmy352|A;rW?+`@`GK5Z#~bq z;^rwgtD%--%kCspoQa`Sq*uR8tK z#XL!)prU^D<+YAtcT^c3f6nWjYJSYVNmhA#+0{DZl9cVw-p&i3eb#@f=(0s+j=C;a zO+LM>c-d&SQEdO^o3eMdhu>P#uCaFy`|VF(Upz0GoxinHPEC~iRjvQ};7^wOJ9lbj z?Md@q`l(W8ji9beuiKP^DlLr57AdQAEHheA%lp30_Ih5^kF6Z`8)|lO9zA1r-S4EO zh{WT6i5E0y9jMpM`C@Q2?ZfWf`6q)X^vznvC6Zd>$+s?Lg-2+FCTDW;&+ip?-`-kf zQIfyqopj3HNfv*X|7l+A*!nMWKmYIktV?-u?e`x^u9~3OH>+aLD>bc$T8gV?szuFB zFl1#^^#675s=4WG(O}It7BY7CAKK03;@7>A*Bm-IEI=zG;&J;-xs(#G-IE`jFDjY$ z=yYOMnXY_#&J>UIW6v}-JXb}PW{SDjOK1P?ut}MA$wK+&*5!tg@r-NwZ~se`WjB|L z*t2bY6F<1rj*{M;b=rH@$>6uUZWKydMXh+1a(kwk$=Ay(s!a-)#&-uDbNnUz#$9CE zSt*nB4LyY~l*)E4-Z9TTc-_vw&Cf67?oN}m$|_lXz}Jt$e@S zwRP?JRsR|KtBd8DM4rtRxf64q_X(FPYw_U=Unb96%)R5q#>eK4(-xl%unr71712{% ztFtEtYE_cD`K zFfLBN!Zf`$KKk~b+RiHv`1QJ$O*!@OJcCu)p*N@Qq-{GB;4bHu`FL5EXK3Wg#U-pM z#gg?`>yMt_a-P34isx&^I+moC65YdF1kOh4MQh9G_bqRIp1oxHr(Hh+6|a=q+;99L zA6>m9;Dy5F)wQAXKl0zc6mUGYd3V6WtW_DCjIV51AGE+x>tub5okKFus!Hb1|Lopd zaZiaj`5^o9g}Y8?YLrZam+|{f+s9Y0);OK`!*tu?$Es@P zYLDHk77L1mMx0q2GtuF>N2Qm}L=oK;6Tkkd=6U~Z`}VxvysZvXEM&6klCLkUJHO-R z4R`gvJ8^qFjxv0)tCgAf=X4#zS3kb>jE-J6rKGglCQX-h?J_<4+}%*srD&_R_Mr!H zPwqXx8Fu@0bSn>u(R)%!_xnwW`}W?d7WuUi01WrAOAX+cTMZ zZfQ+%)i8GJ+BI!PhWX6gB6j6_Pxft%YT41#zomZua-~g;N|7lEo8~FZ68ssw&^_;4 z*!7n^@6!5~b2gt2yRwDb-Ep$(+`_efrkf51e-Uz3YI46)Yr8NjUVgb`_?Q0-fnQ#J zxpO_YWM^lyi0OibKMPj8kbl#6^X~8Og>#O%YxYf=w=W`Yx~!;qgS(6$OF?g$(6Lpy zU!Ht^^X_(5p9UM-`mZ&+`0{2i`F-Sg%u?a!f&ZAQTz&VdwOOsae`u24hD5E1}33bvJceGEBW$bR_x-#O0#E}iXQ37{Pc3#{POVR)Lzx2yN(8` z&&}TWRbSTG>-u)V4T|e@6W{zH?JOOO1C;j;de%{Nmc1^YyE* zt(q_0u>O7}Pn_9Y0UHtTZ<8ckR-~jAFW8W(Qmwx4W>Tl=I?w!1^3&a?{W)B?_3)!; zhf8PvF420WP`FZ5L{wz``PJG#*6roozxh$!pVKFIW*hl@4!D+TRIrC@SHO|U)2Fv~ z+>w7_+r0kG`sAx$zHQomW66Jph7!e_uKRu~%{`U6J*Zxi^Pkk$1li7O^JTUzWwYA6 zYFBXXH$BIvp8Kxzhx;Y@IUOLLONIF2_m*CSYt@b)O8*U!i zc721FNaEDP%#$aSJYVpbch~Mi9sA5z@3VaKZhupHyqMGOxAJdomN%)*vQ=2{{Pppz z7v@^AU(xok=g6A;X}Qb%-47aLjxE?A!EE}Q)%fE6n?Lg>Y|@jfc_*HA{ql>pZe5?P zC4QS$@fx3JF`RsQo+I;@{?zM+=T(mO`1)`7&!E@)?TbRgwp{-&d%2?9^WREkEyAw zyMEGJzCFjiZmeyce8TI>R-@ocNeQLv5^T9_xuV<@EjIkBzEai}81{0b?%ExS%UpkZ zywEtC)4TK53>mqs&89czdg}(8d{os<7F$_yb!KZ$QKq5G;@8#Ozbp0ksJ&_VckrUq z%q6S#^#tYl%hL&bK1gESvG*RNBjjQ8N~KhOXCnAfh$PWADFxZ_R!e zt!jxjn*~11UE=1O3GaM9PUCi6=gTi(%fH^^-icRIGI7_}tiK)cC(lu+ah{Ej!6mLL zu34o)NZnx%-{LXU(UW4XI84^Yj6LVZ?d{3EGyf#7 zUR5L!dw;9)N%tKECKGK<^IQ9uc~xAW$=ttqfx`T6c1Ny-m4yo&*7j?hk&-3)cgl;t z=jF4G=`Z^r(Q>rpiu{?0uP+MRwzsHD$j$o9cKglFmyf4~cK=B85Ax~x*R)w@d5qfI zI)|MbzE$#_&DP+2v?BP(^*>u)C>Nd+jyk)}!rOz7ZGz`-wsk#aH~%I6XR!Ma^3^|n z%B|n$rTv4swuoMIKqC6el`Yij^7nb^%bJgD#{^!^G@cGtBQvP|O z{~4C7vVZ=r${z%_>R`IP*CC(!bO1 zb_PXni(Y6b74BmWcR2pl z==jgT`MRJweN)_y>EDmA`TI-TZ+7>dV}7WA(p|++yC*-s-oIKI<08a0C+xtzXI^ts zt`zRtGev2Uo3`6^2j)o(Z1?Bq`d5p-(mKT?YI>Ia^q;+)y4&7fo_c9pS+Tz`uWZ*j z`>vf_HY?+L&z*Z4cVL$ML))j9{T-)ydHA}PsRrx1YrCFV8mLtEA=ENkPS19#?W-f1 zJg=gkWdDnsw{_?4ol~UuZu2-kZ^f7Y3~hTw-%py)VpY8VsNMTDGtJce)mk;PG@OD@ zdvkBtyjS+bend#kdmpZtz~(fe*|*kqHnb}>wsPhVek@~!?; z#n7$=tIsD|+e_~#+)^~@btsd2P^ZAv-wkF>w-JNUmyJDU%ExWvOMl^&*eXNW#?Y|r5(z#ZrPrU`tujtUcE^R zFL1hAvG4pH3#&i5sjhB%bDm`>_0?}FxTiH`QmCDz@&m(1_l{iC+`d(N(fqen>iv~> z#Dcsn&d*!_`D=P@@@MzbM`o%1aVKX^=iH^0k=8X`GdA-3m6eaL%(`Gad0CoN>%S$x z(|%81v}02Ajzsmy6$_3ppY&&!Own_TT}$tnn`wwwaBn@N$<`3U z|7m{Qw21!xnTJ0j0_v!SD%9~A2-mjU%378&Dvv+ zOEUwm8EO1nYJbWqX1cCkQm*%>^RAm~|1+rZZHsCDD7W=p&AMBACUP!5uWRQU+PyOV zUgVP!`AO~%gx|Pt{(SZALiX>~ZT}f&CI4%ZWj6m8x;G$kQ~E^dv)&tIYQ>*ku8;oD zpl3hvuklXJ?`fys*Djs3zR9dJBc;#FD`%=muZ@q^AD362nbEy5(#>zqmp!-sm)vD- zsq-YH_iOW_=EkTH!+-jIO~3QE8yEe#E`7=Ez0J#qQ{Sm@wXfykH~ngBV1Ic2BYATw^<%~XSHm_na3-OC$6MPT<;kAa|EZ*OpJu&Q-?|?+#qa0KPcV4G=hZmF zvG0y{e+%oAJ#}6SPOUohWW_K3jP1U+OLj#H@$L)b$qbaVe_$*1_L{W~ll_XjYcKp~ z@CvX$e8K#a`J?{~0j|3~&5T|CDVg2OEcIe0ns z9S`j(etmJ{yZ)zdH!pp)v%357{DOSD12wr)5*tNk&RE@=!#=%hZpPE8&r*}T8H<)Z zzSV7e`(TzgXHcz!{6pLL*_BS(9xbzd4y9TCHPe6nN6RiYj4yfP$G;+5olCy@C2JM4 zc}afy-F=of&1&tGl`B>qJJ)Gs!#;t7?c29p8R?q8O|O){8N5*3nKOIajnbuC4%9EL z|I9aOZv3aJxOwMOUTypKboEi5rLJaqU0cGuF6>^-DdOpua*?Hhms@t7`?mEv-JrO&gii-v0Lg+3tMXE^E@8 zuy;ypYD4%xY)mOe?*VN&mxG$@_2U}qC(56e7v7?9CO>ZR zoU{$Sj=D9~`DP!lY`<&b+I1&qGz6 zgIiL+G_H`2??1mWC2z8alsS*Bo4bScy!g9e3%BiVIQ~!UKf|*ZYtxLP-z{CGrM~Fi z)rzUtWo1Mos*cP)(s#%*pms-T?|~iv_WTz7(b@O$^Lf|eH`Qwt>+hx>Sn;2scKgp= zKCa#OZcbbJPrCO$+oH&oZ~b=2%yrgZd+oqdV>Yw+Y^B||C%Si53(czB)z_7B^ZWMX zhi}bQY8KajE=m4SFa6KSy}7$Mbyxdl?G0B=Mc#fd`6A>$d2W{LBd@NI-nqV(Hg~Gr zH{I0V_Dz0yx!`Zv`tuj&#kt>6d^hV)K=~L)sgbya`28^k6Eoh75+2$XFa;76Tn-3q4{$uXf!i- zTkVz0VK?pnJkI}I@_Fm7)ruCpGfpOaG!?nZG$~@UubiGoSGSRe)-5qNJ`RP?^;Oxc zD{nsYoH%h4heGo=!OP*gtgAiqRl25Yx49`8%`;KB(Cj6*_$e>j@pTu>&Cab|xiV?l zI?1QgOtkWR{1pW5I{cZ{Zw z^X2E4&i)?tR})q@7oo(Wpj(>7hH7r*s>w(bnqF~w5jhVFYc<0dR4Mg`{>%g{+myf-T3t2XU+bz z7c!q{JX&yl>3@c}^1k@gpsOK|zLm22YZ_u_HD|s3ANd*`muU`|viHZ<6W`9< zcFA+q^gsRQu6Em-qZgW|{0zJmsbi{VH($5wP~c-R&3xDXE=f_X`p7bkHB9#>)h_&d zu3Nca`O|-S+f5$Dx?lMs8TLf^e2D0s;$-8?-cr7Qf{o|ilRW7+>8hYibiO|Kz2WL5GDXv_e@!UJ)gtww%q@(F*W zy-tA#G9?$n9Cmoo7t@Jv0=f-I?rz{&Yx`M4n0VXUTB|FzCANHY)$RnJ>T^V zOC+AG?A8ob)(j9~iF}%}llkTQ^QXU=XQ@q^r=0S~K7Gb|ztd-?Z(IEG(mtsNsr&9L zUuf_BnfXa>7uS{(-~ApgT|WP<*r!QK0Xq2#PI9*zWa{HnFMXOiCv=up#bV_L{~467 zFZy`4y1iq+xctli3>RW0beDeC-@NUL$>W0jJ6pY8Fr;J{=^fF%de~EN>e_-i{p&Z~ z+-7G2I+?)S&G7TF$GLNT<0sbt;$B>TZU33+8;wi_ld?BOygl928pdoFxOn;L-~+E1 zSGJ|6hI7`jp1fM08l0nZC22A9(|>s_(&e^y;+*yS{1#l17w2Mrc5iP)y6d-X+GVLr zPoBJ0aqExprZYS4th#KLoqJV)`+R?;yvvtUj(@l9e16m9T0Y~${;xH=>U__{PVi3t z8*kT>ny0VtF81_f;`TD(0;!uVUxHH8mS(J6@rr9^QX9vT)aBDXYy^1!PWda+Jy-p2 z{B)=D>-**lUH=OX^A zD+j}s`eiTpOW97GQE^)OXTzMTv+DkTMDA2_`S{)YSvvXV`rtsr)H6;Wk3OC9??(BG z6sA*mCgte9{gIb{)=vM{T@$mryPkAS^#8X1*~`qW_0#(9-QC@}@b&sxv*pWYiY{Be zaOFQ~lLualP6%ejMOVD3n?FB0zVME6%lgvn_@n>oraPYeZF(eE`Nc=a1xIQuey*(& z+9ZFHdHd_d#=+mku1<^O+tGP&;qn>A@d4As`TjG+ul(jV=j_fKJ6GGkt^dVQy79zk zzxpFnL_aOHe}3gP-_?H+@`hE(1xZEK)^(RdE(U~ni0Q=EM)aP&#yG{I=dOXyGGf?VNw^nPxr)>4lU$$?UV|Xo9M0CAV zOZ-!!~Ee8f-N&pXTSfcKOFQ@!M|R zc)ez6={$RW`SZ)l)eWOLY_7{ceYM`)|8wr`+w#i6op0hhet*wDDLiA7foI>EK8BPp zn^$kKzwp=fUF{tI4Y`-DJu+H)%>7{e6YUE!`GU7ST;HUwZ9k$BwfK!%yU7c!yY=RF z{NI-f`riKdy7;lsLYtDSAzS5hr=}*R@7m!x_3+lCM}K^~QlLAZ`QQ4d7xkX*DY|oT z|B;&g_qG4kHPyU7cE446cb?jd{|p{?=U%t)yc=b9a#5(6mATyvzgD9e6HeCEuiu)z zJ4RuN`u1}zAOG~b&aOMVJwI{Xn)gwcOmbD7Rib(suP$kh5zzj$e7d*n>OU*3^6THc zntS@nebbLKZK|(2`+BlH5OJ6II`wqQvh}^seoswac0l9Vy|=#~eSiKt`p;jv!zV91 z;7h2gKb!HN;p~ONTlJ@YZ~0~T==A%XZSo~=cNP?-XcYfWoB79*r6()iNNInUxxL#j z`PXlM&rAO`lj-^&`!C{-o|Vakp(<{L-~KaPuobOLUvSHMlZ}bQuZ3MF9%pK0`DjJ9 zsLj2X@sveaLZ@N=LYeA_*gV}!`;Y!}zG!{4qUT~vSo7QEpMRE2Jd?ITWNY9v!*@Hl z(yJzVtB8tnMtl^B_Eagq#L{1DF7wagTXrhbh0P_gMsl`^%ilzaO=HhFTWsRW6*^6A z;VT{c^vkae8|wBQy?93}>L`cu*7{RbE)!o)o&EgMHr}^hpFE?(C!Pw49P$jQn%AeYbCR~DPyDUcquQ@Oo%edSdePZH!`X#bb{aa$Trt{m z&M_tbZhuVYEAE#&_Fuo*WA=Kf|LH~f_oA20(~aNypW*yvQ{C#E1S1QdeQA<2pQcn< z-P*BAU`yfprApI6FQz{F_Pjss+wIz=*VHbre!jf@`DNWR(sQSDRj>5=SpT`N^$h#T zzB{)*Tuv#wp78FL)=N>F)st7vO3>W$Z>mty>6hPTmpad8853Up zPJXg)cP;0md#CFQB9Eke(1@DXeQ3Yp>q`&c*}W`TXlgcbo>BdUdb`Hj!}sQ1XA#Yf z-v9lYlf)Kgo61>>1YNgkaV*)iZ1=p%=QkN|h96gH1htN;e?8r~bLG|FDgPN3?5e$G zZ&jXl_CV@J)32eD*JjNz)pIWF)V?<<@$8X*$;!2L%kRyfo@`{YfNS!n{|pPNjJszp z-_e>pW4`eDNB!KnX_1TbUrm%AC&}_j^+ofF_j8`^J)2Vx5I1yrM;=^U!}e2*_*&geG#t>e!SQo>;0f+ zvqGO&<%+rUW-0_NnfQg}{^vJ+uaotzF6aMRRia^Yyl&zOoh!fN|NNEM)BZX9h2G`k zL2v&vOr9^9aOcW0t5p@7Z`f~He#-NyV%WAXr&H%jG{5@Q{X5Tg!L9GX_OE`HER##z zcV~v~M=QIk{y!D-CePIGna^zJ_Ez(Iyx*UOgJ0K0@$|BIZ{EJQ=)$$+XERfF9oIf9 zefD7*cXsA>yQ@ndM>nw+_uGH|lB84iWBT#!+K;#KAC4;gbY80Ph1q?1;W~#BUS7NW zjGDPG@149g(b4+STc2rkf89415m+e;FjTKWFKE2v-Uxe!p z|MP!!Yq(ectNPDisKry#8G6B5y87|OS1%WJ@f?*{Ju|6LCfn!o*~d@k{rM0gpK>Y3 zE9Ij}Pwo6?FSFj4Pfv)9j5RSgN=)HN)~dK3TV24h{@h$w+r@v*{g$_$uzKN-{g)*) zRy~=-RZC$_eP>-4iv{zk`M9rl{|Pvy7mww}ntuKyXre^>>kpPF-X#~t37$7=OY zzyEpg#UkWu`)Bc^4>wjXt8KopGjnx|()#?cw|{b#9#3(Zb^D}F;fjF64R!l2{`;zW zN_hVHKY!)l%~`%bXQR8!?U!?Qy<)k;zF?)u3Z^;Q{_`E*1y}xgb38?9(Xp@3kG=Bh z+EpGoC;3BQSJbK?kBvH98hh8(Ex*;sb+_qW$bW|L^^P3%HHXzER^N{Q{_^Ge;`02@ z*7t5_O-~58{3Y$ys#Pa6R^8#Aa_q8Jkjlo@HUWD&mrkvl_ge1G3O~bt>!*7!+rRV9 zbjN3&CI1=D7XD{&l_iJX@4JYT5^5s`w2%biP%n|nV-=ZqP#3`2W`? z%km%QpK{Un--K^Betf@SXxO%Dd$#@btkAFxTXLBeh>89B_|Cg8f9c}j_K1Je<%3El z_BHvw{DcsRZ@R90-*rlY!T+n-w}joFx!69* z+kY-yS+*sF-$&T%Kf{VIUfcU)-}miVzH-Is(tD52ggl-!Q>x+dt3At|e_h$ausBQn zt6c5+?RR^c`|RyMm-w1)YxdXcsSnNf@3_6KZ?^26SmWE#+PdNXBBqiydPZJ7Wep9U zPn(=%vMzr~e5?BG^|DBhdi(i5cj*N$3u-6PWZ36h5y#te-U>r z-}awj+VPXVvjYRo9^ES0tm}OE(aA*htHxXM-UV4Ser2-U|Kqp$hG&zjCK+*QWL5s+ z50zEebt^inwDVj<)~Bz^C+7Qg?0fn8&Nrz=Hg4g(f$o!*RVuBNobub#CeZ8DY30A3 zX8Y~CtBr(f9nLdf%9Xd9RI*jz;&D;ksIy$BIm4WPMSKV`e{i?qTj|C4AkCB$!RJ+j z89jND)Vl7(vbuy#`X)2+?M|CryM%Zh&wI_XJ9OZj>cTs>i{HJxx6M}c!+(YYTb+K@ ztT^_hYRdete>X3wD#^@OI4syVH~Z;Lsm1ei-bqdmJ#Z|gvn*=Tktx$d-yIM<{~-ES zJzv?>LpwQR3SM76o5#%-5K;K}Qsk=b3`$v^8CsdC+k33Ki4C4N`E-5lM0+C=EF!pz2aDeaDj6OS`6pI7vJd~bPxX5aj6)zy=yi2V6g zxA1PJU+4E9&z4oBY>g?I>a#T1>jro9+_;M^K_(Ngy;~5W>d$j|`=8}Y=UH!ldPLdV zao2aV`GuJamvc`;I~G;^|GtEw3(@fA#arBJOP+DbN4L>$USXeyZNFAuiHD zc4lzAv%u9*|CwtuSw62l+4;VDCcFIW-$}0%Iz=wB)?fYnGXDMb6;l15|1+3}t^RoZ z=Y-rY@qW%*6}#@l^1A8-Ju%7+Na>olGCAU8sJ&O^;xzj=?i-e#yDF2|H|IaY>gN}y zT|fIccV}kWiPFnIc3hEHwVNBk=Cu9c_cO9nTW*+EubY@zXlj4d@IsQdtM=holldi! zR!z-OPs?-`|24tkPc_Hc5}jwqM z|Dz4tYme8;%X?SeYFoHMWo2(*a(Ly`#8seZGB(l%_V%YoSnsy|*rHTK}i@?ftL&W}UkFWIg|v`ClYo#yx)5_qViU zV|!Np^569fubwV@cj?~Ut(!M6ueDZ+U9ni#eRkKn8Dcg2L{+19-73rOm5b=V{>Szh zH_L~-=>=!5I?A8!Tln(I!tM9pS)aSke(k!`wsi{6TB`V!kFWW?XmatJo=~^C*(FC? z`?#{grY*O%T)AM?v=EQbLmQRMXEfygGym?96jg!K%X!?z`PyfCUDai*>TdDh6B2Tl|5~$)W1rJI-MMW` zn+4sbP+ffBk$G8m!Xe@qqusx9xd%-%V-OY4`Zg5Wd{y_j}!& zw+`Cgy~NC<8xeeJ%crc5%lR6z|odrtbN6_^g=TKHhwwZB|#j`1Yw|+LQ&I9hR0S|Lh8K z{~-VHz32-ROw(ZO`63wpEP+J?(-?@bE`NX&PU-Kw`_|MS( z=dNb^;f9dlbK_l_~?6>RloesZTGAuC-rXqHlrskO3}>u%}d4dX_n6a zHk{yKepzI@7>?$Q&CqnJX3ld8Jp#DY*%gHZz|XP zH*T)huhsG2FZ`?ZJoc{Vs=~BIIxUlDObs(xkrd=uaIow4i|GC=-lK!wZ3#;10-rmGtW1f6^Qjj8e9EBTww_20gK`}*#AxfDZ+ z{pmk<4a%xB9aUNRPyd~_==4qlrmTujAuMYxi^D_RTyjm_TMz7MC@77-S^ciOT=H7x z&-&R*KjxYp_D}db|IL@Slh2+mTDf5MkG?Ren2yPBADQZEt&*M^U>XrC@;mKbc6Zpc z$Qe_#{q+N1Ui#0lXzTWnx1tvR8T8kC#W20&*=zm4Ky-4b_uQF^eOz0aV`Ml&m~^-RaX@7j(J24lNaPk3O~fX*Aof z+41wUO8A2>alZRo{PL2#Y15spd6V~MtoWVIZL6z$Y{x;pJbT_(+qXZ?=k<8x`BJ3( zBRlJ{db?#aH{^S5`S>V((R$aFZqpXL3c3{@xc~C}{FmV?A78${dkX`Dc>A>avzJOP z1vyJC`5eq2bpL2T7`BWImw!@6=$AvTk06JipLOYEDEqCDpp<8wQl_3ci55ByjDtGw_Te~H`6p^# z+DtLmKm6k%XlRAumDTMXt5z9j@A&+CgRRXmsV@1wrycFoR_6SZnz=Pr*sGv^ZTsex z%R-s2FET!TXLb6-nu`An`=b9mU+nnt_mlqAFFso(dwcg3UH!7d%C);NSNExDozrxk ziSExPNu{k;KSO`2(du{VhkBk`_y4eY`TFX^JGyIB*r(^sTz6vew;8`J zJ|;Tf5oflmi4imyUe9=UHS6vCm&SY*33vb%ramoF|<&5x)S9Nu*UFGaV*UVcY zZ8GKX@fYDr|Gw$pwT{=b_|LFvF30h&vou1u9S+S<3laUZXIJCyUHcy&2?&<7lic(~ z^A&T@<0FO(R!%#@!o$vfwf>vjm)#SbWd8|%`_C|YQS{bl+Ao%D-m!(7rKzVT)I_Et zX^&Ozp+9D?N?ml%pMU$gf83P3*@Cwgy|XI0*Sj`UIBCX zzgCt0zwZ96{?qLHwZ+?v_D=2kDcIYdc1vnimCu#c&J(mHHgjmsSvkvr_l-UCoh{`q zJC1@b>x=lk^M=W@Rfhl8&vyya{m<~J{Bhfd1*g8A`@ZJhkC>u^D)qU3+8VDESEQEr zS+g;A_Hh4aaDHpDk=?<4edyMkajpt{lK&ah*M}{>bpP!4wS`|UwOi6Xx$LjoxTg@s;V?e+K!K@6zno`0m?p|MPgU%AUX1tT(v-+E>dzRo?nP!}Mpb z*Z0m>-oEXxn)7?%AF6d%Dxuy&tIj>w(gBz zohCKku0DOj^65_YQGeFHSh2aHcj1-T{hJr9Sz&bTfa39Gs-d?67fpPsBBAH5{;TlK z-k+H_4_?TQ|5~Rv@u=m>t$S6u|$JsJ42OMH`~88oPU06x0f1P zs{fh)>}B4?jaypeKmTW#zhHf3y?T6)B+GJ(zejf!OxkN~^4WOux2pN;r6o)ph5mkVyhulYiI0(Cc`fTCaNU+kwNev6p_gO|N;F#XfD)Y@J`?s*ma| zr1tYHvbBHXzq!KloYDhHcCc>uzrMS+HtfmpHnXU!%l-7C>09`r`x9k@-s@+7dH3Y- zrOT(Zlusl^`79MFvSNrj#o@sbefw|!^BeOn&wM<;`#IPQ{@&>YTjtJPWFoKludb`D zIOFf#To;KoO$Y6#m=uOAzuodXG_2x`$}KaVO8M*a(^l_xHO}O*_|LHV^pfJE=2yL9 zt5^T?n>5v;_iF!&Ca&+RJ>t&>bbE1zUDOi%@^49X)VhtDJA?1cl+|@L(rlS`?WLgJ zzq?l|vu0eE@!Odu@>P_fE!SvKM05Uv@6J2VTwP#lpZ;@KNo4eT;cp*bcq~5e%@uHd z>P6Ks&t_kdlqxaCCwlHS-Sac=l}~M){D}EyU99TPR%VTsUXz#q8BU9Obh&ov^l2^g zT5;ELXP6eJlb(aZ_N^DZG#DPgylf}_W!IbF;77CkAO5V=OrE*;vgC%WqBZN+&#PPc zwj+Ma^(C`BKfO#9dwQlpW%Zd$Pc)ZkuA4ctW~-o5>%Q6lq|W|3e2Zh*#Zuh@lm84; zN}gnS+C{v~?6?=*%^m0%zTLReM>XrJwrhCf%8Qm9!;FDwTxcrSLtWM<*JTdd&pZ^RS{#5ha&FL@J znY`j{alHNKFU84cF6X`$UDVZa)SmzLv*p*HUwnP5{_O1?XO)7|&E9FPK3Sz`_vl~TX@`oa*I7nju=9?jbLqyB|lPa5;jeK|2D6E43y zYIW9D+n4{tvuPpI9J(J*3Rob@bwu!Q?c%>@^_TzJpYOKq&sm<->Q(kv|H`#g{%4rE z{%GwTUbXW4WG#{NEJ2blbeo`$^!(oC`nxwwS^4EZsEHR}{dD#PzV`*I3lCtVW|E`HlqNs`gTEf0eKN-!|2Yo>=X!v?24FtxM*w{;zv~ zZfCvCxLv*f*Per4UT2=1Gu86f?(8WEwo>_@wmUtsKO?=kO#XJxlQnB@m)!VOzu|cD z>VmJjk)DxqQlmF+J%Qx1~;FB(%cH@TKhO_UrqVCif`v=ZicIt53${CCHOjb+~@tVYa`&V^% z?rE`WIc%%`GwiLu;J&zW=jLha9;l|q$sfD_h2Q($w)cC!Jvy1d_I1^PT-hzF`HaQe zmd;l6*}SE&VPohy-+LaQ4vYGo#U4-RiR4|l@t+~^b(r+l-5l3$H0S>)j;UP|@_h07 zd5dmZ`pAYw7ar_gvS2ZP=Tm^5o;uC0;Vt(Vtk2tT%ReOJG9@9%?ldkw!V?R9v3iNE%% zo%i|e2b{lb;UJs1ByaZqTt$>M*OClj`ROU??@_Ds^9^!1+DF>~y)`Rn;rZr@zyyL<2dzP&7E?ad1{6?dz*bN4KD&pp{E6dv>>Gc+WuBFQyj z;e_u03>|j&H*d|2y4@bNr~lI;i}Ryq1wyW zqp#%4lqssuev`f|e{WW#z=<%?zpii3|K?BM7W3eqPJmCwnv6O*nVM;Ps`&C^rfj(F zUoEkwL(5LjbouPy^Q(I9ROI|S7P-;#mDJREqHIwLgW58s=0^RRpf$U`eWQ!@ z+NtNfdFBWI%WDj}eLp(g@o)2jgNqlg>Wu1IbYah}hf6h*G!?mIL!|FIGru{jy4@w8 z^VqEC{eDrmO@G-;mnh9uezU+Xc18PyECG4E9d%gTIugeD{9xakhJ&%!#I8(^$zB+uTehhz2vVOjO#<{BMKZ z<=A)O0tQy~2mj?wE4p_ye?e1$`-}_so5_j564_(+7$JS?= z@uXDSR@YN*=hcqD{5O-|efq3?n#omR0o%TKd)F^7j(plvaM$MI(;30%TOB{=Pj}nC zvQDAw&xOFe-u(}bqt}YYfEL_iZdcD~GHTaET?XFI3{~zn0UhLg> z>0?j-hyM)oS1a89&!AUuxBZ$?$^0{X`|dvs1o>-;XpENrr)^TWnzOQW{8`@d0X zvcB=J@|%3u@uRyYefC^D>pw$7)t|jqW+Hte9e*5x-+X?tFOR>up40e>|HLDITF)hI z*esRaf1K;Qud{06#-^-`FB>vc?#%!2&1CyssYA>PKc?HoKV@IGXq$BJnd(Z5DHlF| zSwEG3`g$+ln|~&i`TCt)eAhPlen3b->I$*t{DG6_DlI!1()fJ&^vGJ>RVCd2w(qWw ze*T{!)c%EB@AD_p^&D6JGaUcV@ItRkE&ZqOpUDe9g(Pi?R@U}9qtv&qUstN@Rs+Kf zFJ|-io8{_n<-QHwZ!YE}^F92R{TF`66}J1EV|tE@{+oXKS1tS0{mi@9Cp}wm@LS#0 zdw>$oi?Vj74{Db)Xf9z5CPdo&rPRe+H?a{~5d& z_qYEG65TzGr)0Gq+q~7fzTVM+rnVU=%iCXQ-aFpF!SY*m_N?XYU9;-9f+nV86F1yG zD0$`3{I~nhU)R0(XZ^3w>%Q|@v(LKsWvcaZtqEN^WkMZSl}}oJTrjO<@2qFX|I{vS zpOdF2IYBQZ{KK!tKel;xaocvzy<+jBe(5W_TCOYq8BWfwN=?dHu&!;^q(vqfmlg?~ z6I2cf%l^+Wi|zjMkMAZG?>)LPA>96L{R_F?g-^JvXKC1f{Lk=TH?NB`>v6<`tR_z-^CZS!pe^wA+w;HOULt6-&L&*cUSD5<{mqMg&y#lE zT0ZHPiJHY(Hj795Qs&>ju=ZnfRZaD)Ush|(E6OJQXW*DOZLZScWaSgKlO3-FC0F=T+;q}cCrWMU|7*GZN439c>z$Hh$$#>IcMaUX&#L^Noz@A-rw6Ylo7;#o35D*dFZ5Y=L}#Jve})6U^CagVs(A9q z|JRO^r{@lCV-q*<;bi_*Q*Z1y;kWV6S$`J3Si9PPV|6{_)@rWh5?5D;@6A9D$<)_S) zdNb|*8?Cz4cOoxb3VURQzuxS;hwR-kz_uHMxd7PcP@;^g3-^$F>+qSd& zt^e`;=P%K+<)4<_m3+18)Q->6_2yls{1I0-dhkqr-X3ru`oj1B4Eb+OuYFsQ5+DDy zszh_+QUahI2K}KQecGh_>HaH8<&Q$rYv4v#!E6zEluR@7RsE_1AybJHPU* zgW{3r1rje+R;;M?VV)$qKfu3aa(1@&?T!=g-2O8t{QMGKxOctTjc7+XzxmTwe&K$7 zq4COXr_JJ`IldFlz1Lb9y4>XVJt>P-AC45IWlZ4oWVjJMd*YjEzg{1jqH87eX0~^( zSTIxZ@;{58)moX}R<3-sT}^C#(vy#uJkG7}o8k7KAyp^i4pZy?^TEgdw8~H5e|$?; z=WwW%d2@M}-Jy*8uYQ)Cy*XQWS!UI>-6`MHiq>v4Ikb?^Yg*Kd)hkz|blBfMq&7FyFUsvzvduIB`;icX?g*!?g`OfQJX7u$|n_%Rt*)`|de!CUgwKd*97S27B zHz)1T+rC3B5x>aLpqZi>8CC*$+K?Hk`j@9;RVt{!ww%IPi9Tb9jP zUFiRFP5t@n|1a#&I^Sn6S)I=59lrZ_z3P15xQZ3o<-Rgs3|_j03O!o5GFT_&My6x^ zH}P*8VHMUhzVbwPO?O&yrBplpPu7iUzrMw?*Ogaom(^af{rJ<3A7)KyWxe=kvUbbH z(7*QA@8*?nYRtIu?q~h{#nobcme0NF_&@b^v!C*RI(1K-Yi`zxvbtwCq~ooH)ZDuI z#TybXTt77ZxAT;KA3?W|jfZ2p?|**#x-Pp_}?nz3HsjGj&zDns` zeRsU-KdVQpKG?3mBsx#py->b_lgaQ!KLuE`6oe+CuuMaO3>-j=K0@Z0{J)rP$@|J<|V_-=E> z!e-xph7&ob)+`C^*DLCN8~;vpkBj!A6^xzF{xdYcvDH`Kle9SePximY7v6{%g;#?(MqMG}paT>$R3# zrTLBViRN#sRedl2h1^&Ab}Z&`Sx#|YmXuV5Skv0OflqrDs_w9w+i5?4{pQzpIiVGg zCmwI}tEiv4OKE<3k(7$;^LF{qCC=5tkG7xC+ptpprS_Vlk}X>jJk?T?PhWhYXVR=v zD7bQ`%H%I{N591!-F`xBN!``|4EBz@&rUCN&Dm;yyMFe9%5B@^xH4X6y;$0{%Q))2 z0RLl+BMYi`Y^vo@h$wuUd-jdE(6I}_4pEgsTkYB}FWFYMT~Md9pn7X^KNo-ee4o%C zRl6)QUm2`d3Xpgu7xDN~keY_>s~tO^eE$0FOHi_`j-c?7zKsD-%Xu~TrkTqJig(tm zwsHwQI5F(ZEpP7m-{J zome*Gxb=qLR(lGce0X?0vT7IWs=oEC{R^9xamp3l%M>++e;i}YfU4CLqa$flyh6JKCU%PAY>tY)nVHM5H;`RuB)DMV}5tdfk2Q5tW!rCE2_$JO5PmEj8aI9IbvdFO`h zd*`O^++($4zjZeR`R`!Vx1?x3%U*S&*#7LE<2&+1gI{a>tQWO1{G03jG2PVaS-D+&YTn$( zArs>ZPiZ`Bi)yvs7B}~=2J1ofzX9^|bN+qL2)J?d?;@#xF}B%9ewEbP9X=_&_TG;5 z$M&gBc0b%c!B)y9;I_n#t1Dl9lXIHjcF|GSB*ZVVW75TAAsg+2*T2#|D0eC^?|rIi znEi(T4D%P3uGjihBEWTztNtu#nPXL_(%Uu9yQY`F-MiFIRm-!fDk{`#V-eS>u(=Ig zadxYd^HY~DN%Cpme||}F`u3(WGyPSkKS*6${FbTR^x*};-M>#KeEsGoyWrDv^Rgpn zt~)zM_nZh0^*7V1YUlp0R&iLKX{Suwy_a8B+)TXmQ=fP3lEVQ9{xg`LDV@HdY+8Q8 zy&MjesV{W&au8)UMfj+htbQ2ll^lu_EhD*3LRD zEHiEW^aXOcpI$sGd0+C4KR@^8;FL z^k>;3IyHFpmMLGFDk7XK9kg5p5BB4(}>QJt&YXBp>k zJp4k`0sf@j*)!gYEp+9-`R}}g?V;LtN4EcIf5!YTL;jnU*oXO&yR4tc9X*yeC%$UC zUwPmC($#1GGq6uv&)eU%%WB39)liX7K|f8cUs{PYS$ymI7A-O@V&1HS3x8CZ+}11S zT&pnmVaDB7uc=yY6`7x2oOo#G`Q7~Z+nr+E8@}(m^3Hdwvm>vmSk@xW1*g*`)K^~E zwCT=Dn~hr=ze(@e-uFy1dFy|MBI$?Ae@lLScwv(EcQ5YwZ){%wJGtDqG+uT8^z(Je zs~)`VoxW|`v!_v^i&nKQT$#B_&Y5|^B+W3@nf@y#Ccov~cYD|EpmjI?Gx%RNH-0;v zrD0X}%f*Wx@3x<|{;=Ouk593p_d;gJo2}Y9<%ieI?u%ljpHz)(&ZaBQiRrVQdw6F| z#LBjZzfZ1MzntI5)=G7H>aT4=kqbW@Sh&;=G!Q30-!;1SKZDl(S<->?YG?az{cX?F zpHVbLQmTGOgvCdLrS2-3GPQP#Z!WPuQ5aNz@L%1me{1gr?UMdx{&Sb^jCD(YZoIhr zQq-TYlW+9)-L*Iw;u+q#Xyv+Np$p9T?g?BxCF*b0 zvB&ORwzE%qb%yKyV^YiCER>74>n(eGs9wxpBH4e&&;H;Gi}vpRIKS#(-|3ptpR$u) z*L;~A^Yz|eQNvmBidVmxgihrXTzT=y29-MocBhVAdLQKZum0J~nB50@ch{f%S2sbn zfAagkOCtlP-?>?%_xINBWZ(p_YRo9)om)-n3Ha;#WT~;J=?EEfaZj)TqjHa!j3p_g* zCot&P&AZy25IFbv%RXE6uD5T~`yTQaN&RPNUwnJ#zx0dW)-mV4mCD^Z`Bm-X?W>m@ z^WU77)}0x2I$3Ioq{NnBiDl|R6LR+V=VomDC-~dlU0mjDiDL5V(|_Z;7tFW3d-wd- zqN_hzCanl|m-6-7QMGL4!euj$&DWoD;?&WuS6BaXd^`R2WRc6X{|pQVe^>nEce3Jf zJS!fj*&pV){)he2%e(gHm4CZbQ}+Drmt!d!MkQNC46cSOpJe=ZR>@V(OWQVHvUq;) zh%PUq<)2?wzdn6>S<3J4{IB>@e4*#3=q0X9&NptxY>_V%a@Mnd_iB&HNu{0Xe~*QQ zG5gy@{7#j+^s2l6mi^6_Y%f*c?qm>S{`~Wc%7eO`Z*1(^Jl5xByG}gSh}2rCR#W8{_dfB*J%%H-gF`|Z~kpT4%= z(p+a^&@;{NvAHG&uKIT#e$rA~I;+ezU%EX#wddF=z53;QW8Q>Ko~8BgRQ>FQtlQ1* zMF)ue-Tx)rt*m}#Z2A6z!i3-LYYeK}xl)=o1^a&6`eoP43+B@-vXo~E2TiQgul~*Z zpCRo1+x2Rbc;kKJ?)SH{FJSJiDAC>cY_;|cCGTGQ0Qd5P$3G|4S_$zVmv5<8D|=HJ zlXmi^@ZY<3dn0and^C;tAQ9!Z>Bw`>c>hPwZwI~mF70~9+&uI{a@N*b4YyJOi}`ka z*V8xNQ#RBPoy^>R`w4&O{ZGj z{w>||`pFyLwew#`{kl~(xvN=t`nt7(Pr_IgDi*BJx^hIfLAlAcbzOe)?!946vltdG zwfN`${F2&@o$c8!eQ$PLF-`G2wB?UOW#7v8mD?T&Us3gSO}V%v-=n_EHE62v3F$vi zpYG-j-~U@a`Rt-ch7wnge|jmrb&>GbplL|+HSd)6mf1&{pvR_Z)?wfoz6PrKZE_}uUoHw+VbvC+V`7NW~VFP zl%7_5RHn^;UwHrd`GY(5c{{RI%UVu0ca|wR8T34)b*4(nwe_dXR@&cd-}cS-L8OQ2#Qx1s zU%AIUvu%sLrIvB<;pd;fn6J9#_O<<7`qA0kdEzbp33n`Fbc4NSJX@BT+&7oEp~IqZ z*^>|K8%3tCt}ZXsdSV@Z`U1aFmEz5^V^41^s`R|XKDV}h342)LHG4HpYyOPq+u7<< z{kK_PmhN3~{9=-^nopUscCcH+<(0L8oU`1So;{hLBL2I+Q)@pH=;l``a|7M4yVulB z`SkUtTxWU8pCdo_ZZM8hdvQj$tZ0!>$&I#yQdP4oZ!J`@N}VJb&HjF#FqoE-9*<_wC+=CDL=3Xcf8a@q8F~_b@~4 zf-kJO^QX-{89lE#r%dnkP20e(6Fc1|i#9LTw~=}m<+<{roSISmC)*CSTaf|Df9#*V zn8%lKXYTpmdv0t0TmQ23|3!t;pRp&e7hQPb_G<0AzEl;*?sHe4uy7kU3npCU{pGMh zzQ4Hm?Kj?!kw@xp^?xqy(Jd|Jl4pB(p=L(^hZ4=w?z0JH@@<^zTl7zG4eQ$TTf}dh-POrnp5Go|e_+4;^ze;$^&Zc1pY+bj>#~mjjGtc< zWz|1dn+Hzp7q!{l%^Df#@3zw9a!B}vkTCy%3v1F(D(i5TGTnDz-_ZN+AYVz;0{NHj zKX;i)KRsX~?jQf<_@BQq*S+nt-p{f*r(gEyl2t`Q-!_@HAg-7;VM~7_&cqd7o<}B_ zER4{lxRN#QGORc+S~iuW$9MgteyQU+jI^ ze{L7k+n&9)k-PN9s*B|x_r7oc%&c5$F1g%O4iOdbmG)p;@LgQ|SASN{&!%_M-IX#s zdt~}v71-Oy_34>qsA#P?CGjisKZAMHw{r1Mu|IXb-n5DHW>kCbRS`B@a^7KyAjymc z$tEJlOl>@^+)U@MuI0aeC26F%&7}rVm|H7jU98&+SP5(3l6+`-ZNN5aJ5IAmfHu3Im?1B|clRZtDDp z6A}vL?H|2l`JMZ8kFNaH6WR0oKYe+rx}n@W=Zk*EH@TO${_5^6+?`#PsI_rY&YeDH zg&SJwCzLe98W(1~l528Rl{~0f%^iI=_0H3s=lhP=_1; zokgOhzgOqvdBs$$7L9l{ar^6pB@3edGekQaT=^&PaUxnm**ERk2>+7->FLWTm1>&&sQTe7Qa6Gc&FiKXA?f=C#y3)zG|Jybe!?y;YZ<@ zOSi7Go%{OcdI6VQg%zehg8yuNF>(351l4KZ9?hF|Uw(QRW8=RPd9A9bRef4_&T-dY zxO~`4_4ZHJw#ruuJIbbUwd|W7=U~6;@lCn6r)Sq5@kwY>u~%69XD-LKyyQEATjFB8 z75+^ulRxt{RhIM5>wik$&(*U}c|Ujhq*r=}585|PH@LsEvr@Lc=D6|#ZIRVUl}~>6 zmCMCVOcFS>C9%o9(G&&On*=8Za!}HO?IxO&(wNU z_F23(I_Vj#-@4VE+e22?wYB}%w{QOWr^PqEnt9r2U6JR%s4AUu%9TPr6rdq&>mz@}<1#!oCwt zMZBjqMV&|#m^$~`+|>JEm^0nf};akqZOy@3aR1jK|U;p~u%LEnqC7J#DKh{l-dFRimy>kEjpTCTx zjTi4SFHU?qw$;0}yz7O^ zW&!W2{|uX|GVjG|ZYbPwLMA2inMe4s%gL+%d{~(t5ZjsLw)#`;bk~ZPR$*Gt&&d1r zruA{$P4`t$EA-!d`uu`h(-&ubmvepbZMRv}veienJX%&-KFwk#M}xPfo$7{v+nD>) zHogyVbyi(9@pJsQsw7XI{|qvKHfnwoS`vdYoZtAakbKF&xja}~6i8d#i| z%~;J{9r(5E_LN+kuvfdR3$~n>pTFKUJZx52--4Yo6_-E17PHFQ)zxKb65J*iziD#N zxkUyIOP}QjXY%;l`=`E}DG4`uWA| z8+PSCVU11s2ueZ(ol;hf!PC=cEq;3@f#Iyqn*R)e z|8C#pJ@z(vdBBFg<>wFoXGmYkcRKxk+GVADbM3q$5ih647h+Q+KfStQ)&02c(XAh+ z&ZvFAH#@&F@7GnS%;gK)G&SN>t(J5~dU+h^b-RD*KSO_tP~NLct2mfe+IhMEtdhD} zwD-#)lO6je9(=s=;QHI4FD`ujcjQjBF|V4i=B~oXEPa!0i@N5DS-6~2`(Wadp?>+~ zb`}0y-yIFs;`ZskZRMACz0F+uNQmFbl>Z64ccj^|iz_>}<|)gnJh`#knJYV5;}^?L z_Lo1u9SQ%=x8!)y3+*Q!{~7e-gx^eNGb(zzvasiX{pria2?je}bu2%&rbJ0Gk=JxF z+k?1=3|Bn<%rBk%^*_V5Df@pV$A9>8;jXT(<1gQB76<=veEHAN&^K$lo`1=f{@&@C z7t%j`4G;}9bz8CYYHm_#t;ek?(RUwu`qeF6{cra2?YfWD3Qi_8?dzyNe<5A(+MBAb zS-WhvwjBHV@4||szMeWC!X=F)Zq8ZXwO-n%HO$-Mp>AIOk8jx=eG2!3eqEYz#c|-}3Bp_tCqyiYpjUre$;czNTyvN!D4-d;RWzpQotp{nc7 zPtF&Wem`0JpTTwFZE2?UD_3N`y7}PFO)jmqJAP^`nEOif^{bVN%cn(1&U#>}d}sQm zx6w7%F5JDh$@AC9#Ar_;7Vn)4V8Oi!YhGuCLr( zU-@|7^P1#>+3Q#PvdZcyKFEsddKJj^@3VWz(^pwD&#sgIeE#uGwttCR=FGMT%{=U} zd_AwN!qd~yzfbHx{_bgso!^mu{YNiU-oAf&@Z_^v7o(6jgb&meaqysF~B$F0KtR{t61FMi$I=Tvf7Gk(M6KXa|~b^L-K z-@A8v@{=lm*15MsqE@UhpLZeS%(Q#AE?X5J{kohA0{-Z|ZE=OxNkF#nC$>oS*pR3SSxPlcgM_+MSWEB~qZNfG>$ zY;CXJ-LXT<%l4_RuiVS!^I7DXpJs@zeED%_r}v@DJ6Icwf7oBYd+tJHMC09m>!&;E ze)^qb=JL&uK0-*=fU)sHCUxw>=j(Xg*S*WPs%RsT?xl@;ky zTq!osVBKX$O$9j)xl_4e-_E^DRy{ILtc!8QrL8h-HmfgBKDa&Z)6>Q+8$0#w7Vn%Y zVi?QYbZAM}h0CoDwxRAP;-6-VOcAZrUEHy1zN+)OT~QgAw9+GkBWFI|w3uNMlc@WH zYP;Lz45^GyRBF!uwiUShru$)tllHgzjTfa~^W3kk3BAiX^+3?Iw8AS!T4~?(o(P}q zIB{uBU(ZTk#j422wda*4dSD@iYV zw{tghUT)*X-#u>s8Sd4Tnq>P&d(WKGXuSHMjN3BFDRUhraoU}dOZpD_FfxaRx+wzo6BOc_Nm#Ow*9QrPM^2iF>8X(SL16>G!zvo z9tXX9+EmB;pW*Pww=rSif+sev-rzim@$u7_#}}NL7~N@lEJS{))#2^s+vL-)%XB|B zn%#Wl(JGE?t!2lL2kV}j{K$RV0=s$l_iUK%o0a`<{d7Oh6bW%%|1WnXt?K7io>+0O zTlf0xyj`rp-X>SGxht+TB#8LCq3^j}&@Y|I_yJj`7`f#P^eqNT=;?)&3&%#&_WO|mdS?gcBCibl`U-XdN zOZo6yRlN6^=SsW`cKy`MF3@v)^H~+u*wnVk)+UbY&a7FtaaSA9f`Yn5_s%4LbiDND z2*1|jRZizcG9Gs1$FYC=^0)P;>Ga#i0V!s2>4w{0ZMmX9sc&0t=8_4G3%df;qPtmb zir=1IyE$j~wwZcnFH%;VTM``e=itj5JKL)^7wSZBJ=J2$;PLnmkCo`k`kCyfW*Hg2 z+_Pxf45wprH-*IbK9stAC1SoM_t#&y{v8s^HT(8SblX;!?u#LezZqVA{JiYF&ch{l z^dx>wFaFP9Uozv(`8juI@BOfH+MSO<{?m>-e-Ctw^qBN$^;3_D>B}o-M`ab5*4o>h z)%jVew^Bzjc^QXDfd9(la{ccux4o;ln76c2MqfsGMKkQ@ zpI$rvm-*B0zU6w>vVr~ge$4nZKbhyM#I$)9&ptUUjC1#DV-xRP|2rY-(YKx781H;5 z@|LbNk@_dZ{)0WJblOYq=$Bc-{x<&^rY~j;-(mILwEOf^#Z}AigqUy%If@i|T zQ>MXjw;}tl-@e(o^;}wiW46jA_EqgUon6Q=DI##OoeT4y{?M&AZKr-@-jwxec5vb2 z!rSHAp4v`RIfH%uLw!;e+B>i4Ox(7C_b{L9-#O0t6|y{=ck^3Ks#4ss>-O5@(yn`^ zS(RG-A4sqPXUKf>a-n=V#*XK&zy}TOJf0WvNSvhalBo*_Ci@LJ5hlZ8}zLeVe zZ{CyIxseOBzG}ZHvSP{8&MY~4P2~C$2hmq+4doT8C#^U87*;mzT~(s#ng0yOUdLrs zuVQom5Tbk6Q|n2#sde|W!M_oRz+WbpLOPL)jI#p z<$OsCpDhnHz1h>MwI==Rv9IxkE2n&}o>%*0Np71%z21u1AzWJ9F7}_OpS}M7r6qUw z?tIkb7_GADs@4{}%#^Z9mcmV~+5%P_y}rlgU;m!xAFUT+fi`I25b6q<5)O)G3va=4knQxn*=Wh2#^ZCW(SAS%(FU^*`dDC~b`$Utb2rac) z^He@Ly_GRK9`$L0VKbAJXMojTRwN?rUH^RSK2 ze*aYMym^j){a@}&k0t+H_}#Z|*(~1Us%3f;U%gzK^(JM~R+GXe?hKuE+mp}RU%n+- z8FW`#E?)na^m6rQ*(cMq*Ia)4pJ8E@Rcz{K|AP0wEK?7^o3To@DPzgR;zj12E?3!< zwY6PLD{fD&v-~D=XWO;S^Gv%r!j`wMlw1Dv;@WlJE{paRhbuon{H^NC>NP**@63>U zaog5&=F8m18wKxjQte{3H{9?kb=i=-smSU-gV2f1!3JIlV$Z(Wy%c@y><~5O@xN6i zMIV$IP9I*)e*8^MT4ucH>{s(P&D3I_ncuyGR2DjebU9@RNVrp-UyOiIRcPnKd zghng=iNE=G%Ehxhx#q{*s+8{7A6Y)d>2Aa0zmYH2z4dE&bMteEM2~;``?<%0yf#X` zt$3}a@wA0a;jpRc;#l3}>VLMoZm(?#KF-r+VlLnPr}^o%w|S{MSR;G=1Kj?+e>eAJ zYQo|7?@qn8=@s+16nY{2sj=Zsjc<)=oli=FxmIj#kf}B_lMZ_{>yabql=LZmQ@6Zj zTXc3_&-Up542J#lZpSOKsSDm=uGYHhEMu~}bGo8$#CsmspcSERjDZ5oH)VF~6c`Fz z_W!l7Ha724iEf<4=NDhTT>o75Hs;xjb%(y)_bmDL?quSVzGlPj8dg!s)h!MCTuz;o zSiD^2pTzw?wF@R)eVjMp)a&PSzNDEw|IG0({O{F?v-8ULA6rp%-`q4fs9yGV;6Yg? zyA5rNv`%R*jyPp0uHK)ams=ij(A1_jd};CRw|x#;oc78WuiUtQ`uNY9n)Vjo3;PwG zFPRo`E#srf?zUM`H)?iyv}&fze3lvdge&*WGVSiup4ugM=UDXF)a;5Y^Y-4I(s!er zIk+onzVU0n$-lq27=eKjr_LU+pSif4J}UYoDbqyZ+I#`l?MH>$RqeUFvSS+XOre{zX8>#|2OD))At`p+C(n^2zF^u%4#Kbs;VWXE&WF3zFq&#t?-RX%3> zG0R#de{T~A>PqaLtHNp6`H)4aS*lokMYmAxRvU(rwu{yuG_UNceZK98>O7w#zbu)I zS1IWy$(Zf#Hs3Pe(fq@I2E%`Ky)_yC8SW=9bQixDS~6t{vv7Zuav!&>Nzdxv%T)Dc z&X*<~_1G@+`Q4`6gI73@r@uY__SH$7%xM9vcC`|*`~Mu?=a}^3;bF(nwpnu*yEa@+ zzAJsyFE8hj$`z*-PYT~E=ZN)Bv;1v;^VPTNSt>368Rq}FtG}`Sto}1Iqmp^NSGy+l z-O7CNIw`gFA?s9z(B(l+t=q5P?mo3GNNHtY{N{gcFZ|^#yt9spBrh#I0y>^TqIdP5 zTfa9xT7EvSZrg3kIek)_7G0e&Q)YZGZ0z!9 zf0_Chu1oAW5%aC8LP9O9&`~KSJn$oW7wa%AbRy-ImyX8CY;C}|m{|pO$S>N7!;r2SN?r$qTA8G%?d2#mb`DczlTK1qZW$hi&A7T+o zXOCKuxYE-K} z{<+>sR{tD-_fD=85C1cG%y<>4&iHuJf+x8EqKNGX< zffWB{pZU*T*4c&B)HFuMZ!TDHP*QbP>ZTQOtXre5fA{!lUz{9x_^tmh?xosiY<3$- zU26ViR6lz`wC$gxb>8dd*JoqX2g6Eu{??0;RPdd70f_fkfCXJ*QdE<6khQjZX^ZRdy1s^zOR1&rz<7uvDt{BU`?~iZf*X;;( zIDI_)C%~2VZ zY01B5uVm)Nsq43%NxtNHq(9ixQ_~~yQ|6^fT4F(U`{S2y{=2)P%ZWED6LdIAVBgEF zc^f=J!oRKm`AausCXb(1*01fWmamw!tjsRv;0M1GEgHQnC)X~Ks!;B$?OHI;@@be{ z#OD__-=x>*Iz3ww-u0hh{_+*(^KP68zcBN~b79R{sUMdVt&EtUp{qDCa81aKmrVDr z#!b1vKHYb=@1^~>&UJhApTYn5*2~cg zMVE(n?4Nkv^UnVG>pW#vR;#W|(kzv@q`hrh_RZPHLK~RpuU%(5&2~>lLDO96!^(<^ zeVUgvx0#g+t?CK!QfNy0&rqmXGVx-dtf;5L6xJR88RRokXPKzhpT9bT(>QMOk2!kJ z)}Fq6;o|l6KZ8S#Kb`vKtQMc-Ivt7VTRX0J=F9A===w6taru^l7jcXFHgmJIYtCFc z_2JU;j(}soo}_P3GOK=Bp1$`#!}V{M&Kyhe55Ab6S!MO@=a)-AU;P#E%YH5Rw5;iC z_|({wnU+DzT`zL%VD7VBU%OSx=*xeG@V75dh@H5@%20RsYX8^$2jech_uG0j-*^80 zvQm@DPARiFr>-*aI*}Y;a_F`Ct2q6yEY-X*@&4OSB)44jt3UaomfiWZ?yS=V9bO`V zev|vppXrb5U_Uj#bNAwux4kFbcNR;#7ERf5b)CivqbnCfL$4@AJo=qtmEzD^!BST{ zH@EzH_<^kR&;K2GY5R9;-}M#x{2Tr=Y`*G{WUc%p{g~DDwYMaD?#YB)uGH8h@uxTB z9;;*ZnGeS9GTA>K6z8XvON-rCc-s^H#{T(B+jS3RTGHiT{VYwF7qXu(pZ)cn$=CNM z&Te(SXRWXBLTmq?RIN=S2XD%pWIijC6KBwN=s!d78{Hi_tbtL-fBQy0Fm!%ZTV+gx_Px-z75x85s>UD)<a$04@;?Tp4=eJ%f>}RtVs9S3MyUJq6y&8?)otA;l$KQTg?xMbH#W()q z_de79yq3Kgxb4%`iCc5i?yp-ZveD(EV!lk`tGPd!{xeK|^HR}?VR_*T@#<2Yr&BD~ z|JoNTboTnpQ?a8#vB|DWAavw$B3;Y&OV zUij@1zL>n`=({~^p`S%g3ah4YU3l5!?yLHA(&d(oyG6F1-)?jJ?aPwzj930Ye2Mziat;`N#V9_5Uv~X?uNAvmuIW}aUH<2{(ZXAC#mrax6J%W$EnIidX3JN>ko8^u zGCV3%uiRO!-MFIRVC(y@TaRD(U3{qH)WPGahLex4jWOM=@WKC8xQ(B^T}$oe*_GKZ z4K1^7rnfHV+vN9jcFZ)xV+%em5&O?j`R&Lq0eOCgx>~V4msVIs|B@m_B>bD z;Yfey2_N>Ut_(_MR(T?pwQ{j}Z}eCM@)oXHB_LS;IzQL)qxO1Rtt+KjFVi=hZ>!FFs`dQf zN##q&{oY6WIF|N_D^#4C>-FnN&jf#^Kh@5q+i#xc+ukwLaru#o+NrP47i#WobF*Zc zdd#S5dtBSUoLcAWTO&^OoqN^Q@!igvV~5(EFCqD+rEXT!Od}TN=_y^#=C1F5enY8t zRdlC>Tl?Sm`9X5GcOAN@6(e=|(|-nr7k3i>GtBwVa8&Gic;n%ByK2q`TT8skSXwa2 z^Gu7)!97}G{~4CuzkD;LW_Hz^g%{?Zn*aH`v;XU5CoBy9GgR4s;rIA={9pEdp=x8^ zDYyQ1Zu@Rpr?yU>*K=`OgnFCV7fzuFo*)I*{XrA%-1??|>+orD>4?ZjL9)9&mlhsB z+rQj1zjATL{!Yc7=B2BB-7oY%l-nzKX4=btA<{Fmq%y3{+OlS@oH_IJ%^eP1p3NPX zEVJjGl5|(P{+}WL%{7+0F&uY4{+n8*n0t}J{0<*8bSfBD!S zu-bTU;*G!DTMeS~886FjZa;P@D0#`^HlD9?vYWPY>)t-4{iO4C?9GN>`+roc?rqAP zZr^^JEVP@`k$d zxAjThDo>V~wXx=s^(&UOZ1Lw7Ym->!n4sgh07GUx8n3O!uNZP zy*Pd|{AXb5>v-2wuuE9}^Gmte(|NDYJ~Y3gr0?q8yVZLNZ!&C|Dv+|&N6ss&YR03f z3QM{cIMhtrkrrgqRJYCUp6|ZX)l(Pl?bwoG$|Yp{;o2(42YwbMf96~+-EvT5c1fdJ z`Xyh{Ra?}XHJ3S@4|lz~->5FKH17OO=}Y@JZ`=0v&h6hiJAPLEE_mAVF=53Nx2URL z8?C+F)(R+A2Cu$VJSIrW`)k_K32t_nqnY=wH}=)r|iP?dK;feZBVRB(v66 zne{DaJx$s!Zhct6{_4T~kM$WTPxs}tMp?Ym*#FtH{)OJ8vwMqN&vXk#&HL>9>yrGZ znqA6w&;Hq2{?*JaXS!Ruf$YxBuj=dNdG(SyU&l!bF6*g?ayq+2Z*pRh|90KQcg;Tj zdow@Oev$Ye(HDlha;IJ2`u9?+~nL8(q!h6@o4c9(sjb zSD5uh1J`?j-PZEjkWbTxowl4%|25NFCAZ@zjf0#e%q2S?cDd{mHlP; z&n4~0GUPVCeaHVRq5kkSpFF93n`W&sQ!YLHsP(i_?w+ngcj~kJd8g+8{Jz5c?$-TV z;(uKH&tM+s^k%Ac^{f93K31aJa`JnYE?u_ba7b7q!^b5*el1zmv&m#$B(Kx2ut(Qr zn(CMSU9n^5?d>ccYh7ie<~=HOvSptsD{|udC9jXVo0S@$gsq)lrxcIrEMFuYL2*y)l!1?cJd-x?p4X*(Yun)&b=SJj^-fn1v(hpjME`nYxGUX>S9j5Iz@vXGBYmPnoEus`7I zpN9Vo?2aeD{nVSb-2T`Nrk_5mUno6gdoo-$MpVfr)U%0?IoPe_rK;Qd z+q-Y@pZ&YKPj+U*+MVlvmA(4UuxI;?z8UWs{xi(Zs6Tn-*xjAG_A92Urm4+5*kux~ zd@Y4FdDr?Se|0Rs&Hv7Jk(1>>_P@EHldo6q&F@$m^n~?4gU9@5FKq*-L^5+~Jec@I zO7MbHWZ1t&rA-_>cKhSAl(*j0J( z-f^ZgXf>~S>qL+8-823(6#qT6O zP1tMoWMhzxcihy9ThH4TUECOPb(VP8H4*-={~7EKUvJKtbu)3Q)`H}n?dz92&7EKQ zjCbk8oaG!03sx!DA8&l&aw}fh&b9QfZ*1DFcf4OcE^ak6c=CF_B1=cI_QFTIt8(t& z+_-F^m6X9+bL%$DNl9eVN-;G-m!gCitJht|a}}=b!8UY&dk9 z$5iOS_NQugL5)QLOHF+a=|{UR3oTUM;K#bYxc>NtrQg**{au&4=BCGghBlA-Lw7mf z)E>LD?&a@ePb0!@SM2|I<;CaH=bu;IxV^=>>FvFFIRP_tM5pSz%ciQDJaS5@|Fq&} ziejho2eHF9%Iab(znV@Gb-}RN-uk5T!&d1b?oxKn|-p<#U^Pk~-{6q=MNB=&5KOXe<&zeQ*-TBFd?)s_*WvLan6?Qpo_E@uvQz1J1 z`K=Di_-S+6CY@d7FE8Z(i+j=RdG+_^hziUK|0nvN!J*{t*8dE%&A#{c$?NYgODzlH zda`svPi6Z%H6!^Op}Z?g-5mG6v)x*H>UQSDGXjF51*Vn@makj$eCh3Q(Ii*Q`lsz1O79#l=d5cx}24_L#giMkE@~ayftc-pS~EVx%CN4 zujD>a<~djYrA@?df4S>B9q(p*v483KpMmowcYe0<>-|#wPxe2MHBWr@FS@o(;(grC z?yRd;GgZ1R+cR8EE*Z*MEM+qi*n8{29pSer=6eoq?-jb!HK*^0#KX^DUS6G_v|H=k zOo<=2-+uaC6?XW;^`BYqr&`?IAHPju&cfJ|pOTrcMAht^mSuIVE#Lf~A;jf1m!Tn)Y$W!@v!@ zy_V~Sdi1N>ism|HU3`^mHT#tGZ0_hkwJWwiJ7_(1mV<-nC%Jjumm+?O9rHF+zihTQ z;$6M}m%HKmsee>{c3*vOYa1RFlJ`bd=F(QzIy>V)>r1Z_M0pIg**F$_Ja2bq(cN#I z4o1g=|IO+DRKmIQ>FgEinjDJRFXKOKce!o9W%G@gDZ!y{?q1!J^)g$?tAFp&>n0)Z z^_P{zD;aIbHJ88q@lEXZeOF6!c>-d!xDsT2eLmRjW!mm-`{>%c7q!Z!ySCX0cJT+t z+3oe2wwX6ZV`W;F=JU>UPcL6p!>N;}$O(NEQ~t$dJO5TuNxxDY_tT7!E4{q)^{h4? zUvTu@Tlto6XSeM-_o#7?~AOjxvf^-MmcRS|!1#{ZC{?(Ut-k9(E z^G~(ddaaYTyLH%2zNr7vy~uxk>1wuV!vDTr_|LGp&hcB@!9y2v_im5+ky9%y)w#H> ze9u0O;3JJ^@35Bc6o3BtO-FU5$|b}7K{t;d+3{!owY_@Xce>}Uk;qXG>Fry@;dY)+ zr~L$9^S?u<0>7QvI(6^lrkZPEd;ffTrtx$|-%80tH+J@UJStx5{`ki7oF`{D9kurp zTK?B~{)de(R{fs$pP}ME!_G-<{~0Rf9|T^ojsAFit?`ynlO1yp&pjG?EpS%WDW9)0 zrZY~wT#|ZeV`rGV)f~o^9EtVoH+A3hEe*(Z%FGMu`VT{cwuH0SCH zmCVN#uP2?>GGaJ5W#XH8@9wH*#p*4p*Z)wW)Ly&ERao%;>(zgzEO!si{m)>UKQlTy z*ME!k?N!_Em%g22a&2;9UJT1j^CeC5KGuB;nxwL_%T&vC>XpLk`1z^nX`6l=aZ!AD z=l=88=PT1I>{jwdek!UvzxnfV=elD*-9K#K^`Bw)cy=1n{D$VmTD>sJUlYJ?+O13nL67U zM=SFV%;dGV|7PW@w{=}(-~Rtsn2YQgs%QVc9ov0t%jD4Y-65IN1E!c7GOp0G*5<5u zrKZ9iS$nGO>6?h~pZ^(-_HAsdc1wL5|F!O1x8A!~XFp!MY4t|$(}Ck`ZnJhDy0TS( zYo%i0DmAvWif*_3f|73OYUA$GuBc4QKl{&LEPwYiF|Ay-CHVZ?&$8@0=I-xVckXz{ zI+H6~xB41J?dV{aRq=aftnq|4a)4Ba9)%%!K&`$yEo5d-EOVQ%01}$ zG<5mAbyFpi1*UPnE{f3nH>dF3VZOu5cv`fUFL%7=`Z6nh?rOs=6FX(Ru3Xu~R+47r zyQL}j{N?`a`U}4jAD`PdW4oH_$LyYe%=1>ZMePcow~XUy^0!l)l~oP@DDUF_Yq@>f zuH}Be!#0;)eWLQ)>sOaViifGBjMvmSadqz|u?G{s?6&uz`rPr^`27>`K_w(%g2n&vt)QGHRV*U zr8X|=JMqf<#4`nxEV1oB`g7EtY`$iBg;i2?!Fhh;%lRS~SIv-lwSJ|=>xS2|Pxow! z+F-4;YwN#9GiS{fZJ)Mk)?C&JTedQ(2es~N?yLOsJ9WFZ#s{zKf7k!~Ww?F&-pMCd z|GT|VJO7W>yO^UHeR(_X%&3yId)rzYsxoEeccG8cGkLhy3hrk*e7iXQrmtY?L`q_*3fBetz;G5&78L##od7J;G-tl{u<}yq5Y3nqTrkY$@lYXV8 z`HS+6urKavTSOjSTz5UQxU@Pu;nItbQnNY}*f<{_Dfsg0dGUUUD*f7^oDQSguWXi7 zyG?PrJ*nGZ#-FD-7p7{fhMbUG6?FZa1q;yWTEXKf9;!lvmp@#p0=)!D2&;*0Amig&DBuyT3Cf=hetf4Lf@Jar%m`cr~YX#n@t1%d5UYU2mRxI59^w z^N1`A;f0 zXBYCvSkGE5IdPi#gz)g>c>=L+OD@|;g^5NNR6f7yGVej`mQztW^-JZy$a^b2$(W{G zF!}o76N?Sc^FRFg>x=7d_n+l|4*j^ei9f$o{luDQUvJ$`TFA5Uf%Yf4nzU(Yr7Mni z&Ro`~p=7s?_3iPk8{SXMn-V=q{2TwLd8;e8zq2k~?aktIMgGw7Kh29ZKlVT6Kd~l1 z>f7|h{C6J@yq77vd;81kZQqvV&69r|YH2890gF$FJY^9y@nTbMXgt z7ST@$#lbHx=|w$TIqlll^4y)X0?q7w>twnAr0vN*EbH9-b7r~Oxx;~>DOS_h{?7c) z^3pa-V!i<=ZX~7UO~h zcjkNa!|=lG&I?Ip|Lhrir?FP;c&W5ywc4a5Z5&)Da_r@o-Mi#|PI^jG(-zQ{q07_n zG;TlpLC}Buzm^wU-@SjDy0y4%`R~0uGgmYnyA*Wt+kb{VoVrUqp55y0x8YB!U46&% zfk#k$N3zL(2JJ7x`@fyLm73ys_uHKR49BcgYNr^ylN zhMSJP;?}&h?z+M}_nmB)?@BD;=HB$Y|KNWH$FFjEbr<6tRCjOdy*XKdQSoQNhkvy~ zw#Pp#-o9b#?C$($-@?M?ZO+x2)w3k^ws_b*j+9AJE-ng6TjsafR7X`l<1Ct_3p(Ip z!7u**48h-LC*IHc&+wif)J$f}lUu&(z{^k0O0%kBgN`rk{M{PF^UOW$ft*Qw`}O%r zz3nq|^&ZT8HrKgRL+g~`5_vOQ_U*lki~1_2zr6k6pV(J>y@`)myO&44pWUU^(pz)! zJpZkhpjAiMCJ0#Oul%OnTzgy7e??UNviQ$mBxmQ|c^%KV|6cT;J5>Sum?AY3YHGfC zdc1Im>J*ABF;I9_aI&)U*X>*0=W^RzRa0W)LHAI*|7X~BX+9%p4ukb~e|jEo!B$n7 z%a@M5TC1uZJ6E=|+8}N3@yoxe+4EwKYbi~cEVchc{nAUTbvGGmX9auJ&whGE=an71 z?6;6Dky-h>cP0jlOjCU9aW8$fLZ;QE!+i|joPNKVH0w2J^6SMXYl#&m>*}w5dSTVI zYHzZUyZ)@bD%@gSmo{=0uui!nTejWaulB{eqD_7O8NSxtn{PHzIe;<#Yt61uJ+JwB zE*GC{+RAd)+h5nmz)@wNCxgN&p~#6I@(#7zw)3Th={~=-BS=y}&W*7IX?`0Zk zuj`v?&+2Fg`s>=dbSv2{@7c13+qPLQ_xPoMFN>lAeBIqNx80icVp99t{|w0sx%7@L zUM&z9>gXTu7vuKnyildfQSpFJD}xsukzao0Z|yYI!;veyT}!1t{0#mxH*nIUi%o|j zR*D|=tDo*~a#dR6LTa?qq~P-!jf=9PIwvOa9gH}#>R#Ihxm%N7-g&0~^wNy)(oaHH zPXNum+I#J(xoQ}wayz^JnZ~QciexXZnzb>BiY2;B|1*@%4mQ|&bnpCko!iA&oi6`f ze}2(#zs!5Nmz`g&zj6O*Uhn#VKW%rcjTUL?-M$sFcl&n3j|b(9s!n~&xu>O>s2j*) zy6Rsge~$szfm{C>=BJcjIIg=TPC%6R={I@5ezUs5XzQKJ?>^8Mc3#mx*F2?)L=`_u~RQLn)I%jAO1u>@mpU;hw`7j zT*32qmic$*fBq*?|3a^|cj8X_DSY|GkDu0Vc5PbUIc?#pV((yoXPFmgN>8P*ocYi2 zc=gTLvsYhKiYDhOTuAuO(6(1D*ZjBco3^)Hi%w41>gdPZaNyz7i<9ovMt@-5@Oehg zvcvD@upPT&@F=|!YxE4&>%vpLcEpQ0bw9J7NlDkbdaQqB zx&CCWm5$_}uxmHAPJUD!o$>V7Z%Yw1pPJXQxw^W^ccwNjcV2Qru>DE3Nwn;un&U?Q z8TRV`+{JU}*1NDX?&W{7m))=qHL&RU<}G}OJ^xa2hEzm6hz}X=QBR+FD<5 z=ZVhN-;!RwCEIF2+nY;g#63Q7YpVS_x%B3P?W$9cFPHyjWqI@GqRKT_xrFEY|B_xT zDSlRd*6zH$8R4lpeh+R}DGNORs59l$X=fAXqoKAcEp>O62r1cBBZx|a{njy zi*_sih1edPxMtpD8x;BDSPaHbp?sL5_vScUo6??P&8=u6zGwl94h50iV z|KFGw;^Ld7QxBA{pKGW5@;`&guIRVxpYq=@ev<5aaPP{Mg@sz0UtaK;thW-3oUqdD z*Zk$1R?jb!4;4LXf9pTPwR3aiPUO~iZvHppKf|?k?K}2Q>62pS?mOo6<)TT+XIrtI zN;?#+rp2l`)U`C(AHGppd+RRyw~owz)Bo)%QLaz_)~_Caa{uf39$ELFO7A}F8hx>B zj?kZMXDaNeJ7qoc90WLCn| z3YH0_w(E~?I{hxa%{NY_`P=%xtk;)+`{K&0mHln|U&d=Y?3JwkGwk0b|NHrdYWw6o z-iDd0$~#|cZWIpBeY4i;#B0+~+YHa7 zRXZIo?2xHHW2H8mJ+Ew5PRxPVZzqd=JCyQz(In4BUTNo!{*kG8weqD#^O~2>!c~rm zOk=*eN>DShp5Z@3_{~e6zXdP!TwZ!Spl1L5{|xfGodh?2Ps?BSaFth7%s*yB|KLAL z^HvEoEq`C|NxRG0WaY|rcP7?<_?}sI(dx&>^}qHjUYxuBTg2B_mks65{AZBfwe79Q z-|rjErhPsn_4Ro8H}$xbmoGj~43gXv5NfC4u5IaJb+csBk-zl}bKVvkrg2@7&;Pm0 zgX4<(#22R@{`$}Gxc+4BR^9l}?_%dqFMi$SyLWfp?d(q{-@^GS45_jz1a12@^7nMJj*{z z{!sj!oPY7T_15k7&gC{ISxj%{)SBOWP_*^nW46ji<>ekJldrDGd=UMrwmtc_Z_m3G z?@oH9zx~O0(e}?GCxr`4E7!UU_pyBV{L*T^$hYfRAs6!a`{yg|x?dEUI;+sN|Bh(= z!EEj2tv#OZJWL61RW7aAJnh-H?c(23W$%0}TjS6_w@PWA=<4)k^A7(g{8YU{yb^I&?o9;6>;M~!-j9AEFVrUl=5Q!RucB;XN>ZpMfS$C z{xi&8abew!r5_H@SXr69T5)OSqBeuiyV<0Av_!W|Sa9zn&L^FVE3PozxA&Vh>Hd+@ zBoBpBhUXh2BVP9ARv)wp5}hZsM)7y5nGmnT{>guP*Z%mnNJDCAqp7WC&x{U6MtQsG z5_}hr=GdVM-Vq+_ zt8r77BRc%~^@6X3Q?33pNOv^L_y}yZxgt_*vQU(}>XJzj=i}FPw$nXNmwno(_N}1K zwf^kIyYrr$^#7Rg@|*nUFPqQ&XE3&(EZesE;?rk~7cSQ2aq8=1UFspEAYpa0yFKmK zo!fu&>uk2?^JKYxc@lhP{a@zG-)qj>I2@QJ_ABJlmaO^qk6!DEZ?*2h4txeNxu5Fp2ld(cdY~~E@;|kjrh;;X=6xB{Mj@k4E=3b6I!4PW;ZFk^01f@4)>02dc{jIx-weabh5=5HyH+{iSL;`))&GPqahrb>+RWz4{VD_rmH zt7f(O#Hm=Vmrs^g%zXQo;oFrt`}ZxGr6j2F(~|v8JKTeLrD#*uB?xm~Bg*_-)KxtmUt)b?TYN%BxA{ynk(X>mA(}eNt%8t6S4{PMBom z%4QdTe$fo`d(qql*LHh(?D`ZX`q;5Ye)H103qK=2EXb1yGtMeG>ROkrI-#qnYq#_U zMZ-&Hlhi(WeEGLwe$$=X_m*wEzaSvlP=4#}rDC_|>&Mup+)|QH(f${Fb;{Sjjwfr6 zMdw@(e6(#+u%S=YL(Lb^-YXV^z%}hen6ZOs;1;w*RR1w3)`ZV)gtDCA+j|H!awC{#Mn~{x?0LbzU*rNya}; zePIfpw~mvCUm`GRnL+FR<=1Z(wy75@8FJN~o9gz)W5UNTw&~}uKQG$x{^5@`p^j1A z%^_Rc%$BQ9I=y7Y<)!t@pWoha@K={jInzG(#Tx4!m*i&)D?Sd4+wjaRF1j%2;evH1 zF9aOq5mNJ-?jtPIB6LKtWObSQ)VU>1I_{fArmpS0T=4eaj4y%pqD#;06OM3N{VDL0 z(&k6U9aA~GmA7v!eRC?RBw{hwRhH=3FU{2&kABr3zP>a(QERIV+T_XIRNP+IlV>B!1uz6!M!-;(() z^6o9#@=yIg!-8G9^?8=HpVBA)eWw45c|pDXpRNDYJJpV?vn(wA+`hi4H=Cu{St2+! zV~NpDCwGS8`tw^qeqMW7DkG|X8%Vphe^wdirERz8-prrh`p@In`o8-=6nk%9_BW5Z zlA5-3>D=|6VGEV_bu#@(@t7W!m3aL6?B5ZUEBr)aH9|ivt@xLFp}6GRE7>&_ll(0^ zwz4u!juM`Cu%|TU@5;-2mu{Jq@%eYywq+di+(knQ_6GLN4SOxv;P!ONosEA!zd3cg z`j$+P=MDLd^{4K#tSg(Czx|VOcGuLIp?FYZw*1uWqzy8YZW_{7%qt4IxHn=Q| z6N@Z$JH1r3;yvTez2|@3JF9fz?ui5I*J)qYmR*w_eKV~u@Q*_M`I|50LqBdW%gWz= zbEoI?WlQzhYM3XA%`5)~4b8IelnVxF+a?H^G{O6Y? z;o^DiJ{*Vk_-0?%$@hDIs!GvY?eZP_;-D)Z^d~j$IZ?WKV`@qQ*JA#hle?miu_`+M ztlxb3R^E($A&%ESzbsn%O76t%(u@9lC+=A7xv+3rP0cY$fh?DTg<)^Y*?(1Q#h%rh zX;T@&^|O9c)z_nQp6$|kwEl$r=famSKkUAr@9`<+V^Upqs`gT#;=s&~kna4IR zoXEOHr}A6T_Og=_0)}Ou*BX94_+nkO^aS=RH;z8ME}?EeUdW-jB5LWwimO?x#7y*FePftZ zH;4N-yLYDU*)IvcIvK(rq?jkqlPUgfHBtHAp~#cJ3=P*mI=}q<^1RLWs)L`KihYay ze(B1`H$JS6M-slfxhhXvv|iK4{r-uGp92*8Cp1Xkk)C8b_uO^s5QT$8ADVKK4xUN)w^=1F(FJc=v&H8lqVRgop;1lUTn=i(! zXwG`K_vucJUBzoM4W@*w_mned-?3^^w-(PNh0H~*Ej%?w1{}Ko_WqsXGTZj;^eeIV z&-M73ym;(CxA6Fq>e6M;)5~?YZe8Qowe{WASL_pB9j;Q|{oU^L&9Aqsw|!HqPQMc3 z%4g*J{G0cLV*vpdPlbt3ig-A6k<)^WPiphu$W~_SToTzZ^`5=1`=7h=r+2;RKe&He zr}Qs{{|r;UnB_!#WBWBP=Gy6Zx>NTrIjS@HdhW|xRyI4zCjQ(qNx@KS{#WyFr{2b# z&wAusZLn>fh{qS^3tWtT^L&p_OWV?Cvbl4e!)Xy;mn$DlSH9T!r~iCS>B(mqnV+K7 z&A03h70fEEKA&~i%ra?~h>^~xYr#!2R+{=NCZ6BPos^+g@$k;O6vK^+L)wo2&j0jP z?tS&vYnM{?Z`v9tqZ}Gyw%&(T`TB{k%**S%|Gd3pdjF1I=lS|2b7WPfM0~k3^B3Fd zZhrS5Ccmqpf~UGwu6Wd%G46Qw=<&_AkEic!SoPiD&dK$cCI$UWr@%>)XJc|RD z+RyfM)$H|r^`xpg>)ZX9w>^F3Pv++)f1cg6=AaIzBa6w5Ke0ARmQfOuG^U=Jr@Uf% zn$?Z|r48NXGIz9YZ~SoR@4WQOEBE=%F1{6Jk|}zmIsRDmnY9M&%lTTR^ll!0`Y9-J z+r4||-)Wu7s^9%-k;bC+%c^(T>hv`1-n8S-t;hElZ{D83bJ@av`p+u;>SsNd$`$^s z{#Q5OuzJ>N#YkP=yql+!Ji0@QLRz&~|Juo&u>bAe71O+P6?8oOZ&;=0=N@|0RGz@T zF#pq+wTqUvW!m(bO_%Dn+w?2klhHw?;aB_bCPhgi}SZ#=0 z`uR0eZ@jcSlrJ0D=IpPM8LYalf8|XMG3B}O(Z%nhCKS$c?zfwK*RxP*lTPNJU+dpJ zJfHK%RJKli|F&m0?@7CD(tId?WaG-vkdHebCQe)8q0Ie*JFj;3jh($=E>lk`H(I>l z-mAK$>d21S=NbzCGw_GB@2Q{ae(dh+y+(gme%$>ewLIWyIa}_h+38tq-9N;Pb~#oA zzny(jr)1L!om<^;-@X}dyTAUA{PJHJe~gdrUi~v|>I+V_``hm7w8VO;|IxnfR99DH zwT6G%e}_1H@ld?%x=8 zd;e5_K99-%H?sf9trwkqWS1jL?fy5VUeVJRSqHDm++_0mczXWYwK_t}@2ss8*X0p7 z>91%tVO7NqlLf!_`^%k6+}}9mhsRRSvlY$1t6U5DTeY<3Dea4YQ&l4J%zWLazD+!B z;+iuSt?#o){r$>n)hw<3D&h|JJW`iU&0E0yL%I{z%m&QefdOO8Li{{OY+ zPvSqN|M;9S%QoFqzVH3(Q$JdS!yXsy_;xZd>DkoE-#51$SGw$WO{yt={_>q{r|Uk< zP`0zT|6IymVZ@?*{?n`3)!dKj{l84kmu;W*Px5x_vL()#fkQzp-}j*}botj56cxzgh8k^-bQ8cGODeZtk3eIW>GP&x$Hzckawk zIkxYb#jaViyb8m#)&`s3vtKuNVaU}(H@36gkI%BvsBd2q&JfriZvJug&z0ZQqYmt~ zzMZuAiF)X}8pq|WMPCJ{;^mK8F1q%Y|QmE749jTYs2;Lg?FRFV~%)zO?*a>a$}i` zSteYnipi>MyYJk-9ro;@TEAUQ;U!HysalWl{_~5T?x|D$)AQoas=S`-@!q=(|1)F; zvZ_5k;3!uw@#V;Wh6A^XJubTz3tZ82e0J~LwX(;GFYPba?7#ZEO5^u--(nE^ZQBUzTNt{RQU3hWVQNj;!{@Yie#rr zwM+}D{LjFjxhqbw)54A2dzX%z+_qIS9xs{xHnnlfNtU%wmrmI8t-HH__u56$S=;1YwiE_&tPD!^Rh_oPfs^gY4gSR0=llz8 zOT$0K|KeWhJ^kmpa}o_HBL5lkKmF_X?ppus?{)jkcz^#%$FFWt`Qfx$Q-*2H)8s^x zhWYDds&9YtoT6>`K=UAIT0;BWH?FIp{~7v0+iTSd|1+HZ%^D?X-*DyX#ltoiYrpEG z);)4}BvjRT@PKmR%O}?oe|u!+u(AxobTV=nH% zn|<$n?f;>E{@UE%-#d=_w6)ayXE=LtWi#VWvobZAbKwQ24)&VpI=3(Ty}e^Ytnc!u z6Bl3ax2pW+sk&r!sP;d;w%s+`uJApO>YwlUJRvW3?Vc5{&5k{)EH?QXkTH#!HCE;0 zihma;Y+4;6{coP_%56a%4PU0cp1G&G^V^O>nY8A9F6L+Z?Sn7IpZKHuWA~PfMfakg z+k0>P`1P~djL$bMUIwkc;MisHe1fNz^oNqa^>XLl>b+yRs5)D)H15u2`^@89A7AkA zDhe^5+4^?p=QKUd8^HHtwbK zCNg-wJQgm^;(p?y)&fT@`$?Ii;?3FB;py8x>pj)mHg|V*oyNcWfv+#URC*dajZ-N? ztgrNs5m%kO)~}NA{SPl?7T#=@5B*bia|>fsW})fSlTMq@M=P~PuHtfC$13)#p|(Tq zsa$eN)S3J513|Y-v$C6f+M`#0^xFQHsi387Cb#o{PA_vi*W^`q_NDLU#+;t`Ba7z? z&RtrOmBjp|F+q94?3jp;^(m8!bj&%t8iPN{f01{Rs6A3)Ewv#0>i!pe?R)G$bKjC! z<6^zr`tna7xr-+cY>mA8dF#rTMj;kgCz(~8r|6`Ih)Gz#+iuUZ{~45Tgg%UrTqq+h|MZ2IhO0Z@RD&&>_D_=XY87l= zW#X$EbwrdyqJ8^*t?8+bN4}<-Bvega<#A}QtI*BlFz2)@CoUc9k?dcxfyZ~}uj;&t zl%+NM^(LIwuDJSog29sda*<5NT<4gDg2LVcykBEp1-{ifcKFece!rMKjf=S(m;YJ5 zV0+z@7pqqCn(Uq2bxUjxr}m<`$t%M){B;fpQ>gFX%%ON})tA{vrvKQb_4{#MP4&x^ z*snWxtCzpeIk~J&SkK~G%95lbLK|O*apvjgxo>{)O~N8<|McIsX6cjDI+yq~{;Z$B z=-~W+h5s333@h~?Sp03>ZS>DFP|~P`*H3l(!l=)O7 zf3&Z6)U-XjWzsVb^NO$08mq4CeE0BR&>rn;k@Yj%1D>Usiu`AgGpZB! zj$>Rut~svQx&4CXuji=cGlxchT$;GzKKK~iq>VGjW=KT2nN&lh!6O%UQ zq+0!E->|)g!Q^*+WwM5$X{fKog__X56Ka!G9b8*Gly5~=8okex57<=pQJ&#H!~A~# zqI(}VzmMK}R*C84?G1r1z4RwCd|WR#ZSLAX`+jXNzYzM&YT2UhoTpi0nhMK3zb3A> zDHPhqRZ}?WPOZaExl6Z-)gI>VjDCC0zg0Ql`Kgu<+@HR_@IE7V{mtzyP1Qv#^)K!2 zhsz4ZUi`?u)$Fd!%h;{kO>LS?JXe3%DLShwKxv}QLS?pi37Jp2KfbBNUS&BY|7ZWR zSC)7F?uy;K>&BJ8UE2Q{q;19SzP%bd)8A)t_PaIP?{I{y4=$98excj&N?Q6Ad{dBKe z(eYdD#)!;4L3?>^Lv2M8L^AGuH8St9GKzk|T)+OUbgsdi)fe}j|5jzxT$;E%rgnek z`A;wQe|u{0@J!RbH}~xAnRiW%ubej7Up|GCXR}Yrgd-g?d(^Zu#aIMt-`%@#%j1&R zTWx>+sGlXf-hJY}vAEln!}Rkxj-Mr*xjE+XzB?XTH%lrWxO&M~=F630ldVP^Qh*`st<1l#AcgZctoh-Jh1)>!Kb~I@@dbkl>F@-y-~^P$4tfdfB7Y! ze{}2mu1%sR{xgKH5Bd94zv1MHYx`e)dU-wnKZCK&x5Kl#wy%GDBJt&QRn^cqDK<@4 z-B720UwtlQT#9l`aP8k}9$hh0Bm8gt_GP)|J9A^Mp8vI9uSG}x^Rhc4JAWAczP-R~ z-s2_nJe5y`T}%%C@#Vtt!y%yt3lw%Hv8(*f`1EqeEuYqpKkMf&uH8MmrFP4|Tu|++ zezD%b{^`qmmM>oKW?#PfZ~UGoGnHd6y1HaM@?_XGLGiP&@`HmTglW#2?jzP(L#J$si-|JRydci*m^+8kcoVRncARoJrCpSgpI{bV%_ zc5|oIl-w|_ef#0{lRA6F_MYJDdA6&AgN#m3oY<)|rQ*fhr){g2tYCX|Vo6{An`_p^ z$`$^)*`H*^wmr{e_*j{w(EHTa`#*!ce7aX|_n(`eqt^?w+82Lub5`7*zH+|g#1j{T zLw3*Kp2D$NK4OZL0!P-`V|V$a;3VZtAS3y#dpC zZyx@j%3hFX`Df+T1z+E1l*XTs?Ke&L&FlO&t*WWT)zeYcrsB<1{w@Pon*w8PAGURQ z?q9zN?Ag4-{Ze!Lnfm!Fm9u}zep1vq?^NgVpJDd(h53?u(-z*mVs!2Ay=-M?n<!aSr&+4mxbysV(NgiA+|DmKdw>Ephg^=3zKX=9F{d^O5>Q;bEfB4&5 zZx4Eg^B8q%&g@#!=RQfDYZ8n0-^zdUj)+YQj1iW(=d^!r=IaaD)%&L@N=Fx_FZ^_r zf5nTn{nPF%fA}ioIP3MBPltSz_|*)bHwA@qXHQVLC?%YfQ#bFr?5wMM+TZ+VNM90m z`{)Ug!ui|(_O;2Zd%W~#;Pp!0wYxq^`SSPK3ilMm(;rU=KmF#j@~Y@}{~3C1_g>#|X4#{@WwW!w5}&OUycBfx zipoB&0+W!V+;+{?_wM`Io~V{OSXrE#bD(^y&0pAhpKB)82kekz-gDgDFOq3T6{$3&H^wc6U9GfN{@F#B(ey{>$=5f(9ohP;HP&Uz`cUr)VX>-N7Z-2u_T0Mj+3_2P{xeLZs%~h>cjgwk7M{Q@^npKBYs@A85#=ovlx}E)6tx07kls8(;T-_W9{~L8QC)=InFJ zmA9#Q1>0S_8_I0&ywXH!FK5K^V_S747(@4Jd6@tDtvl_U_pTr5p1-yK#Z6Y7x9!Kv zf9tm|&fd0v*7>9B9;{p1|5W{0jjd>!$CA?B>r*5?ie6}Hkh*KK!6vWft#U-e{l{Ov z#hRTj&pRM_I3)bx^3&I!Uhdt#!2;AA3!m@w=C<_D{O?;0TSQYqf(O39Z8y7YO|iz*i%8^_Qbl{*@x>U$*Pw8EB())?i!x;V(W5OrS;-F zzDy+l3GH0@kIOL}q zUu;`&&Dhz$qwvr1piJXRDb?ce{skv4scP1XO$~lI&E&eY`NTiFJfBQHXm|O}VVz4A ztsB3U^jRI-CA#ubo9y|mi#`X1JyKudK0*J^an4Ie7~~9|Rw!NH|HbZAO|avtmgIJy zW2&8}O&XqGnyYbLb=y);@!Y(Q70bI!S1nzzVrEa0cjUCn#*oIZOgWAZelJ>cuc)hb zZrHOY77KeWzkO9ImaWKR;B&JlFD|QnT3T76PPf*XX1~qKLaSxpu=f647oiw(dHK(I z-T!92*-^fW{qK6W^!58<%j1qWS=BDLzVc|r>Ht@sby=^3EEv9A+H&-%Q1gL}m&6|3 zpPv$bTVwjpRA#%D{|wU?n$CNYdsSqiO3iW5jSkj7XMVfu8xpd6w`Qap%SrJ&7Y@uX z<;f^r6BN9oK(sVs{_8jPW=FLBWeUI8KY!t5xuc`S>Egz}s-S-4mis;O+Pk_pwSRc~ zebcv;_n!Fi`R3Kz-i18|zpK1r<~hH8*na5svWU#&lAyP$ zt-U|K`O40H*!b@4Qf{l1vgUbmX><64e2>5TDg5&3oyEV(M3lV?9v|}B)&Cd z_MH5)y;pxrEw@`U$vM=W$KS|{>&6c)n`!M1`xgFPV7tQlxxqn6XI1}S9>;%Lsmtu# zv}f0Yx$$p|>Zg2B%kS@vm-}rdv9i2B`hl?~&szPqrIG=$wLu0wE}YHp~n9iPM1Gyc{^!d`@ziz zdl&z%DGhOoQd5~U@n?`b`>RTo8^5h(KA-VmGQDB)pP}_QsMRNUr*_wko?fNflQ{ob z+P|>tE{p!@_ow{a->bgrS!H~Fee2Xr_SeQ`DJ|`&&zpM3ZG+N3*WSN#a_@XmWR*MH z|2tLw^LvNa^Klf!#X32ly_k8#y`n9r3;k%BAuJFV5Pm^C>_5dht@2Q^asq)Q&8Eo~?xf z;Zd{KGrBg|9k~4V(t&qv4)2ytWt#eD^_BL_y^^8gFK#6FE&P`^ZTD@~nI|56+VOYy z#I?uMR;_$KS$1OEf~?4nFgA-VD?d(QspO9SW4k$Lv+fnsmWlD75e2v!YY%?+m@D2^7M>UmWlpkJ2Qs+ z)qLiRNnXE<`agV;sP3L<|Kn)$F}oD`4<#nozn6z6thiPCb+?(T2&bReGKG!nr5*;vA#@AYH?+LZM*~P-izPt z65G{`GXIK#X5dT9eJ8%!{LXN1{bl|Sd`)+cZmplLpLOMm=e)yTm*)B$T>N{LO4lTZ zYiW@WCP^xBywPL7cKzFd$un|Jq;9JE@JBv>Zk1l{{3+ixBiKI9o2nQW=&$ur;;a?V zcK%P#f3)uW6MDCB|Eq7QaUJQ4=L_%DjN*8lbY|(}m7i=+=9;l^YdpT$B6E1}f%@RA zDHA{U)K6YwUU$3b?}fB3qs4zsmjA1Nu{Hlc!_)j*TUyg^?tQrRv*FoLe>H9Wxn5E+ zr>IPWSkrtyivCo&2~a*gw)FSE(<5$$y5m zKfgIwpRul)Tx;|uXvzCV#c2!cQZwg?EI+?c?E2|FuVpt^d_SNdD#lyKhrljYu@ z-+Q;cELw5#^+NRv^|KeRJ)Xbeu9R8Vog=GedFY%C4$2O2HE>w&GAVE6@wYtFs&()G zex3ZdY|jgA!x@|_GgRhFa&6pD)#f%S=s;a1%ir47LU&^X9({EG9Zk3=|1)ec`Z+f< zR9Ein8P`y;iKoTfS7f|TPE37t?^<*`vrJab?NIxUl0@B>IHuU{trs5c%E&VIGyPd2 z`o3@Bd)dR2R!uH?+uJ{7y2J9CX*W*P5M?-gZv@Cq3(E>xs)pOgaNR{g@4`9#!8svA8?_Wqp=_dqLL5sq(p1 zS+*fkJH8xe^P6s{>&ty#HfWhx+uEedf{a_OIHpeRHox?1?@EtrEQTAe2FLqP_dmBV z{7B&K%WLuj8&6-9nku?Q^!*~O`N|5DqWOc{^cUUtp8xV~qt!z7!|I=xyPR8FbSort z`SVMc)u*mne8Oq5IIoe!JWdyFWt+9iZTu<=yQVlXD&6^=#__!Az|ENl?RFLZw!iuE zMS{l-Lubd&uQE@BOF2ePI&x7ZN>$KPs#DJ6`nRup^3Eow{rX!kck$NS?S>EHG|zvi z-+XbicdnLJg*w}Q!Qb|$FSFfUbN0c~Y5OzMi+04!nf%i^dDXJTSEY6&oR*l--NsVC z;oGWL_beBESk|-o=d<|_UMk-|oqwB4K>L&ZL)i#(k9vdq6Zb|aiO#;Y-MDW_Yr=f_ z`LzxiJD9{Kn9qow{ab7IO|zdlj|Fc}RJC}O{H$j6wQcv(?H{G6TWXZ+9~9uq`EmWOl^-@g zO{;1-STEYHy#4j!Nv`uOT(!IxSu7UYaEV_&@XNPp-mi~N@z^M9|F+7&cX4W$K7ZaG zkJ(pV*FW)he4bRp_|qh5#pLYgWpS~Oy3!g~s$|vQk2pM0CEvWuwd{H0&tJc-w>}fk z=EG%5n+|UY z{=D8o@Nm2Q@l*#2Nk8Jle7FMfA2q-_Gmay}H<2T9<)Em)CJ^%@0BU`OeF~ zKhMeYndi;kd??^)(&COiU$1;T9_TKTGb^?Iehc&sH<>WKFC$imr=^l<(PnPO{H&Za zpN)~r%2mQTtwl?%C&9dCTq=uh9z*&T0ma?7Ky3%ze^dA#&a za7JI%s>Fq4Zv(3db8{(E8yOpSz zBIS9tKaSDy((sG-i#9PuJ?O5r z?Us0FqcTI({-UhAe}0Ch$LpW-n(nUuB%l4|*u(Yba#|MN*>Kk6;>n(~m)sRrFLUSE zWVl(YE#u^`!s_bC{A|@TLKT|=w+6RQWnb=bi$!?JMP3b7j>o~T*!rr9Wz}hTT~^%i=*-hRZ|~&lSpbO(HQjy6gQj^S60h zPIT*e^|MNTx_jC7OGo@BW&3}v{E}Oyes=!!*?iNi)-Jtu>G_8*T9Ji2!+y7{?6CCT zo~*O5nnmoqJId?*pA;KO2OSMp|L`kn@+;34zEx+Y1s5K_ew#bHK3!qwgq@v6 z?&bXF<+m?C`o{T8-Ng&6)Bd^C%H9z44ZXBqudJ<7OLDe!`}xqrENgggCSO-@i`>b5 zUQGSg(PwNu{g>=F)X!f!A@-1Vxcrt9m+HkoCH|azeQQmx-_@H_s-H76O>b7*W_0Bz z%j9D^;Rm@-9PP=H?tio4+cLeBzOXeb|Fr-76{Xe{_u%o*((vEkAE%dpO-*mE{Ce;8 z?X6Qb8?F$w$Z0j~Q^{5H%=Rfb!n%L4e7eB``d=6U$HJ^yF^FK>-b@{|vt%bH(oD;GbI_xknG zwRa01YFfLex%=z7RBunb68to2o<{4!Sy?WcCPil!H>`61x_z^??#(q1yUsn-R!M4S z{@3h3m zoe8XeZ<%>&yUA}~@=xN6toPz~I%#fZ3+5|rjmnCB)MXJKp(paHHg28Rf&UC0-=17# zO6go;@KcXtgDiGj zS@f%Nhux`niU%(rUt6O8X726K-nE{KRyL|HPoFOz?rXiE%rz)3?aS#`YWJQ0-M+VM zgZFBWDSfZ%=RduaA@u3itL%;?iV=@>Uswb+pI&%c{@(9ZQM=669Sca)zNV=qweZP2 z3n91CjKlHXRUYCyzP-D<;efsGb(ZIUqpJ2Ed%Y*dU&iU-rrP-DfAxCh4*tA&dv4Vt zuQ{%)N!mxcby*!n1s3m8YH`!pv`EoL$ddWy=AxxjmSj5mf30_49PO90@1}?GiKzMc zfBrmPoOt~|gZ*~5cx&(QN%uB9+L#@-Xus&}Wo>K~GRodE#x9=??G~S8sNeX_b=Rk! z0MQT1Z#Dk~zu3#Ev-ec)wWle(4s(}3lzjZ;`SsPT-B0cx*|W?j>d&%szoW6+u-1ER=&hv46IuehW+G0T0`e}?&M+Mm>&JozkYvhW|JwtZV8Gc;EPADe8ke{GZtlUu1+&~};X zD}lZ;4;Zq4ehDux&o}ilP<|`R68-&&E8mqn7DsE>hMEO!TA(bp%yn6xRetcPb!S#S zEvmK3)BXA_NmMTVnsHng-<#Zy-hc`F75~*Wt@?ZYQ@%FaOOJBBEROP8&y}~XUYT-8 zYmS>-RiV*^qcYFbJp$xBSU%LwI>_4Sfyo!r{zWc1(->0683q*GK-Lv8Ns&1=N zbYEt-JIiP9$g8(^ajgjJog`Hib*ghpn9>ISo4n;+-}36O?cchwy8X08{<6OLDe_;$ zU4@JE%}@B|ss7#kpJDd0=RaQFk@T9cX1{FvSKH8_w=}VXR^)|QmT}9 zKEA1XU*XeV@)!I6t*pNg%kg$+@~kC^o~r*DR^5O0GV8w7zMzChTjoaZ$;?z~V(SSy z7^t%?TbUnHz>*vJXML$k)nEhu+Of>j9&#G+ox>?I6tSKytb)S4<BQ1pI9lo{QTz^A5!XUbI$NxiCwv)+Gw|^bD+O}&eF8d%%UJ0kD5yhD}9c} z{IyWKA7Hy#dhVf+kdD_mJoU5o@+I8J+g2UEch|k#CvApd0q?xI8XZ?KK7UrlwQb$m zAN#NIYzQg8GBwoGX0uhQc}}R{{J^J~_gtTtU%H}#`3?hfA&)N-L{^r zKJXFEi;cHzua8JoT+*ER?cVLR4WD104D^k+oaDgWZmN(qrvEgWl%dKa}!mliI77bqh z_mccf(U`(l+;48#J}t1Ze`0_B0@wSL%#iuQKj(igjk>S!pJCebnzK_@-n$|lFRsyH za<#&D$M(hLeUf^!nBzY2<*=^*`K>s22lsL=p&9F^|KxXgdpv#8*_wdt6)!*ku4P{y z+PzEheQ)=K7(V~Z_j~lXW}N2l=WSo@?5|O&WKfwoW%Yc&)sw5`)3?19Wbrz*f4XDz zYU|B299R65Yr47Yu0g=*(8(v>*W|`b<^3-7eC4JKmzG+ZN8F0q(x+Rd@FDk~-I?H* z=LGtnUSIy}g-()N*nuzk!51ouZ*S82wO=gui_4F@m{?$~v-+`B`F2hgL0{ zE9z|B@bJ7(^=$naE88@Ue!Sey7}34e`TWYoNnESjl4M?nZS9wP$Jo*M^wN*ib(}Bf z3%4Efbe1`*sw3nRmo(YqUP+S9#-FVd0D?hHq7E zU4x%!zL5IQP_}TMC;Np@uQ;Xr#lOG5`{`GG`=7fSdv|ST-q>1q@v>TRPS}M2=SUAN z?UyQ^Hd%4571zQ)%~;Bk`S1LLiEmSaP|m0hgB(H)DtZq42{U;p!$)>-OH zy5=0|_qOSMYP8x~V%8Ih_g^?u_y2l+d-IK1vsNnqjn|uRUU>T0)Zgwue-(5Wd&j#5 zx=&ju>gm7ELi<$a%pk?00M&P%Hd)^;Ztpp=;y_5rt0i?(UQ0s0Jo}I=nKn^Q(bnf^ zOWxTYilF^ZY&mu-@2KWa z2nz|#wf((gNsIpD(m9KOrBxCbZV>E?GAmvR-`S<-M`^K!|avD>ARbrGR|y&EC2k}#qE6hTM9x& zZ=Bt#nj2f{W@g#vwQ_yW@o93KO~Uz(9sU({f1d3G_UR|&pI}5UNdR;b|IvA*=ZWT+|wsn0qbH*jllVK8) zpI=QXu3fbL;tOWKdiKAp7vommnc27Croqvxm0W&@j-HL3u<~rGL1LG3?7)!n=!{Y$@WJSP3; zZ?IkHD)mz#bFcbNTQY5tSm+`02te^Ka^Z`wHyrE6`&7sy^Q zpLF`Mk=epec@1;#-JIca`KY_fjUA_^WEG^8^u~JZ3@SDMb^Y5u{bduv1J>WN$`wl$ zognqER#olv>a)U+HQ(!8JpQD~UA|Dt*kIzUCvNSre^u`PvHbSiT_$bfhgV0gFW+f+ zb)!kHuhgMu^Q>B@UhO*hG)=Dg3Bv~M`~`BaukHGOapjv7(XU&z{RK| zW7+X5%U9u3?$_@Voic9!R+ryW+P3anL%4VSo-e!pF->;#+d4_tual|qQLK)V-GUhD zw#R*z-)_(DRd~gk{lwGOTx8p>85@_`viq9uu3Fc|x!TauZHY!o*|F1_n->;2H`GnH z@2<1m77;L0Isc@;_r=_JCC8srUmDAnxh?TD%Zl2barCk4#JZdHQi3IORr+%O)-Fq* zsah8DSEw-R+I+(UCE>a+#V1D|@=p%h7sGgvZC-7{UMG>_2~Fv1dbY0WDZ1jeaB5Bj ztKr5Z`y25$j}#m(&3lw0CnH{qiH;(69d)(ih8Kmp81g zU;DJN?0(KW35k#{*Q4oL&sO}73_WBtt-4+3^zs+AHvbvgHx+M-JRRN`A=vkT{il_6 z^tR0blXvRe6fr%{^SsyHy^H^u@7y~xe#OXFmK;0&rgp1EgwfWoGgeuxI(6du<pJd=UU|kF zapB_yZ$mkABZn*j7QVx`N_IWd*lfMbR;Bpjqx%{wb?UGF{KAuW|B3OI?R;uA-;eiC zxb0uUX42n#G;Q8I$*msOzMS!YCmPP38}IIjk_CH zUhOIPyYfY;v}h#d6PozOeS(F zM0D5MuG#u*?xtrBvr?{p_W!)yE74O)v^ajl^(FS+HK%?q|2W4pd~^A?dd;mH^QP>~ zVGDe=YDs2NrcgvyMs~NY)j}zUOL^gcYFAIXp1()eih1qkgH^sJ7mW9mSiOE`_`Ayb zQ@zRi-o2N<#lN{yQ?l&%JO3>%Ywpcf`Om<%V#TcN%t>AvY%{b2_`=Sa+@GIwcGH<; z-8{EdNz3NdmB^||*Ie2*{JfAy+j68|$y-d~-+Wc`^^ zv*=~Ny*b_a?_CbhtvO4JWnvy~Qg#?;-9 z`uaLsy7!c%`nJA_%9&QHmTh5YYFpHjzUb`UI=%1vLqcokeSB&Au}vgYm(}IRo?Jg~ zN#!HCYqgTDycO2iVPWa3#$6k7HSo$& zR;y64WiD?8(&nhJ=mfrpGQz=rjTs3D?h>=Tjq-VEh zsbWfjW6#I>w2h}%PE`t$-65o*{p}}LNt?@VmrRl4kNITpzp~YRSw6*AXUmqGGmqvN z2W#t0p4#{7w4&aV`M1RW&5utrl{%fsT)^}B7Za1`ANl;PXBTUTv%LPvQ26uf>uQZhNw*6WwePNARo&;n(-mz0 z?B%Ac)>Uh}v~Fd*x;b;@lRnLvA<9Dk98TT8@}YJ?McGVKv3~iN;Y&B4-8c1ezR|zD z!+&HoR(#uc^~7m8x2}02>kO}%n4Aq(*?8cU@9oIszY}u**_~RaYj$xnO8kkl zqco61{i3@|P`>o)GhQb$Kd1d?un%XxQawK-KX$3vp|`vj8;*x;WnoXt&sZ%abClI< zYN}V))Q>-sf+RjgJ(-{QQs?T@Yb%)kGpv4kVSUz}=L^JzCi$P4|6$&m&1=i#L$1D& z(KD+3-En{B9-G`yy`tUf?qQ!yZ;FZXD{bueYW(r5n)@BEPIx(!Nfz5t#^sDJuWZ~F z^;SHrZ1b7NM^jg>@cO81dj9Q;f>leFH=6B@j}LiZRLXAX%JyKkcCfEbiG=D>ldtlJ zCrpcsG5FH&p#1sGg7`eP(13LU{~4COxMe#(El6dH;p~kcUVS)p{lWw-R_&i(?%ovm zGkJC2I=xvZzMf6lWV}}Wqg6z#a+ivdiQ%gCeer^-y*Id{j(z{O`_)_b-}4^_|I%Ll z$5wM{dBy|n%{D%ErO^wSGw5tR$}=C4W6efm&RCiq!qbJXKY?dKPK+`ahc zBImGAsdk#BbG?-W`EPdA`U(ieWwnK>U%Mk+Z4$Y&)|LBC{T_YKGq-z6__xb{Z~xC= z?tDG^`|@+0OJk-d*Tf!p{Bg>UOP>OgwXSYrD@<@z_>jrt@o@k0O`XrSPAT*H&#<9H zd9zDn+wMUBFZ7wMuczUagt2HF{F+ zKe_Ll59fXjHu+>WSK>jBQEd?$5F z%kooG4Y@-mUDjB7JIMLlrI__o71DAQvVJvxk@rvg9FZ&3tMfko%j$o5i+AT$Jd?Iw zto`PJ`=`GA&tLv-O8#lPd%H^Hx|97|zH_!&O>AlBwsn)5X4TnwnR~^=JdwY7w$tuJ zz16Z2^)$%*p#SN(yTH5a(M#Xlp8d`|z|%PE!_}Ei30$nnfrqxJpI>1+|D*M@?Ws?) zwmYAlddi`ryZ6vj<9@LYHMdRYWfCg9netyf{`K4X#`CAIt!KzpEL*jGidW5ky&m)E zxP<9>yCz*PpXJIO%WE9C$snZga1Ch58HpIz!Fe2LtgJLj~WZ20H${|p*0i}%(Em&FrYT)I5oU5}gY|?Q_6K~m6QlEPJ1_om(Z|zbOCJN0(c=2m~s-s)EW!#?$E+nqbrVV0?)){}pT6ov#ZRLGh( z%gg$-mg<~s>la6VeAml+Q~A(D?ax^yU#zDcXa7Alx1j#n+4{p5cHY@rKH;bCRxPC$ zy(h2i^g6%AbNMaF9zWwVmrkaA+&E3pLh~P2?pvAi^0MM7JF_laW|{x#%c_TFb8p=< zz5S@*NI^-+*T=_K>AqXvGheZcuWUz|eNghYe`XzAmF8;9V#@_(tryo%RSsVJ#5Fm2 zW!Uv^Hn+>y?yI<__n$#vzNyHclNK+ecNUesPtPsfk=b$kn3mJlh_1#~?#c6H#UyuC zHR~j4-`L?Oyn6TLqrp684hM`jO!m$Qd(d6$zcoDQ$PZ8PZ+*=Mx(5_$b*}zrn3el4 zZ`Zole;00j+~)P_O<3w9@s3MZ)<(+*GMM!$R~XC*Qes z``M`nlWGuVt4k@=5EhI6D$73Ypay^-7fbqS+u-v&C|Vh=VoVqoYB=4$@aLb zQ|sx94?#baTsx;M+P2T+ruW9@uis6Ic*X29v3@V#%>LI4S4@@LuW)=h*WT{NDo%w% zp8nrgO`18SBHG)7ZQ}2qY4(%f7+0qkid>o-_+p*LUH#b0hkC^#mi?L7?=kCbcetx` zu+*H;d7iJ9OmSJOCC<_;v})2d`S@ISo|f#O9Y4RM=WF@reO9vCAo?!W{^3hOyMwDb zRg))m1bZ&4>gq`3DA~;#dWCP9R@4 oD~>qN69Y{?7D|Ta~|uaYDV;{7+w&9mp{Z z+A5J1)v{{!N<){an~dCLZ8U@uK5pEZrrPm~ueSBw@}vWswoTAH@Fg+3nD=igLtF6j z9Ra@{?a!BM-P>*U;KuKNRj<50cTAhsIIC%0$5!K$!6Mo+L8rA0SY8L0{o&7XnfBd6 zEBhN??|+8M(@6~B3N@Yo85Ct>-Us|=Fss{s>vpyI#@*)?XPvox{q2jw%kN@Bg06(#<#Le0_KmRZHg=^RER98A3-?8UN&D7cdZ2mLk zyFTB%asFxc?ccVkOK$z=pSJ5iLt%*ZRok+t{d$|OUk?eHdDrOUNn=js-7i08{b8=N z-OhIB!bycx(aYa{_D}cxE_*t8`oVcOm-EE6tzgrr<*m59+V{u&?R9p!b<1v-+_1f1 z{AEk=I@NNs`ztb6e){D9xKHyQ+thvcPkHE8-}JCM9KCa%nxaKr{gW5TTlu2*wJ2-9 zRz55IXX}fL@9wqT2ufC2ae6OH#Z6_=3n5nz%3PgN!1ni<*HWnv^DD8Qc84$Ii64qJ zHI+A8{-Y||UjOaVh=T%#Kg-ttWDmW6o_*>9dTxSiuZ?JpD6y=dvbJ$<%4 zWph8B`)988Y~jkgj!*b!KD^-fJ#*h}U%ka^UEOAFvq)!ZTfAufPP4bZTwGZ)Ei=Wg zd-H6$y!w*A)Apn!tyA@m{}}||d|cM*>a!X&0J`YLl8>I;(pRch%GUqCv?=f2ztGtF z;GFHpUlsC27Czi}YUiXy({`$8FVIQc>hdY;mw-gQfBH3>iv^L+8~^VAq94F>r|n2+ zxaq(Czw8&KR{V>*uUt5B_w}!PRb@gJZ3qcbI`FL2YsQx?1uAFNSNpzW-zh!)XW#u} zlV5$BCueZns(r!lDxUW;oz*;odz`y}E$5PdSt9t{PW&6=ifOBMXPTP46VtT0mHF81 zN{HCC7c4H^um0M1{}$8xyVYYy{FDC-&tBQ>zfs;D)v6-D)&BgIDEVgF>+{$Cwq3kY z@l3GO+E8sL%~yFz(N=D&wYMy&Gik0rzDf7?%(5RmU5ndK?tdXS?al4bs|Wfd*?*k1 z?sb>H?SJ!9z3!j&|GeD3N?P@HKIB!I%F80iHp}AXl}0I@)*bQ>zkGA&w{~85NM`<* z`}!}wXidL;_tv5>8$V1|H~c&E{rdUK9qv8-k$7viQP*>PMJsXX*=r%L zlluZ~V|`u=9hZ$MJ~jEr)BSy+ZhjnU{~7wz@^y@51GqGf&zC>H{GIY7rEc}3{?pf= zUh1bU8@hdyo7A4=A9ZSiC0U9!rb#YTdiAk|$KGtiv&VO>lGj-;YiEyCl?fF&DwVO+ z(2Iq8jqz$X?<4oO)tWy$-kR2SL7vHJEAYy&s6TJ*tf8A>pHt7)%zZ9b;!NYBC31*lfB)H*(I}XA1-*d zbmgD^(`&ox)W1FR^2q!kX?w8cu64G(U%#kcRfYP>W2ct9S}<3=GM`yr=GOOr^B&ut z;?zmGF0j<@{I@E(H{#l5D^zplf34ZY|Ifc(v%lM3A?verw_^K>S9ktBtIT36Pp$aR z&=?ke>`+wsiUo_Wt^Ce^(8@t<=eNK8=B8T;UDc1UReGu-~sQx*2$lSLF$>WSn9T$`K(9jBz^{bvY^p2~h>)AhLu zb97iP&ba)s{(`N*-JIJkfu}ASvhYZ)Uw`{*=#@W~|Kw+{S$J1e=uOmG)B0pKFRNWy zT~((X;w)4e4vUc?DL3ntt0DH~2&vwV`~j6+hhG*Tw1wtqXo{=#=uDW<~%FFyI(&m+qS3l@^{NkBNeQ_|~M3ZBo zZDEttwGMxc?EF*hZ}!m6|McIu*t}E6EF01u{#!raC4PJTwEqm%B~QzOC1<|cb@pPj z(6&9-ZZEA`GEek^SjJtcP z$@Rqd7iW*OO*Q?q%Wv{=h1Kf(+n2_@Te9@t)UP4Gy{661%l#3@F{d-JE$aO3fD>(Q z?i-4;Zyme$=I8?jubYPAd@@9*u$ zI4gSctCYPBGP4WoOFr&j`cH0U-xOw!8!=|KW?vm8g?XNSov*Vgd)w4BmKL4uzkVmK zV{YPj9k6-l;)3-ti_d#pILn*z+CB2yYvDD{&L^0r6t4G(zgE9~n~PGp>5q#443pRA zh5h3Z^q5n6`KR2n0LMuuOhSI#IWp|ZHy{dx28Z(nwnue~U25KePWlZ-Qgc@6}=-G(2*?Xr0ZtP`pU9GvUmVK6|?>Cr@6x%El_CIj8bp z?uDlNcjsO>b~rmIab5MP@4*+2zx4UC_Hez~{h885t2B!XbN{?4d2MB?dEArxOiZND zCXZJQQ_X&Te7pWt!$0{C^%r7;{EK(aydBUp>p#Qc`WJp}GW?%UzTL67kLN!_!13rH z(PW`VuhP0iiyr8&TjDO;9sS34|G%xDu0Q(E&{uzDNn{y`Rt z$HJEvHNRYMOrL+jq`-BD-4(S{D;8Mw#=rXc#arE2@1e=;Iob==-Z87qi}7GTeWpbG zkzHKPlBTH6=}*|6dMbQ+ZM@fI!`Txai!*w!Z593W=~Aed1EvxR?hHm~`$hF=!hruQGWpa2rM;P;K zF}C~B{VDZVyMGn@%Lc6&&lKOafzOQl-&gg&j2B*Z|0}&4IrYl!$&cSm)bZx|EV69b zdd7LS+A18HXI62=cgHY)`M&?v)nCv5tOjY$W#1`X_Q=P)Y+*8Ufa%0l*?v;&6JIXg zynjaeF}-Usacb?%^Izwzb@F%{U})srzk2yhXRVV`m-&^2o`{PxaLX^>CY`pguSGb1 zYyJ7_^JkTDHmb7PowPrD>G6thY$x8_JXgPN`&3)8q**F$Jj;Z&e(bqZw5d6*V~@$2 zWB(b#>`uK~kfJL8Sf*;*^-|WmUoPEVtEj%cpNl`{-@W%aa(ivs zjN_}Fu1!_i`7nV0_QmYm_3HN1?Q>GXW@rB?I`(99sa6)NPJAZInW;J|3P(1t=s&5= zzqY}q)_>c(g#Fzu?cdhBldz^|;)n=$Lnfmi_|Q-^PC~*?0O5@2<#yeUEdUp6@94JlsC% z*Y$;d)1S6~dUNaRr+_El*n(42HC_qL@=4CE^u7=-l;|m@@$&Aex#DIr)dJkQmkV8$ zoa#;gGw50s)t7&()^1Mxy;aM8sk!{mWA%qGPJF$7!heR-{~0zWNvuixa$9f*|HH+1 zCLHwm)y}hO>jtOK=8wJZfDR~*-F+kf+Y-^4&9y5pe(g6cdiQOfjDSY+r^$a7lnQV8 zw*1rkZhg1%vIjRdUbzyaGC$cp-0iJRu%h8!tH4ffkJH6Vsv3U%_TQQx{dM;V^_{s= zg;O5~zOdR{wC}FUdXtGvYYdw~X~}W>ai@CS+{cqohCV89d$_2rbyk^=O{DnpR#WLr z`RvMwc{mD$U<TD)~@N2Ae651WXNB{yNybuguPVXsBgd zA^-V{dqM2G$G;psnl4159@Y4(ayRxH|-2>E4c=|@WFPp{H@%1>bOQPtWZtWHa zZ}TV3^$GWdH0EyUDOvQ0dm3}R{FaiK&s(aOwe30S9LnmWWF(vFu_Sd$-Kq(%pX}5u zOyGR}^3AI=$5m3~wySRR6uH#>Z~gq>jkD|K?UxNG`oR-@zHFM>MCHn*X}vSK*h37s zyYDyI%{!gC-BJ6O=zj)%_b+T5uMda+3!RdVZRC)9knCFvzm zX!*ya^v9d2)_>2rdG+sG6p_O2tC3Z2bY!~xY{oang{Sv%ehjTY_^+-lI^6E|nu3FN z5xV?GUw`r{F?wuZFZf%pC(LuBS!-;~rmcU3bxl*!&L*omSNv)3=2iLpW|Om3-9!nC z#}}5q`?mYXtcU|29ga!=+4A+JVf^OB2SeTeHGI!yyE9ufl5g$wStoo|iWelLb6izT ztSG5vQ2Tf5!;^n<6Y8da_@ex6e)yZW?>8mijXtlq{eyK|zpVO4x3-Kup_enYTnsmw zeacecj=6m|DEdaaOXI1Pk|!R=&ySjRKW|5C>mjE5i4T9){89+LFZ56S>7v7_+nthM zuQ0AO?pnL*n2mR+XiSF`|DFs-K||eNy;JyCek-=U_wwQTS5kjh|I2HfE>>N-d(y_P zzwLki*8jh}bKaJJ3A{U3DIP7Ick1SkREb?Yvs1Spd(7|twx-vhn|I^*oux(wHu2JV5{_pcYsfW$pTHgHb@7kU->)ZvWO^UL3vbLW; zR?e@_@`=>**0ktXohs3CwiE8$e&^{bc5aFM^q{M4uhVOVB%d%@g-Fere}b<`?!qnM z_gzm9rx?yy6Lz+y=Jovb&EGyP^IDo3vV59}nV^%9<3F9+RU7B|M#*_u{4AOEJ!|vs ztOZx>T>dl6DTyfh+jvQyZ(Com{g%vC-*t0DH_m!?GUTf7)Q=k?mVIbeTHv&xR`=k) zeOF>`&)%*bwev;ex4pBo(|1jKD)jiQXI1lWkB1k<@7bSo*Pn1A<=pAlor-fa&zcm6 zg&Mj>vMyf1^=ehX)`q?N_MJ6*7pcE=$?>=U85Zo~ei!$UWy0Hu8$QUhT+Q^eKNzQc zebuD5{*z?a?#nc`Kl(Xo>ZhMxd-mqq+9qesidr?_RY+0UE4ZDz@aW&}w`ClQf5gkb z-GBZ{?%raSHmAg>UqSPq%8Kp!_0m}6%9LWx%;ZW*)wxrAwZklRyscvoXPIrk^!Vl* z0o6r6tTy@9pZw?7wcw7_-%<}vrAIR!9zVhO{BoF<_=?C4UxSQ80$0~AtyX4KX}opi z%>rYc2Kf`rwI>iyB14*|7k5jyk-T2QCzQR`aU+2HXyHBrejX&_|%hu?3T~m8& zE?<*;JvGTO+oVX_og-v}LN)i@PungkRje$Vr(9Y7pW#Bt%i8(o?>64u zOVuCK$5-Ffl>STD8+|iGq~cbOZJgSIm0qhnpZC5@EM6(aab`Me>(PIUZzz3EtyVV| z`+0HVzeRPm-qGSFZ^iR@_nv*F)0gQS_2H+!)3h(I{M+X%%vvY=dc(J=slHDBemnWM zE?v5sE2ORBwX!Qy!TCJ@XaC;k@5~dJ^~3$2@xQ#D?Yh&aeJ@QYmpEwuIrvXYiNo*k zpQ<&HXRn@|ce8qX@tYr6apFCXUtilcOXAw|Bk!Li%B1e!WWhZD{N|Ep)=!v&1m-9G zXPCV}_rCJmZ9!|IYj2(E+0|?M@uA0`Po!f%`jfG zdDeX)t;3SNj9Z;s|J=U0bi1Le)_1?H{~5x+RJp3_cr&bTbNKV0;f3Cc`X~NJ-g8fy-Ya z%3tqnA^W$FqVo1X_H|5SH{Y%Cxun!O&wX{)sSjEoW?DsDo3$#_w14{~OD-EB@7zPpUA-KpnWD$vd|JNVV@aEID8J6akXc;U|Hj2e^v67__GWDEu6eWW#QN8J z@AjX%5bWG}{9RQ`V``*wrVvln6%$>zGf(+{G}$%Ziu|@T$T9fy<9~JQrsp)6=m!2< zAGhZDn)=z(&*-gPX7DXV!uM-yZ;jyD$^B=vX5l{fhl7+fP5MkT_b)s>WTK zz}voMVzKVq$(egQj?_x~{}lO>Yp(l7y!7ww9q#78;)VY#Uv>9g{?pI5W~WVCZ~6D` zniCJBcDZM*-7m8!C#FEd<6)m@u3pQ+f=av9)fRCnTlNI1Y|mO}_%B}dh4!wZX>W6l zxO4Zp_bl}kc^qVOYcHdPUQGM%j0<}=AL!h@l)`X*rlV-R(RYB3*T>U zcjj&6`~7!}AJxu(b9uqs7uK0de=1z+#ea*wG~HompMQ4qgf)`CW*T;M?az-AILzu& z#P5E4^VYr2FRQCHrRUDwyy{Mj*5oJI|ML3v%1$n5U2b5|!QXxQk1ezHWLD4i#j7jx zC#-30e_yxg_^UG>3<3=MH<~V}?l>|n`;q?X%b#CNIm>!L&6B;w=3o8CSaosL*l%xn z^}0L)E+5tJus*lRXH{U+G079P4$S#0zVB3-rp4(tfBTYKYfg)LPMLpx=`rTCJg&Bo zn5D&`SAtKSc5)PTIQuVCGGe`cc3<7R)5|?hnDZKN-TeIWp;hz*X^{t2GTY9(mtD*9 z5Eplz*mM0js}0){zm5JTnX8XY|7D^5kNGCc_1&dw*8FFPX>&DQR)6;5EytbS*{Wyf zHlGj)3HD#{^>>xU-S|JN>jKM!dXARG3vYdC#Ix|$)_a~uqAs?7yXlztQ|7l%s&5O@z+*se; z>dW;+VChVMdH;-*=e>v2IJv}Ee7g8A^u;OujFyHi)mzG5@p7b;tz4QNFD$XlE|yc` z{ZrFRO08L%yDx5HTId+HW?5XHTJhO#wyBObb@p<1{R;0dITc~~pJ7h@7k=;XTh$V; zHh(VNkUuA={z9#Fvi+3(aZfdqrQ!YILcP-B>40*5X>N3mgSc}s*t{(i)kYoQsult+-(%skjHUvMbdTnu~(4*EgB6EgHxem9-uB|b% z@6^XjeMnOpaK=oQntQ_tn~H|EU^Y6PF+Fit6dDF}%{KQ}V$tmDOR#1e*lz=#OvO z3xBDmWu`IIyuP?Z=IHL|D`tlc>|Z|q&tM*GB)zZpc(9Ji@1U$%o3R_(pA*Kz=U1e zZpC9a?ltlffeUL_Y`a&wXXD8uy7e=Dmb|_4@x9l!Bz-=QbDP7~f5~+8kB^%k9nGZu zDZ;1h(a|&W(@kT#BPShS-@7O@V8ZGhe5)2;{j%Ne;rwF(>^JNEwkRn3tnE_hmH zlE(v~B3t|PAb(A*s3{E_E-Y&JDQ`dXh3(Ime|CQtPn!N_?RkIoq+D}X&hWO?Ic?$j z!F$(6i`4n*yx8AYYyNF<=3TQNs@oyKdgnDOh*O6^#{kbY*? zN9EJ2uDw{_ZL7bf+$rR(+{3j8-`R*(tX*?^_P%LWIjtcfo0TgyZk~yHuwm=WqsJfL z`u+N*-d5?1)BRKJPqDk1Rd4MvTbjN_TjP`d^WRn$ch}yN%?#gJR{lM3)u!FcStl=WV6Q(H}O3!I8Z+Df>x%TO^NO;jr zqnkQW-mi|9hRryek$w67nLWpD-1|Fm!{*)gxl2X;z8|}AaZayK;HAf}H_a1Coy)N7 z!|F3(ugjjl%Bek5Gw)(X{OVYxdG&8f#Xg7b{W9m)ceC3r>$m@BkVy2m502}J_xR7C zamx33)A9FtH}9<9ep$!Q%|?vhX^%;%?y8wjCTU!~n998()BN$rcY60LuibksXpz66 z{})T?#IU&AZ)`T1p4@qC{R@}hFA(J>=^@ zEv*}dbBi~BywWpk=568Lo$g6ze%+h#QfeIoXzA=O_nk3bw~|{n|BHY2GB|R{%15rM z!B@hU{QGh0jqk>-*&C2pN;b>PgscEa`F8*pQ(6fePzghhGU7q%jlUY-ERy~8 zH2tc;s_@hPKi%EFf4dgFYjUANK&>Ze!e6-e`JYYybe|cDTDQw?nANuM?yA6~c`hp_ zIhCB$$@s-|tTTV@zIjKc%bYE^_G;@{`^BL1YuwXM&Do!KZo<9A8%>XQHapndUKD%# zKf|f>OTN{K#a`{WXKHb$)=JmSsc%_EcG&C_%v*9~XJ~87FIT@6t^K;YZDp|YxBA(O z_!4iv$z}Cfp#MAn^H=}B6EE-0-dZjeE*|mmn5(pJ!-)%F#uviQh_EVpTnlNcNR6xQ z{`N9&ilB;0-MPi5@9uhAJ?Z9_{|wDPzl0gz+-1Ah*J9POWtD%r{XHg$dOmA$)(8{) zxI%oxe}J{~A3hh2Es=vThq04%8 z%-Xvl|MYa<)`+(BuZ)$?|1B$eCV9#Pnc#);Ypv~za%WxCJ9g$;<)aPr^TUr_oifSr zSHGy=jBEcH;&}JYJU7ihQ+m$xqkA z|D9{<;^{>Xy0?lsIdF4oYxF)?+7oqT#h>3C_i|1eO!5$q>i7E3Fy%}2_ILMpKgiTe z;}8kC!oyR=eDT@sNT0ALi1oN;5#0(z)PDYQhK)Jhl^SYxt(6@x$Ce0 zrcATL0#{X7__zO^*O&M#bf?Mo9pUy`^;4??-^fk4XPH@UoNssPbZ@V!_H)f5(Vvp9 zT1~|aOhZnsIrHMOw>+c!ivHu9GGoJDnQV{sUanGg<*~h9?*i-A%bjs*f;_^v{p0nT zbK*bq{D{49dfJUmsl~hZP0Q(hEXflS6l&(CDRJha%7--grN$=NO^PPwV|7?!NymS)7~jnMuRF?Ytk`7L(;%;m<$6RF(g{;+2if>%O;otKZD+ z@u>E2C0&!-_%PX7Lz8UNE${tJJ2ev#!SHN$m> zuKs73m;Xz8`JMVR?_25>lvZ5awPDJnl*5kx{dXi5dZZ*UrfCP9NL464@T+>w?%K6e z)@>{9)SYrMI&4*cY<#z==*x>|w0CJtF6utKr!YK-Nz`tZr)r_I-vsI35APq#ecyW` zFURcN%^Mm%Onc7voKex{H4(I1Ci2;%DM0Sf@$UK6zUL2VHT-8-{q0NN>x|p$6sDyt zoHpacp*=82ywKHYWYW{^O zza~meI?Bxa>Q|k;-0e-zBG)xq?bkuuhsm<%&l+;1Fpm zt_T&4KmYvG3&WfHh0H-mbFR|rX*IJ~?O(ZK*{tanuT?&WR5FI9nAQ4JJc;}E{n_2A z4e#Vn|M@F!c3mYUll>=Xe}&HSV{WhCbS}MrW7eyXHlq*M0)u=sUw!eG`mw10nB9VV z{~5ZYKfkp-`eb{ea?7Lx*Cmf?KB@A0t-9i>NxJ7T_xaDSSn2Q`nQbZ)ady9{lcRoX z@`|g{Udawep9C>-zTWz8y4+RI%vu%3rtNR?_UNryeedwMzLpi+w~5)r=G|I+D`M~F z$-P<0lQvD$cr{y*pV8O(#*CSbTlX*cHcR3zldEoNkNk(9UzXg>eJv$$Xv^2QiLvEV zP9$!gy1IYm^5d5-&pOs-s;1e!nBhQ^b8P26WbEy_5!Ke>MX;x2lp3Bhu<+gxd$>LwE$L#2s*Gvzju1nb1+x5Q-UZqjC@A;Cu zGi)#FDQyYVSbNYve6?(RU{Vif`2|kxFaP$P%2~pA;*~?}9)F=}@~{5RWw?9z6Z86Q zPfe=ROW(BJ`Se6NE9%9Hj{(mNmxMI(OuVwB;LMwaa^HS+$A5hDO*A@eRbyPE^_rla z2kc+1cMYkL{lS0BlBd`Gmq1Qh>Ek79COj7YQ8MXlsQmnQqFl!hvP@VI|M`pDnb|X* zZ|SMEEtQeq+&`JGTR1uU#}}h{_ukuYzVPcybNy4#4~Jq-E|jg`xACp^)}T~{6Xy~d zj=c|JUH`}`_I>@!x61E-Z~5Vx{8RoH_mbmTUCIj{fR?adQU4btFJ~n3)u6s+yBjlK zZ+Pf;%Tq@TIDS|y7TWcq?>~e8@vVaK?|P*st&`|?`_EwSbvfZytmx9qkLFp%+0XiV z@7%xG{|u+~vr_k6FZfo=mu~AX*|lv#Uc|$uMHX{?Hk^}N7@Exf^_2p5bxB;_k_+0G z-{gP(@+v1<$8Qs_sk|vDgKpqkGCi#{Oj~)&KHKZ1eK&4u7q<1w?#NK>+v&cja+O%r zwrg*eyh?o>+P(zQM^8!PqwybCWYOmM&O?uzyN@0`D zs?NcW{2gljLw|po{NP;vwpH2R`3@|*{UvmA#gik~+)jE1yT-&jua@BY8TRP=zxG>i zw|%d;bzs%@->2*6l!)KAtWLT+J8X;YznOJ)T~!KmmtXpOv}MVHo3hWht}Y6krFmBD z;exV=Nm|tv59XCP>@VukU-oMa=bvh^H~QQ2{xht$*048PeEIFyS6cIv?k~6{ap%~t z`b#JO1zt418|!&_N0i0GyU(jGxVdawxn${zX_H)1i=}7HRpqIh&9--)!#B0rrELni zX5U$_tF_3~Z&moXe7Z|@?waf@mseSQ_0w0pUb|iV_#K&fu`{=Rmi)7_ZQlHMpV_^Z z++uJQ+;#KI9n=2|tD|p<-p(_=*5&`?uI}dTw|y2zGJlT$TyopJ@y_hvVzpoAbAJ8m zklL%#G|OVCVC}-{#hWrVbOzn|tNZpyX78Q=?^rM66SE9pi$E}Mo zdt6>RD$W1ezis}s?H0e!CO&v5qI?6t~Vc~xPPiD4;m8>g;c{;m7ezoqK)Q+IdAOwyKIext5dCdcVU&?eow zi=STB-jZB*u{+nObe_EIggb?MJQnSpq_Ib}r>!Y-)?Qx{hIBv%w}`o z>rXG97dTv8uuWmsvzcGNyx8}+TKLIcW3JeXS1bNpO<6iCec_7bQDI59m|vz^&3gQm zPxsA%^T~3HyZC3kFt!Q*&(I?L)3j>d-|f3Jib5=MpI_PW%4$!`t0~9I7q0Gi3~*hf zxq`v}@~up{7n60j`lvr#p#Jn}f83sL-`?j7#ReZ=UYcQBTl~99Zqd!#b&Dp78*eGw zD;+9t=#`VIH!Yfbu9N-pAAfC^#@;S%bA6k|Ke>MXVs72`teH|<&Y!8jU~3%q)!+NN zX50FN+>=qxYwvk+6{w~%Oxosu_4wut%kB~t#`qicFZ5>bek!}pK|}mo|1b6>d)=LC zDo;+9xtqT|Ql)Q^qmIRmTZQVKnQvwVhxcFnckka_o4dQCd{!;Fu(m=z{>xp3=1JR@ z@k(bter5lHuldjVBlD&lynHp?AU1pRC;7al6~`yE%~F+W*Ky8dIuiZ2@NLYT%RA%N z&#gQBpTSXXb@AJGSEeQ{{?`ACdC|>TcjD#0rM*1X`py6I7f;^wnC)Bql=`!+{1+Yl{M**bY)9P8mwSIVEM0pf zY2$?8kgU1t&C>o#8?G#OEO851_I>Yv2DyXb((j&&9+{OLq-2VWArHsELvvU83x6x&`!@Z!Ud!#p@627*?krk5F@g{=1dbO-)ytk~kO~8s( zUNaoEx=np_Ug_sq{;C!}F1AT1zW>}_mOS;_IeE`}J>F(!dcpeo{WG_9F9@5l zZ=6~_?_O+R_=V(^LTeu{TchkfEAude!VZ?LP4{oDzw>dE$;ST-*-!tiDqZ&Mhf3?4 zS0+1_Km1+a{q*If;0<=6^}2a~?<_BRH*fJhX>awgUf1aP3zkM%Rdh%4{L08(0GcV$ z{Lc`7H|*ZGJ98EO9eZi?&TLXm$@1UvpTDfQJzsoR{icl~D?iph(PL_t_;P8TG3(A3 zFIN@yn&wR6)O?jKdGqDsBvGf0>;dYZ-};z;7hEj)PwVlUKj%YAC%p=Z7L0f~E8W!o z@TcYH7fjyrt^8EosvDNQjkoU>dhXaz^67ZsrrrGcmwhM3?u_<%(-{^w%hK+$T=GWM z8M@~;#+}|PvaA@~xI1@omjds?mEY{oKfQ4B+WfP{Px$T~OZat&Z$bAiqZzBXWK8Y+ z*;JaUPAdN0I%%z7P#Ui+T@TOxgdb!q3h?XF@GDr1nl#8w{~Kv)kACcr&D%2 zEow?O%@a>P&QltyAvoFB*Q)i?!G-=#cF!SamyF$yJpW!yCN$mmuzo(!*`+o0n@yt z(T}XQ^2TUrKE0&9Wmov_YVWkboL9M*-Fx^hp0{=73(dN%A0nXb8LSetAtd?ezG-r| zwl^P`)O{g&#+%Btrw-D;e%2qE`1#fL^5dVL|BT*tDKcZ@#r$M{#mk}Ema_zxGz!@? zAL(1VK20I|=9Tidl9I=N?W<*5^yKWV5XJ3+hkq;u)qxtne?MG)QY$Oj?%V6iS7Amz zl3tN3CV5DDYWqIs$z!@d{}uaY@7kA%$#Vq#^*?`c__MTp(;b`7F`c5vx|p7uUX6Ro zd}`ia(L3`_pMRKbcUxnKyd;af&>I=P$L7EDQVeTIb4FY1N(*$)wBS39nP8zIdfvsqF2Ps+t^@4LU#J-nV1-ypxx< zzx~gUytFKQ+qD#<{|uA=_N`N1vM;6d`FFSe{O`J=WzuXai&tJ}GHidJnI-vn>CE1( zm;Js+vR_!b{+<3Ev(B1)F|MghZBs4(v@f-ixKZq)v6eGWZGZdIzk2Oa`+EPy%4>g) zzxTpS&bHjNO3L4kHF;@P`-GQSI~CnF`JLPLtBCdQlzne^zCG>~F0cHr@WQ0KIqRZ^-{L#s1^PE19S7JpO%SRczF*mH$i{3@DNy9~cyf%~Cu4`%azhXVV{afUvPwDN2T@RvHy6;p
*rqm*2cZ!_w`44SMUF=-F;4<-*fPP{1Z-QUq&swX|pA298qA-Re)JCjaAG^xD(>=ez$5fw@lq z8NA%&AKGdr-mYc87FwwzcK=1)exJNs>oQkt&UbeVeYSGW%?GCXrcXkX!YBXu=6BrT zLqcCXW5KQ|ZOhLTNWM&ccf|L~b>Y|pYH2IEm8P=Ii>r&@zT{Z+wmO@n*NaZ%^)_yJ z>1y?3X;)Jsuatx9Ql1G{H>8xR<}g0_?XpZQL>!-Mf6A)* z`tw;OwfA)K_{^Z?L-M4I=j+y7Ttz~7~w7hKQvZ}Pn^Au%fW~pkX_9*^!dHMMD z`+}UpTgPsBC~ZB;|AXD-`|Ky%#U}(vWh|d-G5NLMoF%XMw%-1|IwyT)@$JuBejk^N zeSYFUL-~`bg;Txq&bo&s@iQNr_)=ze;oI%Is*{(P^Y!}3N6U!^{^a`4Fn@9VwmMnQ z+h6Nnsw8f@n?76kXw;9cnf!fO$MThnB{&Xy3Dh6InSafzPAvcV#l7<`%N~9?Nnn4* z@*nQrdG~)T*ZX$!ee>zPwsJ{RDhzkZbAIv+SR6O&_9 z<;3G}UtIgoFfsT2TP4B9HKz6a3*`^hR;|c={$c;-GPST(YV+koHoMxCT=g%>xVuX2 z@(JZj$qdc^?4D%%rEH(XFe_~T`G2-oeD@cnd{fT77NsRduyK!idlxs zwEaI^KD|(NzpCzD{Ur$}<$S&7Pyg`eZomqbW=;?>}!%WHL_l_2qr7fW1nWF za+!U_O#QFhx0IV*FITwcw(#ft&n4=&r=7a($T5FLT)*3`GjD2SW~@2qU;J3}kKZD$ zu358EC!f+;>X))hzZ`!#nR!*kJuYmJsC12a^{EM;X-H(nfkV;wc^XI(w zGi%e1+%xH%ebAQe=}DF_5oc9io1AML9)CYrUatSRe~Z}4(iP^Hy^sHp{&Sbd_v)U& z*65CtKaKt~O!zXlJ2~ams}(}av)-=p6Uux%ZCRGYg0*Waj=%nR(rnwOm<09LxXSQrs*Jeuriw)1zOya9~ zlCO(Y)o(tbertxwnq5nmn*99Fu=&!)^xVvxPudHUG@F*oPrrF>Z|&c0_Ot8`wpYC8 zJvirN-X7hMT`w|!^)BS@=_?8SP{A;*&|4-;^2d&=Z_>Bv-TLLzFYw!o|HHgR(!Wn{ z-BT+zN#v*U*NBqOe{Q{>6?-&x`kUOVEw`)7b|ilO9kjgg`h())OI}^QDj}a{s2IIs znJ=OI`OWXc8&~V3M!IulDt}t;`1ulrYyXyTXuBVur#P;rd zt>JY^v zR^{@7(-pb7N3U8hXWzB(Udb2P#ChktqTVjwyj?6P=dG%0_KtX+{9u(Q4f7T>e=Yv< ztx`J5mD{o*>pz2+RaW%MXIZ)r?31tm*~>GNOYg<)sT-c{T3_=`W_Fm@vfo*jMLU@T zMHO9VtXXYb8PQsJc5Qy@#Pg};+7;7YahQk(*dPA(W$yOqxBJvx=f3c*Q~Pbx@#V#} znzWzppXK_sC%3Qptt>oo+3kK+`fC7aNHY1zMcN=>^R!*wP~bu4jJzFfNT8{fXCcMng$vUZKI!Pn3v`>YjTUiof)9=m-;*|F9| zy%N8A?LR)Z)wN#!c-rOZs||nTF5g;MeO$fmSg`WB3(CIX+QFw>F4{QEj1J~sXdj>Y zt@uvFneXL{-4>UfgWMd~^72pj+pd1Y?#gz)u4&~*km)f4hR7*tWPdo3Z;80g0|IpSgy6tFbt~H0~ z4gQBK|7GnJo70|JHq|X^UEa~t@8_gi1|=`)mbEdNa6@ZL@=3o{t9m$|{5Dj&mi(2| zq)J+OXZ_Wumm*zHG&t)Bak5LTuAfqJ%~h;)6`Qd^A-C+q5!FJHJ7xABTvvh$N8{~0DPKG^%?^S;z2 zxks=3lzjd2#fyobBot!6)e7e)HKdV@WAB$ANSptudOT1iG3+5vU={(^Rhno%(@mFnyPg) zxkwh^b6CT-?H8H( z=QsVxQ>TGHEyR}<>Z)WUXcJ8U!KBH+VYonx& zYRe{_s@v6*5>b#_e}3zlY2O1({z+U}Hi!N8zqm;oIIYnR%ne3+1L+ocr5djZa+qd!z9h$BoIA zN}mL)s}+8oSiWn0YoNbhU!u3f;%sXTp1eg{F9Lgvq}Ua@aK&VE{-Q>K?} zxqrK;$_|cKm!fpHyT*OFV(73ug!NC}u5*)>X|=z;eQ5(7c=#b|C+b> z+@-$l=Tfz@mYp~tHm%94(NAjW#YLA+aNU%Up1(;Z`;SCvN-R8DuRL$>=~rgI zCvq>_5FMHscz`RMq2S@w-H(26uFE~Qc^aoxeewIKGiKHYCmg#TteYyA{ z=hf?%pIbu}vL!IchX}keKEwe7|YIt$|(jUu1kIdH0 ze!jKp-Q>;Nk8D}^Nm;1Z=4w$_X$y;2`?Y269a|f=-u`v}mc`SGr|TxiZ}_5l$LzM5Dv-O)R>;6@! zrCd^^IX6DXYElQCvAQGXlckKM*`@8^1*(+${6>V|yp=`e>oUANJ?K@e5Bk8m_FFlU{DOUVl(u#GO16DT^B=y{e7Y`tmsRW0gZ8RDpf>2o zjdpf_KECeRvG&$|m6yN$^8-23)@vAd+~x+Q-) zZ0*YUvbOb1+fmqWDN}!b@xuBw{`qBgUrxSx`+D1h<%^ec%+#sNa4VL`>P*`0GO0m% zR$q|!+I82rZ?b-=)+l(v{OIQ|c5?+HZoDg(?peL-E?bKpFPUH6$J(-YpP9~sim@N?UenuJi;7KF;2K4mtUV3nO}TJ+x_al+kgH_ z<==MQ6eTPfl=*bYuU~xK(^LMayj-Qbv48dCmF8=C%ls^OX5O7|?9Hn`Rm>rIc}S&= zkMt)?^KYfOXEvMktU01v^UD6vUDmf|tkaI&^XHkS9Vc)6>4l2?X|9?hfng7_iz@Dv zd=Ovs&$`RY>uR@mtap{1@ISNftLJ4*(hT>RdVZq1{p6B6b5?z7bL8&&`EtSEU744U zUHTV%Gj&q4?cDoYrd$aKTV^%WL#R_LYt9n$UcbdMH5;=t#lEd54mryf@$ujEzpU36 zeEZK3&2Y}N=2YW<2H6*pC;l_&@%C>&(q8?&>`t?=cOdhXqn2H2&OC3WSG7-dbki)T zH~$taZ#sov`k1HM9*Lj9KXw_%=QSu^3SEA3^1p@`NjEI>JL36OPd+p2O0N#CdaAs9 z(L{qQrNxh<=E&yy`YHECXg+6XUf;id+pJIAyCw@Pzxl8D;??bXwlgk2N~k&hvpxR* zwf;#z?|$koOW!1%WIRPe>b-8v#7mD2o6Oo&H!tjMc(`@NcjL%Uxl>XCUG2{Ql3wHV zZ-4yHN$$Ur|1&t0OkVx7_|su+t;^4U*V`FwT*UEURixs=rpV`gu9N(~W+?}4`_CYs zl${sbB$C$h{j$ZU75}EM_guI0+xNp!;p*4_wY*AAKXLB&iAzC=7fA~T+AD*qYQ*tVqKTiO*9*8Ke6aVKuuZI)?W zi+)R!%gXZdEU_i!@1>js0jGn+ytc`REMslKddQ)iTmLbj_8>wfiH?)Ripvp)O* z-DBSH^hjkZ!^+?G=P$mzWzY9*saD|e9YrA}7N;Vvxc41#(TH?v@HP3gKx)zT>iNs< zPOjU2dbW8)@`FQrGUv(7*K7TDXK~iI{|sx`HWc>je_z)VcJ}66;aP|LW|3rPEmE4hArNX9i#>I~m z1fxR@R(&~GEx5$s&+S_sx!aHDw>18nStW2c=8ebW!1KStUb(qf<^J-JTC`ukd1b!z ztw^nx7eh;oV`eppeEe(qEopYzPlZd2{~4-%D*+W>_eA1-F#;h7n`=Ugf`(vgD{=CBfqdIzfPW2h1HqE>LX4;>> zDE5BOoAQrSgu?%>{?9O@)MxkaC-q0;R!=ROZEd;x`>`io>pWj3uPgTKUjBQz=Bq!V z2@Co^*d0qwnwFq8&HhTBjm6)sujKB$E!$l^^Id}N(N)$SpO*i$QoH^9>HC~AQPkAg$-tp-Cx-9=&leQW3r1k82xzVtx{zi2jUwrB`GiCYdKY#Ihp1r=z|L%hMOg=I{ z3m-0j`ud{BsXr~JX08rux1ITWqR7#w%h#6*dP(T4{>yRw%_rUoT&5Pa^Pj(tkGgMv z``_`vSHCwGJzd;2U-yRegv;*U{`x&nQWez#7{spTUt-_>=rSA+vpbCq1cOD*yT83yHh47e6_6ui-yKjhWn!!_UoSUb=RB*(e7;E;M1$ z(rXPUy*u^T`j`3TUC(nSHqPL6Z8Sm}j)!UkX6d1=%u&i14?BH{= zyS#q)vv~H#Ivv&ZOI!SdE9{i(y|Rf8Ukz=33q{_3Gnp~K{$BK-zrt~6w<)LHtoYC1 zz1;8cjlGk%&0AmnWaSI9948Ue-SackdajzSo@8?D>FO+zpSn>!p60)P3*RUf+|_XO zk<8!y`V(F**^*tW=T@(`DOY~}eO;?l+kE$K{pWHtbo&Rv%Q~SmPnE6DRLnTxv1D$i z0(*k~U-k`pk2kni7n|(w{u^(2@#wlw-~11?JpQw9ZtV3V_vg=7{9bpuTl0pAZ2j#S zOC#)_&Cd(DxU4S7YumB~E3KZz@>l=W%l+|oijkx_+nuF-^D-h{J<7OnT%D!J;#-sMvR4ul+?u_5 zQr&-6iQYZCHTIy)b)&k)Jl{5+tBQN{EBt5ipN@GkX(y$vY>s@nUozze*O6mS_T)H7 zU9z=vu0Q_e+tstzUT!(4`$hEQBB?fq^ZfJIFZXy`S)O?J%G*y97v){P;eY-|`|=ep z#rM=tIUgS4Ji%JL;OVz(p_yF=WM?gsTykaIuGIZ{q4l?!-$RdFOS%YrAEc3xBeI_R4(EjqkRz-1=^mnHQew`S8_luK3#HclKUXdoUr# zs;2Gwalh7QO;VYfN4gw#817#qaQ(sOH^J%Ka=))ybH@Ij|Ig!&KewO#b#aCEzi;+u zs&a1sTt8{%Ovk>=%}kEZv$Cc{JTz#0wW@r^kH=dQy62}|dTV%Rt%v-pKficy6t_Ju zd1U>mB>czff2=R+kG(m?d*+t4b?)1vOJ-SxOp92)q-&qqhYjUjUiEjb>G`YOJG}i{ z?sj*X34M>Q*l(CWf4S4tEt_^mJUzClxcNfizAF9nx2t~nw8xYQF67x7?CNwgjMvLc z@X>_k>W0O)1@6Z-7=vzpo_;z#Wkc73U~y&9zXQAbHRif+Nq++>Y31JD zc{F)})$aP+^%rbq?DoF5TXjdIb;T#orggJsu2MProW48d(B9Sm z_&^>i*CCPqV9Ps^_&Wmi7;|)AF!CHE)uTPusVh37pyd=Qpa|-WYYym1Pp++P1=< zReg(fpBL}i$}5snV|w8HZ`ts5!9Q1it4-B)Sbp@vCC8v$nOWJ<$D*d}YT}u;tMSV> z{jE>3-MCdUOg~Da2V*YpAu<&R7g;?d;b@J_h_J85`x;y=I-0Jl3(~-Pl;i{g- z!A82J{4-b9R>>|*yW-<@y8i3?ck{3Ah`oL+a0M4nUESUwxsn}QoOxVcs_pT=`Nvkq zZ_dAh-Q}yd_oc}lKlsk}@W#&*FS}@KWcYd~ePX)i@j#`+ssF&YV~0j>)Xdido3<6 zxG%hK|BU|((aDNSR!DC)o!X=?vgxeLRg=$QPGTNsgyNowPkQ}U=GO_6$CtN#+jFfo z(>g@{QUAi}tM*ks+bwYQp`F8@?B6!`l;R)$ob~;%V%CZWj9F@_2@b}duk2s{)<3uD z%Xuf>z0=I)_oS%3|2TQh-^J`A4=?>^u%7-e>h`lm>vBI{HL0#Q+BkoI-*VPS&p?(G z1}Tjr$$>f!+rQYI5qf*kn*SB!#kq&yZWOGxNqpe5X~GrdR$k*HKlvuMFSDPzE~rIU z>`2a>Qmgixk3a0RT(!jM$V92j%eMUCo@e>E}_zJ-lg~xwX@3A>t zT-Lf&#lYn8r}YcIzUV*nRJ_mWwu^;Bp zUY>0ps&U$Y*9bQa+-~0H}bk5Bgzvs>KIU4rv-mCSy4J&SG&0KOMNO6*fuhr#W zm)2=01+M-jWV?1l#CJ`pdu4A!ufCqu`048_>wDYI{%6RD$j_IV@uZe{CtpVNhe;Ls z%Uw^c-n)%0x2F2v;);~)m)a|h@*`&)ezJ6y%puV$M`sAx1gXoNwJ*7)nt7n6|K~4f z-KU?OS1?Ca_4TsH{%0^~zg_y}i}wD^tb$#diz|#Hw*O~P>N7emKSR}v#N>0~!dn7jEI-Ixcrx+zA6xdV_Gj83+igGg}Z-_|NLcJ?yDos!Crr6|GCR@ zd-c!W{|x$nu9OQ#O_Ymo_T)8d49j{XCMD%-PW5IWu@2uVo#j1ut=yu(3OV zg@iDjvfqCGH-CCS(bW)BcF=)8yR_!d4qFl~KmRZD_5asZZ%Xw{Gh6%VcD>Tn(vzW< zp*_=0w*0zKDeZqj^FKqycl(NRr6t1t8%kT{c(4)$Cyig4C4MX z91TA>VfE1@qkuiHRcn4Eev7MM*IBVY)-Q+s$H%uae-@Jb;Pp@XZVSmQ1yCf}B^W(*!$J_bbCLXO7^P1s1b;(2lZAZav%fqS#-^lKK({?6g z9sBKnb**MLC#CPKyrxx`{O2xzsqM_2#Z#wP`n1>O?%kyQxOc&=_`~8q&Im@Vz1g`- z=+|ERhxO+-?Uv3^iImFOkW={3@#TfS-?fuG-%b*~mHe;skNeXLzPCzcrzEU6ott~& z_nw1ttEyI}3u>(Rv%Np`vD$wI|MU;0Q%YFtXTCIjdh}-0tA)!KylBers-M17b#?fn z6G1^&yf!(@-B?z?DRIwwf_6snc<;P@&*OUl|E1!bUcNttu(!xz=ODWFNaD z<>PO=bB#UM{eEU#ThBe&t7}(l=6{B^pG?+HDRGQjd+)5@dvF(X-21O}=jQxM*yH#@ z@oa9+H!b(3ZB5JOEt;D=Ph*jDfTVLqnvN-}y62aF>~?3w9{8Dtw^>Cp9TXDOc&GmS z<)zb{p`JP>UqwQ$Yz?)OT$!zz%BZE%?Y?qJ{E7ts-}%+o_U%=k_3o0@wdT*Z7FRAM zud-RTp8t>4ra2*dih}O^JbNWG`q#`Y&2M?w(;wPu#f zY?l9(r5RO~w)N+)k{BWB>lq78OHYDZE$cQFJXkhu2`Eb>(*{`c| zC0E9{du+M7G)(hVh(@QtU$HwN*BR=i&;hgsYsI|CZl~ z{+nMe9rIHA-#f}>0g_;{4Mhz&Wk+<>Mi(telMHWHhp8&zxC1+=Jfi; zw-~ui7T-F_X`ANqzt3-J?{mJpPQ`N}yHi(<={f(8e}0L&p1;#tF?Ih`mOt#Tb{v;K zH05zz%be+j{~2`NPo5HTJHPlsu8LRJhLo%slVw#!Zn>@Mj9r_2e9Qf-Yd>A<@)Y^k z0ctXrf8V}sd+j}|@Y7$@Kqnxr`};4_p7(dM>eE;6UaUS8bS?PrKKIkOP6GG^sg1)KE3DNCK&vW|5NiN&7I*#ML6o`|NNy}+xcg@@syItS#>M#Nt+i2 zgaij2m9gBkzv`{uEGhe)R_pog<6r0JFSl8AC0lg)Dp24F$9%Hh=8|&Zm-%1Ti(2hJ z%WEFIkeODrJ@J9jmcT3S54`4XosfCq$f|Yk-F+Ij9zV`fS3Be2o_`-0e*I@yeS&Y| zzh`EmGMeB1GfbJ+==-|q{SRI9qUY6Ov$o5A4{$Vla(mN%2DU3J_IQRXwM_ZX(EE4Z zt#{iBTenT9Tf`;v^V+`oc1^e6UEjTF?-|`+{1b0+Eax}=^z!|x@4b2Eo3>3gTyZks zc~OYz*ByJGZr8SN3%SU$w9Tvjk%E9x;gT+WiC=y7az|LpUgkcT=K5DEUH8ylW`(`? zb3Y*Kksv=cGSct=gF?T@$u2W_s0XSyzV}8_0j@vf04$Htd(MR zoMJn_@!U0=&3&P+qu$K^p{@6vz30uRUDViPyZA}-<%?BTdt?6`tcu@SXj<_8-Oh6l zvI-NU)=06RxD=}2Box^Yyljqkt^MIU)s?5FPp~?XB{pxq@n5|qw!7zj%l=YmtZk81 z6R%J+q3Vl`<8^!CI?uOZXWq=R-8r!>glDUS$2G1US}*7PR9?9xE@7G(i>TSJ_|I=G z?&zBxT;?wEQ_ueJ#XDuc&7PQMuK3U3bN|V5m&^P9$vobsA~I7aR?St=@_7eV_{QA{jhMVsjD!FDw zl*`>Zlb&t(^MudQ>=|1O4}92lTB!c)jU^lZGepSe-1%&yYpt^7vVVa6^Lvfk_Vn(E z3QAw!c0+bwO@05O@>}wPtIBeIs@9Zr4s-Wn&{^oxM=aMMx!orK;&dxrcj|Y2xE7Y9b(RoRx<@t-F`|ZxJnf0j5 z`$YZ5$=VHthd)1jdBLb;dvD#OB%6?fCnX;r{`|7&cUqg4XVFiOm7k}Yd_4MKnVU+O z`{PnkrQ=^B_usSa&nch1TcJNjtwR6jE}qz2u}|5B|KdM?k$k%CTvXB58E1G^6lV#V z8q^DSIZAI|GB0Ay!rHDi-%q}O`ON?3zr>3&ziSMhKmGil!9MQzwdYfl7VES>D!tz_vyk!hq`+$y1RGp7F3Gj(M@xku{QlC zv%BV#rOg6+{xf9A7k>TE&?eDjc;R*a-INAaqq>U!4Cc%bOCg zrQjV`!o^vYCzRh#OHOs)zT?Yn_u>YNFZR+s(-y{UVSWSBRCem;)(vLYT)fK8)`~fK zc`WYK%5K)tbJ{U+%D>qeTmLg0zh!+cHe#`-*DT}U^B3mFO^YsWUb7|bf&Jpw|E4c} z{GY+VOY?bzFRQ5Is#Oe&uBk0|aP4IHTlp>a_e_hI_UHfnl|Os7>VfV32cXr#(Ru5B z|M+_Mc2*64V&J7m>62!adQG2TblFEa@Vn}{$$7f(J(G)BmOH$Sllae&zU15QvunR3 zX|l$@{m)<^8_u8oC;0WLtQD`f)qOdfvO>kK!)8^ern=R-L(dLO*}k#tdadoAkH-HQ z(xjHRFXxkGE$>~&6qO=-AiNXQVEtZDvh73f!{+>epsTq*;zL79!X|n33T_bJ{>}9E zAN_X@n|Jkneki;A`Gv6Ruw{i8bY~q+E%4lgYCy%eiLewaPQ|h^vNe zLRjWkjSau<-{g_5JuqQ)fxP~=Dx>M8P4^7K`)~g{?s4YZ`&*a&CY|kD8@5Qv`p|ii zg;TPE`em26U$d9_o%cS=bLy1zZ~qzQFO4#n_MEoh(!Az17UzE7z47YF?36s+zuSsU zI-0D`q&aP6iL+ch+2>!8-~&d+4NoT6wjbC3QDi)!xZnQs7p?ZfdkePrzL~OR$%Td$ zg+KeFO47~ZKePNix%rb};s@CmH&0xD`?O2;x~q5C0{^lPORk3JEBtDeiMju(cKQ4a zg-LAo_Mg8bv;95$LyhhD7bVc{fpd5NCEM$7vh-Rt_jc&!qOU(zKGn(EcFfMV#)~@e-RI?OlC7bxql|^>56~+8?BO8 zevfn7D^f4E>hR;#RTF16Gl#8O@{()+`?yojTXpsylmBf3YDYNpuH(HGT`zV^Y*K;2 z0$tB9=j5XL;{~22UGt6FeedfRP{kq@Q{WuYxUT2&0M%2I0 z%F*BM-kM3PloVxjzPwr)w5xOT-+KA}the8;?zCDYyWsNq{Ir;knY;M;M- zBj|LJ?aa8Ge@c&xz5e`XIDgS4`nY-Yw#CB9zXa=Nd@*?QpWzw*=j6KQ(%HOIuiwa# z*`y;XxohsWD?fg9XiZJwOHO4J4JoKUe8cZ`>bx@*8&_T_JpB2yy^lEYBrW`EbaN}%W7Q9j1^@nzBR19HYvhc-k@mP_OEv5-zrZ!`FQV+ z{7XGoKFI6OU%%Yt)1G2i)jbk(H`sjsR>GCn-x%A!HOyw)o#RQy)nVJ_pLdP^F2}z9 z+JOb0{QT<-JmhD`-#qbb?v8(o|GxfbaQfnDcXda~h5rnDdj2!mHR_(f6#Y5vv6i;6 zG`HT2UkvJ#V!~E!4NE=~?6E2|;MO<$=K8FJyKCP&W*9Lp<1IdZ`T51_=sVF(o8{*- z*u|n zmp>Q&&oF;YfEi;eQ`g`5Z%UgrKPvD4_D0ixd-31YT`QFYj(e-By*|7qmuIQ}^s9ku zCHhQ2UFJ_QdD~Y_ymx!XMY zanrVKL6a6m%FVcxSEV)Mo^G5IlcTk<(Dh&ZOZVQ>y`{VVx2ve!mj4WzvT>)grT5Ht z+sGTQIR6RfYqk0Z->Z*KTz2f+T(>K)FPm(6D{2?Cu*LY&`o(Ww-sD>uGj;F3J-sAK}2O37%-#+f~vby!h%r>-vTIDJ6CPoW7j9cO$xJ{zj|Wi$2cXzI)aD^J=!*BKEg!ltL!4Wv`t$ zqk;YTP1`Nifrul(u7_3Y;= zMkglaUTj?a_e=AcLZ*aWT_GQ^eOuI_N4Gk*^Dp$Xp8dCPrR{dT`?rpy%}m~{v~JhMjN%`e zfn9|!C#(P2^^1M8YUVb*XSaWz|5O&y$E_^uGQm*0EMBA~rWKSZ_120Kxp)0fel{#wl6AxUoinS^p`~io`x_+1 z9w|sna{R-8;M=;>v+sKFivLNezYr^a`ovoH%(?x)(?IPX&h6r#7TvEn<+Z2p%KeJk zyXM{Dx1TZ{wwaK@aBAWHtzRGiv7NKusC&|+SC>SBMdTmkO`PYF9yaIBRyWO+{}~Q0 zU-kQKe9PU5n^&u?XwOv*^>Lb;{q#t)sFzQ~biw6Id`q{U`1Lzh-25p2k&yY{_CL+* z$lLb1cjp$}jrCi->s$D`>gu!ddN&8EXK5ywij{siyTs+q!Q7L7 ze%s#u&YdZse}#u%P5$|d{l!i1l!F;9{|R5Riqbboo7ef_r{+OnhsCF*yz(;-|7S>$ z{%axgJ6gU`<&&UBP1W`D%akV7^JKMqe&zOm{?Bjr%g`68O_O{&b47h+Lmkq17AWnw zv}>#A?&`pYlVjN$e#w6>nN{7yuyoTdiiX&X5U2RWo7=41gUM(EiQKZMKG`OA0?(xN_z4g&$P%L%BTz66{Nz(clEx)v4>X-iv+rOO+`KY{B zN1;Ha#4_jS>!4XyZ>R73Tya@NCqpCUM2NHcT-Ou-85%X0U-JCVAfNi_)`7#j?pgi0 zT7UN9m-6jt?XT7TGgRk){-XDwF62+w>t8RXd}GVnHfhpodFjWiVxM=dVsbR(YMXd! znwDPv`AyYpw{eC$-8vpPM`8UZSt-Ze{&_X-J11P1EUG_rH{G-+1nrb#^M*dVdS4ZzxgN@{D7jCWrcS=YPUi z*W~!DkBeNyIZPl(?Egg$r)fQWxMP6BA^!noSIFUcM7rp(@Fmd6|3FmW{ zHDB8K_=(V5M(g7Xt+z8yT(RPQy@;Xozs{r;lhzl0y%(bsYO?CYB9E0fmP`!Y;2RZm z_{JjHo2i{0CV!j%>}8oeHMK8Gpnk6X(e)&%6o}xF>IX>4mY1&`3e-?OU?xx?9?cOV?9-SfjwYUC- z@zwdcf5Oy7dsnYGaJ}pA=I7H7dRqNV?DhKh#N@$hlVa`(4jZ=qJ^IPN;PaMXH>bvc zO#kOsRwwC}bL?1gG_(I(Z58u&eV?!4DOXb$uUwGj_3DO?;7ye_+p1f>I;%vZ-n{)P z@1Lc6FS_op?S8xN?|hNl_rLXQ^ZmGmPo@3HfsK_S>*l7^Z~yk^&v$`Y6Zg&Eu;M=h^OvZ5 zH{vQ5Y%-L8d;ZVQOOO9amy5ewOj}(2K=aCp&skF+cpY(LWnQ;V+%wKzaqp|TGEWYD zYpMQ6?EmUtII?eR4@q6b?fBx*e*5MncI7`aA8WpRFg>g6kHItEs1qd-B#aA6`@G`{U2=i0vN^Ph$8x|M^R%qUiIXALBo#gDMxT>gg-W#lwPv-{qZo zEqgSyW9kZ@O_v_8dYf7Z`mc6*ZEv`E#^0?tp@?9=nTs{Ef8&Rsff+PvoN zAB!9VdAxmjE-`IB=$BI}9CF5C?~m`x?l@_t{%F7XuWtL_;2m>nt;Md~SYQ5^`O>NB zKcl`cvs@LOS*|BFuWx1hG_75cQdXX)grp>GCcWArcJa%z{|x=<()FgMGf$OWzfgZ6 zR^s^E#WN(P=imCz@P*xF`)>Ow*H7Q^Jn{U)Rq5jTnR8BtOfl8DLLpIw z=-0=0vS&PhAuFkxz_*Uw*MeWSmUVl4PD=6m9T$Q>{`t?a@FM>md%1l9xmq=?dXHY* zJ@oNl#kFN#mXfj)GCv*5e5~@H!TYcOX77828!s&tGyJK3{#Pv9qHp^i&g)f{s=4!@ z;rv`yL+}0EIBMTq}J zUDLnEcds2$?o`^Dyy8;h`SYh2%H7^^R>-E<#g$D<^X025?(NsE=dM>N4Vfx`%FL?9-jkN5bNPq!v&uTY!%)mCqM{j=Af`nzh&=Jawl^V-ChdzS6zp4RP~n-j2Xve52qsXP1&AIz(r8uzwY zHJPEN)&78$!N$Aq6to}R^>FxFX8$m6&G+^DXHP#|clMZT&%4;JyT!YTwg_yw8PlgU zZ(Uc@F2#RU>Ry=~%T@j}Y~R1dY_{vUMgNo=Y`OVA6~6fLImayfYn;%g{!r)nTeg3C z5pa9H=02O_GZr0tXujODEbQ(|wun_mvx_W>rxbcbxkQ+S-V#C9Kwuv7< zg+JUVQS)YENSMu((BJb!mQRZcn;p4ync({VgA0Cf{$hMLDStZ0iWQ#>*RQnOf9b`9 zPrt;{(z!UkD%)>f_4KFehxR?&&7QvTnRoQ?(`{FE?Iew6JDbX7zB87Xxn!P2-94*T zeqY0X2gS^PRSUkI{a9AbJK^}VhW`vLUpVhomL)|v@AO&yY3lJGR!rOXAG3ePesjLu z#|oWuKW|y?%DF2V${NO98Wa$G<>4jMOP7A$GB#Q;(Ua}Luf4OEn{Yf&(7B-TpP_aA z&tFR2+0$;Bda9&rSxie)f2*$k`PIyC-#^{@**|;L{E~-d{~otzC9Qt-;@|h2l$5!v zUVr#{X?2*hkLs7;72COVYCFPbC(OFJpgQ8kVcX7sbyHSGbu=)}ZUl|VPIp=szwuw$ z*IvFmw<3F<{XU!fcD}9iI%UJ|HH#+2IxdU~j5u-X-305G&-+(=oBzFaNkjkA?!OPM zd~N5fGkCxHZC?NSyX%RMPnZ8ne~}b)!)0re)qjSi@t;foU*uK#7rI|M z!+6T)Yc(s^E;?E}|3-3Fp|0Q5Web@8GZfog(3qHVX-SsapTD&yiat+!)m4AD>iS=u z`Cr5%_GTAt5}enrxA|X$z2pmXF>mD^`x5i-9J|=ou%%*G%-K-e>J*m5MHNdTnF|)~ zoB#T^FTZ(Qyvf9v+Z9=?j*GiyU7CB=kNxe7f2KW0?(S5+ym

9a9|M;L_hI#@67L^XBUgs zyz8uD>dyS8?>Q}KEAzsbElcb8ip`$BN-(!ncy&yvOliISwkfmI)`WiUH@j4-9`4N9 zJjLNo8`J3|Vc9iJ%bwlRIU41vae-%TTzOUPwW1kOzOuS&7X-;$Z|hk0;`pT-t7p2Y zr5p)cGjDBQW8$2^d3j0;=j5$x(w)1GZ|<^Z$86Tft!+pWd#1>C>y{$R3&s9*(`Kjc zv^xD^L)FyfUUTC5rJeXL8>u^)Gm8o`m%LqRz9l;*^%>vN+t;G!Oi4+am#mPQIX`n| znOmCHt4qhy@_K^LXkJL%!lPB`)5FoVt7Cq5MtEmc<10XfT_Xq~*JbSh!Hx%Vbxt*>%9q1(f> zE@#e+Fe*vA7dt!W>trs&bu+(b{F=j-IzQ3bSly|NX`-Nh(A6K8zMNg_y5-I^@leU0*=Zo;O_1-1WL> z_cY_gV%0gzA5C92b=5!B2)B-|1J})ZelK|;(#5pdD$UVXY|3r5mzj}g3|{2rEzRm) z)yt#Hw=nh9DWf#^XN$!{V^00-x+or%yVF-sCs%7@>`@WFH`AVpUHbext@d)st`4(J zj@Qmj)0LPxH7fbF{|?ES(v!0jJ_Szc%q!foYx-Kv(A~?u#XFnM99(F%MfbTiN2Zim z*t)h9EyG7g6<)rM%$~la@n+U@*DKvCI9w9`ggjz(yR~yl;_|s2e2x-UE_UWCqLP)P zjFw9(mIW@&*1CEnz$D}i|Cza7SH+_>e^^alncMT`%IA)*Ht9+GD#iRJhQ2aLOVUYy zw0w@v+Gw3KI%|dBxIK9lEmFd>;qs={K66c9e30g*!khj> ze>T5zyB~Z$uvtJ@qgx_MZ_6*?ZMCm2J?vd8GvVTd1B>}w=CWp{xu@}ZURoO~RYBXGCoPM%#Ib7v0VhiabeW1r7yJun~jV$cHLr~zHH4i z0cDR(X5H4J5~sdu?&LRY6gzk7TJ7npmlt2YqB|vV%ibtA7n6r+DX+p7En-ZZ)*lw` z%_2I}XYR}&Jt;3|ZY$MyGP4%_v!!zCs@k>MKic@t+MV3a#Lb+n8NO;?anZ?*R+X)~ zPXl|FJDK}$UpRA{<1UW5Gpz!5Yn)i^vDkB_*0IcI`c5T}*6x}+;q+?Hn=>qV&R*FY zoHu)ctKO4$dES;L4<|3!t9O=Ikp@~69diw8}(->rk}5w^4Aj!-><% z2_36fS}niD#l6XS%34GmL?gS-IOraKXNf>y>qd-!A9m!6Q1fjY`LxSGS^toEZ8{mtkUP| zMT;}5mfg}ia7s*J^R%kDGbAF;^vd#TyXkq|W%`_&Yiu|{xj48((kep5;Yf6BWTefh z%Tw+wadRo=4V`2I4IZ{aAC!Ybsc8r z!5?M_PF9TkZf@=$?l+mETT(h~!7;zHm#^k)?kt+&bB5FIWtF7Ul!pdlX<^UOJa?ru z-b}ya>Sy9AAH}y*!)C2Qq*aQ@(HmXU?#eP;e(!(g%$20umi}kXoW3gWS=HtobfdFD zgD<}Eru59HliZt^J&RkqnR`WYilo%WnKL4*tmd{h+da+px;AzBN*^hY5-E{{O9>^+ zOwB0!yD^ z{K;I~h;6Z2ilX0=T(^e{liHrlPFQO5?78B?nekJ1Rye!--nDBBtN4;=?*wVrC1;jt zUA4QpeL+sng3>K6cdizTE>3JPS*z6M<}g=%X3LvHD=zU~-Mr*YD@&xuU475oDR0)D zNlJOM?(kH7kK?N|POp?|ojq$^_9pF+-<#BL{F&`K;jF~ODR1iJgPSj#o!rGRQ~O%R zAx{3N+(XBF)KZmRt)BB|p83-Lb?YCuv2}`>1qy#=I={5Y*3L8ruw{6+x5jnx+36r@pLxjjDdxH%I=E0loxxVUd zD(fg@?bu>Cd8L(EQPrAf+YNLj=66bmoxbGirYx+tAelY2ds+CZbveHctxPnIZfo4e z$WdEwxAdlXfMCnEyo3v){E5=@yLz-P=BrwTE_)Z5=5N2*+-+XvEzws}Y_BqQi|p03 z@;me9)CGrBKeaR#zqQlEf@VfrvGs6Nbw$r!nW2+>W!o`D*7;dmo=Tb<7nk~94C`Zm zqQvrQv2ZcdW8ICjXWrZ~b*c51xid~kNDKN%ark6Ddz-SMr(^octhp*~Va2i28$tr5 zIF`H!o;5GesZ96W)tYDN!Cy96t$MaTeEOXe>*sFanJXJH@r&WinLjt>JzDQmTl(U| zvsAMe)p(>EzG^#}F@Y9U zUP}{AOMA9`>gmbPzfE18H7`?O(-!Ybd5SKtGOSH&uI@acb?N9Sr59xp)wL)#uW!#&YU~(=U#r9-}KO!Pj8OTys7m( z$M-@o*J`g)w#Idfg=Kn|J$)grrgKVXZmgQqiEC4ruU?$ead2mApKx<$vhSPPdRpb?J{@HgDEDGyPdulR%=+QlqlKnKL)> ztbT58^i@4jc$2-b``Ndpq32lUm()5W>n(8bo3!PRZKT7?pX(oYeyiMj-+tSgr}hSl zjl!Sh(nR+18}DA4Z?ksQ^Euv@woYAFFKL;qjkp_S?J(CRVpd3^A&c9+WzSB{&f2=h zXJOv7XN#FimCJ*Ry169;GUu+Fw`T5SUZn-8SyCD{XM}X;F3FTqsuNPUaw#v{a`U@a z(Vmx#@izA`X6aV#yXU?#7*GSj-;m>bm&J!kDs?7IApMN8?F*y-r#*jVn; zmj&ydsE42X9rE()pU0a#FV-2|xg8lBP`3D`Wat^U=a0ocuX?std`0G>B#yO~ksfz6 zuTI^%z~$gg7O8~Y21X^#OEbho4Q=jpUg>qwJENnMaOUaFbJNWIuK5LQ*d87pcJWzW z(jq0*%%GP2fa$GIzAJ1N9 zG4ZJ{&Y6Y$KC#^|u8hPqQk%ERU1MMS{KTdbd*;u~+CIM*zvK$+I1zO& zbj~xTOSMhs&QwlcX%)8U#?Dx$7Tz;SI&&l0{7>CE9I-h!Y;NDQr(ttiv;5XA(n~&* zaA(S6o)c27C9a_>eR#KSy^?a~3`3Cmvx|OH)=hkN?AW!sG?Cj&@5Y<$t7>1_qZw}6 z;LPt5m^sDOEz7u6F2{3Q!LNI{t{0Tty(hLL>N{F(>WQD3Gk1>GB{RP*Ro6^o&b7YG zE6{ns|dFq@l7ta)l}?mqvv)`dfPqAw>eS!=7}rgYbZ_sk_0w>8OX zX@;--W`1kVWfpjw)6AQcnry5%RpRspgA@l+NjKXW7Vz| zN6xIgvo-4chUVmDbL_UyIp)^j=$Q6w^<4hw!(ZQIgx~%2SgrQl5zt^l*R|l4Q5uKd zWS@WMy<2pq*QU^wJ3BaJXJ_TkjJ3EM>F_ejwXt>Pv^kMpmphkm9J*vs=FHpJ`s!rd z)P4H-eb83#ovnUS zmPb9W=)7_9@>`SK{?LfU?a0g3^Y+S#Prnnk+Vb9dPU-XgFKpg@6rJ-WA_@bLz_6E6!m?NeM37jZ3PupJg(w4=@jR6m&RuJv=N- zlifiIbw_QK2^3$2#l zaY&oGDQjbO&m3f(pEFnFm1bUA+AFbFmohTV4V^ApMfjZ% zy`-}@n%QY4n_8^2!s(>G#=dnEW0e=FJ>yZL9w!Ay_Hs?#hZ3DiY_=c$JzU; z8?!)3@8a~#o2#Bz+BHgX_4O+XyjnlUWv;Z(skO4wQaZA#S)cau>{X1mWY`;V=B%Gl z>X8FV$E4ietX-_0HakC1z;JrF^QYZvA-`EWwl$i>Px-Xk=dP)`XVj+IQ-AibZS0wL z;M|!vEqteV412VUH(r^`dGW-ZvuCeP;n^E2$#B;)=7@@mj*#ipo+PI~!MT3RQxXNt z^(K{Qy9aw5=+=-Hjk;8F{XF04qxw#@k?cN8x4F)FRanX-nX%qM!I<;rg^<{M>pg3g zUG$Hn1pJwj@aoZ#Q^&-(#EkNi6%zC2u35SmMBH@EfZ60odenutDZW2!CdYuYkkfn z^N3WX0kxTFfKg zxw9(eWoTC|*A0puj$en zC%RW>99HPu$+e}YDs*Yo)TL3oJR)2o-B=YKh{(Lz)z&k6M!<>Y)tNId2HnhA>vg$r%eE@3nKK()w9THp@oUIip0c~+ z&0Ux1pc3^vJldPyy!Omkn=Uw$V`oJV7r&v$sq!V+QF>?ITuCca6Azla%y05%Nx3wU z-!=CxGI~1BGz{w5Av+_pYIaAYG?!6_gqy;tD{Es}q9RUR;@wi&9P(?~72`DTA6HVO zM2rlT#KIQoEp$tpUv}N=_UaW9E4o*loLM9xG1q%e8u9d_-P-`YXw*sC80I;@As=#lppbUFZDg-`2R1bY|n%OC~e6Yja8{)^VR716uH?{ik=xT(1n%f+RKGJ<+V8|0r4@JPI^AZU zaaOUfIO6?WTy-txIJIIcZN`7^Nl6 zo70*(JIm~=#Ju!0t?AjDv>lerWyqZ~uZjK1V&RV&ReQ{zmfO60u(_yNcUw>{(T#(FnJ{8mL|LLIZRlI$Y2r$%8d zd9%|)CAMvuVX1lb>X~h?^3nv32N#J5q?WE-Eb_8@)m&?zGl%kWRo=}{+M>J5aF<7w zmGq<@pR-$E7F^ig|5A9xNvqZwE-p%kde8dXY?1A}8M-L%941R)fn3*T~BG2jJh&c zro!F`K(t zd9&tc3V+P8HkAlozO*WG;*W)InvK<0KhHd{mf_Nuw#hprZ${5Jm@`*mrpFzgq%)^4 zXfD0dd-l|uy;ic(X|by=rG!qI>k|4|Ldw_8=jo6nSnD}qd<#si`pWjh2PvbDRxSW z?Sfdsc0);)vZ6mOF^6?b`D69Nf;Sk<2uW0&T{XYB*z@9xZ-3UWJir##@?!dets-Kt z^1_~mwY=86c=-~~A*HxR$DSmUlru}coO)({dz>klo11B`&UWp3*yPRT8irn%a=R{W z`Lie1Br$Gjrr%5}?{r}!!O6^OX^Yt|thlgZo6*duZJ@1R<}>fMukBpCB{ke|=ki-z zL6rfE{rQU4@*lj~)$4Tj#GBJsO!L+3mfc(|xp>Z-8z(REO z!Aoy;%%6PW(afHXUzguqI%RaMEIc*JcTcymHk)62fYFx}E{WY*H>Ium6)#vtmrTsf z%rTffTX{uCbmom7pV>2_@|sMT4Q5W4I4hU>GFrLhx9iL~8#s7+Rvd8P;_klU!aKEd z$)Dr1&wR1V&z4@&arDPo3H4iZ*Pgl)SMOUIz$(qcaOl*fZ5h^rUK378uesQB_1t2; z2Cc0tx3$e%)BY$gJWX@;?4#_lkYOVcIJ7^1UuDPj1M3j%P%8Mw;q=MCX-bL%(0=E3# zRA_N>+QsJ0a*m~wPhVN`>eUf3n{CBQURKR8`j3gO59{)iH-J-{IPc6wVlkEC5??gZ8w|9 zJLky@zrzZySy3B2TqiGIxYKOP>5EslIJ`M?_VVPewa%`x4qaEyY{Zg*x%pk#tis5X z^RvF(J$iGw_}tstSL4ePQm4c-+_Q!lfA}ol}$g-ohUVRfwaWQ8&WZ< z+9A1Yd2VbWcX=jDSO?|Z(o#}Vs!MEn`!eS2a&FBDmzFDk_TH6yOeCdD(e>4-utnOI zQxX(TKDAlq)OXtK-Ly1bD~p?<#TTb}dX<*Mp2|xsnwx4Bylr3PtGI>n=36ul&5wLl zmi}zN>P;S2k=>ELY$|WDlHc_%F*35i{Z?PLzmsuJg@3ING#~c zvfHp~t8UNCnbuVq&jUMK>qV{h=sQ1u9qref##-6M%E4pC$e8_Xv$E&TrT5GlXJlsW zb>lgcdTDFig4pG$ySuw5acP*oC|dI*mAmq8-?Hb%B~w>QrM@_OS@&$XQBP#7G}D2G zt)H`>J^68OR_&p?zGsqL&K!}5bait%tG6V};N`1ZN=juxn%kI6TBqG~TshMx?8Ytb z3l4YMe0cSyKUEA{@yp}x)eW3>PgkrDE)MMcxo6(5kjrPci{4qW>&)4wWy>y|2z$nA zIe%h?256m<&KXxXt&P5Wk_7Cf{ieP;aidJFYfJM|^FY6@tw}THxu<=pxcYhKB)u)N z3)|R&O11qbzhu-n{6)@EY6f>|w#E%zH?5s7cP6~~xpzU%nmjSiXLamp4^F<&x|V3L zW$FrPiHOdbU9Lvk#17nbiFSG^b!n@;Wu7lHmw~z2^#HZgMd!EGp1L}Do+fZOfB`c0Di=QBx*XrmI;bO5mJWWX6ufDE)Z5i}Mc;k=A*Z`?~Hm@x=zc>8Ck@V^?!3qga2r`uK%9(0hhVvScMnKcJW=gt$FxW<(IXWO8Skq zR?OSudO62_PLF}TdQPP@rkTNUIXbFLV44@KL(!*+r*(8 zZW2}d^rvjQ_}a*mFPgWB-OZNOj=GqrTR7<~m!U+ex!GaPnH(DzygGR6)$$n!PKj-w z^d}^(d*SnMXJfwVdsewRHa70+$vEVaa%V1&-ttFZc9?(MnDol?;`9Y)PTti!nEL9$ zlS@j=1$pi&u_y6H>Ymx_cQoJXotC-(o+qN*x~reBcW>faE0Vm#sr%$XxTH0dK3i)Qioztc~dU5l!^}hP7cjoJ#?>YBOAyi`SRB7#J z$1f{vO%C|F{O*?ChyyoGi+!qA90(A2bFH{&@~U;^v+unMTeCF7s4nEiD+QJtWpPuD zIa|%Hrx}!KTdvXCc`7C6#rDbKL3WEb{gN@6J2|(1<+F0F=hbrQC%>e{O%I$Fc5YJH z`5hTyec8s9cgwfs9^=`$Y1-9yKH3YY#(dh#apBGSBWopY>YeMDx^k!Li=3xR zGDTnBY+iij&eWv+6AmccI-zjtxYt#A@2d}4lc#RlD#;z#`lE5rxyPT*?y9|&VOq+a zDbO=V;`*7{3(KXietxC5edc{jr$gt?Ug5cO*Yo1Vts7k4y!Kvj;%Jog%pdWywO3Z{ zn%^OmH_22Y{2Z&>i(jDa7d!XH+dlneJRy0}UfU?el{?dJoY|Cnaj}BY7s1e;ZszcF zaVxhj&H7>~R=n_4=G;b~_O!H|xLH5n&fK>6<%FD=Em}Ntm0lL{x^aCBKd);%amu9= zpZ0Pa2X@|^yjF1bPtS|$o>g-@mU^-$oH)K*C6<{hV`^ckcBsYl)k^CM!-7h4dASWb zT3Z`k#d?%a+&L?&W$^f)5wc;iynRL(m<(;hcv-66RuDV-XgMopW<@%{x zw49vw8o#TPTPB#+yyVd{x6K$=vpF`whKE!iZRBktwr{G8W*`JuUSamj?>)|rc5>GlZj(pz9` zY^@t{`Qu6}&#QLl=B-_;q_i;6Yv-1v*@+W7g-W?{wfzExwrV>HbM?6JXjSg(m$laO zx)30ww_y3wgQA~zrvyZML_|idfAll1%deTEU0d_!`9NW|9<9s#AswrFoP*xEEo=Is zx#{9H*ND~*t!MG4K36wvE#9;5`O3p_{le#8pNR-xy3?madaCsFC1>SA@|{**nVa(2 z+Aw_aF=eIG8N24yC#U_>X4Z(DIeW73TFJ`4n+*0wM}<7xJ#EdCpLK11Q+98f-?k<= zFKiiOQ%U&QKgbwT&VhpQ`tzu2Bv={I+=(7pP~oqPRKu}hWRQg=#EwNAOERq5<%(YEK^#b?Wzwrcy<98dFm z`l?LZvd1{w`pkRD=+hyIvr~SbjI=p%Yp(8DKV|i&^F#isJ@-G>8n}G*+4tR+R*`Y@ z1sm1f&%F^;Pd0iReJZY}{o$>$n3Yv>^*QSuQ|fYsX7AKFx9qmQm)?Y1>t|lR#Bsse zIA{HAH_2V8Goz>VcweIeW=UnRoj#%v38TuBwd;OYA~%e0tP#-XhX%^i1&ui4F~=5<5rTz<%J zvzb#?uQ;u~;$&1K&+M5}ja_parFmLSVyE?FTFKAMd|b6*uC30QKNr79SlY%$dt6$} z)YNc5DVwGH!n3>QrWf7x;rX;$)l%%~kJFo0hg#V78$bG$UAduj=?lqH$r59g-@)5G zrL&*xHV-nlmI_<1e{tqlb*t6p8;^b2u~*vL-+G71p;McutYwRJx{~DfX|CvJkFxmo z^KU0QE>Dlx{L*d8x=G9K-0RnxBWJ!$TP1bp#$|WT?9$Qt=)HO7j?ANWZ`XUb?fuUn zx2NB)YSF7q|4n)aE`NBV?;ddJ%Z7^8&r7^7YhCKSoOdd2vDVMaxoPp~XDa1ppM9&j zX(PwX=|w%)yUw@;zcjiLtsi()(n#l7@Hx@6ymblr_8S~G-P!ti`Msj0FZ{Pkxn&-C zbK-{EmYRIeE6i^y%f*BC@N<0#JsY?5m0PpOi|Gqre#n2!6ro=>DLL0|`OfqPzf!8x+8EqgHGR=N?+-_>uzlH)efdFm#lJbb zO=IpWU!LHSCnct2*uUn^)z6KMb0=T_oTaz0-@p6i`N=P4h&o+4GBC0-z1=(6Q~u3^wb2$g!q-PV|8??o?vL=PQ?(Cz zOHG_QZMJfjiq)y6+1D>s&tJVebzA!8*L`1CCr7JzPc@ZKe;G3Kwx8vqNh<4PE3PR# z&rq5B_U5TmUvzIRjOG5hC{lTs)7zNb2$*cxSiC?n~{)4f*T_MBaN>fNQEPES5unR27IHTQnW zt@V|YZp`siJN8^cm*Z~FwBz~Ds?EfAeG5CD5;`~V;CCzTe=heYJwAJB{-tU5Ps_tM zZ@pb9`*>ZYrOK0Q=Jsh?y^bd)acDEI4c*J*(W0VzYl?l+ozP8L`%m4SQ)%LTTzTTx z)=g!_8mogIbN||Oe|2o`t@$6dQ>!BFgrZi4FZGNn+B!un=iQsF^VQo{t(q`Nplk26 z7f+RnYA=4=oD#8VlEjNLjm(-)Z*PueZ|rRY$P#x&zv zz70i@?n`c2=APu8&38#dJmU3{CW94Gd;C)~Uj3Hd^z!ModW+D;ouy0W&YK!5AG&IF z_Ep(wVOul3WwiRAp8e18x@^&wjYqyH?O*ZRY$fLAx^=JMz`JdOO zkE{Y$+?-RMr1kyA-5oa-1D!3VZp>csg<`f( zS36fJJb3h za!QWv`JK*dcHCRJHSE#S$yujZ)Aio2esh1-o4NlPa_6V+78U>cI<>kg{kPs}JI~uC zDq#T~lWz+A?CzO2d%ITWzwNryJ|8+;sI}lu+27Q;)7Eyl3r%%#Ds?${;)ciOiHkTa z4s6p+yK-Vy(&NxyNBXusKD<%9cDmJ**3#n*T}$o%Gnm)ED=l;U&#>`&(BD71?Z0Kp z?*FuE^_jWSoyJM)`0}pIJaUpbV&$F4iJVDlVB0oDC4k33RYGWpUI z^}aBjC5u+(mpoZ{aBIGMaCh|m`<8D?t<7>T-mE{q#s0^YtnR&2d_#K`b80=7g;rd< zt$Q^8YEORpMvWGoHtFrp$%0mTyYTUN3GxTpN7q7llu34h7I@54xLB!g-p2A1OJELq>%hbBH zCR}(i#)NwYfDH1)h|@dUbt96Kn9#-aS{GCAVz-rE*hX(xfY4tDDx8 zc9+_z&RTizKf`a?iK+>CXI9k&x1Nf7-<9t$)*9L)X4f0PD-#Wa{0>fw&O5a%cy;~X%o@@7g%-LxUm`bcsui?SiQk&j@?dSo%l`~L2X9@j zoO{jE&2H(TEZL4(_xCr(|E!HowGMsrZtD8$*{e0|wrhu++$0-qHPOa>U)G5!QLMpT z%A)x^zt%3azNA~JpW>(e^5rUli5%^n6+v3tjB6IYsa9BaP`>fI%4=0<-M?ZTJ6G&Sqn{y7HwC#uPL4`RJMC{*%rPxsuTslS8jcY57jb^Ys`7k<}XuH_EvtUtC?_|1!#J5z(MCa+$3WrbDA zozh2FgJl+W{AUQ>_TlxZYkpU?Q;M1=Mo3GXkF1zdFy$p@czJ}>w3V!@l(@{DRH{|8 zI&b`ENOExuIq&}JNc8ubYRR}6QWo>Wn}1zfwDo=dmeURw%~mg6k{9fpTzz6jr@FI{ z(&9U-#UxIJ%FRy7S-W7(=1t#pZf5g7%eNLhaUT@U?x&PT@ z&nbD8E4Kf-`8itTL1^j6t(vFyhOev&`sTeVv}}KDUfjyttt+&=OB;VZdKWYyY^t=n z=w`D=$G53G-@b9`HzR`yb1TdBc${whQdrfvsbI!a_1j4?#XhUG|84A4dHs6LN6)hB z>(|Wl3-vrK`X;#OTI0rz+3B~EJ93tmbsUaZyQbUH_W2ZSpK}ZO&FU;Y!Vyt9 zxu-YZRd>mWZtI<8YXieY-|exEojvtY%l=ibA7^W=eDa@RevFvMq+Z^ex3_PK5Bpm7 zS2yC2%jTq$Ty9Ig8QyX`ntU%%`N$;Cw3|%px^8qzrEoR5i@bWdpLY>!qJWLJ_Kp6x z9<}?g{WjuA*>XDK$;TYse2(TW*FY_qNA426;+s8xBy0BO=@^x(hOB*ax3F4kwPES4 zBMbBHC#zi*^xI_hro7}ogZ1In`L&mqzIvN~?_BUx)@rlmVgDKYF74~TDWJ}F;b_|z zLo90_S{kyj;VksXVzb^IZ0ZYg&HF{IVgFueII$-YuXi*(>1CG3i3?Bn|Xe6&Dz+OZ7K84U)6tlH~rHg}DUR)^cu_q?}C_WEWv&h8W zKe^jgp6U8@w?)^=w6;xIUGZeE$Nr+dCd$2<@wfK`Xk=|xE=NuDztF{{ zeqATJ71cW2Z|&08DT}F;Y58#Rn8%Us!Xsff_6h8@IDB;PqYcX2w{6c`d?=;sxsFY3 zWK3JA&8j!QtzHy8P5I*R@xAe);v=!upL{BtOd^+2SUPF#Tm8P-hc)!@{`xfuq7S;G-^UW7cQzo|vva9O$9o}f^B%HMJ$Xb5qy@A<& zU5mfEYMwmyuhUX~jpwQ7FGXM7TpkttH^yq!HzRRzFT;B$JST6>-Cz3c)uZXT-{W>% zJ6+AcYD>^Dm8YIxZhWttbhcl(Q~KJ6wM@IO#+c-3s7#)4PfIbaL{ahJwz!{jyyOn6 zR2JC^gl$soHi}c%sJqbh&?qbJi|bm8H9kTUPtCEv5tHCA%oHlCa#OU_T|NEP-|gX| zQMJ|Loh9zcq6?~5M@&0={<*0a=iQvJ6XL`<#{UdAZ$xk6Ds~RDR1=9+2nH0Ddp)z{f;jOC7M{axCx#p zJ0t3M_V?WPck0XTn|(a{VfD>TZr=`x%szBuZMWcG`A@G_Zgu;9qsV4$*G`Ek-TZQ$ zVsww&Muk%>)_^7;>!*G#FVXD*;MqWlbiQtMU=Yn!bu*R zHMVD`E0vtI)4X-B!zE+lqbXCPY^p0NoV3$gPc7av|C)E1M)_vtJeOyM$J}NK9-Y57 zbgiyKhb=#cvz){?mAQ83-7j3*`q(v)C5_{wj?MO29qGyDpI4sg@o0SYdzGgV>*nTb z%67Bf6sxPXoh&lDlr!hro=HAi-L%EtlpTtG7`nNqZ_$cQy9-~H5?=r9wsZUOtI1@o zfZGzqtqUhV_DPoO>g+t3Utbhnp7nA2)IC?4*vzU0Swpqn-!|F0eeKM!@XL35AGtk= zY+|wYxYwfXc`AIZOy@+y$i=hF(uHoDeLO7??RJ`@Ci~jaRR(*qgD>50edTAEzU5`r zy>y+76>YX{t?!H6E-MP^to*w^aqkzST}zTq9lBBRb;@j?u#B}2Vkem$^SG&$q&xF$ zP;JbzP2OjICV2GbxVS}ZuTs}{I&)CS=9t{}848UH)s9XxzG$$M^JMOkv&X6qe_tBW z_4LJ@{F#RjWlZx~=CS6a;tTJRZ^=@p?Dj3@KFcnFgA*;G7CCv97iGBJ)D_24)wfR4nkw<}S0k@}RJFBS*5_Ole6Wy?uUH8#8)2U(C_v z=0B{itFLeBlFKe(A=hVJcqlT<soqXv9j8B3ok@Jg{&)hYk zK6BX~6~8}8;P^V%haOH6AKH^V)y)dmZOwPOM4V z<9@ayov$_@I_#UcX3g=&m;RG-qIu;r>NqY<*kat#k?i5k`R~p`@584BmF3!Ost#Ri zUHneb#_v$d+AGwPej)}zRbQxMWyiA;q<+J9LgtIGS=OEGVx7x za^WI_Ep9vIYI_YI%FW96u5dacU~=*6-nOUx+D^`qy;BS0%f99sw^}404ZOaw;>~8C z{HotGbXUH}*{qnDxW;3{R`-KWDZSmA2Q@096nZ%)Pdk}ZFn7(VtJ_6qbKhU&d1;A9 z`lgC$c}Mr!&a;@{CZ-*B&LG;$tUH$X#T*sIjqf|Ov}GRDtX=pp^+j^>A#a|X3a5_; zC8CxKuT0`Nd`PTAPFlrZpZA=$&Jl~!zfzRWIM-g{;3@raB@K1m7ph<9e{ zyUxscux)B^E`BVSAjE?+XR;IP=L+6=9AxnWyl^L?jeNu%tpAuAg9~UO2wLQC9BQ-{5 zf99D-YbO>rhCM@sLw!bkyc3 zn7dqb&6EeGflD@g`mFM(;Fih_XOE12rfWBK<`}+67Me8GQ^-5XSs@~4j*ZU2-7;Ex zJS`^8NWLAy5m9<5NR|1b(xEexy7PWr7jDizbYkM-J~O+1*KN_8c28AfuX8&w=bYI^ zrK7Do4Lto0|Gn)UlH{5^@x-&Ec`oxlsy%s`_U3g!PUON)L!AN_{#*lHnHl#~Ciw*v zY34o^RzAbgq|7b$C8TbvLx1Gt^@-sV?#uccPjh7U`1a$#%{M)29^Wn|c^-LWq7|fn zq*3|89GSVj9SV&hrGcqSA7(dk^NOw(S^PSYW3E`^yIPK3>7H#zHkbB(WX+m*Joo5M z78wtPip64&D?I8p+!G90x<+T!MCH!v=$MWtIWuJby?IuBn|I=XqMYnayJ&Qx`7 z&cZ`CzA0ZkQT>SHi06@BeQq&#Mh%}iCsiIrrcdcOeMsj)?j}BE#bu6fmn^-u@ko<- z&z?X(-ECqjb99tn#Pz#|tKFHtd$#4JuS!cEC%H~p@|b;%-{ol^EgE$q9yuN_4bIW} zWZ&&)qs^PhuQAD`#l}tNq?ptxNv73FVjZU^v21v(;gtScFlKR1w1~9ywEmsW6;aYE z>wa`cz7Id0-d{OqkB%-M#~JQie%-z!?*kQ6J000&Jk@`zzPxGVwa)LfE~X zmFj}O?&f^42{kf#V-mZ3{-VP7GVO)8MZ^S^ZIdtDv@Wvb-*{sp*NN2&URk|ok?|1B zZC@$((K=7-E$g;Zc9SM|J#OvD7gh8Aeda|*bH_BnaQ1Ice5T#jcTN(Twk@Y_Ik!H? zdaX;I>KgI?8SLJFJuT7NlB>1#v5d!!>MgaNmdVML9&243C3?RfF0hvSvS@?0v`nD% ze+J`D_C+eC&PQIj@Lvr)l2N%frD?T*n^4o`Md!IgQeXJ^XHN1wEvL~D;O%@!Og)$1 z#Yw$CcxJxYA?=nAZQmvx^6}VqxN_pgJ=c~bntic$xN+m%$>WPS6q=SMG$!e^ZI^0P zVr$#7#-XLGx*{~=@us_1JtkXBWHM`e?tJ8_VEY4?{?OX1TRfiWvhNppwzW*}wQ=t~ zm5DAUifLZ=3xCb+b3R?vsQNQ zH2F7$xxW>XD_pZBAFZ)E?2(^zA)3?kxW0jkuJo&%NiGg;HcFm4wzA%3-QpFlV%K%I zwV7!qKtnN;+l#nHOn&-tr`(^u7L(Gnjc z=IuIat9?6f<0JQ_{G3yc@ZSlOb=xr0z{YfC>Y>VrnQ~?_V$l!l4&9i%=|97zmyUP; zOb@jWnfO{vpnv@`AHGXrhurT;%CY##Z9DnN@9d*R5l)vj9J8@;m?FCI%+@lO1NXH} z?3u(@N_-cawa#_#;#X!L4@V_&S1UB_=D+*y$KQ{^*RQ>KpXr_aid*-pXYANeI z?_U!wVC!w<*Lie{5{Dw!CPx;5D%~6vMfn1^#7!>WpZK*ote&+)cb}!;?mOA_Jd=tf zRXRJ1Fdj*}zr!E}nkW+W6 zQ(tH(q*5iPGO?$LLu+H~oRcj4(T6TuIOnPS4!vh=^<>U6O|#@RCW<>hT5VCC9cHYh zE^YkP(^LK8WuC=(=dM}nZWX)!G_-u5GVenj<;%*#Z70QA*K!mc*`nro;@OvjM|wSa z@*G)G7e37XI;B=1`Y>~(&)g-GJg;mxQfqtmgxvEh(r&iGn^ZQ>QCf3<{_ndgQHReY zsjN-8%^lL?B&X18IOXGxkK1NgOehqOWOjDn<7}a*(qXYBx8tz*rqc&mH>-3wA4%lb zOuf=`QsqU|f;pNghDWY#dNWCWPi>}CO>T8jc9(9Z#FvGN$I=Dcj5wMKB_{b-$q8(@ z(9xqP`u(Vk@AI^)32%aQ*A{YeG|F{k9{6_ph-bcQ?Z?Wt{$xpYCD(q>Jvtj7rhk)r z9LKsok@J|8t=N9UXN9lD&UDPs&vOp4`D?UDYT_Dw=ad%}-hTHq6tYFd9;IKu>vGjw zQ@cWq^Q&*ZnC@*~G<)Z??I~h6 zny;<&*uGIQ@tuyguw|V}z>TUvZjO%QcM>`7Z1~G1o#iq8X5!6Hy;nFnJzxBd4vz7B zQ_-pLt75LVzH$398*L+Xc10H(=i`gYbT{1VOuG1{I(zGqh@^s|V>f>}eK^P@_~rW{ zfv$O*bI*1P-{qM5m%sR}Xv^gd-*vWqDawhMq4T6LX=AvMjo+c8Gv6QBa!{gb;>Jy4 zEiN2)n$pFjC6?Ud->I8ac%)*Tz=glIVHZC1=R`D>N$yML%yd4b_0cGI`c8{4p^tC$ z_UCOfHLaHS?d@2k&>@(0xVd7JzDAB8Yoe)~h~M-X%1#CTuT={^TKbn<(>m>CapKo2 z#|Sxz4=u3*rEk05xGYS;y_e9sTgiXSaJpP_c zu_^t}uDrF*mGgSS07sC-J|h_3jzt`%o^dUZ0I zB#(>gO#IE+`SQ0%`kl_sXC_Kz6SE@bUQ~HFulM0>o^4t|hc~>nn7FZT$11xu*D~85 zOe(bVxcb6hdVW|@@!t~Td#!?7sx77_rC-Upli2Sf;PAxD#l*_U#4lyiy^le@{cDA% zoIEqB=*T2b%cuKvB9mtLhpuE7(=#kTnzX@O|Nh~L`A>qXKG-O~@Z)q}TqvS_ymu|j z!`GeW5wR0;Z)}&?<84%=(x~6m=5b}e^Op}BwkmJDCY`zTpyP5aVUUsHBE736q4 zsxsr-C3THo-*iufy3TvM+s0O(_u!kYkw>+)3)ClEJZ|79k$gzmDYcMA#ygDT!$*q= z<}+31{#N!ms4~g(#H{JF?Vay)_(b;Jy7Xm_qTG2W-={C;D1|9;=If>=zSEFa7m3(B zCuq$V+aoQuf4HPPb~o*|F5Ix~R8;)>ZLN`^0o8J|-hGVdQ(kc`S!3nbblpb=$Ga^r z{jK$Di*`v&6tLBgiqa~aFY=Di$7hdO9(;FTws+P?iC)MTd1o(W@4`g=M zPTD)6$TvwcaZTu(FKcu>eIieMag=i%fqKhHvDJS9L+8AZ{o|< zdN<=^j?&_AD(npIbR!pp2x8a+9rcY$D*jb_OjFn$m zjP8B3bP;nAunqFG3JYkTsdMbp$B>X)D*qWyoznVy#>l<(;lv-xPG&ksCVc<&e%iMt z^Tun2ISW<0mW#!7ofTLUcRSIz$YS!&<6o0cDR#_Vb3Q5hMUP3xb&EMl?5zvaJatju_Id_6cwGn(p_^s@uU3ix*eGl97FfG z3Ey>8J1oC3Jfk%))b}BGdG6`_mf9+H{vx9!}cbRuOKkMO@j_PfvtK(iRyvbAPc5`i|Mf0YLsYm*~qr&9G zTBmoaO!B<8;rN5NeAkUEsTnzw{9I0k+*G-o65utj~=)1 z_8N~97IR!&ER>||wy3zw@vvB!r#$b_nx38y7Hhe)!%jT0JL2=O|5EBL{q&qr&y3x{W$(j1h?WFo~mC0?k+&q<0Vp~j^k35_>?TeDJkls%7RoRo= zjz%n4efP~Ovx!FD0=*rF1$wtQudFs%bEEa;6F-`zaCHG*KN3TNSnF9L+;1}ZL66%ympPBt zy;_=d?saF{OfPHs=vNWxmo|&ec%$Yp$7;(-Yl}@Qr+HP|dz(LTjXbGx?sm~muR{es zJA`c0-gC_D>NZ~ZQ)P~hja%2XI61Ku$}yAIX8OBKitdiD|G4}0;n%Gf&Z#_{a5VB# zm($j@deN%AQ@6;LO?$ZIQvA){M=IHelUS|_y=mUOc~Yom{7u_?kB(osc_Oc1Bdgc1 z9vd}3X-naC>9Mx=c&om<0G`yF>>}f@m)u5 zzCY!5w?oTZb2F1F#rgw~}GWBqf#T)y*=TetU-+ZRu(C39>A4Er@EzHoWwc0|Y4$iKf( z$S?TtaW<>3A0PfYC#Bo+;oG5XzN7O#tBaRk4-NWzVfIAPzkR#^ec$%2!s#Nji%i*( z`ITEI=~h|_tE9hMt$j_U>`+A=i(AUvoXV&tkxi@oBN~6qOLuuxu<2XMp*9~OkK4&+ zNBV9=OjLBTJp456es-y}CcEmf>p63jJk_GivB!caq`n3fIDrD(R!{tb1Qi{KMY1C!k8&Ql?W&@kjUp z-#JhG1!}hjama}&WK>30xVn94pSrEvaNCEOmQRXQDwDJnd7tK(*=t>tQ-7S3GiPD6 z;Oxvv?yER1ygDwW;_UIPZbsu;X|d9CzjRtQY?R1&;G&~z&IPun0)0@zhB^qvL{;=<%6_xZ*H!vY%&fMD)K3rbfssH zqO{W1N!r1iBqdx54@)0%l31;hsH1y(>!NcW3ZXX-Dj&M=wOTnyEUd-hc;T@#a(q`Dp>EnvGH8b-$diA}XoT8?BsPiA)?I*x8taSK$L)biwu$JvbrehQ5yDkrDt3Wb*L<%n?MmF~Lv>TmDV{7SR# zs;yfVUpPMFqhI?v)|DB_k#m&T94>ran4QI^!qK?scb2pBncipDCT32Q54*XX|HVXZ z@2Y@}hrBO$Zn)AlAw1h$?W^6qj$15+7P&_rY32Vp9{Zq5q480jwzG?X&Y3jskgqGb z4{sAbp0~8Ue>Hz1$0IkDi4U`#E?l@M>Golv%F&(mF#_G1y06#v7jD@w;gwb21cx0{ z<@YJCdphH*YMYHdmqNuP7hT=tuE#8Id6%rokJ%w*G4WZ-)QY#!SrZ?x?@TatSR>_g&$2btG!f7MPod28QOUdIgSnhQ5?vK%}XuQGM^=5KC- z$|=1aE3SR}U~AwgCBE_^>)Sn3{EqGj>E&9a?DDd?oR{0pP^v?o`aH&T(3l5S!)YTc-y6(q;+<}xnp4y+iXwsacUcS zooa4YGPYPHzIv-zmC$uLSC;-8YhL;FI|up5bbbi0F|*ZoI{vYIrP9u$ch?=i9{nxu zd~ec~;G?v775!gyZLS3x66`~3JrWZoJ6K(F1s2!N9;~`vHHfV(>!?} zZJl=Mf!kTZDP29AZ@!qbHX}4A`ST~)*>;~Max`%qvgM8BX)-vz$Zz+mPW$IKWxDRk z>Qf13wi4u5n#VcpG} zsdh)4`#@ z19_^h-qKAuowR1@ny}lkDlc;vRIb%IF*Q?>FURrQhne9Lt0t|K7Ta!ErrLj9KC(Ba z)91!Sq5QNZ9zKtv|K>XV-m0<4Gw%1_YdKcOmO1=5e32!0*@{lt^0W1cYy4889(eR} ztkUJld??tzYgfRN*oFO3(xhMYHkk44lz%du>Xijse`Zb6U9 z>RRt8m&7$HN=wW2!;VLXxF*HAYJ7WeQ|#+1?y3}-l$O5kt#Q9D%KyzQj0yJJyXAq) zG>>IBa~Dth(^tPn@%JJ7EBPX;Qs0IZTI5{&CAZ^@z{Chu(K|O~7VVw;b|3ee&9gNv zJ!SfH^TNxMQZ^k|d>PSvFPY=jTD>2)PTloue!b<=>P>&=)|PBhPJIyhy*1ED$!?=H2llvh3sJz7C5yqElD(8U0w?)ny%cHa2v}&84O>?x{J4 zPJeBE-<@KnwY}?5_};e5r8g#LHtj!m>S}3JLSsMYoQ+J!4k?Q_#&_N>zww`8%CrJg ziA7J8QzAcSZV6OdGwXwfLckpXQRSRbuBe!=f3%$K|^tkm(}X9=+@}H>leP9qqNlH2*)qw?6B*(vbDN`A&Wek z%x?<4d7HepXth_}es}M67T>n`^getlqaV6I;*R~_Y1SS$E!{V+xbk7c8fq5 z{ANyp9cQz*t7@INQ4{%Z-QJDY|K{0#4(H#f8G3(fXjxXIYfAJ~r>wFk+p5o8TeWxU z-fHQsxv{S!;xGT2W1h_=baz*%=)%17&wRSLGhAdm&TqUm|NOhP{hRyaOaC)${jRQ= z_n)DNZO6QG(Pt(v<5N*$2~Yl-5|X-hyLI8SHFgJYb1c#+esp(9wYtuV--}mIn`X7e z+Ouj|p{T|5#jbIWS2b#<`7g6@){N8^^PeQTQ#DU=U03kT{|xQC^X5ArKIEFE+h-*b zSyt|`-}SfAp1}0fsxYDU=rHc2i0@@@8gFh_d3^Kenm3!S9hG)=5-I$4+kF$Ck;62} z(@{sYPsCc+TOI#2`RAORpbPuwUB1qxFgfePG4`QCPQnj{yUG?s(t(tzwXMR z88^9$we6fRpG&sq9geyD`d?ml^4jnX`@_Yq*eDvOM&5UE zWSFwt?tQr!*bZr@tvb!AS#Osj{o8wIzs1#I{ns;Y5&f3(lk*m@d|35dS6YfJ-uNO) zVBz%buPv88xKX#O9_MTMx2-Z29$S^`E1cqgG#7{l@*5e3@mTnw!?P;*BR~b9c)q&i6Fi zzVPIlt5coR*DU@Ux@O^xNr9)U{vCa{qevw2(aJ?;70crdOZM5X%2mHw_3v+q?|%lV z;LShwm3_6S=I7?@{Z#g-cec~FSM@8lhZY1)%e?gV+JA;k)68bxJgI&6o0;j>s<~X6 z+Gb&ords{%TFI&B(ezb!#`)Mu;yIzqk9DodJh1oE?VGG2cUK(u?k-CevNlyMWy|fmwr@_l{}6KvE`$jB1_S2=Qn>XyBHXCRno#)TDI+^eOmp> z6W?2tXTDh_zeelys;z!U?@Z?|lP&$5d34#UOY5$_TblL8PsVjhV*2akjNd9V^X_W4MLMBhwT)AoMK{^eF+eiqwufr50l=&w2# zu3fUe+0W^5G-S>frGO9Hg(uy%j*5A<-O|Z()7CQGh>9@LZPO)Ob}d_R-9KIK{Lfh1 zyscZa3U}$2#rHfkTItB~wNu?JsZpieRDa{5bt}rAO%K}KJ9o$R&Fd~-jWgZ+=xwHU z`n7r|*)^B6HP)vy|5E(zUsv!}Y`w@70egS$Zwl-4KgWH1;XBoK_eE*vY(Y()ikWuv zma}uqpE^^r)!%7#vbx@mubo;xa!1N;hT3TDwpw!c&8p*_E@lqzx9jfAa;ob}w)n0Vi&ak!`tmVd!fUCf`HDA|hjhI*NeKq$#5}sNQ~j)9#+!XVU80uo z^3G0MzVK{Ur1{PN3`%Zi9~b{;2s?S4J?@^$ZqYlBI@3QdJklXM@qE<|&zvh_smrbe zOv!z_YsDm${|qTl&7Q7ZT{g3tXU@jhPg{3#DQ9(53oTtCtm4AUDS9WfaKprqm!aAB zwy%D)?EQDwE7uNhO?=9E<>~%d*>+c%tf-zvTfSY}YO%2Xc+0Pmqe$r=xvF1qz)COB0jK&t&!TpHw-q<=BkN+f-_sQXU<7wxVAo^=XppqxsBr z>HRL9&q^I79u-B*f38YgHUFG48 zyrOR9Nut}@f|g`>+a2?p`Y2+)NZ*lHb2dKX5KH*g+-U2;TxOzc{4m4&Aam4Wud7n(Mt(CD9u-*3;kq94sD}4p z#e!ZV|EacOM{8C;+4@19-(`}Yy3gSq=LFl%3;&p| z%1L}Ysq(64eY4V`)9FTa+?DHgT$Tuxk4|36RG@P%{!pW$KKBp*6IG4ZC_e3eG`h}Cq<gJ+tb9plwZ+|deWm8r^C8Fne^CaCGBi9YzMdRcuwlAIhL3~>J ziLFb2y6>3qMOS9SJuz*Tew&R_2`&Qe6D#g%#|F6fNh?3}v{PMI6TEPf>(Y)%=M5ZL zjBjmgaahhXQLy94GZVjQt&0p_NCOkxVBa6 zPxuV2?u^J3-lX!20!k$|$HX57{du(VNRPvxz;vz#UW$pO;KeRu6{JFusG3$5# zha3MHSm(=dX4IAG>rDQ~YOl-x&~Sab%FpK?KhON}TBE+Pp7lS&Z2ez6A2!v7_4$#LsEm-_ZIf|IqZQkL-^{Y<}@XpIbSmM)l+T^KJQf% zK8upFtyE~TSUsE4)8+ zyFBxYZ=FBm&v}=c7e55sKVI*uXZTZgBrEEEV?{#Gei;F`gp?O^*3a7Wr_TEN_xMA{ zwlAxBGgtSY=pX<6Q~m^go|f+OkFj6-%#A%4m)SGRGqL`hDY0jRP3?9$%MbcTjz7Pq z`uwGi-}Z-*^XF{2%@LXO=g?(|2&ecN{l?OVoImY9tSYhQ^vC1RC7FJ5KV3TQ$QE5~ zeWyQMKi+@JSf|d-&;3dN^X4ZTKC~&;$(j29m=xbN=iJVZ>rd?0is(PGsbr1*2Z?^B zEBmEBwC$O^>PSWWIdkI};I`zlyK$lo*#AWrT!=#7Tdls^@rFk`6tgmetaHT$Mr9Yq=d;(|=aW&*G1t7C$ThtVMsnQk~@oeWgE(FWjG-STpm3jef^|jW71yEE$n?=B*E^ zo`0D9DgMx00b9Wb{geJl|G6Y}Bs((y)8ro($`20wiD{oHD0TmI{bOyXAKo9{REeLD zw|smr{9t@nFZXlz!-+kT>71Wre^fn2aA9S-)2WZ^KfJi|r?}(e{+18>4=;b{ zw(~kmmQ&QU)_>~un%t+3K9A%4Q}rYB$77y;p%1$HE*bq?{~5TVls^PcpW6N)>i!QA z0Yi@b(^7F_VgJ%+J>1XqpMfi4Z=uCp(xa;#1NgXfVK^UW8z=&SsgT4Mj<$UbS6h>S0aH6B8j{xcj- z7k<*1eBo%!#)bNw^3&@3oA@kK1V23f6UF*5`QiFc)1S@%ETOFX<3W?n`Jg{8H9!7@ z)aBXLRD{o~)Bcn7!It~9x}weT1O39=f6VDVukvI1vH2gqDON6aI`VXldz+{FpFBI4 z3T56o8}KEpB z86DYZF`uW7^&exMoY5CueHX!1_A>vJ{={THUc}nEiv5TB)BZ-gNc9h!J3g#$*yk0I zblJ}H^Rej0JoO(E3O#OeE#?a|D&{l&ocJMr_LPiCDjxGq((Ga~BJ+>!H@Wz2^V_WG z8ZmvP%Paz_%eHB3l z&r?xzx*siKS@3k>^K0@4Q$%m9l6xZEeQwhq!Oo+_@1w59D_2f@4AOB`#zN)|H%Rv^w z=^e`MvVS-xx%^pE(R^>)M|<9o@9k|Lt&&52$REpj;;Ayp#B=|_s^GcW#{(xT9XTg= zX#2@kN1i^MdZZ^RTKLoYR`pHAEYA*oFw}9l-~5tqRBYF>FW{`#aI0@4|Vpd z{MaevdBW$mwogT}^R=z2kMj5;emke@?&N;3ag*Domc@FP3?J@LcdEK&@$knQedA<> zMt)6?>79!>F3U?5ESMqjQC+^7<@v-7tGZ2EJ|YP0;bI$q7w02lN)bSIGI`Z>EpVEbMb`odjS;~XkZ_J?f z+kb}j6aOf5?dSgt{_4X28LHj(zh$<6zNzRxgI)a>E&FrH2JSyUtIYq;!0`M( zLs!Xvh7YRw{~0dH{bzV*DF3JN`hSMKzV)}idHy;4pJCAi_rD+ZgUx4RVzXy*nN@Z0 zbTr4KLsM6tDK(KWXR~D8xufF-uL$>p1JcvL>XIw7$A zV|3AhIRWQIckkZo{#IgHNxl51QWL)C+iwarm1OBWW13%bR%YVo9gk&Bub;-*yz^{s zWsmS4?T=z7FEC|kHgw(6yghf_vKw#R7RUed&b!Y1&gFtC3%B^HkcFOBGxUFTnlOqV zwQdYNJZV|ien$BdQ_3!#f3*LNfyvBuUD65v88*zCHCNIt{h}F%O+%6JWhN!wNl!v{ zUzuAf=DtciBCa!af{U8tla37kg93to4;o5)2+!19_iFFj^sdHdA~k}C)<}8Js(&q7 z>>nzduHk5q@1kV2MD~0Y%fqHclghe^eA-q8Xjy2jTKu?I`?13LMe5QUrXKpo*%oMK zwt`9G*(#o&ni`G*t7>)yYJM#FT)FkE*Q-O8D|CNWtv!}1{9tbJ7J-=tlTV#k&YY`o zK<8SF+xH&-U!&KZM9_HWL3{QS3}qA5fpKo!*$iv^%isMBD=8CKW>Q^{_XhBz_dz~*;77S z@k;%czdMW)fBdspZnEiaubv?L(cqUSOMd9eX)8`raFFcQOnP$G)$5qEG`Dj4s%2}8 zd@cM{{xj_4k#Je@uuG+K**sUlJK;J4PR~_$xPN1La;))6r{CT0CO#kRGu+lp+o3DM zl+4O~KJT$It8HZ3E{VnL--7!hZgM=&3uEhQRlOp}Hve}@+pXRAG@7q{Ru$mpTE1$< z69sW=t*64p7u{suJkN7yP6^+2-i7x<`=Tl94BNDqlrM|Ay=Yc%fV0T2NL8~+&91hj zQ(5UZpKZHRCc4Me<=mwHrz^fnY*Ifu?LvvANbSB6A&FPZh@3z}z{~W$rx42JYoL3kkjUHm;4*fwZ>32+Iv z31nalF4-l$Dc%3a8P%P#$2>Qjb$`&~$a8R-yQ*i(m9KenovV3n%n@8T_b&U=QwGmw zE#SCnz}w(kKC8Dm^F<@UeAH{JDo_1jIe^QW?8(yqQoH9BHdcW2dv2Hd(Ym>hoD zZDLMt+ayBwe|F>xStZ#Xp zxi+HqJ)vTq@qJwxBH{lTZn$Zun(#gd^{wkJtm=6s|Gt3#P}Ia%bB&fRQwn>@D51Rj zso}que^~pQ^6z%F&U%_sz3#=X1jC@*P1@DXv+ABb$XGCMg@TKbm{ZP9SI;+B9xOIV zW|-xXwMxO*W%*gzz$Fs3r=&cCJem~){SsWJeSbDznS|dVg8eo z%U*Dp?%O6SHdE)(?u%-YO0sDy7bJEbI(D{HvGU)YH$79h734HKn~$=w1pnE5(LqzU zz~}Tuw+k~D=sjPwB){yi>Z+v8ky(p<3Ic^ENyqLH4|Um=H7P#VxJ9hZJD2^aS#fZ= z|Bn@~mI=f83n)lir^Ib!k=A56j z%)mlj)Ud)z`Qy7kCC^?kiyh5SS&-9pMD4(`yUDGBCl(a`4qj2da+j1=tc(Ri?au63 zFQ<9UniG=6cd#qb^hK|ck#-rwMr|M6Nj+1z7it@CvOOJ;o}!${Bhan!P+{?S?nT|bPB4Jf^AaS6TG3*Tu#U<~mAP zcW;=~y5Zx7pHpsc&---N$`OWG9Ty6_P)?oX7MV=_hf{!P=l6Pui&YJ zzP=vwK8o(^@6$+65P|H5|Pt-V;^Rqp#dr9!T&%;e3arXCB1TZfM(ieA1_957Gq zwT##%AJu1be-#Fm`JLIdyn*wU)dG+7sq^NrO%U_Ec;4ixZ$m&=xnd+I;;my5ELCoi+(7F;En6kyVOI7CzA@OR^*VzNr5 zMHh1$lWoP{`GxIN8t<$X zyG?fFcyC#w9^civ>)F!EHK`mcQkI-spxAphY=?fR+LONJBB!l3oOD^aU*t;cg=Gge zN4r;9{LUXQ8jvpfAx;ePWtNh1{e(t&;Z62zygzN6CmyJh5 z%O6+y!0nO4%wb@A~Ez*^Ow{ zRmG)qR!n8|N-O#BMBwj1%VS;(1LvGl=1$lfA~HEK#Ue>(c~#9#nUKvPThraNucpV3oP@wc`aBoP~OChctrStVSi)MAro!qAAr~PQl4%^_HC%FO><~_K~t+IKO z*^7O;&5Mf!&sMeCJ>}GJc(k-!d6u>FTmP6>hfdyPotGUdXv%8sHtq0Hx0^a^dZb>b zo3eWI|5TiQXOpwH%_-}=mxrDwKTg2{=2&sJZDqToZPwz!XzVan-H3H4d0-{yp< z1t%|>5~6c4Gtb+5LZ6pnrOt$|udW+i*EXj3PV~3AxSC<}HdgUj#exk%Y!e#;8s;jB zO$gN2xNX8}xNa#|xq!i>J1#bp*OfilwQ$wcSs$%-Pd*VhB|Kzflt#qMd0e?GgLliB zJlLro*V&bCa*W+XYw0ShRb`DKDX&*Q@-Nxqb9_I`gUvqAf~QH?&UMPYI!RxnrXboq zO!~0Sr4hk3SYQIp`7`e)@?)>ITML6I%jrSw4IHZOX@$d2*TumWae<)kZ3K zbhT98I*~qglHbA{f!)irm$@7e-6FwpljUbL>#Tg~Ce8UFKQtE0c`Y}Y9MP-gn-NsC zIrzqprZzq+H_ld9rzdKL4jXTGUNm@A9J9t$Qi6Nda@Luyi+gWwQtk|U6#q8+%#8JF zL0NIi(o9n>oEEu#DnV|s(HsG#Gn?%*xHFX2-Y*j2*kbJ4=Q;CpWs9=JT!DMMekp~yCsTW@&< z#Gh7i?=svHTPfHjG<(nGnN_TptX%t;SR^%CIW&ZiT{^Ll<55VCe(9S;_8or;US!R^ zJ9&ObpiL9I$$@uQ9fb@!wXKaJZTlmqaW5|36Kg8BZrAy*{ddlFF8?Hd`cK=;1zBl< z4a?s;NIg^hr_)|lEVR8Yf^++CW$&7TK)>oKcQYroS8Mdiys2Ja9c}&2*LPLyN5?%m zQ`gQtsrg;!-SZm^$K{T%`u2cVm#b#7ue*$xv+CmYDcoxpORn^En#%d4@y4N*dYf*k zEipK1#x;NY_t2AdR!N%Y;#N%bVX;@uE_lZ!@^-btf@quIcmEkCxcpFZ6*P8d{$07O zNRSBl%8XvJuX`u-Xsgi2K&fi5tT^D}j{3!9CVY&00`=3ruKXZs# zV%5rj`@8OBG%eY7aMCo*Rax_^v#ncgU{wXoc~ zZ{_Vtcl?7FeLiV>(&BVTp(<~f!rBG7$*d~pHuYSzUSOvvRj+J+_otx9)k}4u8U2B) zbGl}yv-uPRw5@!6S!wIp5{om|n{=$NWwyvDa`-L%)KrwN%Bj4=HsZDFJ2+>VAb8|Mlp*;9#6LTaPPU2+BKzML((Z> zF7>FjErNw7ea*Pfh{(E~wRbKGcq4V2<)Bx@ivJ7?R>=#yA7%Cr_`NE?@!AgcxwDyb z%iqVEymgr`da+M)ez8p0W3~f&p2xkD!X7p)|E=)(qUSje*$tnfBCiNE<(ph{(=bs~ zxzID+d!L4QNo{WS%);5$KUb7}J8m88nZoqEeu-C1a&_pIN4whp%ypaR)4kz#V`%Qm zm%lgEJza2M)b)xZ6>tzS-cHW-gAaHBBkXV(* z%?WPD4~G89F`H5$w_+c2c~jZDH;=a*bx{AbaU$Q_>6v#5+>}>2i(JZFpKW%EZ^lRE zyQSB6eGT4z>u&Ia5Eiavp6NOv6%zwrt?2yxD}Lz>-D(vJo-NU<8kRX)Olk;pnze|( zOMQdWgYFexkGJTaH+g$!w&>dH`@@p5;y-CmzhH9w#oW&ic9q#-Q;FT0_L-+%ug|+zamdVq*W<_qjb@{`k z+qJyGUsrg|l*z6i-&(%B6%+Mi!QwOeA8+>Vwmww(YE{v*6>>V(!5TMB)vww;3$|HP zufNLbQ@n!I<)!yBqL(vYI+(y<`8)97f{u@m+}>|bn|(KDlWPylU8jqiEWdHwO_4eg z&Ar_2_}0``MW=G<a$#ul;<^>gWFSKZBk~*rTLNffDKgZU@ zwQuQ}N1h(InvpVdO;6Dyzt_tj6-V8;7u#$-VUw5krN?SA8q-d1D&BQUM#}Hyc^8g@ zK@nVwwadBt>n6OBGZk?@;K37it8L1h$(4&A9!v;Z#rcOnrS9;lFFBIYGP;+W=O<3R z@zHbx&*a!d+5AiH3SCWl_m7+n{c-HpiuLb8HWsLe`f_c$D&FcZ!scNT_eE{aZ5fpX z^|y{~694*(eNkDIUf7I{OWl5Mn)o<?-*#k#rG zH>BRo_l|CI&|iDvrYhg>l<(Ys_luftTQ}idT!7!px%UD>1phOf40E1THFvwW$rH8H z4aJAfWtp=7YWY3gj=@1v`Ba7tpGRU^Oh(+3<|N(f_+|;m^tu>)rQy>RFw#rV|BmUv#RUZ*xse zcs6TMr3Q!2M4>ZrXIZ7)6cV;4r8TZnOVG8OV(Qb$DBRTa&F6!~BAfMRo$fo=&t125 z!#550P5x(nT@5}y64h*F)Lv}Az`plhS^2u3t6I)w75W>g%!#|oXskMstLECIxD`*+ zSGX2Wdfg)G;&?s0$s%PjU$*wr-@93?MRJQid=8r9)KgK=I%`+nq0`=<-sqO=244HN z`mURH_$-w(e?lJ3{O6Hw=8~Kc7|_)5<1E)o!z0RKIaeMvO5ACm)qi2{73D?AlN%2- zbv!g@(p+oKb?Joq#`eT)Noo1k7mc&i76;2*w#hu|lsePoTt?)(t${Bqm#tor=(}g# z_6v7+Uv!zQzwNHBvWe+*KI3D5^oyguUE6&!HRWy3hv1qiO2Lbor`W8ORF8E$q&6!- z-#(LbeRlrZNzOK5+mjD+PG2vh9=JhXmG9s2RZkY*%?r1^d?TlI#tx_a-aT(54t;BM zG>*Cc!XoOGUqN(E^K9id8TJjYwJ$zA>viq3yY}-&&H_adS&7?oo1Xb}TX(E23VOD% zaIO*8tQMcM=BiwuyLx?Yu87`zuqa^v+Q|>yD$3X59rMJS^pz zn(#U1dA^-Wiqa{$7`2$)F>9VJEuY%-B)4Yris$(N{fkA9w1m2lHR(EH7}X(TJTNrnh&8yKP8j!-mI;TEs3l)h{aY z@47A>-Fjxl*&D4>-__1>`eRYput~jfUPk7u=ZBi@xRltkgklpu`5bo&IGcVW`OeO7 z`qd=?d*7FCaGzB9Xy={hH|}>^tEb#FI`v#nL_PV&yXTFZYx*=lxozhC94Hi7s9a?( zonOx<$7Sz#x=-Ph;ij-xc^%6?Y|2@nb3RVQN2gl3+&1vswex*{Tb|!CdSmzcst^18 z#7XkGikYqN!We>$7c3QSU7LC7p&XaliyjN1_irLUB$n>b&9vP*S4gwrr^tJmHF;*4 z({+MpbL=wqYd)fRu>Nn<554fxsQ3~Ib1sYITR#ipF5bT9Ra2qBv`XUPbjBywc$dyg z^s8Xqc4nev!cwuhFIaw_b$VChRN>gNeAUyNn**XgIK26DMWiAs{^XVS{YE<@o^vYB zIGWbh9l5;w^#MZ{;cEW{*@vFYm3F+N+!nhfLi%9R{Eq7q98*8Nl2Et#!9VG$tlGBS zn&(;GZH@cR)$>*~F);hw;ybgCtgH82x?$EU*J<119zRaJ+;2T0$hWDgqH^y6!^i3`1U#|`stuWZbJpB7d&76N&P}{r+i+}|kNDcj z0h{L@UfQIgd+xpII9qIejc-i$`v!|ws_#0}J}D_sJDR!t z=E{vfV~QRletI#tjj*qG+DqZ%=_Lo4t62;gN|+on;!+}Jqo$` zYHx0D^Oq?Xc|3VC-8Nt1Kdyd~xvA--RoB(@BF#fBTuBy!ei!N|#Csd_4a2q_$^o2LoY$wEd41JS(e2EdrmlL^`3yY5i77g*Cmd1> zWK>@6xcI=f{q0>vJ7Hw9YRU=~IxISyfgYFf+)@#FZ56xMVqFeK(p{e)9`qV}B z+?BWaFQ~7cCF`dZ%;)ZLHpu;s+OEv3jgc?ZmdwmP#1*a}uP}4bEd5D5NO}iQ#cIo})Fz(+h(kqOvy0P6^ zW8U`s_5>%PK;Pt()7})i8M@vtoHjA^YM|PxrIYgXO<&C2$->ZoweLxGf~1wtuRO+DmC4N zE$GoPP4c9UlKG0BX8W zy_}dl@3p!dOHTd;y}oUG-n+dEJ5scPcSFV0D~bUJtMoD((`WVOZ*%lqX`!o^oxke& zk;eBv{4d_>Su5Pv30TLH#FXe?d*a58Wm}I<@VWa+Rx!x_t6o6Lk0*URGfwDtf8Vs4 z@z1(_Vds0#J^t4>=ZchY;HGd{+p~I3oJY)SPbcr-(st^e7R)*K_QuKCoEzQ<{t^k< z*U0eTak28zxfA_@7Z}K{{mT1(d+3v}$d{cK5&x!RnTWSRA!|7sbZv|*c*F(YlWgml>+ zmi1}ED~^Y%`F)<-cYX1Jg6oQ3{#NrZZQOly;sNKj&ljsdR;o`*Z)cq8xhXc_Quea* z(UvEa-L88S&K-hQ6`iY^@ z{lh+ z5l7rjJSu7?n|zFvE{*!;RN;C#v8i3i;DOWeMm84FD_7nWfFn zxN!GGM3hF5>ZIk%AN8%=Bf>I$t(Q+%Pt%Fi%AUO!)heTRJkB<{bgp)qm>CymXA1uc z*Tx#IoONc}-j2c&nnwLeHTmtFJKQ(CnyHbYv&dKHTGfJU zRrk)DJmc89cIu-W3f8BtZ!{89Pf#QY9dq2J z55?M%*$MKDvdc}ba<-l0+MuFRad2P6`cPGE#fQbV?rh$fvOiYp-x4ePrC@ZFK_z@q z!n{(M;Mua(QOVq?wVNG3PO7nv;q5Km;qzwmBTox?hOfdI3KKG&CLH;@+%*2te}*Tw z$^*kzzA8T$;`zHO-X^T$KZC^L-}7YTtEIW^s-0Hj z&MJF0_X_LAz*A3^CLGZ7T<^-{BmBLLu|4T>C(9q>UDH{`I#(_GlPIKMAeK3)=jC+O zvtsTpMTbr#Z8s=3d%%_T?x1nB+4g%UZDi8}nlmj)mFUSdg3(OdDG_KP3Aj3DWR`Rvnlx_XH(BTj?U0&93RZz zWwmI22}*hB=ob`fnBnQdan_09q-pH6qClB72{NFtu;*^x7$tMW;>kQ_Wp2y6XFbONZE68MiWJ zMtNLM*p79TYtCt{Q@QbA`;1pJ&gimSyYnRc(}b(J#=@u0yZ&9q%PY$mf8fY0Q{Seu zljnplI%lU9dwrMB#toMPZvRxO-)thKpHngO{>kZ8jZHu8TxCk!j;mQNZY#6!FA_Tz zll%74Y!Q()*2;eTH$MAjW+a?4b33NlWHF`OXWc)BmO^c9b&-47zwU5p+Lrp}FaN}G zNN&}%mG_@Xa_v)nu!5ANU(Vz$~6=btWX3j%e2 z2Ufg3KI@C?+m^1Lro&>P(9)gT?Bo%zjcI#q)C zvX{PsoW_nHeDB26wA!C6cM|sC)ZBTp-0j$`?2S>%A|(Nv{I*RyyKL@k zZ-rfx-<2eXf2-Y+*6)2erab=I!Nc5c0ZYo4t3GJF_{!Hv;e}b?<`9$U?KKlu_RZrC zl^3}qtK0P@(4}%=r$pZvvnp5Z{b`wV{_9?W7EiIv;M4YdYTy0 zAoI`Rp`XR3*-t`@URuUqZ=Y0N`tkkdt2UcAK0RBd_IqOTRiBy0-rCI5u9jZ43-_xG=8gYaNGjhe~tFAp3&~)~Q;G{`xj6sZj8p&adDVrbqhn4XETO!uX zy3WhwNZP7}%VI=>=idJ4pW!ArOE4kf)k5dD0^$z~?`1FN)Y-XG$>E)g$jLt!m#x?^ z>7QG+mv^y`o%_=!W}eUP5qsB#U2%5Ni^y8SVXsvgAq&FXN3ozp)|FEo9(G)m zdRjfTF>CI8KapUbw9T=6KPGM4HG7+eqgzC|BB#1gKwX&mtm(#6CrWQ|+2YmNJ7vq& z`aU+}W1pX!*a{?^*~ptb)7t8NQ_rEPy*g9gJFK~ox9oReXzS*2lSm*NfetCp~fb_l`Ni=^~nJ>T(`Wv!Be7%RKV;-SnN- zZqrg%Rr6GBh*~6NW_!PmeeLF+*?+Hir!ADqY0AAIp&Yq}tNpDT|0;{^M}-c~7v*k9 zvU@F;YRUI4EBL{J)`_})Y7gu(#0!HrecNPvI-@~5`?ToCraYDfvnH7?SDmai_hnV$ zIt_!eu3JCtoM#FB>2Gk|RkW0=>_0=~;-|4eA!m5J(yM1_xvH=HZWedqwe{KZTbH7^ zw7ppsHeSqKV*R*_^-hnD)~Z!AzXZ4~?s3X0oYeDq(~6Bk;#-dVUarLc=(NL@z^$8( zotx1k94+^RRVg4UJ@5I&wU&{h(!T?~2T1%qX!#*BW07K0T3_Zv&b5Y|uM#C0-?Y7~ zU6@;~SUrv7?fY#3XC*RIbh}QN1TOf>7`%MTfl?>UQ|IQqDc>u#Evs8@y1&^$51|*K zKeet+T*Z*kBVCX+)hAQb>=9FH@SJ&*Iz?v1Ys7ZVG1w3s(&Ausck-fzsyr!MPiQ8J z2W=7)aJ6V@{7uev8NpK* zvlPfbJpGsQ7CH7li-g7B->|}md@^;tszE-JuYNFXG z!IgKLiaf6zWeQYqR$Y~RH<72KNq)z(?XwDBI=Pp5r&zKGvs+H}HmLCuc_1KiU|QF) z^{2z{Y@d15uv=6{BrWBXz;cme5mR3@e2hvxutI)^uT&Jr&fNW3E3TC_dfqUjLG&tx35@a&Lt{g~23ff}smh-?URa=UGB?j} z=ZfzlUj-gHicOjxR_2;}V7hN!_N7~M>^!%YTu(?hoqKrc%>w>aQwp9I%(4urogiAL z=qzUPYM+izg#Kyw{|qkuRu>BHJZPJDBI%Ha$)*4;+Y{+sJ?!uN6JpjexxE#<8t(m->!7mR z=1HG6h=*P&+VFEKkHKDnCk5T@Cp{fDue~ZdX;$Xv0OMKT;u@_@E!8%kI`%Qh@4}{{ z-F}ZQ_NzFsF?^rOJ=Z=XUj6J8#lrcMtd=nqgO{tD2lYDSKtd8Rf7bziV0B_FSH|Q*wFv zpY};7Cx?eT3lrrPd-OEOXQThDlRQsWCGR$!eMXsetNTuwH##$UFP#kClB>=$U6ot$ z*`B%HJ2}4UcP&v~wA@%?m0PgQWUehTO#%fXvyQ(jiLqX`(;}MX=`5!+6JJzi@@3XA z{V5jt&k&K={HlX5qi)i+u8zCR|4wX_veWF8oIT;Avm>{{BDp6^b~$#Ov^<(!x~AzC zhgGLq-9)>mmn-zL{1-89d$w|c&)QA@8MG8V*L>OTvxY(8M$NRhmW#s=-nbHJ_i|bZ z=PIEUo{Lu9dNBFE_5|NBiAb}+E(;kwSFyt^=GP8?U$%V5os}N%~S8r*)Mc$1HaZVvBq#dK4N6iH`oE$g#v(Z$bJwuh`-Jt^y@T9+Hgtjr6#vwI3> zRlO?qnDi}PdY#|JS%&W?sgy^4^7*}qJ8?<-C9ir#sSt)~_7C$IuJHF4y<8Sqz2c;d zfcinUmr6b>C&=%3(d_%rYyR<_+iO;R^YwYvlwRk((#h#o+x5F?KYSZDPs;n#8gN zl$}4;S2WFzHp{*hd-?q{skQFcbi2o`~-{k!QMFH}?xQO`Dlh$Z&gyKKC!5+1|lz z+I*GMj}`B%%$zaJB3t~CV#eX=GaCFtxVHK){V+7ShFB&ujlP zyjf~2Q~rJWQ_I-!N7=V$hX#oB9P+!`Dn9A%4Oaam(D^BntU-A}HC zw?Zdg)-jFz++n7h7WL;$SdPJ(ScglEe5~vH9^Nvup0#P;juNR|z55Jr8I?_4_u*dc z(}x>$ST}z9-Vk*6G>?qA?{U?(!&Rs2Ju;b$<3Bh5d%Eo$$Dweem#6uXvyUfEKdkq` z*DNcNpghfehC2FeNj(2q}ie5kX4@vi?V z-G5BX4_BzQ>ub)8@OrRj#z#%J)$H?SULeAoSK&!00qFHfaL zEDLK2{h`M%$gK9FBjjfI4(6ipJL#YGCOq$~;$^bFlHs{GLoZvRU;QOh_wPetUuVwR z&7E2-9W5D_wBfx^?mqR-4S9yzL9e^7f0VRcC%aqdrKRc=YyC$W>^VFf3Y=-~Kjz%k zJ=?um|5bGRO9KOr^jWTZ%=gdq&DeGQj4>}$(6#ULKHX2#{(ENf-C*6#hieX=p4#w? z<;2=w!t)cBbNy#1PG$NW`K{l&>sb`L`J(Kmpg;R0R((1)Yun-lzne`JodV^4PZNns z+VXotapdZY!YuF3%f-Ffw`jAnXt^jykz&t}iaw3`mlNzOr%he*>;vP+8F!o>W%}Ec zcS$MShhS!`|GP3I`Og64%Hrx`p&rkg$;{>+LI-C>sWM0%feT$XNST4)F;HhC@ zoR&eIP=EC=+Xqg))1x_VcUK$oP1x!8^=`Y-scmb@rs;U~G_Eh7dD`TmZclc8Wn=j> z5gt(k`)zV(+5R(Jd1tZbbi$<`<$~yvz%$Flj;%`c&z`d&>}S?}-eVv8gma7S7(R=i zSg>)gkIZ>Ro1@nZ@9AAH?<`$zu>X~^>)u6cmwo=X+~9I$*V&xazjtgZzNvj=W#ng} z$Kgg+75ehBznxslC*7A*yu_oicFHqO*PaK@_o<~g-mA8MS0Ktd<7n|`la9Q97C##f z{wVZ+mYO+#lOnfQPktb;)V_`x>jYQ!@Xmc?R{utA)z&lbMenv<-fnnt%EBFmx9{ax zm>Tyht>4LHxb*m?&l+*nE(aerrES`N=wIr#bB0L<(XQ*0#W^-?e0w+C{Av+h`zJhk>}K=JennH81E)9YHN z{ce`n_F&QKBPnY)J!-L-HFZz=&&E8(6OoUPuo?aSsQ0j0?@#R_k4ds09tYOS-EG-w zS?zw-SxK!>(Bagf#gzgg+dmoyeCPkwB*Ac9m?O6E-=Y(@PBuJ$rpRIPU|Z$fN3B|q z*$qW+Ts>rM+`G+xnSliU@dyW}f!F5LYRvf=w%^BK_%v!dQHK8WX#tUJQH>ERJp z{k?*@i$(W$Jh*w=;Bdt=85!-Fecn-ylHyCBew%XUZt;5~uA3HVyh$=@OQUb@5Vx7u z{-f;xw%&gKlHIb8diQ&rYCCfF@V&^8 z%*=xZKc3ltX{z3G=Db*rhT4&#GvVIZt*>C5iW_x z6~?zzb!4R6Wgh&h_Wrcd{_wHUajXs z&*l{4W#z}Wm=0|Eneg7E@Ki+p7NPfVt*?4d`njr4a?4RIl`R$@4jY}acz@`l^lS~8 zAJ6w^uF%@~PmSHr_tKHD?JbM#an&@3@M69}C*@5|2;#RjXbQnOx%?R;=^h z{7g>edp>=Y1yhgtKMFK@_>iybzT=F9n~wu#%ucw%XeRNWA!SwG-q_f*B%yVUcE8)6 zl<#%er+c($hz4GJfI z3yAPZEZceYz#XUZEVVO;u-G!TzO7GJM-z+KW-s` zBKsNauk1Q==uX9HJ}K=d^Dg~}kY1iIc>J@-0?FqKVvpUqq}IIUv}nHI-u)hX9%a_v z>SI~EJN-!7)YR1HTehd!&)mJ{Wb&hZspb=p9^ifXj5Yh@ysMg~%Y$1bn;z69<($9k zd@OPO;XPNIWxh{49a(VbLAZ3-&lzX$GB5t;9ojliLGA-vdcaNTkNvFGS0dFNN&;I?^A@e&;0uI?W1PrsoB3iYvoU<+Rgf(L6|$e!)SKbrEEYps73xo^uyoekl)&lE<*9-Ff- ztt#KLk2z04;dlY@L|SR_Q*wFeLuWyQm5^aj$J0*6vKVjVl@!E9yNI zSf$Uk?6G-v)gzsrjV&j4{VLS_aIEd$5}qFkht_BRY~~Gq8kz8Pj@+9!9S`S3R(>{J zrL=hZB|A&i<7PhlS42Im*z|tpfmX`~n|aRh5zPv_zPBz|8jvQDy>*Gq7O(do9Q)ba zXEw(0JG??Yf>UV)91J0Q=NvVX&lyTllKd4EPP_0QF3#e zeP^U_WWw7OJdZ9PlskE2t(;Wjoy+`o*G1oYUHsmVpR|jx>?+Xie0N2z zBx&uz(1vpbHsy^RpRyKa=>C1A&U$TT`~Dfs8&b-5ytnw^m|%9s;QTH_t}?ka^AnjX zHWjY=_uK7y`*t+#rH+}CFe zPnJe7v#L4XSX^(+7|I?~XJ!fBjo+r&Dqj@3 z;NGN99lD3bj+umPb`AZI_Sj?b?3|z3aTgzoH*cPPFW>#d?^DrL=j$`lHl3(mcbZ#i z?G-;qUAj?a}-75Us4TXy}j#SAe%DX)uvRjqeR z&pz{Izrm*!0{rLxO=|eu!glcSk6BqIg{S_m%M6THtUjW3ee=zGYUhIHI8F+{XP(Rc#}wFm*N7goTC*p;suT=u56AgWDMb1-~3iQBR=cH@5E{PI$Xc( z#B~znG~+u1&s$Dhln^;DNwMfx;g2~__8U#VarSJ{RXLponN5z9Tk3*NHNCGpm#!Lh zY{ld0dlqw+`hH8hr}}VSva8>#r?Jz8_FZHzR!lp^XIYoLBBFBDy1$D~-73_Tz3?t! z-l_6OaZUUDD@%GUcicDCzhm%Q?z6Jq;oE0!?vc3Lb9$nf_?#*0Gfd+158qCSJIG%A z?+_c?+JkS;U#k2N{QJnaAMzDiCkrlpp2XR9{GO=hhosN?S-ti`3lp}NMjxMt zIA`-2Cev%@6yjH`4Bk8^FY1^=f5~Tl(dBY4R{c08`7gQm{meH!7jH%EQ+N^bSvLA) z+@)Kd(`Kl4#;B~Bbm;B3p3c~3^4U|5@I~1bHO#!|7?XUfxXVFl-?6k^v2)(#aEab5 zy_I)jwZ(el%n9iacZL>jPV~*@SsAchP4L>y*o{fb(>a??ujVo4p0oZ@WD-YdVc8G; zf;BG|o$SuKw*FCqT*Pz11(&9NnJxW}U-?ws=D=AM{WDe`xt64}XU z`?R~;~YNkjr-oC z72VCvr*ARlw=tQ>_TE_>v$Id@PeuEj>xNm=A}6Ip>POGt_)*995ZC61cTYdx z`Qgv0b%*8eiMqJ%{x;*uX73|MOg^10WDK}H*W$9C?U|U$oy}Z3*E09GI5i7bPH$ME zV^WaV_#xutmd`dzJGWLlJeYCe>Vq{`_8V5^thW`*w0v*8@tE4O3tK+3T?~CQXYam? z0zcRi9)0@H2O07dTg6|KljYTe~hn{Eqyqc=0pVA3BXbK4P6U?dr~VXa0!(-N-tvZN72L zR*AQrRs2gtr1WOZ$hbb^Z}5+InNo$SoPTIPlLxz%{rqAX#w8&&U5M^=3d2*Z1oef)m%sswEB->7D29wF0({>47sr}C) z?bdyIAhP$sDZZm;es-_BpBe5nOX!PVqj2kU)+?QxeC{OFLITacIQ~W(=pZGbY+W~>; zjGyK6nSRc`diS`V&gZ6_4-YMb7T(~x&d7GVVl&I?7vBwHtnvldhb$@6Q<~;o0pba_=kT z5_0{{>nVt^`HLC6eYR9+_qNL1x4O%>?Cnn6QGeuJ^?CIf>keA`{%|gyKQm-UgK6Y{ z1||IoyVLD6cW1OG9G=NnSa6Gh^k1z&;+>;@Lr*k=Wy|#mX^MM0yv{~` z?wZ!K`_}9~0tsgi&HMMmZsN`Cl(&0M=Umj=TIUfE!LPjL-~qLw0_T#C4&v{;@7{g; z%O_xI=)Vh@lUUEsOrAL-#s(wuILeIOb;G%ewVQp)!vp@qS0w z^0^ypdje=U_UQ zOy@K4y7z|q3)a`KS(+RBF2QEO3lHxKhl6SUbMCBgQw|s2a@w73`Rwx*a!)6p(y#D) z^T%{j2VDOA35@jIV_^x1vi(#q8$O8X*X=L_|JHPzcwF)Lcf;k)g! zcX{48BJ^w5u=bHuOx++XQ+$MU1VgV*7@Ywulp;8?U=uXB!Cqk+ZG zj;!g=JH0kOThS@5yWR5bV#6%%scm(|S{DrtN%X6+MnB(TAtx7d&?mKy;|KH9_Yza@ zJ(o+>{{C&6y`yX;hfj;>jTx*AGgoif-12)zUw+@mMTvd;E>6^!UAn1k=E^199fGEh zVh)8@Ja3RZvRG!$q|JNX12@~a-j_M}t@@7ZhD{gD93K_1-8VXJ`tJ8Z9rm`C>Z4nh z%G|nf;dlN0U^<(Pxy2Pp1to^f6Z~IsMTl7u(%4yf&cJI%YjP26`C(roE6MElVa>mRn32QHJ z|96D#&MNIlsePBO@u&-Rb!rqHyvMRp+|~GQa-Lb56uUt4!I+9!mp3iFy2j_&(w~c> zWp6Z=wzKb+(7CR-!=|zGvgDS`iq@&2Mn#2P?}O%NSYMy%eMjv_CHvn;CbwQ5arpL8 zaQ~B@*RMrar@rYr^lslmws7}dVYast-F`~dsdincOZ{+ui)@VZ+3(YGofZgt^4`vu zek;&s+w8x^-ecCOWBIP%dNNCAMxD3%$akRnNS=KYb8yU^B_guBeeP^NEpG0u^}spR zc9G1c9-DQAfzJf4XUqy(eOKq5zp(hNin&MMzSq;R;asmTENyAZvAyP5YM+H_ys+vL zk=>d{Z%NNSmfv}olO@G{*B_sq%l3D~wzvAktJ}Y`Jj!qL@9wxH{Eaw!pu1k}Bymzwx##1qQ*IwSq{4sT%?d3O%pBZ2Cbf^)U z7W!5&X3n!;b@viP&F|UlU3!c$Y{Q>bkwIU-Y3ZrB>PYRhK6Z|I^PW62$vfJX?^a0I z3GKhK?BR3wXE{eCo}RCKdxs%E@T`y7dzqkZh%SD$|N)asK@78}=RjpODs%yWu)uB=@2;iG{mpWDW&DHs1U2yiT@7Kl1{D{}3g zojWRZc67#RKl$y|v8G+E`gwt+|1sbE8FOq7tUqZn%Sg_<`~H#bm(4B93pIHXmcHU; z%Q_o+w_S5Bn})lj#Wpc#zSDnB$;cZWmuR&ty?gYq+V3nQg{7BwMy9FB?~316eJUnc zsCVz;h+Fo3)8h>f+(cuz^SQGNBHgwl$&x{7QIlC3ck6r;?o0F-WdVj zSx=HbZc{9H@R5yuW8Q+ogBjj;XRO(=`;YrsuX4lAlq$A~vDsTPUO!6sHhXeXEyq;e zvg!F1Q_o2}k$dVO^nP20vW<7#jzbL3o-KSlIlUoGGmzacUoAfK_KatD)0(#)aOj;Y zf8_k;>Is>=*3Ap`r2jaDD9kpHOXxFv6MK8b$Aj^@XI-Z+o3iKejP%WSB*R|6H)Qh_ zY^(MuE!Li&Q1+<&$fZqlAFbu-K2bhxzF=vS-0@jQ?v&l@Kh0d3{Ymq)f%N(5-)E*e z^3J#Y?ZxK3*Rb#6Ekli?f1YvPJo&VxC=)=-Vg3gJXKg-b0_-Qd##+H;-N4 zv)0*NKy;SvBBfbRx;1Lu}z0v-){-5bNzLkR zdl!GR%3mqZ-F4?sr>XR(oimKhewa&5tC_g&V%mGJJqRX4@wHM8J zGS;yLOxF10u;T5FyT85D?tZd%@9E_|U2*I4m$y7K58ST%wX#UPL-n!VA8*wo@v_yE zQ87S)L@Tek0+LU^@v&!Ht|%?|$=Rxawu-9G0(Lx6#_oM8W+AIw5KJ_&V1 zgz@DCEuP-CSy!Dei9c(K#)CMunMKADPqf=I;&vbPK5}5{PQM7@pj)fuXGYq@ZqBT( zRJK0-dFA(#Iqy~(R-WAX{>)zAQOaK1tEl8jLmF?xR6CW*2e=Dq5BzD-qk|qB9 zpI$HZDS9HzYrh-c5-**z`m<%XjQ_0V+|5OcnhRX@{IZV={oQbM<-I~fIXC_0J5x8U zkt#c1X52Tm&QG~nF!$^k{i)CRGn@-nrDku|uZ%m`A-3lxuY-*Kyx(2#3*B{U7ruq~N2$(n|R&)edKTB-gr}vQxe#mT@61I6p7Ra`~Afr@3>$+M+xmNdvT(La6*-vrJoTGE>1@;~KEH1OMt6OK)o%nvOf4>hb zn7ZX~Pt%4Uojv+8YiIJk+02shBx{*#(Odn7!fCtxm>&8iS8RRq;k2Q6dg}CuUM`iL zcXn)_F;$ZBf%W`|h+E}0h8&4jo8yD$rP^HHoo#fpBR^lFX@>FhlA{N|bcD9eE}ydG zaOi_a!LA}PH-rvd@y48z^3SraZ*JdG z%YGJf?zzy{Rf!sVy!JPCmfzxSzS9}|N>lu=m(j=h75fkQ*wi>IKU29}F6}?VnZ?r6 zGe33hH}Hzp_&#@izU;&D{p%Li-h39hL0x6bMse0BGgzPJ8y!sDUXgyJ=%Y{Em!#u% z3OkBJb6gAdKb76McH(nOQz@R(NS!q|uilsXbY=B|i`NunrVE_EWqmA6tB>vR7sc6s z{1j&Hc*bG<`O+>e-8`G!dtHmqJaBB@@}Hq)>%pVDPu=SEm;QA2U0IP=-u)(?&2J6U z=P9i>u@P>`FAR{C`5Ln?A!g69`%KbHHTz2zmc?Xh30*q;;m~YrZ;hIc*SC$uZBE7W z#%DGxTef{gVwu*JwWkBt$mJe-nY*;8u3}c|T4wiafzrjZP9NFc@%Sxwo-F&8g$teL z8D@iDzrq02Hm`=-dwxWgDTh54)Uv4@e_)q&60U1h?{yZx_aKRbHg zVn&#FW!AkPGjbPxa5?w1y8k0%wWaxcv0%L^ZyZ;he8zavS0h}%`iNqg;_Tg7pS2Fo z{(G_ZR{gs)h3}_67Yx4h zw`1I*+1eWnbw1fS?>OqkeT92g>&EY$o);yScQur6ajt&OEO<-5v&iCkuzc_46lp&- z(SkXv%Ig%0cAxToQ5s?(pjz_Oyv}l#xYlQ*IM!nurr+Ok==(>l*ZV7+%hqwVqzLag z>}+1ufA@CL^?HxV!P_ggeS70yXd$t-kn?cSQYYhQ<^MQ%+9vA6oGx6v;J`DUXL=ha zo;|W&zar6HYgENm~kHHPu_md+tYM4#8>o<_P5@IsChTh+yx$g5vzqPE6yCL-GZpOa;?fWx%cKs)X#+axBc7=M<$`iKf zy-L?+jVyc5v%-G*@0mLDn^?^L=7~jQmVVR-Zg67J%uW$C`{`V0U3OQwV=9-8*A#El zfQJTuQ>PwsSADeDBQWyFhq`oz=bd+Cmh#%132d_5A-tier1XgMrz`hTdQ+k;R2}!Y zXWp2vl725uUw_M{l_~p^SQ)%5f(49jzIV8_b6;ZGN4+2IoSqTS_`Oz^?_aaA=yl|@ zDPkX7n0`!STgq_#OmOz%pzpoKx<997%(=Z^lyh%eWLe>)oGmrtno?Qr@2dcTrUTPzL~k|-LtQKnupEL==M)D3+oHKdn3>C zw(1;nj_lp-Ggc*Y1>SqQ`uD+-xcDus$&G54j%k@c(p&jqiYVKUgU^<-H^`+Oerl*$ z^z+W?(rL0gr|4PqRv*>m-fsDLkH{1*!?2tE?;;Bg^z?HN3djq(=^M@RUK{${a!Q;} zg|Lcv*v|dzTTaP^B^HNVyvcl8@20S+r-R;spHl^Ii}n0x2wWDGVYk0yl&Z+xft2qH>G5zJEa^7J?nR~ zE@5AyL+bbI8S~D4>dC*ynL49DddCI-l>Ox$mu6Zt%a>1>Ds{Ol_0_#1kDZ(oF0$r{ z9(bx! z8$M07omjfU;qB}xA`KICE1Lq-_i&bMdGz#{%u$i4xo!ftv^MP3V_e)dlQ(Y)@s{lxi_01rIks1Hn^E`n%(g5#ueX~ zMLQqn?US!;_StrEeYxPqqPu+oGiPQfENfQgvtlpVcl+Cvwe_mLaRI4bm$Hjy9h8bc z8q{}3_3`Tfnf{l>Qr6Fwv095ITt$7~( z=S)cGrl^_yO?>l>Hg26DT=U9Crf2TLld-dQ+;l8^BzNa$*O}W!nl^3Q4m?YdQ&%jW zvg7D+;r)iPU+(?({o}Qw@Pf*YQzv>PA1_EKPke80)ILq&+?l$Q_bgJU9~WGbxuWmJ z&Zg-LoaHV(cDDCeZ_5_lnch*f_j`W|XQ=Mfv@HHhf;IPcv~mCB-0-+-?$HUi-7{)W z`|LR<{m4{bC}dr?DBD)4Z~eFO*H6;5}?K{>FVX0Dy zKRc|2WyJC(-Qz5{X>IRv{&2^X+1)|i7NXTpSEQ}6J$@$JfHi%(%bxPjg?u*A`ldXs z@`8>5Cb5r2CU<7hJtZBs{hLrdPw3V0P~4sp7WnHkWS+aNXan z+iPl+dS{7j^>UmH3<~aA@#nc%aI%BRr?B(joxJmg@p-#;EJ|Sxjja2?CHq=Na8LH;GmCeI ze{ERmxTo5EtN;4lMMs;??)bxK$#_TRROdGBgW^UK7SVgo=gi;Su~}_;oxLGP{EVHo z?YrYH9n&-Po?6~?^w|BMou~Je{JnIxuW!dJ#>P84Ln0fGJ>}!{dB6Lg(7#@9eq%4g zV@Wy-4_%(v=9T(v>V*Fc?OO_XZ5J!n6!V_;HZ+KsV)4uC@eHk{;Q~9)B@3xsUlVTc zx&2Xyp6r?8C241E*{YRT8Y)~`^VH7I>!0IoaBcIgn9TcLFL*SB);(kRHR<2yJ+;hY z{MQnXrD>meE8S;YUhv!Ws@Ju{9kPX7MgJLYmQOZ3XBRZJ?oimAqN)E_wqDWwbGB4# z+4BpXHv+itDXinz<8wT4D)aJCBZu>@dh4s&Pi+*8KKpvXQs>?Mcb(TH_xW`!VVOR9A z*FT%mzTMZe_EVqPA|{cw?pS1x!6M$WU(W(pU5rx`Z_S^-)jME!@)XYWE5Qw^>aJ~X z=YF5DO8DkI)4u9c4pF;R{Z8IZO?kWSquj4*2m49c()yXp+jY*ro9-yJoLOMU@vJ_% ztB+!M>kF+9%OBbQTlkDI%ZiCFi&pIW%i}Kcy*blh)&0!CqwKm?sqx;kypJ|>7A#?D zd~kB!zlKKbjqi=hudFG~H>~~ny0EfYx|DmzzX*$|x6%S9RiB=5cIoaHJI>3LPdoq7 zV%^6_A%)Z8H|E`_bYOk|qPOh4VdI=vVOA^UdIe^^Sa-qV*U`8Wx%Z2n^Ph>ES?!?D zmc}eLGof(B4WpZTj=Hs$e(3lXopUNbu#92x?0r7#4pzi%G)arMymR{9i;oxH8cesZ zIor=HplSQU?ftyB*E2M?e-pYg?W{lBe}F_3i#M z=1NRjF3a}X_VGdP&09o|%T87;ToRdbgAYzEDl$b?jH(HEsW^#Ey)!v!@4(hgMSWPt2{hq)#7ar zIkdhUb$xC$c|p4LTgI~oD}?RhKN;N^5>WkTdahIk(T(YBk9bf&93&nF?H%GN@UKwLAEMxIr z-1Yb23s0X;-}Z0A8$o{^>&L04PIn)Oge6P=oMHQ@P%r+7j@O6huU9zDy!-c5LAUze zvgXHoZiLldh+@xP^EXxC{)$M4%N$oe_w($pxS4uL^Nr1^4ZVAWojpa9{w_}0v8`=Y z#NyAgHSf&s+updTztCv$^qHZP1Fi`0tX;!%omg{`)fBPbIp5T85&qJcW zy~Fni+dr83_~!4AqK;jg_D?x!<`%Q*5Z~Lrtg}}uThE?Y*XSNr!KOwynKkiPq)eoW9cdO4dKQVvwfGOnuU$5H_JGQCMHq<#;r&eCEa{0`1y$8=b z_>Ax6&Qyr3&#?U7nO!k$x0nFWkySq!E7bV~)#N)@%O(C+x|29_$;y@@Idg&gwL(i> zI<N_a5xfh^Rgw z6bMoZ()?6QF25z5uV9%y)w-z4X;;+|y@yO*uq1RI^nD5pY%bN9` zI#s%>>+z}w<=3k=N4y04z!D8Hn# z_uINp59^H%{65or;LV(iFa6?Y?#bI&fBCh{q^pG@rX0qa&r}pIC|*?c>bwvy^o+fA zLi8J#2j?s1%}V?GAY#!WbIsD5;@cuz=5}QzBW_6*u(G_!*z z*zUwq1AoS#Q^{A>d^UY=ynD(W&QdWR)zdrNLJnCxeDt#WnQ5!bnswP7o7(F$%a`9{ zuUkF+(vJ6H@qfFY@g6tYecZ-poA9Z;{u_;J1OLF=;XyHRe1kTC&3Y@-#Or z>h8KB?mlM&i_GkvKW@wIE{I2U##x0g-o0;ELP*YwqeVaOxTMDCHNOAaW_J9adwgHN zlXP2wgYSn8G36;+B^(}g|M990Nt_n?cKghm!Xb&&KBX5<7|6Q+d-F0ezA3U;}mv-+no84#L z^rh~rFFll<^!*k$`)j5*&GRnaJ@oOs!OYYW`Fa6Xv%-58Py19iTz$p5T=L9`?|Npk zuXH|J7Y4>mP!OFSrPl6f*;uaiPg#^}y8fca7p8M=*^%om^7rY=cgL&lT)AE*KJ|@$ z64TUoZyDChuaaH8S%1sA{|rV8e=A(Eza)~j`iR-1-v{fQLLSFpOWVxCjt@s3HG-*PL zh5|pqtJivuu)R#1-`9G7M(QPFhtOhqo6mMP-RqVdxc9iPAzXNqV69dNTj*n1wnWD5 z>H>@B7V1om7qm-@SoNO4aNdXX@=H2lhgRS3_$)d#@>%GM6%URt_0c%c7P#YQt%4@| z9^*|xA9uX6l3MpMgliw)MQy3~8vV<{LML`=g?ww1x^wuR(WP7a*Q`7kbC}g8sW7=p z@!Mlr&i6Gw?N_HVOh14><&|ja|^K)jxoXzjKB_t-*crs7y5nE!_BYio8coZ%)(RgmSX;T4 z@A_?>^?VJ6i!1IMzT4fqR_2I~#H{msgmwj+|2ZOf@LABA@Rdok99q{mu{8^9%Uj*q zYSkXHT~2djr@xPAyy2|m{S^__Usk@Cn##9QOMKoRpR?XkJGyHxeaOH0pFz3ear-4v z^NyQ!5xo1<^w^p2W%Pu*maI+|)e;tZZ)_+p-0JK8_Kc|NeS;>Eo7G2jC$4ht*zt(N zFR0Jh?${0W-_whpm&G0xsr&e@IrqUV_l=*qw!X1B8?ota?G29^a%#UcXLZSPo@B2` zI=t}4ocR&A*9i3q$fz3JHQ01~sn-neh`eyaoU6gX?lO65lGCb-g}Z!j>@_WHs6McM zW2t`j;af2q|SAPc+b9X-lxT;8ZVw{>*X)~sw`h|x=YnmkD+{;?NY<<-3eun z;{;%qRDqJC+o@H(PF{nz;SGe&@mixAbnk zH;LK)uEjX^sjT3^=UYOi7qlky2Lu+2%$d9BbFle_`xR$=J7*U^6MGobW_?G!2@nFhsG|7j@dpfkH!4%k%G!pulM)jg!Ps^wSH7~d++J@mMtG%oE1pB`zo}*&n171PKO5~Ah>h&~tS>Be{K$eP$v%#6jw=G6rO!BA z8MA5Gqd4|GWt_#CU2w!b?XFL>u$5BCC@<-cYgG}|F%r&<)S_RjZ)w>zvpvaJj7 zNq7|Zj)r5&^GSx#FMS=AY*^q(PctHg!(f=}`Z3Ezzyr>wgD(YCL0D&Jjp2cHtz)4Zpqgj8k)Z&`fTqOiEhtc87x z?%hx??Sr>3mLEy}H<|DDo#JDwBv(Gx-tW~J_m{_5cWnpbq**)8r050huS+=lu*PB4 zwA&(yex(|FYB^@J&r`T(H5PW76A>K=(|xhKieWnTyM$JaPCRYyUo85Pg{65b4Xl2|I)zdG7;&v*( zcc1fvZSih9B^}Rc3mmT&-m+hxar{=e?c*JCiqRizyf?0DQTcQ9!EdhLadaI3i|z(O!9_ z>t^~#RukUOT0dGPQniGhHNO}A{{E6=vETF<{|8DNBTsY4_8m$P^RJA4bA5}QhTVpT zJz)uRFTF~5Br^Siu775zT-Wi+-62IWdt>$-J6f?#Exbd2inZh(pNzUH!+lRr$vJN` z*O9rqeosL6XT7IavO7*sDOq#teN*w&zSh0Mt^w;*w;$o0VO?|D?$^t3J^{`50eoo; z22Ij&K~ub|1s@yyo7`SkrQ+RVE3XmVdArBKeUIj5qdCTrJGQLgj5+v0E$F7cz#HZx zVuz-um}|yf&uI3#oU{J&Yr(LJojqaGP0Ri`#PM~q7a2Vh*6Zgw!=7)fZK=Ln=$iYZ z;P&8G3YJqoSs#-O4*Jzo>LZuM`b^{Cbp4q(Qm;M|E==ppEJ)w8RGa18VjF*jl0Lpb z)8v`OmAh@cxg#v@J9thude37ty;uDH1*z{1-<$3%D9^daReMo!PW+8mN!Rp#+nkcP z%u-x+C*w-&j;6zVA64gl=UDMG?aroGF*ZleJEXq8XZG=}#(m>Z-K^ZlLhE{LP947& z9y)v3cD+>FT_TSkakkEyWh!8@xnRK)E3x-xXDuIDz6?yBA*m;k{nqTriSJ2SE8EM| zMMIxiGk)e-6O?-9?uvI!32)gm{xeJzHM(;`>a)o^p~iL5sb{3hgx>Ahu_a&b<9p5f z&-AQ+&RH+J_`;F!O7E@t89UDPJrP^hvW@-BHogZRH4l8)_xIV;f{OE(0`lYH@1(ll zUuxKu=yBY@ZR0(Yq&(HEa)aZB5AS6k`SfG@1=miF-(xa4y5I^=`n~cxiM8&b6W(o_S>s)*E&lOhBDc#f z%PA|QR)(z%{NvPKF>R;$nk4=ytPg(O@vfW|=B>?^S9n?Qcd789;kcz^iOT8-pfa2 zuKpS`r^kId&i6_(%h+fZ|J`StkIF4(X>aQ|bGmlf>szY2RqMGNp4_?i+qHOy{VU@* zRqlZBo_JXf!)dKYt6RP+R=${AePzkFgKa9w9gT~P4yI;4wBGrMA!vHh!-P-I3bxC5 zE3W zY1&RR?}+=x@-vDPPpxCyZZJP3G}0|x+#pd_{KcvG&S19dwTs!?Ut3tQg~sx|*#6>5 z@Cn9;XIMoZY?-OOZ@`^rYi+L`#GD>T)cKi#|)PM?>A3gZJaJA zSZn!W=Y-lvA8mhjyxG54uQ}*&#cgvD{-fTp2W!m@vibDra1opSm|9iG$X zEB+)_PAL|O5c;=-e|pF7m>8|*8^yY2ZXJG(E>c;yBOX^KEmdX6lkw{0oc;Dl(T8s{ zmYV8ri#erg@p;F-9-)P7f>*Z4EOd{aHJ$Hs=XYma=SQm93(L*51vX2#H?M3z@4JrE zz9Wdw=G6Y3pN?kgtqXpC`OwBdtFn@{>75hJC0n<4=zZGzIH9s_YxoW>xj(0N=1xC* zAYpxG&ej+;LoJD8HOu1f?7ygc`<{Vb@f+9a*?q}jVQldSQqvX)o(&gz^?9DhVd)oE zChOVoo`i2MXCN;WBq4kb`!I; zjg!_2oZnNdmuF#pdaa1>wi;i}DQUgGWmd2_ zWeK-u!nZjdLFVT(LN7nJtC+iUor31tx?uNd+Hp#om%dtAqaYE)r{F8($lH!khyu}aM8_M)dyM)d8JaX_kDVp@b;b#*XEgx+oJCk3L6(J zc+X=mbl3E5?_=F_8O*1-Y>rzg?0yum{k7TN#$eqodlv-$m~vic@sZ<+Q*VD<>2pmn zaed{!i{D@H`Q$A%*&h}>h2_K_-<|Vc^r&w#vpIgI?yk<8G>$WSQu^)rB@>Z8k=`%hO zAMWF0(VsEVO7p4Zv&htc3ir=&^3ORVb|k}3*r#U)Gk5ay`!gp+$9-fdYBwmnWFjND z-{5e)=bW??dmq>M)aN@zZ9GyK`zmwQ5!W3Rt!0m=6%-o@OUq7l*q+6mz@23uQntSH zcZBz~@p3AmiT#WK46O?MgF z*1JM`YxF*Uv0}3`HS`WQ?FizX*(c~5;`zsW$G46jJAHq@O4#h5Su18SCCc!Ync=>y z;Jxv}-f8<}HnPsz_wibX%zl;3bKirr_7;olSbkz${n50$H!m~)Y|KW-m^0s>>G8Dq zJlf7M!IaHhNZ|RF_e>Ag9=C2teLQnowDoB>zKqVp<~!aQZ#)xwD0@Y$q2rmok2nvz ztom&GPhtDdKI7=qjOsq~lRmSy|5oFe&RHMvr1|zzuNP)rZy7G1OYdraeM@`uq!|eb zE7tF9h|FgROgwmAa%#QwbPwop_Hn2-g<7Z#0;O3r}zSYL%nB}8_$v#T=&-_u`Rrywf&+N?M*0_03 zQWxvqwwd-d`Sh9E=jWD27MMz`D%E<&b?v!@ZRc#&imr-TF|%iA_g=~RHswlH;X3uUPDNL{=3QJF&Mj@uy3aUAt}gk)`D3XQJ{z+q zg&xTE>7H#C~|)KhHi(+>>%CvUDGZ`6FBT5>+|1{)64JM?N=Qd6PQxUT`R5 z#I=11Qt1tCsg*l@rwP4hG^su-{BCO5kxlsv(%XfZw2iwow-uulNKG$j=#Vq;mx!70# z%m%rnRcegu`70kqyq9ejEt)=KXYKN>E=ymj6iZmH*x3?O%%0)vFK0P@{xgo_$DLw! z?40&UvzD*WqSNrxqw42kGZTL{CWOD5S|&Q_KZ9Y{GUnSns>M>;lKpR56i(TEw!SVa zvb9V%ZZrF#nHzW??p~Q0pL|PQ>G~PB7eCyO&FtTEPfRfC;JjuRxyu{VnYH_8ZrD>~ zKeO1y&7^$Y&&D~ab^C?4h-$c*#hHKB?_6&DSn#EUjxyu4r-AD;r*P}VE?6wIPU76+ z=tqyYn%)wsTJ*r@hULf0Lhp0G@XdI&+So zdD=g)lBTDAR*$G2z7JLViZ@Sf4XkTvh2_`$5Ds^3c{ zPqSSd(i9p}o-}>VnN!PRUT>5+WU(|^rX(!!!Zyxlnt$DXR#zW)n^~@%uOs|S_G9Du zs_vr4EyY^pyAmT&X|2) zkjrLYLdK)7ItFZgZ9k2rXQ#6h23Q`6YXN^-P(Ko{mYWoyw^70 z`E|;u+4XsSh2Md*r?|rwKfERL`SBi)Ra^cg_!PHq|1&+yO2S*!i_yPCo9(O2`ix}F z+C|!z_i8ct-js@7*zLCeYv8Ee^Bq0cN-e_k%uh_Qa}bM|dP zST*;Vn%sNrKWrnK-gl<>@ILzObaKW7pR0e1pTr7FKkqx)@Z^Eb8Fh>MnS1k+FHC1= z7v`VW&7XVPREP6S?*5MJhn();G2(eNDemg?4io-8Jba0c^UWD|`?wi;Jzwg4hCyW0 zi%%I%JcMsOEoSrqcXivA`-JEipBU}0(o(WxaO!M8Icgga# zzLT!=s~dEuPqO7}{9Qheqopdp$EC6A#rKZcF9ha%jr82{(4?KS>i0QwjpC0w-OUSr zsWEJwbF5*Frt+ePrC*gcr_PJ{m;5&9X^+YU>2jU??jtvEcN}eSua%t2u()x>nwurd z_3u_sTP7^>{_mNpb#K?%@SLnHlx!<-->>JCYI}Rmmk96HtB1SiJWA+V_2qP3%&G4y zHgJ6`^b+mam%wIRt;U`3__LPwjO2o-C^?@4`zu2a$1bi3>*i61 zPTwQXM6wO9CN36{JE;B0?VJ1_?-=tN%vT|(dh+qKDd2K-1yt?d*|(n_nM#OUA@|cIhQ(} zxqDPhAp22LvZ?;GwD)Gyxmq~a>qKl?>hPJ@ZOR@QfB7w%%}ZBxty#S@H~h>!J@a#^ z6;}+V-%>r*}_eHug7 zxwJHEmRqt~EQWGR8^5M9|M<~ad2ms*Mn$o>RB!k*_Wm@Bk4DB)+Yb6y_D&Yt`_U+7 zx4Y1z-!|^cg&w~BeDR9s(bS2z#9q63Pm9@or+p4x!mJjKVzMm)2)kon;Q1KihaJPV(+GPeSZ$Iu>MO; z-s7e8@rW2_Rr8E;H$9#mWhD{sB@5C57}7Prv~%65e&ct1qtt!v#wjn#K7VMOk--BU-G?AH8|#6mPEm&%$J2PoR;UDmN_7LyiBUi1?j6cTKKseQ#b?UE|}J zx_PUB%>4bG71j5iipGB&%##hekSw1@4f)zjOWjS{`h_BYA)^1n=ZGQE$Ts|k@+&C zT~o>pY#%E84Xoh#;2mpnJ+sbS^Sz+#`*{gx%dY%czTfsi`%i_W%TM=xOk2Iy=lF$b zH5EaJvQhNY7wb+6B_c*c15Yj4iB!`fzr zLbspnxFWm2EM~Rq0rS;g>m}z*JDHu%sp)%-B}=z$uJ|z}-QAz{D*Lr(=@p#0=XvMI zzmLZ2m$0Zl-*QVL{i3W<=Qp3nU*?p3pZ5F6sU&|{?M1IVFYmiLx>@Ax9S zXgaekyW3WokCs!7%;l!6pV|D%u=~%M^;_P&l`v@W>UU_-cbrlz%lVckOUk+3^>ni- zhk|kA?HSr?>^ZymoZm{9CPi;~nCki?&iS6wwA+V&O|5TaJhxl^jTtXV{`qPqR(4rOW(R&_Ky9@X{mDyeB6u7JM+q7*6a|oX%!b=ll1gQ zjhOVKQ0GudCbQ9jG~@yOV)(E z@ZVEdvpbg-%Uyb4alEfpbVick&rWWKCjH+sJDv&h{FV5Ur1NMm6UWYiNU!8bLES!rtNa~izGzP3+uirc6a;R>G1Buv2(?@D(wxe)6ZOWwiOM~ zHYk5@92~qu_sSxj&0BoF?N~WA@t0{qO7Zs2=66R9uxXz$_ur|dbevu8GsB_&!}nsu zWVjY{9bKbt_VDLh#{NB$%O5o6-8ti~r^dO3Yq`YEcJuddWh>g+G*azvvo6dudb>Q} zX0B_=l+dX+&w5qd&v?u^PqE=`xz5gjtv~)H+qo%E`};T}RfM;)nCIvt@$E&S2WN;L z@p{FVAH3_A{S50Yy_tar-Yx&5{PTst%Yd$!okdR%e*Ua~=X_2KO=q1N*Dco>N%w&k?8L}jnhijS955-rPAM_~w<+M@gFm_i_~$9dG^Kxo~&P z%I4V$(>d&H?9?iPZd&wu)rTAVU5lLePw_{`y7L0Tnjh`@E}v~T%)H}%+#s^|M8Bz= z^c0`KlFut6mX8Uv(VL!a30>EMf}SeK$==`gtU$Sgz4GFc4{W(- zm>8$^9n)94-Sur0duX_x{@#?u*V8Gah%;I-yz@)p1WwS=eeu zu!!S2ooS9Q3tm*+*`XO~>6m(WM%aFb#_3b;L_Cf*KE3~-bocTH2^?MT7C&Be{qw~i zl~axG|Y%v0aZvMoPgWp>Tchjvp|t-JXANMci=fz4;x z;Mhffs}FjIZ^@eXF}Lm6McWHYtKD`N>zkZPeflW$KSR*I+6V8xsQsIB`aeT${(>i` zckDgH`ukf)K(X0W#vPYb@#k@t-Mv$Xxr>agF3O|x`u4jp8h`gNw-%+~eWo^Cq+ zYgUZWhtuMM61)3n&*0j6;hkc;)#G^|yVjntoSvT6-Iyr5fL$#hIo!Tu_S0t~Vy^>d zhJ5hzIK0JhXN}~JxbVpT3`Xys&57E2T&Qh_%zp-fx|97Gw=Bg1&zM^kxcPjTvD5u} z;lHYwxMseoXC2-LK7Y&n*YWrHyN*XH{7pYzXufdXee=cAzSd1EtT;s1q%jz6KgDxs zheO1aIp@A4?-Y6TFEwtd-}S!4jc5FxeB<2LJ^jMli+9&|_m$^ADzNOV=&oIOruuKf zML*RJSV3uH#Io6zF2veOKA6hhJa9+33mL?^sD!MU~AnrSyQZWn>EN@zy zWAv`yvd)!zAzu1$=G&PydDok2*GY!#x&CXK@%&=7jZ)Tk9)A63pqt;ws3rQi=UGPH z=eNRnIa!HoPS5`;zSb#9chUlZ6+K(N&3oC>KKF~N!wYVOFuj`7GkbP7Y-Cf*Y`Np`SJHf5n`X|{u=9BkGC(c;x%zD^s)t#{Hz7Hp(6cR4+9emQy^Jx38z6nnh zmhGG9uwrVt+NaMeiu!L=n#LGCm*99|1EY+=$lo@x5O9nU4bY~`zc zdfWC=kMob-rh^rA8xnhMCQ9v7o?>+9XmPT{QiPrE!na_e_ycba9a7TbHySr=uwSig&EwB22>Xir{EQs=a;>2VjI z9*KT&WrefQ*(=L-bekJY5vXyP_`~spbDU;k5*;p_-+2Gbo6KjSKaQo@*Dmhy ztD5}TsLnXRJ3OUe(|?9Ho0{iEMs8fBr!V;NVpsW{~TJSWa(Mw zhdO&UeJ($+GEJgy&(+U*ZxY@b+I_s0lyqIy_NQXqf%lerPftH-I`nZ-vqZl2H1i9~ z9zM!iwdP&V#|u*0XK%4aG8xW(#%WlWen=@TtXeMd(<|eT_RpmLJyZG?FWkI?BlX;k z9{#ts2k)6~>d&yd(PSz5@Xzsmn!CI27}N`Iu3Z)pd2Ydby_xwPO&dSzXqm^d&Q6Pq zxq39Pp~te3+s4`FAn&A8X}gcI=9h>zM%`KMSQ_!!;QC3;W|12216#cJ8+@~N*_QE$ zKff(H{>+6-kMbindToDXxS>*i2CMb)o7)u2+cocPU2SrDn)Qo)GOn44J;D=&tEPIf z-p&`8*0eUaaQ~iV*Ir(GxZ6K7PvCCc1HpO8TuEjR92e$oK3{W8PsG{!5%)K9z0+lS z=04}*TQas-%sY{;Z+Ncjm4k2{%d)=99M6sSe%aSnbnuvG#hrz!LTm4+claAi=-=M6 z^!zpPyGi_l38yWm+o&#!czlGl^Hj{5XzkA$Yh;^C1y`xxI`RGVmZ;3xcXW@}KF<-J z>J_$dhd`G4T|S*tD{ud7J~%7Y;NZjHN37=e_@v(po(u1McxA<;lxw`WaAv$wd$5|?;_uA{wP}$ZS-swDraxzdMH^h4xjg%2jnBNS4)K%bK~KwG zw1tRt9jWeKtUN#CN%2IN_>A__&jwBJY-CuvH@taw_SlXmmo+c*6zIC^e4e33ypDTr z`OKYfXPz5ZJxV!Vr}VwGQ0K91c!&Kb-rv5nE_1qir5Y{uty{!;IPb{P&-+eK*+0dX zo3DCTt6#adv3+Hi&-6A{pQWYWW|-Le&&WT#gTwC4`e!Ke-+ z>ADx3VSPGx?MJbdH@{DhesAYly!PC2LAB`u&lk#EDADyvU#!Qn{YdHaBjM>YPPZ1; z8_J!pto^Kcn7`=D8QsV`sZWn?cr;_xv>7Y2KAfFdIX!AxF8ikI@m!XEZ?f{qi+z_a7d=v!Xi+`z%q-sE z%5lrK3oGMag{)jzqfq{>InK{BhI{8Mt#AJs0)iTtxmi>(pE16dg_47TuW;xIL)Xz(8D&r8@GhSnF?#9mQSm#cX%UbxPFV z3g2t{fO)c%Y`B3=VvIxo44LB_)6NuIO20QaKcjqw&FP*P^MZw?^1EkfTAvE7b~4G| za$?t!eQ&d3E6aLSlkeH`l=9E?uI1K~3*N>xF}*{h_PxT=DckCUb88mMeqY(L zDr93`SF=xI;)|tO!38IiA5Jm5*n0W1fa8RWyd3ef-}b2`=M3^iaIh?--9T?Pmpwr@8;7Ro_jD`8zRYi|Chm z>JshGQZ61h3^=xQWz4rW(YIIZE|heuN*&o{@~-Ht8|z(zh~@G#j_y}vHau>lmb=jA zQoOU4aG`qM_nir*aWXzT?)ly5W&h4}=Hb@-&#Y6zSyt7gA7PvjpE+G#;Lnk%7woUQ zKGJ)1u%J0;&zTwBJJWlQp6|G$>b~G~w;sRmwc4dB=bd#t!;;hmt4(CiiWYzBy=>ky zccJM0!pC=uHecSkv1}Eb|pM~*Bu>DiE+ILP~Q0r&?%%nAma;cqvjz(v^ znYMFhpslHp-PA)#n+u=6W!`=%BQO26?!mg$x8BpMG@iVWoLqcnVV@dX+^5@b&s>~) z{QODFFoHZ&3LO( zL`SCa^UOKhzBv^33qJULcCl8-yGRkt&FwdP6GcK zHqYMelGy#Tjis!G!)V{h(Al!umW?~LHb368r?>f~n7CG=)_$%k&VU`N{9Z3(dDeA{ ze${$pX;q>4)$7_uty3#Q51j43X>?0ynMa1shb*n1&on1Jj5?&id;8Xo@0}Av7EQk$ z%k<&TMAjIudkM3=+irhqN&PlQ>V;(W$1~;m8?CwCYM(UM+Pv62Pzxv;@Wxv0?Jod~pZ};r&TS}_Arylm>bzOY+nP}Xt z8G0(*ch-N`K7K~h-pSmrVru0y+h@{Ehc>-R+@Uv3;bOy;Rpzw<3*yR>G??$qjuq;d zv`b6qj{m+?Rpb3r&i4IOxyKb_RcE0@)jksOBiy4@D-Z4m8nf`Rl zZasQK(Bl2S$Bg$9r!I=Jshpy_&;9H4mRxr8qOZ5NEY!SH?G&0hWoqPmZA*i9qQ^Fy z@-C5a-F&O?^1G>qKbt$Z&oC4V`>au&@L5|zs86PR{*-MGYEIp}B_h4=V$z2s^W2$= ze8&SH@V@D+niXe%Pbsl?)g$$Vhn7a%KVrXpalP)96SA{Z!@tVhS{YJ}A$L~2R{dVP%ZTl{+QHyvOcJ|znJy-u6FM63-5UdxoCUx0| zP}e1Ltx+@H+1dDn3;u9ic0coI{I<{}9qlzL7bD*5J54`Qp1iMi@vmZ@>dm_rg>LM= z%rg6*y5+3t@?qyESy+CXSvq-Ej z6tF%Qd@k7dV&#fgp*o>=9JbH9YpikS;`;VyCSvcK7}n<;naW}?^+L0e{`(hIa#Ia& zm47~RP2oSo%9QPn!eQT=Jh(Q=Y0WeUF1;utzwp+=6tQ*JY?6gfKdW7Ou&v7CMX~ka zSjNK0tYBAH%V&imns;YTJes#O-gM@Q;+YNQcfQa6Xi?e6QE*1%aI}rr(o5^+PDpWO zSIgSDYpQFlRPC}Fx6cvFjgCbYn`Q6?M0c>nrDcUBuN6NO^WOJ>NUiFQ>1i)5JY899 zoaXUeKC!aC6$%j%+{&CK?3`+M#3oXmyg?6n5zM+{d^?>Jgv&baiNyl}$JuZ;)J+og8(MA>)F zkQSZkS-7e1vjDf@;rAvw-(NO6hV-{AYB*6DdpNK2Z;N+_?(=}H8TXH_XW;C9LAxjSICx>pRPLdR;khTVcA1wY_!f@3%%( z&Y?1*v-wxct~nqdIc0B&{<4dUr&ZKeg{+&(^(@?}Cs8Y;YSND0ed=1*9$Z)?wOgX% zS$fEiCV#>9doi0<_oeaG3;n!RHZ5`49=970R|MpR?L6{p;rBM#2iG?02we7`5qnMi zmSyMt(bv#XO|0J{5GRc&ad5F z;){gFjJ-}m3wcU-Uffx?@4fTEDXX|Xb=g_;8J_I;TUdYRKZDQCT2a}USY5?yoZ%m} zI=5(dz1Pf)$&)->J!?ybxXIiZF?O4NO!0avvSV4!Ilr`p$GztlMd~Gd?|OVCD}Gk@ zv)n(v`r97Je-k~Y=Dzn}RP{v7gq3|;HuV- zJ149@-w}L7;MD8y0S{gI1-0fTi5gf7#cq^ueb0MzkF{H4*L$gJ!ME&GgL%tsvS=s?_ImPj_AWisilmb(-tPYJtuI38oKk|;huWk|JhH{l z%(j?|gq-00w)*%P6YtLw{^?sd4!>qRwXxvp>)ZpMW;`fx*ZX?p%)T2_-Y@()^^r(w zL{iYPSIHNRi+1VksJ{}|*z|1v5ylJIyN_IV?0lp<|4dx_g1w^J3(o#cD3{Qv`t-B= zrVe9`nr6j=?=xNpzSongd}euaWxyXVem1q}yEkpvu2in~!XhdlmaG-eIcE`P*7sek!c~*}C(5x8Z+= z%BCBprx|9}KHQMrayv#kH9g^@gzmaj4{e|Ow~_<%*}fmC$lVkxQNH7R;^HOqm=32c zPK*A2|BRH&jWcW_q94@SY7Cq{-pbATyZdm2fqBPl5mS+cK5>f}7SDe7Xz}*D#h))u zk2#}!WWg1_&=@^c?R@VyHy*UP@6T{5ykYuG_x6{W8;?Cal^@Z)SgPs$b^}$%{|v$P zd1@Z_V|?tA&Kp*-@$4*gU723j_S9kH_6yAh-=|-Ex#m>cKcfT$5b%d{=(| z4DacV=FCywXR&8!=L=1Bm+JSf{=#2#_VoMMMd5C-Jy))6WsQnEF2Jm?>G^xXQ}20X z&YW*Nvz$5YWW+TO!SDS}NelL-CDwGTUV4C8veH<4+f&u3c^As!r){1igwrzXkU}$hgGyjlcc^&89 z=^8)pgm1PBdVOo5Pe#Mc#gp&xB+X3?bt~4keUzi`!uRIz*Y>9oe~vOdF#de;jN&58 zAKiKzIT*_>+FgpAIfb>{(C*iC1MhWplkVNUVO*Ro@r7^7BOVEx1IH^1Y@9b2q=XyR z&1Dmuy)Cx*V!(^Ehhlzv_U@dr-d2CJT+6mp=9Mc9lO^`@sebq|oxe`$cG3Pf+Y8qe z26f-xb1HRRs>$&^Vr9uU5B-?)z4h}-FNH3zXTkS^e^2Z0P@Z>DtlP}td`8BD?`ew` z>CZPX@hbk$keK@N_Yt0Kp`CA61pE~@w|6<}A$~}XX}9;Y&uL+4>q2i;o;sp?NBQ9+ z+rt`H?>oO+=rxV^p6)cha(-5}{5@{k5?2ebcQ`$rL!e@&#ZEUZ;Td07 z1}HdB+HP8T->};8#nHDHR9#aK?xBXHswL?YOi1qxfs- zJuxwo9ocIROo|SzS#oF%lmzr?(xFU)-yip-hJA+=g5xx{6>c=l~da1 z-JkK&A^bkW`Uzo4Ju@!{7TLMPFP@>p<&#>jlP_ZWv$f#dc>&`G+miO{aooxa{(6P4 z?$gfqXDW{GIkK})LCkA;R;R?3Q-xJ4Y+f(aoqoYp?@h?Rr0vq(M`Zo^y+aGNY(!1h zU7Yc}Ff3_vlg44mDrWt)UM~Zj5<5O}mae?>WtDLI#+4;MEBod52R%AHEseRxrN89) z@|2$|@{FZ+HqNj6Z1vmc^iy5s{EBy44=np^CU++0-?+k|zfueFl(%P=N7ijtH4$x&Y&nr-rp}jm zL`SD^|6PY$&VQAA3jB{4$j#|s+)b}5YP9gx(DBF zE*1S|(fL3*x-a2B!(!t<+8@QX=j>SVz{=GBg;2ft#RI`-QU7T(&4qQGLfgHobz~of@G@_x>*Wloee5E@9PtGl!+yTlD4cR2nRg zKeK7iT*tRZ?`>uh-!2?#Zg7eFP1&@}D|f%ooh-TMc*RVwu+5t1kDRF9_)J3P)a_5r zj9$%7vwMQJeV3lKnti^+jG#q6WoI7P@qZTHyhGr#-n65eGn~S>^ivzpoOycUS6+ZF za|8z$@3IN;#T&)mR=zdfB=Tm)p31)SXC8~(HaLHKsl)uFpsD^Xr*1^?-CcP17VnD2 zTzLcLGsn};sT;)>-s4slNDBF<)T6VrHe7$jzV-!fdRsX{3?EtMg*b0fTD_7j-uu-e zZR4umjl1X9XRe4^bltdU;#;$+dgU<{@5S=8%=tS)6^B-RQ#-Y91LyuG{ft1LiX$gYDyKd^dR!t~ zUUK^MilX)DTUHjPPAjfxY!{kZbkT0;<=~yORjs( zy>WcMx7+(Y)<=cEtqi>tx^}bi&Z%A9mQ$_ETX;0j96q~wsqE>S}1DD;rc>o zLC^XNdc3FRZ`PT<=5+VV9bXlhihet*E$)#F_r2pU)ZTH)z}Vo5+{gEVHT;IxAGkiB zThYq<=Vy!7;qtj|*W*sjoywIdzQ_E9n!K@e|x1YK9f>wp4pR`^u8g<@Y=;GwN(YProV`> z((iOKm@2eOd+q5Ln~VN4B$bu&e2FZmHNEy!wW7Pws>fKn^G)X?TNcwFJsVp02ye)k zrhAw{_Op=3iOT6e1pThF%03j^$9zY_!+X#0-rjmne$UQlIo#`%{1RhMYi2EYc#gABMAUyz@boPAh*N8p zcR2m-eg1n2*XqeF)7=+*pDy-S+<3>{f9l$0rzeZpc>9{Xyniip@!bzj4BumtBy%2a zlPKce*?7aUAzd?(FZR0;-$&ga(=*e;Iu z?ASVE`;ncsPk-qPOMHL6I+pWMZp^WemG0+wviI!RRlQGjRyW^YjuNeqm4VZ*>}$~r z`Ftz##gSKrsfYMAdo#YPH6&as$hz9EICY!H47Yb}t{*frr(^tJR)~Lu(VLo>ED`?Scea+Cp3o86IsMGmgEfW|)8;YM zobEq*JH+QU-+u-tiw~EzxF01PHs3c*>K=ck(@oEP+qI9Zd+u}K{fh28pT7ApUDMVu zd%5l3MPG&8@zN{rIIsIPLuTgQrQNE09^J`&)~8dRyGT!8UbcA8shD)bt+$e&KVM>W z(8gJ-Y2Ia){3)Ar6K>1PirXy-iJ!OnTntZ4m4H>Zo@}VVkD0qZ>+G2&J7Z^YXJNnh zv^9KIM^+r)AEvW!`jr{eH6H0NasGQSuv!12_xEXr-&!8XF1oVp!8xU{6WVh$w4_7I z^&I`wqL-enuR80xgFo~4mC$XcyK>r7_B;!{c;r*OptrMLS0ghs(~FxkZcQs|(8;`d zaFQI8dHY+a1qnhyoi0b&+taq#-1>Gd@p20PG;A- z3*W4=e|Fb*PtOS1c4^&ni}>_M<$*U%Ma%qZ9sPRFaGg)Dbe?atpd~5$R&4i`t*M7> z%>Oe4HQz9mI&<)65`V?1c(!$1SJof2th#EE|MEi8Z?Ei#M=>w`o0^s>AiqD$GNXb9u#H9=*F-A?udA@dWR(?y=RfogbP1 z&bHrFYr~|z3;wH8#dw8vETyJI?$FHn;kYl`aMMTjj?9|Fj#@2lvOA{~e|61LH;lg& zST2~8oP4CZR_Ak#Ti%8P{~0zN6ra63bCrIz!qpw7GO?E1go3Mg+^_86NlnW5-d%1G zU#BGDJn_nP@AV~($(vcvC3L*o{k*6pc!IZaU7+LfGifst=8AQMRN7tM#qCh2DIw>a zo*C#|doq6ZnJY>+cs{cGx~|^-`{kO`DjLiCK3c!i;cyfDY6=(y41OA9Z?Z8-SyO#Y+lLv~H+E?RHT98Jvm zv|oCPR<(^AF>Xw{-Zp@o@_Vi)Y>W~$cA^exh79nKVgZ~B{{x9OwJWMLMKBe5K=GaXh$Ube{7 z?pSBHc|(6xr&&*AafJz=R*Gy_w`ehIc6USev4>ORY|gy?=e72)8i$JhrN#1&62JPU zsc*M^=05L2u<)%Uf&S_vI)7)pte&y%!N)wcTMzxdilx3w+8Vp6;G8Pk()bU~jmtKg z=gTf?>-ZgeiobI5DzW%ZkB;~mQTuF8uL{_+gDrZU8gJr%hG0$SGVaqS^|Sg88(o~d zvvZ3@_?GqMO=UIDSy=Zm*r}GB=ND{}Dt~Kn*U5Wdxn^|cku^#BI=L&vFQ_}U?AU(h zXq|eo-i)e@DNB1leVcASoNT{UcXEcY zLEp=2zV-!Gj)^ZsZ66BXKJvryU6NRJp~S|w<}>Bn;+@4}c9iH}E=W51GK}l=iUkU) z2R$0+tY|HJv9w8KdwGW=pXI&zS<^Q>D6@Nhgn@N`>0ib9rUub2(SID*?%!EC?OJ8< z=_8g4rI&mb+ittWKt_7U%G`Jkma5L|jt%+GShyy-&rG?L&ig4X!}V-|?bhho`^#ID zte0yXO=Y@KmtJ&`>*k@&8lt9=a;48ACoecs`dPL)M*UfE%h81CC5FehFwZ${%x(OU zO=QJh={emUe6go_C7P~8hlXeONF93`J@dg-75*k+j-923w$HRAE61>2WkIWV z^Xtn&zigC_3A~t4I#$+qPwBLkDdK|i@7x)0 zre-c}zp>WnjA3`j(qvz^8;`WsU5hxFX}whLkL%H#(+7JFa((+9Bl>%@;ISR5zaG!p z|4M1nWyNiOc3eHRD}39_T7GK5x0o>UTz2bnUxROmi~NIcx-1=;Nuy( z+!hkc7lstc=`E`l+W0JZM@%6Xwy=z$d*<`t|szECTKLsp`6 zUe`h`m6b6^1BzLHsP&vVWV~4;w|&*4ML&)l%`z2~*g1XSt4&W&f8kM`)E?*{_Hd47 z$ChPx4j%|^{WIZ{#G|FpKil4Vd@H~>P4~*O8poe?pUV$h%bZ@3-s5oOt;w_6&PAV& zUhG`AYSoXXEe=10mg&CI3tRArYu=IK3+K<2xW@XdyJ|Qoc~bZ#t8kga9#h|y*t#tF zrzUsknPtY2s@yrJqn{yr}B zOC4UOeV%fCVTLiA+9HR}3ll_yRxNTqp6Tl?_u{Q#AWTKZS#7F&YDmq3XLGBY2}2n@eFJ@TXImD;&UHaiTjEpodXZZ_YR`-`np z$cp2Od6u4XQkIY+zmB5wz5d1rO_YsYh;nKJQ44WB1&IH$*{ zyCbHW+hWJ3_m`fXYkq2U=B{N)@Xof?&ywRaqz)wROk?1Uyj7dmC=}j#%qr%XamV|m zU)Jq>;e6rs!WTwMorV7WWqWR1(O>*gK;}nB#ar?2$1}c&ZdN*%aQaaQXVB|keMzUM z+gn_4zb2sS)hX9`Mbr*-}< z`gSCcZ%1?J#Y-_!GwK6FjZPgs@cT&T3x(`W<+suGdwKF}}9XGLuhtFn9Gm-m|UX6r13a zw2k*!XMZj3IvLz(6u8K{rDrS{+OQJBp z;bD%ymv*VFC|Oa;Q`w_XQf14tuVwA2^)sjX_>0ctIJ)cYh5ZgkCGzh{p6{Ht^Rvvw z2?rEHwB8@DTQJqWv$*S(-xK!p6$^GXY>hR3_$9UX3u9Bnqrm#eZpoWR)brcZL=B z&ne|!X9l0Ncr5U1(?jpKD-PX_z5Y?YGJLPYW9OM}HtTOp<3AEz?V4j~(ycr1$mV$q zFD~Km3Hh^2LbA=W;zcR{nwpQS-aX7ZGIa@!Oiat~FAZ7Oa@y<9;<^iS&Luc6J-*`0 zXAVK0XEvgN+76$dMZ_D}e9?M2^@7@EvG`pdS&v_7VVt&Mvs&tex9b`$y5jTZ$wz*5 zNHld{>3o|+rJ36 z1g&~y&J!xtQ8=s1VtrZEoeA5n>(@oBSXbBv&606R67bDsW-G4{AZXfc_&Gx zkk9dE->1bwTn71ny*a1s{@!12)wnxnC5MYz+IC&}u7xL5bsanV}3T^UMot<}xx1$KTl$&r)|%`?bcSgo{RNBxVau zapN_9)cAIWsf5w8s@4~Gj1$iWoY~gfl)QdhebH~NN2}IvFPeF_tm9g=(7EjkzD=Dx zEnA#@#;u(2hN+1^rn^lwD>T=Bmj1y(L~~D4VN}_H{3o;e?s#iUwu*f6`Oh#pnCsTM zOP|X>^NG)p)IXvFdJ3g-vT3Wj0 zT@qV9`^-}dj|g~kOyw}h50pH&==ql2`_Jq!n11f*A%QA`q^y{8GG8T}S9*V8zSt5j zV14>%n#9jLlKNRQ?^o!3{I}?umetf1PW}c@9|zsICfk=L_bz?&t!M56t@;aZcJ>QM z{XU-3A#{17oc8QzYRCOm0^d)4Cf$9!GWpk>z~ekpa?u~(O9qrR?>w8aS~Z6I!umZM z-t3t%-Q>7NSnQnFpN>9wIsdz6%$hrF^G^QpTKeXZ_Oa#rZ5LLzr-;TpKk{hjTZ`!T zI;*F3Yj?cMzL&6n$)emU9=1Fgf6Y)cuQOS?zl1)T{Pvn5wD96oy>+kmsj}@ftnO=x zu-tKwTWI|wRRh)CuRErhY+d*M$hp<*t_i=m^>}uaJk<(6?^etCpMf)S+KW`-J;$xO zUnqs|Ic})xV>#!&p}cVVt%&#c^wZCr4|t$g&mpt9dg{&jZ|1qFrXLqNxqimwiYf64 z6PK)*r+#OqMVHX7l<-T;sk1a{t|f)kIG!su(w?y@>J`@yrMt%F@!OAV^thg}H0qdc z;k*y`XH+sOEL~xA-p-sS^vSWN6GrdCSu2fBZBOr5|9k5Fd8y^+)0f44Fxy|_`@T5H zXvWdtNwPcFxWAPtsbaaZ-00lJW|35{*8y9WdcE8+UtrFH?|S*41H@wv-Zz?K98k=$ z`g`-gGsP*)cF7*cH{W7;Veq1qyYtf1^PMgmYYc1BzFx>$CUj`ING;3zD^E<#s-&m= zXg?yIaN*^?BtDj08>6;r|1%lNooU@O%FZo}ozBN{!%$D@;%}y}-W`9q5Av*keN8o4 zP~!D@$EiF{%Y^0&yVWUYwe46jF2U zM9z92e4l-$SGj#=uR)v=f5qLRyF1TR*G=j>uCvIjH6wM(Tb}7fr$e>wE&b)1q@$Al z%<%QfTAuT>=Y9A-T`zXSRBfR-LXV@KvAS=Il3%l|+Cj^u_s2((&V=_fy4Kxn)RN^} zEH_W}y14lxOX*);_sfe`-rjRu=2g;i+Zi*~CAb~)n6%WZQC{fdJ)W4)3?IGaF73Fh zw|bA+om)>oYu>kg>bYLKT#mtL7iEI$Enf`K92mceQ+~ zT{7OK+n8rYYD?Sw>be)jsI}+J_RZZhjIMs0Uis&HEKWNl5G{~@*T7D4dd#9w`6}`p%ms-bNNT3*Xgj+kvFEK&pBG@bo;HD%skF0^MZ}( zQ&uOgRVnoSeO6I>-(T&u{_JPoMzz1@d8XGNy!1fxU$0LO`dp&E@Tx89vry=s7CJR@ zN}_75damZjb2r3iRn&J}Wc;qDBD&kyZ5dmgVCb9qNA_tiXejG7{PLxv%CutE(VBDB zWphsdK62TF^U#Y{6Nw%A77rgAz6?-PIApsyz(&pMeC6aDe^h(bdi683?+V4ssahu` z@AYbGF*wEec15#eR>S( zJs| zUgnR_b3ad~eVv;Q2OVurx)HD`V^1;9TE&LnE<3c|%sl^QibdJJONZwiaXLTEWa*w5 z>+ddXo1JT$lJ57!)~0UX^@#WRi+O*|`Pa`}_3gTo(eGEnw}K07S-4-xzY?A+IrVDz zp1@b`)kPoQ8lL{B@$_9I-XnC775wXnvpBesJ27Ihl1=MQ<;<-_h`1?>EoEQ`LtTHr!r+W&!t~ zk1|}j{`GaLBKA{UH~7A}m~gl5?}^nlw_}gWt~@(+&cVJoS*PS1;WB3FXU?~2|6DmU za^jm1X`}bCe^h^7{-l>MM`G0vTe~It){>vC`G5PxsftKn3W&ctgLBjO7pGrHwp_8< z%Jj!K`MsV_E$dl<-ihINW==4Fu(P9S`(K`=5&P0bzjR&VG5XJN;%Rh8o1KD!%$!2Q zeU%ekb}#QJa*p{f_`PS2OSMvoV&~KAf!>As@44*vO^dgEx@zA_W~cxFuSI9QFp(9_;UUC z!rU{sR>VzzExPVG({HC2B5&6`lUh-eZ|tY8arm?K&Q)c$53eNcu1#gI`7tkT-;30E zkD%Rt57$Lb{Oyoq?d!}enLEvi;aT*N)QVIN-P5XDmk0Bss_Wj8IJ$jEPSm=K5 zt-Z9mFzNJ6hnB)!9|a5w#h!jy87taRX0dmJ+3s&G73Na^5;ZGiTPx0}9^QWD&*G9c z&MGb@BZi#L{Q@D|Z&{w*xL{A5YM;#=p*!;pPDOl_i#crFxzGAkjceJQgDv?&mnJjr zU&&F>T>sW6`fB@E=|pjn)8-1^W2egl-m5L zqQ>pvj_TJPcYh!0%I7l= z)q)<9?6J?R8&v0R7R)-_9OfPQ&YW>kWvW$6oa#prjn&)s9J;ba|B;Q*tgbD!$&>9b zOU|AD)NZ+spmqF_gT6=mo%h&&*FS&ckj?j|+t(K@WC_;&BJh2tLK(mDuDAyeo7cpw z+I~Y`#%HhS!w--p-@}9Bd@9v`&Ti>x% zb4}$avEFi&SIX|k^cUY>?9BP@%X;t9aighgKEIU=KBmgU)SuC{uwLcVoVc_V{wd6v z#|_1z(|)rhMLhaodC+pnin53N}9U((xenH+rQdbLn%yJyu+Ud6MC+Kcq3$+0V_W3NQpf0$^x@fcZX3z$&sT?Z=KFU28T5lf~8eh5oUCh3g$mq9$KPw|A&FagV z)|dEJ`z6<+={n|p7rA$yVP`pA-8sYIXJgUQl9M@euAaFn5tC>*@6*gpw&BN@Ms{Vl zy1H<^-s5uqt5oWa*UlVwv(IQrZrM2dqu>w0uU^eBo2JHl zqnGYSdR^8}E!Ns-y)58i-^ZOlrgN-Lt)21Wap|mYGtKXB*}E#~;hlvItC-5ot|i{p zKXS)VT6C)PN8tvx@E=pt3)kmOza`^dFZk)jrna8%t+u~U^Su}Rsd_a$scTDiL9oD5 zZoir|ZPq&*W=#q8JD0@G?)*FL&>a3p!TMT!X${Q1r`LVHXZq<1`}U59d7pPa6WYAd_c zb;A3d(?07zOI|wHe1-Op4j$Ik=|WxFf6vGrS--@u`D&W+{l)qh+bm{uC!F2UFyX4o zy3Siut~%*!aXg%Rz}m(jIkIok#gZ`3dD+olITO6ToqKxYB4dtmg>`bVP|P2};=I({ z$4zI>?9s^Av9vK*(`s+HUoK7Y&)gl7Cw@kAv*g~_+4AJ;UHzK%>{@e1-DUIdJ$2q#v9dOFVdZ~@Sf(Anj?9a$QQQ%n8L1>9yUw8X z&gIajy+=jYJ^tZ$g!gRp@fjD^ez||-V7y0+Ql8@%Dl;#xxV-Q9G!5hU8Bh4W99{4D_B|i7kAK0hJIiF(Obo zPcQi``kudFh1;tS#lmWO+l~AxsvT=n8QQ%LvaWj3S#)N{ijLz8i(kFJP-Rf#Y?u)f zv*yR6^uYKnl`maHxvMv?7u9|LNaT}G@SJ-bXNxaRy%@`vSaV1FEo)YY72C$*I}JhK z%B6PeK7AC>awe)_>&hCQ!?Ux*Uw(TVte)yve%wT8=kDlbvYRb!B&S(??-UA2=5)Q` zp0(lI5v`Te^7XGR;#ofbr}$2f-W^K+87|2%&iis?#l7p@^9_%8@b2G~Bf0+O%*=I9 zo>@MA%eG$OuYk!r6O&_1cU~o3T(65pFSJn6y z+01+tZeZ7O%vjTHXUl5y&!Xphy2ZI1FJ^Il#=U=>@6IJI zI~d%2^!YvEyEm;rYB4UCjGx)|_q1%|+1oXbSRXQMz7==M#!BDlnb`reIo{_l88y7C zU9jwd>5Z9;%cs4H@Vm4<-e{lo;W`dC^_MF%URtnhu6$7yqOg6Zc4w?pEnCj=LjhAa z&6p~4j8){;BE^;~e-84_o~~!3c7Zc$>b#!B3x*-D7qabaPFoUoI`)q2R%Ul~;rF-H zetT7@vW3SSn&@`N`%IA8)x%QR%)Zs$C3+9?a*im39gq$2@B%=<>0ai=>`!lRBoqyCZPH z=esK#*Js$?{_(Ir<4tLl>9p-< z>~5POenwjIo5yFdiw$>{Te}y{F%(QN4-GhZ!*cFH-PrZp-3(`4)}LZ=Y@^?^J;!-w z?D4&#(fw@ia{cmvy?OgCez-e5cIm2hyQ>dvX5DGyaOuI;)7G0)s+&7APO5{pWO->+ z)!l!j=VtxATW{<3o}|3dk;A>^xjWe)QE zT^9Xg%99N@`IEgDJX0&Kyv!(a?u4=|L%APomtL!e8$NGqL~&yW4yhC7OmKGKfC$Xe&_P|FH;#7b=H0g@i~=syyC5e z*=ys8?_?M2HoSPH?ft~)_ZiFQojLP0@(k7(#5x zIBxx{$=!55=fL~u#jc0$@~8gQi(4aRXU?*_ctf{Y#)fFS&5SzV-V1g95;`__d+wa- zM`jU!4u-m(iP-qU;Kr*FP;*3{)_bCtle(Ik~m92+kQ8Qn1WVP>Zho8NBg-i8$ zYYi=RxPMH!kz=@KmB>|PONQuX*)>y|@b;w_?CypUG(GEDYdJ?2oc-`HEg zEa1rPEZr^tI6iPa+keH<gB9$kfc6}+FbYF1YGwvv5YMZ#s5 zmaKPp^)YIu_ZI&>OD}$yVaqtPqscMbWA!8Mn4M=Tmz{bbe7cpn{C3brR&KLfmqk5} zTc^t@tl_X(`Fzf?T;`2NvFe@C8P<{e3^M&6X-DcLHNWmy#wwR&s}-Usnkdll?XcL7 zBf3ZA_;xf($~_TXbSE#X@NRDM46_-|GuLd{|Eps!b60B5%GhV0+q-Ax-WFDr-s~6VnaauOq*efCX7T2N~ZH-e82(4w>T4`<0wEFba zsak(JM0LD_TCI<)u%7dy`_%7{g3!bLJlj@S?s^oP5N>bXAi2`<#2x3tN}t}_fin-E zF3|Y%<#))Ie__m``bUqQ)4CG#&i6k&c|g;0)9a4;!j9#i#r|cCkicW7q2+0 zEAnH<=>n6vmkx{HadFkUDRHm)9PiZI6%A~HyF%~J=kXF|f@lhvsA}HwoUp>dPrUON>`=O?Tkm()ObJ4d@oS) z`Iey8iIYbsa+ywztKD-(I`Z+%rfWGzGcIqu!}pQU8RStYS^#I$EmThy&^g3sslTAt0n z&)nykecUJMv)t9bWH)2;XF;Klw?wz^G5+Hx5FxF#AUDyxyy3yBRD}b%&yQ?rx>Lr& zq4lo#EuV+F^pzs+_wVjFS4dVgI5Yao{%4rcvFJea(<9mmqO$GzYYKf+Q`ir#SheoV z{ErOB4+@LkO7Gdf`MsvI#A&nRM`xx!+qd~9(*nMx^)6>C=3HHFsFL}(V}o|gk$i!t zkHShdENz$0_AP7Y^HXE&oLONI6Lx%q64U!jA<>)lLU`T1pUmSI5Zlfs=q0Ulfiqn! zT1xlN8UBjxtUD*ZE!0*BFbLbo@W<=Cx;a2$MnbTF{3=S7KcKh3WYdR|{ z@#8G#sQ|&HkDdzd{J645`h$#@cJkGVPTkxYHrH#uO=;7aIjy{yr@LCh?73ZH|GS)N zc7I%_d({S)X}&Z3GHdl5>+hU`relIHO{!1<9h|_7W_iUUtcc%C(>m>O(?pyXAZ;bdfGi1Y*P16)w zp53{&Fx0jsW)|av;N&GwI}<{`H`ne^{ldEE?E71bQe*;ty9=K0bo_g`>fRo&gVXC2 zL)+sc(w8*t>|62j@JHR<72PvF3nm}ix$};Al=Z8ig}K%|KX*pRUFN>Eqg{Eg;iB&| z_eghUNLX)>(33K0uBw-4{6(BlLnnUEWT$rKfk&?%xNN$ayaO(KS)jU~ly)KK{(C z&Ck?rD`zzQ4BmI>`bWX0X&3(PT@-j<;>VQzSEfZ>U9aPKK=44_y;-i}CqEP$*8Y8( z^5)2CsZY;5wvU!Fy^A@m@-&JwD!S6z zA?u&QmDrb`ZN#}{s{JyX4ZHL8x1P;3NsXO8)7f{Y!R3TL=V^PN1+Eect-e0r(4;y2 zZq#LAo5RoceGC=d=eG9ZTb2dt)~Y>Khx|L&c z^YHAceOHV7E85TS{g|)bIpenNgVV>J@@03;etG8B?$i7U`&VzYK3l0!JIiva(xcs< z8F*zLSWFGMpZar(U8$Z!-ktiLQ97%q>kDLRyxiHwvE~`an|sBwtLg>cGF_aOef-Q@ zMd9094xEg5AexaGweKtEWar6qp5HRs@cS$GmxfK(CrNBvmvK>KVd(qK;oo}W>oTr+ zwhQ%nsa|~hO#GyQ(Rag{4*E0l#eC-7OY=K8Q@CKU%1*Oyei1?QZtOnDtgNLK+mK*6 z>tC9$^@3uqzOT~)`l_#ZryNiCwUJ$_&}ibD7bRS)rykkrvrnP1?m36j#D|Lx|2_2d zG1J-VBZiIPZ`=jDbiY))+`AXE*ODYwhEoq4DwJTfU+= z9i_Y}g~cM}^Abf)@+{w?6|OWj_Vbt7%evPa-73Fz^!T%==6?1qZxc_%isx_9du!?> zKjYOsuJX6K({C+Jl!&c9zGq*a)FI`l^S4qCU9arz-LySaw$E$AVmo8Lhl@`(n(?l$ zdK6=!CiSpc;Dh(nh2ga`uD)2YSha8VTf<{tjm7KqjVQ6Tc|9lHe)rDyJu{zPXL;gOkfrlGP`U9|;X1WL(Yv@V{yi()+m_VEmGpFa zNm*}!SNKV}i??p>UsGB5rFUmU#KpaHcC_p_&9zvQl6pD%X5GXVhQ4t1d%}w}!yj+2 z5L`8N%B~8hrAiwoYpYe9Wa2)=cr*O-&JMi}zWIXNrEcFV6T4Axe6QusFWy}bCw&#j z4X*fTw5Kxn(akCP2f5k(H`x?Un;DY##Nl0kugg}(CsR(Y*;N*@Z_QaZ_xy^Yi%T5- zd`rB?r}b}t#6gaa>9J28n|7?9nGqoqv57_F!BV>;j)`09Ph?GVvtb*8V)U$1g%MB6s&6{|(NcIRwM4_S-Iab}qVUH|x!Bk3`Q$*gmq% z+4W7?ZQbR}3XbVhuRT3&y6XMy1-Yh~JvU>HPG$SHw|BZ8zliM36BphlWUM~4|5Dhi z2}j+!;{121>j=-2tY0XZ|LbL(LIK;2cERrZdbunU?>J^I`+QGH%k80S*^E=$yVv)9 z*vA(6PrXU@SL?Y0o^@e;^Z1u+eo**SqJTYPndX}Vm$uG)viWEKg-5|%<;E)?CQlDK zyL9=DBjrDue$3rCt-ek@adq^Z{|x6ktK=&TH_JE+?F!Mo&ChI?F#lWn*@LaiIZy0< zB$}0S+#yw{{87}Vdlt{4Z}iRW5!9|Z%g*-HyqM|OpTjm5Een=1R2<(hO;;~9|ILv_ z2d1eqvq$!>;gAY@-Pzb2%XQ_+>X+4v?2@WjVphMY&eAzD{Z@grOZv|+(+acKa8NbSdvBkiwPn)&@EO%SW}6@TS4=2P?ftV^ zV$}!P<1+)9r1r>r&6ps%?pUf|>`P;n>#Suv-KI_3^!Ve-=!GuKw`b^CmHM4ImF<%s zF)biO|Kk;w#ZzlpR=X?Q&5GcRm6&Z2J;OJAhknshHgOiY*9+A1M5o!DadgW+viQ*3 zt<`Df-gBxSt?K;1B)vg?_4m$wL3e5ulVi^aSp1n;bu3NNA=+-v@dVrHYo5O~2)p## zJ3==)YR_rb<#%RSJW@UNMC;C>)n^ZHI9@fQf$KAC9Aop(j_v0S-)+vZaXV}^l_@QK z`xcFd20Oh}x3;C7SG5;7*7x+~%8Z{^&prNV$*}I7$ngp1{<$XCn8|Jv(>ijL^AQJRl;{==T)9H#0FBad@o^#B<>E`K=db4g=mpe$Y zgqQ7`{iCB?E-kVk=Hr*fxTE*C?2Sw*ktjRU$o5iuI>&OB#6*cxjSu_R92NPL{j-0X zj51s0&8^?ta$26>N;e1>+OD?SB{TZ$;VtaK?(#gLmp9rj^V@vT&^d9v(!S*6^_1#J2lCpS}F z>ftO|C-Hgb_a2-3$ddcK(6;HCp~sCUoi~_v)#|N&%tvMkbEDM7o%14nQnlX)FtaDD zKeI@~Ymc7Ik-6s{ZGUt8$TIdQ3H|;hsT+2`i#fLF*b|N4$$|&;`M=37I9w|>U1W~8 zV|!8hQ@stx7`I#9F|grUU-7crTS+YI^5T2xX1Qn9v1MLc@$ZVygSdGYV|a3{yRN1l zbzi-1(RF#jAiKFUBu>w_p4FS5!s&H!jc@1j&gn;feC9H8e(_A1U0p}3RpEhIcY?@< zfC`oA>2nV*TsyL;QFFqbBW_uTO{b^4 z=`fiscaclYFT2=$hQ_itJ#qFkv>m%{8&(z?7DRdH{hanZUt?3$^S6SN-M4>~)9G3N zNN~Fo$HSs_iE#6CauTvfTFmxkaqgRTZR;~0SB<%^6=SWFN5$S~Agx z>ZOums@FPQmUKR)Yhl86>1_O&Y`%h}H?$A`>^b(q-B<6uv7=Gh-oyQsF=zgm@Y>%I zRQUJd!R?h{Vcv%|-d-q+5}7me?7mAA&RKi!dlnJJ;`Cl7X5*pjibwAARBf*bxx2@G z)xyO*)1;2)=P5CX&)DDDAQ5u+@h$1#t)(m8ZM~H&p1oa8DIjF&vUh1`-aPHVoK`Riy|%|I}_4wbZoVSAEWE6~+~Q@1Ocyp|eBaNaF0{dvdl{N9$d0+S%El z!5aTd^{rX>oCvqyOSi~4y!#!p_r!wRt%oz5Igd!>cU?<%SX?nRbNi%_8;9=we5+x1 zhVN(V>dkuut|-0So_{WhWzW|60$kkFZfHCAF6&*e>69LC>-zNKBQbNd-=Dw5Dk1mY z@`o??j4SIiGdCC%M*TUY>Gk&Ca<$ztd{2%T9t+XpzL*)+aPZ>7_AT-=(soSSaeC&g z6Xu};d@k#!xEO8d`+Qi|%=V6ZMdQ?aMoU*;_2n&O%-dRN^j7ZQ$J5(XA2yVoxn!%q zNbFd#+tWAIO{`6Oq-Q*yUc|1$5x7~;@{w(#Lm_ufZ}7diNyndYXRZ6#v1nR#R~zr+ zE&hU`e*=BnW!lZ&^|Rf&_UX+_8@)x3?6z$*pPJ0A z-JO`cieYQivU5pMd!9>7TY2=(lDgyqwv(mZ7c6?`hPM zF8MBI%g$*tL)YFuD-?2YZOnS^&&=~~B#C8R=ig#xuuOD*g^1IX!!whmAF<`FdCSC^ zIfb=8?Ro9g>sxYz86(zwTt722zwhmHqux0G%a5XU!yZNK`X%_i>37JN->=dxYj=N> z`Yc|P{B4K!M26F)e>WCAx1Q#6@IOPayq;7)b8(e_-gsM2`p;loU-I^x2al<3 z-y4VCzmi#8KHqj8NMd?_X2o*v0?&Eg{uP>BC(j%g@A_%&r`E-9V5h*I7yHUE!d=1U z;N)F8_Y|2cxj zkGHp++8~o;v1y%vWwm#O_&cA8tXUU#__M2Q$W(S~E#`Gh4PExf%R6apw(r(JW3HKAVb_$^`|e&=*rvVwt+vC) zOY$12zO3yZB@WDVy<715k*er6wP`xOu0wWU-{S=yBtAjcv1}mpxC~z5jmZ_T?Mw1?QZe;*j^zB%OZ- zkEG7&)6AvDPp@cse_r!_{{LGH9E?oNjP{Cr$)?+4l1}Wn74B}hSZ8xB+peaVfUKC? z>zo(9j5;G(pgbeJFe~zENtIYu?5Wa~o}#RBfm>DvYdpPhsQAo&d&Wvjqhwv{hILb~NN5J_TD+)~vC8Yf=G`-Py55VDRhoKGbkl@A@qCLHNl(8x zqmXyP)C(_TJ?mP}JWH6}vNG5)BPwdhrfzs;9i}x&>Z}b*+3U z)gT&NWv2DWcG}%}RSR9Nk0*p{xn}mI~fBh~|0~aeVEU^p$SE)Y4mQL#E5M1ud4<(=6!P87sbE zy8gm5Jg-9B%+8!@*qI__RV;qWu+V1m=8KzMmQA{IJnmfAm&c0@(sqUHC|TF{Yi>lM zRpdp{x+TgN%UP6;cFmj4w^UX*@ENaL^m4;_f&30H6t7O#(_ft3 zIJ-sgRh8X3D}yN|`_^#Ax-Yy~>vKxkTet9uNC*#j@k@K*3yDcjU0(;htbAGYdfEG8HG%0D4s@m-U$n5-wV*15 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 z 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 SG@WOrK@Yyl7~Prt|0V$Ij!WJE literal 185893 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

ki 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 diff --git a/files/water/water.material b/files/water/water.material new file mode 100644 index 0000000000..fd2589ddbc --- /dev/null +++ b/files/water/water.material @@ -0,0 +1,62 @@ +vertex_program Water/GlassVP cg +{ + source GlassVP.cg + entry_point glass_vp + profiles vs_1_1 arbvp1 + + default_params + { + param_named_auto worldViewProj worldviewproj_matrix + } +} + + +fragment_program Water/GlassFP cg +{ + source GlassFP.cg + entry_point main_ps + profiles ps_2_0 arbfp1 +} + +material Water/Compositor +{ + technique + { + pass + { + depth_check off + vertex_program_ref Water/GlassVP + { + param_named_auto timeVal time 0.25 + param_named scale float 0.1 + } + + fragment_program_ref Water/GlassFP + { + param_named tintColour float4 0 0.35 0.35 1 + } + + texture_unit RT + { + tex_coord_set 0 + tex_address_mode clamp + filtering linear linear linear + } + + texture_unit + { + texture WaterNormal1.tga 2d + tex_coord_set 1 + //tex_address_mode clamp + filtering linear linear linear + } + texture_unit + { + texture caustic_0.png 2d + tex_coord_set 2 + //tex_address_mode clamp + filtering linear linear linear + } + } + } +} From 052cc47ee92488dfa4c233ae5c30414e3ef0f00e Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 16:53:33 +0200 Subject: [PATCH 346/488] fixed waterAdded --- apps/openmw/mwrender/renderingmanager.cpp | 1 + apps/openmw/mwworld/scene.cpp | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 608ae441ba..ff4e6786ca 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -128,6 +128,7 @@ void RenderingManager::cellAdded (MWWorld::Ptr::CellStore *store) mDebugging->cellAdded(store); if (store->cell->isExterior()) mTerrainManager->cellAdded(store); + waterAdded(store); } void RenderingManager::addObject (const MWWorld::Ptr& ptr){ diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index df7d20bb60..2123b47999 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -204,7 +204,6 @@ namespace MWWorld mWorld->adjustSky(); mCellChanged = true; - mRendering.waterAdded(mCurrentCell); } //We need the ogre renderer and a scene node. @@ -257,8 +256,6 @@ namespace MWWorld mWorld->adjustSky(); mCellChanged = true; - - mRendering.waterAdded(cell); } void Scene::changeToExteriorCell (const ESM::Position& position) From 6481cf87fca7dc77cc014130f97b66bcd963533f Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 17:07:16 +0200 Subject: [PATCH 347/488] cleanup resources --- apps/openmw/mwrender/water.cpp | 5 +++++ files/CMakeLists.txt | 4 +--- files/water/Water02.jpg | Bin 232475 -> 0 bytes files/water/WaterNormal1.tga | Bin 196652 -> 0 bytes files/water/WaterNormal2.tga | Bin 0 -> 196652 bytes files/water/water.material | 2 +- files/water/waves2.dds | Bin 262272 -> 0 bytes 7 files changed, 7 insertions(+), 4 deletions(-) delete mode 100644 files/water/Water02.jpg delete mode 100644 files/water/WaterNormal1.tga create mode 100644 files/water/WaterNormal2.tga delete mode 100644 files/water/waves2.dds diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index f1d8d7550f..a6479c401d 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -169,6 +169,11 @@ Ogre::MaterialPtr Water::createMaterial() MaterialPtr mat = MaterialManager::getSingleton().create("Water", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); mat->removeAllTechniques(); + // shader technique + Technique* tech = mat->createTechnique(); + Pass* pass = tech->createPass(); + + // fallback technique without shaders // also used for minimap (because it can't have reflecting water) Technique* old = mat->createTechnique(); diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 70458a14a6..0a38ff8b50 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -4,8 +4,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/caustic_0.png "${OpenMW_BINARY_ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassFP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassFP.cg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassVP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassVP.cg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/perlinvolume.dds "${OpenMW_BINARY_DIR}/resources/water/perlinvolume.dds" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Water02.jpg "${OpenMW_BINARY_DIR}/resources/water/Water02.jpg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.compositor "${OpenMW_BINARY_DIR}/resources/water/water.compositor" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/waves2.dds "${OpenMW_BINARY_DIR}/resources/water/waves2.dds" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.material "${OpenMW_BINARY_DIR}/resources/water/water.material" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/WaterNormal1.tga "${OpenMW_BINARY_DIR}/resources/water/WaterNormal1.tga" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/WaterNormal2.tga "${OpenMW_BINARY_DIR}/resources/water/WaterNormal2.tga" COPYONLY) diff --git a/files/water/Water02.jpg b/files/water/Water02.jpg deleted file mode 100644 index b91430244629dbfbfbc5a027e198b1b3061dd0ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232475 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 SG@WOrK@Yyl7~Prt|0V$Ij!WJE diff --git a/files/water/WaterNormal1.tga b/files/water/WaterNormal1.tga deleted file mode 100644 index a9ca11b7ed0a44ddbd9d1b5cd8d699ade928c4a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196652 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

OQa_xX=LQBkt()8dQVBDyBcMb5tPfS3%1m zCZvI;HbC_P#hye)-P$2^yp#^n+z~fH8z`bC2`UjW)py~q@6yP)fiZYPn z!L~qR4ZI>9lK3&oe^3gCB!2h;b#Pe$DLOzA3W;CHI!rLx0Xet-M;M5Kv~&}6r#xgT z2W{vL1#gL!U0rFf$}5BozNHuxeye~Kar(4by6$l0J+1|9qYpGQFQDR}fA`Q9{m4+3EkxYYqp;h+%-$QCVR5;WxpEB`@7 zF=R(JC{)1#0-kM$jBrA>oTz(n3Qq%&(hQt9A>Id* zkVt`+hu}5_EF3_`bc35Q;GF`H#1A1M{a;Xj3KX``sDwBV?0u+df675y-XK{37RZqD z0g}hTQwHFy3NHLXnGPJ|kbyF2ixDgWYD4~vn*dJ+KjS8Vs{p7<$W-``^tf;7;Xm_1 z=^wi15nPHwG6J+L0(&3gB+y0M`3oUg0OUN#IVug{yaOtS!Bqe#Iv^edlb|*;C~d&o z51?8A)&v5x!OD`#G|Jm3Yf@cI{2BY=_zG!26X3c!1c z!A5~|4Y+&*?dJu}heCUikR~yN1h?2hDIcMH47+zz`TWdZ2-=hiO0nP-V&Kh9;9&%CCjwSzfa4wNQ+VQsGQfJVCVsFkXbA(U1wc^@ zQV%f-6w%;_05@I0w?ToMG@yJ9N%=p*I=+WZ_#Oty@9=>{P%Qx4&IV2VKfyDhh@ukN z<=|Wo3S?+X0M#jwMmwZP0p~1);gFOADlyqDJ$b+mWgtYfS%|CGC1YUQ50|y*jAP0kD_IFx7IvyG$bJPAS4%n6+;S>a&UP9N=Qfv48(<}hrf9fK|A!*CO{N`at){sg*5Cz z%gi8KIHtfFL37Gr zCxIGBAUA-@L+Bljphgt9%mK$ExDW$b3hw5En~RW15ajY7)Ot*V`yG@8z~KN&|B%8T zGQxqGzO{^K(2*kQm~Ie z-4o>W4_OWYY9E3(CWA^aaBT|;2S|Q|BzSP&;ZMU%SnR{&9o%38_xM1C04N!Qb3J(Q z0h|#)=?xTv;NCQ-<IL|!~B&t6SAfK zN8Ajsv7q`IWFx4@1Z~kFyB3_tLHQJNIt`?;3QwHi&K)RMg4^C82ZJ&KXmA_kcS!pG z9+v+(AmejD#uxv5_&z>ZaDjXTo@)SY-~JKS@YTQki+?@@{Rk`n>JO?b!F?rAsDiTq zC{sYRgEIoOHiRU8kjvrI&>i6N8QkcF&IN$SLVtlt(EJD}DT1d+Kv4-w8;}?Wk>Ftj zaOwiDr$uQjp{9RW-3n6-Zq$L@07_Tj+yTyOpd$YFh;7GoUfARurc zg9&%oTwn9PmmY^lc1L&_OQxdA0%g*M1=$VIo{1PSTI zl!NmfXh$m8g%B;EXo3U_MCBL%{12WPA3QTYc@})~sQBs+(F;k^peEv1|BkQz4Pb;w z|1f1xDEC6afg33KmodPcWk*gT6GH|~Jw4@C(t_6x^XrzORXwb10 zsOcYE+Q70Nb*1rCx0mnR*NApH@B zUZp}}8IsOHVF)WB!Sx`xDn}l3fDW@jY5`E<2j>M)2lF4eIfvA>fkXD}Di_sr)x@A|x2$o2(&e8*Un$@h1(G@*$>yP9y-w3nXEK z%V%f=!PSEsd!Q@;jtEdvhm`7|#P3<~$+O^#fBsj0NZH;2&%)ru4=U}yhe6B#FaD52 z4?qPzxZr{m(U49wH1Qy}F2LmyxJrdgy+Ow%K#}#QeC99k$)%9Q44 z1Pn>KkXV4Hf6$Cr7%1qFLKRZPfk<$if>IhJ0Yeh=uQ>ShB`8$E>AxHt&d?$SGSL9Z zT;T8o^;5vnij;I=;Q$TJgAfa=LJx(fEv1>Ap%G@9F~ee)e5LB2igb#O5TuF zo#3qspf!8orK+H1d+_y35CxzvC-_7HNI1Y-eGu<}+WBG7EC6ZkfYNaI3`n;Eb{i(d z{m`g~jyk4+T0t<=K+Oz@M#%UB^i&g2=K>UrkhxuW`iBHBgam~!s4)gQhyY?5B;`Yj zeN;9mYGCmNvJssAL8bbSFlZD&8aD9s|J5H<_=D>&NPYojG;nnfVnAXF(&B=&&>)NV zz{wAk>OiF{XgLIAFdx*w0C#hsXP<&y4)GnR;`O0{1cLTiKp6oRAfS{9 zs_sF3XUI?$sDuZP@q%rKOzJ^MkV`;nPzH5DLkD1$uzCcX@)6}fIGKTL0W&}e7<}vx zxOM~i9UKUt(%=WUv;ijuv~mX2g@mYwv;)6~P59~$N-B^d1)Tm7?a9vp8IUd*BvgOK zf%+F&IQn_ALJPDxGpFQz>o0<)l;C_0iOOL5yI+Bo{zBVi0q{p#+Ijkaggy0hAa(K>^MPpzr}tu!5Zm8Xtov zeo*=cRR^Fx5oD4SGD!s4JP0fNLB&2S*~2HK5Gw~jK?I(@1h<(%i3gl{p$vH9{~k60 zl3F0K32yX)$}Uji1WkE>0}z}AK&2(PH3-h&pvDip(*)54^$|FVAypgLYoLBE$TV;) zfEb{}56)Z=5zuH4B$a|P0yy;G;RXsiNT~&JB!q+cC^;E`BR*9lT|fRZJoXoaOKaDNA69k>YrY7#(P0vR@e)B->A z7eYrkA-c*z2@+Z+Kw}&fnBb6s6yTtY2FhR1R1I<)C<}l>8#0su$^zh~0=TIRE>*xm z3Q8@YrY3A%I%KK>tP-RJYz4~VC6F#eQ3FbckZ^{CBsfALB@c)MCw`D0A&CUiJ%ptb zNF0GGZb+H`JuDxR3m_wG-^233Q2;UrVg;B41s%Ae2U!iTU%+_*G6)G8fQ1AjIPrr! zPz~jOU}vpB;s`QB1d1$3BM{Ue1a*r*YZySSM9?S!DDJ>ZG{LEHB4kMadl;x!`y&k0 zAB1=cLP8?(UmmFM4~i*JrUM5xC=G)m3zS?zxd1fr0e3bm&_KGt?KE(i58f#T33&tw z9vlW40`3q&7$9GRizZOwgvBX1f-w7s7@d zlLBrx!gi8^LJYJO6jG9a4v>T$tM~_cf(N+q5ArxDb^R*`9ZwA^kznKh;6wtdTp-B< z9Ic>Q0MhmYb${|_g4E}u&G3Re1*?FdK?+Lqpe7bH7r=rG($oa00TngS5Cdt42M#Fc zK*a?pwLsGRpK_3;kn#r zl1dtA-Rei2EV_1&yvliWgXc1Bx$j z6hKo8$S!aP1QKqbU;(w4K>b9}=p`u2!`cHNaY%IosUSe14UJ_`OB+(2fb0dEk75z1 zUHr8g4G2q?dRA_ByQWGL{`AW-80+iU}oP=%*1yyaJWCkhCz;OYZcYvJG`z?L}WLy_KVg_#yAgTb!$RYA% z87Pp!xd2vRLSh!w*n{*tAXxz9Y>*egp$7^sc%2JU365V#+5l;XC4LASC1paY08p}l zjQ@i-I>AytxGw`gbQH2s6HJ0y3y`7`oGHNJ56%>zq6QSj@NxjMLje{Ypuh)ZUhvQ; zELuTv1aUBErZp`M-0TNA9-Qpq=^xsTg=7I(HvyC>Aj+UN!uPO48aA-=c_731@aa)- zI|>vIuuKGELrs7z&;n02{wbgNqkJXwb`{vND{x+h_z|3>!R-)Gf&{J521N&``2@~@ zh(a5Z!15r&R?svItyrM}4r+seG=fI6L54uG1~{BS;}{SIWMMxvc0daw!A5}$hXgEy z1dX@Dk_R+}!@?Y#r$APKBMaQzf=Pjlf=<(eHhO?&?ICMQe@=)4t*M4p1ds;gKgb*w zc#Z~^<`FRksv;pZX50*<^bhJcK_Ux-1l0nd!DMjChct&k4H9U%3M%|Tg$a1^61YAE zH73D91ojam>4F^t@;EFJLL3IKLBJIOD5AmQpu7NzN^nO5nt&nY4=Ck8%70M%0UYv> zlW-vGwc!0k5Cgp15j2qvk2{D15G1Hd0>ulYF9}K#;E03v*1>F$AgC??c?vSz3NB1Q zPKBgNu!EsF0-SU~$sW>8fV7ApSq54ZgZJoxMlT^A=>XT`;05qtV?oU`Py~fRMzKI6 zQAiaE$Wln-1UfVg8C5E#Ph)D06{N4}+aS0qSOgc9=q(0ZISh>J^k`K$Aoew;_`t zt3d{WR-{182d5m6BOy{?kAMfyA;Sfb#1HA-Lh=P<>I&NKLZmTJLP8yG0;O}vxE840 z2%gtKDuF>Ej4S=avj8})LRxE}!~;qE|H{iDW5|%w5+n%jZGmb@XkG@_eV_&&G~+{? z{h&b%usP5S1uDLvNfcanKvOTGEP|E%;MIwspaz%opvavF+4&1P5e0sG8tA@&nV{SO znT&vhGmHe;3uZ$aX&{rqy{d8;35_Pm=1s7tK;w?C?7c)J=wT z-yrE9S~G%D1=tpFb_Ur3YRy74mV?LrAbr?|PaYuj)xR7v^$D4h0OtizQ3k4%^AWQ% ze_*HKf!ZhFWC=1EROW+@F$cAQLER-#TM@Fz9}=Ws66#Y>G6tyul`Y5}a7YOQ&RL+| z9IT*#R_Kt6`Cw<+f!4o4vo@$02dRPHhyjaYXtW~QSCHTZxd9vtATHQdAidB!2$U&6 zzCcU)kP!n=LkQH!LE1rs*jfVW+5L(GjR3=n6j0mdS6l-;B}2v{Kn(zJ4h2UdD9eB& z5uO)7glIH!O@ z03H+|Dai2YM9?%SxKRf#l)y0y3m-_*1$TvS^?D%fLx|r&)jC8ksH6hb z9pI%GprQ#ph65VI|K!pB$)f^_U<&|{asen(phIMc-Ko$G%itu0C^MmH8x&}u+7KQN zu(S$F^N_7BkdzEA{6P&HP;P>jU7&UgI4VI5P^3dMGIaO_rV$)FpjIeob_uQ?%z#8a zs0;*0JvgYr0SgOo!V)vIY=J6(wWc73LsKcF-HxaxAk#+B^ba}O6dv_pEua`dWq=Yn zs7L`do55^QY6nFbB*lV)8d6+?6o66))IDIQf;<8a6Ob~fc80}|cPsE7FxbX;%)=&V%8C4Jyr z15N*+D>Wy8=7~T~f;NDWlQcM~gPKO5lmn`&K;a1%1UV8OFAx#PupwwN3v?3`_=aLo zYX>r_0}5eCK@Dnlg6l`n${+9&3sA`qnf`_ZCagIMQV;PF#Cf1x01h|E=?x%3h#w(& z0bF{6)k9bHLluCW3UMJQJ%b`0>?C-hhn59Eg$6XggLJ_PB~W`0)N}!Fvx1gLphy8t zbV4Epk_8}A;GzT4^a3RwP^Lp_P=T6WkQIrbTmWf^f;s|_#1A2nvH-|xNcsoY?;uw} z;sW9qkQAhp24^>rAgHPZMHwiMfI4EJbOLc0Bwc|EOprMs#n1s>P~i_r^N>L#a329Q zTL*3zLF#DG-~&=&1*!(B>#4nm`R~P>lw1Ja{u8 z*d?IpU2riAZ&!on=)r9pP~i{hHiD~HXxj{2uz*%;K!+e8)jim7a9s&n0Sj+DWm{-8K@&gH5FaS?pyq(;eMscOO#m@KtwCs*K!#5txd1%!21>(_)hv)z%8;RZ zNR&ZFGQo8OXg(S|I|*Wd(?7H|3sVCP7N~>4i3emgxcmo?OMu&KAU{G|@?bB6n%3YB z0yxAvAVnFpc>qcLkYXQXEJQEJr=V;Cx-S^EbqF+g3keWV$pgBk3VzKxyzvPSC6K+~ zsE3q+px}b`SwOZ!ECQuEP?7_MIk->)weTTBaF8}Ocr6NOFcTh7;C?P73xH-o;6VzW zABPt>pqWi@3W4?AAf5szY*4`tnHL6E2S~X96k?EM533`<2_Djbfjb^#6vzvpUAzCPRv7kZd`~FQA4fGyoxC0u2Fhn1B*FXkZ^&m_Wk{+z|#94xp9ukb!zg%7@kh z;Ib5yz#xGGD<422;P3?9ngKc26jCTbjyQlE9}UU{;MrAB=>+l%$dMo?fs+u(Qc&#- zN<1Kc!N;G$bpfRK0x1UXQvd}ZH0Z$L11S(d)grhx1r8I4Q(>_N@&!1-gK`0ER2kIr z1XZ}8a07V(oV5`#2y5cP7khvzba;ab{LGyR*`0J(JaB?ubE3W^m+! z{0q)*;I0igrGb(qEJr|d0TLG^3+a|ZQ!=>xgai?sM2dQ_Es#V74sEC|P>KSLE+Quw zkakekfTb%?IDp*-s*J!M0lOBIFhC+8lR<1yE`X#fNF4{6sD+Dw(oZ?4#{WBUBBT`r zIUo^2!Uu@Ju>)FT0Ja^RfWa9YR8_&NElBzY6{?^F11VP_E`$UWjD%^2x1Aul0KCH# zW^5n!nAz%5Tu8U_Ug*bs1H2Kf|Z0%$e|9Cy%lci>78nn$2&K)Ds95$0@A z$b(Z+9<(e1m8+mm4O~5B`V!no0|hT=a0z;W9XLsV%O!C09#kknnxoLh(nL_-0aPJE z=BGfx0v*x)H?aZvUWp$IXFyIG2M01D3qYEa3Dhy2`Hz76C|W_3ic^9(4fH%Zs36f1eWB$2_8~VfZ`X-MMN&d zVW83y64Wr)!eb4>09y)iKdj^jO?rZ(2BZ;`{=uzEP>e$&8r*6Hxdf81Awy^2JtI)3 zBBc{(c4jg*|A2@-5L$fwYt1BVjScc74m1qH}c;Gzu7fJP0-Q(!MZ{Q^;piv$M|C^3Vp z5=fvyxu9eZDN?{L1Q#;kLKVb?Mgc@SWD*S&=8&Rf-e>V84fwC6Fj^RPN)sw zwRw=Wsi5J7UkgFq2T*W@D zEG>b99b`B(nL)Aus3HI-U}z!-xfAR!2m_qQK`{bv=!KLi$;t#1B&g ziF7ClO7Nfr49>ZrA|1YR2HM5T1D9G5t3f0vy&?M!#0I59kRgzY0FwA2JNv-x0Z_>Q znb`nI`Cm6QeBIFTWy6He>!*KPG2{D6&^>_AbM}xcXh>ZTnQnkiih<$+oQy$sAsh@2 zH;^+x&I5-4CIcQ>ASt*P;0z31kU$101_d&5dH|KSNa%s@ zSpW@Ifb0TKQNho1gA_RbIzV+U;+A1hQxg;mkohuj%756GRM zj0OsGXyAiA1xfj6Bt$WKT)+xRaMA+hAXvK*k_(`z4jM|JaDc=Mhy*o{k%6gS&fu8L0qtpz_Osxcu2ZJ9gqi2 z;DU-TNFoOhY=X=O*@aX)fSd%16i^s~y0M_P4SZ1c|>>6S<#Cf1B0L_@- zya~#fP!A$30#&qO0*CySV^dMSm;5y z5C=oT5GDmG(jk!umc=w290-um03}yQAp=fP5J8aR5y=VMYlC#sA%1~thr1Ij0xI?) zmuvi32)eiW`^tO>`m!M(E&YGm-VVtE;0uvKjUwo%9kikZkGO)bEJU892HOt0nF3O_ zK*s1G6Z8-^C`=%WyFeKMmfk=a78=ed#XBr;K$#lc$N|fOTX&Gq0||oC8z{;^RRB^t zho*n%TrETal!WVoMF+@LkT8VXh~y-Y?J#jjFoJvsZaqQ{gn@8Dkq8-O0xjDS@fwB^0i~^oKAkF|43*c}7mq^eU z0r?Bo>V_-B#Xy84By2$qMTl!bWi_;_1xtaW5|qWjX$I6C^sk_Fex;GQf*8Jq+a<9}wBe_N6MV`2KY6(9sj|BzbX>juO%B9I0oqzXU} zG+2a!YIe}*I%G>Yc!(I3Y(Q-`cmRR}1fl>G4qz^b0S;9#0~{Ji;R&g^z~wxw9Re;_ zLD2ze+JT}8TvLD?04ZI;T`g#ef>jx~xDZ`PHiArs2R?)Wjw#5P6<8MRNLajp_A^2X zTjUZ6RQ^EHKZHbWWx=ciSHut(g3N?^7TjEf#11GIz!EV0CKpge3|aF4Zo`0L9OO<= zMur}i@}nGjbo|c=ao|P*Xvq-d8uV`q7C7B=hXyG)e}R%Nqdz)4U}fvJQP z2*@NTsY5QBgp?#Ol~8fW?Y;2y4`~H`UzrbKU|ieX@qOh4$Pu;BVT2CofH|lTgC#sr zDF=yhknh0h7CMFu@;f9|fJlg5uo@fz0#OeN7I0|88Q?Sn3tngzfS2}QXMoj1w4;)+ ztcso&V5Z^J2p%s*m4(L$s0xM@N6^L(D84}Bkcgmw4J(1t7^uw&>Mv1mbr{yo1s( zSP+trAXgoMV*yeSLHlAqR)X51kntQyXZH8Z36KUSXtD-;tNV}gupbQ|^s6HdG;jxM zg@PKNpuxHs3xCW2T`LT2se+bDf=+q?xeeq^q!0r;23$0OJPUOm;jlt70j?OH3&0`} zUqg}sBve5m0G?|GF(7?gNJc|*1Nih9kdGiEv|ueD7lLyNxH$((|40l_F#=Bf$THY!EEg5A0!1SKj9>bcI3E#wK{Mr zKvs;#M#*#_OCb>fDv_WqQthoD{zsHj9~9gz`wh^RqW0giW2bc4eR6mDP}!F^lgln=EIqyQ1@ zkP&$BQ67*K0@4c(Tcnf^S|1AzWKe2{D}aPHq#Xs{SMqH^Jm}nJ@CGYzbqR?Gv@8QE zKtOALW`YLLAXxxam;8F<|bS_+3a4@82?UeI_2N=pEq@}UfHXuw(;ph5$h?7=N4 zQ2P*)Yd~cYG-S{cDjqHpza9aoz*MB77bAHClSQj8QzSh=ub2N84-Ww0Oxhc?(oXh?!Bf`lhH%0LY#a1jbh zU?2v#(g(HlKnoH;T|aPKz;Y`%JVC`Zq(A^A6>vfVB_Xg~AoIb46~8B>{hSc@V@BMs znQ8DE98`%z{En0jK@ke}JJ?Lv}9ma08)7ZO~9Zg2dIGx4h>NH0ecO^ zfTnzSgAisHCVkwDh=i0X@G2FwfCM}_3rf}CWDm^+zZQbh zKcs^GJu@HD5Q6jqz+GUFMo8fg>dAuJ^N@BaIO;*yyZ@X3x-<&94|4#- zYkw!^{hA3%|B&5Pkn|5P!9XQ8Xw(bhR0s)jFvKzcIzUTJeog?jB;nUd{{wH>2Rj?2 z5|#x(ZUzg&#$I5~fGGeO4hvprs)kfjpnM7r7Enrt2P}*MQUmcFOax6m%uJB^5C=fA z7}yIaf=IHUs7K;LJpxM`Am@Q13mnv-Q9F3ZgZen2%~KG)kV+7o_(9_UAeT%8rESQl zH8?$k(mZ%p1$0F_INgF2fcLY27~sYyXs16UULbca!}18Ia06wWnKL2jA2OKpbKwNA zflyuOTW&!`6XHDDR|%x9RA=CgZLd9AP{e&k)V(P zmzfatFjf|WINm{$VK}oLpfQ4W!TpB^yxaf#xM)&IXllkaZ@ID1a=uf@J}SgCQhz zd=eJOAU7ZkMC1inEr8^APznc6#DIbb)PsXo#1L^%O#~m~f|OBU5|LTJgZbcG2DKC% zm>`QV1;J7%i61Ni@dAVd8v=12sAK>sMs&oW15ltW0P`s*h(P@#s3SogF-WS0kl>OW zG?)oaw2)i?YUlh~2x`MXl0CTj0qS3XLI9E!!G464Z;JIl&GM&6_Oyq`4Kb}12!B~#el}^z>Oc!5b=aGc;W}SALKlc72r`F zFawlfcth@F4}Hh7d>=i^pLzSx}=u?t}ypl!WJ2u-~Dr1#oIdX2Wv< zs2Bvx!bPAAuy#-gptu2H9mIK1OF>?SN|i&R8!iHiM~G3#>OmzWSTTqJixg1ehlCH< z1Xxl54fsHlG$iFCk&yHc8k`5`0!SVKDFzjTkaP&$<_u3KptJ!FDA4{6NEQH%yLS_%SM?)#@4bTtfQM>(wU2e1Buq)b>ifbun{j|rcG2PI&5tbvmg zNCfOnP_Q5pKR9iG!wn=3Dd@nl&;aVVA&*Og?Sgs}l(j)C%E0LpITj!>1rAA=UeMAP zP-z2d|3fYXfYt(t?l8z|P!NH~A)&T|o62B!g7%d|c2_~R*8Txseg}$8NFaboP~rzQ zw4iHjpniw@4pc!vZ9%?50`>j~h~q)ZAgKaw2#5>zK0E*s3~&JpPSv0o2Q$Fw0apHl z%Qt8`2gfyd`WReIKuUg)$01c7(hw`cd~hEG8YW<$A~^;*6Sh&j+$gRFyv zOf-XH1iWSm)ExtR88ns%&N!gn3Ml_VigbA5hjY==1(X;-%_?va1ZIFl zpyq?Z7VIj}C=(>up$q=OD^I{CfVLEY%1O|H$)I?I9JB&$|3iAgpksbPMu7ta?tKsg zl&PT!0JK2>8h7B(0HtJb2*Uy#6jP9-4odm3v;ppMz{`11c!F(#1P+9RXap}L08gZX z@*Ri)k%ejjTMg@>fKnjHU!Z0`>~aK9`447;87N&a(D)m;X9^7vXe|TE0>3)qKq()x zHy^yf2At-R=S-n%RG{MES^z1vKpY9mn~+hppA$f%%8*etSP=m!CBT6INo>#ngy_Xi zf-@<&BLnKugBhU24`+b3-hdJhxbY7enggc<(8^Lsj6lnO@IWifC2+gIjsZCX%m9Zc zDDQ(rK=BR^D2QTk>II2|xu9eW5`j1mtPGSg!LbZY`JgldE;hlkAjKe;fW{<24H8KD z2MsTPyaP?@Adi5XG?2UuaX;7`kl`=}sAhq&A>yD!3rZN^A`aZjf>sA0b3ic;3VDzg z@ID=IE@%L+atB@f2RY*xbeuxROmO&sx|txW!Sh^@+zn38V7p*b=b)&EM75=3qS zfdU^CR$yhIlnG53AibdW4=8^@?rQ7+EfE3d7m#{zK!KOXpsq^+Z@PizfU=Y2KIgyaJ76fGp5|qY3WdbCPL0Z4y6ap$g z!3?Oq;8+7Cc$f#F;-K^fjeU^AKqVEtX9u<&97mwE0WOOm3{ZH2oCj{zgBj59hZ+v9 zI-%mQ=!S4X;RY^{!3`BQpAB;o=~rWyJ<)%0Te_~Pa%>Jq@V+t z1|Gl!F+k}A>=C%vz(pLimkq4~KvP-}uYsZrWi@y~5OkLJ}Nw z;J`0qWg=HYb7?J0Y4t;EEV*8YsJgVi2?@0pvkY$b-8H@SQA><$~a) z!k|@%;MI~?R@#Ge0cc|mtmy?xFd);w4GhpoGN>8_jje&$;9IsqkpfNs;9?dQGGO1K zhaNZ(K>h-m2`()`DIdIS1H=FokDz#g1R5lfK$9^fctN=v7Tusc1@bsN=)mb5T9ZO! z0i*^b0x}AmXseqmV^ZYJ10pi&Xmvjc@ZB)C8x1m|>+^AJa@L+5Bfs~R9~hB_Fo5tRNR zcR<5iO`s|R6v&V&38kn384j`q$+e(`MxYiE)ES@(6eWrw-T_4rBz9mV%u~olLD*mq zf{GE4BT<76REWXc0FG90d_e;fH8De4L?9BfMG-vu0j?QAEo4aI0c9L;9Rc4!2iZdh zOW~lz4{hzhYCZ7cc~CzHx_t(mzd-c}$iX1zK@KT`ccvh90X+SK!U4Pz70du7a&VkN zJdPm2K7yqaQ1bxP69hFCKusV}yg)-6nvcL|(t?&#g6Ey#2XRB=8Z^QKaR4OfK5joB=NUA!dTY1e{qw3~(NSH) zc+e~`NZEv$nCTzVH-Xf%ATz-^2?2Sjga$aMFAQqTK)A5<4{CdW2H&8D zfUE{pOpx{r=qz8z?ji6-OUR}|;E5lU?7_7FXgm#4 zXF*7CnFb0IPznU4aF8<)VFF5Q;P?eeflGU6QyDTD3X=jAk09@WuV)3fV?hgsL17MB z!whu{lF6W028A1BWfz!)Bv()vf|CuBVvrj^B?GMI1+f&O9%Kk|0f?0HAqqew*gGIy z;E)F=Z*bucPA4FfL4^jSb(9C;LJCPp7J#rJK?JU?K;;$4G)OFiPrZY4LC%I`NwB3L z+d)MlIGuxU8Td03G&_kj9R|u5kbngxZ19jBj`R;Ib3kgKbpg~&NC-g65RmN zj0I2*2 zmGI#32it-$0o0WM6_}9ygOD4z;Fq?5s{lwj4^H`D_dwhL3S?N@43rn3xu6_!S`H`+ zG+>+=4oUp*CJ-pefl@fsK(NCgY=~drvl5UZ2r}IRi3_mpp!5$rWee0B0tGnu+!Ao& z0aeGapaZp7pottb5(0}v2pe3WL1iIqm`mVAE5tn@OJPYJ5`YlbVkbc<5aK&f#KDaM zD~3icys(0nY={yPVeLJ*Bf*IlGA{sGUj$hc z1e;j{84K|Um_!*hf+Q`FEufkgRNI0>9vpPw`~ubjDn$|Q1Q(3pz=u}>UnHVTrg!|y&&g-ig9qYj*^fd4JSwk7E}d5+VhxM0Mu3ltwIN% zYy&!5094w;x6Xmfe^8|W?g)V53p5=t5maM>!vWMF1f>U1+XG@FD4T#Y5$No6(3xrA zL+T*6ra}v6P-y_N4qTvt0v}=m$nPjY1WGpGBnMjf1c`3Qj6c|Fa9n_U8KCwI$P1uA zhO-f&2dXzAfd(-U6j@*sK&2lz4S-`4lnbE22#yYrGB5+A3zE9PjsbHafe#9BkTOsK z2o?c(1c?Dr4-$k_aNrgTsyD%b1}mwc=^x1iumeC=fD8ePL(GJ%(E`NYnIq>7rzzmR=L573e4{{->$qH%}gL;MFVTuljGVmZXthEUVI!Gr1u~P#a z6kxA`^DI0KgB%9yPeIurPl4To2uY|rK?*>T2#Py!{RkaV2^`x zAGihwc>x?gU^jrg4^j-C4u-6S0BsuwUvm!<2e(*YITVx>;io--H{(OoFyzWJ$e9U{ zj03q;0#X`)OJneOBeb*x=MHe!0DM{t=y*ElaV}}F6YRmoGB_823Tl{BVTBvW`^ao? z+5i=9pc{lC=^xbWhZjWf#E({?fT9mp2EsBXIB9`%0cgkty37W=q5yO}8g$JzEF=+u zi3n0~WI>O!hQ=T`5<%$)8hsGOXe4ad5Rz^|&VVU^iy)W(P(iR7P~?Kc7M$e3`5j!6 zgVjLiLqP_@!VS9L8J6}y5e*)@hJ-UXYk*t}Ill$uNAT7>Pyq;P#evf;_zV-!+6+jL zf^7$R6I|nfDleGB;G;u`EC3EYa6tjG1r#PQhan4s9S0V4gw zs{j}S>Tyu@3bGF39gt5^y$?CI6jJy@4$py|9RZs40QYA*klN?a+y@CdP?`tl6wn9~ zWI(k8dfFQ(3t(nIu+@-}B1p=IoV^A)Fd1^AD}19XwD1Rc8R}V(<59Ta^xptV{C_$S zYw$o;gQ5dmSV5u*l;A;~AaHF6DY8Ie0tr=6fWr$7a0v`sX#?8#0V)3>?Eyrbg3U*D zAt>*F5&$?0fEY+24+?zbhBw?7AT{8O17m<30}eNc+rVCidJ~!pAZ-{}sz6TpP%U67 zkORQ2P*4hi1Upif9~`Z);t15gfSq&%DpVnNe}Ezy)KCP~#mH<>VF;>2K|u-%LvS91 zdI98Gu#ikfV88y8IpOy4Rv@pAUp`ILBP7;0SFo&0Eaxp7vRJX zN}R9=1=$7G2+7o-ybPWT2C0E)0h5sQ52^xSXE1`BD4G5(dOx2nnw4!JS0pk{>*v4T>gk6hP85>~JSoK@CnSAiqFb8lb^O$dnl<3qax# zPJ%NLICFtYMW`b|@dfoYI5B{n2a*EW3oaz#40w!#v_O(NsA&Pxg%E+IB5*-vNp(GxKBY0aJL#3+Mw}O@W>LhRRB-hP(vWTMk3(> z0x}A09fX0U-NL?4TF{IS*8-K%~Ga9NLY7v>_oO59wutWubWi$?+hg zKwgFw4v>rt@hQkyNJ<806R0v!AcMjLl%(NR0AwTw90-tP577%|gRB6RE%4L=Vt{r) zgOAMt&B%jWLEzK*Kt2M+1t?O$i67js2aR_@7?6$IkmW$25*QLwAOk@m4@!#Q5Ca8W zIcN>--@J*S%i_}){zzX4Z}WhZfwVwIV_+H~BG9@6>SkzYK(aa5E>P>MJPp(V2YDHk z@j(R|Wb71@N+&{6KBzE+$aTyElM#98*c|kC3uDiq8^z9g(t*(P@AM2 zmhzztaMVD<4H~(iMh=PySPi(X3+lx{(?7(6AQBwKphN{WACmatQ4EPbP_Y1-!b1rh zkX}fKB&tEl7fUPs5C)gm-NK)C=S2#Nx5 z$_H<+L!^Aj`48a1cF@2(sPKnOwSY_jRkEO9GQSTU7zef75S@2WaDfa2DMR!M;j6_Ujd=(Osv5xU z6R_dnEC32R@RSoM1}Q@@AZ`GWpy&WMfj|t9^T0kus6>Pt$OLF(9-MR`u>fxR!lXd1 zg_r|M*x=RTH4rzF=!qAl8A?FgR2}xd2@9fMNl% zXdKk|DTj^ugQpcx0v6_LP&C2nH4q!*U$Emregp?KsCIy+f5;TZ@BB1K{somD@NpGT zM8J22fQlW+EDvN4CS)EHQvQH-fkFT@8wd(L5F6??kV`=GVvzLzdje>|61@BeIS(8u zm>~%%0l*;-ax+9Fyx0eoU66tWQGy|qK@>w=1t%f30Hp8-SqD#$5C(Wg31TTI(m{a< zN;9A+09A;{hC_V^izbjVxJHm(P$GdOY_JsAgP@`Sl$D@*A%O!^44R;arGL=q6DVzf z0w0wA{~^_(kZ=Qs3AjK8r+=smA-+H&A6KE~~IThqWPyz;D z+68haND$^7P>F;R6yV^6%^iaR4XJbmw=qD$-jN6M5xB~REEET&Mo^9emC~?cAL3?s zR|`>-mV*`$Le}{p_P?V$2I4S~nIJzx8iC+46Pj9Jbpc2g?luSmlxRU27UURku7uQ0 zkaikm@iRQ}L*_A|TW`Q!V^HWpMsGlENN_s}l*K?zGH|eiavwPE5EDRPE=U}#06MCS zC2@iRAL1{N8c1k^ltGd`%y%$D;3^>uP*8xiKpCKDg_Sd)n1!VlxHwc0G_(szx)2g# z8WIW9h+92of`N!Y%V(%YaCHER4p2J{k_$kq^O&o*53e=JZH6$Qq z@6QPfK@}pz+3+*~D(Ar!C^!LwdTa&Y?xv^)T^`wx=xLA$>v%mf(=>L7POtb+syBm_Wt8I}t`;Rfn_f#MNT5y0IK zszJc91JMOa+b~@qkHZ2A#0DixNH~MM2@Xt9ngQi*Y()XoF`%Rc)dkW5HV|qTm<=%* zN`hSiDXT$>p(Qya4PYa|CV-P7B>lh=IViqBB4FQv7?466Y$l31pl}1Z5S((5VgW1; z8uo!U7a@ZZ$Rwzt1y29qh8D>E;M|011(FD~u>s3pkn|7EW#DENJZ*qeJ|xhfu7!I9 z6qVq1FW80P@d{8Ck5CK>TX52XW&udi3M%2jH48M6BTnIi9HR;@^Fa&Yz$+p^vJeI+ zgMizsAbTf*MqnVPeL@l;DDy&^0dNwwfD_)ufTUjdNE$fBLYjZj(17g9fec0=laML^ zR#1RL2|T0&+V=!r$MtLGOvs=dxN8ia%A5!dE^xIA@-Kt|BEh*8p7XMPz8kp*i2~Y1WGfYm;%K+JmJ9{0IrW9)fp&HfzlYL@`Xe(h(tFT zt`Rh;3Qn%b3?x~EMsV!_;leTwOe0(`++lDAl2K4cLPWrQC~(Swjv;`GDNxf9y14^6 z@guPzxfPrT5s45f%|i?ak>C^y8gd6+>xoo0LTYwMR6Jz-u8uBH)t0111iV zf{d(!QU$bGJ`tY$V8ddd5+34gNJj&bhT-cOz^xZ(>m59X08$Sx+d&8L&P;<`cn8r4 zCqcml8e{+^8%RP0lb|*XB=tf%!jNzS+k!MA2M!9bvmr$U!VrjF2nj9RKv@73L7*^% zwjm+9P+AL+EPzZx)I)O$*hY{Dn1NjQgFFImFM$NXaR>GYVpS@VJ0Z@1r&TxuA`a?l zqO>%?kpjw15KBQl1?YZlkTOt(1vLT8g=TZOBSD!LGUfv=LP5y}mi|FmprZjaUj~|m z0fjkeiw9D&2T8%WuuKO_|6o6YTm?y@5VwH~M#v6aNOZ#v1OTNC__=oA(h{0NphX|J z-~#6ea27x^91^e~i@;XE`~`9b{9YkYe1Q}HzdT3^hqrJ*g*T=VNs(|u5 zkk`QNC{Xzi-sl9%0^sZb4l(fNL`WAHoJ1j^4RI30rx4$PlP+kO5fZ$L1G-7 zJV3jl|I7p}RsrvZh8&Rr$^u9c3N6{-lZGHO!A%Z`MaU$?8KA@iyLuQhH2^8w!R;Jq zYaiM|2IUSU5y+?}D3B5D6VU7cxIYW=I4JSVgrs@saa-VH4L~mcGZT7<4cKd-bPn+a zEUkk41zwy3Qih!VA*~%y%Me^tg5w30k>ODWX#s+R6x57|o^%1~|3dQ@#3FF}3X%&z zl_R3<0ZwutS#V^5;uL(bEZ9e&^aC;KILAc;? zesH`%(?8_+5eNy6aZnck+Z(UgRr3_NF%6N09A#s-Vi8Fg2z!oX#m^;2RCCtjsZIrnxtV_ z0F>t8jeoG)z^M!Beo!kNT=5~&KP0DsD?3;z1ZpjVodF�l5w2FpxQ*@(mQ`;Bp&b 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

8TxP&x#~1*jT=l&Fv)9mtR-*jSJW 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 Cxy8Z& From be4af711af3ee7668110b7d838c275432b969bfb Mon Sep 17 00:00:00 2001 From: gugus Date: Tue, 3 Apr 2012 17:30:19 +0200 Subject: [PATCH 348/488] NPC rank was not loaded. Not sure if it's the right way, but it seems to work. --- apps/openmw/mwclass/npc.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index 83a94d27d1..b98df79ef1 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -53,9 +53,14 @@ namespace MWClass // NPC stats if (!ref->base->faction.empty()) { - // TODO research how initial rank is stored. The information in loadnpc.hpp are at - // best very unclear. - data->mNpcStats.mFactionRank[ref->base->faction] = 0; + if(ref->base->npdt52.gold != -10) + { + data->mNpcStats.mFactionRank[ref->base->faction] = ref->base->npdt52.rank; + } + else + { + data->mNpcStats.mFactionRank[ref->base->faction] = ref->base->npdt52.rank; + } } for (int i=0; i<27; ++i) @@ -281,7 +286,7 @@ namespace MWClass void Npc::registerSelf() { boost::shared_ptr instance (new Npc); - + std::cout << "class npc:" << typeid (ESM::NPC).name(); registerClass (typeid (ESM::NPC).name(), instance); } } From a268b89239742ce05f164f0706c8c765aa01ab6e Mon Sep 17 00:00:00 2001 From: gugus Date: Tue, 3 Apr 2012 17:31:41 +0200 Subject: [PATCH 349/488] changed the way NPC faction is checked. Should be the same way for the player. --- apps/openmw/mwdialogue/dialoguemanager.cpp | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index 50549f4a55..1e6faf2924 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -39,6 +39,9 @@ #include "../mwscript/interpretercontext.hpp" #include +#include "../mwclass/npc.hpp" +#include "../mwmechanics/npcstats.hpp" + namespace { std::string toLower (const std::string& name) @@ -474,22 +477,18 @@ namespace MWDialogue //NPC faction if (!info.npcFaction.empty()) { - ESMS::LiveCellRef *cellRef = actor.get(); - - if (!cellRef) - return false; - - if (toLower (info.npcFaction)!=toLower (cellRef->base->faction)) - return false; - - //check NPC rank - if(cellRef->base->npdt52.gold != -10) + //MWWorld::Class npcClass = MWWorld::Class::get(actor); + MWMechanics::NpcStats stats = MWWorld::Class::get(actor).getNpcStats(actor); + std::map::iterator it = stats.mFactionRank.find(info.npcFaction); + if(it!=stats.mFactionRank.end()) { - if(cellRef->base->npdt52.rank < info.data.rank) return false; + //check rank + if(it->second < info.data.rank) return false; } else { - if(cellRef->base->npdt12.rank < info.data.rank) return false; + //not in the faction + return false; } } From fe63f2b2aaf0873fa57c8ae766776c5566da1181 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 19:10:02 +0200 Subject: [PATCH 350/488] first reflection test; removed the refraction render (we'll have it for free using MRT and deferred water rendering) --- apps/openmw/mwrender/water.cpp | 65 ++++++++++++---------------------- apps/openmw/mwrender/water.hpp | 1 - files/CMakeLists.txt | 1 + files/settings-default.cfg | 2 -- files/water/water.material | 61 +++++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 46 deletions(-) diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index a6479c401d..bf40c95679 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -9,7 +9,7 @@ namespace MWRender Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), mIsUnderwater(false), mReflectDistance(0), mVisibilityFlags(0), mOldCameraFarClip(0), - mReflectionTarget(0), mRefractionTarget(0), mActive(1) + mReflectionTarget(0), mActive(1) { try { @@ -28,8 +28,6 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mWater = mSceneManager->createEntity("water"); mWater->setVisibilityFlags(RV_Water); - mWater->setMaterial(createMaterial()); - mVisibilityFlags = RV_Terrain * Settings::Manager::getBool("reflect terrain", "Water") + RV_Statics * Settings::Manager::getBool("reflect statics", "Water") + RV_StaticsSmall * Settings::Manager::getBool("reflect small statics", "Water") @@ -48,33 +46,31 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : // Create rendertargets for reflection and refraction int rttsize = Settings::Manager::getInt("rtt size", "Water"); - for (unsigned int i = 0; i < 2; ++i) - { - if (i==0 && !Settings::Manager::getBool("reflection", "Water")) continue; - if (i==1 && !Settings::Manager::getBool("refraction", "Water")) continue; - TexturePtr tex = TextureManager::getSingleton().createManual(i == 0 ? "WaterReflection" : "WaterRefraction", - ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_R8G8B8, TU_RENDERTARGET); + if (Settings::Manager::getBool("reflection", "Water")) + { + TexturePtr tex = TextureManager::getSingleton().createManual("WaterReflection", + ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_R8G8B8, TU_RENDERTARGET); - RenderTarget* rtt = tex->getBuffer()->getRenderTarget(); - Viewport* vp = rtt->addViewport(mCamera); - vp->setOverlaysEnabled(false); - vp->setBackgroundColour(ColourValue(0.8f, 0.9f, 1.0f)); - vp->setShadowsEnabled(false); - vp->setVisibilityMask( (i == 0) ? mVisibilityFlags : RV_All); - rtt->addListener(this); + RenderTarget* rtt = tex->getBuffer()->getRenderTarget(); + Viewport* vp = rtt->addViewport(mCamera); + vp->setOverlaysEnabled(false); + vp->setBackgroundColour(ColourValue(0.8f, 0.9f, 1.0f)); + vp->setShadowsEnabled(false); + vp->setVisibilityMask( mVisibilityFlags ); + rtt->addListener(this); rtt->setActive(true); - if (i == 0) mReflectionTarget = rtt; - else mRefractionTarget = rtt; - } + mReflectionTarget = rtt; + } + + mWater->setMaterial(createMaterial()); } void Water::setActive(bool active) { mActive = active; if (mReflectionTarget) mReflectionTarget->setActive(active); - if (mRefractionTarget) mRefractionTarget->setActive(active); mWater->setVisible(active); } @@ -146,8 +142,8 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) if (evt.source == mReflectionTarget) { - mCamera->enableCustomNearClipPlane(mWaterPlane); - mCamera->enableReflection(Plane(Vector3::UNIT_Y, mWaterNode->_getDerivedPosition().y)); + mCamera->enableCustomNearClipPlane(Plane(Vector3::UNIT_Y, mTop)); + mCamera->enableReflection(Plane(Vector3::UNIT_Y, mTop)); } } @@ -166,33 +162,16 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) Ogre::MaterialPtr Water::createMaterial() { - MaterialPtr mat = MaterialManager::getSingleton().create("Water", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); - mat->removeAllTechniques(); + MaterialPtr mat = MaterialManager::getSingleton().getByName("Water"); - // shader technique - Technique* tech = mat->createTechnique(); - Pass* pass = tech->createPass(); - - - // fallback technique without shaders - // also used for minimap (because it can't have reflecting water) - Technique* old = mat->createTechnique(); - old->setSchemeName("Map"); - Pass* oldpass = old->createPass(); - oldpass->setSceneBlending(SBT_TRANSPARENT_ALPHA); - oldpass->setDepthWriteEnabled(false); - oldpass->setDiffuse(0,0,0,1); - oldpass->setSelfIllumination(0.6, 0.7, 1.0); - oldpass->setAmbient(0,0,0); - TextureUnitState* oldtus = oldpass->createTextureUnitState(); + // these have to be set in code std::string textureNames[32]; for (int i=0; i<32; ++i) { textureNames[i] = "textures\\water\\water" + StringConverter::toString(i, 2, '0') + ".dds"; } - oldtus->setAnimatedTextureName(textureNames, 32, 2); - oldtus->setTextureScale(0.1, 0.1); - oldtus->setAlphaOperation(LBX_SOURCE1, LBS_MANUAL, LBS_CURRENT, 0.7); + mat->getTechnique(1)->getPass(0)->getTextureUnitState(0)->setAnimatedTextureName(textureNames, 32, 2); + return mat; } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index c4d2189ff6..61519dbb97 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -33,7 +33,6 @@ namespace MWRender { Ogre::MaterialPtr createMaterial(); Ogre::RenderTarget* mReflectionTarget; - Ogre::RenderTarget* mRefractionTarget; int mVisibilityFlags; int mReflectDistance; diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 0a38ff8b50..56c3db8627 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -7,3 +7,4 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/perlinvolume.dds "${OpenMW_BINA configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.compositor "${OpenMW_BINARY_DIR}/resources/water/water.compositor" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.material "${OpenMW_BINARY_DIR}/resources/water/water.material" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/WaterNormal2.tga "${OpenMW_BINARY_DIR}/resources/water/WaterNormal2.tga" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.cg "${OpenMW_BINARY_DIR}/resources/water/water.cg" COPYONLY) diff --git a/files/settings-default.cfg b/files/settings-default.cfg index d9c908883d..914b4019d6 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -46,8 +46,6 @@ num lights = 8 reflection = false -refraction = false - rtt size = 256 # 0 unlimited diff --git a/files/water/water.material b/files/water/water.material index 673bbaf56a..50dfd93795 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -18,6 +18,67 @@ fragment_program Water/GlassFP cg profiles ps_2_0 arbfp1 } +vertex_program Water_VP cg +{ + source water.cg + entry_point main_vp + profiles vs_2_x arbvp1 + + default_params + { + param_named_auto wvpMat worldviewproj_matrix + } +} + +fragment_program Water_FP cg +{ + source water.cg + entry_point main_fp + profiles ps_2_x arbfp1 +} + +material Water +{ + technique + { + pass + { + scene_blend alpha_blend + depth_write off + + vertex_program_ref Water_VP + { + } + fragment_program_ref Water_FP + { + } + + texture_unit reflectionMap + { + texture WaterReflection + } + } + } + technique + { + scheme Map + pass + { + scene_blend alpha_blend + depth_write off + diffuse 0 0 0 1 + emissive 0.6 0.7 1.0 + ambient 0 0 0 + texture_unit + { + // texture names set via code + scale 0.1 0.1 + alpha_op_ex source1 src_manual src_current 0.7 + } + } + } +} + material Water/Compositor { technique From cc4076d42aea6e8009f6505a0cc867532a7c2844 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 21:16:43 +0200 Subject: [PATCH 351/488] basic noise --- apps/openmw/mwrender/renderingmanager.cpp | 2 +- apps/openmw/mwrender/water.cpp | 12 ++++- apps/openmw/mwrender/water.hpp | 6 ++- files/settings-default.cfg | 3 -- files/water/water.cg | 56 +++++++++++++++++++++++ files/water/water.material | 6 +++ 6 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 files/water/water.cg diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index ff4e6786ca..98344297fa 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -185,7 +185,7 @@ void RenderingManager::update (float duration){ void RenderingManager::waterAdded (MWWorld::Ptr::CellStore *store){ if(store->cell->data.flags & store->cell->HasWater){ if(mWater == 0) - mWater = new MWRender::Water(mRendering.getCamera(), store->cell); + mWater = new MWRender::Water(mRendering.getCamera(), mSkyManager, store->cell); else mWater->changeCell(store->cell); mWater->setActive(true); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index bf40c95679..df6d1a97a1 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,16 +1,19 @@ #include "water.hpp" #include +#include "sky.hpp" using namespace Ogre; namespace MWRender { -Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : +Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), mIsUnderwater(false), mReflectDistance(0), mVisibilityFlags(0), mOldCameraFarClip(0), mReflectionTarget(0), mActive(1) { + mSky = sky; + try { CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); @@ -33,6 +36,7 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : + RV_StaticsSmall * Settings::Manager::getBool("reflect small statics", "Water") + RV_Actors * Settings::Manager::getBool("reflect actors", "Water") + RV_Misc * Settings::Manager::getBool("reflect misc", "Water"); + //+ RV_Sky; mReflectDistance = Settings::Manager::getInt("reflect distance", "Water"); mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); @@ -44,7 +48,7 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : } mWaterNode->attachObject(mWater); - // Create rendertargets for reflection and refraction + // Create rendertarget for reflection int rttsize = Settings::Manager::getInt("rtt size", "Water"); if (Settings::Manager::getBool("reflection", "Water")) @@ -172,6 +176,10 @@ Ogre::MaterialPtr Water::createMaterial() } mat->getTechnique(1)->getPass(0)->getTextureUnitState(0)->setAnimatedTextureName(textureNames, 32, 2); + // use technique without shaders if reflection is disabled + if (mReflectionTarget == 0) + mat->removeTechnique(0); + return mat; } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 61519dbb97..8e9014833e 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -8,6 +8,8 @@ namespace MWRender { + class SkyManager; + /// Water rendering class Water : Ogre::RenderTargetListener { @@ -30,6 +32,8 @@ namespace MWRender { void preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); void postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); + SkyManager* mSky; + Ogre::MaterialPtr createMaterial(); Ogre::RenderTarget* mReflectionTarget; @@ -39,7 +43,7 @@ namespace MWRender { int mOldCameraFarClip; public: - Water (Ogre::Camera *camera, const ESM::Cell* cell); + Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell); ~Water(); void setActive(bool active); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 914b4019d6..ea2aa8ff1f 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -48,9 +48,6 @@ reflection = false rtt size = 256 -# 0 unlimited -reflect distance = 0 - reflect terrain = true reflect statics = true diff --git a/files/water/water.cg b/files/water/water.cg new file mode 100644 index 0000000000..6d5df987dc --- /dev/null +++ b/files/water/water.cg @@ -0,0 +1,56 @@ +void main_vp +( + in float4 iPos : POSITION + , in float2 iUv : TEXCOORD0 + + , out float4 oPos : POSITION + , out float3 oScreenCoords : TEXCOORD0 + , out float2 oUv : TEXCOORD1 + + , uniform float4x4 wvpMat +) +{ + oPos = mul(wvpMat, iPos); + + oUv = iUv * 10; // uv scale + + float4x4 scalemat = float4x4( 0.5, 0, 0, 0.5, + 0, -0.5, 0, 0.5, + 0, 0, 0.5, 0.5, + 0, 0, 0, 1 ); + float4 texcoordProj = mul(scalemat, oPos); + oScreenCoords = float3(texcoordProj.x, texcoordProj.y, texcoordProj.w); +} + +void main_fp +( + out float4 oColor : COLOR + + , in float3 iScreenCoords : TEXCOORD0 + , in float2 iUv : TEXCOORD1 + , uniform float renderTargetFlipping + + , uniform sampler2D reflectionMap : register(s0) + , uniform sampler2D normalMap : register(s1) + , uniform float time +) +{ + + float2 screenCoords = iScreenCoords.xy / iScreenCoords.z; + screenCoords.y = (renderTargetFlipping == -1) ? (1-screenCoords.y) : screenCoords.y; + + float2 uv1 = iUv + time * float2(0.5, 0); + float2 uv2 = iUv + time * float2(0, 0.5); + float2 uv3 = iUv + time * float2(-0.5, 0); + float2 uv4 = iUv + time * float2(0, -0.5); + + float4 normal = tex2D(normalMap, uv1) + tex2D(normalMap, uv2) + tex2D(normalMap, uv3) + tex2D(normalMap, uv4); + normal = normal / 4.f; + normal = 2*normal - 1; + screenCoords += normal.yx * 0.05; + + float4 reflection = tex2D(reflectionMap, screenCoords); + + oColor.xyz = reflection.xyz; + oColor.a = 0.45; +} diff --git a/files/water/water.material b/files/water/water.material index 50dfd93795..8f8f72df00 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -51,11 +51,17 @@ material Water } fragment_program_ref Water_FP { + param_named_auto time time 0.1 } texture_unit reflectionMap { texture WaterReflection + tex_address_mode clamp + } + texture_unit normalMap + { + texture WaterNormal2.tga } } } From 2fa9bac5172476893f78fdcb45d467ce10a5f0cd Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 22:04:37 +0200 Subject: [PATCH 352/488] added fog --- files/water/water.cg | 8 +++++++- files/water/water.material | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/files/water/water.cg b/files/water/water.cg index 6d5df987dc..70d3339b19 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -6,6 +6,7 @@ void main_vp , out float4 oPos : POSITION , out float3 oScreenCoords : TEXCOORD0 , out float2 oUv : TEXCOORD1 + , out float oDepth : TEXCOORD2 , uniform float4x4 wvpMat ) @@ -13,6 +14,7 @@ void main_vp oPos = mul(wvpMat, iPos); oUv = iUv * 10; // uv scale + oDepth = oPos.z; float4x4 scalemat = float4x4( 0.5, 0, 0, 0.5, 0, -0.5, 0, 0.5, @@ -28,11 +30,14 @@ void main_fp , in float3 iScreenCoords : TEXCOORD0 , in float2 iUv : TEXCOORD1 + , in float iDepth : TEXCOORD2 , uniform float renderTargetFlipping , uniform sampler2D reflectionMap : register(s0) , uniform sampler2D normalMap : register(s1) , uniform float time + , uniform float4 fogParams + , uniform float4 fogColour ) { @@ -51,6 +56,7 @@ void main_fp float4 reflection = tex2D(reflectionMap, screenCoords); - oColor.xyz = reflection.xyz; + float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); + oColor.xyz = lerp(reflection.xyz, fogColour, fogValue); oColor.a = 0.45; } diff --git a/files/water/water.material b/files/water/water.material index 8f8f72df00..abd5ad80e6 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -52,6 +52,8 @@ material Water fragment_program_ref Water_FP { param_named_auto time time 0.1 + param_named_auto fogColour fog_colour + param_named_auto fogParams fog_params } texture_unit reflectionMap From 328bdaafb64c30981c6b1515e6a25c77a9d96823 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 22:53:08 +0200 Subject: [PATCH 353/488] fixed a problem with the underwater compositor --- files/settings-default.cfg | 6 ++++++ files/water/GlassFP.cg | 2 +- files/water/water.material | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/files/settings-default.cfg b/files/settings-default.cfg index ea2aa8ff1f..9be18f61be 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -57,3 +57,9 @@ reflect small statics = false reflect actors = true reflect misc = false + +[Render] + +# Only supported on SM3+ cards +# If you have a lower end card, this will be disabled automatically +multiple render targets = true diff --git a/files/water/GlassFP.cg b/files/water/GlassFP.cg index eb18885d25..c294f6fff5 100644 --- a/files/water/GlassFP.cg +++ b/files/water/GlassFP.cg @@ -6,7 +6,7 @@ float4 main_ps(float2 iTexCoord : TEXCOORD0, float3 noiseCoord : TEXCOORD1, uniform float4 tintColour) : COLOR { - float4 normal = tex2D(NormalMap, noiseCoord); + float4 normal = tex2D(NormalMap, noiseCoord) * 2 - 1; return tex2D(RT, iTexCoord + normal.xy * 0.05) + diff --git a/files/water/water.material b/files/water/water.material index abd5ad80e6..bca5a9281d 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -48,6 +48,7 @@ material Water vertex_program_ref Water_VP { + param_named_auto renderTargetFlipping render_target_flipping } fragment_program_ref Water_FP { From 329ba24eab7ee016bd103367c061f87f04f6d282 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 15:11:30 +0200 Subject: [PATCH 354/488] streamlined command line options --- apps/mwiniimporter/main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 051e7db2b8..234d7d57d4 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -9,7 +9,8 @@ namespace bpo = boost::program_options; int main(int argc, char *argv[]) { - bpo::options_description desc("Syntax: mwiniimporter -i inifile -c configfile \nAllowed options"); + bpo::options_description desc("Syntax: mwiniimporter inifile configfile\nAllowed options"); + bpo::positional_options_description p_desc; desc.add_options() ("help,h", "produce help message") ("verbose,v", "verbose output") @@ -18,9 +19,15 @@ int main(int argc, char *argv[]) { ("output,o", bpo::value()->default_value(""), "openmw.cfg file") ("game-files,g", "import esm and esp files") ; + p_desc.add("ini", 1).add("cfg", 1); bpo::variables_map vm; - bpo::store(boost::program_options::parse_command_line(argc, argv, desc), vm); + bpo::parsed_options parsed = bpo::command_line_parser(argc, argv) + .options(desc) + .positional(p_desc) + .run(); + + bpo::store(parsed, vm); if(vm.count("help") || !vm.count("ini") || !vm.count("cfg")) { std::cout << desc; From de510d445b328f5315a3aff4ac00d610bb23fa8e Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 15:23:14 +0200 Subject: [PATCH 355/488] throw an error if the --fallback syntax is wrong --- apps/openmw/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index b541ea0d36..cdc4af4b02 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -71,8 +71,8 @@ void validate(boost::any &v, std::vector const &tokens, FallbackMap for(std::vector::const_iterator it=tokens.begin(); it != tokens.end(); it++) { int sep = it->find(","); - if(sep < 1) - continue; + if(sep < 1 || sep = it->length()-1) + throw boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value); std::string key(it->substr(0,sep)); std::string value(it->substr(sep+1)); From 16e7bf353a50a0188cf1790417751d89ea24d83e Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 16:08:46 +0200 Subject: [PATCH 356/488] remove debug message --- apps/openmw/mwworld/world.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 596adcf6b0..7f4169b9d4 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -205,9 +205,8 @@ namespace MWWorld } mWorldScene = new Scene(environment, this, *mRendering, mPhysics); - + setFallbackValues(fallbackMap); - std::cout << "Weather_Sunrise_Time=" << getFallback("Weather_Sunrise_Time") << std::endl; } From 48b7b03453197ff5069aee6b9714838bc95085be Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 16:15:15 +0200 Subject: [PATCH 357/488] typo; World::getFallback(std::string key, std::string def) --- apps/openmw/main.cpp | 2 +- apps/openmw/mwworld/world.cpp | 7 ++++++- apps/openmw/mwworld/world.hpp | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index cdc4af4b02..06b0686217 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -71,7 +71,7 @@ void validate(boost::any &v, std::vector const &tokens, FallbackMap for(std::vector::const_iterator it=tokens.begin(); it != tokens.end(); it++) { int sep = it->find(","); - if(sep < 1 || sep = it->length()-1) + if(sep < 1 || sep == (it->length()-1)) throw boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value); std::string key(it->substr(0,sep)); diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 7f4169b9d4..431a7a18c1 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -158,11 +158,16 @@ namespace MWWorld } std::string World::getFallback(std::string key) + { + return getFallback(key, ""); + } + + std::string World::getFallback(std::string key, std::string def) { std::map::iterator it; if((it = mFallback.find(key)) == mFallback.end()) { - return std::string(""); + return def; } return it->second; } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 7f18762f56..799b0d0941 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -130,6 +130,8 @@ namespace MWWorld std::string getFallback(std::string key); + std::string getFallback(std::string key, std::string def); + MWWorld::Player& getPlayer(); const ESMS::ESMStore& getStore() const; From 6442d49e1630daaa9f5ef74f8dc2eaee1de68730 Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 4 Apr 2012 18:53:40 +0200 Subject: [PATCH 358/488] render queue groups, sky fix --- apps/openmw/mwrender/creatureanimation.cpp | 21 +++++++++++++++++++++ apps/openmw/mwrender/npcanimation.cpp | 20 ++++++++++++++++++++ apps/openmw/mwrender/objects.cpp | 20 ++++++++++++++++++++ apps/openmw/mwrender/occlusionquery.cpp | 7 ++++--- apps/openmw/mwrender/renderconst.hpp | 13 ++++++++++++- apps/openmw/mwrender/sky.cpp | 16 ++++++++-------- apps/openmw/mwrender/terrain.cpp | 1 + apps/openmw/mwrender/water.cpp | 3 ++- 8 files changed, 88 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwrender/creatureanimation.cpp b/apps/openmw/mwrender/creatureanimation.cpp index 4c2ce8399a..e0eb5ccc20 100644 --- a/apps/openmw/mwrender/creatureanimation.cpp +++ b/apps/openmw/mwrender/creatureanimation.cpp @@ -22,6 +22,27 @@ CreatureAnimation::CreatureAnimation(const MWWorld::Ptr& ptr, MWWorld::Environme NifOgre::NIFLoader::load(meshNumbered); base = mRend.getScene()->createEntity(meshNumbered); base->setVisibilityFlags(RV_Actors); + + bool transparent = false; + for (unsigned int i=0; igetNumSubEntities(); ++i) + { + Ogre::MaterialPtr mat = base->getSubEntity(i)->getMaterial(); + Ogre::Material::TechniqueIterator techIt = mat->getTechniqueIterator(); + while (techIt.hasMoreElements()) + { + Ogre::Technique* tech = techIt.getNext(); + Ogre::Technique::PassIterator passIt = tech->getPassIterator(); + while (passIt.hasMoreElements()) + { + Ogre::Pass* pass = passIt.getNext(); + + if (pass->getDepthWriteEnabled() == false) + transparent = true; + } + } + } + base->setRenderQueueGroup(transparent ? RQG_Alpha : RQG_Main); + std::string meshZero = mesh + "0000>|"; if((transformations = (NIFLoader::getSingletonPtr())->getAnim(meshZero))){ diff --git a/apps/openmw/mwrender/npcanimation.cpp b/apps/openmw/mwrender/npcanimation.cpp index 3a4d9300d7..9de5705e3f 100644 --- a/apps/openmw/mwrender/npcanimation.cpp +++ b/apps/openmw/mwrender/npcanimation.cpp @@ -67,6 +67,26 @@ NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,O base = mRend.getScene()->createEntity(smodel); base->setVisibilityFlags(RV_Actors); + bool transparent = false; + for (unsigned int i=0; igetNumSubEntities(); ++i) + { + Ogre::MaterialPtr mat = base->getSubEntity(i)->getMaterial(); + Ogre::Material::TechniqueIterator techIt = mat->getTechniqueIterator(); + while (techIt.hasMoreElements()) + { + Ogre::Technique* tech = techIt.getNext(); + Ogre::Technique::PassIterator passIt = tech->getPassIterator(); + while (passIt.hasMoreElements()) + { + Ogre::Pass* pass = passIt.getNext(); + + if (pass->getDepthWriteEnabled() == false) + transparent = true; + } + } + } + base->setRenderQueueGroup(transparent ? RQG_Alpha : RQG_Main); + base->setSkipAnimationStateUpdate(true); //Magical line of code, this makes the bones //stay in the same place when we skipanim, or open a gui window diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index bd39e1f5a5..9d743fe90b 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -113,6 +113,26 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) bounds.scale(insert->getScale()); mBounds[ptr.getCell()].merge(bounds); + bool transparent = false; + for (unsigned int i=0; igetNumSubEntities(); ++i) + { + Ogre::MaterialPtr mat = ent->getSubEntity(i)->getMaterial(); + Ogre::Material::TechniqueIterator techIt = mat->getTechniqueIterator(); + while (techIt.hasMoreElements()) + { + Ogre::Technique* tech = techIt.getNext(); + Ogre::Technique::PassIterator passIt = tech->getPassIterator(); + while (passIt.hasMoreElements()) + { + Ogre::Pass* pass = passIt.getNext(); + + if (pass->getDepthWriteEnabled() == false) + transparent = true; + } + } + } + ent->setRenderQueueGroup(transparent ? RQG_Alpha : RQG_Main); + if(!mIsStatic || !Settings::Manager::getBool("use static geometry", "Objects")) { insert->attachObject(ent); diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 781b522b63..ff1ce82e7c 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -1,4 +1,5 @@ #include "occlusionquery.hpp" +#include "renderconst.hpp" #include #include @@ -39,8 +40,8 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod return; } - // This means that everything up to RENDER_QUEUE_MAIN can occlude the objects that are tested - const int queue = RENDER_QUEUE_MAIN+1; + // This means that everything up to RQG_Main can occlude the objects that are tested + const int queue = RQG_Main+1; MaterialPtr matBase = MaterialManager::getSingleton().getByName("BaseWhiteNoLighting"); MaterialPtr matQueryArea = matBase->clone("QueryTotalPixels"); @@ -152,7 +153,7 @@ void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocati * this can happen for example if the object that is tested is outside of the view frustum * to prevent this, check if the queries have been performed after everything has been rendered and if not, start them manually */ - if (queueGroupId == RENDER_QUEUE_SKIES_LATE) + if (queueGroupId == RQG_SkiesLate) { if (mWasVisible == false && mDoQuery) { diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp index 5e1c6c7bb1..6eba8d92e4 100644 --- a/apps/openmw/mwrender/renderconst.hpp +++ b/apps/openmw/mwrender/renderconst.hpp @@ -7,7 +7,18 @@ namespace MWRender { // Render queue groups -/// \todo +enum RenderQueueGroups +{ + // Sky early (atmosphere, clouds, moons) + RQG_SkiesEarly = Ogre::RENDER_QUEUE_SKIES_EARLY, + + RQG_Main = Ogre::RENDER_QUEUE_MAIN, + + RQG_Alpha = Ogre::RENDER_QUEUE_7, + + // Sky late (sun & sun flare) + RQG_SkiesLate = Ogre::RENDER_QUEUE_SKIES_LATE +}; // Visibility flags enum VisibilityFlags diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 8e774eb084..7ccbaf8e23 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -89,7 +89,6 @@ void BillboardObject::init(const String& textureName, /// \todo These billboards are not 100% correct, might want to revisit them later mBBSet = sceneMgr->createBillboardSet("SkyBillboardSet"+StringConverter::toString(bodyCount), 1); mBBSet->setDefaultDimensions(550.f*initialSize, 550.f*initialSize); - mBBSet->setRenderQueueGroup(RENDER_QUEUE_MAIN+2); mBBSet->setBillboardType(BBT_PERPENDICULAR_COMMON); mBBSet->setCommonDirection( -position.normalisedCopy() ); mBBSet->setVisibilityFlags(RV_Sky); @@ -359,15 +358,16 @@ void SkyManager::create() mSecunda = new Moon("textures\\tx_secunda_full.dds", 0.5, Vector3(-0.4, 0.4, 0.5), mRootNode); mSecunda->setType(Moon::Type_Secunda); - mSecunda->setRenderQueue(RENDER_QUEUE_SKIES_EARLY+4); + mSecunda->setRenderQueue(RQG_SkiesEarly+4); mMasser = new Moon("textures\\tx_masser_full.dds", 0.75, Vector3(-0.4, 0.4, 0.5), mRootNode); - mMasser->setRenderQueue(RENDER_QUEUE_SKIES_EARLY+3); + mMasser->setRenderQueue(RQG_SkiesEarly+3); mMasser->setType(Moon::Type_Masser); mSun = new BillboardObject("textures\\tx_sun_05.dds", 1, Vector3(0.4, 0.4, 0.4), mRootNode); + mSun->setRenderQueue(RQG_SkiesEarly+4); mSunGlare = new BillboardObject("textures\\tx_sun_flash_grey_05.dds", 3, Vector3(0.4, 0.4, 0.4), mRootNode); - mSunGlare->setRenderQueue(RENDER_QUEUE_SKIES_LATE); + mSunGlare->setRenderQueue(RQG_SkiesLate); HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); @@ -376,7 +376,7 @@ void SkyManager::create() /// \todo sky_night_02.nif (available in Bloodmoon) MeshPtr mesh = NifOgre::NIFLoader::load("meshes\\sky_night_01.nif"); Entity* night1_ent = mSceneMgr->createEntity("meshes\\sky_night_01.nif"); - night1_ent->setRenderQueueGroup(RENDER_QUEUE_SKIES_EARLY+1); + night1_ent->setRenderQueueGroup(RQG_SkiesEarly+1); night1_ent->setVisibilityFlags(RV_Sky); mAtmosphereNight = mRootNode->createChildSceneNode(); @@ -450,7 +450,7 @@ void SkyManager::create() ModVertexAlpha(atmosphere_ent, 0); - atmosphere_ent->setRenderQueueGroup(RENDER_QUEUE_SKIES_EARLY); + atmosphere_ent->setRenderQueueGroup(RQG_SkiesEarly); atmosphere_ent->setVisibilityFlags(RV_Sky); mAtmosphereDay = mRootNode->createChildSceneNode(); mAtmosphereDay->attachObject(atmosphere_ent); @@ -489,7 +489,7 @@ void SkyManager::create() NifOgre::NIFLoader::load("meshes\\sky_clouds_01.nif"); Entity* clouds_ent = mSceneMgr->createEntity("meshes\\sky_clouds_01.nif"); clouds_ent->setVisibilityFlags(RV_Sky); - clouds_ent->setRenderQueueGroup(RENDER_QUEUE_SKIES_EARLY+5); + clouds_ent->setRenderQueueGroup(RQG_SkiesEarly+5); SceneNode* clouds_node = mRootNode->createChildSceneNode(); clouds_node->attachObject(clouds_ent); mCloudMaterial = clouds_ent->getSubEntity(0)->getMaterial(); @@ -738,7 +738,7 @@ void SkyManager::setWeather(const MWWorld::WeatherResult& weather) strength = 1.f; mSunGlare->setVisibility(weather.mGlareView * mGlareFade * strength); - mSun->setVisibility(mGlareFade >= 0.5 ? weather.mGlareView * mGlareFade * strength : 0); + mSun->setVisibility(weather.mGlareView); mAtmosphereNight->setVisible(weather.mNight && mEnabled); } diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 6c11f74859..ed2c983ddb 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -161,6 +161,7 @@ namespace MWRender numTextures, indexes); terrain->setVisibilityFlags(RV_Terrain); + terrain->setRenderQueueGroup(RQG_Main); if ( land && land->landData->usingColours ) { diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index df6d1a97a1..1983616d60 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -26,10 +26,11 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mWaterPlane = Plane(Vector3::UNIT_Y, 0); - MeshManager::getSingleton().createPlane("water", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Vector3::UNIT_Z); + MeshManager::getSingleton().createPlane("water", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,3, Vector3::UNIT_Z); mWater = mSceneManager->createEntity("water"); mWater->setVisibilityFlags(RV_Water); + mWater->setRenderQueueGroup(RQG_Alpha); mVisibilityFlags = RV_Terrain * Settings::Manager::getBool("reflect terrain", "Water") + RV_Statics * Settings::Manager::getBool("reflect statics", "Water") From 94a220dcdd9d222b1799c6731898da768c496fac Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 19:52:07 +0200 Subject: [PATCH 359/488] set a default value for --fallback --- apps/openmw/main.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 06b0686217..2e56d528be 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -267,7 +267,11 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat engine.setCompileAll(variables["script-all"].as()); engine.setReportFocus(variables["report-focus"].as()); engine.setAnimationVerbose(variables["anim-verbose"].as()); - engine.setFallbackValues(variables["fallback"].as().mMap); + + if(variables.count("fallback")) + { + engine.setFallbackValues(variables["fallback"].as().mMap); + } return true; } From 006970fd792b27d6fabb8fd52738e42eef9edc1f Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 4 Apr 2012 19:53:41 +0200 Subject: [PATCH 360/488] add MRT code to shaders --- components/nifogre/ogre_nif_loader.cpp | 28 +++++++++++++++++++------- files/gbuffer/gbuffer.compositor | 0 files/gbuffer/gbuffer.material | 0 3 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 files/gbuffer/gbuffer.compositor create mode 100644 files/gbuffer/gbuffer.material diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 7fa45815fb..83510db139 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -302,6 +302,8 @@ void NIFLoader::createMaterial(const String &name, if (Settings::Manager::getBool("shaders", "Objects")) { + bool mrt = Settings::Manager::getBool("multiple render targets", "Render"); + // Create shader for the material // vertex HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); @@ -324,9 +326,8 @@ void NIFLoader::createMaterial(const String &name, " out float4 oPosition : POSITION, \n" " out float4 oPositionObjSpace : TEXCOORD1, \n" " out float4 oNormal : TEXCOORD2, \n" - " out float oFogValue : TEXCOORD3, \n" + " out float oDepth : TEXCOORD3, \n" " out float4 oVertexColour : TEXCOORD4, \n" - " uniform float4 fogParams, \n" " uniform float4x4 worldViewProj \n" ") \n" "{ \n" @@ -334,13 +335,12 @@ void NIFLoader::createMaterial(const String &name, " oUV = uv; \n" " oNormal = normal; \n" " oPosition = mul( worldViewProj, position ); \n" - " oFogValue = saturate((oPosition.z - fogParams.y) * fogParams.w); \n" + " oDepth = oPosition.z; \n" " oPositionObjSpace = position; \n" "}"; vertex->setSource(outStream.str()); vertex->load(); vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); - vertex->getDefaultParameters()->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); } else vertex = mgr.getByName("main_vp"); @@ -370,9 +370,14 @@ void NIFLoader::createMaterial(const String &name, " uniform sampler2D texture : TEXUNIT0, \n" " float4 positionObjSpace : TEXCOORD1, \n" " float4 normal : TEXCOORD2, \n" - " float fogValue : TEXCOORD3, \n" + " float iDepth : TEXCOORD3, \n" " float4 vertexColour : TEXCOORD4, \n" - " uniform float4 fogColour, \n"; + " uniform float4 fogColour, \n" + " uniform float4 fogParams, \n"; + + if (mrt) outStream << + " out float4 oColor1 : COLOR1, \n" + " uniform float far, \n"; for (int i=0; isetSource(outStream.str()); fragment->load(); @@ -425,6 +436,9 @@ void NIFLoader::createMaterial(const String &name, fragment->getDefaultParameters()->setNamedAutoConstant("ambient", GpuProgramParameters::ACT_SURFACE_AMBIENT_COLOUR); fragment->getDefaultParameters()->setNamedAutoConstant("lightAmbient", GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR); fragment->getDefaultParameters()->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); + if (mrt) + fragment->getDefaultParameters()->setNamedAutoConstant("far", GpuProgramParameters::ACT_FAR_CLIP_DISTANCE); } else fragment = mgr.getByName("main_fp"); diff --git a/files/gbuffer/gbuffer.compositor b/files/gbuffer/gbuffer.compositor new file mode 100644 index 0000000000..e69de29bb2 diff --git a/files/gbuffer/gbuffer.material b/files/gbuffer/gbuffer.material new file mode 100644 index 0000000000..e69de29bb2 From a974d88cf1fab6f5d5d18b7762f943ea6c101fb6 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 19:58:04 +0200 Subject: [PATCH 361/488] Revert "set a default value for --fallback" This reverts commit 94a220dcdd9d222b1799c6731898da768c496fac. --- apps/openmw/main.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 2e56d528be..06b0686217 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -267,11 +267,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat engine.setCompileAll(variables["script-all"].as()); engine.setReportFocus(variables["report-focus"].as()); engine.setAnimationVerbose(variables["anim-verbose"].as()); - - if(variables.count("fallback")) - { - engine.setFallbackValues(variables["fallback"].as().mMap); - } + engine.setFallbackValues(variables["fallback"].as().mMap); return true; } From d3a6484bbc052706949fd176a01ada7c549d9853 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 19:59:46 +0200 Subject: [PATCH 362/488] set the default value for --fallback the right way --- apps/openmw/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 06b0686217..545014206f 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -157,7 +157,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat ("report-focus", bpo::value()->implicit_value(true) ->default_value(false), "write name of focussed object to cout") - ("fallback", bpo::value() + ("fallback", bpo::value()->default_value(FallbackMap(), "") ->multitoken()->composing(), "fallback values") ; From 6ccb32d26c55808b55f2c637b250e977144a3d07 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 20:06:31 +0200 Subject: [PATCH 363/488] import nosound option --- apps/mwiniimporter/importer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index f1cec04795..5503a7c1a8 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -12,6 +12,7 @@ MwIniImporter::MwIniImporter() { const char *map[][2] = { { "fps", "General:Show FPS" }, + { "nosound", "General:Disable Audio" }, { 0, 0 } }; const char *fallback[] = { From eb67afe5528aae8fdb288e20db5f13d2959625bd Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 4 Apr 2012 20:18:08 +0200 Subject: [PATCH 364/488] added MRT output to terrain material --- apps/openmw/mwrender/terrainmaterial.cpp | 42 ++++++++++++++---------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 922ea2280e..867ec8e1fd 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -557,7 +557,10 @@ namespace Ogre params->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); //params->setNamedAutoConstant("lightSpecularColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR, i); } - + + if (Settings::Manager::getBool("multiple render targets", "Render")) + params->setNamedAutoConstant("far", GpuProgramParameters::ACT_FAR_CLIP_DISTANCE); + params->setNamedAutoConstant("eyePosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); params->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); @@ -753,12 +756,7 @@ namespace Ogre ret->unload(); } - if(prof->isLayerNormalMappingEnabled() || prof->isLayerParallaxMappingEnabled()) - ret->setParameter("profiles", "ps_3_0 ps_2_x fp40 arbfp1"); - //else - //ret->setParameter("profiles", "ps_3_0 ps_2_0 fp30 arbfp1"); - else // fp30 doesn't work (black terrain) - ret->setParameter("profiles", "ps_3_0 ps_2_x fp40 arbfp1"); + ret->setParameter("profiles", "ps_3_0 ps_2_x fp40 arbfp1"); ret->setParameter("entry_point", "main_fp"); return ret; @@ -917,7 +915,7 @@ namespace Ogre outStream << - "float4 main_fp(\n" + "void main_fp(\n" "float4 position : TEXCOORD0,\n"; uint texCoordSet = 1; @@ -1034,8 +1032,15 @@ namespace Ogre __FUNCTION__); } + if (Settings::Manager::getBool("multiple render targets", "Render")) outStream << + " , out float4 oColor : COLOR \n" + " , out float4 oColor1 : COLOR1 \n" + " , uniform float far \n"; + else outStream << + " , out float4 oColor : COLOR \n"; + outStream << - ") : COLOR\n" + ")\n" "{\n" " float4 outputCol;\n" " float shadow = 1.0;\n" @@ -1241,6 +1246,10 @@ namespace Ogre " oPos = mul(viewProjMatrix, worldPos);\n" " oUVMisc.xy = uv.xy;\n"; + outStream << + " // pass cam depth\n" + " oUVMisc.z = oPos.z;\n"; + bool fog = terrain->getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; if (fog) { @@ -1337,7 +1346,12 @@ namespace Ogre } // Final return - outStream << " return outputCol;\n" + outStream << " oColor = outputCol;\n"; + + if (Settings::Manager::getBool("multiple render targets", "Render")) outStream << + " oColor1 = float4(uvMisc.z / far, 0, 0, 1); \n"; + + outStream << "}\n"; } @@ -1511,14 +1525,6 @@ namespace Ogre } } - - if (prof->getReceiveDynamicShadowsPSSM()) - { - outStream << - " // pass cam depth\n" - " oUVMisc.z = oPos.z;\n"; - } - } //--------------------------------------------------------------------- void TerrainMaterialGeneratorB::SM2Profile::ShaderHelperCg::generateFpDynamicShadowsParams( From 5dd65c11ee85f43cca92caea85fa22fb8b82c07b Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 21:04:52 +0200 Subject: [PATCH 365/488] forgot to save the file --- apps/openmw/main.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 0a2d356996..bc6159e2aa 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -123,14 +123,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat ("plugin", bpo::value()->default_value(StringsVector(), "") ->multitoken(), "plugin file(s)") -<<<<<<< HEAD - ("fps", bpo::value()->implicit_value(1) - ->default_value(0), "fps counter detail (0 = off, 1 = fps counter, 2 = full detail)") - ("anim-verbose", bpo::value()->implicit_value(true) -======= - ("anim-verbose", boost::program_options::value()->implicit_value(true) ->>>>>>> e403c7158acfb118bed01a08a46431b24cff8747 ->default_value(false), "output animation indices files") ("debug", bpo::value()->implicit_value(true) From cd2789b15abdcf65c934a64327ef53a43bc1f4b9 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Wed, 4 Apr 2012 21:05:19 +0200 Subject: [PATCH 366/488] Revert "Issue #225: Correction to commit ae98904." This reverts commit 0e5c90d3e783cd471197637ae281494de4dd0b08. --- apps/openmw/mwrender/terrain.cpp | 25 +++++++++++++------- components/esm/loadland.cpp | 40 +++++++++++++++++++++++--------- components/esm/loadland.hpp | 8 ++++++- 3 files changed, 53 insertions(+), 20 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index f1920490d5..0b8f933a27 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -98,7 +98,10 @@ namespace MWRender ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); if ( land != NULL ) { - land->loadData(); + if (!land->dataLoaded) + { + land->loadData(); + } } //split the cell terrain into four segments @@ -133,7 +136,7 @@ namespace MWRender const size_t xOffset = x * (mLandSize-1); memcpy(&terrainData.inputFloat[terrainCopyY*mLandSize], - &land->landData.heights[yOffset + xOffset], + &land->landData->heights[yOffset + xOffset], mLandSize*sizeof(float)); } } @@ -160,7 +163,7 @@ namespace MWRender numTextures, indexes); - if ( land && land->landData.usingColours ) + if ( land && land->landData->usingColours ) { // disable or enable global colour map (depends on available vertex colours) mActiveProfile->setGlobalColourMapEnabled(true); @@ -420,12 +423,18 @@ namespace MWRender ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); if ( land != NULL ) { - land->loadData(); + if (!land->dataLoaded) + { + land->loadData(); + } - return land->landData.textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; + return land->landData + ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; + } + else + { + return 0; } - - return 0; } //---------------------------------------------------------------------------------------------- @@ -464,7 +473,7 @@ namespace MWRender if ( land != NULL ) { - const char* const colours = land->landData.colours; + const char* const colours = land->landData->colours; for ( int y = 0; y < size; y++ ) { for ( int x = 0; x < size; x++ ) diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index c6dc3c6f20..96afdf8316 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -10,10 +10,16 @@ Land::Land() , mEsm(NULL) , hasData(false) , dataLoaded(false) + , landData(NULL) { - memset(&landData, 0, sizeof(landData)); } +Land::~Land() +{ + delete landData; +} + + void Land::load(ESMReader &esm) { mEsm = &esm; @@ -62,6 +68,7 @@ void Land::load(ESMReader &esm) hasData = (cnt == 3); dataLoaded = false; + landData = NULL; } void Land::loadData() @@ -71,6 +78,8 @@ void Land::loadData() return; } + landData = new LandData; + if (hasData) { mEsm->restoreContext(context); @@ -82,20 +91,19 @@ void Land::loadData() } VHGT rawHeights; - memset(&rawHeights, 0, sizeof(rawHeights)); mEsm->getHNExact(&rawHeights, sizeof(VHGT), "VHGT"); int currentHeightOffset = rawHeights.heightOffset; for (int y = 0; y < LAND_SIZE; y++) { currentHeightOffset += rawHeights.heightData[y * LAND_SIZE]; - landData.heights[y * LAND_SIZE] = currentHeightOffset * HEIGHT_SCALE; + landData->heights[y * LAND_SIZE] = currentHeightOffset * HEIGHT_SCALE; int tempOffset = currentHeightOffset; for (int x = 1; x < LAND_SIZE; x++) { tempOffset += rawHeights.heightData[y * LAND_SIZE + x]; - landData.heights[x + y * LAND_SIZE] = tempOffset * HEIGHT_SCALE; + landData->heights[x + y * LAND_SIZE] = tempOffset * HEIGHT_SCALE; } } @@ -105,10 +113,10 @@ void Land::loadData() } if (mEsm->isNextSub("VCLR")) { - landData.usingColours = true; - mEsm->getHExact(&landData.colours, 3*LAND_NUM_VERTS); + landData->usingColours = true; + mEsm->getHExact(&landData->colours, 3*LAND_NUM_VERTS); }else{ - landData.usingColours = false; + landData->usingColours = false; } //TODO fix magic numbers uint16_t vtex[512]; @@ -119,19 +127,29 @@ void Land::loadData() for ( int x1 = 0; x1 < 4; x1++ ) for ( int y2 = 0; y2 < 4; y2++) for ( int x2 = 0; x2 < 4; x2++ ) - landData.textures[(y1*4+y2)*16+(x1*4+x2)] = vtex[readPos++]; + landData->textures[(y1*4+y2)*16+(x1*4+x2)] = vtex[readPos++]; } else { - landData.usingColours = false; - memset(landData.textures, 0, sizeof(landData.textures)); + landData->usingColours = false; + memset(&landData->textures, 0, 512 * sizeof(uint16_t)); for (int i = 0; i < LAND_NUM_VERTS; i++) { - landData.heights[i] = -256.0f * HEIGHT_SCALE; + landData->heights[i] = -256.0f * HEIGHT_SCALE; } } dataLoaded = true; } +void Land::unloadData() +{ + if (dataLoaded) + { + delete landData; + landData = NULL; + dataLoaded = false; + } +} + } diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index 86f37d5755..64baecd349 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -12,6 +12,7 @@ namespace ESM struct Land { Land(); + ~Land(); int flags; // Only first four bits seem to be used, don't know what // they mean. @@ -66,7 +67,7 @@ struct Land char colours[3 * LAND_NUM_VERTS]; }; - LandData landData; + LandData *landData; void load(ESMReader &esm); @@ -74,6 +75,11 @@ struct Land * Actually loads data */ void loadData(); + + /** + * Frees memory allocated for land data + */ + void unloadData(); }; } #endif From ea8e5cb6f876fa8bbee83ce0c40028c7957be66c Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Wed, 4 Apr 2012 21:39:21 +0200 Subject: [PATCH 367/488] Issue #225: Land struct is not copyable. Disabled copy constructor and assignment operator in Land structure. --- components/esm/loadland.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index 64baecd349..ebc314a280 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -80,6 +80,11 @@ struct Land * Frees memory allocated for land data */ void unloadData(); + + private: + Land(const Land& land); + Land& operator=(const Land& land); }; + } #endif From 2c7c945208789b2ea29a8755608fc212721f3462 Mon Sep 17 00:00:00 2001 From: gugus Date: Wed, 4 Apr 2012 22:13:57 +0200 Subject: [PATCH 368/488] check playerfaction during dialogue --- apps/openmw/mwdialogue/dialoguemanager.cpp | 31 ++++++++++++++++++++++ apps/openmw/mwdialogue/dialoguemanager.hpp | 3 +++ 2 files changed, 34 insertions(+) diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index 1e6faf2924..cd7be50316 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -493,6 +493,21 @@ namespace MWDialogue } // TODO check player faction + if(!info.pcFaction.empty()) + { + MWMechanics::NpcStats stats = MWWorld::Class::get(actor).getNpcStats(mEnvironment.mWorld->getPlayer().getPlayer()); + std::map::iterator it = stats.mFactionRank.find(info.npcFaction); + if(it!=stats.mFactionRank.end()) + { + //check rank + if(it->second < info.data.rank) return false; + } + else + { + //not in the faction + return false; + } + } //check gender ESMS::LiveCellRef* npc = actor.get(); @@ -655,6 +670,7 @@ namespace MWDialogue void DialogueManager::executeScript(std::string script) { + std::cout << script; std::vector code; if(compile(script,code)) { @@ -796,4 +812,19 @@ namespace MWDialogue mChoiceMap[question] = choice; mIsInChoice = true; } + + std::string DialogueManager::getFaction() + { + std::string factionID(""); + MWMechanics::NpcStats stats = MWWorld::Class::get(mActor).getNpcStats(mEnvironment.mWorld->getPlayer().getPlayer()); + if(stats.mFactionRank.empty()) + { + std::cout << "No faction for this actor!"; + } + else + { + factionID = stats.mFactionRank.begin()->first; + } + return factionID; + } } diff --git a/apps/openmw/mwdialogue/dialoguemanager.hpp b/apps/openmw/mwdialogue/dialoguemanager.hpp index 260d8e3394..d0380fa717 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.hpp +++ b/apps/openmw/mwdialogue/dialoguemanager.hpp @@ -63,6 +63,9 @@ namespace MWDialogue void askQuestion(std::string question,int choice); + ///get the faction of the actor you are talking with + std::string getFaction(); + //calbacks for the GUI void keywordSelected(std::string keyword); void goodbyeSelected(); From aaa5368fe927b093b239862bb7d069c83099f140 Mon Sep 17 00:00:00 2001 From: gugus Date: Wed, 4 Apr 2012 22:14:38 +0200 Subject: [PATCH 369/488] added script instruction pcraiserank. Does not work yet. --- apps/openmw/mwscript/docs/vmformat.txt | 3 ++- apps/openmw/mwscript/statsextensions.cpp | 27 ++++++++++++++++-------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 7ff60a2035..27b426d0e0 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -127,4 +127,5 @@ op 0x2000141: GetWaterLevel op 0x2000142: SetWaterLevel op 0x2000143: ModWaterLevel op 0x2000144: ToggleWater, twa -opcodes 0x2000145-0x3ffffff unused +op 0x2000145: PCRaiseRank +opcodes 0x2000146-0x3ffffff unused diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 85ac54348a..be31321e98 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -17,6 +17,8 @@ #include "interpretercontext.hpp" #include "ref.hpp" +#include "../mwdialogue/dialoguemanager.hpp" + namespace MWScript { namespace Stats @@ -303,12 +305,18 @@ namespace MWScript virtual void execute (Interpreter::Runtime& runtime) { + std::cout << "try to rais rank..."; MWScript::InterpreterContext& context = static_cast (runtime.getContext()); - - std::string factionID = runtime.getStringLiteral (runtime[0].mInteger); - runtime.pop(); - context.getEnvironment().mWorld->getPlayer().raiseRank(factionID); + + std::string factionID = context.getEnvironment().mDialogueManager->getFaction(); + if(factionID != "") + { + std::cout << "raiserank!!!!!"; + MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); + MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 1; + } + std::cout << std::endl; } }; @@ -342,8 +350,8 @@ namespace MWScript const int opcodeSetSkillExplicit = 0x20000df; const int opcodeModSkill = 0x20000fa; const int opcodeModSkillExplicit = 0x2000115; - const int opcodePCJoinFaction = 0x2000141; - const int opcodePCRaiseRank = 0x2000142; + //const int opcodePCJoinFaction = 0x2000141; + const int opcodePCRaiseRank = 0x2000145; void registerExtensions (Compiler::Extensions& extensions) { @@ -415,8 +423,9 @@ namespace MWScript extensions.registerInstruction (mod + skills[i], "l", opcodeModSkill+i, opcodeModSkillExplicit+i); } - extensions.registerInstruction("PCJoinFaction","S",opcodePCJoinFaction); - extensions.registerInstruction("PCRaiseRank","S",opcodePCRaiseRank); + //extensions.registerInstruction("PCJoinFaction","S",opcodePCJoinFaction); + std::cout << "rgister raiserank"; + extensions.registerInstruction("pcraiserank","",opcodePCRaiseRank); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -473,7 +482,7 @@ namespace MWScript interpreter.installSegment5 (opcodeModSkillExplicit+i, new OpModSkill (i)); } - interpreter.installSegment5(opcodePCJoinFaction,new OpPCJoinFaction); + //interpreter.installSegment5(opcodePCJoinFaction,new OpPCJoinFaction); interpreter.installSegment5(opcodePCRaiseRank,new OpPCRaiseRank); } } From 8c84f68dab58b36a4a8a7d51a634cc2192788798 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 23:51:22 +0200 Subject: [PATCH 370/488] fix for older boost versions; unsigned warning --- apps/openmw/main.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index bc6159e2aa..11efc2867e 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -71,8 +71,12 @@ void validate(boost::any &v, std::vector const &tokens, FallbackMap for(std::vector::const_iterator it=tokens.begin(); it != tokens.end(); it++) { int sep = it->find(","); - if(sep < 1 || sep == (it->length()-1)) + if(sep < 1 || sep == (int)it->length()-1) +#if (BOOST_VERSION <= 104200) + throw boost::program_options::validation_error("invalid value"); +#else throw boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value); +#endif /* #if (BOOST_VERSION <= 104200) */ std::string key(it->substr(0,sep)); std::string value(it->substr(sep+1)); From 56c9992b29f63a01c887a42a38d2174d4922d6bf Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Wed, 4 Apr 2012 23:52:42 +0200 Subject: [PATCH 371/488] typo --- apps/openmw/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 11efc2867e..11516d43c9 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -72,11 +72,11 @@ void validate(boost::any &v, std::vector const &tokens, FallbackMap { int sep = it->find(","); if(sep < 1 || sep == (int)it->length()-1) -#if (BOOST_VERSION <= 104200) +#if (BOOST_VERSION < 104200) throw boost::program_options::validation_error("invalid value"); #else throw boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value); -#endif /* #if (BOOST_VERSION <= 104200) */ +#endif/ std::string key(it->substr(0,sep)); std::string value(it->substr(sep+1)); From f7bfea586198dc97df92bd2b96e4c1c50ed7710d Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Thu, 5 Apr 2012 00:16:44 +0200 Subject: [PATCH 372/488] typo 2 -.- --- apps/openmw/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 11516d43c9..df52faab14 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -76,7 +76,7 @@ void validate(boost::any &v, std::vector const &tokens, FallbackMap throw boost::program_options::validation_error("invalid value"); #else throw boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value); -#endif/ +#endif std::string key(it->substr(0,sep)); std::string value(it->substr(sep+1)); From 3f05aba76dc3d6a6c8747ee453c328cf833b7376 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 01:21:36 +0200 Subject: [PATCH 373/488] got MRT working, some minor quirks to solve (black viewport background) --- apps/openmw/engine.cpp | 1 + apps/openmw/mwrender/occlusionquery.cpp | 9 +-- apps/openmw/mwrender/renderconst.hpp | 2 + apps/openmw/mwrender/renderingmanager.cpp | 19 ++++++ apps/openmw/mwrender/water.cpp | 15 +++++ files/CMakeLists.txt | 4 ++ files/gbuffer/gbuffer.compositor | 81 +++++++++++++++++++++++ files/gbuffer/gbuffer.material | 63 ++++++++++++++++++ files/water/GlassFP.cg | 6 +- files/water/water.cg | 12 ++-- files/water/water.material | 8 ++- 11 files changed, 206 insertions(+), 14 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index cfcf9f76b9..a6b712abfe 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -357,6 +357,7 @@ void OMW::Engine::go() addResourcesDirectory(mResDir / "mygui"); addResourcesDirectory(mResDir / "water"); + addResourcesDirectory(mResDir / "gbuffer"); // Create the window mOgre->createWindow("OpenMW"); diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index ff1ce82e7c..5be7202b34 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -40,9 +40,6 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod return; } - // This means that everything up to RQG_Main can occlude the objects that are tested - const int queue = RQG_Main+1; - MaterialPtr matBase = MaterialManager::getSingleton().getByName("BaseWhiteNoLighting"); MaterialPtr matQueryArea = matBase->clone("QueryTotalPixels"); matQueryArea->setDepthWriteEnabled(false); @@ -65,14 +62,14 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBQueryTotal->setDefaultDimensions(150, 150); mBBQueryTotal->createBillboard(Vector3::ZERO); mBBQueryTotal->setMaterialName("QueryTotalPixels"); - mBBQueryTotal->setRenderQueueGroup(queue+1); + mBBQueryTotal->setRenderQueueGroup(RQG_OcclusionQuery+1); mBBNodeReal->attachObject(mBBQueryTotal); mBBQueryVisible = mRendering->getScene()->createBillboardSet(1); mBBQueryVisible->setDefaultDimensions(150, 150); mBBQueryVisible->createBillboard(Vector3::ZERO); mBBQueryVisible->setMaterialName("QueryVisiblePixels"); - mBBQueryVisible->setRenderQueueGroup(queue+1); + mBBQueryVisible->setRenderQueueGroup(RQG_OcclusionQuery+1); mBBNodeReal->attachObject(mBBQueryVisible); mBBQuerySingleObject = mRendering->getScene()->createBillboardSet(1); @@ -80,7 +77,7 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBQuerySingleObject->setDefaultDimensions(0.003, 0.003); mBBQuerySingleObject->createBillboard(Vector3::ZERO); mBBQuerySingleObject->setMaterialName("QueryVisiblePixels"); - mBBQuerySingleObject->setRenderQueueGroup(queue); + mBBQuerySingleObject->setRenderQueueGroup(RQG_OcclusionQuery); mObjectNode->attachObject(mBBQuerySingleObject); mRendering->getScene()->addRenderObjectListener(this); diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp index 6eba8d92e4..113024ace8 100644 --- a/apps/openmw/mwrender/renderconst.hpp +++ b/apps/openmw/mwrender/renderconst.hpp @@ -14,6 +14,8 @@ enum RenderQueueGroups RQG_Main = Ogre::RENDER_QUEUE_MAIN, + RQG_OcclusionQuery = Ogre::RENDER_QUEUE_MAIN+1, + RQG_Alpha = Ogre::RENDER_QUEUE_7, // Sky late (sun & sun flare) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 98344297fa..7797d18529 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -37,6 +37,14 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const // Load resources ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); + if (Settings::Manager::getBool("multiple render targets", "Render")) + { + CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbuffer"); + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", true); + CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbufferFinalizer"); + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", true); + } + // Turn the entire scene (represented by the 'root' node) -90 // degrees around the x axis. This makes Z go upwards, and Y go into // the screen (when x is to the right.) This is the orientation that @@ -252,11 +260,22 @@ bool RenderingManager::toggleRenderMode(int mode) { if (mRendering.getCamera()->getPolygonMode() == PM_SOLID) { + // disable compositors + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", false); + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", false); + mRendering.getCamera()->setPolygonMode(PM_WIREFRAME); return true; } else { + // re-enable compositors + if (Settings::Manager::getBool("multiple render targets", "Render")) + { + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", true); + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", true); + } + mRendering.getCamera()->setPolygonMode(PM_SOLID); return false; } diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 1983616d60..b3db66189b 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -181,6 +181,21 @@ Ogre::MaterialPtr Water::createMaterial() if (mReflectionTarget == 0) mat->removeTechnique(0); + if (Settings::Manager::getBool("multiple render targets", "Render")) + { + CompositorInstance* compositor = CompositorManager::getSingleton().getCompositorChain(mViewport)->getCompositor("gbuffer"); + + TexturePtr colorTexture = compositor->getTextureInstance("mrt_output", 0); + TextureUnitState* tus = mat->getTechnique(0)->getPass(0)->getTextureUnitState("refractionMap"); + if (tus != 0) + tus->setTexture(colorTexture); + + TexturePtr depthTexture = compositor->getTextureInstance("mrt_output", 1); + tus = mat->getTechnique(0)->getPass(0)->getTextureUnitState("depthMap"); + if (tus != 0) + tus->setTexture(depthTexture); + } + return mat; } diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 56c3db8627..377e2d1f8e 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -8,3 +8,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.compositor "${OpenMW_BINA configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.material "${OpenMW_BINARY_DIR}/resources/water/water.material" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/WaterNormal2.tga "${OpenMW_BINARY_DIR}/resources/water/WaterNormal2.tga" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.cg "${OpenMW_BINARY_DIR}/resources/water/water.cg" COPYONLY) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gbuffer/gbuffer.cg "${OpenMW_BINARY_DIR}/resources/gbuffer/gbuffer.cg" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gbuffer/gbuffer.material "${OpenMW_BINARY_DIR}/resources/gbuffer/gbuffer.material" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gbuffer/gbuffer.compositor "${OpenMW_BINARY_DIR}/resources/gbuffer/gbuffer.compositor" COPYONLY) diff --git a/files/gbuffer/gbuffer.compositor b/files/gbuffer/gbuffer.compositor index e69de29bb2..d51d3700c8 100644 --- a/files/gbuffer/gbuffer.compositor +++ b/files/gbuffer/gbuffer.compositor @@ -0,0 +1,81 @@ +// Compositor that just controls output to the MRT textures +compositor gbuffer +{ + technique + { + // MRT output. Currently this is a color texture plus a depth texture + texture mrt_output target_width target_height PF_FLOAT16_RGBA PF_FLOAT16_RGBA chain_scope depth_pool 2 + + target mrt_output + { + input none + pass clear + { + } + pass render_scene + { + first_render_queue 0 + last_render_queue 69 + } + + } + + target_output + { + input none + + pass render_quad + { + material RenderScene + input 0 mrt_output 0 + } + } + } +} + +// Finalizer compositor to render objects that we don't want in the MRT textures (this is the case for most transparent stuff) +compositor gbufferFinalizer +{ + technique + { + texture no_mrt_output target_width target_height PF_R8G8B8A8 depth_pool 2 no_fsaa + texture previousscene target_width target_height PF_R8G8B8A8 + + target previousscene + { + input previous + } + target no_mrt_output + { + input none + shadows off + pass clear + { + buffers colour + colour_value 0 0 0 0 + } + pass render_quad + { + material RenderSceneNoDepth + input 0 previousscene + } + pass render_scene + { + first_render_queue 70 + last_render_queue 100 + } + } + target_output + { + input none + pass clear + { + } + pass render_quad + { + material RenderSceneNoDepth + input 0 no_mrt_output + } + } + } +} diff --git a/files/gbuffer/gbuffer.material b/files/gbuffer/gbuffer.material index e69de29bb2..faa8dd4980 100644 --- a/files/gbuffer/gbuffer.material +++ b/files/gbuffer/gbuffer.material @@ -0,0 +1,63 @@ +vertex_program RenderGBuffer_vs cg +{ + source gbuffer.cg + profiles vs_4_0 vs_1_1 arbvp1 + entry_point RenderScene_vs + default_params + { + param_named_auto wvp worldviewproj_matrix + } +} +fragment_program RenderGBuffer_ps cg +{ + source gbuffer.cg + entry_point RenderScene_ps + profiles ps_4_0 ps_2_x arbfp1 + default_params + { + } +} +material RenderScene +{ + technique + { + pass + { + vertex_program_ref RenderGBuffer_vs + { + } + + fragment_program_ref RenderGBuffer_ps + { + } + + texture_unit tex1 + { + //scenebuffer + } + } + } +} + +material RenderSceneNoDepth +{ + technique + { + pass + { + depth_write off + vertex_program_ref RenderGBuffer_vs + { + } + + fragment_program_ref RenderGBuffer_ps + { + } + + texture_unit tex1 + { + //scenebuffer + } + } + } +} diff --git a/files/water/GlassFP.cg b/files/water/GlassFP.cg index c294f6fff5..0ce343b0aa 100644 --- a/files/water/GlassFP.cg +++ b/files/water/GlassFP.cg @@ -1,9 +1,9 @@ -sampler RT : register(s0); -sampler NormalMap : register(s1); -sampler CausticMap : register(s2); float4 main_ps(float2 iTexCoord : TEXCOORD0, float3 noiseCoord : TEXCOORD1, + uniform sampler2D RT : register(s0), + uniform sampler2D NormalMap : register(s1), + uniform sampler2D CausticMap : register(s2), uniform float4 tintColour) : COLOR { float4 normal = tex2D(NormalMap, noiseCoord) * 2 - 1; diff --git a/files/water/water.cg b/files/water/water.cg index 70d3339b19..88515c3e8c 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -34,7 +34,8 @@ void main_fp , uniform float renderTargetFlipping , uniform sampler2D reflectionMap : register(s0) - , uniform sampler2D normalMap : register(s1) + , uniform sampler2D refractionMap : register(s1) + , uniform sampler2D normalMap : register(s2) , uniform float time , uniform float4 fogParams , uniform float4 fogColour @@ -42,7 +43,7 @@ void main_fp { float2 screenCoords = iScreenCoords.xy / iScreenCoords.z; - screenCoords.y = (renderTargetFlipping == -1) ? (1-screenCoords.y) : screenCoords.y; + screenCoords.y = (1-saturate(renderTargetFlipping))+renderTargetFlipping*screenCoords.y; float2 uv1 = iUv + time * float2(0.5, 0); float2 uv2 = iUv + time * float2(0, 0.5); @@ -55,8 +56,11 @@ void main_fp screenCoords += normal.yx * 0.05; float4 reflection = tex2D(reflectionMap, screenCoords); + float4 refraction = tex2D(refractionMap, screenCoords); + + oColor.xyz = lerp(reflection.xyz, refraction.xyz, 1); float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); - oColor.xyz = lerp(reflection.xyz, fogColour, fogValue); - oColor.a = 0.45; + oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); + oColor.a = 1; } diff --git a/files/water/water.material b/files/water/water.material index bca5a9281d..c964e9ae42 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -48,13 +48,13 @@ material Water vertex_program_ref Water_VP { - param_named_auto renderTargetFlipping render_target_flipping } fragment_program_ref Water_FP { param_named_auto time time 0.1 param_named_auto fogColour fog_colour param_named_auto fogParams fog_params + param_named_auto renderTargetFlipping render_target_flipping } texture_unit reflectionMap @@ -62,6 +62,12 @@ material Water texture WaterReflection tex_address_mode clamp } + + texture_unit refractionMap + { + tex_address_mode clamp + } + texture_unit normalMap { texture WaterNormal2.tga From ab8b74dcac00af9684cdc0d8d1d2b0fcee184dd4 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 08:58:21 +0200 Subject: [PATCH 374/488] forgot adding a file --- apps/openmw/mwrender/water.cpp | 2 +- files/gbuffer/gbuffer.cg | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 files/gbuffer/gbuffer.cg diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index b3db66189b..1caced9f53 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -183,7 +183,7 @@ Ogre::MaterialPtr Water::createMaterial() if (Settings::Manager::getBool("multiple render targets", "Render")) { - CompositorInstance* compositor = CompositorManager::getSingleton().getCompositorChain(mViewport)->getCompositor("gbuffer"); + CompositorInstance* compositor = CompositorManager::getSingleton().getCompositorChain(mViewport)->getCompositor("gbuffer"); TexturePtr colorTexture = compositor->getTextureInstance("mrt_output", 0); TextureUnitState* tus = mat->getTechnique(0)->getPass(0)->getTextureUnitState("refractionMap"); diff --git a/files/gbuffer/gbuffer.cg b/files/gbuffer/gbuffer.cg new file mode 100644 index 0000000000..c7f2fe6788 --- /dev/null +++ b/files/gbuffer/gbuffer.cg @@ -0,0 +1,18 @@ +void RenderScene_vs(in float4 position : POSITION + ,in float2 uv :TEXCOORD0 + ,uniform float4x4 wvp + ,out float4 oPosition : POSITION + ,out float2 oUV :TEXCOORD0) +{ + oPosition = mul(wvp, position); + oUV = uv; +} + +void RenderScene_ps(in float4 position : POSITION + ,in float2 uv :TEXCOORD0 + ,uniform sampler2D tex1 : TEXUNIT0 + ,out float4 oColor : COLOR) +{ + float4 scene =tex2D(tex1, uv); + oColor= scene; +} From 36fd9b9f263c7c4f4fc9df759253b96785121cdf Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 10:39:22 +0200 Subject: [PATCH 375/488] shore transition test --- files/water/water.cg | 17 ++++++++++++----- files/water/water.material | 6 ++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/files/water/water.cg b/files/water/water.cg index 88515c3e8c..c8156d9cec 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -35,8 +35,10 @@ void main_fp , uniform sampler2D reflectionMap : register(s0) , uniform sampler2D refractionMap : register(s1) - , uniform sampler2D normalMap : register(s2) + , uniform sampler2D depthMap : register(s2) + , uniform sampler2D normalMap : register(s3) , uniform float time + , uniform float far , uniform float4 fogParams , uniform float4 fogColour ) @@ -45,6 +47,9 @@ void main_fp float2 screenCoords = iScreenCoords.xy / iScreenCoords.z; screenCoords.y = (1-saturate(renderTargetFlipping))+renderTargetFlipping*screenCoords.y; + float depth1 = tex2D(depthMap, screenCoords).r * far - iDepth; + depth1 = saturate(depth1 / 500.f); + float2 uv1 = iUv + time * float2(0.5, 0); float2 uv2 = iUv + time * float2(0, 0.5); float2 uv3 = iUv + time * float2(-0.5, 0); @@ -53,12 +58,14 @@ void main_fp float4 normal = tex2D(normalMap, uv1) + tex2D(normalMap, uv2) + tex2D(normalMap, uv3) + tex2D(normalMap, uv4); normal = normal / 4.f; normal = 2*normal - 1; - screenCoords += normal.yx * 0.05; - float4 reflection = tex2D(reflectionMap, screenCoords); - float4 refraction = tex2D(refractionMap, screenCoords); + float2 screenCoords_reflect = screenCoords + normal.yx * 0.05; + float2 screenCoords_refract = screenCoords + normal.yx * 0.1 * depth1; - oColor.xyz = lerp(reflection.xyz, refraction.xyz, 1); + float4 reflection = tex2D(reflectionMap, screenCoords_reflect); + float4 refraction = tex2D(refractionMap, screenCoords_refract); + + oColor.xyz = lerp(refraction.xyz, reflection.xyz, depth1); float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); diff --git a/files/water/water.material b/files/water/water.material index c964e9ae42..dd01af4051 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -55,6 +55,7 @@ material Water param_named_auto fogColour fog_colour param_named_auto fogParams fog_params param_named_auto renderTargetFlipping render_target_flipping + param_named_auto far far_clip_distance } texture_unit reflectionMap @@ -68,6 +69,11 @@ material Water tex_address_mode clamp } + texture_unit depthMap + { + tex_address_mode clamp + } + texture_unit normalMap { texture WaterNormal2.tga From 8ddc8131a5480d0b134bb90d5cd0c9283957937d Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 11:18:58 +0200 Subject: [PATCH 376/488] fresnel test --- files/gbuffer/gbuffer.compositor | 1 + files/water/water.cg | 13 ++++++++++++- files/water/water.material | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/files/gbuffer/gbuffer.compositor b/files/gbuffer/gbuffer.compositor index d51d3700c8..a81ad18c3f 100644 --- a/files/gbuffer/gbuffer.compositor +++ b/files/gbuffer/gbuffer.compositor @@ -11,6 +11,7 @@ compositor gbuffer input none pass clear { + colour_value 0 0 0 1 } pass render_scene { diff --git a/files/water/water.cg b/files/water/water.cg index c8156d9cec..bd18286bc0 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -7,8 +7,10 @@ void main_vp , out float3 oScreenCoords : TEXCOORD0 , out float2 oUv : TEXCOORD1 , out float oDepth : TEXCOORD2 + , out float4 oEyeVector : TEXCOORD3 , uniform float4x4 wvpMat + , uniform float4 camPosObjSpace ) { oPos = mul(wvpMat, iPos); @@ -22,6 +24,8 @@ void main_vp 0, 0, 0, 1 ); float4 texcoordProj = mul(scalemat, oPos); oScreenCoords = float3(texcoordProj.x, texcoordProj.y, texcoordProj.w); + + oEyeVector = camPosObjSpace - iPos; } void main_fp @@ -31,6 +35,7 @@ void main_fp , in float3 iScreenCoords : TEXCOORD0 , in float2 iUv : TEXCOORD1 , in float iDepth : TEXCOORD2 + , in float4 iEyeVector : TEXCOORD3 , uniform float renderTargetFlipping , uniform sampler2D reflectionMap : register(s0) @@ -47,17 +52,19 @@ void main_fp float2 screenCoords = iScreenCoords.xy / iScreenCoords.z; screenCoords.y = (1-saturate(renderTargetFlipping))+renderTargetFlipping*screenCoords.y; + // Sample screen-space depth map and subtract pixel depth to get the real water depth float depth1 = tex2D(depthMap, screenCoords).r * far - iDepth; depth1 = saturate(depth1 / 500.f); + // Simple wave effect. to be replaced by something better float2 uv1 = iUv + time * float2(0.5, 0); float2 uv2 = iUv + time * float2(0, 0.5); float2 uv3 = iUv + time * float2(-0.5, 0); float2 uv4 = iUv + time * float2(0, -0.5); - float4 normal = tex2D(normalMap, uv1) + tex2D(normalMap, uv2) + tex2D(normalMap, uv3) + tex2D(normalMap, uv4); normal = normal / 4.f; normal = 2*normal - 1; + //normal = normalize(normal); float2 screenCoords_reflect = screenCoords + normal.yx * 0.05; float2 screenCoords_refract = screenCoords + normal.yx * 0.1 * depth1; @@ -65,6 +72,10 @@ void main_fp float4 reflection = tex2D(reflectionMap, screenCoords_reflect); float4 refraction = tex2D(refractionMap, screenCoords_refract); + // fresnel + //float facing = 1.0 - max(abs(dot(iEyeVector.xyz, normal.xyz)), 0); + //float reflectionFactor = saturate(0.3 + 0.7 * pow(facing, 2)); + oColor.xyz = lerp(refraction.xyz, reflection.xyz, depth1); float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); diff --git a/files/water/water.material b/files/water/water.material index dd01af4051..ffd813e16c 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -48,6 +48,7 @@ material Water vertex_program_ref Water_VP { + //param_named_auto camPosObjSpace camera_position_object_space } fragment_program_ref Water_FP { From 5664d879a5c0b37c1228849854188cc834c81105 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 11:40:56 +0200 Subject: [PATCH 377/488] fixed some sky objects --- apps/openmw/mwrender/sky.cpp | 82 ++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 7ccbaf8e23..3f815d9fcc 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -109,6 +109,59 @@ void BillboardObject::init(const String& textureName, p->createTextureUnitState(textureName); mBBSet->setMaterialName("BillboardMaterial"+StringConverter::toString(bodyCount)); + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + HighLevelGpuProgramPtr vshader; + if (mgr.resourceExists("BBO_VP")) + vshader = mgr.getByName("BBO_VP"); + else + vshader = mgr.createProgram("BBO_VP", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "cg", GPT_VERTEX_PROGRAM); + vshader->setParameter("profiles", "vs_2_x arbvp1"); + vshader->setParameter("entry_point", "main_vp"); + StringUtil::StrStreamType outStream; + outStream << + "void main_vp( \n" + " float4 position : POSITION, \n" + " in float2 uv : TEXCOORD0, \n" + " out float2 oUV : TEXCOORD0, \n" + " out float4 oPosition : POSITION, \n" + " uniform float4x4 worldViewProj \n" + ") \n" + "{ \n" + " oUV = uv; \n" + " oPosition = mul( worldViewProj, position ); \n" + "}"; + vshader->setSource(outStream.str()); + vshader->load(); + vshader->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); + mMaterial->getTechnique(0)->getPass(0)->setVertexProgram(vshader->getName()); + + HighLevelGpuProgramPtr fshader; + if (mgr.resourceExists("BBO_FP")) + fshader = mgr.getByName("BBO_FP"); + else + fshader = mgr.createProgram("BBO_FP", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "cg", GPT_FRAGMENT_PROGRAM); + + fshader->setParameter("profiles", "ps_2_x arbfp1"); + fshader->setParameter("entry_point", "main_fp"); + StringUtil::StrStreamType outStream2; + outStream2 << + "void main_fp( \n" + " in float2 uv : TEXCOORD0, \n" + " out float4 oColor : COLOR, \n" + " uniform sampler2D texture : TEXUNIT0, \n" + " uniform float4 diffuse, \n" + " uniform float4 emissive \n" + ") \n" + "{ \n" + " float4 tex = tex2D(texture, uv); \n" + " oColor = float4(emissive.xyz,1) * tex * float4(1,1,1,diffuse.a); \n" + "}"; + fshader->setSource(outStream2.str()); + fshader->load(); + fshader->getDefaultParameters()->setNamedAutoConstant("diffuse", GpuProgramParameters::ACT_SURFACE_DIFFUSE_COLOUR); + fshader->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); + mMaterial->getTechnique(0)->getPass(0)->setFragmentProgram(fshader->getName()); + bodyCount++; } @@ -469,21 +522,42 @@ void SkyManager::create() " float4 position : POSITION, \n" " in float4 color : COLOR, \n" " out float4 oPosition : POSITION, \n" - " out float4 oColor : COLOR, \n" + " out float4 oVertexColor : TEXCOORD0, \n" " uniform float4 emissive, \n" " uniform float4x4 worldViewProj \n" ") \n" "{ \n" " oPosition = mul( worldViewProj, position ); \n" - " oColor = color * emissive; \n" + " oVertexColor = color; \n" "}"; vshader->setSource(outStream.str()); vshader->load(); vshader->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); - vshader->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); mAtmosphereMaterial->getTechnique(0)->getPass(0)->setVertexProgram(vshader->getName()); - mAtmosphereMaterial->getTechnique(0)->getPass(0)->setFragmentProgram(""); + + HighLevelGpuProgramPtr fshader = mgr.createProgram("Atmosphere_FP", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "cg", GPT_FRAGMENT_PROGRAM); + + fshader->setParameter("profiles", "ps_2_x arbfp1"); + fshader->setParameter("entry_point", "main_fp"); + + StringUtil::StrStreamType _outStream; + _outStream << + "void main_fp( \n" + " in float4 iVertexColor : TEXCOORD0, \n" + " out float4 oColor : COLOR, \n" + " uniform float4 emissive, \n" + " uniform float4x4 worldViewProj \n" + ") \n" + "{ \n" + " oColor = iVertexColor * emissive; \n" + "}"; + fshader->setSource(_outStream.str()); + fshader->load(); + + fshader->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); + mAtmosphereMaterial->getTechnique(0)->getPass(0)->setFragmentProgram(fshader->getName()); // Clouds NifOgre::NIFLoader::load("meshes\\sky_clouds_01.nif"); From f6342cfd60ae508bd54b247a3f1ef7c5db1f8f35 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 11:52:06 +0200 Subject: [PATCH 378/488] fixed viewport background color, fixed indentation of some old functions --- apps/openmw/mwrender/renderingmanager.cpp | 76 ++++++++++++----------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 7797d18529..ce4dea74dd 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -284,23 +284,27 @@ bool RenderingManager::toggleRenderMode(int mode) void RenderingManager::configureFog(ESMS::CellStore &mCell) { - Ogre::ColourValue color; - color.setAsABGR (mCell.cell->ambi.fog); + Ogre::ColourValue color; + color.setAsABGR (mCell.cell->ambi.fog); - configureFog(mCell.cell->ambi.fogDensity, color); + configureFog(mCell.cell->ambi.fogDensity, color); } void RenderingManager::configureFog(const float density, const Ogre::ColourValue& colour) { - float max = Settings::Manager::getFloat("max viewing distance", "Viewing distance"); + float max = Settings::Manager::getFloat("max viewing distance", "Viewing distance"); - float low = max / (density) * Settings::Manager::getFloat("fog start factor", "Viewing distance"); - float high = max / (density) * Settings::Manager::getFloat("fog end factor", "Viewing distance"); + float low = max / (density) * Settings::Manager::getFloat("fog start factor", "Viewing distance"); + float high = max / (density) * Settings::Manager::getFloat("fog end factor", "Viewing distance"); - mRendering.getScene()->setFog (FOG_LINEAR, colour, 0, low, high); + mRendering.getScene()->setFog (FOG_LINEAR, colour, 0, low, high); - mRendering.getCamera()->setFarClipDistance ( max / density ); - mRendering.getViewport()->setBackgroundColour (colour); + mRendering.getCamera()->setFarClipDistance ( max / density ); + mRendering.getViewport()->setBackgroundColour (colour); + + CompositorInstance* inst = CompositorManager::getSingleton().getCompositorChain(mRendering.getViewport())->getCompositor("gbuffer"); + if (inst != 0) + inst->getCompositor()->getTechnique(0)->getTargetPass(0)->getPass(0)->setClearColour(colour); } @@ -327,41 +331,43 @@ void RenderingManager::setAmbientMode() void RenderingManager::configureAmbient(ESMS::CellStore &mCell) { - mAmbientColor.setAsABGR (mCell.cell->ambi.ambient); - setAmbientMode(); + mAmbientColor.setAsABGR (mCell.cell->ambi.ambient); + setAmbientMode(); - // Create a "sun" that shines light downwards. It doesn't look - // completely right, but leave it for now. - if(!mSun) - { - mSun = mRendering.getScene()->createLight(); - } - Ogre::ColourValue colour; - colour.setAsABGR (mCell.cell->ambi.sunlight); - mSun->setDiffuseColour (colour); - mSun->setType(Ogre::Light::LT_DIRECTIONAL); - mSun->setDirection(0,-1,0); + // Create a "sun" that shines light downwards. It doesn't look + // completely right, but leave it for now. + if(!mSun) + { + mSun = mRendering.getScene()->createLight(); + } + Ogre::ColourValue colour; + colour.setAsABGR (mCell.cell->ambi.sunlight); + mSun->setDiffuseColour (colour); + mSun->setType(Ogre::Light::LT_DIRECTIONAL); + mSun->setDirection(0,-1,0); } // Switch through lighting modes. void RenderingManager::toggleLight() { - if (mAmbientMode==2) - mAmbientMode = 0; - else - ++mAmbientMode; + if (mAmbientMode==2) + mAmbientMode = 0; + else + ++mAmbientMode; - switch (mAmbientMode) - { - case 0: std::cout << "Setting lights to normal\n"; break; - case 1: std::cout << "Turning the lights up\n"; break; - case 2: std::cout << "Turning the lights to full\n"; break; - } + switch (mAmbientMode) + { + case 0: std::cout << "Setting lights to normal\n"; break; + case 1: std::cout << "Turning the lights up\n"; break; + case 2: std::cout << "Turning the lights to full\n"; break; + } - setAmbientMode(); + setAmbientMode(); } -void RenderingManager::checkUnderwater(){ - if(mWater){ +void RenderingManager::checkUnderwater() +{ + if(mWater) + { mWater->checkUnderwater( mRendering.getCamera()->getRealPosition().y ); } } From add4ebe4458fa57e8584bc3db1901a12bb1b2c0c Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 12:59:56 +0200 Subject: [PATCH 379/488] fresnel effect --- files/gbuffer/gbuffer.compositor | 1 + files/water/water.cg | 12 +++++++----- files/water/water.material | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/files/gbuffer/gbuffer.compositor b/files/gbuffer/gbuffer.compositor index a81ad18c3f..fb12b8bf46 100644 --- a/files/gbuffer/gbuffer.compositor +++ b/files/gbuffer/gbuffer.compositor @@ -11,6 +11,7 @@ compositor gbuffer input none pass clear { + // make sure to set this to the viewport background color from outside colour_value 0 0 0 1 } pass render_scene diff --git a/files/water/water.cg b/files/water/water.cg index bd18286bc0..10b42eec04 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -64,7 +64,6 @@ void main_fp float4 normal = tex2D(normalMap, uv1) + tex2D(normalMap, uv2) + tex2D(normalMap, uv3) + tex2D(normalMap, uv4); normal = normal / 4.f; normal = 2*normal - 1; - //normal = normalize(normal); float2 screenCoords_reflect = screenCoords + normal.yx * 0.05; float2 screenCoords_refract = screenCoords + normal.yx * 0.1 * depth1; @@ -72,11 +71,14 @@ void main_fp float4 reflection = tex2D(reflectionMap, screenCoords_reflect); float4 refraction = tex2D(refractionMap, screenCoords_refract); - // fresnel - //float facing = 1.0 - max(abs(dot(iEyeVector.xyz, normal.xyz)), 0); - //float reflectionFactor = saturate(0.3 + 0.7 * pow(facing, 2)); + // tangent to object space + normal.xyz = normal.xzy; - oColor.xyz = lerp(refraction.xyz, reflection.xyz, depth1); + // fresnel + float facing = 1.0 - max(abs(dot(normalize(iEyeVector.xyz), normal.xyz)), 0); + float reflectionFactor = saturate(0.3 + 0.7 * pow(facing, 2)); + + oColor.xyz = lerp(refraction.xyz, reflection.xyz, depth1 * reflectionFactor); float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); diff --git a/files/water/water.material b/files/water/water.material index ffd813e16c..95a0aef788 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -48,7 +48,7 @@ material Water vertex_program_ref Water_VP { - //param_named_auto camPosObjSpace camera_position_object_space + param_named_auto camPosObjSpace camera_position_object_space } fragment_program_ref Water_FP { From f2c4e513a426f1215ed0df37a60e3b41e787788c Mon Sep 17 00:00:00 2001 From: k1ll Date: Thu, 5 Apr 2012 13:01:09 +0200 Subject: [PATCH 380/488] Add support for building with a static build of the MyGui Libraries. --- CMakeLists.txt | 1 + cmake/FindMyGUI.cmake | 45 +++++++++++++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e0f67e4bf5..71f36fe3de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,7 @@ set (OPENMW_VERSION "${OPENMW_VERSION_MAJOR}.${OPENMW_VERSION_MINOR}.${OPENMW_VE configure_file ("${OpenMW_SOURCE_DIR}/Docs/mainpage.hpp.cmake" "${OpenMW_SOURCE_DIR}/Docs/mainpage.hpp") +option(MYGUI_STATIC "Link static build of Mygui into the binaries" FALSE) option(OGRE_STATIC "Link static build of Ogre and Ogre Plugins into the binaries" FALSE) # Sound source selection diff --git a/cmake/FindMyGUI.cmake b/cmake/FindMyGUI.cmake index cc97992084..6731d584c0 100644 --- a/cmake/FindMyGUI.cmake +++ b/cmake/FindMyGUI.cmake @@ -82,20 +82,37 @@ findpkg_finish ( "MYGUI" ) ELSE (WIN32) #Unix CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR) FIND_PACKAGE(PkgConfig) - PKG_SEARCH_MODULE(MYGUI MYGUI MyGUI) - IF (MYGUI_INCLUDE_DIRS) - SET(MYGUI_INCLUDE_DIRS ${MYGUI_INCLUDE_DIRS}) - SET(MYGUI_LIB_DIR ${MYGUI_LIBDIR}) - SET(MYGUI_LIBRARIES ${MYGUI_LIBRARIES} CACHE STRING "") - SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") - ELSE (MYGUI_INCLUDE_DIRS) - FIND_PATH(MYGUI_INCLUDE_DIRS MyGUI.h PATHS /usr/local/include /usr/include PATH_SUFFIXES MyGUI MYGUI) - FIND_LIBRARY(MYGUI_LIBRARIES mygui PATHS /usr/lib /usr/local/lib) - SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") - SET(MYGUI_LIB_DIR ${MYGUI_LIBRARIES}) - STRING(REGEX REPLACE "(.*)/.*" "\\1" MYGUI_LIB_DIR "${MYGUI_LIB_DIR}") - STRING(REGEX REPLACE ".*/" "" MYGUI_LIBRARIES "${MYGUI_LIBRARIES}") - ENDIF (MYGUI_INCLUDE_DIRS) + IF(MYGUI_STATIC) + PKG_SEARCH_MODULE(MYGUI MYGUIStatic MyGUIStatic) + IF (MYGUI_INCLUDE_DIRS) + SET(MYGUI_INCLUDE_DIRS ${MYGUI_INCLUDE_DIRS}) + SET(MYGUI_LIB_DIR ${MYGUI_LIBDIR}) + SET(MYGUI_LIBRARIES ${MYGUI_LIBRARIES} CACHE STRING "") + SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") + ELSE (MYGUI_INCLUDE_DIRS) + FIND_PATH(MYGUI_INCLUDE_DIRS MyGUI.h PATHS /usr/local/include /usr/include PATH_SUFFIXES MyGUI MYGUI) + FIND_LIBRARY(MYGUI_LIBRARIES myguistatic PATHS /usr/lib /usr/local/lib) + SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") + SET(MYGUI_LIB_DIR ${MYGUI_LIBRARIES}) + STRING(REGEX REPLACE "(.*)/.*" "\\1" MYGUI_LIB_DIR "${MYGUI_LIB_DIR}") + STRING(REGEX REPLACE ".*/" "" MYGUI_LIBRARIES "${MYGUI_LIBRARIES}") + ENDIF (MYGUI_INCLUDE_DIRS) + ELSE(MYGUI_STATIC) + PKG_SEARCH_MODULE(MYGUI MYGUI MyGUI) + IF (MYGUI_INCLUDE_DIRS) + SET(MYGUI_INCLUDE_DIRS ${MYGUI_INCLUDE_DIRS}) + SET(MYGUI_LIB_DIR ${MYGUI_LIBDIR}) + SET(MYGUI_LIBRARIES ${MYGUI_LIBRARIES} CACHE STRING "") + SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") + ELSE (MYGUI_INCLUDE_DIRS) + FIND_PATH(MYGUI_INCLUDE_DIRS MyGUI.h PATHS /usr/local/include /usr/include PATH_SUFFIXES MyGUI MYGUI) + FIND_LIBRARY(MYGUI_LIBRARIES mygui PATHS /usr/lib /usr/local/lib) + SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") + SET(MYGUI_LIB_DIR ${MYGUI_LIBRARIES}) + STRING(REGEX REPLACE "(.*)/.*" "\\1" MYGUI_LIB_DIR "${MYGUI_LIB_DIR}") + STRING(REGEX REPLACE ".*/" "" MYGUI_LIBRARIES "${MYGUI_LIBRARIES}") + ENDIF (MYGUI_INCLUDE_DIRS) + ENDIF(MYGUI_STATIC) ENDIF (WIN32) #Do some preparation From f49131e1b8a2c8a1976c643b77eb76f56b4bcb42 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 13:09:59 +0200 Subject: [PATCH 381/488] renamed setting, automatically disable MRT when unsupported --- apps/openmw/mwrender/renderingmanager.cpp | 6 ++++++ apps/openmw/mwrender/water.cpp | 2 +- files/settings-default.cfg | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index ce4dea74dd..97312b6974 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -37,6 +37,12 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const // Load resources ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); + // disable MRT if it is unsupported + const RenderSystemCapabilities* caps = Root::getSingleton().getRenderSystem()->getCapabilities(); + if (caps->getNumMultiRenderTargets() < 2 + || (!caps->isShaderProfileSupported("fp40") && !caps->isShaderProfileSupported("ps_3_0"))) + Settings::Manager::setBool("multiple render targets", "Render", false); + if (Settings::Manager::getBool("multiple render targets", "Render")) { CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbuffer"); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 1caced9f53..7e9dd957ba 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -52,7 +52,7 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : // Create rendertarget for reflection int rttsize = Settings::Manager::getInt("rtt size", "Water"); - if (Settings::Manager::getBool("reflection", "Water")) + if (Settings::Manager::getBool("shader", "Water") && Settings::Manager::getBool("multiple render targets", "Render")) { TexturePtr tex = TextureManager::getSingleton().createManual("WaterReflection", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_R8G8B8, TU_RENDERTARGET); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 9be18f61be..7791f39ab1 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -44,7 +44,7 @@ num lights = 8 [Water] -reflection = false +shader = false rtt size = 256 From 43fd0352f44fe8a1d6044573af18c24b2aa51a80 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 14:21:57 +0200 Subject: [PATCH 382/488] removed unneeded lines --- apps/openmw/mwrender/sky.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 3f815d9fcc..89c1f3c095 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -523,7 +523,6 @@ void SkyManager::create() " in float4 color : COLOR, \n" " out float4 oPosition : POSITION, \n" " out float4 oVertexColor : TEXCOORD0, \n" - " uniform float4 emissive, \n" " uniform float4x4 worldViewProj \n" ") \n" "{ \n" @@ -548,7 +547,6 @@ void SkyManager::create() " in float4 iVertexColor : TEXCOORD0, \n" " out float4 oColor : COLOR, \n" " uniform float4 emissive, \n" - " uniform float4x4 worldViewProj \n" ") \n" "{ \n" " oColor = iVertexColor * emissive; \n" From e1bde415f5bf775c953cd6b551423c37420b634f Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 14:22:44 +0200 Subject: [PATCH 383/488] typo --- apps/openmw/mwrender/sky.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 89c1f3c095..02af314a85 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -546,7 +546,7 @@ void SkyManager::create() "void main_fp( \n" " in float4 iVertexColor : TEXCOORD0, \n" " out float4 oColor : COLOR, \n" - " uniform float4 emissive, \n" + " uniform float4 emissive \n" ") \n" "{ \n" " oColor = iVertexColor * emissive; \n" From 01500e979a09cb4d2012a20a207cab85e367fbc2 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Thu, 5 Apr 2012 14:27:39 +0200 Subject: [PATCH 384/488] another fix for optional arguments --- components/compiler/parser.cpp | 11 +++++++++++ components/compiler/stringparser.cpp | 5 ----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/components/compiler/parser.cpp b/components/compiler/parser.cpp index 73cadfeba1..90368eee01 100644 --- a/components/compiler/parser.cpp +++ b/components/compiler/parser.cpp @@ -7,6 +7,7 @@ #include "errorhandler.hpp" #include "exception.hpp" +#include "scanner.hpp" namespace Compiler { @@ -81,6 +82,8 @@ namespace Compiler { if (!(mOptional && mEmpty)) reportSeriousError ("Unexpected numeric value", loc); + else + scanner.putbackInt (value, loc); return false; } @@ -94,6 +97,8 @@ namespace Compiler { if (!(mOptional && mEmpty)) reportSeriousError ("Unexpected floating point value", loc); + else + scanner.putbackFloat (value, loc); return false; } @@ -108,6 +113,8 @@ namespace Compiler { if (!(mOptional && mEmpty)) reportSeriousError ("Unexpected name", loc); + else + scanner.putbackName (name, loc); return false; } @@ -121,6 +128,8 @@ namespace Compiler { if (!(mOptional && mEmpty)) reportSeriousError ("Unexpected keyword", loc); + else + scanner.putbackKeyword (keyword, loc); return false; } @@ -134,6 +143,8 @@ namespace Compiler { if (!(mOptional && mEmpty)) reportSeriousError ("Unexpected special token", loc); + else + scanner.putbackSpecial (code, loc); return false; } diff --git a/components/compiler/stringparser.cpp b/components/compiler/stringparser.cpp index fe7bd30b9e..396a88c786 100644 --- a/components/compiler/stringparser.cpp +++ b/components/compiler/stringparser.cpp @@ -39,11 +39,6 @@ namespace Compiler mState = CommaState; return true; } - else if (code==Scanner::S_newline && mState==StartState) - { - scanner.putbackSpecial (code, loc); - return false; - } return Parser::parseSpecial (code, loc, scanner); } From 84b475130a88e32398120c5eb86bcfed5d6c0ff1 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Thu, 5 Apr 2012 13:19:51 +0400 Subject: [PATCH 385/488] Add missing include --- apps/openmw/mwrender/occlusionquery.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 781b522b63..0c917cda19 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -6,6 +6,7 @@ #include #include #include +#include using namespace MWRender; using namespace Ogre; From 1b89a9e203f95427b3989ca3d5d4f30b5e064fd4 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 15:30:55 +0200 Subject: [PATCH 386/488] various fixes --- apps/openmw/mwrender/renderingmanager.cpp | 9 +++--- apps/openmw/mwrender/sky.cpp | 10 +++++++ apps/openmw/mwrender/sky.hpp | 3 ++ apps/openmw/mwrender/water.cpp | 34 +++++++++++++++-------- apps/openmw/mwrender/water.hpp | 2 ++ files/water/water.cg | 2 +- 6 files changed, 43 insertions(+), 17 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 97312b6974..c2ad2a0432 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -27,6 +27,8 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mTerrainManager = new TerrainManager(mRendering.getScene(), environment); + mWater = 0; + //The fog type must be set before any terrain objects are created as if the //fog type is set to FOG_NONE then the initially created terrain won't have any fog configureFog(1, ColourValue(1,1,1)); @@ -39,8 +41,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const // disable MRT if it is unsupported const RenderSystemCapabilities* caps = Root::getSingleton().getRenderSystem()->getCapabilities(); - if (caps->getNumMultiRenderTargets() < 2 - || (!caps->isShaderProfileSupported("fp40") && !caps->isShaderProfileSupported("ps_3_0"))) + if (caps->getNumMultiRenderTargets() < 2) Settings::Manager::setBool("multiple render targets", "Render", false); if (Settings::Manager::getBool("multiple render targets", "Render")) @@ -73,8 +74,6 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mOcclusionQuery = new OcclusionQuery(&mRendering, mSkyManager->getSunNode()); - mWater = 0; - mPlayer = new MWRender::Player (mRendering.getCamera(), playerNode); mSun = 0; @@ -311,6 +310,8 @@ void RenderingManager::configureFog(const float density, const Ogre::ColourValue CompositorInstance* inst = CompositorManager::getSingleton().getCompositorChain(mRendering.getViewport())->getCompositor("gbuffer"); if (inst != 0) inst->getCompositor()->getTechnique(0)->getTargetPass(0)->getPass(0)->setClearColour(colour); + if (mWater) + mWater->setViewportBackground(colour); } diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 02af314a85..43ef31d861 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -913,3 +913,13 @@ Ogre::SceneNode* SkyManager::getSunNode() if (!mCreated) return 0; return mSun->getNode(); } + +void SkyManager::setSkyPosition(const Ogre::Vector3& position) +{ + mRootNode->_setDerivedPosition(position); +} + +void SkyManager::resetSkyPosition() +{ + mRootNode->setPosition(0,0,0); +} diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index baf5933cbc..c18b9f4843 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -168,6 +168,9 @@ namespace MWRender void setGlare(const float glare); Ogre::Vector3 getRealSunPos(); + void setSkyPosition(const Ogre::Vector3& position); + void resetSkyPosition(); + private: bool mCreated; diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 7e9dd957ba..cce25d1e96 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -36,8 +36,8 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : + RV_Statics * Settings::Manager::getBool("reflect statics", "Water") + RV_StaticsSmall * Settings::Manager::getBool("reflect small statics", "Water") + RV_Actors * Settings::Manager::getBool("reflect actors", "Water") - + RV_Misc * Settings::Manager::getBool("reflect misc", "Water"); - //+ RV_Sky; + + RV_Misc * Settings::Manager::getBool("reflect misc", "Water") + + RV_Sky; mReflectDistance = Settings::Manager::getInt("reflect distance", "Water"); mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); @@ -145,11 +145,14 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) if (mReflectDistance != 0) mCamera->setFarClipDistance(mReflectDistance); - if (evt.source == mReflectionTarget) - { - mCamera->enableCustomNearClipPlane(Plane(Vector3::UNIT_Y, mTop)); - mCamera->enableReflection(Plane(Vector3::UNIT_Y, mTop)); - } + if (evt.source == mReflectionTarget) + { + Vector3 pos = mCamera->getRealPosition(); + pos.y = mTop*2 - pos.y; + mSky->setSkyPosition(pos); + mCamera->enableCustomNearClipPlane(Plane(Vector3::UNIT_Y, mTop)); + mCamera->enableReflection(Plane(Vector3::UNIT_Y, mTop)); + } } void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) @@ -158,11 +161,12 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) mCamera->setFarClipDistance(mOldCameraFarClip); - if (evt.source == mReflectionTarget) - { - mCamera->disableReflection(); - mCamera->disableCustomNearClipPlane(); - } + if (evt.source == mReflectionTarget) + { + mSky->resetSkyPosition(); + mCamera->disableReflection(); + mCamera->disableCustomNearClipPlane(); + } } Ogre::MaterialPtr Water::createMaterial() @@ -199,4 +203,10 @@ Ogre::MaterialPtr Water::createMaterial() return mat; } +void Water::setViewportBackground(const ColourValue& bg) +{ + if (mReflectionTarget) + mReflectionTarget->getViewport(0)->setBackgroundColour(bg); +} + } // namespace diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 8e9014833e..964a8c7354 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -50,6 +50,8 @@ namespace MWRender { void toggle(); + void setViewportBackground(const Ogre::ColourValue& bg); + void checkUnderwater(float y); void changeCell(const ESM::Cell* cell); void setHeight(const float height); diff --git a/files/water/water.cg b/files/water/water.cg index 10b42eec04..188c37709c 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -76,7 +76,7 @@ void main_fp // fresnel float facing = 1.0 - max(abs(dot(normalize(iEyeVector.xyz), normal.xyz)), 0); - float reflectionFactor = saturate(0.3 + 0.7 * pow(facing, 2)); + float reflectionFactor = saturate(0.35 + 0.65 * pow(facing, 2)); oColor.xyz = lerp(refraction.xyz, reflection.xyz, depth1 * reflectionFactor); From b8a470efcdf4b592dae3cf02f9cc211059ca0018 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 19:07:21 +0200 Subject: [PATCH 387/488] put transparent objects in a seperate render queue, in order to not mess up the mrt textures --- apps/openmw/mwrender/objects.cpp | 31 +++++++++++++++++++++++++--- apps/openmw/mwrender/objects.hpp | 1 + apps/openmw/mwrender/renderconst.hpp | 4 +++- apps/openmw/mwrender/water.cpp | 2 +- files/gbuffer/gbuffer.compositor | 4 ++-- files/water/water.material | 3 --- 6 files changed, 35 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 9d743fe90b..a388d31636 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -131,7 +131,6 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) } } } - ent->setRenderQueueGroup(transparent ? RQG_Alpha : RQG_Main); if(!mIsStatic || !Settings::Manager::getBool("use static geometry", "Objects")) { @@ -139,12 +138,24 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "Viewing distance") : 0); ent->setVisibilityFlags(mIsStatic ? (small ? RV_StaticsSmall : RV_Statics) : RV_Misc); + ent->setRenderQueueGroup(transparent ? RQG_Alpha : RQG_Main); } else { Ogre::StaticGeometry* sg = 0; - if (small) + if (transparent) + { + if( mStaticGeometryAlpha.find(ptr.getCell()) == mStaticGeometryAlpha.end()) + { + uniqueID = uniqueID +1; + sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); + mStaticGeometryAlpha[ptr.getCell()] = sg; + } + else + sg = mStaticGeometryAlpha[ptr.getCell()]; + } + else if (small) { if( mStaticGeometrySmall.find(ptr.getCell()) == mStaticGeometrySmall.end()) { @@ -152,7 +163,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); mStaticGeometrySmall[ptr.getCell()] = sg; - sg->setRenderingDistance(Settings::Manager::getInt("small object distance", "Viewing distance")); /// \todo config value + sg->setRenderingDistance(Settings::Manager::getInt("small object distance", "Viewing distance")); } else sg = mStaticGeometrySmall[ptr.getCell()]; @@ -182,6 +193,8 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) sg->setVisibilityFlags(small ? RV_StaticsSmall : RV_Statics); + sg->setRenderQueueGroup(transparent ? RQG_Alpha : RQG_Main); + mRenderer.getScene()->destroyEntity(ent); } } @@ -275,6 +288,13 @@ void Objects::removeCell(MWWorld::Ptr::CellStore* store) mRenderer.getScene()->destroyStaticGeometry (sg); sg = 0; } + if(mStaticGeometryAlpha.find(store) != mStaticGeometryAlpha.end()) + { + Ogre::StaticGeometry* sg = mStaticGeometryAlpha[store]; + mStaticGeometryAlpha.erase(store); + mRenderer.getScene()->destroyStaticGeometry (sg); + sg = 0; + } if(mBounds.find(store) != mBounds.end()) mBounds.erase(store); @@ -292,6 +312,11 @@ void Objects::buildStaticGeometry(ESMS::CellStore& cell) Ogre::StaticGeometry* sg = mStaticGeometrySmall[&cell]; sg->build(); } + if(mStaticGeometryAlpha.find(&cell) != mStaticGeometryAlpha.end()) + { + Ogre::StaticGeometry* sg = mStaticGeometryAlpha[&cell]; + sg->build(); + } } Ogre::AxisAlignedBox Objects::getDimensions(MWWorld::Ptr::CellStore* cell) diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index 5911aa4ccf..4326ce3265 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -15,6 +15,7 @@ class Objects{ std::map mCellSceneNodes; std::map mStaticGeometry; std::map mStaticGeometrySmall; + std::map mStaticGeometryAlpha; std::map mBounds; std::vector mLights; Ogre::SceneNode* mMwRoot; diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp index 113024ace8..26d56a75c8 100644 --- a/apps/openmw/mwrender/renderconst.hpp +++ b/apps/openmw/mwrender/renderconst.hpp @@ -14,10 +14,12 @@ enum RenderQueueGroups RQG_Main = Ogre::RENDER_QUEUE_MAIN, - RQG_OcclusionQuery = Ogre::RENDER_QUEUE_MAIN+1, + RQG_Water = Ogre::RENDER_QUEUE_6, RQG_Alpha = Ogre::RENDER_QUEUE_7, + RQG_OcclusionQuery = Ogre::RENDER_QUEUE_8, + // Sky late (sun & sun flare) RQG_SkiesLate = Ogre::RENDER_QUEUE_SKIES_LATE }; diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index cce25d1e96..d4ec9aeeaf 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -30,7 +30,7 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mWater = mSceneManager->createEntity("water"); mWater->setVisibilityFlags(RV_Water); - mWater->setRenderQueueGroup(RQG_Alpha); + mWater->setRenderQueueGroup(RQG_Water); mVisibilityFlags = RV_Terrain * Settings::Manager::getBool("reflect terrain", "Water") + RV_Statics * Settings::Manager::getBool("reflect statics", "Water") diff --git a/files/gbuffer/gbuffer.compositor b/files/gbuffer/gbuffer.compositor index fb12b8bf46..8ab5665dda 100644 --- a/files/gbuffer/gbuffer.compositor +++ b/files/gbuffer/gbuffer.compositor @@ -17,7 +17,7 @@ compositor gbuffer pass render_scene { first_render_queue 0 - last_render_queue 69 + last_render_queue 59 } } @@ -63,7 +63,7 @@ compositor gbufferFinalizer } pass render_scene { - first_render_queue 70 + first_render_queue 60 last_render_queue 100 } } diff --git a/files/water/water.material b/files/water/water.material index 95a0aef788..f21f929d48 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -43,9 +43,6 @@ material Water { pass { - scene_blend alpha_blend - depth_write off - vertex_program_ref Water_VP { param_named_auto camPosObjSpace camera_position_object_space From 622fb568cf82526874b71d8dea15bbe38b88fc28 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 19:27:54 +0200 Subject: [PATCH 388/488] removed MRT setting and figure it out automatically --- apps/openmw/mwrender/renderingmanager.cpp | 20 ++++++++++++++------ apps/openmw/mwrender/renderingmanager.hpp | 2 ++ apps/openmw/mwrender/terrainmaterial.cpp | 7 ++++--- apps/openmw/mwrender/water.cpp | 4 ++-- components/nifogre/ogre_nif_loader.cpp | 2 +- files/settings-default.cfg | 6 ------ 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index c2ad2a0432..024c10f3d0 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -39,12 +39,12 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const // Load resources ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); - // disable MRT if it is unsupported + // disable unsupported effects const RenderSystemCapabilities* caps = Root::getSingleton().getRenderSystem()->getCapabilities(); if (caps->getNumMultiRenderTargets() < 2) - Settings::Manager::setBool("multiple render targets", "Render", false); + Settings::Manager::setBool("shader", "Water", false); - if (Settings::Manager::getBool("multiple render targets", "Render")) + if (useMRT()) { CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbuffer"); CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", true); @@ -266,8 +266,11 @@ bool RenderingManager::toggleRenderMode(int mode) if (mRendering.getCamera()->getPolygonMode() == PM_SOLID) { // disable compositors - CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", false); - CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", false); + if (useMRT()) + { + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", false); + CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", false); + } mRendering.getCamera()->setPolygonMode(PM_WIREFRAME); return true; @@ -275,7 +278,7 @@ bool RenderingManager::toggleRenderMode(int mode) else { // re-enable compositors - if (Settings::Manager::getBool("multiple render targets", "Render")) + if (useMRT()) { CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", true); CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", true); @@ -449,4 +452,9 @@ void RenderingManager::enableLights() mObjects.enableLights(); } +const bool RenderingManager::useMRT() +{ + return Settings::Manager::getBool("shader", "Water"); +} + } // namespace diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 27cd67bbc0..da9c55cb5a 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -81,6 +81,8 @@ class RenderingManager: private RenderingInterface { void removeWater(); + static const bool useMRT(); + void preCellChange (MWWorld::Ptr::CellStore* store); ///< this event is fired immediately before changing cell diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 867ec8e1fd..87798006c3 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -37,6 +37,7 @@ THE SOFTWARE. #include "OgreShadowCameraSetupPSSM.h" #include +#include "renderingmanager.hpp" namespace Ogre { @@ -558,7 +559,7 @@ namespace Ogre //params->setNamedAutoConstant("lightSpecularColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR, i); } - if (Settings::Manager::getBool("multiple render targets", "Render")) + if (MWRender::RenderingManager::useMRT()) params->setNamedAutoConstant("far", GpuProgramParameters::ACT_FAR_CLIP_DISTANCE); params->setNamedAutoConstant("eyePosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); @@ -1032,7 +1033,7 @@ namespace Ogre __FUNCTION__); } - if (Settings::Manager::getBool("multiple render targets", "Render")) outStream << + if (MWRender::RenderingManager::useMRT()) outStream << " , out float4 oColor : COLOR \n" " , out float4 oColor1 : COLOR1 \n" " , uniform float far \n"; @@ -1348,7 +1349,7 @@ namespace Ogre // Final return outStream << " oColor = outputCol;\n"; - if (Settings::Manager::getBool("multiple render targets", "Render")) outStream << + if (MWRender::RenderingManager::useMRT()) outStream << " oColor1 = float4(uvMisc.z / far, 0, 0, 1); \n"; outStream diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index d4ec9aeeaf..cbce0d0750 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -52,7 +52,7 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : // Create rendertarget for reflection int rttsize = Settings::Manager::getInt("rtt size", "Water"); - if (Settings::Manager::getBool("shader", "Water") && Settings::Manager::getBool("multiple render targets", "Render")) + if (Settings::Manager::getBool("shader", "Water")) { TexturePtr tex = TextureManager::getSingleton().createManual("WaterReflection", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_R8G8B8, TU_RENDERTARGET); @@ -185,7 +185,7 @@ Ogre::MaterialPtr Water::createMaterial() if (mReflectionTarget == 0) mat->removeTechnique(0); - if (Settings::Manager::getBool("multiple render targets", "Render")) + if (Settings::Manager::getBool("shader", "Water")) { CompositorInstance* compositor = CompositorManager::getSingleton().getCompositorChain(mViewport)->getCompositor("gbuffer"); diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 83510db139..d2b53291e6 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -302,7 +302,7 @@ void NIFLoader::createMaterial(const String &name, if (Settings::Manager::getBool("shaders", "Objects")) { - bool mrt = Settings::Manager::getBool("multiple render targets", "Render"); + bool mrt = Settings::Manager::getBool("shader", "Water"); // Create shader for the material // vertex diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 7791f39ab1..90f832b998 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -57,9 +57,3 @@ reflect small statics = false reflect actors = true reflect misc = false - -[Render] - -# Only supported on SM3+ cards -# If you have a lower end card, this will be disabled automatically -multiple render targets = true From a3151fe525651f0535586f7b84239d269b831014 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 21:16:51 +0200 Subject: [PATCH 389/488] fixed input handling priority in the main loop --- apps/openmw/engine.cpp | 3 +++ apps/openmw/mwinput/inputmanager.cpp | 13 +++++++------ apps/openmw/mwinput/inputmanager.hpp | 2 ++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 3d88fd1415..a88588b9c0 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -124,6 +124,9 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt) { mEnvironment.mFrameDuration = evt.timeSinceLastFrame; + // update input + mEnvironment.mInputManager->update(); + // sound if (mUseSound) mEnvironment.mSoundManager->update (evt.timeSinceLastFrame); diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index 88534dddae..a86e80e5b7 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -200,8 +200,6 @@ namespace MWInput // Add the exit listener ogre.getRoot()->addFrameListener(&exit); - // Add ourselves as a frame listener to catch movement keys - ogre.getRoot()->addFrameListener(this); // Set up the mouse handler and tell it about the player camera mouse = MouseLookEventPtr(new MouseLookEvent(player.getRenderer()->getCamera())); @@ -262,7 +260,7 @@ namespace MWInput } //NOTE: Used to check for movement keys - bool frameRenderingQueued (const Ogre::FrameEvent &evt) + void update () { // Tell OIS to handle all input events input.capture(); @@ -276,7 +274,7 @@ namespace MWInput windows.update(); // Disable movement in Gui mode - if (windows.isGuiMode()) return true; + if (windows.isGuiMode()) return; // Configure player movement according to keyboard input. Actual movement will // be done in the physics system. @@ -305,8 +303,6 @@ namespace MWInput } else player.setForwardBackward (0); - - return true; } // Switch between gui modes. Besides controlling the Gui windows @@ -358,4 +354,9 @@ namespace MWInput { impl->setGuiMode(mode); } + + void MWInputManager::update() + { + impl->update(); + } } diff --git a/apps/openmw/mwinput/inputmanager.hpp b/apps/openmw/mwinput/inputmanager.hpp index 6b8034c8b4..721c77d9fd 100644 --- a/apps/openmw/mwinput/inputmanager.hpp +++ b/apps/openmw/mwinput/inputmanager.hpp @@ -48,6 +48,8 @@ namespace MWInput OMW::Engine& engine); ~MWInputManager(); + void update(); + void setGuiMode(MWGui::GuiMode mode); }; } From b36c0d95b80c565e1cb9c4f94a8b24a44891db6b Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 22:11:04 +0200 Subject: [PATCH 390/488] night transition fix --- apps/openmw/mwworld/weather.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index 09fd200762..8422dd916f 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -472,6 +472,7 @@ WeatherResult WeatherManager::transition(float factor) result.mCloudSpeed = current.mCloudSpeed; result.mCloudOpacity = lerp(current.mCloudOpacity, other.mCloudOpacity); result.mGlareView = lerp(current.mGlareView, other.mGlareView); + result.mNightFade = lerp(current.mNightFade, other.mNightFade); result.mNight = current.mNight; From e718d4b6f060ec1fcbd09db83829dce84449d0fe Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 5 Apr 2012 22:36:48 +0200 Subject: [PATCH 391/488] another sky fix --- apps/openmw/mwworld/weather.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index 8422dd916f..80035df14c 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -521,23 +521,23 @@ void WeatherManager::update(float duration) srand(time(NULL)); float random = ((rand()%100)/100.f) * total; - //if (random > snow+blight+ash+thunder+rain+overcast+foggy+cloudy+clear) + //if (random >= snow+blight+ash+thunder+rain+overcast+foggy+cloudy+clear) // weather = "blizzard"; - //else if (random > blight+ash+thunder+rain+overcast+foggy+cloudy+clear) + //else if (random >= blight+ash+thunder+rain+overcast+foggy+cloudy+clear) // weather = "snow"; - /*else*/ if (random > ash+thunder+rain+overcast+foggy+cloudy+clear) + /*else*/ if (random >= ash+thunder+rain+overcast+foggy+cloudy+clear) weather = "blight"; - else if (random > thunder+rain+overcast+foggy+cloudy+clear) + else if (random >= thunder+rain+overcast+foggy+cloudy+clear) weather = "ashstorm"; - else if (random > rain+overcast+foggy+cloudy+clear) + else if (random >= rain+overcast+foggy+cloudy+clear) weather = "thunderstorm"; - else if (random > overcast+foggy+cloudy+clear) + else if (random >= overcast+foggy+cloudy+clear) weather = "rain"; - else if (random > foggy+cloudy+clear) + else if (random >= foggy+cloudy+clear) weather = "overcast"; - else if (random > cloudy+clear) + else if (random >= cloudy+clear) weather = "foggy"; - else if (random > clear) + else if (random >= clear) weather = "cloudy"; else weather = "clear"; From ef0a185e115aebe56fc12d32785e03f050895b4f Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Fri, 6 Apr 2012 01:17:23 +0300 Subject: [PATCH 392/488] Pinnable windows: hide hud elements Hide elements of the HUD (health/magicka/stamina bars, minimap) when the corresponding windows (stats/map) are pinned. Rearrange the remaining hud elements in such cases (like in the original Morrowind). --- apps/openmw/mwgui/layouts.cpp | 57 ++++++++++++++++++++++ apps/openmw/mwgui/layouts.hpp | 16 +++++- apps/openmw/mwgui/map_window.cpp | 12 ++--- apps/openmw/mwgui/map_window.hpp | 7 ++- apps/openmw/mwgui/stats_window.cpp | 5 ++ apps/openmw/mwgui/stats_window.hpp | 3 ++ apps/openmw/mwgui/window_manager.cpp | 10 ++++ apps/openmw/mwgui/window_manager.hpp | 5 ++ apps/openmw/mwgui/window_pinnable_base.cpp | 1 + apps/openmw/mwgui/window_pinnable_base.hpp | 2 + files/mygui/openmw_hud_layout.xml | 28 ++++++----- 11 files changed, 122 insertions(+), 24 deletions(-) diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index af068ffae1..0bca3b5340 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -31,6 +31,11 @@ HUD::HUD(int width, int height, int fpsLevel) , fpscounter(NULL) , trianglecounter(NULL) , batchcounter(NULL) + , hmsBaseLeft(0) + , weapBoxBaseLeft(0) + , spellBoxBaseLeft(0) + , effectBoxBaseRight(0) + , minimapBoxBaseRight(0) { setCoord(0,0, width, height); @@ -38,16 +43,25 @@ HUD::HUD(int width, int height, int fpsLevel) getWidget(health, "Health"); getWidget(magicka, "Magicka"); getWidget(stamina, "Stamina"); + hmsBaseLeft = health->getLeft(); // Item and spell images and status bars + getWidget(weapBox, "WeapBox"); getWidget(weapImage, "WeapImage"); getWidget(weapStatus, "WeapStatus"); + weapBoxBaseLeft = weapBox->getLeft(); + + getWidget(spellBox, "SpellBox"); getWidget(spellImage, "SpellImage"); getWidget(spellStatus, "SpellStatus"); + spellBoxBaseLeft = spellBox->getLeft(); getWidget(effectBox, "EffectBox"); getWidget(effect1, "Effect1"); + effectBoxBaseRight = effectBox->getRight(); + getWidget(minimapBox, "MiniMapBox"); + minimapBoxBaseRight = minimapBox->getRight(); getWidget(minimap, "MiniMap"); getWidget(compass, "Compass"); @@ -163,15 +177,21 @@ void HUD::setValue(const std::string& id, const MWMechanics::DynamicStat& v void HUD::setPlayerDir(const float x, const float y) { + if (!minimapBox->getVisible() || (x == mLastPositionX && y == mLastPositionY)) return; + MyGUI::ISubWidget* main = compass->getSubWidgetMain(); MyGUI::RotatingSkin* rotatingSubskin = main->castType(); rotatingSubskin->setCenter(MyGUI::IntPoint(16,16)); float angle = std::atan2(x,y); rotatingSubskin->setAngle(angle); + mLastPositionX = x; + mLastPositionY = y; } void HUD::setPlayerPos(const float x, const float y) { + if (!minimapBox->getVisible() || (x == mLastDirectionX && y == mLastDirectionY)) return; + MyGUI::IntSize size = minimap->getCanvasSize(); MyGUI::IntPoint middle = MyGUI::IntPoint((1/3.f + x/3.f)*size.width,(1/3.f + y/3.f)*size.height); MyGUI::IntCoord viewsize = minimap->getCoord(); @@ -179,6 +199,39 @@ void HUD::setPlayerPos(const float x, const float y) minimap->setViewOffset(pos); compass->setPosition(MyGUI::IntPoint(x*512-16, y*512-16)); + + mLastDirectionX = x; + mLastDirectionY = y; +} + +void HUD::setBottomLeftVisibility(bool hmsVisible, bool weapVisible, bool spellVisible) +{ + int weapDx = 0, spellDx = 0; + if (!hmsVisible) + spellDx = weapDx = weapBoxBaseLeft - hmsBaseLeft; + + if (!weapVisible) + spellDx -= spellBoxBaseLeft - weapBoxBaseLeft; + + health->setVisible(hmsVisible); + stamina->setVisible(hmsVisible); + magicka->setVisible(hmsVisible); + weapBox->setPosition(weapBoxBaseLeft - weapDx, weapBox->getTop()); + weapBox->setVisible(weapVisible); + spellBox->setPosition(spellBoxBaseLeft - spellDx, spellBox->getTop()); + spellBox->setVisible(spellVisible); +} + +void HUD::setBottomRightVisibility(bool effectBoxVisible, bool minimapBoxVisible) +{ + // effect box can have variable width -> variable left coordinate + int effectsDx = 0; + if (!minimapBoxVisible) + effectsDx = minimapBoxBaseRight - effectBoxBaseRight; + + minimapBox->setVisible(minimapBoxVisible); + effectBox->setPosition(effectBoxBaseRight - effectBox->getWidth() + effectsDx, effectBox->getTop()); + effectBox->setVisible(effectBoxVisible); } LocalMapBase::LocalMapBase() @@ -189,6 +242,10 @@ LocalMapBase::LocalMapBase() , mPrefix() , mChanged(true) , mLayout(NULL) + , mLastPositionX(0.0f) + , mLastPositionY(0.0f) + , mLastDirectionX(0.0f) + , mLastDirectionY(0.0f) { } diff --git a/apps/openmw/mwgui/layouts.hpp b/apps/openmw/mwgui/layouts.hpp index 30bea579c5..42b4a8b9ed 100644 --- a/apps/openmw/mwgui/layouts.hpp +++ b/apps/openmw/mwgui/layouts.hpp @@ -48,6 +48,11 @@ namespace MWGui bool mChanged; OEngine::GUI::Layout* mLayout; + + float mLastPositionX; + float mLastPositionY; + float mLastDirectionX; + float mLastDirectionY; }; class HUD : public OEngine::GUI::Layout, public LocalMapBase @@ -66,11 +71,14 @@ namespace MWGui void setBatchCount(size_t count); void setPlayerDir(const float x, const float y); void setPlayerPos(const float x, const float y); + void setBottomLeftVisibility(bool hmsVisible, bool weapVisible, bool spellVisible); + void setBottomRightVisibility(bool effectBoxVisible, bool minimapVisible); MyGUI::ProgressPtr health, magicka, stamina; + MyGUI::Widget *weapBox, *spellBox; MyGUI::ImageBox *weapImage, *spellImage; MyGUI::ProgressPtr weapStatus, spellStatus; - MyGUI::WidgetPtr effectBox; + MyGUI::Widget *effectBox, *minimapBox; MyGUI::ImageBox* effect1; MyGUI::ScrollView* minimap; MyGUI::ImageBox* compass; @@ -80,6 +88,12 @@ namespace MWGui MyGUI::TextBox* fpscounter; MyGUI::TextBox* trianglecounter; MyGUI::TextBox* batchcounter; + + private: + // bottom left elements + int hmsBaseLeft, weapBoxBaseLeft, spellBoxBaseLeft; + // bottom right elements + int minimapBoxBaseRight, effectBoxBaseRight; }; class MainMenu : public OEngine::GUI::Layout diff --git a/apps/openmw/mwgui/map_window.cpp b/apps/openmw/mwgui/map_window.cpp index b4e8aa4d64..0e9d57c3c2 100644 --- a/apps/openmw/mwgui/map_window.cpp +++ b/apps/openmw/mwgui/map_window.cpp @@ -1,7 +1,7 @@ #include "map_window.hpp" +#include "window_manager.hpp" /* #include "../mwmechanics/mechanicsmanager.hpp" -#include "window_manager.hpp" #include #include @@ -14,11 +14,7 @@ using namespace MWGui; MapWindow::MapWindow(WindowManager& parWindowManager) : MWGui::WindowPinnableBase("openmw_map_window_layout.xml", parWindowManager), - mGlobal(false), - mLastPositionX(0.0f), - mLastPositionY(0.0f), - mLastDirectionX(0.0f), - mLastDirectionY(0.0f) + mGlobal(false) { setCoord(500,0,320,300); setText("WorldButton", "World"); @@ -104,3 +100,7 @@ void MapWindow::onWorldButtonClicked(MyGUI::Widget* _sender) mButton->setCaption( mGlobal ? "Local" : "World" ); } +void MapWindow::onPinToggled() +{ + mWindowManager.setMinimapVisibility(!mPinned); +} diff --git a/apps/openmw/mwgui/map_window.hpp b/apps/openmw/mwgui/map_window.hpp index cad652bff2..d14221a408 100644 --- a/apps/openmw/mwgui/map_window.hpp +++ b/apps/openmw/mwgui/map_window.hpp @@ -26,10 +26,9 @@ namespace MWGui MyGUI::Button* mButton; MyGUI::IntPoint mLastDragPos; bool mGlobal; - float mLastPositionX; - float mLastPositionY; - float mLastDirectionX; - float mLastDirectionY; + + protected: + virtual void onPinToggled(); }; } #endif diff --git a/apps/openmw/mwgui/stats_window.cpp b/apps/openmw/mwgui/stats_window.cpp index 3ded9713af..675e5141fa 100644 --- a/apps/openmw/mwgui/stats_window.cpp +++ b/apps/openmw/mwgui/stats_window.cpp @@ -381,3 +381,8 @@ void StatsWindow::updateScroller() skillScrollerWidget->setScrollRange(std::max(clientHeight - skillClientWidget->getHeight(), 0)); skillScrollerWidget->setScrollPage(std::max(skillClientWidget->getHeight() - lineHeight, 0)); } + +void StatsWindow::onPinToggled() +{ + mWindowManager.setHMSVisibility(!mPinned); +} diff --git a/apps/openmw/mwgui/stats_window.hpp b/apps/openmw/mwgui/stats_window.hpp index 081a75d56d..f2731e545c 100644 --- a/apps/openmw/mwgui/stats_window.hpp +++ b/apps/openmw/mwgui/stats_window.hpp @@ -74,6 +74,9 @@ namespace MWGui std::string birthSignId; int reputation, bounty; std::vector skillWidgets; //< Skills and other information + + protected: + virtual void onPinToggled(); }; } #endif diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index 4d7b9f9013..8ad71186b7 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -456,3 +456,13 @@ void WindowManager::setPlayerDir(const float x, const float y) map->setPlayerDir(x,y); hud->setPlayerDir(x,y); } + +void WindowManager::setHMSVisibility(bool visible) +{ + hud->setBottomLeftVisibility(visible, hud->weapBox->getVisible(), hud->spellBox->getVisible()); +} + +void WindowManager::setMinimapVisibility(bool visible) +{ + hud->setBottomRightVisibility(hud->effectBox->getVisible(), visible); +} diff --git a/apps/openmw/mwgui/window_manager.hpp b/apps/openmw/mwgui/window_manager.hpp index 582f438e8f..e8637f8a2d 100644 --- a/apps/openmw/mwgui/window_manager.hpp +++ b/apps/openmw/mwgui/window_manager.hpp @@ -160,6 +160,11 @@ namespace MWGui void setInteriorMapTexture(const int x, const int y); ///< set the index of the map texture that should be used (for interiors) + // sets the visibility of the hud health/magicka/stamina bars + void setHMSVisibility(bool visible); + // sets the visibility of the hud minimap + void setMinimapVisibility(bool visible); + template void removeDialog(T*& dialog); ///< Casts to OEngine::GUI::Layout and calls removeDialog, then resets pointer to nullptr. void removeDialog(OEngine::GUI::Layout* dialog); ///< Hides dialog and schedules dialog to be deleted. diff --git a/apps/openmw/mwgui/window_pinnable_base.cpp b/apps/openmw/mwgui/window_pinnable_base.cpp index 07f0ea278b..ecdf311c6e 100644 --- a/apps/openmw/mwgui/window_pinnable_base.cpp +++ b/apps/openmw/mwgui/window_pinnable_base.cpp @@ -25,6 +25,7 @@ void WindowPinnableBase::onWindowButtonPressed(MyGUI::Window* sender, const std: if ("PinToggle" == eventName) { mPinned = !mPinned; + onPinToggled(); } eventDone(this); diff --git a/apps/openmw/mwgui/window_pinnable_base.hpp b/apps/openmw/mwgui/window_pinnable_base.hpp index f3cec847fd..8ef38c3867 100644 --- a/apps/openmw/mwgui/window_pinnable_base.hpp +++ b/apps/openmw/mwgui/window_pinnable_base.hpp @@ -17,6 +17,8 @@ namespace MWGui void onWindowButtonPressed(MyGUI::Window* sender, const std::string& eventName); protected: + virtual void onPinToggled() = 0; + bool mPinned; bool mVisible; }; diff --git a/files/mygui/openmw_hud_layout.xml b/files/mygui/openmw_hud_layout.xml index 20370770ef..2dafa72988 100644 --- a/files/mygui/openmw_hud_layout.xml +++ b/files/mygui/openmw_hud_layout.xml @@ -11,22 +11,24 @@ align="Left Bottom" name="Stamina"/> - - + + + + + - - - + + + + + - - From 8bf9b371c7d5c01ed3d8de3c45a84408b398317a Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 6 Apr 2012 10:39:55 +0200 Subject: [PATCH 393/488] removed remains of input framelistener --- apps/openmw/mwinput/inputmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index a86e80e5b7..3721d10431 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -70,7 +70,7 @@ namespace MWInput }; // Class that handles all input and key bindings for OpenMW - class InputImpl : public Ogre::FrameListener + class InputImpl { OEngine::Input::DispatcherPtr disp; OEngine::Render::OgreRenderer &ogre; From a41eee9a721c643368eb92909684cecb95d6a15b Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 14:07:52 +0200 Subject: [PATCH 394/488] specular lighting --- apps/openmw/mwrender/renderingmanager.cpp | 1 + files/water/water.cg | 17 +++++++++++++++-- files/water/water.material | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index afa54b30c3..4b38cb1487 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -406,6 +406,7 @@ void RenderingManager::skipAnimation (const MWWorld::Ptr& ptr) void RenderingManager::setSunColour(const Ogre::ColourValue& colour) { mSun->setDiffuseColour(colour); + mSun->setSpecularColour(colour); mTerrainManager->setDiffuse(colour); } diff --git a/files/water/water.cg b/files/water/water.cg index 188c37709c..18ef0a7571 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -37,6 +37,8 @@ void main_fp , in float iDepth : TEXCOORD2 , in float4 iEyeVector : TEXCOORD3 , uniform float renderTargetFlipping + , uniform float4 lightPosObjSpace0 + , uniform float4 lightSpecularColour0 , uniform sampler2D reflectionMap : register(s0) , uniform sampler2D refractionMap : register(s1) @@ -74,11 +76,22 @@ void main_fp // tangent to object space normal.xyz = normal.xzy; + iEyeVector.xyz = normalize(iEyeVector.xyz); + // fresnel - float facing = 1.0 - max(abs(dot(normalize(iEyeVector.xyz), normal.xyz)), 0); + float facing = 1.0 - max(abs(dot(iEyeVector.xyz, normal.xyz)), 0); float reflectionFactor = saturate(0.35 + 0.65 * pow(facing, 2)); - oColor.xyz = lerp(refraction.xyz, reflection.xyz, depth1 * reflectionFactor); + // specular + float3 lightDir = normalize(lightPosObjSpace0.xyz); // assumes that light 0 is a directional light + float3 halfVector = normalize(iEyeVector + lightDir); + float specular = pow(max(dot(normal.xyz, halfVector.xyz), 0), 64); + + float opacity = depth1 * saturate(reflectionFactor + specular); + + reflection.xyz += lightSpecularColour0.xyz * specular; + + oColor.xyz = lerp(refraction.xyz, reflection.xyz, opacity); float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); diff --git a/files/water/water.material b/files/water/water.material index f21f929d48..d0cadfc099 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -54,6 +54,8 @@ material Water param_named_auto fogParams fog_params param_named_auto renderTargetFlipping render_target_flipping param_named_auto far far_clip_distance + param_named_auto lightPosObjSpace0 light_position_object_space 0 + param_named_auto lightSpecularColour0 light_specular_colour 0 } texture_unit reflectionMap From 393530e67174d4771cc668a2dbefcfe0c9a0f601 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 15:05:17 +0200 Subject: [PATCH 395/488] more or less fixed the sky for normal viewing angles, still disappears at a certain height though --- apps/openmw/mwrender/sky.cpp | 9 ++++++++- apps/openmw/mwrender/sky.hpp | 23 ++++++++++++----------- apps/openmw/mwrender/water.cpp | 10 ++++++---- apps/openmw/mwrender/water.hpp | 2 +- files/water/water.cg | 5 ++++- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 43ef31d861..8f719ebaae 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -810,7 +810,9 @@ void SkyManager::setWeather(const MWWorld::WeatherResult& weather) strength = 1.f; mSunGlare->setVisibility(weather.mGlareView * mGlareFade * strength); - mSun->setVisibility(weather.mGlareView); + + if (strength < 0.4) strength = 0.4; + mSun->setVisibility(weather.mGlareView * strength); mAtmosphereNight->setVisible(weather.mNight && mEnabled); } @@ -923,3 +925,8 @@ void SkyManager::resetSkyPosition() { mRootNode->setPosition(0,0,0); } + +void SkyManager::scaleSky(float scale) +{ + mRootNode->setScale(scale, scale, scale); +} diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index c18b9f4843..f6f166b9e3 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -170,6 +170,7 @@ namespace MWRender void setSkyPosition(const Ogre::Vector3& position); void resetSkyPosition(); + void scaleSky(float scale); private: bool mCreated; @@ -183,21 +184,21 @@ namespace MWRender BillboardObject* mSunGlare; Moon* mMasser; Moon* mSecunda; - + Ogre::Viewport* mViewport; Ogre::SceneNode* mRootNode; Ogre::SceneManager* mSceneMgr; - + Ogre::SceneNode* mAtmosphereDay; Ogre::SceneNode* mAtmosphereNight; - + Ogre::MaterialPtr mCloudMaterial; Ogre::MaterialPtr mAtmosphereMaterial; - + Ogre::MaterialPtr mStarsMaterials[7]; - + Ogre::HighLevelGpuProgramPtr mCloudFragmentShader; - + // remember some settings so we don't have to apply them again if they didnt change Ogre::String mClouds; Ogre::String mNextClouds; @@ -207,17 +208,17 @@ namespace MWRender float mStarsOpacity; Ogre::ColourValue mCloudColour; Ogre::ColourValue mSkyColour; - + Ogre::Overlay* mThunderOverlay; Ogre::TextureUnitState* mThunderTextureUnit; - + float mRemainingTransitionTime; - + float mGlare; // target float mGlareFade; // actual - + void ModVertexAlpha(Ogre::Entity* ent, unsigned int meshType); - + bool mEnabled; bool mSunEnabled; bool mMasserEnabled; diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index cbce0d0750..544f738e50 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -141,15 +141,16 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) { mWater->setVisible(false); - mOldCameraFarClip = mCamera->getFarClipDistance(); - if (mReflectDistance != 0) - mCamera->setFarClipDistance(mReflectDistance); + //mOldCameraFarClip = mCamera->getFarClipDistance(); + //if (mReflectDistance != 0) + // mCamera->setFarClipDistance(mReflectDistance); if (evt.source == mReflectionTarget) { Vector3 pos = mCamera->getRealPosition(); pos.y = mTop*2 - pos.y; mSky->setSkyPosition(pos); + mSky->scaleSky(mCamera->getFarClipDistance() / 1000.f); mCamera->enableCustomNearClipPlane(Plane(Vector3::UNIT_Y, mTop)); mCamera->enableReflection(Plane(Vector3::UNIT_Y, mTop)); } @@ -159,11 +160,12 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) { mWater->setVisible(true); - mCamera->setFarClipDistance(mOldCameraFarClip); + //mCamera->setFarClipDistance(mOldCameraFarClip); if (evt.source == mReflectionTarget) { mSky->resetSkyPosition(); + mSky->scaleSky(1); mCamera->disableReflection(); mCamera->disableCustomNearClipPlane(); } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 964a8c7354..264f96fbe1 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -11,7 +11,7 @@ namespace MWRender { class SkyManager; /// Water rendering - class Water : Ogre::RenderTargetListener + class Water : public Ogre::RenderTargetListener { static const int CELL_SIZE = 8192; Ogre::Camera *mCamera; diff --git a/files/water/water.cg b/files/water/water.cg index 18ef0a7571..613891fa59 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -54,6 +54,9 @@ void main_fp float2 screenCoords = iScreenCoords.xy / iScreenCoords.z; screenCoords.y = (1-saturate(renderTargetFlipping))+renderTargetFlipping*screenCoords.y; + // No need for transparency since we are using a refraction map + oColor.a = 1; + // Sample screen-space depth map and subtract pixel depth to get the real water depth float depth1 = tex2D(depthMap, screenCoords).r * far - iDepth; depth1 = saturate(depth1 / 500.f); @@ -93,7 +96,7 @@ void main_fp oColor.xyz = lerp(refraction.xyz, reflection.xyz, opacity); + // add fog float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); - oColor.a = 1; } From ec3fe1ef002ef7aa6e0dd66eb1cd256a6b344d1c Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 15:17:54 +0200 Subject: [PATCH 396/488] no sun glare in the reflection --- apps/openmw/mwrender/renderconst.hpp | 3 +++ apps/openmw/mwrender/sky.cpp | 6 ++++++ apps/openmw/mwrender/sky.hpp | 23 ++++++++++++----------- apps/openmw/mwrender/water.cpp | 3 +-- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp index 26d56a75c8..4445ffe6b7 100644 --- a/apps/openmw/mwrender/renderconst.hpp +++ b/apps/openmw/mwrender/renderconst.hpp @@ -47,6 +47,9 @@ enum VisibilityFlags RV_Sky = 64, + // Sun glare (not visible in reflection) + RV_Glare = 128, + RV_Map = RV_Terrain + RV_Statics + RV_StaticsSmall + RV_Misc + RV_Water, /// \todo markers (normally hidden) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 8f719ebaae..fdd9cd5111 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -60,6 +60,11 @@ Vector3 BillboardObject::getPosition() const return Vector3(p.x, -p.z, p.y); } +void BillboardObject::setVisibilityFlags(int flags) +{ + mBBSet->setVisibilityFlags(flags); +} + void BillboardObject::setColour(const ColourValue& pColour) { mMaterial->getTechnique(0)->getPass(0)->setSelfIllumination(pColour); @@ -421,6 +426,7 @@ void SkyManager::create() mSun->setRenderQueue(RQG_SkiesEarly+4); mSunGlare = new BillboardObject("textures\\tx_sun_flash_grey_05.dds", 3, Vector3(0.4, 0.4, 0.4), mRootNode); mSunGlare->setRenderQueue(RQG_SkiesLate); + mSunGlare->setVisibilityFlags(RV_Glare); HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index f6f166b9e3..64d5c16a03 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -36,24 +36,25 @@ namespace MWRender BillboardObject(); virtual ~BillboardObject() {} - + void setColour(const Ogre::ColourValue& pColour); void setPosition(const Ogre::Vector3& pPosition); void setVisible(const bool visible); void setRenderQueue(unsigned int id); + void setVisibilityFlags(int flags); void setSize(const float size); Ogre::Vector3 getPosition() const; - + void setVisibility(const float visibility); - + Ogre::SceneNode* getNode(); - + protected: virtual void init(const Ogre::String& textureName, const float size, const Ogre::Vector3& position, Ogre::SceneNode* rootNode); - + Ogre::SceneNode* mNode; Ogre::MaterialPtr mMaterial; Ogre::BillboardSet* mBBSet; @@ -71,9 +72,9 @@ namespace MWRender const Ogre::Vector3& position, Ogre::SceneNode* rootNode ); - + virtual ~Moon() {} - + enum Phase { Phase_New = 0, @@ -85,20 +86,20 @@ namespace MWRender Phase_WaningHalf, Phase_WaningCrescent }; - + enum Type { Type_Masser = 0, Type_Secunda }; - + void setPhase(const Phase& phase); void setType(const Type& type); void setSkyColour(const Ogre::ColourValue& colour); - + Phase getPhase() const; unsigned int getPhaseInt() const; - + private: Type mType; Phase mPhase; diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 544f738e50..5742618632 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -139,14 +139,13 @@ Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) { - mWater->setVisible(false); - //mOldCameraFarClip = mCamera->getFarClipDistance(); //if (mReflectDistance != 0) // mCamera->setFarClipDistance(mReflectDistance); if (evt.source == mReflectionTarget) { + mWater->setVisible(false); Vector3 pos = mCamera->getRealPosition(); pos.y = mTop*2 - pos.y; mSky->setSkyPosition(pos); From 2976625b0024ad4b02b508970edcf0cceb3297f5 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 15:51:57 +0200 Subject: [PATCH 397/488] better underwater --- apps/openmw/mwrender/water.cpp | 40 ++++++++++++++++++++++++++-------- apps/openmw/mwrender/water.hpp | 3 ++- files/water/water.cg | 2 ++ files/water/water.material | 4 ++++ 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 5742618632..dd06e21817 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -69,7 +69,8 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mReflectionTarget = rtt; } - mWater->setMaterial(createMaterial()); + createMaterial(); + mWater->setMaterial(mMaterial); } void Water::setActive(bool active) @@ -120,6 +121,15 @@ void Water::checkUnderwater(float y) try { CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) {} + + // tell the shader we are not underwater + Ogre::Pass* pass = mMaterial->getTechnique(0)->getPass(0); + if (pass->hasFragmentProgram() && pass->getFragmentProgramParameters()->_findNamedConstantDefinition("isUnderwater", false)) + pass->getFragmentProgramParameters()->setNamedConstant("isUnderwater", Real(0)); + + if (mReflectionTarget) + mReflectionTarget->setActive(mActive); + mIsUnderwater = false; } @@ -128,6 +138,15 @@ void Water::checkUnderwater(float y) try { CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); } catch(...) {} + + // tell the shader we are underwater + Ogre::Pass* pass = mMaterial->getTechnique(0)->getPass(0); + if (pass->hasFragmentProgram() && pass->getFragmentProgramParameters()->_findNamedConstantDefinition("isUnderwater", false)) + pass->getFragmentProgramParameters()->setNamedConstant("isUnderwater", Real(1)); + + if (mReflectionTarget) + mReflectionTarget->setActive(false); + mIsUnderwater = true; } } @@ -146,10 +165,15 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) if (evt.source == mReflectionTarget) { mWater->setVisible(false); + + // Some messy code to get the skybox to show up at all + // The problem here is that it gets clipped by the water plane + // Therefore scale it up a bit Vector3 pos = mCamera->getRealPosition(); pos.y = mTop*2 - pos.y; mSky->setSkyPosition(pos); mSky->scaleSky(mCamera->getFarClipDistance() / 1000.f); + mCamera->enableCustomNearClipPlane(Plane(Vector3::UNIT_Y, mTop)); mCamera->enableReflection(Plane(Vector3::UNIT_Y, mTop)); } @@ -170,9 +194,9 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) } } -Ogre::MaterialPtr Water::createMaterial() +void Water::createMaterial() { - MaterialPtr mat = MaterialManager::getSingleton().getByName("Water"); + mMaterial = MaterialManager::getSingleton().getByName("Water"); // these have to be set in code std::string textureNames[32]; @@ -180,28 +204,26 @@ Ogre::MaterialPtr Water::createMaterial() { textureNames[i] = "textures\\water\\water" + StringConverter::toString(i, 2, '0') + ".dds"; } - mat->getTechnique(1)->getPass(0)->getTextureUnitState(0)->setAnimatedTextureName(textureNames, 32, 2); + mMaterial->getTechnique(1)->getPass(0)->getTextureUnitState(0)->setAnimatedTextureName(textureNames, 32, 2); // use technique without shaders if reflection is disabled if (mReflectionTarget == 0) - mat->removeTechnique(0); + mMaterial->removeTechnique(0); if (Settings::Manager::getBool("shader", "Water")) { CompositorInstance* compositor = CompositorManager::getSingleton().getCompositorChain(mViewport)->getCompositor("gbuffer"); TexturePtr colorTexture = compositor->getTextureInstance("mrt_output", 0); - TextureUnitState* tus = mat->getTechnique(0)->getPass(0)->getTextureUnitState("refractionMap"); + TextureUnitState* tus = mMaterial->getTechnique(0)->getPass(0)->getTextureUnitState("refractionMap"); if (tus != 0) tus->setTexture(colorTexture); TexturePtr depthTexture = compositor->getTextureInstance("mrt_output", 1); - tus = mat->getTechnique(0)->getPass(0)->getTextureUnitState("depthMap"); + tus = mMaterial->getTechnique(0)->getPass(0)->getTextureUnitState("depthMap"); if (tus != 0) tus->setTexture(depthTexture); } - - return mat; } void Water::setViewportBackground(const ColourValue& bg) diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 264f96fbe1..855dd3b184 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -34,7 +34,8 @@ namespace MWRender { SkyManager* mSky; - Ogre::MaterialPtr createMaterial(); + void createMaterial(); + Ogre::MaterialPtr mMaterial; Ogre::RenderTarget* mReflectionTarget; diff --git a/files/water/water.cg b/files/water/water.cg index 613891fa59..dfb1972ae6 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -48,6 +48,7 @@ void main_fp , uniform float far , uniform float4 fogParams , uniform float4 fogColour + , uniform float isUnderwater ) { @@ -91,6 +92,7 @@ void main_fp float specular = pow(max(dot(normal.xyz, halfVector.xyz), 0), 64); float opacity = depth1 * saturate(reflectionFactor + specular); + opacity *= (1-isUnderwater); reflection.xyz += lightSpecularColour0.xyz * specular; diff --git a/files/water/water.material b/files/water/water.material index d0cadfc099..cf7a414cf8 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -43,6 +43,8 @@ material Water { pass { + cull_hardware none + vertex_program_ref Water_VP { param_named_auto camPosObjSpace camera_position_object_space @@ -56,6 +58,7 @@ material Water param_named_auto far far_clip_distance param_named_auto lightPosObjSpace0 light_position_object_space 0 param_named_auto lightSpecularColour0 light_specular_colour 0 + param_named isUnderwater float 0 } texture_unit reflectionMap @@ -85,6 +88,7 @@ material Water scheme Map pass { + cull_hardware none scene_blend alpha_blend depth_write off diffuse 0 0 0 1 From c169f9e171f740869bc6df9954973d4ed91243d7 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 16:11:08 +0200 Subject: [PATCH 398/488] underwater tweaks --- apps/openmw/mwrender/renderconst.hpp | 2 ++ apps/openmw/mwrender/renderingmanager.cpp | 2 ++ apps/openmw/mwrender/water.cpp | 7 +++++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp index 4445ffe6b7..ab411a6cb4 100644 --- a/apps/openmw/mwrender/renderconst.hpp +++ b/apps/openmw/mwrender/renderconst.hpp @@ -18,6 +18,8 @@ enum RenderQueueGroups RQG_Alpha = Ogre::RENDER_QUEUE_7, + RQG_UnderWater = Ogre::RENDER_QUEUE_7+1, + RQG_OcclusionQuery = Ogre::RENDER_QUEUE_8, // Sky late (sun & sun flare) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 4b38cb1487..2f85d35997 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -54,6 +54,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const if (caps->getNumMultiRenderTargets() < 2) Settings::Manager::setBool("shader", "Water", false); + // note that the order is important here if (useMRT()) { CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbuffer"); @@ -61,6 +62,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbufferFinalizer"); CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", true); } + CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "Water"); // Turn the entire scene (represented by the 'root' node) -90 // degrees around the x axis. This makes Z go upwards, and Y go into diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index dd06e21817..89b40cf630 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -16,7 +16,6 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : try { - CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) {} @@ -76,7 +75,7 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : void Water::setActive(bool active) { mActive = active; - if (mReflectionTarget) mReflectionTarget->setActive(active); + if (mReflectionTarget) mReflectionTarget->setActive(active && !mIsUnderwater); mWater->setVisible(active); } @@ -130,6 +129,8 @@ void Water::checkUnderwater(float y) if (mReflectionTarget) mReflectionTarget->setActive(mActive); + mWater->setRenderQueueGroup(RQG_Water); + mIsUnderwater = false; } @@ -147,6 +148,8 @@ void Water::checkUnderwater(float y) if (mReflectionTarget) mReflectionTarget->setActive(false); + mWater->setRenderQueueGroup(RQG_UnderWater); + mIsUnderwater = true; } } From 114e8ae2a02b54f3cb34945cba13816e69cbb923 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 16:45:45 +0200 Subject: [PATCH 399/488] much less underwater distortion --- files/water/GlassFP.cg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/water/GlassFP.cg b/files/water/GlassFP.cg index 0ce343b0aa..1e6c539847 100644 --- a/files/water/GlassFP.cg +++ b/files/water/GlassFP.cg @@ -9,7 +9,7 @@ float4 main_ps(float2 iTexCoord : TEXCOORD0, float4 normal = tex2D(NormalMap, noiseCoord) * 2 - 1; - return tex2D(RT, iTexCoord + normal.xy * 0.05) + + return tex2D(RT, iTexCoord + normal.xy * 0.015) + (tex2D(CausticMap, noiseCoord) / 5) + tintColour ; } From 8316a4c2ecb37195435f6b25328a28e6286acab1 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 17:21:56 +0200 Subject: [PATCH 400/488] add mrt dummy output to sky shaders --- apps/openmw/mwrender/sky.cpp | 51 +++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index fdd9cd5111..d22f20a222 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -13,6 +13,7 @@ #include "../mwworld/environment.hpp" #include "../mwworld/world.hpp" #include "renderconst.hpp" +#include "renderingmanager.hpp" using namespace MWRender; using namespace Ogre; @@ -152,14 +153,20 @@ void BillboardObject::init(const String& textureName, outStream2 << "void main_fp( \n" " in float2 uv : TEXCOORD0, \n" - " out float4 oColor : COLOR, \n" + " out float4 oColor : COLOR, \n"; + if (RenderingManager::useMRT()) outStream2 << + " out float4 oColor1 : COLOR1, \n"; + outStream2 << " uniform sampler2D texture : TEXUNIT0, \n" " uniform float4 diffuse, \n" " uniform float4 emissive \n" ") \n" "{ \n" " float4 tex = tex2D(texture, uv); \n" - " oColor = float4(emissive.xyz,1) * tex * float4(1,1,1,diffuse.a); \n" + " oColor = float4(emissive.xyz,1) * tex * float4(1,1,1,diffuse.a); \n"; + if (RenderingManager::useMRT()) outStream2 << + " oColor1 = float4(1, 0, 0, 1); \n"; + outStream2 << "}"; fshader->setSource(outStream2.str()); fshader->load(); @@ -215,7 +222,10 @@ Moon::Moon( const String& textureName, outStream2 << "void main_fp( \n" " in float2 uv : TEXCOORD0, \n" - " out float4 oColor : COLOR, \n" + " out float4 oColor : COLOR, \n"; + if (RenderingManager::useMRT()) outStream2 << + " out float4 oColor1 : COLOR1, \n"; + outStream2 << " uniform sampler2D texture : TEXUNIT0, \n" " uniform float4 skyColour, \n" " uniform float4 diffuse, \n" @@ -223,7 +233,10 @@ Moon::Moon( const String& textureName, ") \n" "{ \n" " float4 tex = tex2D(texture, uv); \n" - " oColor = float4(emissive.xyz,1) * tex; \n" + " oColor = float4(emissive.xyz,1) * tex; \n"; + if (RenderingManager::useMRT()) outStream2 << + " oColor1 = float4(1, 0, 0, 1); \n"; + outStream2 << // use a circle for the alpha (compute UV distance to center) // looks a bit bad because its not filtered on the edges, // but it's cheaper than a seperate alpha texture. @@ -474,7 +487,10 @@ void SkyManager::create() outStream5 << "void main_fp( \n" " in float2 uv : TEXCOORD0, \n" - " out float4 oColor : COLOR, \n" + " out float4 oColor : COLOR, \n"; + if (RenderingManager::useMRT()) outStream5 << + " out float4 oColor1 : COLOR1, \n"; + outStream5 << " in float fade : TEXCOORD1, \n" " uniform sampler2D texture : TEXUNIT0, \n" " uniform float opacity, \n" @@ -482,7 +498,10 @@ void SkyManager::create() " uniform float4 emissive \n" ") \n" "{ \n" - " oColor = tex2D(texture, uv) * float4(emissive.xyz, 1) * float4(1,1,1,fade*diffuse.a); \n" + " oColor = tex2D(texture, uv) * float4(emissive.xyz, 1) * float4(1,1,1,fade*diffuse.a); \n"; + if (RenderingManager::useMRT()) outStream5 << + " oColor1 = float4(1, 0, 0, 1); \n"; + outStream5 << "}"; stars_fp->setSource(outStream5.str()); stars_fp->load(); @@ -551,11 +570,17 @@ void SkyManager::create() _outStream << "void main_fp( \n" " in float4 iVertexColor : TEXCOORD0, \n" - " out float4 oColor : COLOR, \n" + " out float4 oColor : COLOR, \n"; + if (RenderingManager::useMRT()) _outStream << + " out float4 oColor1 : COLOR1, \n"; + _outStream << " uniform float4 emissive \n" ") \n" "{ \n" - " oColor = iVertexColor * emissive; \n" + " oColor = iVertexColor * emissive; \n"; + if (RenderingManager::useMRT()) _outStream << + " oColor1 = float4(1, 0, 0, 1); \n"; + _outStream << "}"; fshader->setSource(_outStream.str()); fshader->load(); @@ -607,8 +632,11 @@ void SkyManager::create() outStream2 << "void main_fp( \n" " in float2 uv : TEXCOORD0, \n" - " out float4 oColor : COLOR, \n" " in float4 color : TEXCOORD1, \n" + " out float4 oColor : COLOR, \n"; + if (RenderingManager::useMRT()) outStream2 << + " out float4 oColor1 : COLOR1, \n"; + outStream2 << " uniform sampler2D texture : TEXUNIT0, \n" " uniform sampler2D secondTexture : TEXUNIT1, \n" " uniform float transitionFactor, \n" @@ -620,7 +648,10 @@ void SkyManager::create() "{ \n" " uv += float2(0,1) * time * speed * 0.003; \n" // Scroll in y direction " float4 tex = lerp(tex2D(texture, uv), tex2D(secondTexture, uv), transitionFactor); \n" - " oColor = color * float4(emissive.xyz,1) * tex * float4(1,1,1,opacity); \n" + " oColor = color * float4(emissive.xyz,1) * tex * float4(1,1,1,opacity); \n"; + if (RenderingManager::useMRT()) outStream2 << + " oColor1 = float4(1, 0, 0, 1); \n"; + outStream2 << "}"; mCloudFragmentShader->setSource(outStream2.str()); mCloudFragmentShader->load(); From 456eb9520985fce0ac77f755b0cbcefb49fbb97e Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 18:22:37 +0200 Subject: [PATCH 401/488] reversed sun and moon paths (sunrise at east) --- apps/openmw/mwrender/renderingmanager.cpp | 6 +- apps/openmw/mwrender/water.cpp | 7 +- apps/openmw/mwrender/water.hpp | 2 + apps/openmw/mwworld/weather.cpp | 12 +- files/water/water.cg | 6 +- files/water/water.compositor | 31 ++++- files/water/water.material | 139 +++++++++++++++------- 7 files changed, 142 insertions(+), 61 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 2f85d35997..362a04ca50 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -61,8 +61,12 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", true); CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbufferFinalizer"); CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", true); + CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "Underwater"); + } + else + { + CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "UnderwaterNoMRT"); } - CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "Water"); // Turn the entire scene (represented by the 'root' node) -90 // degrees around the x axis. This makes Z go upwards, and Y go into diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 89b40cf630..615a24a767 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,6 +1,7 @@ #include "water.hpp" #include #include "sky.hpp" +#include "renderingmanager.hpp" using namespace Ogre; @@ -68,6 +69,8 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mReflectionTarget = rtt; } + mCompositorName = RenderingManager::useMRT() ? "Underwater" : "UnderwaterNoMRT"; + createMaterial(); mWater->setMaterial(mMaterial); } @@ -118,7 +121,7 @@ void Water::checkUnderwater(float y) if ((mIsUnderwater && y > mTop) || !mWater->isVisible() || mCamera->getPolygonMode() != Ogre::PM_SOLID) { try { - CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + CompositorManager::getSingleton().setCompositorEnabled(mViewport, mCompositorName, false); } catch(...) {} // tell the shader we are not underwater @@ -137,7 +140,7 @@ void Water::checkUnderwater(float y) if (!mIsUnderwater && y < mTop && mWater->isVisible() && mCamera->getPolygonMode() == Ogre::PM_SOLID) { try { - CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); + CompositorManager::getSingleton().setCompositorEnabled(mViewport, mCompositorName, true); } catch(...) {} // tell the shader we are underwater diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 855dd3b184..b5aa29a5ba 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -34,6 +34,8 @@ namespace MWRender { SkyManager* mSky; + std::string mCompositorName; + void createMaterial(); Ogre::MaterialPtr mMaterial; diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index 80035df14c..0d86d36cab 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -585,8 +585,8 @@ void WeatherManager::update(float duration) int facing = (mHour > 13.f) ? 1 : -1; Vector3 final( - (1-height)*facing, - (1-height)*facing, + -(1-height)*facing, + -(1-height)*facing, height); mRendering->setSunDirection(final); @@ -606,13 +606,13 @@ void WeatherManager::update(float duration) float moonHeight = 1-std::abs((night-0.5)*2); int facing = (mHour > 0.f && mHour<12.f) ? 1 : -1; Vector3 masser( - (1-moonHeight)*facing, - (1-moonHeight)*facing, + -(1-moonHeight)*facing, + -(1-moonHeight)*facing, moonHeight); Vector3 secunda( - (1-moonHeight)*facing*0.8, - (1-moonHeight)*facing*1.25, + -(1-moonHeight)*facing*0.8, + -(1-moonHeight)*facing*1.25, moonHeight); mRendering->getSkyManager()->setMasserDirection(masser); diff --git a/files/water/water.cg b/files/water/water.cg index dfb1972ae6..85c86f3b6d 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -19,9 +19,9 @@ void main_vp oDepth = oPos.z; float4x4 scalemat = float4x4( 0.5, 0, 0, 0.5, - 0, -0.5, 0, 0.5, - 0, 0, 0.5, 0.5, - 0, 0, 0, 1 ); + 0, -0.5, 0, 0.5, + 0, 0, 0.5, 0.5, + 0, 0, 0, 1 ); float4 texcoordProj = mul(scalemat, oPos); oScreenCoords = float3(texcoordProj.x, texcoordProj.y, texcoordProj.w); diff --git a/files/water/water.compositor b/files/water/water.compositor index 67bf908960..8d9c3cb396 100644 --- a/files/water/water.compositor +++ b/files/water/water.compositor @@ -1,4 +1,4 @@ -compositor Water +compositor UnderwaterNoMRT { technique { @@ -13,9 +13,34 @@ compositor Water pass render_quad { - material Water/Compositor + material Water/CompositorNoMRT input 0 rt0 } } } -} +} + + +compositor Underwater +{ + technique + { + texture_ref scene gbuffer mrt_output + texture rt0 target_width target_height PF_R8G8B8 + + target rt0 { input previous } + + target_output + { + // Start with clear output + input none + + pass render_quad + { + material Water/Compositor + input 0 rt0 + input 3 scene 1 + } + } + } +} diff --git a/files/water/water.material b/files/water/water.material index cf7a414cf8..3afbaacd5a 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -1,21 +1,21 @@ vertex_program Water/GlassVP cg { - source GlassVP.cg - entry_point glass_vp - profiles vs_1_1 arbvp1 + source GlassVP.cg + entry_point glass_vp + profiles vs_1_1 arbvp1 - default_params - { - param_named_auto worldViewProj worldviewproj_matrix - } + default_params + { + param_named_auto worldViewProj worldviewproj_matrix + } } fragment_program Water/GlassFP cg { - source GlassFP.cg - entry_point main_ps - profiles ps_2_0 arbfp1 + source GlassFP.cg + entry_point main_ps + profiles ps_2_0 arbfp1 } vertex_program Water_VP cg @@ -104,45 +104,92 @@ material Water } } +material Water/CompositorNoMRT +{ + technique + { + pass + { + depth_check off + vertex_program_ref Water/GlassVP + { + param_named_auto timeVal time 0.25 + param_named scale float 0.1 + } + + fragment_program_ref Water/GlassFP + { + param_named tintColour float4 0 0.35 0.35 1 + } + + texture_unit RT + { + tex_coord_set 0 + tex_address_mode clamp + filtering linear linear linear + } + + texture_unit + { + texture WaterNormal2.tga 2d + tex_coord_set 1 + //tex_address_mode clamp + filtering linear linear linear + } + texture_unit + { + texture caustic_0.png 2d + tex_coord_set 2 + //tex_address_mode clamp + filtering linear linear linear + } + } + } +} + material Water/Compositor { - technique - { - pass - { - depth_check off - vertex_program_ref Water/GlassVP - { - param_named_auto timeVal time 0.25 - param_named scale float 0.1 - } + technique + { + pass + { + depth_check off + vertex_program_ref Water/GlassVP + { + param_named_auto timeVal time 0.25 + param_named scale float 0.1 + } - fragment_program_ref Water/GlassFP - { - param_named tintColour float4 0 0.35 0.35 1 - } + fragment_program_ref Water/GlassFP + { + param_named tintColour float4 0 0.35 0.35 1 + } - texture_unit RT - { - tex_coord_set 0 - tex_address_mode clamp - filtering linear linear linear - } + texture_unit RT + { + tex_coord_set 0 + tex_address_mode clamp + filtering linear linear linear + } - texture_unit - { - texture WaterNormal2.tga 2d - tex_coord_set 1 - //tex_address_mode clamp - filtering linear linear linear - } - texture_unit - { - texture caustic_0.png 2d - tex_coord_set 2 - //tex_address_mode clamp - filtering linear linear linear - } - } - } + texture_unit + { + texture WaterNormal2.tga 2d + tex_coord_set 2 + //tex_address_mode clamp + filtering linear linear linear + } + texture_unit + { + texture caustic_0.png 2d + tex_coord_set 3 + //tex_address_mode clamp + filtering linear linear linear + } + + texture_unit DepthMap + { + } + } + } } From c0f991ac0ae4353da2f6a9f81dc883e846b411cb Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 18:51:30 +0200 Subject: [PATCH 402/488] underwater depth effect --- apps/openmw/mwrender/renderingmanager.cpp | 2 +- files/CMakeLists.txt | 3 +- files/water/GlassFP.cg | 15 ------ files/water/GlassVP.cg | 24 --------- files/water/underwater.cg | 61 +++++++++++++++++++++++ files/water/water.cg | 3 ++ files/water/water.material | 39 ++++++++------- 7 files changed, 87 insertions(+), 60 deletions(-) delete mode 100644 files/water/GlassFP.cg delete mode 100644 files/water/GlassVP.cg create mode 100644 files/water/underwater.cg diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 362a04ca50..8d84af98f4 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -59,9 +59,9 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const { CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbuffer"); CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbuffer", true); + CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "Underwater"); CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "gbufferFinalizer"); CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "gbufferFinalizer", true); - CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "Underwater"); } else { diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 377e2d1f8e..507f82c1a3 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -1,8 +1,7 @@ project(resources) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/caustic_0.png "${OpenMW_BINARY_DIR}/resources/water/caustic_0.png" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassFP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassFP.cg" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassVP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassVP.cg" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/underwater.cg "${OpenMW_BINARY_DIR}/resources/water/underwater.cg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/perlinvolume.dds "${OpenMW_BINARY_DIR}/resources/water/perlinvolume.dds" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.compositor "${OpenMW_BINARY_DIR}/resources/water/water.compositor" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.material "${OpenMW_BINARY_DIR}/resources/water/water.material" COPYONLY) diff --git a/files/water/GlassFP.cg b/files/water/GlassFP.cg deleted file mode 100644 index 1e6c539847..0000000000 --- a/files/water/GlassFP.cg +++ /dev/null @@ -1,15 +0,0 @@ - -float4 main_ps(float2 iTexCoord : TEXCOORD0, - float3 noiseCoord : TEXCOORD1, - uniform sampler2D RT : register(s0), - uniform sampler2D NormalMap : register(s1), - uniform sampler2D CausticMap : register(s2), - uniform float4 tintColour) : COLOR -{ - float4 normal = tex2D(NormalMap, noiseCoord) * 2 - 1; - - - return tex2D(RT, iTexCoord + normal.xy * 0.015) + - (tex2D(CausticMap, noiseCoord) / 5) + - tintColour ; -} diff --git a/files/water/GlassVP.cg b/files/water/GlassVP.cg deleted file mode 100644 index 71153769c2..0000000000 --- a/files/water/GlassVP.cg +++ /dev/null @@ -1,24 +0,0 @@ -void glass_vp -( - in float4 inPos : POSITION, - - out float4 pos : POSITION, - out float2 uv0 : TEXCOORD0, - out float4 noiseCoord : TEXCOORD1, - - uniform float4x4 worldViewProj, - uniform float timeVal, - uniform float scale -) -{ - // Use standardise transform, so work accord with render system specific (RS depth, requires texture flipping, etc) - pos = mul(worldViewProj, inPos); - - // The input positions adjusted by texel offsets, so clean up inaccuracies - inPos.xy = sign(inPos.xy); - - // Convert to image-space - uv0 = (float2(inPos.x, -inPos.y) + 1.0f) * 0.5f; - noiseCoord = (pos + timeVal) * scale; -} - diff --git a/files/water/underwater.cg b/files/water/underwater.cg new file mode 100644 index 0000000000..a734c316f7 --- /dev/null +++ b/files/water/underwater.cg @@ -0,0 +1,61 @@ +void main_vp +( + in float4 inPos : POSITION, + + out float4 pos : POSITION, + out float2 uv0 : TEXCOORD0, + out float4 noiseCoord : TEXCOORD1, + + uniform float4x4 worldViewProj, + uniform float timeVal, + uniform float scale +) +{ + // Use standardise transform, so work accord with render system specific (RS depth, requires texture flipping, etc) + pos = mul(worldViewProj, inPos); + + // The input positions adjusted by texel offsets, so clean up inaccuracies + inPos.xy = sign(inPos.xy); + + // Convert to image-space + uv0 = (float2(inPos.x, -inPos.y) + 1.0f) * 0.5f; + noiseCoord = (pos + timeVal) * scale; +} + + + +float4 main_fp_nomrt (float2 iTexCoord : TEXCOORD0, + float3 noiseCoord : TEXCOORD1, + uniform sampler2D RT : register(s0), + uniform sampler2D NormalMap : register(s1), + uniform sampler2D CausticMap : register(s2), + uniform float4 tintColour) : COLOR +{ + float4 normal = tex2D(NormalMap, noiseCoord) * 2 - 1; + + return tex2D(RT, iTexCoord + normal.xy * 0.015) + + (tex2D(CausticMap, noiseCoord) / 5) + + tintColour ; +} + + +float4 main_fp (float2 iTexCoord : TEXCOORD0, + float3 noiseCoord : TEXCOORD1, + uniform float far, + uniform sampler2D RT : register(s0), + uniform sampler2D NormalMap : register(s1), + uniform sampler2D CausticMap : register(s2), + uniform sampler2D DepthMap : register(s3), + uniform float4 tintColour) : COLOR +{ + float4 normal = tex2D(NormalMap, noiseCoord) * 2 - 1; + + float depth = tex2D(DepthMap, iTexCoord).r * far; + depth = saturate(depth / 2000.f); + + float4 color = tex2D(RT, iTexCoord + normal.xy * 0.015) + + (tex2D(CausticMap, noiseCoord) / 5) + + tintColour; + + return lerp(color, float4(0, 0.65, 0.65, 1), depth); +} diff --git a/files/water/water.cg b/files/water/water.cg index 85c86f3b6d..a3393e3bf0 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -98,6 +98,9 @@ void main_fp oColor.xyz = lerp(refraction.xyz, reflection.xyz, opacity); + oColor.xyz += isUnderwater * float3(0, 0.35, 0.35); // underwater tint color + oColor.xyz = lerp(oColor.xyz, float3(0, 0.65, 0.65), saturate(isUnderwater * (iDepth / 2000.f))); // underwater fog + // add fog float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); diff --git a/files/water/water.material b/files/water/water.material index 3afbaacd5a..1b8573c4ae 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -1,7 +1,7 @@ -vertex_program Water/GlassVP cg +vertex_program UnderwaterEffectVP cg { - source GlassVP.cg - entry_point glass_vp + source underwater.cg + entry_point main_vp profiles vs_1_1 arbvp1 default_params @@ -11,10 +11,17 @@ vertex_program Water/GlassVP cg } -fragment_program Water/GlassFP cg +fragment_program UnderwaterEffectFP_NoMRT cg { - source GlassFP.cg - entry_point main_ps + source underwater.cg + entry_point main_fp_nomrt + profiles ps_2_0 arbfp1 +} + +fragment_program UnderwaterEffectFP cg +{ + source underwater.cg + entry_point main_fp profiles ps_2_0 arbfp1 } @@ -111,13 +118,13 @@ material Water/CompositorNoMRT pass { depth_check off - vertex_program_ref Water/GlassVP + vertex_program_ref UnderwaterEffectVP { param_named_auto timeVal time 0.25 param_named scale float 0.1 } - fragment_program_ref Water/GlassFP + fragment_program_ref UnderwaterEffectFP_NoMRT { param_named tintColour float4 0 0.35 0.35 1 } @@ -154,37 +161,33 @@ material Water/Compositor pass { depth_check off - vertex_program_ref Water/GlassVP + vertex_program_ref UnderwaterEffectVP { param_named_auto timeVal time 0.25 param_named scale float 0.1 } - fragment_program_ref Water/GlassFP + fragment_program_ref UnderwaterEffectFP { param_named tintColour float4 0 0.35 0.35 1 + param_named_auto far far_clip_distance } texture_unit RT { - tex_coord_set 0 + tex_coord_set 0 tex_address_mode clamp - filtering linear linear linear } texture_unit { texture WaterNormal2.tga 2d - tex_coord_set 2 - //tex_address_mode clamp - filtering linear linear linear + tex_coord_set 2 } texture_unit { texture caustic_0.png 2d - tex_coord_set 3 - //tex_address_mode clamp - filtering linear linear linear + tex_coord_set 3 } texture_unit DepthMap From f008ca166b1140a2f8c5ac068b57cc7040456729 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 19:21:28 +0200 Subject: [PATCH 403/488] restored moons like they were --- apps/openmw/mwworld/weather.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index 0d86d36cab..4a5586f55e 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -606,13 +606,13 @@ void WeatherManager::update(float duration) float moonHeight = 1-std::abs((night-0.5)*2); int facing = (mHour > 0.f && mHour<12.f) ? 1 : -1; Vector3 masser( - -(1-moonHeight)*facing, - -(1-moonHeight)*facing, + (1-moonHeight)*facing, + (1-moonHeight)*facing, moonHeight); Vector3 secunda( - -(1-moonHeight)*facing*0.8, - -(1-moonHeight)*facing*1.25, + (1-moonHeight)*facing*0.8, + (1-moonHeight)*facing*1.25, moonHeight); mRendering->getSkyManager()->setMasserDirection(masser); From c49d5dd40bc8c044e0194f1b6a9fb0f312a8582d Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 19:23:19 +0200 Subject: [PATCH 404/488] another sky tweak --- apps/openmw/mwrender/sky.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index d22f20a222..188ec3b831 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -848,7 +848,6 @@ void SkyManager::setWeather(const MWWorld::WeatherResult& weather) mSunGlare->setVisibility(weather.mGlareView * mGlareFade * strength); - if (strength < 0.4) strength = 0.4; mSun->setVisibility(weather.mGlareView * strength); mAtmosphereNight->setVisible(weather.mNight && mEnabled); From bcee5d5943592584fb39921686301088ecbd1133 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 6 Apr 2012 19:40:37 +0200 Subject: [PATCH 405/488] fix areas with only water (no objects below) --- files/water/water.cg | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/files/water/water.cg b/files/water/water.cg index a3393e3bf0..bbd42874bc 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -59,8 +59,10 @@ void main_fp oColor.a = 1; // Sample screen-space depth map and subtract pixel depth to get the real water depth - float depth1 = tex2D(depthMap, screenCoords).r * far - iDepth; + float depthTex = tex2D(depthMap, screenCoords).r; + float depth1 = depthTex * far - iDepth; depth1 = saturate(depth1 / 500.f); + depth1 = (depthTex == 0 ? 1 : depth1); // Simple wave effect. to be replaced by something better float2 uv1 = iUv + time * float2(0.5, 0); From 87e8917c4dc3a4a7df0a02f0e935aa3c3e965eb5 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 6 Apr 2012 10:43:14 -0700 Subject: [PATCH 406/488] Don't try to play sounds when no sound output is initialized --- apps/openmw/mwsound/openal_output.cpp | 4 ++++ apps/openmw/mwsound/sound_output.hpp | 4 ++++ apps/openmw/mwsound/soundmanager.cpp | 10 ++++++++++ 3 files changed, 18 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 610a797a2b..9959bedc84 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -508,6 +508,8 @@ void OpenAL_Output::init(const std::string &devname) } if(mFreeSources.empty()) fail("Could not allocate any sources"); + + mInitialized = true; } void OpenAL_Output::deinit() @@ -535,6 +537,8 @@ void OpenAL_Output::deinit() if(mDevice) alcCloseDevice(mDevice); mDevice = 0; + + mInitialized = false; } diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 774e42efa3..7efed81293 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -35,15 +35,19 @@ namespace MWSound Sound_Output(const Sound_Output &rhs); protected: + bool mInitialized; Ogre::Vector3 mPos; Sound_Output(SoundManager &mgr) : mManager(mgr) + , mInitialized(false) , mPos(0.0f, 0.0f, 0.0f) { } public: virtual ~Sound_Output() { } + bool isInitialized() { return mInitialized; } + friend class OpenAL_Output; friend class SoundManager; }; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 145390e3e1..eaa18e6dcd 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -136,6 +136,8 @@ namespace MWSound void SoundManager::streamMusicFull(const std::string& filename) { + if(!mOutput->isInitialized()) + return; std::cout <<"Playing "<isInitialized()) + return; try { // The range values are not tested @@ -210,6 +214,8 @@ namespace MWSound SoundPtr SoundManager::playSound(const std::string& soundId, float volume, float pitch, int mode) { SoundPtr sound; + if(!mOutput->isInitialized()) + return sound; try { float basevol = 1.0f; /* TODO: volume settings */ @@ -237,6 +243,8 @@ namespace MWSound float volume, float pitch, int mode) { SoundPtr sound; + if(!mOutput->isInitialized()) + return sound; try { // Look up the sound in the ESM data @@ -450,6 +458,8 @@ namespace MWSound void SoundManager::update(float duration) { + if(!mOutput->isInitialized()) + return; updateSounds(duration); updateRegionSound(duration); } From 72b3f6121d25a7fd036de25ebabc5952d16c67fb Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Sat, 7 Apr 2012 12:37:15 +0300 Subject: [PATCH 407/488] Windows Pinning: add files to CMakeLists.txt Add new files (map_window and window_pinnable_base) --- apps/openmw/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 3dabc9ac8d..e4f618eb9c 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -25,6 +25,7 @@ add_openmw_dir (mwinput add_openmw_dir (mwgui layouts text_input widgets race class birth review window_manager console dialogue dialogue_history window_base stats_window messagebox journalwindow charactercreation + map_window window_pinnable_base ) add_openmw_dir (mwdialogue From e21e8c221d3ba16700d37ea5cda0b5624d0c6d48 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sat, 7 Apr 2012 12:54:30 +0200 Subject: [PATCH 408/488] Added explicit cast to char in ToUTF8::windows_XXXX tables. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added explicit cast to char, without that gcc 4.7 (with default settings) is showing a lot of: narrowing conversion of ‘...’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing] warnings. --- components/to_utf8/gen_iconv.cpp | 2 +- components/to_utf8/tables_gen.hpp | 1536 ++++++++++++++--------------- 2 files changed, 769 insertions(+), 769 deletions(-) diff --git a/components/to_utf8/gen_iconv.cpp b/components/to_utf8/gen_iconv.cpp index 6202052455..b7298e304a 100644 --- a/components/to_utf8/gen_iconv.cpp +++ b/components/to_utf8/gen_iconv.cpp @@ -12,7 +12,7 @@ void tab() { cout << " "; } // write one number with a space in front of it and a comma after it void num(unsigned char i, bool last) { - cout << " 0x" << (unsigned)i; + cout << " (char)0x" << (unsigned)i; if(!last) cout << ","; } diff --git a/components/to_utf8/tables_gen.hpp b/components/to_utf8/tables_gen.hpp index 79945bddca..1084ca28f9 100644 --- a/components/to_utf8/tables_gen.hpp +++ b/components/to_utf8/tables_gen.hpp @@ -10,785 +10,785 @@ namespace ToUTF8 /// Serbian (Latin script), Romanian and Albanian. static char windows_1250[] = { - 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x8, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x9, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xa, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xb, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xc, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xd, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xe, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xf, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x10, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x11, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x12, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x13, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x14, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x15, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x16, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x17, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x18, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x19, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x21, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x22, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x23, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x24, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x25, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x26, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x27, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x28, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x29, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x30, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x31, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x32, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x33, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x34, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x35, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x36, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x37, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x38, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x39, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x40, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x41, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x42, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x43, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x44, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x45, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x46, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x47, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x48, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x49, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x50, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x51, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x52, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x53, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x54, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x55, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x56, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x57, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x58, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x59, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x60, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x61, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x62, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x63, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x64, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x65, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x66, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x67, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x68, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x69, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x70, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x71, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x72, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x73, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x74, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x75, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x76, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x77, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x78, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x79, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7f, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x82, 0xac, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x80, 0x9a, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x80, 0x9e, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa6, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa1, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x80, 0xb0, 0x0, 0x0, - 0x2, 0xc5, 0xa0, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xb9, 0x0, 0x0, - 0x2, 0xc5, 0x9a, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xa4, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xbd, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xb9, 0x0, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x80, 0x98, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x99, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9c, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9d, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa2, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x93, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x94, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x84, 0xa2, 0x0, 0x0, - 0x2, 0xc5, 0xa1, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xba, 0x0, 0x0, - 0x2, 0xc5, 0x9b, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xa5, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xbe, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xba, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa0, 0x0, 0x0, 0x0, - 0x2, 0xcb, 0x87, 0x0, 0x0, 0x0, - 0x2, 0xcb, 0x98, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x81, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa4, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x84, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa6, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa7, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa8, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa9, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x9e, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xab, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xac, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xad, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xae, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xbb, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb0, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb1, 0x0, 0x0, 0x0, - 0x2, 0xcb, 0x9b, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x82, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb4, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb5, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb6, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb7, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb8, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x85, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x9f, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xbb, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0xbd, 0x0, 0x0, 0x0, - 0x2, 0xcb, 0x9d, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0xbe, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xbc, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x94, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x81, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x82, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x82, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x84, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0xb9, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x86, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x87, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x8c, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x89, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x98, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8b, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x9a, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8d, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8e, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x8e, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x90, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x83, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x87, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x93, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x94, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x90, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x96, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x97, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x98, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xae, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9a, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xb0, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9c, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9d, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xa2, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9f, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x95, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa1, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa2, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x83, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa4, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0xba, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x87, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa7, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x8d, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa9, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x99, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xab, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x9b, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xad, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xae, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x8f, 0x0, 0x0, 0x0, - 0x2, 0xc4, 0x91, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x84, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x88, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb3, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb4, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x91, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb6, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb7, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0x99, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xaf, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xba, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xb1, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xbc, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xbd, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xa3, 0x0, 0x0, 0x0, - 0x2, 0xcb, 0x99, 0x0, 0x0, 0x0 + (char)0x1, (char)0x0, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x8, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x9, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xa, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xb, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xc, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xd, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xe, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xf, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x10, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x11, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x12, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x13, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x14, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x15, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x16, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x17, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x18, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x19, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x21, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x22, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x23, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x24, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x25, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x26, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x27, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x28, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x29, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x30, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x31, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x32, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x33, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x34, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x35, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x36, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x37, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x38, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x39, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x40, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x41, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x42, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x43, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x44, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x45, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x46, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x47, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x48, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x49, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x50, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x51, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x52, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x53, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x54, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x55, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x56, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x57, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x58, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x59, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x60, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x61, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x62, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x63, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x64, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x65, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x66, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x67, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x68, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x69, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x70, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x71, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x72, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x73, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x74, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x75, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x76, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x77, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x78, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x79, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x82, (char)0xac, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x80, (char)0x9a, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x80, (char)0x9e, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa6, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa1, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x80, (char)0xb0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa0, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xb9, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x9a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xbd, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xb9, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x80, (char)0x98, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x99, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9c, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9d, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa2, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x93, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x94, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x84, (char)0xa2, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa1, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xba, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x9b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xbe, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xba, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xcb, (char)0x87, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xcb, (char)0x98, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x81, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x84, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x9e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xab, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xac, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xad, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xae, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xbb, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xcb, (char)0x9b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x82, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x85, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x9f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xbb, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0xbd, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xcb, (char)0x9d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0xbe, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xbc, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x94, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x81, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x82, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x82, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x84, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0xb9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x86, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x87, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x8c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x89, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x98, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x9a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x8e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x90, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x83, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x87, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x93, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x94, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x90, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x96, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x97, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x98, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xae, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xb0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x95, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x83, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0xba, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x87, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x8d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x99, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xab, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x9b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xad, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xae, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x8f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc4, (char)0x91, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x84, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x88, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x91, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x99, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xaf, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xba, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xb1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xbc, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xbd, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xcb, (char)0x99, (char)0x0, (char)0x0, (char)0x0 }; /// Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic /// and other languages static char windows_1251[] = { - 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x8, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x9, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xa, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xb, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xc, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xd, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xe, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xf, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x10, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x11, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x12, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x13, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x14, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x15, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x16, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x17, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x18, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x19, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x21, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x22, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x23, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x24, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x25, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x26, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x27, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x28, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x29, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x30, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x31, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x32, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x33, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x34, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x35, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x36, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x37, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x38, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x39, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x40, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x41, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x42, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x43, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x44, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x45, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x46, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x47, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x48, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x49, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x50, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x51, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x52, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x53, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x54, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x55, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x56, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x57, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x58, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x59, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x60, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x61, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x62, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x63, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x64, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x65, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x66, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x67, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x68, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x69, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x70, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x71, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x72, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x73, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x74, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x75, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x76, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x77, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x78, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x79, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7f, 0x0, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x82, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x83, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9a, 0x0, 0x0, - 0x2, 0xd1, 0x93, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9e, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa6, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa1, 0x0, 0x0, - 0x3, 0xe2, 0x82, 0xac, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xb0, 0x0, 0x0, - 0x2, 0xd0, 0x89, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xb9, 0x0, 0x0, - 0x2, 0xd0, 0x8a, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x8c, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x8b, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x8f, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x92, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x98, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x99, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9c, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9d, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa2, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x93, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x94, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x84, 0xa2, 0x0, 0x0, - 0x2, 0xd1, 0x99, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xba, 0x0, 0x0, - 0x2, 0xd1, 0x9a, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x9c, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x9b, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x9f, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa0, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x8e, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x9e, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x88, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa4, 0x0, 0x0, 0x0, - 0x2, 0xd2, 0x90, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa6, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa7, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x81, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa9, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x84, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xab, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xac, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xad, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xae, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x87, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb0, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb1, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x86, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x96, 0x0, 0x0, 0x0, - 0x2, 0xd2, 0x91, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb5, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb6, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb7, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x91, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x84, 0x96, 0x0, 0x0, - 0x2, 0xd1, 0x94, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xbb, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x98, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x85, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x95, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x97, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x90, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x91, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x92, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x93, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x94, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x95, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x96, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x97, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x98, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x99, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x9a, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x9b, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x9c, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x9d, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x9e, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0x9f, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa0, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa1, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa2, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa3, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa4, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa5, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa6, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa7, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa8, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xa9, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xaa, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xab, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xac, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xad, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xae, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xaf, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb0, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb1, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb2, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb3, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb4, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb5, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb6, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb7, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb8, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xb9, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xba, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xbb, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xbc, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xbd, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xbe, 0x0, 0x0, 0x0, - 0x2, 0xd0, 0xbf, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x80, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x81, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x82, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x83, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x84, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x85, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x86, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x87, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x88, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x89, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x8a, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x8b, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x8c, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x8d, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x8e, 0x0, 0x0, 0x0, - 0x2, 0xd1, 0x8f, 0x0, 0x0, 0x0 + (char)0x1, (char)0x0, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x8, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x9, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xa, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xb, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xc, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xd, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xe, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xf, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x10, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x11, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x12, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x13, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x14, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x15, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x16, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x17, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x18, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x19, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x21, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x22, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x23, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x24, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x25, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x26, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x27, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x28, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x29, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x30, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x31, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x32, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x33, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x34, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x35, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x36, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x37, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x38, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x39, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x40, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x41, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x42, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x43, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x44, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x45, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x46, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x47, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x48, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x49, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x50, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x51, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x52, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x53, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x54, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x55, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x56, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x57, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x58, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x59, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x60, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x61, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x62, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x63, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x64, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x65, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x66, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x67, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x68, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x69, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x70, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x71, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x72, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x73, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x74, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x75, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x76, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x77, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x78, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x79, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x82, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x83, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9a, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x93, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9e, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa6, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa1, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x82, (char)0xac, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xb0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x89, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xb9, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x8a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x8c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x8b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x8f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x92, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x98, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x99, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9c, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9d, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa2, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x93, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x94, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x84, (char)0xa2, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x99, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xba, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x9a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x9c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x9b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x9f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x8e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x9e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x88, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd2, (char)0x90, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x81, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x84, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xab, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xac, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xad, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xae, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x87, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x86, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x96, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd2, (char)0x91, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x91, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x84, (char)0x96, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x94, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xbb, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x98, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x85, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x95, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x97, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x90, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x91, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x92, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x93, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x94, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x95, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x96, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x97, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x98, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x99, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x9a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x9b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x9c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x9d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x9e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0x9f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xa9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xaa, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xab, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xac, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xad, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xae, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xaf, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xb9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xba, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xbb, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xbc, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xbd, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xbe, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd0, (char)0xbf, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x80, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x81, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x82, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x83, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x84, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x85, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x86, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x87, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x88, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x89, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x8a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x8b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x8c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x8d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x8e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xd1, (char)0x8f, (char)0x0, (char)0x0, (char)0x0 }; /// Latin alphabet used by English and some other Western languages static char windows_1252[] = { - 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x8, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x9, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xa, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xb, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xc, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xd, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xe, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xf, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x10, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x11, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x12, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x13, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x14, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x15, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x16, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x17, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x18, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x19, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x1f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x21, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x22, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x23, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x24, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x25, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x26, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x27, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x28, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x29, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x2f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x30, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x31, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x32, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x33, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x34, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x35, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x36, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x37, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x38, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x39, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x3f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x40, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x41, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x42, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x43, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x44, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x45, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x46, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x47, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x48, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x49, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x4f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x50, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x51, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x52, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x53, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x54, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x55, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x56, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x57, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x58, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x59, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x5f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x60, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x61, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x62, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x63, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x64, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x65, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x66, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x67, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x68, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x69, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x6f, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x70, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x71, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x72, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x73, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x74, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x75, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x76, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x77, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x78, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x79, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7a, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7b, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7c, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7d, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7e, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x7f, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x82, 0xac, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x80, 0x9a, 0x0, 0x0, - 0x2, 0xc6, 0x92, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9e, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa6, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa1, 0x0, 0x0, - 0x2, 0xcb, 0x86, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xb0, 0x0, 0x0, - 0x2, 0xc5, 0xa0, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xb9, 0x0, 0x0, - 0x2, 0xc5, 0x92, 0x0, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x2, 0xc5, 0xbd, 0x0, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x3, 0xe2, 0x80, 0x98, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x99, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9c, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x9d, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xa2, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x93, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0x94, 0x0, 0x0, - 0x2, 0xcb, 0x9c, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x84, 0xa2, 0x0, 0x0, - 0x2, 0xc5, 0xa1, 0x0, 0x0, 0x0, - 0x3, 0xe2, 0x80, 0xba, 0x0, 0x0, - 0x2, 0xc5, 0x93, 0x0, 0x0, 0x0, - 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset - 0x2, 0xc5, 0xbe, 0x0, 0x0, 0x0, - 0x2, 0xc5, 0xb8, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa0, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa1, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa2, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa3, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa4, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa5, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa6, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa7, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa8, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xa9, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xaa, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xab, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xac, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xad, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xae, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xaf, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb0, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb1, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb2, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb3, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb4, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb5, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb6, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb7, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb8, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xb9, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xba, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xbb, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xbc, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xbd, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xbe, 0x0, 0x0, 0x0, - 0x2, 0xc2, 0xbf, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x80, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x81, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x82, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x83, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x84, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x85, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x86, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x87, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x88, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x89, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8a, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8b, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8c, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8d, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8e, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x8f, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x90, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x91, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x92, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x93, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x94, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x95, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x96, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x97, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x98, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x99, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9a, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9b, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9c, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9d, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9e, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0x9f, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa0, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa1, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa2, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa3, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa4, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa5, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa6, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa7, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa8, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xa9, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xaa, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xab, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xac, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xad, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xae, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xaf, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb0, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb1, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb2, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb3, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb4, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb5, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb6, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb7, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb8, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xb9, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xba, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xbb, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xbc, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xbd, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xbe, 0x0, 0x0, 0x0, - 0x2, 0xc3, 0xbf, 0x0, 0x0, 0x0 + (char)0x1, (char)0x0, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x8, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x9, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xa, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xb, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xc, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xd, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xe, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0xf, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x10, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x11, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x12, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x13, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x14, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x15, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x16, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x17, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x18, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x19, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x1f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x21, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x22, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x23, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x24, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x25, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x26, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x27, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x28, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x29, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x2f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x30, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x31, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x32, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x33, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x34, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x35, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x36, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x37, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x38, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x39, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x3f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x40, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x41, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x42, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x43, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x44, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x45, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x46, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x47, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x48, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x49, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x4f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x50, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x51, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x52, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x53, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x54, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x55, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x56, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x57, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x58, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x59, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x5f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x60, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x61, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x62, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x63, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x64, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x65, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x66, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x67, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x68, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x69, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x6f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x70, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x71, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x72, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x73, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x74, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x75, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x76, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x77, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x78, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x79, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7a, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7b, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7c, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7d, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7e, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x7f, (char)0x0, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x82, (char)0xac, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x80, (char)0x9a, (char)0x0, (char)0x0, + (char)0x2, (char)0xc6, (char)0x92, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9e, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa6, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa1, (char)0x0, (char)0x0, + (char)0x2, (char)0xcb, (char)0x86, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xb0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa0, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xb9, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x92, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x2, (char)0xc5, (char)0xbd, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x3, (char)0xe2, (char)0x80, (char)0x98, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x99, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9c, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x9d, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xa2, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x93, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0x94, (char)0x0, (char)0x0, + (char)0x2, (char)0xcb, (char)0x9c, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x84, (char)0xa2, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xa1, (char)0x0, (char)0x0, (char)0x0, + (char)0x3, (char)0xe2, (char)0x80, (char)0xba, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0x93, (char)0x0, (char)0x0, (char)0x0, + (char)0x1, (char)0x20, (char)0x0, (char)0x0, (char)0x0, (char)0x0, // not part of this charset + (char)0x2, (char)0xc5, (char)0xbe, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc5, (char)0xb8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xa9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xaa, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xab, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xac, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xad, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xae, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xaf, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xb9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xba, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xbb, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xbc, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xbd, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xbe, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc2, (char)0xbf, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x80, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x81, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x82, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x83, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x84, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x85, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x86, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x87, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x88, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x89, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x8f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x90, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x91, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x92, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x93, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x94, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x95, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x96, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x97, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x98, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x99, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9a, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9b, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9c, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9d, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9e, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0x9f, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xa9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xaa, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xab, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xac, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xad, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xae, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xaf, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb0, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb1, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb2, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb3, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb4, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb5, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb6, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb7, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb8, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xb9, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xba, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xbb, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xbc, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xbd, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xbe, (char)0x0, (char)0x0, (char)0x0, + (char)0x2, (char)0xc3, (char)0xbf, (char)0x0, (char)0x0, (char)0x0 }; } From 1bf79fd022232ca7ecd5e4904324fc48c8cf9609 Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Sat, 7 Apr 2012 16:47:41 +0300 Subject: [PATCH 409/488] Windows pinning: support for MapWindow Set correct skin for the Map Window. --- files/mygui/openmw_map_window_layout.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/mygui/openmw_map_window_layout.xml b/files/mygui/openmw_map_window_layout.xml index f5c2c9991d..fbba8ddf47 100644 --- a/files/mygui/openmw_map_window_layout.xml +++ b/files/mygui/openmw_map_window_layout.xml @@ -1,7 +1,7 @@ - + From dbf75470035b0b92b49bea0c60a8772ca9a40726 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 16:33:03 +0200 Subject: [PATCH 410/488] fixed first weather transition being instant --- apps/openmw/mwworld/weather.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index 4a5586f55e..d92a36c833 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -341,7 +341,6 @@ void WeatherManager::setWeather(const String& weather, bool instant) { mNextWeather = ""; mCurrentWeather = weather; - mFirstUpdate = false; } else { @@ -355,6 +354,7 @@ void WeatherManager::setWeather(const String& weather, bool instant) mNextWeather = weather; mRemainingTransitionTime = mWeatherSettings[mCurrentWeather].mTransitionDelta*24.f*3600; } + mFirstUpdate = false; } WeatherResult WeatherManager::getResult(const String& weather) From 96c37d3e7cea65d64dd7273eb9d375d3f789f33c Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 16:55:32 +0200 Subject: [PATCH 411/488] more accurate fog, TODO: apply this to the terrain --- apps/openmw/mwworld/weather.cpp | 5 ++++- components/nifogre/ogre_nif_loader.cpp | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index d92a36c833..fb0480171d 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -334,8 +334,11 @@ WeatherManager::WeatherManager(MWRender::RenderingManager* rendering, MWWorld::E void WeatherManager::setWeather(const String& weather, bool instant) { - if (weather == mCurrentWeather && mNextWeather == "") + if (weather == mCurrentWeather && mNextWeather == "") + { + mFirstUpdate = false; return; + } if (instant || mFirstUpdate) { diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index d2b53291e6..886c4b451a 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -328,6 +328,7 @@ void NIFLoader::createMaterial(const String &name, " out float4 oNormal : TEXCOORD2, \n" " out float oDepth : TEXCOORD3, \n" " out float4 oVertexColour : TEXCOORD4, \n" + " uniform float4 cameraPosObjSpace, \n" " uniform float4x4 worldViewProj \n" ") \n" "{ \n" @@ -335,12 +336,13 @@ void NIFLoader::createMaterial(const String &name, " oUV = uv; \n" " oNormal = normal; \n" " oPosition = mul( worldViewProj, position ); \n" - " oDepth = oPosition.z; \n" + " oDepth = length(position.xyz - cameraPosObjSpace.xyz); \n" " oPositionObjSpace = position; \n" "}"; vertex->setSource(outStream.str()); vertex->load(); vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); + vertex->getDefaultParameters()->setNamedAutoConstant("cameraPosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); } else vertex = mgr.getByName("main_vp"); From 12f7bae526b89aecb024b5f61d2cd77528e5c602 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 7 Apr 2012 18:37:41 +0200 Subject: [PATCH 412/488] added known spells and selected spell to NpcStats --- apps/openmw/mwmechanics/npcstats.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index aeb5f56d5b..59bfa2ac0a 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -2,6 +2,7 @@ #define GAME_MWMECHANICS_NPCSTATS_H #include +#include #include "stat.hpp" @@ -25,6 +26,9 @@ namespace MWMechanics bool mSneak; bool mCombat; + std::set mKnownSpells; + std::string mSelectedSpell; // can be an empty string (no spell selected) + NpcStats() : mForceRun (false), mForceSneak (false), mRun (false), mSneak (false), mCombat (false) {} }; From c94d6830145dcad282e8c3ac412308746c8692a2 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 7 Apr 2012 18:46:50 +0200 Subject: [PATCH 413/488] fill in initial spell list from NPC record --- apps/openmw/mwclass/npc.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index 83a94d27d1..2cf4cf41c3 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -61,6 +61,10 @@ namespace MWClass for (int i=0; i<27; ++i) data->mNpcStats.mSkill[i].setBase (ref->base->npdt52.skills[i]); + for (std::vector::const_iterator iter (ref->base->spells.list.begin()); + iter!=ref->base->spells.list.end(); ++iter) + data->mNpcStats.mKnownSpells.insert (*iter); + // creature stats data->mCreatureStats.mAttributes[0].set (ref->base->npdt52.strength); data->mCreatureStats.mAttributes[1].set (ref->base->npdt52.intelligence); From d5a7d418dd5176621dedc89e4153af49dab33bf9 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 7 Apr 2012 19:53:49 +0200 Subject: [PATCH 414/488] added getValue function to Class hierarchy --- apps/openmw/mwclass/apparatus.cpp | 8 ++++++++ apps/openmw/mwclass/apparatus.hpp | 3 +++ apps/openmw/mwclass/armor.cpp | 8 ++++++++ apps/openmw/mwclass/armor.hpp | 3 +++ apps/openmw/mwclass/book.cpp | 8 ++++++++ apps/openmw/mwclass/book.hpp | 3 +++ apps/openmw/mwclass/clothing.cpp | 8 ++++++++ apps/openmw/mwclass/clothing.hpp | 3 +++ apps/openmw/mwclass/ingredient.cpp | 8 ++++++++ apps/openmw/mwclass/ingredient.hpp | 3 +++ apps/openmw/mwclass/light.cpp | 8 ++++++++ apps/openmw/mwclass/light.hpp | 3 +++ apps/openmw/mwclass/lockpick.cpp | 8 ++++++++ apps/openmw/mwclass/lockpick.hpp | 3 +++ apps/openmw/mwclass/misc.cpp | 8 ++++++++ apps/openmw/mwclass/misc.hpp | 3 +++ apps/openmw/mwclass/potion.cpp | 8 ++++++++ apps/openmw/mwclass/potion.hpp | 3 +++ apps/openmw/mwclass/probe.cpp | 8 ++++++++ apps/openmw/mwclass/probe.hpp | 3 +++ apps/openmw/mwclass/repair.cpp | 8 ++++++++ apps/openmw/mwclass/repair.hpp | 3 +++ apps/openmw/mwclass/weapon.cpp | 8 ++++++++ apps/openmw/mwclass/weapon.hpp | 3 +++ apps/openmw/mwworld/class.cpp | 5 +++++ apps/openmw/mwworld/class.hpp | 4 ++++ 26 files changed, 141 insertions(+) diff --git a/apps/openmw/mwclass/apparatus.cpp b/apps/openmw/mwclass/apparatus.cpp index e95fb572f3..4562057de4 100644 --- a/apps/openmw/mwclass/apparatus.cpp +++ b/apps/openmw/mwclass/apparatus.cpp @@ -70,6 +70,14 @@ namespace MWClass return ref->base->script; } + int Apparatus::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Apparatus::registerSelf() { boost::shared_ptr instance (new Apparatus); diff --git a/apps/openmw/mwclass/apparatus.hpp b/apps/openmw/mwclass/apparatus.hpp index c0849e1fe2..861610f6cc 100644 --- a/apps/openmw/mwclass/apparatus.hpp +++ b/apps/openmw/mwclass/apparatus.hpp @@ -25,6 +25,9 @@ namespace MWClass virtual std::string getScript (const MWWorld::Ptr& ptr) const; ///< Return name of the script attached to ptr + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr) const; diff --git a/apps/openmw/mwclass/armor.cpp b/apps/openmw/mwclass/armor.cpp index e1c2734f0e..dfc40882ce 100644 --- a/apps/openmw/mwclass/armor.cpp +++ b/apps/openmw/mwclass/armor.cpp @@ -160,6 +160,14 @@ namespace MWClass return ESM::Skill::HeavyArmor; } + int Armor::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Armor::registerSelf() { boost::shared_ptr instance (new Armor); diff --git a/apps/openmw/mwclass/armor.hpp b/apps/openmw/mwclass/armor.hpp index 2b66ff8280..de5ca39835 100644 --- a/apps/openmw/mwclass/armor.hpp +++ b/apps/openmw/mwclass/armor.hpp @@ -40,6 +40,9 @@ namespace MWClass /// Return the index of the skill this item corresponds to when equiopped or -1, if there is /// no such skill. + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/book.cpp b/apps/openmw/mwclass/book.cpp index 0a81ebafb7..08811d2aa0 100644 --- a/apps/openmw/mwclass/book.cpp +++ b/apps/openmw/mwclass/book.cpp @@ -72,6 +72,14 @@ namespace MWClass return ref->base->script; } + int Book::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Book::registerSelf() { boost::shared_ptr instance (new Book); diff --git a/apps/openmw/mwclass/book.hpp b/apps/openmw/mwclass/book.hpp index ccbbfb4b2d..4738187cd6 100644 --- a/apps/openmw/mwclass/book.hpp +++ b/apps/openmw/mwclass/book.hpp @@ -25,6 +25,9 @@ namespace MWClass virtual std::string getScript (const MWWorld::Ptr& ptr) const; ///< Return name of the script attached to ptr + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/clothing.cpp b/apps/openmw/mwclass/clothing.cpp index 4fe19ada40..aa58822f97 100644 --- a/apps/openmw/mwclass/clothing.cpp +++ b/apps/openmw/mwclass/clothing.cpp @@ -123,6 +123,14 @@ namespace MWClass return -1; } + int Clothing::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Clothing::registerSelf() { boost::shared_ptr instance (new Clothing); diff --git a/apps/openmw/mwclass/clothing.hpp b/apps/openmw/mwclass/clothing.hpp index 171b062461..97e09012d5 100644 --- a/apps/openmw/mwclass/clothing.hpp +++ b/apps/openmw/mwclass/clothing.hpp @@ -34,6 +34,9 @@ namespace MWClass /// Return the index of the skill this item corresponds to when equiopped or -1, if there is /// no such skill. + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/ingredient.cpp b/apps/openmw/mwclass/ingredient.cpp index 1a7edf6325..84e7ba12ac 100644 --- a/apps/openmw/mwclass/ingredient.cpp +++ b/apps/openmw/mwclass/ingredient.cpp @@ -68,6 +68,14 @@ namespace MWClass return ref->base->script; } + int Ingredient::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Ingredient::registerSelf() { boost::shared_ptr instance (new Ingredient); diff --git a/apps/openmw/mwclass/ingredient.hpp b/apps/openmw/mwclass/ingredient.hpp index 9463dcf8d7..2d77176727 100644 --- a/apps/openmw/mwclass/ingredient.hpp +++ b/apps/openmw/mwclass/ingredient.hpp @@ -25,6 +25,9 @@ namespace MWClass virtual std::string getScript (const MWWorld::Ptr& ptr) const; ///< Return name of the script attached to ptr + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/light.cpp b/apps/openmw/mwclass/light.cpp index e2e63a89bb..9c31706dc6 100644 --- a/apps/openmw/mwclass/light.cpp +++ b/apps/openmw/mwclass/light.cpp @@ -110,6 +110,14 @@ namespace MWClass return std::make_pair (slots, false); } + int Light::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Light::registerSelf() { boost::shared_ptr instance (new Light); diff --git a/apps/openmw/mwclass/light.hpp b/apps/openmw/mwclass/light.hpp index 46a4d60ba4..bde252c289 100644 --- a/apps/openmw/mwclass/light.hpp +++ b/apps/openmw/mwclass/light.hpp @@ -34,6 +34,9 @@ namespace MWClass ///< \return first: Return IDs of the slot this object can be equipped in; second: can object /// stay stacked when equipped? + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/lockpick.cpp b/apps/openmw/mwclass/lockpick.cpp index 3dda2f4af0..b55a5e41c5 100644 --- a/apps/openmw/mwclass/lockpick.cpp +++ b/apps/openmw/mwclass/lockpick.cpp @@ -81,6 +81,14 @@ namespace MWClass return std::make_pair (slots, false); } + int Lockpick::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Lockpick::registerSelf() { boost::shared_ptr instance (new Lockpick); diff --git a/apps/openmw/mwclass/lockpick.hpp b/apps/openmw/mwclass/lockpick.hpp index 0c9189c548..1b56234af1 100644 --- a/apps/openmw/mwclass/lockpick.hpp +++ b/apps/openmw/mwclass/lockpick.hpp @@ -29,6 +29,9 @@ namespace MWClass ///< \return first: Return IDs of the slot this object can be equipped in; second: can object /// stay stacked when equipped? + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/misc.cpp b/apps/openmw/mwclass/misc.cpp index 864fc1e382..ef82cc277c 100644 --- a/apps/openmw/mwclass/misc.cpp +++ b/apps/openmw/mwclass/misc.cpp @@ -70,6 +70,14 @@ namespace MWClass return ref->base->script; } + int Miscellaneous::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Miscellaneous::registerSelf() { boost::shared_ptr instance (new Miscellaneous); diff --git a/apps/openmw/mwclass/misc.hpp b/apps/openmw/mwclass/misc.hpp index b07964f990..fc002280cf 100644 --- a/apps/openmw/mwclass/misc.hpp +++ b/apps/openmw/mwclass/misc.hpp @@ -25,6 +25,9 @@ namespace MWClass virtual std::string getScript (const MWWorld::Ptr& ptr) const; ///< Return name of the script attached to ptr + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/potion.cpp b/apps/openmw/mwclass/potion.cpp index 4ab3745900..e2c889484e 100644 --- a/apps/openmw/mwclass/potion.cpp +++ b/apps/openmw/mwclass/potion.cpp @@ -70,6 +70,14 @@ namespace MWClass return ref->base->script; } + int Potion::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Potion::registerSelf() { boost::shared_ptr instance (new Potion); diff --git a/apps/openmw/mwclass/potion.hpp b/apps/openmw/mwclass/potion.hpp index be9e713fba..7d30179376 100644 --- a/apps/openmw/mwclass/potion.hpp +++ b/apps/openmw/mwclass/potion.hpp @@ -25,6 +25,9 @@ namespace MWClass virtual std::string getScript (const MWWorld::Ptr& ptr) const; ///< Return name of the script attached to ptr + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/probe.cpp b/apps/openmw/mwclass/probe.cpp index 4b4d79a73e..1e9840334f 100644 --- a/apps/openmw/mwclass/probe.cpp +++ b/apps/openmw/mwclass/probe.cpp @@ -80,6 +80,14 @@ namespace MWClass return std::make_pair (slots, false); } + int Probe::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Probe::registerSelf() { boost::shared_ptr instance (new Probe); diff --git a/apps/openmw/mwclass/probe.hpp b/apps/openmw/mwclass/probe.hpp index 1507d65aab..232b523645 100644 --- a/apps/openmw/mwclass/probe.hpp +++ b/apps/openmw/mwclass/probe.hpp @@ -29,6 +29,9 @@ namespace MWClass ///< \return first: Return IDs of the slot this object can be equipped in; second: can object /// stay stacked when equipped? + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/repair.cpp b/apps/openmw/mwclass/repair.cpp index 758bf40797..1f12e699de 100644 --- a/apps/openmw/mwclass/repair.cpp +++ b/apps/openmw/mwclass/repair.cpp @@ -70,6 +70,14 @@ namespace MWClass return ref->base->script; } + int Repair::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Repair::registerSelf() { boost::shared_ptr instance (new Repair); diff --git a/apps/openmw/mwclass/repair.hpp b/apps/openmw/mwclass/repair.hpp index 17b606f4cb..0a9d9c2535 100644 --- a/apps/openmw/mwclass/repair.hpp +++ b/apps/openmw/mwclass/repair.hpp @@ -25,6 +25,9 @@ namespace MWClass virtual std::string getScript (const MWWorld::Ptr& ptr) const; ///< Return name of the script attached to ptr + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwclass/weapon.cpp b/apps/openmw/mwclass/weapon.cpp index 20db0cf38f..9b4db46541 100644 --- a/apps/openmw/mwclass/weapon.cpp +++ b/apps/openmw/mwclass/weapon.cpp @@ -139,6 +139,14 @@ namespace MWClass return -1; } + int Weapon::getValue (const MWWorld::Ptr& ptr) const + { + ESMS::LiveCellRef *ref = + ptr.get(); + + return ref->base->data.value; + } + void Weapon::registerSelf() { boost::shared_ptr instance (new Weapon); diff --git a/apps/openmw/mwclass/weapon.hpp b/apps/openmw/mwclass/weapon.hpp index f863c0bfe2..505c45645f 100644 --- a/apps/openmw/mwclass/weapon.hpp +++ b/apps/openmw/mwclass/weapon.hpp @@ -40,6 +40,9 @@ namespace MWClass /// Return the index of the skill this item corresponds to when equiopped or -1, if there is /// no such skill. + virtual int getValue (const MWWorld::Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + static void registerSelf(); virtual std::string getUpSoundId (const MWWorld::Ptr& ptr, const MWWorld::Environment& environment) const; diff --git a/apps/openmw/mwworld/class.cpp b/apps/openmw/mwworld/class.cpp index 9d766909f7..d3a0a34ae8 100644 --- a/apps/openmw/mwworld/class.cpp +++ b/apps/openmw/mwworld/class.cpp @@ -137,6 +137,11 @@ namespace MWWorld return -1; } + int Class::getValue (const Ptr& ptr) const + { + throw std::logic_error ("value not supported by this class"); + } + const Class& Class::get (const std::string& key) { std::map >::const_iterator iter = sClasses.find (key); diff --git a/apps/openmw/mwworld/class.hpp b/apps/openmw/mwworld/class.hpp index 67320b3e07..e474e9b926 100644 --- a/apps/openmw/mwworld/class.hpp +++ b/apps/openmw/mwworld/class.hpp @@ -155,6 +155,10 @@ namespace MWWorld /// no such skill. /// (default implementation: return -1) + virtual int getValue (const Ptr& ptr) const; + ///< Return trade value of the object. Throws an exception, if the object can't be traded. + /// (default implementation: throws an exception) + static const Class& get (const std::string& key); ///< If there is no class for this \a key, an exception is thrown. From 34a02fef45f0d02dc455ca77d24ce00ac5770da1 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 7 Apr 2012 20:09:09 +0200 Subject: [PATCH 415/488] consider item value when auto equipping --- apps/openmw/mwworld/inventorystore.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwworld/inventorystore.cpp b/apps/openmw/mwworld/inventorystore.cpp index aedd119c8a..1fe76a0a81 100644 --- a/apps/openmw/mwworld/inventorystore.cpp +++ b/apps/openmw/mwworld/inventorystore.cpp @@ -101,20 +101,30 @@ void MWWorld::InventoryStore::autoEquip (const MWMechanics::NpcStats& stats) for (ContainerStoreIterator iter (begin()); iter!=end(); ++iter) { + Ptr test = *iter; + std::pair, bool> itemsSlots = MWWorld::Class::get (*iter).getEquipmentSlots (*iter); for (std::vector::const_iterator iter2 (itemsSlots.first.begin()); iter2!=itemsSlots.first.end(); ++iter2) { - /// \todo comapre item with item in slot - if (slots.at (*iter2)==end()) + if (slots.at (*iter2)!=end()) { - /// \todo unstack, if reqquired (itemsSlots.second) + Ptr old = *slots.at (*iter2); - slots[*iter2] = iter; - break; + // check value + if (MWWorld::Class::get (old).getValue (old)>=MWWorld::Class::get (test).getValue (test)) + { + /// \todo check skill + continue; + } } + + /// \todo unstack, if reqquired (itemsSlots.second) + + slots[*iter2] = iter; + break; } } From 96911ada953c3b47756c3437235529f9fe400422 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 22:37:15 +0200 Subject: [PATCH 416/488] restored render queue of transparent objects, they are now part of the mrt textures this fixes some issues with transparent objects not visible in the refraction --- apps/openmw/mwrender/renderconst.hpp | 4 ++-- components/nifogre/ogre_nif_loader.cpp | 2 +- files/gbuffer/gbuffer.compositor | 9 ++++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp index ab411a6cb4..76a460a168 100644 --- a/apps/openmw/mwrender/renderconst.hpp +++ b/apps/openmw/mwrender/renderconst.hpp @@ -14,9 +14,9 @@ enum RenderQueueGroups RQG_Main = Ogre::RENDER_QUEUE_MAIN, - RQG_Water = Ogre::RENDER_QUEUE_6, + RQG_Water = Ogre::RENDER_QUEUE_7+1, - RQG_Alpha = Ogre::RENDER_QUEUE_7, + RQG_Alpha = Ogre::RENDER_QUEUE_MAIN, RQG_UnderWater = Ogre::RENDER_QUEUE_7+1, diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 886c4b451a..538e7290d4 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -420,7 +420,7 @@ void NIFLoader::createMaterial(const String &name, " oColor.a = tex.a * diffuse.a * vertexColour.a; \n"; if (mrt) outStream << - " oColor1 = float4(iDepth / far, 0, 0, 1); \n"; + " oColor1 = float4(iDepth / far, 0, 0, (oColor.a == 1)); \n"; // only write to MRT if alpha is 1 outStream << "}"; diff --git a/files/gbuffer/gbuffer.compositor b/files/gbuffer/gbuffer.compositor index 8ab5665dda..6ca35df87b 100644 --- a/files/gbuffer/gbuffer.compositor +++ b/files/gbuffer/gbuffer.compositor @@ -16,8 +16,9 @@ compositor gbuffer } pass render_scene { + // Renders everything except water first_render_queue 0 - last_render_queue 59 + last_render_queue 70 } } @@ -35,7 +36,9 @@ compositor gbuffer } } -// Finalizer compositor to render objects that we don't want in the MRT textures (this is the case for most transparent stuff) +// Finalizer compositor to render objects that we don't want in the MRT textures (ex. water) +// NB the water has to be rendered in a seperate compositor anyway, because it +// accesses the MRT textures which can't be done while they are still being rendered to. compositor gbufferFinalizer { technique @@ -63,7 +66,7 @@ compositor gbufferFinalizer } pass render_scene { - first_render_queue 60 + first_render_queue 71 last_render_queue 100 } } From cdea19206cb83a12adf09726a15ef902c15085a7 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 22:47:39 +0200 Subject: [PATCH 417/488] Revert "more accurate fog, TODO: apply this to the terrain" This reverts commit 96c37d3e7cea65d64dd7273eb9d375d3f789f33c. --- apps/openmw/mwworld/weather.cpp | 5 +---- components/nifogre/ogre_nif_loader.cpp | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index fb0480171d..d92a36c833 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -334,11 +334,8 @@ WeatherManager::WeatherManager(MWRender::RenderingManager* rendering, MWWorld::E void WeatherManager::setWeather(const String& weather, bool instant) { - if (weather == mCurrentWeather && mNextWeather == "") - { - mFirstUpdate = false; + if (weather == mCurrentWeather && mNextWeather == "") return; - } if (instant || mFirstUpdate) { diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 538e7290d4..835534eff2 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -328,7 +328,6 @@ void NIFLoader::createMaterial(const String &name, " out float4 oNormal : TEXCOORD2, \n" " out float oDepth : TEXCOORD3, \n" " out float4 oVertexColour : TEXCOORD4, \n" - " uniform float4 cameraPosObjSpace, \n" " uniform float4x4 worldViewProj \n" ") \n" "{ \n" @@ -336,13 +335,12 @@ void NIFLoader::createMaterial(const String &name, " oUV = uv; \n" " oNormal = normal; \n" " oPosition = mul( worldViewProj, position ); \n" - " oDepth = length(position.xyz - cameraPosObjSpace.xyz); \n" + " oDepth = oPosition.z; \n" " oPositionObjSpace = position; \n" "}"; vertex->setSource(outStream.str()); vertex->load(); vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); - vertex->getDefaultParameters()->setNamedAutoConstant("cameraPosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); } else vertex = mgr.getByName("main_vp"); From c748252d33cb87ac3ffb21e08c318717339f26d4 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 22:55:25 +0200 Subject: [PATCH 418/488] weather fix again --- apps/openmw/mwrender/renderconst.hpp | 2 -- apps/openmw/mwworld/weather.cpp | 5 ++++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp index 76a460a168..2c7f9e9acb 100644 --- a/apps/openmw/mwrender/renderconst.hpp +++ b/apps/openmw/mwrender/renderconst.hpp @@ -55,8 +55,6 @@ enum VisibilityFlags RV_Map = RV_Terrain + RV_Statics + RV_StaticsSmall + RV_Misc + RV_Water, /// \todo markers (normally hidden) - - RV_All = 255 }; } diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index d92a36c833..fb0480171d 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -334,8 +334,11 @@ WeatherManager::WeatherManager(MWRender::RenderingManager* rendering, MWWorld::E void WeatherManager::setWeather(const String& weather, bool instant) { - if (weather == mCurrentWeather && mNextWeather == "") + if (weather == mCurrentWeather && mNextWeather == "") + { + mFirstUpdate = false; return; + } if (instant || mFirstUpdate) { From 9169c0d7c9f9792a8249f0eace000dde275e4f7a Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 23:18:08 +0200 Subject: [PATCH 419/488] slightly improved the quality of the default water setting --- files/settings-default.cfg | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/files/settings-default.cfg b/files/settings-default.cfg index b421730dc5..051f081e80 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -55,10 +55,9 @@ fog end factor = 1.0 num lights = 8 [Water] - shader = false -rtt size = 256 +rtt size = 512 reflect terrain = true From 030060e656fc6e7cafc314133c8f2701455f959c Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 23:29:36 +0200 Subject: [PATCH 420/488] settings description --- files/settings-default.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 051f081e80..e3a5ceb7bd 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -55,6 +55,8 @@ fog end factor = 1.0 num lights = 8 [Water] +# Enable this to get fancy-looking water with reflections and refractions +# All the settings below have no effect if this is false shader = false rtt size = 512 From bf5a009299cb52cfc2f755303f49cbe32be3eb3f Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sat, 7 Apr 2012 23:33:54 +0200 Subject: [PATCH 421/488] Some improvements to the windows installer --- CMakeLists.txt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 71f36fe3de..7b87e35447 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -346,7 +346,10 @@ if(WIN32) FILE(GLOB files "${OpenMW_BINARY_DIR}/Release/*.*") INSTALL(FILES ${files} DESTINATION ".") INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "." RENAME "openmw.cfg") - INSTALL(FILES "${OpenMW_SOURCE_DIR}/readme.txt" DESTINATION ".") + INSTALL(FILES + "${OpenMW_SOURCE_DIR}/readme.txt" + "${OpenMW_BINARY_DIR}/settings-default.cfg" + DESTINATION ".") INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION ".") SET(CPACK_GENERATOR "NSIS") @@ -356,8 +359,12 @@ if(WIN32) SET(CPACK_PACKAGE_VERSION_MAJOR ${OPENMW_VERSION_MAJOR}) SET(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINO}) SET(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE}) - SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW;esmtool;Esmtool;omwlauncher;OpenMW Launcher") - set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Readme.lnk' '\$INSTDIR\\\\readme.txt'") + SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW;omwlauncher;OpenMW Launcher") + SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Readme.lnk' '\$INSTDIR\\\\readme.txt'") + SET(CPACK_NSIS_DELETE_ICONS_EXTRA " + !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP + Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Readme.lnk\\\" + ") SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenMW_SOURCE_DIR}/readme.txt") SET(CPACK_RESOURCE_FILE_LICENSE "${OpenMW_SOURCE_DIR}/GPL3.txt") SET(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") From b8be867e6e3bca87668bcb7f2f2e0fc9b5af07a9 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 7 Apr 2012 14:58:52 -0700 Subject: [PATCH 422/488] Work around a bug in the Windows OpenAL router --- apps/openmw/mwsound/openal_output.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 9959bedc84..615def7019 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -467,10 +467,15 @@ void OpenAL_Output::init(const std::string &devname) else fail("Failed to open \""+devname+"\""); } - if(alcIsExtensionPresent(mDevice, "ALC_ENUMERATE_ALL_EXT")) - std::cout << "Opened \""< Date: Sat, 7 Apr 2012 15:28:38 -0700 Subject: [PATCH 423/488] Add a setting to select the sound device name --- apps/openmw/mwsound/soundmanager.cpp | 15 ++++++++++++++- files/settings-default.cfg | 4 ++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index eaa18e6dcd..a09a4b0563 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -7,6 +7,7 @@ #include #include +#include #include "../mwworld/environment.hpp" #include "../mwworld/world.hpp" @@ -64,7 +65,19 @@ namespace MWSound for(size_t i = 0;i < names.size();i++) std::cout <<" "<init(); + std::string devname = Settings::Manager::getString("device", "Sound"); + try + { + mOutput->init(devname); + } + catch(std::exception &e) + { + if(devname.empty()) + throw; + std::cout <<"Failed to open device \""<init(); + Settings::Manager::setString("device", "Sound", ""); + } } catch(std::exception &e) { diff --git a/files/settings-default.cfg b/files/settings-default.cfg index f616471cce..71637c326d 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -53,3 +53,7 @@ fog end factor = 1.0 [Terrain] # Max. number of lights that affect the terrain. Setting to 1 will only reflect sunlight num lights = 8 + +[Sound] +# Device name. Blank means default +device = From 59ccab0b2ce69e3485bc3d1b65da65d578365ba6 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 7 Apr 2012 16:00:30 -0700 Subject: [PATCH 424/488] Add sound volume settings --- apps/openmw/mwsound/soundmanager.cpp | 22 ++++++++++++++++------ apps/openmw/mwsound/soundmanager.hpp | 4 ++++ files/settings-default.cfg | 5 +++++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a09a4b0563..730d9d9b21 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -50,11 +50,20 @@ namespace MWSound : mResourceMgr(Ogre::ResourceGroupManager::getSingleton()) , mEnvironment(environment) , mOutput(new DEFAULT_OUTPUT(*this)) - + , mMasterVolume(1.0f) + , mSFXVolume(1.0f) + , mMusicVolume(1.0f) { if(!useSound) return; + mMasterVolume = Settings::Manager::getFloat("master volume", "Sound"); + mMasterVolume = std::min(std::max(mMasterVolume, 0.0f), 1.0f); + mSFXVolume = Settings::Manager::getFloat("sfx volume", "Sound"); + mSFXVolume = std::min(std::max(mSFXVolume, 0.0f), 1.0f); + mMusicVolume = Settings::Manager::getFloat("music volume", "Sound"); + mMusicVolume = std::min(std::max(mMusicVolume, 0.0f), 1.0f); + std::cout << "Sound output: " << SOUND_OUT << std::endl; std::cout << "Sound decoder: " << SOUND_IN << std::endl; @@ -154,9 +163,10 @@ namespace MWSound std::cout <<"Playing "<streamSound(filename, 0.4f, 1.0f, Play_NoEnv); - mMusic->mBaseVolume = 0.4f; + mMusic = mOutput->streamSound(filename, basevol, 1.0f, Play_NoEnv); + mMusic->mBaseVolume = basevol; mMusic->mFlags = Play_NoEnv; } catch(std::exception &e) @@ -200,7 +210,7 @@ namespace MWSound try { // The range values are not tested - float basevol = 1.0f; /* TODO: volume settings */ + float basevol = mMasterVolume * mSFXVolume; std::string filePath = "Sound/"+filename; const ESM::Position &pos = ptr.getCellRef().pos; const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); @@ -231,7 +241,7 @@ namespace MWSound return sound; try { - float basevol = 1.0f; /* TODO: volume settings */ + float basevol = mMasterVolume * mSFXVolume; float min, max; std::string file = lookup(soundId, basevol, min, max); @@ -261,7 +271,7 @@ namespace MWSound try { // Look up the sound in the ESM data - float basevol = 1.0f; /* TODO: volume settings */ + float basevol = mMasterVolume * mSFXVolume; float min, max; std::string file = lookup(soundId, basevol, min, max); const ESM::Position &pos = ptr.getCellRef().pos; diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index cad5f61871..d64db299b4 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -56,6 +56,10 @@ namespace MWSound std::auto_ptr mOutput; + float mMasterVolume; + float mSFXVolume; + float mMusicVolume; + boost::shared_ptr mMusic; std::string mCurrentPlaylist; diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 71637c326d..878b9b0957 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -57,3 +57,8 @@ num lights = 8 [Sound] # Device name. Blank means default device = + +# Volumes. Sfx and music volumes are both affected by the master volume +master volume = 1.0 +sfx volume = 1.0 +music volume = 0.4 From 8c607870c066d5b13cd98f6a6ccd196f48acb465 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 11:26:54 +0200 Subject: [PATCH 425/488] test commit --- apps/openmw/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index df52faab14..f3b5c77bbf 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -342,7 +342,7 @@ private: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { std::streambuf* old_rdbuf = std::cout.rdbuf (); - + std::cout << "Testing stuff in the new branch!"; int ret = 0; #if defined(_DEBUG) // Redirect cout to VS debug output when running in debug mode From d5b8d4ef49d72c8a9663129ac4dc11b7e7b82d90 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 11:30:17 +0200 Subject: [PATCH 426/488] Revert "test commit" This reverts commit 8c607870c066d5b13cd98f6a6ccd196f48acb465. reverting the test commit in the test branch --- apps/openmw/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index f3b5c77bbf..df52faab14 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -342,7 +342,7 @@ private: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { std::streambuf* old_rdbuf = std::cout.rdbuf (); - std::cout << "Testing stuff in the new branch!"; + int ret = 0; #if defined(_DEBUG) // Redirect cout to VS debug output when running in debug mode From b1259ca15c71d9dcb95b6204ec4dbb106732b795 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 12:25:33 +0200 Subject: [PATCH 427/488] added a 'backend' for NPC/Player draw state --- apps/openmw/mwmechanics/drawstate.hpp | 11 +++++++++++ apps/openmw/mwmechanics/npcstats.hpp | 5 +++-- apps/openmw/mwworld/player.cpp | 7 +++++-- apps/openmw/mwworld/player.hpp | 8 +++++++- 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 apps/openmw/mwmechanics/drawstate.hpp diff --git a/apps/openmw/mwmechanics/drawstate.hpp b/apps/openmw/mwmechanics/drawstate.hpp new file mode 100644 index 0000000000..3ea115d422 --- /dev/null +++ b/apps/openmw/mwmechanics/drawstate.hpp @@ -0,0 +1,11 @@ +#ifndef GAME_MWMECHANICS_DRAWSTATE_H +#define GAME_MWMECHANICS_DRAWSTATE_H + +enum DrawState +{ + DrawState_Weapon, + DrawState_Spell, + DrawState_Nothing +} + +#endif diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index aeb5f56d5b..cd7c63f99a 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -4,13 +4,13 @@ #include #include "stat.hpp" +#include "drawstate.hpp" namespace MWMechanics { /// \brief Additional stats for NPCs /// /// For non-NPC-specific stats, see the CreatureStats struct. - struct NpcStats { // NPCs other than the player can only have one faction. But for the sake of consistency @@ -24,9 +24,10 @@ namespace MWMechanics bool mRun; bool mSneak; bool mCombat; + DrawState mDrawState; NpcStats() : mForceRun (false), mForceSneak (false), mRun (false), mSneak (false), - mCombat (false) {} + mCombat (false) , mDrawState(DrawState::DrawState_Nothing) {} }; } diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index 5bfb82138c..a3e8e46c01 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -12,7 +12,7 @@ namespace MWWorld { Player::Player (MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world) : mCellStore (0), mRenderer (renderer), mWorld (world), mClass (0), - mAutoMove (false), mForwardBackward (0) + mAutoMove (false), mForwardBackward (0) , mDrawState(DrawState_Nothing) { mPlayer.base = player; mPlayer.ref.refID = "player"; @@ -47,7 +47,10 @@ namespace MWWorld delete mClass; mClass = new_class; } - + void Player::setDrawState(const DrawState& value) + { + mDrawState = value; + } void Player::setAutoMove (bool enable) { MWWorld::Ptr ptr = getPlayer(); diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index 01c71da437..f235140f8c 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -8,6 +8,8 @@ #include "../mwworld/refdata.hpp" #include "../mwworld/ptr.hpp" +#include "../mwmechanics/drawstate.hpp" + namespace MWRender { class Player; @@ -31,7 +33,7 @@ namespace MWWorld ESM::Class *mClass; bool mAutoMove; int mForwardBackward; - + DrawState mDrawState; public: Player(MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world); @@ -76,6 +78,8 @@ namespace MWWorld void setClass (const ESM::Class& class_); + void setDrawState(const DrawState& state); + std::string getName() const { return mName; @@ -106,6 +110,8 @@ namespace MWWorld return mAutoMove; } + DrawState getDrawState() { return mDrawState; } + void setAutoMove (bool enable); void setLeftRight (int value); From dcab6737e50aa122a4189f8083060d4bd352bdb0 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 8 Apr 2012 12:26:21 +0200 Subject: [PATCH 428/488] consider skills when auto equipping --- apps/openmw/mwmechanics/actors.cpp | 2 +- apps/openmw/mwworld/inventorystore.cpp | 41 ++++++++++++++++++++++---- apps/openmw/mwworld/inventorystore.hpp | 4 ++- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index e68b99597e..c948e00d58 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -19,7 +19,7 @@ namespace MWMechanics { if (!paused) MWWorld::Class::get (ptr).getInventoryStore (ptr).autoEquip ( - MWWorld::Class::get (ptr).getNpcStats (ptr)); + MWWorld::Class::get (ptr).getNpcStats (ptr), mEnvironment); } Actors::Actors (MWWorld::Environment& environment) : mEnvironment (environment), mDuration (0) {} diff --git a/apps/openmw/mwworld/inventorystore.cpp b/apps/openmw/mwworld/inventorystore.cpp index 1fe76a0a81..650418201b 100644 --- a/apps/openmw/mwworld/inventorystore.cpp +++ b/apps/openmw/mwworld/inventorystore.cpp @@ -4,6 +4,8 @@ #include #include +#include "../mwmechanics/npcstats.hpp" + #include "class.hpp" #include /// \todo remove after rendering is implemented @@ -94,7 +96,8 @@ MWWorld::ContainerStoreIterator MWWorld::InventoryStore::getSlot (int slot) return mSlots[slot]; } -void MWWorld::InventoryStore::autoEquip (const MWMechanics::NpcStats& stats) +void MWWorld::InventoryStore::autoEquip (const MWMechanics::NpcStats& stats, + const Environment& environment) { TSlots slots; initSlots (slots); @@ -102,6 +105,7 @@ void MWWorld::InventoryStore::autoEquip (const MWMechanics::NpcStats& stats) for (ContainerStoreIterator iter (begin()); iter!=end(); ++iter) { Ptr test = *iter; + int testSkill = MWWorld::Class::get (test).getEquipmentSkill (test, environment); std::pair, bool> itemsSlots = MWWorld::Class::get (*iter).getEquipmentSlots (*iter); @@ -109,15 +113,40 @@ void MWWorld::InventoryStore::autoEquip (const MWMechanics::NpcStats& stats) for (std::vector::const_iterator iter2 (itemsSlots.first.begin()); iter2!=itemsSlots.first.end(); ++iter2) { - if (slots.at (*iter2)!=end()) + bool use = false; + + if (slots.at (*iter2)==end()) + use = true; // slot was empty before -> skill all further checks + else { Ptr old = *slots.at (*iter2); - // check value - if (MWWorld::Class::get (old).getValue (old)>=MWWorld::Class::get (test).getValue (test)) + if (!use) { - /// \todo check skill - continue; + // check skill + int oldSkill = + MWWorld::Class::get (old).getEquipmentSkill (old, environment); + + if (testSkill!=-1 || oldSkill!=-1 || testSkill!=oldSkill) + { + if (stats.mSkill[oldSkill].getModified()>stats.mSkill[testSkill].getModified()) + continue; // rejected, because old item better matched the NPC's skills. + + if (stats.mSkill[oldSkill].getModified()= + MWWorld::Class::get (test).getValue (test)) + { + continue; + } + + use = true; } } diff --git a/apps/openmw/mwworld/inventorystore.hpp b/apps/openmw/mwworld/inventorystore.hpp index 5eeaf570d0..ca733b0847 100644 --- a/apps/openmw/mwworld/inventorystore.hpp +++ b/apps/openmw/mwworld/inventorystore.hpp @@ -10,6 +10,8 @@ namespace MWMechanics namespace MWWorld { + struct Environment; + ///< \brief Variant of the ContainerStore for NPCs class InventoryStore : public ContainerStore { @@ -62,7 +64,7 @@ namespace MWWorld ContainerStoreIterator getSlot (int slot); - void autoEquip (const MWMechanics::NpcStats& stats); + void autoEquip (const MWMechanics::NpcStats& stats, const Environment& environment); ///< Auto equip items according to stats and item value. }; } From b4ee01e69113c2f2262099f15cab84aebb1e247e Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 12:26:59 +0200 Subject: [PATCH 429/488] missing file --- apps/openmw/mwinput/inputmanager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index 3721d10431..7b0481f189 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -65,6 +65,8 @@ namespace MWInput A_QuickLoad, A_QuickMenu, A_GameMenu, + A_ToggleWeapon, + A_ToggleSpell, A_LAST // Marker for the last item }; From c1afd534fc292ee441cab56fbb4d1627f1166f78 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 12:37:59 +0200 Subject: [PATCH 430/488] all stuff added --- apps/openmw/mwinput/inputmanager.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index 7b0481f189..4030eb9020 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -88,6 +88,24 @@ namespace MWInput /* InputImpl Methods */ + void toggleSpell() + { + DrawState state = player.getDrawState(); + if(state == DrawState_Weapon || state == DrawState_Nothing) + player.setDrawState(DrawState_Spell); + else + player.setDrawState(DrawState_Nothing); + } + + void toggleWeapon() + { + DrawState state = player.getDrawState(); + if(state == DrawState_Spell || state == DrawState_Nothing) + player.setDrawState(DrawState_Weapon); + else + player.setDrawState(DrawState_Nothing); + } + void screenshot() { mEngine.screenshot(); @@ -199,7 +217,10 @@ namespace MWInput "Auto Move"); disp->funcs.bind(A_ToggleWalk, boost::bind(&InputImpl::toggleWalking, this), "Toggle Walk/Run"); - + disp->funcs.bind(A_ToggleWeapon,boost::bind(&InputImpl::toggleWeapon,this), + "Draw Weapon"); + disp->funcs.bind(A_ToggleSpell,boost::bind(&InputImpl::toggleSpell,this), + "Ready hands"); // Add the exit listener ogre.getRoot()->addFrameListener(&exit); @@ -244,6 +265,8 @@ namespace MWInput disp->bind(A_AutoMove, KC_Z); disp->bind(A_ToggleSneak, KC_X); disp->bind(A_ToggleWalk, KC_C); + disp->bind(A_ToggleWeapon,KC_F); + disp->bind(A_ToggleSpell,KC_R); // Key bindings for polled keys // NOTE: These keys are constantly being polled. Only add keys that must be checked each frame. From ab2a1297b0a137cd2761c06210883835595d5bfd Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 8 Apr 2012 13:01:03 +0200 Subject: [PATCH 431/488] exclude player from auto equip --- apps/openmw/mwmechanics/actors.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index c948e00d58..7d9f748d4a 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -17,7 +17,7 @@ namespace MWMechanics void Actors::updateNpc (const MWWorld::Ptr& ptr, float duration, bool paused) { - if (!paused) + if (!paused && ptr.getRefData().getHandle()!="player") MWWorld::Class::get (ptr).getInventoryStore (ptr).autoEquip ( MWWorld::Class::get (ptr).getNpcStats (ptr), mEnvironment); } From 15526d6110327a32d105c3212569e0033aed94b4 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 13:17:16 +0200 Subject: [PATCH 432/488] only fists support lacks --- apps/openmw/mwinput/inputmanager.cpp | 14 ++++++++++++++ apps/openmw/mwworld/player.cpp | 2 ++ 2 files changed, 16 insertions(+) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index 4030eb9020..bd27de029c 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -92,18 +92,32 @@ namespace MWInput { DrawState state = player.getDrawState(); if(state == DrawState_Weapon || state == DrawState_Nothing) + { player.setDrawState(DrawState_Spell); + std::cout << "Player has now readied his hands for spellcasting!\n"; + } else + { player.setDrawState(DrawState_Nothing); + std::cout << "Player does not have any kind of attack ready now.\n"; + } + } void toggleWeapon() { DrawState state = player.getDrawState(); if(state == DrawState_Spell || state == DrawState_Nothing) + { player.setDrawState(DrawState_Weapon); + std::cout << "Player is now drawing his weapon.\n"; + } else + { player.setDrawState(DrawState_Nothing); + std::cout << "Player does not have any kind of attack ready now.\n"; + } + } void screenshot() diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index a3e8e46c01..b333d106af 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -47,10 +47,12 @@ namespace MWWorld delete mClass; mClass = new_class; } + void Player::setDrawState(const DrawState& value) { mDrawState = value; } + void Player::setAutoMove (bool enable) { MWWorld::Ptr ptr = getPlayer(); From c589cbd4ff12fcf98660e50ee9e318b742757e82 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 13:25:28 +0200 Subject: [PATCH 433/488] enum bug fix --- apps/openmw/mwmechanics/npcstats.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index cd7c63f99a..7c5d37972d 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -27,7 +27,7 @@ namespace MWMechanics DrawState mDrawState; NpcStats() : mForceRun (false), mForceSneak (false), mRun (false), mSneak (false), - mCombat (false) , mDrawState(DrawState::DrawState_Nothing) {} + mCombat (false) , mDrawState(DrawState_Nothing) {} }; } From 23cc1d17ca56950d8aeca6c9ea5d30dc49b01713 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 13:28:34 +0200 Subject: [PATCH 434/488] missing ; added --- apps/openmw/mwmechanics/drawstate.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwmechanics/drawstate.hpp b/apps/openmw/mwmechanics/drawstate.hpp index 3ea115d422..ded25f8d5d 100644 --- a/apps/openmw/mwmechanics/drawstate.hpp +++ b/apps/openmw/mwmechanics/drawstate.hpp @@ -3,9 +3,9 @@ enum DrawState { - DrawState_Weapon, - DrawState_Spell, - DrawState_Nothing -} + DrawState_Weapon = 0, + DrawState_Spell = 1, + DrawState_Nothing = 2, +}; #endif From 113bbfa253eac94ef1d46ed78928cd97538b8d94 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 8 Apr 2012 14:37:36 +0200 Subject: [PATCH 435/488] removed the now unneccesary SG for transparent objects --- apps/openmw/mwrender/objects.cpp | 12 ++++++------ apps/openmw/mwrender/objects.hpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index a388d31636..b633330fa9 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -144,7 +144,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) { Ogre::StaticGeometry* sg = 0; - if (transparent) +/* if (transparent) { if( mStaticGeometryAlpha.find(ptr.getCell()) == mStaticGeometryAlpha.end()) { @@ -155,7 +155,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) else sg = mStaticGeometryAlpha[ptr.getCell()]; } - else if (small) + else*/ if (small) { if( mStaticGeometrySmall.find(ptr.getCell()) == mStaticGeometrySmall.end()) { @@ -288,13 +288,13 @@ void Objects::removeCell(MWWorld::Ptr::CellStore* store) mRenderer.getScene()->destroyStaticGeometry (sg); sg = 0; } - if(mStaticGeometryAlpha.find(store) != mStaticGeometryAlpha.end()) + /*if(mStaticGeometryAlpha.find(store) != mStaticGeometryAlpha.end()) { Ogre::StaticGeometry* sg = mStaticGeometryAlpha[store]; mStaticGeometryAlpha.erase(store); mRenderer.getScene()->destroyStaticGeometry (sg); sg = 0; - } + }*/ if(mBounds.find(store) != mBounds.end()) mBounds.erase(store); @@ -312,11 +312,11 @@ void Objects::buildStaticGeometry(ESMS::CellStore& cell) Ogre::StaticGeometry* sg = mStaticGeometrySmall[&cell]; sg->build(); } - if(mStaticGeometryAlpha.find(&cell) != mStaticGeometryAlpha.end()) + /*if(mStaticGeometryAlpha.find(&cell) != mStaticGeometryAlpha.end()) { Ogre::StaticGeometry* sg = mStaticGeometryAlpha[&cell]; sg->build(); - } + }*/ } Ogre::AxisAlignedBox Objects::getDimensions(MWWorld::Ptr::CellStore* cell) diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index 4326ce3265..0c19f9f33f 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -15,7 +15,7 @@ class Objects{ std::map mCellSceneNodes; std::map mStaticGeometry; std::map mStaticGeometrySmall; - std::map mStaticGeometryAlpha; + //std::map mStaticGeometryAlpha; std::map mBounds; std::vector mLights; Ogre::SceneNode* mMwRoot; From 8caa5ff9c494046fca7d1d07e4f8481d6b0d3931 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 8 Apr 2012 15:03:09 +0200 Subject: [PATCH 436/488] fixed refraction and underwater distortion artifacts --- files/water/underwater.cg | 2 +- files/water/water.cg | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/files/water/underwater.cg b/files/water/underwater.cg index a734c316f7..b853dd5355 100644 --- a/files/water/underwater.cg +++ b/files/water/underwater.cg @@ -50,7 +50,7 @@ float4 main_fp (float2 iTexCoord : TEXCOORD0, { float4 normal = tex2D(NormalMap, noiseCoord) * 2 - 1; - float depth = tex2D(DepthMap, iTexCoord).r * far; + float depth = tex2D(DepthMap, iTexCoord + normal.xy * 0.015).r * far; depth = saturate(depth / 2000.f); float4 color = tex2D(RT, iTexCoord + normal.xy * 0.015) + diff --git a/files/water/water.cg b/files/water/water.cg index bbd42874bc..7c7ec07809 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -62,7 +62,6 @@ void main_fp float depthTex = tex2D(depthMap, screenCoords).r; float depth1 = depthTex * far - iDepth; depth1 = saturate(depth1 / 500.f); - depth1 = (depthTex == 0 ? 1 : depth1); // Simple wave effect. to be replaced by something better float2 uv1 = iUv + time * float2(0.5, 0); @@ -74,7 +73,20 @@ void main_fp normal = 2*normal - 1; float2 screenCoords_reflect = screenCoords + normal.yx * 0.05; - float2 screenCoords_refract = screenCoords + normal.yx * 0.1 * depth1; + float2 screenCoords_refract = screenCoords + normal.yx * 0.05 * depth1; + + // Sample depth again with the refracted coordinates + depthTex = tex2D(depthMap, screenCoords_refract).r; + float depth2 = (depthTex * far - iDepth) / 500.f; + depth2 = (depthTex == 0 ? 1 : depth2); + // if depth2 is less than 0, this means we would refract something which is above water, + // which we don't want to - so in that case, don't refract + if (depth2 < 0.25) // delta due to inaccuracies + { + screenCoords_refract = screenCoords; + depth2 = depth1; + } + depth2 = saturate(depth2); float4 reflection = tex2D(reflectionMap, screenCoords_reflect); float4 refraction = tex2D(refractionMap, screenCoords_refract); @@ -93,7 +105,7 @@ void main_fp float3 halfVector = normalize(iEyeVector + lightDir); float specular = pow(max(dot(normal.xyz, halfVector.xyz), 0), 64); - float opacity = depth1 * saturate(reflectionFactor + specular); + float opacity = depth2 * saturate(reflectionFactor + specular); opacity *= (1-isUnderwater); reflection.xyz += lightSpecularColour0.xyz * specular; From 17eb68e4bcbfe066d37e51a2baf0a2bf9a588c7b Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 8 Apr 2012 15:52:43 +0200 Subject: [PATCH 437/488] disable "reflect statics" by default because it performs not so well right now --- files/settings-default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/settings-default.cfg b/files/settings-default.cfg index e3a5ceb7bd..8209580d7e 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -63,7 +63,7 @@ rtt size = 512 reflect terrain = true -reflect statics = true +reflect statics = false reflect small statics = false From fbfc6e0966be9b13083f86046e79db257c1ef084 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 8 Apr 2012 16:06:47 +0200 Subject: [PATCH 438/488] enabled new water by default --- files/settings-default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 8209580d7e..efe03972b3 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -57,7 +57,7 @@ num lights = 8 [Water] # Enable this to get fancy-looking water with reflections and refractions # All the settings below have no effect if this is false -shader = false +shader = true rtt size = 512 From a5c6207fe76e710e30f8db6ed65ce799e2e678ca Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 8 Apr 2012 17:44:00 +0200 Subject: [PATCH 439/488] add setting to disable the underwater effect --- apps/openmw/mwrender/water.cpp | 18 +++++------------- apps/openmw/mwrender/water.hpp | 3 +-- files/settings-default.cfg | 3 +++ 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 615a24a767..7981def0b8 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -10,7 +10,7 @@ namespace MWRender Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), - mIsUnderwater(false), mReflectDistance(0), mVisibilityFlags(0), mOldCameraFarClip(0), + mIsUnderwater(false), mVisibilityFlags(0), mReflectionTarget(0), mActive(1) { mSky = sky; @@ -38,7 +38,6 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : + RV_Actors * Settings::Manager::getBool("reflect actors", "Water") + RV_Misc * Settings::Manager::getBool("reflect misc", "Water") + RV_Sky; - mReflectDistance = Settings::Manager::getInt("reflect distance", "Water"); mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); mWaterNode->setPosition(0, mTop, 0); @@ -73,6 +72,8 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : createMaterial(); mWater->setMaterial(mMaterial); + + mUnderwaterEffect = Settings::Manager::getBool("underwater effect", "Water"); } void Water::setActive(bool active) @@ -120,9 +121,7 @@ void Water::checkUnderwater(float y) if (!mActive) return; if ((mIsUnderwater && y > mTop) || !mWater->isVisible() || mCamera->getPolygonMode() != Ogre::PM_SOLID) { - try { - CompositorManager::getSingleton().setCompositorEnabled(mViewport, mCompositorName, false); - } catch(...) {} + CompositorManager::getSingleton().setCompositorEnabled(mViewport, mCompositorName, false); // tell the shader we are not underwater Ogre::Pass* pass = mMaterial->getTechnique(0)->getPass(0); @@ -139,9 +138,8 @@ void Water::checkUnderwater(float y) if (!mIsUnderwater && y < mTop && mWater->isVisible() && mCamera->getPolygonMode() == Ogre::PM_SOLID) { - try { + if (mUnderwaterEffect) CompositorManager::getSingleton().setCompositorEnabled(mViewport, mCompositorName, true); - } catch(...) {} // tell the shader we are underwater Ogre::Pass* pass = mMaterial->getTechnique(0)->getPass(0); @@ -164,10 +162,6 @@ Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) { - //mOldCameraFarClip = mCamera->getFarClipDistance(); - //if (mReflectDistance != 0) - // mCamera->setFarClipDistance(mReflectDistance); - if (evt.source == mReflectionTarget) { mWater->setVisible(false); @@ -189,8 +183,6 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) { mWater->setVisible(true); - //mCamera->setFarClipDistance(mOldCameraFarClip); - if (evt.source == mReflectionTarget) { mSky->resetSkyPosition(); diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index b5aa29a5ba..0e23f5b0c3 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -41,9 +41,8 @@ namespace MWRender { Ogre::RenderTarget* mReflectionTarget; + bool mUnderwaterEffect; int mVisibilityFlags; - int mReflectDistance; - int mOldCameraFarClip; public: Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 6b037c06a9..4b86cba927 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -71,6 +71,9 @@ reflect actors = true reflect misc = false +# Enable underwater effect. It is not resource intensive, so only disable it if you have problems. +underwater effect = true + [Sound] # Device name. Blank means default device = From 0b2dab0b5dca85d548bb29305456db3a845c31d5 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 8 Apr 2012 18:17:52 +0200 Subject: [PATCH 440/488] disable water fog due to some issues --- files/water/water.cg | 4 ++-- files/water/water.material | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/files/water/water.cg b/files/water/water.cg index 7c7ec07809..bf6d04c5cc 100644 --- a/files/water/water.cg +++ b/files/water/water.cg @@ -116,6 +116,6 @@ void main_fp oColor.xyz = lerp(oColor.xyz, float3(0, 0.65, 0.65), saturate(isUnderwater * (iDepth / 2000.f))); // underwater fog // add fog - float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); - oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); + //float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); + //oColor.xyz = lerp(oColor.xyz, fogColour, fogValue); } diff --git a/files/water/water.material b/files/water/water.material index 1b8573c4ae..7ce6e7ba29 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -59,8 +59,8 @@ material Water fragment_program_ref Water_FP { param_named_auto time time 0.1 - param_named_auto fogColour fog_colour - param_named_auto fogParams fog_params + //param_named_auto fogColour fog_colour + //param_named_auto fogParams fog_params param_named_auto renderTargetFlipping render_target_flipping param_named_auto far far_clip_distance param_named_auto lightPosObjSpace0 light_position_object_space 0 From 00b8ce6b355ed71253e0760456fcf9465ec682ca Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sun, 8 Apr 2012 18:22:41 +0200 Subject: [PATCH 441/488] Fix linker error in windows. --- apps/openmw/mwworld/inventorystore.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/inventorystore.hpp b/apps/openmw/mwworld/inventorystore.hpp index ca733b0847..60b89b0b47 100644 --- a/apps/openmw/mwworld/inventorystore.hpp +++ b/apps/openmw/mwworld/inventorystore.hpp @@ -10,7 +10,7 @@ namespace MWMechanics namespace MWWorld { - struct Environment; + class Environment; ///< \brief Variant of the ContainerStore for NPCs class InventoryStore : public ContainerStore From 9893e4b38484cb9806af407a9f52d8a536542687 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 19:43:04 +0200 Subject: [PATCH 442/488] made player respect NpcStats for mDrawState --- apps/openmw/mwworld/player.cpp | 12 ++++++++++-- apps/openmw/mwworld/player.hpp | 5 ++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index b333d106af..d24780ec10 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -4,6 +4,7 @@ #include "../mwrender/player.hpp" #include "../mwmechanics/movement.hpp" +#include "../mwmechanics/npcstats.hpp" #include "world.hpp" #include "class.hpp" @@ -12,7 +13,7 @@ namespace MWWorld { Player::Player (MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world) : mCellStore (0), mRenderer (renderer), mWorld (world), mClass (0), - mAutoMove (false), mForwardBackward (0) , mDrawState(DrawState_Nothing) + mAutoMove (false), mForwardBackward (0) { mPlayer.base = player; mPlayer.ref.refID = "player"; @@ -50,7 +51,8 @@ namespace MWWorld void Player::setDrawState(const DrawState& value) { - mDrawState = value; + MWWorld::Ptr ptr = getPlayer(); + MWWorld::Class::get(ptr).getNpcStats(ptr).mDrawState = value; } void Player::setAutoMove (bool enable) @@ -94,4 +96,10 @@ namespace MWWorld MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Run, !running); } + + DrawState Player::getDrawState() + { + MWWorld::Ptr ptr = getPlayer(); + return MWWorld::Class::get(ptr).getNpcStats(ptr).mDrawState; + } } diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index f235140f8c..8dcd9fcc65 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -20,7 +20,7 @@ namespace MWWorld class World; /// \brief NPC object representing the player and additional player data - class Player + class Player { ESMS::LiveCellRef mPlayer; MWWorld::Ptr::CellStore *mCellStore; @@ -33,7 +33,6 @@ namespace MWWorld ESM::Class *mClass; bool mAutoMove; int mForwardBackward; - DrawState mDrawState; public: Player(MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world); @@ -110,7 +109,7 @@ namespace MWWorld return mAutoMove; } - DrawState getDrawState() { return mDrawState; } + DrawState getDrawState(); void setAutoMove (bool enable); From db928dcb2ffae1a12240d9dc0567c677d3d5df57 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 19:44:11 +0200 Subject: [PATCH 443/488] put an opening bracket on a new line --- apps/openmw/mwworld/class.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/class.cpp b/apps/openmw/mwworld/class.cpp index 9d766909f7..ae12a2ab94 100644 --- a/apps/openmw/mwworld/class.cpp +++ b/apps/openmw/mwworld/class.cpp @@ -26,7 +26,9 @@ namespace MWWorld { } - void Class::insertObject(const Ptr& ptr, MWWorld::PhysicsSystem& physics, MWWorld::Environment& environment) const{ + + void Class::insertObject(const Ptr& ptr, MWWorld::PhysicsSystem& physics, MWWorld::Environment& environment) const + { } From aa8208efb97ad70f8559ad316efb7755e2bb1516 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 8 Apr 2012 22:18:56 +0200 Subject: [PATCH 444/488] changed compositor to be compatible with Ogre 1.8RC --- files/gbuffer/gbuffer.compositor | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/files/gbuffer/gbuffer.compositor b/files/gbuffer/gbuffer.compositor index 6ca35df87b..316003af6b 100644 --- a/files/gbuffer/gbuffer.compositor +++ b/files/gbuffer/gbuffer.compositor @@ -11,8 +11,11 @@ compositor gbuffer input none pass clear { - // make sure to set this to the viewport background color from outside - colour_value 0 0 0 1 + clear + { + // make sure to set this to the viewport background color from outside + colour_value 0 0 0 1 + } } pass render_scene { @@ -56,8 +59,11 @@ compositor gbufferFinalizer shadows off pass clear { - buffers colour - colour_value 0 0 0 0 + clear + { + buffers colour + colour_value 0 0 0 0 + } } pass render_quad { @@ -75,6 +81,9 @@ compositor gbufferFinalizer input none pass clear { + clear + { + } } pass render_quad { From 0aecb0ed5c553d3c818f84a480fe655da59dae5a Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 8 Apr 2012 23:44:40 +0200 Subject: [PATCH 445/488] cmake fix --- apps/openmw/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 2342882e07..a8ae0bd49d 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -55,7 +55,7 @@ add_openmw_dir (mwclass ) add_openmw_dir (mwmechanics - mechanicsmanager stat creaturestats magiceffects movement actors + mechanicsmanager stat creaturestats magiceffects movement actors drawstate ) # Main executable From 1df7be7feedbe112b229a56282d620d17244fc6b Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 9 Apr 2012 00:10:42 +0200 Subject: [PATCH 446/488] - fixes to texture filtering setting - add a sensible warning to settings-default.cfg, since there have been some confusions with it --- apps/openmw/mwrender/renderingmanager.cpp | 5 +++-- files/settings-default.cfg | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 8d84af98f4..aadc92369c 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -41,10 +41,11 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const std::string filter = Settings::Manager::getString("texture filtering", "General"); if (filter == "anisotropic") tfo = TFO_ANISOTROPIC; else if (filter == "trilinear") tfo = TFO_TRILINEAR; - else /* if (filter == "bilinear") */ tfo = TFO_BILINEAR; + else if (filter == "bilinear") tfo = TFO_BILINEAR; + else if (filter == "none") tfo = TFO_NONE; MaterialManager::getSingleton().setDefaultTextureFiltering(tfo); - MaterialManager::getSingleton().setDefaultAnisotropy(Settings::Manager::getInt("anisotropy", "General")); + MaterialManager::getSingleton().setDefaultAnisotropy( (filter == "anisotropic") ? Settings::Manager::getInt("anisotropy", "General") : 1 ); // Load resources ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 4b86cba927..d5a8bdfd46 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -1,8 +1,12 @@ +# WARNING: Editing this file might have no effect, as these +# settings are overwritten by your user settings file. + [General] # Camera field of view field of view = 55 # Texture filtering mode. valid values: +# none # anisotropic # bilinear # trilinear From e5b1e27fa6fae0b8f10dbff3e757342acefdbd5c Mon Sep 17 00:00:00 2001 From: gugus Date: Mon, 9 Apr 2012 13:24:19 +0200 Subject: [PATCH 447/488] pcRaiseRank works. Player can now join factions. --- apps/openmw/mwdialogue/dialoguemanager.cpp | 22 ++++++---- apps/openmw/mwscript/docs/vmformat.txt | 5 ++- apps/openmw/mwscript/statsextensions.cpp | 47 +++++++++++++++++----- 3 files changed, 55 insertions(+), 19 deletions(-) diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index cd7be50316..b36c9d998e 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -181,7 +181,17 @@ namespace MWDialogue break; case 46://Same faction - if(!selectCompare(comp,0,select.i)) return false; + { + MWMechanics::NpcStats PCstats = MWWorld::Class::get(mEnvironment.mWorld->getPlayer().getPlayer()).getNpcStats(mEnvironment.mWorld->getPlayer().getPlayer()); + MWMechanics::NpcStats NPCstats = MWWorld::Class::get(actor).getNpcStats(actor); + int sameFaction = 0; + if(!NPCstats.mFactionRank.empty()) + { + std::string NPCFaction = NPCstats.mFactionRank.begin()->first; + if(PCstats.mFactionRank.find(NPCFaction) != PCstats.mFactionRank.end()) sameFaction = 1; + } + if(!selectCompare(comp,sameFaction,select.i)) return false; + } break; case 48://Detected @@ -193,7 +203,6 @@ namespace MWDialogue break; case 50://choice - if(choice) { if(!selectCompare(comp,mChoice,select.i)) return false; @@ -447,9 +456,6 @@ namespace MWDialogue if (toLower (info.actor)!=MWWorld::Class::get (actor).getId (actor)) return false; - //PC Faction - if(!info.pcFaction.empty()) return false; - //NPC race if (!info.race.empty()) { @@ -495,8 +501,8 @@ namespace MWDialogue // TODO check player faction if(!info.pcFaction.empty()) { - MWMechanics::NpcStats stats = MWWorld::Class::get(actor).getNpcStats(mEnvironment.mWorld->getPlayer().getPlayer()); - std::map::iterator it = stats.mFactionRank.find(info.npcFaction); + MWMechanics::NpcStats stats = MWWorld::Class::get(mEnvironment.mWorld->getPlayer().getPlayer()).getNpcStats(mEnvironment.mWorld->getPlayer().getPlayer()); + std::map::iterator it = stats.mFactionRank.find(info.pcFaction); if(it!=stats.mFactionRank.end()) { //check rank @@ -816,7 +822,7 @@ namespace MWDialogue std::string DialogueManager::getFaction() { std::string factionID(""); - MWMechanics::NpcStats stats = MWWorld::Class::get(mActor).getNpcStats(mEnvironment.mWorld->getPlayer().getPlayer()); + MWMechanics::NpcStats stats = MWWorld::Class::get(mActor).getNpcStats(mActor); if(stats.mFactionRank.empty()) { std::cout << "No faction for this actor!"; diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 27b426d0e0..2b20b973c4 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -24,7 +24,8 @@ op 0x20007: PlayAnim, explicit reference op 0x20008: LoopAnim op 0x20009: LoopAnim, explicit reference op 0x2000a: Choice -opcodes 0x2000b-0x3ffff unused +op 0x2000b: PCRaiseRank +opcodes 0x2000c-0x3ffff unused Segment 4: (not implemented yet) @@ -127,5 +128,5 @@ op 0x2000141: GetWaterLevel op 0x2000142: SetWaterLevel op 0x2000143: ModWaterLevel op 0x2000144: ToggleWater, twa -op 0x2000145: PCRaiseRank +op 0x2000145: ModDisposition opcodes 0x2000146-0x3ffffff unused diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index be31321e98..05db103018 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -299,27 +299,54 @@ namespace MWScript } }; - class OpPCRaiseRank : public Interpreter::Opcode0 + class OpPCRaiseRank : public Interpreter::Opcode1 { public: - virtual void execute (Interpreter::Runtime& runtime) + virtual void execute (Interpreter::Runtime& runtime, unsigned int arg0) { + std::cout << "arg0:" << arg0<< std::endl; std::cout << "try to rais rank..."; + std::string factionID = ""; MWScript::InterpreterContext& context = static_cast (runtime.getContext()); - - std::string factionID = context.getEnvironment().mDialogueManager->getFaction(); + if(arg0==0) + { + std::cout << "slurpppp"; + factionID = context.getEnvironment().mDialogueManager->getFaction(); + } + else + { + factionID = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + } if(factionID != "") { std::cout << "raiserank!!!!!"; MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); - MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 1; + if(MWWorld::Class::get(player).getNpcStats(player).mFactionRank.find(factionID) == MWWorld::Class::get(player).getNpcStats(player).mFactionRank.end()) + { + MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 1; + } + else + { + MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] +1; + } } std::cout << std::endl; } }; + class OpModDisposition : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + + } + }; + const int numberOfAttributes = 8; const int opcodeGetAttribute = 0x2000027; @@ -351,7 +378,8 @@ namespace MWScript const int opcodeModSkill = 0x20000fa; const int opcodeModSkillExplicit = 0x2000115; //const int opcodePCJoinFaction = 0x2000141; - const int opcodePCRaiseRank = 0x2000145; + const int opcodePCRaiseRank = 0x2000b; + const int opcodeModDisposition = 0x2000145; void registerExtensions (Compiler::Extensions& extensions) { @@ -424,8 +452,8 @@ namespace MWScript opcodeModSkill+i, opcodeModSkillExplicit+i); } //extensions.registerInstruction("PCJoinFaction","S",opcodePCJoinFaction); - std::cout << "rgister raiserank"; - extensions.registerInstruction("pcraiserank","",opcodePCRaiseRank); + extensions.registerInstruction("pcraiserank","/S",opcodePCRaiseRank); + extensions.registerInstruction("moddisposition","l",opcodeModDisposition); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -483,7 +511,8 @@ namespace MWScript } //interpreter.installSegment5(opcodePCJoinFaction,new OpPCJoinFaction); - interpreter.installSegment5(opcodePCRaiseRank,new OpPCRaiseRank); + interpreter.installSegment3(opcodePCRaiseRank,new OpPCRaiseRank); + interpreter.installSegment5(opcodeModDisposition,new OpModDisposition); } } } From 45d11eaf144a160d8a3b3a2fb83e0a1b491a2324 Mon Sep 17 00:00:00 2001 From: gugus Date: Mon, 9 Apr 2012 14:23:12 +0200 Subject: [PATCH 448/488] fixed a bug in the dialogue manager. --- apps/openmw/mwdialogue/dialoguemanager.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index b36c9d998e..5dded07b08 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -112,16 +112,15 @@ namespace switch (world.getGlobalVariableType (name)) { case 's': - - return selectCompare (comp, value, world.getGlobalVariable (name).mShort); + return selectCompare (comp, world.getGlobalVariable (name).mShort, value); case 'l': - return selectCompare (comp, value, world.getGlobalVariable (name).mLong); + return selectCompare (comp, world.getGlobalVariable (name).mLong, value); case 'f': - return selectCompare (comp, value, world.getGlobalVariable (name).mFloat); + return selectCompare (comp, world.getGlobalVariable (name).mFloat, value); case ' ': @@ -282,7 +281,7 @@ namespace MWDialogue { case '1': // function - return true; // TODO implement functions + return true; // Done elsewhere. case '2': // global From aa8418634f8f776a09e19bf141e322505b26ad1f Mon Sep 17 00:00:00 2001 From: gugus Date: Mon, 9 Apr 2012 14:26:53 +0200 Subject: [PATCH 449/488] add PCLowerRank script instruction --- apps/openmw/mwscript/docs/vmformat.txt | 3 +- apps/openmw/mwscript/statsextensions.cpp | 43 +++++++++++++++++++++--- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 2b20b973c4..9a5cf8525d 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -25,7 +25,8 @@ op 0x20008: LoopAnim op 0x20009: LoopAnim, explicit reference op 0x2000a: Choice op 0x2000b: PCRaiseRank -opcodes 0x2000c-0x3ffff unused +op 0x2000c: PCLowerRank +opcodes 0x2000d-0x3ffff unused Segment 4: (not implemented yet) diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 05db103018..176f139aa1 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -305,14 +305,11 @@ namespace MWScript virtual void execute (Interpreter::Runtime& runtime, unsigned int arg0) { - std::cout << "arg0:" << arg0<< std::endl; - std::cout << "try to rais rank..."; std::string factionID = ""; MWScript::InterpreterContext& context = static_cast (runtime.getContext()); if(arg0==0) { - std::cout << "slurpppp"; factionID = context.getEnvironment().mDialogueManager->getFaction(); } else @@ -322,7 +319,6 @@ namespace MWScript } if(factionID != "") { - std::cout << "raiserank!!!!!"; MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); if(MWWorld::Class::get(player).getNpcStats(player).mFactionRank.find(factionID) == MWWorld::Class::get(player).getNpcStats(player).mFactionRank.end()) { @@ -336,7 +332,41 @@ namespace MWScript std::cout << std::endl; } }; - + + class OpPCLowerRank : public Interpreter::Opcode1 + { + public: + + virtual void execute (Interpreter::Runtime& runtime, unsigned int arg0) + { + std::string factionID = ""; + MWScript::InterpreterContext& context + = static_cast (runtime.getContext()); + if(arg0==0) + { + factionID = context.getEnvironment().mDialogueManager->getFaction(); + } + else + { + factionID = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + } + if(factionID != "") + { + MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); + if(MWWorld::Class::get(player).getNpcStats(player).mFactionRank.find(factionID) == MWWorld::Class::get(player).getNpcStats(player).mFactionRank.end()) + { + //do nothing, the player is not in the faction... Throw an exeption? + } + else + { + MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] -1; + } + } + std::cout << std::endl; + } + }; + class OpModDisposition : public Interpreter::Opcode0 { public: @@ -379,6 +409,7 @@ namespace MWScript const int opcodeModSkillExplicit = 0x2000115; //const int opcodePCJoinFaction = 0x2000141; const int opcodePCRaiseRank = 0x2000b; + const int opcodePCLowerRank = 0x2000c; const int opcodeModDisposition = 0x2000145; void registerExtensions (Compiler::Extensions& extensions) @@ -453,6 +484,7 @@ namespace MWScript } //extensions.registerInstruction("PCJoinFaction","S",opcodePCJoinFaction); extensions.registerInstruction("pcraiserank","/S",opcodePCRaiseRank); + extensions.registerInstruction("pclowerrank","/S",opcodePCLowerRank); extensions.registerInstruction("moddisposition","l",opcodeModDisposition); } @@ -512,6 +544,7 @@ namespace MWScript //interpreter.installSegment5(opcodePCJoinFaction,new OpPCJoinFaction); interpreter.installSegment3(opcodePCRaiseRank,new OpPCRaiseRank); + interpreter.installSegment3(opcodePCLowerRank,new OpPCLowerRank); interpreter.installSegment5(opcodeModDisposition,new OpModDisposition); } } From 6ca212b9e96280cbb671d22b44795ecdc64a6198 Mon Sep 17 00:00:00 2001 From: gugus Date: Mon, 9 Apr 2012 14:30:42 +0200 Subject: [PATCH 450/488] script instruction: PCJoinFaction --- apps/openmw/mwscript/docs/vmformat.txt | 3 +- apps/openmw/mwscript/statsextensions.cpp | 35 ++++++++++++++++++------ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 9a5cf8525d..30b9f97e79 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -26,7 +26,8 @@ op 0x20009: LoopAnim, explicit reference op 0x2000a: Choice op 0x2000b: PCRaiseRank op 0x2000c: PCLowerRank -opcodes 0x2000d-0x3ffff unused +op x20000d: PCJoinFaction +opcodes 0x2000e-0x3ffff unused Segment 4: (not implemented yet) diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 176f139aa1..5b64ee239e 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -284,18 +284,36 @@ namespace MWScript } }; - class OpPCJoinFaction : public Interpreter::Opcode0 + class OpPCJoinFaction : public Interpreter::Opcode1 { public: - virtual void execute (Interpreter::Runtime& runtime) + virtual void execute (Interpreter::Runtime& runtime, unsigned int arg0) { + std::string factionID = ""; MWScript::InterpreterContext& context = static_cast (runtime.getContext()); - - std::string factionID = runtime.getStringLiteral (runtime[0].mInteger); - runtime.pop(); - context.getEnvironment().mWorld->getPlayer().addFaction(factionID); + if(arg0==0) + { + factionID = context.getEnvironment().mDialogueManager->getFaction(); + } + else + { + factionID = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + } + if(factionID != "") + { + MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); + if(MWWorld::Class::get(player).getNpcStats(player).mFactionRank.find(factionID) == MWWorld::Class::get(player).getNpcStats(player).mFactionRank.end()) + { + MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 1; + } + else + { + //the player is already in the faction... Throw an exeption? + } + } } }; @@ -329,7 +347,6 @@ namespace MWScript MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] +1; } } - std::cout << std::endl; } }; @@ -363,7 +380,6 @@ namespace MWScript MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] -1; } } - std::cout << std::endl; } }; @@ -410,6 +426,7 @@ namespace MWScript //const int opcodePCJoinFaction = 0x2000141; const int opcodePCRaiseRank = 0x2000b; const int opcodePCLowerRank = 0x2000c; + const int opcodePCJoinFaction = 0x2000d; const int opcodeModDisposition = 0x2000145; void registerExtensions (Compiler::Extensions& extensions) @@ -485,6 +502,7 @@ namespace MWScript //extensions.registerInstruction("PCJoinFaction","S",opcodePCJoinFaction); extensions.registerInstruction("pcraiserank","/S",opcodePCRaiseRank); extensions.registerInstruction("pclowerrank","/S",opcodePCLowerRank); + extensions.registerInstruction("pcjoinfaction","/S",opcodePCJoinFaction); extensions.registerInstruction("moddisposition","l",opcodeModDisposition); } @@ -545,6 +563,7 @@ namespace MWScript //interpreter.installSegment5(opcodePCJoinFaction,new OpPCJoinFaction); interpreter.installSegment3(opcodePCRaiseRank,new OpPCRaiseRank); interpreter.installSegment3(opcodePCLowerRank,new OpPCLowerRank); + interpreter.installSegment3(opcodePCJoinFaction,new OpPCJoinFaction); interpreter.installSegment5(opcodeModDisposition,new OpModDisposition); } } From dd9a88cee266f4e91bd77312b3b083c9c9a47ad7 Mon Sep 17 00:00:00 2001 From: gugus Date: Mon, 9 Apr 2012 14:32:07 +0200 Subject: [PATCH 451/488] clean up --- apps/openmw/mwscript/statsextensions.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 5b64ee239e..27983eca8a 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -423,7 +423,7 @@ namespace MWScript const int opcodeSetSkillExplicit = 0x20000df; const int opcodeModSkill = 0x20000fa; const int opcodeModSkillExplicit = 0x2000115; - //const int opcodePCJoinFaction = 0x2000141; + const int opcodePCRaiseRank = 0x2000b; const int opcodePCLowerRank = 0x2000c; const int opcodePCJoinFaction = 0x2000d; @@ -499,7 +499,6 @@ namespace MWScript extensions.registerInstruction (mod + skills[i], "l", opcodeModSkill+i, opcodeModSkillExplicit+i); } - //extensions.registerInstruction("PCJoinFaction","S",opcodePCJoinFaction); extensions.registerInstruction("pcraiserank","/S",opcodePCRaiseRank); extensions.registerInstruction("pclowerrank","/S",opcodePCLowerRank); extensions.registerInstruction("pcjoinfaction","/S",opcodePCJoinFaction); @@ -560,7 +559,6 @@ namespace MWScript interpreter.installSegment5 (opcodeModSkillExplicit+i, new OpModSkill (i)); } - //interpreter.installSegment5(opcodePCJoinFaction,new OpPCJoinFaction); interpreter.installSegment3(opcodePCRaiseRank,new OpPCRaiseRank); interpreter.installSegment3(opcodePCLowerRank,new OpPCLowerRank); interpreter.installSegment3(opcodePCJoinFaction,new OpPCJoinFaction); From 944654f2637c68231583c636f064c6308067aa7a Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 9 Apr 2012 15:20:57 +0200 Subject: [PATCH 452/488] image rotating function --- CMakeLists.txt | 1 + libs/openengine/ogre/imagerotate.cpp | 74 ++++++++++++++++++++++++++++ libs/openengine/ogre/imagerotate.hpp | 27 ++++++++++ 3 files changed, 102 insertions(+) create mode 100644 libs/openengine/ogre/imagerotate.cpp create mode 100644 libs/openengine/ogre/imagerotate.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b87e35447..1483864321 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,7 @@ set(OENGINE_OGRE ${LIBDIR}/openengine/ogre/renderer.cpp ${LIBDIR}/openengine/ogre/mouselook.cpp ${LIBDIR}/openengine/ogre/fader.cpp + ${LIBDIR}/openengine/ogre/imagerotate.cpp ) set(OENGINE_GUI ${LIBDIR}/openengine/gui/events.cpp diff --git a/libs/openengine/ogre/imagerotate.cpp b/libs/openengine/ogre/imagerotate.cpp new file mode 100644 index 0000000000..a6304277eb --- /dev/null +++ b/libs/openengine/ogre/imagerotate.cpp @@ -0,0 +1,74 @@ +#include "imagerotate.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace Ogre; +using namespace OEngine::Render; + +void ImageRotate::rotate(const std::string& sourceImage, const std::string& destImage, const float angle) +{ + Root* root = Ogre::Root::getSingletonPtr(); + + SceneManager* sceneMgr = root->createSceneManager(ST_GENERIC); + Camera* camera = sceneMgr->createCamera("ImageRotateCamera"); + + MaterialPtr material = MaterialManager::getSingleton().create("ImageRotateMaterial", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->getTechnique(0)->getPass(0)->setLightingEnabled(false); + material->getTechnique(0)->getPass(0)->setDepthCheckEnabled(false); + TextureUnitState* tus = material->getTechnique(0)->getPass(0)->createTextureUnitState(sourceImage); + Degree deg(angle); + tus->setTextureRotate(Radian(deg.valueRadians())); + tus->setTextureAddressingMode(TextureUnitState::TAM_BORDER); + tus->setTextureBorderColour(ColourValue(0, 0, 0, 0)); + + Rectangle2D* rect = new Rectangle2D(true); + rect->setCorners(-1.0, 1.0, 1.0, -1.0); + rect->setMaterial("ImageRotateMaterial"); + // Render the background before everything else + rect->setRenderQueueGroup(RENDER_QUEUE_BACKGROUND); + + // Use infinite AAB to always stay visible + AxisAlignedBox aabInf; + aabInf.setInfinite(); + rect->setBoundingBox(aabInf); + + // Attach background to the scene + SceneNode* node = sceneMgr->getRootSceneNode()->createChildSceneNode(); + node->attachObject(rect); + + // retrieve image width and height + TexturePtr sourceTexture = TextureManager::getSingleton().getByName(sourceImage); + unsigned int width = sourceTexture->getWidth(); + unsigned int height = sourceTexture->getHeight(); + + TexturePtr destTexture = TextureManager::getSingleton().createManual( + "ImageRotateDestTexture", + ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + TEX_TYPE_2D, + width, height, + 0, + PF_R8G8B8, + TU_RENDERTARGET); + + RenderTarget* rtt = destTexture->getBuffer()->getRenderTarget(); + rtt->setAutoUpdated(false); + Viewport* vp = rtt->addViewport(camera); + vp->setOverlaysEnabled(false); + vp->setShadowsEnabled(false); + + rtt->update(); + rtt->writeContentsToFile(destImage); + + // remove all the junk we've created + TextureManager::getSingleton().remove("ImageRotateDestTexture"); + MaterialManager::getSingleton().remove("ImageRotateMaterial"); + root->destroySceneManager(sceneMgr); + delete rect; +} diff --git a/libs/openengine/ogre/imagerotate.hpp b/libs/openengine/ogre/imagerotate.hpp new file mode 100644 index 0000000000..85363d71f4 --- /dev/null +++ b/libs/openengine/ogre/imagerotate.hpp @@ -0,0 +1,27 @@ +#ifndef OENGINE_OGRE_IMAGEROTATE_HPP +#define OENGINE_OGRE_IMAGEROTATE_HPP + +#include + +namespace OEngine +{ +namespace Render +{ + + /// Rotate an image by certain degrees and save as file, uses the GPU + /// Make sure Ogre Root is initialised before calling + class ImageRotate + { + public: + /** + * @param source image (file name - has to exist in an resource group) + * @param destination image (absolute file path) + * @param angle in degrees to turn + */ + static void rotate(const std::string& sourceImage, const std::string& destImage, const float angle); + }; + +} +} + +#endif From 33f360f52f363e67a65b1432a33442d9bfc0a303 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 9 Apr 2012 15:36:51 +0200 Subject: [PATCH 453/488] transparency fix --- libs/openengine/ogre/imagerotate.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/openengine/ogre/imagerotate.cpp b/libs/openengine/ogre/imagerotate.cpp index a6304277eb..166a1d3c60 100644 --- a/libs/openengine/ogre/imagerotate.cpp +++ b/libs/openengine/ogre/imagerotate.cpp @@ -54,7 +54,7 @@ void ImageRotate::rotate(const std::string& sourceImage, const std::string& dest TEX_TYPE_2D, width, height, 0, - PF_R8G8B8, + PF_A8R8G8B8, TU_RENDERTARGET); RenderTarget* rtt = destTexture->getBuffer()->getRenderTarget(); @@ -62,6 +62,8 @@ void ImageRotate::rotate(const std::string& sourceImage, const std::string& dest Viewport* vp = rtt->addViewport(camera); vp->setOverlaysEnabled(false); vp->setShadowsEnabled(false); + vp->setBackgroundColour(ColourValue(0,0,0,0)); + vp->setClearEveryFrame(true, FBT_DEPTH); rtt->update(); rtt->writeContentsToFile(destImage); From 344641e5748d5cb12bcddebd4706a585c73ebbd8 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Wed, 11 Apr 2012 13:38:17 +0200 Subject: [PATCH 454/488] updated developer list in readme file --- readme.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.txt b/readme.txt index 17806172f0..e1c24ab52e 100644 --- a/readme.txt +++ b/readme.txt @@ -95,6 +95,7 @@ Allowed options: CREDITS Current Developers: +Aleksandar Jovanov Alexander “Ace” Olofsson athile BrotherBrick From 2a4fcf42a3a8af3314a0c87deb2d719944482a73 Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 11 Apr 2012 18:53:13 +0200 Subject: [PATCH 455/488] basic shadows --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/engine.cpp | 1 + apps/openmw/mwrender/localmap.cpp | 4 +- apps/openmw/mwrender/objects.cpp | 2 + apps/openmw/mwrender/occlusionquery.cpp | 3 + apps/openmw/mwrender/renderingmanager.cpp | 33 ++- apps/openmw/mwrender/renderingmanager.hpp | 15 +- apps/openmw/mwrender/shaderhelper.cpp | 308 ++++++++++++++++++++++ apps/openmw/mwrender/shaderhelper.hpp | 29 ++ apps/openmw/mwrender/shadows.cpp | 175 ++++++++++++ apps/openmw/mwrender/shadows.hpp | 39 +++ apps/openmw/mwrender/sky.cpp | 10 + apps/openmw/mwrender/terrain.cpp | 21 +- apps/openmw/mwrender/terrain.hpp | 3 +- apps/openmw/mwrender/terrainmaterial.cpp | 110 ++++---- apps/openmw/mwrender/terrainmaterial.hpp | 5 + apps/openmw/mwrender/water.cpp | 75 +++++- apps/openmw/mwrender/water.hpp | 2 + components/nifogre/ogre_nif_loader.cpp | 181 +++---------- files/CMakeLists.txt | 3 + files/settings-default.cfg | 31 ++- files/shadows/depthshadowcaster.cg | 51 ++++ files/shadows/depthshadowcaster.material | 67 +++++ files/water/water.material | 2 +- 24 files changed, 953 insertions(+), 219 deletions(-) create mode 100644 apps/openmw/mwrender/shaderhelper.cpp create mode 100644 apps/openmw/mwrender/shaderhelper.hpp create mode 100644 apps/openmw/mwrender/shadows.cpp create mode 100644 apps/openmw/mwrender/shadows.hpp create mode 100644 files/shadows/depthshadowcaster.cg create mode 100644 files/shadows/depthshadowcaster.material diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index a8ae0bd49d..6a65c0e14a 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -15,7 +15,7 @@ source_group(game FILES ${GAME} ${GAME_HEADER}) add_openmw_dir (mwrender renderingmanager debugging sky player animation npcanimation creatureanimation actors objects - renderinginterface localmap occlusionquery terrain terrainmaterial water + renderinginterface localmap occlusionquery terrain terrainmaterial water shadows shaderhelper ) add_openmw_dir (mwinput diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 259733600f..1adcf8dcac 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -362,6 +362,7 @@ void OMW::Engine::go() addResourcesDirectory(mResDir / "mygui"); addResourcesDirectory(mResDir / "water"); addResourcesDirectory(mResDir / "gbuffer"); + addResourcesDirectory(mResDir / "shadows"); // Create the window mOgre->createWindow("OpenMW"); diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index cb3c0a204b..2cc233a011 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -225,7 +225,9 @@ void LocalMap::render(const float x, const float y, vp->setShadowsEnabled(false); vp->setBackgroundColour(ColourValue(0, 0, 0)); vp->setVisibilityMask(RV_Map); - vp->setMaterialScheme("Map"); + + // use fallback techniques without shadows and without mrt + vp->setMaterialScheme("Fallback"); rtt->update(); diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index b633330fa9..eb7e440cb7 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -193,6 +193,8 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) sg->setVisibilityFlags(small ? RV_StaticsSmall : RV_Statics); + sg->setCastShadows(true); + sg->setRenderQueueGroup(transparent ? RQG_Alpha : RQG_Main); mRenderer.getScene()->destroyEntity(ent); diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index d789b8c4e9..80b804dce2 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -60,6 +60,7 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBNodeReal = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); mBBQueryTotal = mRendering->getScene()->createBillboardSet(1); + mBBQueryTotal->setCastShadows(false); mBBQueryTotal->setDefaultDimensions(150, 150); mBBQueryTotal->createBillboard(Vector3::ZERO); mBBQueryTotal->setMaterialName("QueryTotalPixels"); @@ -67,6 +68,7 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBNodeReal->attachObject(mBBQueryTotal); mBBQueryVisible = mRendering->getScene()->createBillboardSet(1); + mBBQueryVisible->setCastShadows(false); mBBQueryVisible->setDefaultDimensions(150, 150); mBBQueryVisible->createBillboard(Vector3::ZERO); mBBQueryVisible->setMaterialName("QueryVisiblePixels"); @@ -75,6 +77,7 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBQuerySingleObject = mRendering->getScene()->createBillboardSet(1); /// \todo ideally this should occupy exactly 1 pixel on the screen + mBBQuerySingleObject->setCastShadows(false); mBBQuerySingleObject->setDefaultDimensions(0.003, 0.003); mBBQuerySingleObject->createBillboard(Vector3::ZERO); mBBQuerySingleObject->setMaterialName("QueryVisiblePixels"); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index aadc92369c..ee60407b24 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -14,6 +14,10 @@ #include #include +#include "shadows.hpp" +#include "shaderhelper.hpp" +#include "localmap.hpp" +#include "water.hpp" using namespace MWRender; using namespace Ogre; @@ -21,11 +25,9 @@ using namespace Ogre; namespace MWRender { RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine, MWWorld::Environment& environment) - :mRendering(_rend), mObjects(mRendering), mActors(mRendering, environment), mAmbientMode(0) + :mRendering(_rend), mObjects(mRendering), mActors(mRendering, environment), mAmbientMode(0), mSunEnabled(0) { mRendering.createScene("PlayerCam", Settings::Manager::getFloat("field of view", "General"), 5); - mTerrainManager = new TerrainManager(mRendering.getScene(), - environment); mWater = 0; @@ -86,6 +88,12 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const Ogre::SceneNode *cameraPitchNode = cameraYawNode->createChildSceneNode(); cameraPitchNode->attachObject(mRendering.getCamera()); + mShadows = new Shadows(&mRendering); + mShaderHelper = new ShaderHelper(this); + + mTerrainManager = new TerrainManager(mRendering.getScene(), this, + environment); + //mSkyManager = 0; mSkyManager = new SkyManager(mMwRoot, mRendering.getCamera(), &environment); @@ -412,6 +420,7 @@ void RenderingManager::skipAnimation (const MWWorld::Ptr& ptr) void RenderingManager::setSunColour(const Ogre::ColourValue& colour) { + if (!mSunEnabled) return; mSun->setDiffuseColour(colour); mSun->setSpecularColour(colour); mTerrainManager->setDiffuse(colour); @@ -425,12 +434,21 @@ void RenderingManager::setAmbientColour(const Ogre::ColourValue& colour) void RenderingManager::sunEnable() { - if (mSun) mSun->setVisible(true); + // Don't disable the light, as the shaders assume the first light to be directional. + //if (mSun) mSun->setVisible(true); + mSunEnabled = true; } void RenderingManager::sunDisable() { - if (mSun) mSun->setVisible(false); + // Don't disable the light, as the shaders assume the first light to be directional. + //if (mSun) mSun->setVisible(false); + mSunEnabled = false; + if (mSun) + { + mSun->setDiffuseColour(ColourValue(0,0,0)); + mSun->setSpecularColour(ColourValue(0,0,0)); + } } void RenderingManager::setSunDirection(const Ogre::Vector3& direction) @@ -475,4 +493,9 @@ const bool RenderingManager::useMRT() return Settings::Manager::getBool("shader", "Water"); } +Shadows* RenderingManager::getShadows() +{ + return mShadows; +} + } // namespace diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index da9c55cb5a..a563d78c6a 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -25,8 +25,6 @@ #include "objects.hpp" #include "actors.hpp" #include "player.hpp" -#include "water.hpp" -#include "localmap.hpp" #include "occlusionquery.hpp" namespace Ogre @@ -45,7 +43,10 @@ namespace MWWorld namespace MWRender { - + class Shadows; + class ShaderHelper; + class LocalMap; + class Water; class RenderingManager: private RenderingInterface { @@ -114,6 +115,8 @@ class RenderingManager: private RenderingInterface { bool occlusionQuerySupported() { return mOcclusionQuery->supported(); }; OcclusionQuery* getOcclusionQuery() { return mOcclusionQuery; }; + Shadows* getShadows(); + void setGlare(bool glare); void skyEnable (); void skyDisable (); @@ -149,6 +152,8 @@ class RenderingManager: private RenderingInterface { void setAmbientMode(); + bool mSunEnabled; + SkyManager* mSkyManager; OcclusionQuery* mOcclusionQuery; @@ -180,6 +185,10 @@ class RenderingManager: private RenderingInterface { MWRender::Debugging *mDebugging; MWRender::LocalMap* mLocalMap; + + MWRender::Shadows* mShadows; + + MWRender::ShaderHelper* mShaderHelper; }; } diff --git a/apps/openmw/mwrender/shaderhelper.cpp b/apps/openmw/mwrender/shaderhelper.cpp new file mode 100644 index 0000000000..93f960dc42 --- /dev/null +++ b/apps/openmw/mwrender/shaderhelper.cpp @@ -0,0 +1,308 @@ +#include "shaderhelper.hpp" +#include "renderingmanager.hpp" +#include "shadows.hpp" + +#include +#include +#include + +#include + +using namespace Ogre; +using namespace MWRender; + +ShaderHelper::ShaderHelper(RenderingManager* rend) +{ + mRendering = rend; + applyShaders(); +} + +void ShaderHelper::applyShaders() +{ + if (!Settings::Manager::getBool("shaders", "Objects")) return; + + bool mrt = RenderingManager::useMRT(); + bool shadows = Settings::Manager::getBool("enabled", "Shadows"); + bool split = Settings::Manager::getBool("split", "Shadows"); + + // shader for normal rendering + createShader(mrt, shadows, split, "main"); + + // fallback shader without mrt and without shadows + // (useful for reflection and for minimap) + createShader(false, false, false, "main_fallback"); +} + +void ShaderHelper::createShader(const bool mrt, const bool shadows, const bool split, const std::string& name) +{ + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); + + const int numsplits = 3; + + // the number of lights to support. + // when rendering an object, OGRE automatically picks the lights that are + // closest to the object being rendered. unfortunately this mechanism does + // not work perfectly for objects batched together (they will all use the same + // lights). to work around this, we are simply pushing the maximum number + // of lights here in order to minimize disappearing lights. + int num_lights = Settings::Manager::getInt("num lights", "Objects"); + + { + // vertex + HighLevelGpuProgramPtr vertex; + if (!mgr.getByName(name+"_vp").isNull()) + mgr.remove(name+"_vp"); + + vertex = mgr.createProgram(name+"_vp", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "cg", GPT_VERTEX_PROGRAM); + vertex->setParameter("profiles", "vs_4_0 vs_2_x vp40 arbvp1"); + vertex->setParameter("entry_point", "main_vp"); + StringUtil::StrStreamType outStream; + outStream << + "void main_vp( \n" + " float4 position : POSITION, \n" + " float4 normal : NORMAL, \n" + " float4 colour : COLOR, \n" + " in float2 uv : TEXCOORD0, \n" + " out float2 oUV : TEXCOORD0, \n" + " out float4 oPosition : POSITION, \n" + " out float4 oPositionObjSpace : TEXCOORD1, \n" + " out float4 oNormal : TEXCOORD2, \n" + " out float oDepth : TEXCOORD3, \n" + " out float4 oVertexColour : TEXCOORD4, \n"; + if (shadows && !split) outStream << + " out float4 oLightSpacePos0 : TEXCOORD5, \n" + " uniform float4x4 worldMatrix, \n" + " uniform float4x4 texViewProjMatrix0, \n"; + else + { + for (int i=0; isetSource(outStream.str()); + vertex->load(); + vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); + if (shadows) + { + vertex->getDefaultParameters()->setNamedAutoConstant("worldMatrix", GpuProgramParameters::ACT_WORLD_MATRIX); + if (!split) + vertex->getDefaultParameters()->setNamedAutoConstant("texViewProjMatrix0", GpuProgramParameters::ACT_TEXTURE_VIEWPROJ_MATRIX, 0); + else + { + for (int i=0; igetDefaultParameters()->setNamedAutoConstant("texViewProjMatrix"+StringConverter::toString(i), GpuProgramParameters::ACT_TEXTURE_VIEWPROJ_MATRIX, i); + } + } + } + } + + { + // fragment + HighLevelGpuProgramPtr fragment; + if (!mgr.getByName(name+"_fp").isNull()) + mgr.remove(name+"_fp"); + + fragment = mgr.createProgram(name+"_fp", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "cg", GPT_FRAGMENT_PROGRAM); + fragment->setParameter("profiles", "ps_4_0 ps_2_x fp40 arbfp1"); + fragment->setParameter("entry_point", "main_fp"); + StringUtil::StrStreamType outStream; + + if (shadows) outStream << + "float depthShadow(sampler2D shadowMap, float4 shadowMapPos, float2 offset) \n" + "{ \n" + " shadowMapPos /= shadowMapPos.w; \n" + " float3 o = float3(offset.xy, -offset.x) * 0.3f; \n" + " float c = (shadowMapPos.z <= tex2D(shadowMap, shadowMapPos.xy - o.xy).r) ? 1 : 0; // top left \n" + " c += (shadowMapPos.z <= tex2D(shadowMap, shadowMapPos.xy + o.xy).r) ? 1 : 0; // bottom right \n" + " c += (shadowMapPos.z <= tex2D(shadowMap, shadowMapPos.xy + o.zy).r) ? 1 : 0; // bottom left \n" + " c += (shadowMapPos.z <= tex2D(shadowMap, shadowMapPos.xy - o.zy).r) ? 1 : 0; // top right \n" + " return c / 4; \n" + "} \n"; + + outStream << + "void main_fp( \n" + " in float2 uv : TEXCOORD0, \n" + " out float4 oColor : COLOR, \n" + " uniform sampler2D texture : register(s0), \n" + " float4 positionObjSpace : TEXCOORD1, \n" + " float4 normal : TEXCOORD2, \n" + " float iDepth : TEXCOORD3, \n" + " float4 vertexColour : TEXCOORD4, \n" + " uniform float4 fogColour, \n" + " uniform float4 fogParams, \n"; + + if (shadows) outStream << + " uniform float4 shadowFar_fadeStart, \n"; + + if (shadows && !split) outStream << + " uniform sampler2D shadowMap : register(s1), \n" + " float4 lightSpacePos0 : TEXCOORD5, \n" + " uniform float4 invShadowmapSize0, \n"; + else + { + outStream << + " uniform float4 pssmSplitPoints, \n"; + for (int i=0; i shadowFar_fadeStart.x) ? 1 : ((iDepth > shadowFar_fadeStart.y) ? 1-((1-shadow)*fade) : shadow); \n" + " lightColour.xyz += shadow * lit(dot(normalize(lightDir), normalize(normal)), 0, 0).y * lightDiffuse"<setSource(outStream.str()); + fragment->load(); + + for (int i=0; igetDefaultParameters()->setNamedAutoConstant("lightPositionObjSpace"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, i); + fragment->getDefaultParameters()->setNamedAutoConstant("lightDiffuse"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, i); + fragment->getDefaultParameters()->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); + } + fragment->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("diffuse", GpuProgramParameters::ACT_SURFACE_DIFFUSE_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("ambient", GpuProgramParameters::ACT_SURFACE_AMBIENT_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("lightAmbient", GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); + + if (shadows) + { + fragment->getDefaultParameters()->setNamedConstant("shadowFar_fadeStart", Vector4(mRendering->getShadows()->getShadowFar(), mRendering->getShadows()->getFadeStart()*mRendering->getShadows()->getShadowFar(), 0, 0)); + for (int i=0; i < (split ? numsplits : 1); ++i) + { + fragment->getDefaultParameters()->setNamedAutoConstant("invShadowmapSize" + StringConverter::toString(i), GpuProgramParameters::ACT_INVERSE_TEXTURE_SIZE, i+1); + } + if (split) + { + Vector4 splitPoints; + const PSSMShadowCameraSetup::SplitPointList& splitPointList = mRendering->getShadows()->getPSSMSetup()->getSplitPoints(); + // Populate from split point 1, not 0, since split 0 isn't useful (usually 0) + for (int i = 1; i < numsplits; ++i) + { + splitPoints[i-1] = splitPointList[i]; + } + fragment->getDefaultParameters()->setNamedConstant("pssmSplitPoints", splitPoints); + } + } + + if (mrt) + fragment->getDefaultParameters()->setNamedAutoConstant("far", GpuProgramParameters::ACT_FAR_CLIP_DISTANCE); + } +} diff --git a/apps/openmw/mwrender/shaderhelper.hpp b/apps/openmw/mwrender/shaderhelper.hpp new file mode 100644 index 0000000000..356d345deb --- /dev/null +++ b/apps/openmw/mwrender/shaderhelper.hpp @@ -0,0 +1,29 @@ +#ifndef GAME_SHADERHELPER_H +#define GAME_SHADERHELPER_H + +#include + +namespace MWRender +{ + class RenderingManager; + + /// + /// \brief manages the main shader + /// + class ShaderHelper + { + public: + ShaderHelper(RenderingManager* rend); + + void applyShaders(); + ///< apply new settings + + private: + RenderingManager* mRendering; + + void createShader(const bool mrt, const bool shadows, const bool split, const std::string& name); + }; + +} + +#endif diff --git a/apps/openmw/mwrender/shadows.cpp b/apps/openmw/mwrender/shadows.cpp new file mode 100644 index 0000000000..9c150f0c65 --- /dev/null +++ b/apps/openmw/mwrender/shadows.cpp @@ -0,0 +1,175 @@ +#include "shadows.hpp" + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include "renderconst.hpp" + +using namespace Ogre; +using namespace MWRender; + +Shadows::Shadows(OEngine::Render::OgreRenderer* rend) : + mShadowFar(1000), mFadeStart(0.9) +{ + mRendering = rend; + mSceneMgr = mRendering->getScene(); + recreate(); +} + +void Shadows::recreate() +{ + bool enabled = Settings::Manager::getBool("enabled", "Shadows"); + + // Split shadow maps are currently disabled because the terrain cannot cope with them + // (Too many texture units) Solution would be a multi-pass terrain material + bool split = Settings::Manager::getBool("split", "Shadows"); + //const bool split = false; + + if (!enabled) + { + mSceneMgr->setShadowTechnique(SHADOWTYPE_NONE); + return; + } + + int texsize = Settings::Manager::getInt("texture size", "Shadows"); + mSceneMgr->setShadowTextureSize(texsize); + + mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE_INTEGRATED); + + // no point light shadows, i'm afraid. might revisit this with Deferred Shading + mSceneMgr->setShadowTextureCountPerLightType(Light::LT_POINT, 0); + + mSceneMgr->setShadowTextureCountPerLightType(Light::LT_DIRECTIONAL, split ? 3 : 1); + mSceneMgr->setShadowTextureCount(split ? 3 : 1); + + mSceneMgr->setShadowTextureSelfShadow(true); + mSceneMgr->setShadowCasterRenderBackFaces(true); + mSceneMgr->setShadowTextureCasterMaterial("depth_shadow_caster"); + mSceneMgr->setShadowTexturePixelFormat(PF_FLOAT32_R); + mSceneMgr->setShadowDirLightTextureOffset(0.9); + mSceneMgr->setShadowDirectionalLightExtrusionDistance(1000000); + mSceneMgr->setShowDebugShadows(true); + + mShadowFar = split ? Settings::Manager::getInt("split shadow distance", "Shadows") : Settings::Manager::getInt("shadow distance", "Shadows"); + mSceneMgr->setShadowFarDistance(mShadowFar); + + mFadeStart = Settings::Manager::getFloat("fade start", "Shadows"); + + ShadowCameraSetupPtr shadowCameraSetup; + if (split) + { + mPSSMSetup = new PSSMShadowCameraSetup(); + mPSSMSetup->setSplitPadding(5); + mPSSMSetup->calculateSplitPoints(3, mRendering->getCamera()->getNearClipDistance(), mShadowFar); + + const Real adjustFactors[3] = {64, 64, 64}; + for (int i=0; i < 3; ++i) + { + mPSSMSetup->setOptimalAdjustFactor(i, adjustFactors[i]); + /*if (i==0) + mSceneMgr->setShadowTextureConfig(i, texsize, texsize, Ogre::PF_FLOAT32_R); + else if (i ==1) + mSceneMgr->setShadowTextureConfig(i, texsize/2, texsize/2, Ogre::PF_FLOAT32_R); + else if (i ==2) + mSceneMgr->setShadowTextureConfig(i, texsize/4, texsize/4, Ogre::PF_FLOAT32_R);*/ + } + + shadowCameraSetup = ShadowCameraSetupPtr(mPSSMSetup); + } + else + { + LiSPSMShadowCameraSetup* lispsmSetup = new LiSPSMShadowCameraSetup(); + lispsmSetup->setOptimalAdjustFactor(2); + //lispsmSetup->setCameraLightDirectionThreshold(Degree(0)); + //lispsmSetup->setUseAggressiveFocusRegion(false); + shadowCameraSetup = ShadowCameraSetupPtr(lispsmSetup); + } + mSceneMgr->setShadowCameraSetup(shadowCameraSetup); + + // Set visibility mask for the shadow render textures + int visibilityMask = RV_Actors * Settings::Manager::getBool("actor shadows", "Shadows") + + (RV_Statics + RV_StaticsSmall) * Settings::Manager::getBool("statics shadows", "Shadows") + + RV_Misc * Settings::Manager::getBool("misc shadows", "Shadows"); + + for (int i = 0; i < (split ? 3 : 1); ++i) + { + TexturePtr shadowTexture = mSceneMgr->getShadowTexture(i); + Viewport* vp = shadowTexture->getBuffer()->getRenderTarget()->getViewport(0); + vp->setVisibilityMask(visibilityMask); + } + + // -------------------------------------------------------------------------------------------------------------------- + // --------------------------- Debug overlays to display the content of shadow maps ----------------------------------- + // -------------------------------------------------------------------------------------------------------------------- + /* + OverlayManager& mgr = OverlayManager::getSingleton(); + Overlay* overlay; + + // destroy if already exists + if (overlay = mgr.getByName("DebugOverlay")) + mgr.destroy(overlay); + + overlay = mgr.create("DebugOverlay"); + for (size_t i = 0; i < (split ? 3 : 1); ++i) { + TexturePtr tex = mRendering->getScene()->getShadowTexture(i); + + // Set up a debug panel to display the shadow + + if (MaterialManager::getSingleton().resourceExists("Ogre/DebugTexture" + StringConverter::toString(i))) + MaterialManager::getSingleton().remove("Ogre/DebugTexture" + StringConverter::toString(i)); + MaterialPtr debugMat = MaterialManager::getSingleton().create( + "Ogre/DebugTexture" + StringConverter::toString(i), + ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + + debugMat->getTechnique(0)->getPass(0)->setLightingEnabled(false); + TextureUnitState *t = debugMat->getTechnique(0)->getPass(0)->createTextureUnitState(tex->getName()); + t->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); + + OverlayContainer* debugPanel; + + // destroy container if exists + try + { + if (debugPanel = + static_cast( + mgr.getOverlayElement("Ogre/DebugTexPanel" + StringConverter::toString(i) + ))) + mgr.destroyOverlayElement(debugPanel); + } + catch (Ogre::Exception&) {} + + debugPanel = (OverlayContainer*) + (OverlayManager::getSingleton().createOverlayElement("Panel", "Ogre/DebugTexPanel" + StringConverter::toString(i))); + debugPanel->_setPosition(0.8, i*0.25); + debugPanel->_setDimensions(0.2, 0.24); + debugPanel->setMaterialName(debugMat->getName()); + debugPanel->show(); + overlay->add2D(debugPanel); + overlay->show(); + } + */ +} + +PSSMShadowCameraSetup* Shadows::getPSSMSetup() +{ + return mPSSMSetup; +} + +float Shadows::getShadowFar() const +{ + return mShadowFar; +} + +float Shadows::getFadeStart() const +{ + return mFadeStart; +} diff --git a/apps/openmw/mwrender/shadows.hpp b/apps/openmw/mwrender/shadows.hpp new file mode 100644 index 0000000000..bc2b141f70 --- /dev/null +++ b/apps/openmw/mwrender/shadows.hpp @@ -0,0 +1,39 @@ +#ifndef GAME_SHADOWS_H +#define GAME_SHADOWS_H + +// forward declares +namespace Ogre +{ + class SceneManager; + class PSSMShadowCameraSetup; +} +namespace OEngine{ + namespace Render{ + class OgreRenderer; + } +} + +namespace MWRender +{ + class Shadows + { + public: + Shadows(OEngine::Render::OgreRenderer* rend); + + void recreate(); + + Ogre::PSSMShadowCameraSetup* getPSSMSetup(); + float getShadowFar() const; + float getFadeStart() const; + + protected: + OEngine::Render::OgreRenderer* mRendering; + Ogre::SceneManager* mSceneMgr; + + Ogre::PSSMShadowCameraSetup* mPSSMSetup; + float mShadowFar; + float mFadeStart; + }; +} + +#endif diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 188ec3b831..859da2dc11 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -102,6 +102,7 @@ void BillboardObject::init(const String& textureName, mNode->setPosition(finalPosition); mNode->attachObject(mBBSet); mBBSet->createBillboard(0,0,0); + mBBSet->setCastShadows(false); mMaterial = MaterialManager::getSingleton().create("BillboardMaterial"+StringConverter::toString(bodyCount), ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); mMaterial->removeAllTechniques(); @@ -450,6 +451,7 @@ void SkyManager::create() Entity* night1_ent = mSceneMgr->createEntity("meshes\\sky_night_01.nif"); night1_ent->setRenderQueueGroup(RQG_SkiesEarly+1); night1_ent->setVisibilityFlags(RV_Sky); + night1_ent->setCastShadows(false); mAtmosphereNight = mRootNode->createChildSceneNode(); mAtmosphereNight->attachObject(night1_ent); @@ -525,6 +527,7 @@ void SkyManager::create() // Atmosphere (day) mesh = NifOgre::NIFLoader::load("meshes\\sky_atmosphere.nif"); Entity* atmosphere_ent = mSceneMgr->createEntity("meshes\\sky_atmosphere.nif"); + atmosphere_ent->setCastShadows(false); ModVertexAlpha(atmosphere_ent, 0); @@ -596,6 +599,7 @@ void SkyManager::create() SceneNode* clouds_node = mRootNode->createChildSceneNode(); clouds_node->attachObject(clouds_ent); mCloudMaterial = clouds_ent->getSubEntity(0)->getMaterial(); + clouds_ent->setCastShadows(false); // Clouds vertex shader HighLevelGpuProgramPtr vshader2 = mgr.createProgram("Clouds_VP", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, @@ -677,6 +681,8 @@ void SkyManager::create() mAtmosphereMaterial->getTechnique(0)->getPass(0)->setSceneBlending(SBT_TRANSPARENT_ALPHA); mCloudMaterial->getTechnique(0)->getPass(0)->setSceneBlending(SBT_TRANSPARENT_ALPHA); + mCloudMaterial->getTechnique(0)->getPass(0)->removeAllTextureUnitStates(); + mCloudMaterial->getTechnique(0)->getPass(0)->createTextureUnitState("textures\\tx_sky_cloudy.dds"); mCloudMaterial->getTechnique(0)->getPass(0)->createTextureUnitState(""); mCreated = true; @@ -766,12 +772,14 @@ void SkyManager::disable() void SkyManager::setMoonColour (bool red) { + if (!mCreated) return; mSecunda->setColour( red ? ColourValue(1.0, 0.0784, 0.0784) : ColourValue(1.0, 1.0, 1.0)); } void SkyManager::setCloudsOpacity(float opacity) { + if (!mCreated) return; mCloudMaterial->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("opacity", Real(opacity)); } @@ -927,11 +935,13 @@ void SkyManager::setThunder(const float factor) void SkyManager::setMasserFade(const float fade) { + if (!mCreated) return; mMasser->setVisibility(fade); } void SkyManager::setSecundaFade(const float fade) { + if (!mCreated) return; mSecunda->setVisibility(fade); } diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 67dd4e0b05..f9b43655b7 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -7,7 +7,8 @@ #include "terrainmaterial.hpp" #include "terrain.hpp" #include "renderconst.hpp" - +#include "shadows.hpp" +#include using namespace Ogre; @@ -16,8 +17,8 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - TerrainManager::TerrainManager(Ogre::SceneManager* mgr, const MWWorld::Environment& evn) : - mEnvironment(evn), mTerrainGroup(TerrainGroup(mgr, Terrain::ALIGN_X_Z, mLandSize, mWorldSize)) + TerrainManager::TerrainManager(Ogre::SceneManager* mgr, RenderingManager* rend, const MWWorld::Environment& evn) : + mEnvironment(evn), mTerrainGroup(TerrainGroup(mgr, Terrain::ALIGN_X_Z, mLandSize, mWorldSize)), mRendering(rend) { TerrainMaterialGeneratorPtr matGen; @@ -48,9 +49,19 @@ namespace MWRender mActiveProfile->setLayerSpecularMappingEnabled(false); mActiveProfile->setLayerNormalMappingEnabled(false); mActiveProfile->setLayerParallaxMappingEnabled(false); - mActiveProfile->setReceiveDynamicShadowsEnabled(false); - //composite maps lead to a drastic reduction in loading time so are + bool shadows = Settings::Manager::getBool("enabled", "Shadows"); + mActiveProfile->setReceiveDynamicShadowsEnabled(shadows); + mActiveProfile->setReceiveDynamicShadowsDepth(shadows); + if (Settings::Manager::getBool("split", "Shadows")) + mActiveProfile->setReceiveDynamicShadowsPSSM(mRendering->getShadows()->getPSSMSetup()); + else + mActiveProfile->setReceiveDynamicShadowsPSSM(0); + + mActiveProfile->setShadowFar(mRendering->getShadows()->getShadowFar()); + mActiveProfile->setShadowFadeStart(mRendering->getShadows()->getFadeStart()); + + //composite maps lead to a drastic increase in loading time so are //disabled mActiveProfile->setCompositeMapEnabled(false); diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 29a4ba36b3..dc4a2388ce 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -24,7 +24,7 @@ namespace MWRender{ */ class TerrainManager{ public: - TerrainManager(Ogre::SceneManager* mgr, const MWWorld::Environment& env); + TerrainManager(Ogre::SceneManager* mgr, RenderingManager* rend, const MWWorld::Environment& env); virtual ~TerrainManager(); void setDiffuse(const Ogre::ColourValue& diffuse); @@ -37,6 +37,7 @@ namespace MWRender{ Ogre::TerrainGroup mTerrainGroup; const MWWorld::Environment& mEnvironment; + RenderingManager* mRendering; Ogre::TerrainMaterialGeneratorB::SM2Profile* mActiveProfile; diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 87798006c3..57bea5388e 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -86,6 +86,7 @@ namespace Ogre , mPSSM(0) , mDepthShadows(false) , mLowLodShadows(false) + , mShadowFar(1300) { } @@ -102,6 +103,24 @@ namespace Ogre terrain->_setLightMapRequired(mLightmapEnabled, true); terrain->_setCompositeMapRequired(mCompositeMapEnabled); } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setShadowFar(float far) + { + if (mShadowFar != far) + { + mShadowFar = far; + mParent->_markChanged(); + } + } + //--------------------------------------------------------------------- + void TerrainMaterialGeneratorB::SM2Profile::setShadowFadeStart(float fadestart) + { + if (mShadowFadeStart != fadestart) + { + mShadowFadeStart = fadestart; + mParent->_markChanged(); + } + } //--------------------------------------------------------------------- void TerrainMaterialGeneratorB::SM2Profile::setLayerNormalMappingEnabled(bool enabled) { @@ -462,6 +481,7 @@ namespace Ogre StringUtil::StrStreamType sourceStr; generateFragmentProgramSource(prof, terrain, tt, sourceStr); + ret->setSource(sourceStr.str()); ret->load(); defaultFpParams(prof, terrain, tt, ret); @@ -533,8 +553,8 @@ namespace Ogre GpuProgramParameters::ACT_TEXTURE_VIEWPROJ_MATRIX, i); if (prof->getReceiveDynamicShadowsDepth()) { - params->setNamedAutoConstant("depthRange" + StringConverter::toString(i), - GpuProgramParameters::ACT_SHADOW_SCENE_DEPTH_RANGE, i); + //params->setNamedAutoConstant("depthRange" + StringConverter::toString(i), + //GpuProgramParameters::ACT_SHADOW_SCENE_DEPTH_RANGE, i); } } } @@ -567,6 +587,7 @@ namespace Ogre if (prof->isShadowingEnabled(tt, terrain)) { + params->setNamedConstant("shadowFar_fadeStart", Vector4(prof->mShadowFar, prof->mShadowFadeStart * prof->mShadowFar, 0, 0)); uint numTextures = 1; if (prof->getReceiveDynamicShadowsPSSM()) { @@ -732,7 +753,7 @@ namespace Ogre ret->unload(); } - ret->setParameter("profiles", "vs_3_0 vs_2_0 arbvp1"); + ret->setParameter("profiles", "vs_3_0 vs_2_0 vp40 arbvp1"); ret->setParameter("entry_point", "main_vp"); return ret; @@ -790,9 +811,9 @@ namespace Ogre outStream << "out float4 oPos : POSITION,\n" - "out float4 oPosObj : TEXCOORD0 \n"; + "out float4 oPosObj : COLOR \n"; - uint texCoordSet = 1; + uint texCoordSet = 0; outStream << ", out float4 oUVMisc : TEXCOORD" << texCoordSet++ <<" // xy = uv, z = camDepth\n"; @@ -818,8 +839,8 @@ namespace Ogre if (fog) { outStream << - ", uniform float4 fogParams\n" - ", out float fogVal : COLOR\n"; + ", uniform float4 fogParams\n"; + //", out float fogVal : COLOR\n"; } if (prof->isShadowingEnabled(tt, terrain)) @@ -831,7 +852,7 @@ namespace Ogre if (texCoordSet > 8) { OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, - "Requested options require too many texture coordinate sets! Try reducing the number of layers.", + "Requested options require too many texture coordinate sets! Try reducing the number of layers. requested: " + StringConverter::toString(texCoordSet), __FUNCTION__); } @@ -917,9 +938,9 @@ namespace Ogre outStream << "void main_fp(\n" - "float4 position : TEXCOORD0,\n"; + "float4 position : COLOR,\n"; - uint texCoordSet = 1; + uint texCoordSet = 0; outStream << "float4 uvMisc : TEXCOORD" << texCoordSet++ << ",\n"; @@ -948,8 +969,8 @@ namespace Ogre if (fog) { outStream << - "uniform float3 fogColour, \n" - "float fogVal : COLOR,\n"; + "uniform float3 fogColour, \n"; + //"float fogVal : COLOR,\n"; } uint currentSamplerIdx = 0; @@ -1046,6 +1067,7 @@ namespace Ogre " float4 outputCol;\n" " float shadow = 1.0;\n" " float2 uv = uvMisc.xy;\n" + " float fogVal = position.w; \n" // base colour " outputCol = float4(0,0,0,1);\n"; @@ -1257,13 +1279,15 @@ namespace Ogre if (terrain->getSceneManager()->getFogMode() == FOG_LINEAR) { outStream << - " fogVal = saturate((oPos.z - fogParams.y) * fogParams.w);\n"; + " float fogVal = saturate((oPos.z - fogParams.y) * fogParams.w);\n"; } else { outStream << - " fogVal = saturate(1 / (exp(oPos.z * fogParams.x)));\n"; + " float fogVal = saturate(1 / (exp(oPos.z * fogParams.x)));\n"; } + outStream << + " oPosObj.w = fogVal; \n"; } if (prof->isShadowingEnabled(tt, terrain)) @@ -1364,7 +1388,7 @@ namespace Ogre outStream << "// Simple PCF \n" "// Number of samples in one dimension (square for total samples) \n" - "#define NUM_SHADOW_SAMPLES_1D 2.0 \n" + "#define NUM_SHADOW_SAMPLES_1D 1.0 \n" "#define SHADOW_FILTER_SCALE 1 \n" "#define SHADOW_SAMPLES NUM_SHADOW_SAMPLES_1D*NUM_SHADOW_SAMPLES_1D \n" @@ -1377,28 +1401,18 @@ namespace Ogre if (prof->getReceiveDynamicShadowsDepth()) { outStream << - "float calcDepthShadow(sampler2D shadowMap, float4 uv, float invShadowMapSize) \n" - "{ \n" - " // 4-sample PCF \n" - - " float shadow = 0.0; \n" - " float offset = (NUM_SHADOW_SAMPLES_1D/2 - 0.5) * SHADOW_FILTER_SCALE; \n" - " for (float y = -offset; y <= offset; y += SHADOW_FILTER_SCALE) \n" - " for (float x = -offset; x <= offset; x += SHADOW_FILTER_SCALE) \n" - " { \n" - " float4 newUV = offsetSample(uv, float2(x, y), invShadowMapSize);\n" - " // manually project and assign derivatives \n" - " // to avoid gradient issues inside loops \n" - " newUV = newUV / newUV.w; \n" - " float depth = tex2D(shadowMap, newUV.xy, 1, 1).x; \n" - " if (depth >= 1 || depth >= uv.z)\n" - " shadow += 1.0;\n" - " } \n" - - " shadow /= SHADOW_SAMPLES; \n" - - " return shadow; \n" - "} \n"; + "float calcDepthShadow(sampler2D shadowMap, float4 shadowMapPos, float2 offset) \n" + " { \n" + " shadowMapPos = shadowMapPos / shadowMapPos.w; \n" + " float2 uv = shadowMapPos.xy; \n" + " float3 o = float3(offset, -offset.x) * 0.3f; \n" + " // Note: We using 2x2 PCF. Good enough and is alot faster. \n" + " float c = (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.xy).r) ? 1 : 0; // top left \n" + " c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.xy).r) ? 1 : 0; // bottom right \n" + " c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.zy).r) ? 1 : 0; // bottom left \n" + " c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.zy).r) ? 1 : 0; // top right \n" + " return c / 4; \n" + " } \n"; } else { @@ -1436,7 +1450,7 @@ namespace Ogre { outStream << "\n "; for (uint i = 0; i < numTextures; ++i) - outStream << "float invShadowmapSize" << i << ", "; + outStream << "float2 invShadowmapSize" << i << ", "; } outStream << "\n" " float4 pssmSplitPoints, float camDepth) \n" @@ -1458,7 +1472,7 @@ namespace Ogre if (prof->getReceiveDynamicShadowsDepth()) { outStream << - " shadow = calcDepthShadow(shadowMap" << i << ", lsPos" << i << ", invShadowmapSize" << i << "); \n"; + " shadow = calcDepthShadow(shadowMap" << i << ", lsPos" << i << ", invShadowmapSize" << i << ".xy); \n"; } else { @@ -1520,8 +1534,8 @@ namespace Ogre if (prof->getReceiveDynamicShadowsDepth()) { // make linear - outStream << - "oLightSpacePos" << i << ".z = (oLightSpacePos" << i << ".z - depthRange" << i << ".x) * depthRange" << i << ".w;\n"; + //outStream << + // "oLightSpacePos" << i << ".z = (oLightSpacePos" << i << ".z - depthRange" << i << ".x) * depthRange" << i << ".w;\n"; } } @@ -1538,6 +1552,8 @@ namespace Ogre // in semantics & params uint numTextures = 1; + outStream << + ", uniform float4 shadowFar_fadeStart \n"; if (prof->getReceiveDynamicShadowsPSSM()) { numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); @@ -1554,7 +1570,7 @@ namespace Ogre if (prof->getReceiveDynamicShadowsDepth()) { outStream << - ", uniform float inverseShadowmapSize" << i << " \n"; + ", uniform float4 inverseShadowmapSize" << i << " \n"; } } @@ -1589,7 +1605,7 @@ namespace Ogre { outStream << "\n "; for (uint i = 0; i < numTextures; ++i) - outStream << "inverseShadowmapSize" << i << ", "; + outStream << "inverseShadowmapSize" << i << ".xy, "; } outStream << "\n" << " pssmSplitPoints, camDepth);\n"; @@ -1600,7 +1616,7 @@ namespace Ogre if (prof->getReceiveDynamicShadowsDepth()) { outStream << - " float rtshadow = calcDepthShadow(shadowMap0, lightSpacePos0, inverseShadowmapSize0);"; + " float rtshadow = calcDepthShadow(shadowMap0, lightSpacePos0, inverseShadowmapSize0.xy);"; } else { @@ -1609,7 +1625,11 @@ namespace Ogre } } - outStream << + outStream << + " float fadeRange = shadowFar_fadeStart.x - shadowFar_fadeStart.y; \n" + " float fade = 1-((uvMisc.z - shadowFar_fadeStart.y) / fadeRange); \n" + " rtshadow = (uvMisc.z > shadowFar_fadeStart.x) ? 1 : ((uvMisc.z > shadowFar_fadeStart.y) ? 1-((1-rtshadow)*fade) : rtshadow); \n" + " rtshadow = (1-(1-rtshadow)*0.6); \n" // make the shadow a little less intensive " shadow = min(shadow, rtshadow);\n"; } diff --git a/apps/openmw/mwrender/terrainmaterial.hpp b/apps/openmw/mwrender/terrainmaterial.hpp index 3cb3163475..db916bf253 100644 --- a/apps/openmw/mwrender/terrainmaterial.hpp +++ b/apps/openmw/mwrender/terrainmaterial.hpp @@ -73,6 +73,9 @@ namespace Ogre void updateParamsForCompositeMap(const MaterialPtr& mat, const Terrain* terrain); void requestOptions(Terrain* terrain); + void setShadowFar(float far); + void setShadowFadeStart(float fadestart); + /** Whether to support normal mapping per layer in the shader (default true). */ bool isLayerNormalMappingEnabled() const { return mLayerNormalMappingEnabled; } @@ -245,6 +248,8 @@ namespace Ogre bool mDepthShadows; bool mLowLodShadows; bool mSM3Available; + float mShadowFar; + float mShadowFadeStart; bool isShadowingEnabled(TechniqueType tt, const Terrain* terrain) const; diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 7981def0b8..85fb2ee994 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -31,6 +31,7 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mWater = mSceneManager->createEntity("water"); mWater->setVisibilityFlags(RV_Water); mWater->setRenderQueueGroup(RQG_Water); + mWater->setCastShadows(false); mVisibilityFlags = RV_Terrain * Settings::Manager::getBool("reflect terrain", "Water") + RV_Statics * Settings::Manager::getBool("reflect statics", "Water") @@ -42,6 +43,8 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); mWaterNode->setPosition(0, mTop, 0); + mReflectionCamera = mSceneManager->createCamera("ReflectionCamera"); + if(!(cell->data.flags & cell->Interior)) { mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); @@ -51,17 +54,20 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : // Create rendertarget for reflection int rttsize = Settings::Manager::getInt("rtt size", "Water"); + TexturePtr tex; if (Settings::Manager::getBool("shader", "Water")) { - TexturePtr tex = TextureManager::getSingleton().createManual("WaterReflection", - ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_R8G8B8, TU_RENDERTARGET); + tex = TextureManager::getSingleton().createManual("WaterReflection", + ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_FLOAT16_RGBA, TU_RENDERTARGET); RenderTarget* rtt = tex->getBuffer()->getRenderTarget(); - Viewport* vp = rtt->addViewport(mCamera); + Viewport* vp = rtt->addViewport(mReflectionCamera); vp->setOverlaysEnabled(false); vp->setBackgroundColour(ColourValue(0.8f, 0.9f, 1.0f)); vp->setShadowsEnabled(false); vp->setVisibilityMask( mVisibilityFlags ); + // use fallback techniques without shadows and without mrt (currently not implemented for sky and terrain) + //vp->setMaterialScheme("Fallback"); rtt->addListener(this); rtt->setActive(true); @@ -74,6 +80,55 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mWater->setMaterial(mMaterial); mUnderwaterEffect = Settings::Manager::getBool("underwater effect", "Water"); + + + // ---------------------------------------------------------------------------------------------- + // ---------------------------------- reflection debug overlay ---------------------------------- + // ---------------------------------------------------------------------------------------------- + /* + if (Settings::Manager::getBool("shader", "Water")) + { + OverlayManager& mgr = OverlayManager::getSingleton(); + Overlay* overlay; + // destroy if already exists + if (overlay = mgr.getByName("ReflectionDebugOverlay")) + mgr.destroy(overlay); + + overlay = mgr.create("ReflectionDebugOverlay"); + + if (MaterialManager::getSingleton().resourceExists("Ogre/ReflectionDebugTexture")) + MaterialManager::getSingleton().remove("Ogre/ReflectionDebugTexture"); + MaterialPtr debugMat = MaterialManager::getSingleton().create( + "Ogre/ReflectionDebugTexture", + ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + + debugMat->getTechnique(0)->getPass(0)->setLightingEnabled(false); + TextureUnitState *t = debugMat->getTechnique(0)->getPass(0)->createTextureUnitState(tex->getName()); + t->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); + + OverlayContainer* debugPanel; + + // destroy container if exists + try + { + if (debugPanel = + static_cast( + mgr.getOverlayElement("Ogre/ReflectionDebugTexPanel" + ))) + mgr.destroyOverlayElement(debugPanel); + } + catch (Ogre::Exception&) {} + + debugPanel = (OverlayContainer*) + (OverlayManager::getSingleton().createOverlayElement("Panel", "Ogre/ReflectionDebugTexPanel")); + debugPanel->_setPosition(0, 0.55); + debugPanel->_setDimensions(0.3, 0.3); + debugPanel->setMaterialName(debugMat->getName()); + debugPanel->show(); + overlay->add2D(debugPanel); + overlay->show(); + } + */ } void Water::setActive(bool active) @@ -162,6 +217,12 @@ Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) { + mReflectionCamera->setOrientation(mCamera->getDerivedOrientation()); + mReflectionCamera->setPosition(mCamera->getDerivedPosition()); + mReflectionCamera->setNearClipDistance(mCamera->getNearClipDistance()); + mReflectionCamera->setFarClipDistance(mCamera->getFarClipDistance()); + mReflectionCamera->setAspectRatio(mCamera->getAspectRatio()); + mReflectionCamera->setFOVy(mCamera->getFOVy()); if (evt.source == mReflectionTarget) { mWater->setVisible(false); @@ -174,8 +235,8 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) mSky->setSkyPosition(pos); mSky->scaleSky(mCamera->getFarClipDistance() / 1000.f); - mCamera->enableCustomNearClipPlane(Plane(Vector3::UNIT_Y, mTop)); - mCamera->enableReflection(Plane(Vector3::UNIT_Y, mTop)); + mReflectionCamera->enableCustomNearClipPlane(Plane(Vector3::UNIT_Y, mTop)); + mReflectionCamera->enableReflection(Plane(Vector3::UNIT_Y, mTop)); } } @@ -187,8 +248,8 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) { mSky->resetSkyPosition(); mSky->scaleSky(1); - mCamera->disableReflection(); - mCamera->disableCustomNearClipPlane(); + mReflectionCamera->disableCustomNearClipPlane(); + mReflectionCamera->disableReflection(); } } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 0e23f5b0c3..3fb1b07b75 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -39,6 +39,8 @@ namespace MWRender { void createMaterial(); Ogre::MaterialPtr mMaterial; + Ogre::Camera* mReflectionCamera; + Ogre::RenderTarget* mReflectionTarget; bool mUnderwaterEffect; diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 835534eff2..02e4e5447e 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -291,6 +291,42 @@ void NIFLoader::createMaterial(const String &name, else warn("Unhandled alpha setting for texture " + texName); } + else + { + material->getTechnique(0)->setShadowCasterMaterial("depth_shadow_caster_noalpha"); + } + } + + if (Settings::Manager::getBool("enabled", "Shadows")) + { + bool split = Settings::Manager::getBool("split", "Shadows"); + const int numsplits = 3; + for (int i = 0; i < (split ? numsplits : 1); ++i) + { + TextureUnitState* tu = material->getTechnique(0)->getPass(0)->createTextureUnitState(); + tu->setName("shadowMap" + StringConverter::toString(i)); + tu->setContentType(TextureUnitState::CONTENT_SHADOW); + tu->setTextureAddressingMode(TextureUnitState::TAM_BORDER); + tu->setTextureBorderColour(ColourValue::White); + } + } + + if (Settings::Manager::getBool("shaders", "Objects")) + { + material->getTechnique(0)->getPass(0)->setVertexProgram("main_vp"); + material->getTechnique(0)->getPass(0)->setFragmentProgram("main_fp"); + } + + // Create a fallback technique without shadows and without mrt + Technique* tech2 = material->createTechnique(); + tech2->setSchemeName("Fallback"); + Pass* pass2 = tech2->createPass(); + pass2->createTextureUnitState(texName); + pass2->setVertexColourTracking(TVC_DIFFUSE); + if (Settings::Manager::getBool("shaders", "Objects")) + { + pass2->setVertexProgram("main_fallback_vp"); + pass2->setFragmentProgram("main_fallback_fp"); } // Add material bells and whistles @@ -299,151 +335,6 @@ void NIFLoader::createMaterial(const String &name, material->setSpecular(specular.array[0], specular.array[1], specular.array[2], alpha); material->setSelfIllumination(emissive.array[0], emissive.array[1], emissive.array[2]); material->setShininess(glossiness); - - if (Settings::Manager::getBool("shaders", "Objects")) - { - bool mrt = Settings::Manager::getBool("shader", "Water"); - - // Create shader for the material - // vertex - HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); - - HighLevelGpuProgramPtr vertex; - if (mgr.getByName("main_vp").isNull()) - { - vertex = mgr.createProgram("main_vp", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - "cg", GPT_VERTEX_PROGRAM); - vertex->setParameter("profiles", "vs_4_0 vs_2_x vp40 arbvp1"); - vertex->setParameter("entry_point", "main_vp"); - StringUtil::StrStreamType outStream; - outStream << - "void main_vp( \n" - " float4 position : POSITION, \n" - " float4 normal : NORMAL, \n" - " float4 colour : COLOR, \n" - " in float2 uv : TEXCOORD0, \n" - " out float2 oUV : TEXCOORD0, \n" - " out float4 oPosition : POSITION, \n" - " out float4 oPositionObjSpace : TEXCOORD1, \n" - " out float4 oNormal : TEXCOORD2, \n" - " out float oDepth : TEXCOORD3, \n" - " out float4 oVertexColour : TEXCOORD4, \n" - " uniform float4x4 worldViewProj \n" - ") \n" - "{ \n" - " oVertexColour = colour; \n" - " oUV = uv; \n" - " oNormal = normal; \n" - " oPosition = mul( worldViewProj, position ); \n" - " oDepth = oPosition.z; \n" - " oPositionObjSpace = position; \n" - "}"; - vertex->setSource(outStream.str()); - vertex->load(); - vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); - } - else - vertex = mgr.getByName("main_vp"); - material->getTechnique(0)->getPass(0)->setVertexProgram(vertex->getName()); - - // the number of lights to support. - // when rendering an object, OGRE automatically picks the lights that are - // closest to the object being rendered. unfortunately this mechanism does - // not work perfectly for objects batched together (they will all use the same - // lights). to work around this, we are simply pushing the maximum number - // of lights here in order to minimize disappearing lights. - int num_lights = Settings::Manager::getInt("num lights", "Objects"); - - // fragment - HighLevelGpuProgramPtr fragment; - if (mgr.getByName("main_fp").isNull()) - { - fragment = mgr.createProgram("main_fp", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - "cg", GPT_FRAGMENT_PROGRAM); - fragment->setParameter("profiles", "ps_4_0 ps_2_x fp40 arbfp1"); - fragment->setParameter("entry_point", "main_fp"); - StringUtil::StrStreamType outStream; - outStream << - "void main_fp( \n" - " in float2 uv : TEXCOORD0, \n" - " out float4 oColor : COLOR, \n" - " uniform sampler2D texture : TEXUNIT0, \n" - " float4 positionObjSpace : TEXCOORD1, \n" - " float4 normal : TEXCOORD2, \n" - " float iDepth : TEXCOORD3, \n" - " float4 vertexColour : TEXCOORD4, \n" - " uniform float4 fogColour, \n" - " uniform float4 fogParams, \n"; - - if (mrt) outStream << - " out float4 oColor1 : COLOR1, \n" - " uniform float far, \n"; - - for (int i=0; isetSource(outStream.str()); - fragment->load(); - - for (int i=0; igetDefaultParameters()->setNamedAutoConstant("lightPositionObjSpace"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, i); - fragment->getDefaultParameters()->setNamedAutoConstant("lightDiffuse"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, i); - fragment->getDefaultParameters()->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); - } - fragment->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("diffuse", GpuProgramParameters::ACT_SURFACE_DIFFUSE_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("ambient", GpuProgramParameters::ACT_SURFACE_AMBIENT_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("lightAmbient", GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); - if (mrt) - fragment->getDefaultParameters()->setNamedAutoConstant("far", GpuProgramParameters::ACT_FAR_CLIP_DISTANCE); - } - else - fragment = mgr.getByName("main_fp"); - material->getTechnique(0)->getPass(0)->setFragmentProgram(fragment->getName()); - } } // Takes a name and adds a unique part to it. This is just used to diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 507f82c1a3..8ab3d5b51e 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -11,3 +11,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.cg "${OpenMW_BINARY_DIR}/ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gbuffer/gbuffer.cg "${OpenMW_BINARY_DIR}/resources/gbuffer/gbuffer.cg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gbuffer/gbuffer.material "${OpenMW_BINARY_DIR}/resources/gbuffer/gbuffer.material" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gbuffer/gbuffer.compositor "${OpenMW_BINARY_DIR}/resources/gbuffer/gbuffer.compositor" COPYONLY) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/shadows/depthshadowcaster.material "${OpenMW_BINARY_DIR}/resources/shadows/depthshadowcaster.material" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/shadows/depthshadowcaster.cg "${OpenMW_BINARY_DIR}/resources/shadows/depthshadowcaster.cg" COPYONLY) diff --git a/files/settings-default.cfg b/files/settings-default.cfg index d5a8bdfd46..4d2d46fca1 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -18,6 +18,32 @@ anisotropy = 4 # Number of texture mipmaps to generate num mipmaps = 5 +[Shadows] +# Shadows are only supported when object shaders are on! +enabled = false + +# Split the shadow maps, allows for a larger shadow distance +# Warning: enabling this will cause some terrain textures to disappear due to +# hitting the texture unit limit of the terrain material +split = false + +# Increasing shadow distance will lower the shadow quality. +# Uses "shadow distance" or "split shadow distance" depending on "split" setting. +shadow distance = 1300 +# This one shouldn't be too low, otherwise you'll see artifacts. Use at least 2x max viewing distance. +split shadow distance = 14000 + +# Size of the shadow textures, higher means higher quality +texture size = 1024 + +# Turn on/off various shadow casters +actor shadows = true +misc shadows = true +statics shadows = true + +# Fraction of the total shadow distance after which the shadow starts to fade out +fade start = 0.8 + [HUD] # FPS counter # 0: not visible @@ -64,15 +90,10 @@ num lights = 8 shader = true rtt size = 512 - reflect terrain = true - reflect statics = false - reflect small statics = false - reflect actors = true - reflect misc = false # Enable underwater effect. It is not resource intensive, so only disable it if you have problems. diff --git a/files/shadows/depthshadowcaster.cg b/files/shadows/depthshadowcaster.cg new file mode 100644 index 0000000000..3457a4f8d8 --- /dev/null +++ b/files/shadows/depthshadowcaster.cg @@ -0,0 +1,51 @@ +void main_vp( + float4 position : POSITION, + float2 uv : TEXCOORD0, + + out float4 oPosition : POSITION, + out float2 oDepth : TEXCOORD0, + out float2 oUv : TEXCOORD1, + + uniform float4x4 wvpMat) +{ + // this is the view space position + oPosition = mul(wvpMat, position); + + // depth info for the fragment. + oDepth.x = oPosition.z; + oDepth.y = oPosition.w; + + // clamp z to zero. seem to do the trick. :-/ + oPosition.z = max(oPosition.z, 0); + + oUv = uv; +} + +void main_fp( + float2 depth : TEXCOORD0, + float2 uv : TEXCOORD1, + uniform sampler2D texture1 : register(s0), + + out float4 oColour : COLOR) +{ + float finalDepth = depth.x / depth.y; + + // use alpha channel of the first texture + float alpha = tex2D(texture1, uv).a; + + // discard if alpha is less than 0.5 + clip((alpha >= 0.5) ? 1 : -1); + + oColour = float4(finalDepth, finalDepth, finalDepth, 1); +} + +void main_fp_noalpha( + float2 depth : TEXCOORD0, + float2 uv : TEXCOORD1, + + out float4 oColour : COLOR) +{ + float finalDepth = depth.x / depth.y; + + oColour = float4(finalDepth, finalDepth, finalDepth, 1); +} diff --git a/files/shadows/depthshadowcaster.material b/files/shadows/depthshadowcaster.material new file mode 100644 index 0000000000..9ff51c5b17 --- /dev/null +++ b/files/shadows/depthshadowcaster.material @@ -0,0 +1,67 @@ +vertex_program depth_shadow_caster_vs cg +{ + source depthshadowcaster.cg + profiles vs_1_1 arbvp1 + entry_point main_vp + + default_params + { + param_named_auto wvpMat worldviewproj_matrix + } +} + +fragment_program depth_shadow_caster_ps cg +{ + source depthshadowcaster.cg + profiles ps_2_0 arbfp1 + entry_point main_fp + + default_params + { + } +} + +fragment_program depth_shadow_caster_ps_noalpha cg +{ + source depthshadowcaster.cg + profiles ps_2_0 arbfp1 + entry_point main_fp_noalpha + + default_params + { + } +} + +material depth_shadow_caster +{ + technique + { + pass + { + vertex_program_ref depth_shadow_caster_vs + { + } + + fragment_program_ref depth_shadow_caster_ps + { + } + } + } +} + +material depth_shadow_caster_noalpha +{ + technique + { + pass + { + vertex_program_ref depth_shadow_caster_vs + { + } + + fragment_program_ref depth_shadow_caster_ps_noalpha + { + } + } + } +} diff --git a/files/water/water.material b/files/water/water.material index 7ce6e7ba29..8b4ff96f56 100644 --- a/files/water/water.material +++ b/files/water/water.material @@ -92,7 +92,7 @@ material Water } technique { - scheme Map + scheme Fallback pass { cull_hardware none From 750d79eaf032ca8bd21f33899853e5a3595e311c Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Wed, 11 Apr 2012 18:29:36 +0200 Subject: [PATCH 456/488] added spell container class --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwmechanics/spells.cpp | 77 ++++++++++++++++++++++++++++++ apps/openmw/mwmechanics/spells.hpp | 55 +++++++++++++++++++++ 3 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 apps/openmw/mwmechanics/spells.cpp create mode 100644 apps/openmw/mwmechanics/spells.hpp diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index c31a9d8fd6..79f0948f99 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -55,7 +55,7 @@ add_openmw_dir (mwclass ) add_openmw_dir (mwmechanics - mechanicsmanager stat creaturestats magiceffects movement + mechanicsmanager stat creaturestats magiceffects movement spells ) # Main executable diff --git a/apps/openmw/mwmechanics/spells.cpp b/apps/openmw/mwmechanics/spells.cpp new file mode 100644 index 0000000000..2b28f0c2fe --- /dev/null +++ b/apps/openmw/mwmechanics/spells.cpp @@ -0,0 +1,77 @@ + +#include "spells.hpp" + +#include + +#include "../mwworld/environment.hpp" +#include "../mwworld/world.hpp" + +#include "magiceffects.hpp" + +namespace MWMechanics +{ + void Spells::addSpell (const ESM::Spell *spell, MagicEffects& effects) const + { + for (std::vector::const_iterator iter = spell->effects.list.begin(); + iter!=spell->effects.list.end(); ++iter) + { + EffectParam param; + param.mMagnitude = iter->magnMax; /// \todo calculate magnitude + effects.add (EffectKey (*iter), param); + } + } + + Spells::TIterator Spells::begin (ESM::Spell::SpellType type) const + { + assert (type>=0 && type=0 && typegetStore().spells.find (spellId); + + int type = spell->data.type; + + assert (type>=0 && typegetStore().spells.find (spellId); + + int type = spell->data.type; + + TContainer::iterator iter = std::find (mSpells[type].begin(), mSpells[type].end(), spell); + + if (iter!=mSpells[type].end()) + mSpells[type].erase (iter); + } + + MagicEffects Spells::getMagicEffects (MWWorld::Environment& environment) const + { + MagicEffects effects; + + for (int i=ESM::Spell::ST_Ability; i<=ESM::Spell::ST_Curse; ++i) + for (TIterator iter (begin (static_cast (i))); + iter!=end(static_cast (i)); ++iter) + addSpell (*iter, effects); + + return effects; + } + + void Spells::clear() + { + for (int i=0; i + +#include + +namespace MWWorld +{ + struct Environment; +} + +namespace MWMechanics +{ + class MagicEffects; + + /// \brief Spell list + /// + /// This class manages known spells as well as abilities, powers and permanent negative effects like + /// diseaes. + class Spells + { + public: + + typedef std::vector TContainer; + typedef TContainer::const_iterator TIterator; + + private: + + static const int sTypes = 6; + + std::vector mSpells[sTypes]; + + void addSpell (const ESM::Spell *, MagicEffects& effects) const; + + public: + + TIterator begin (ESM::Spell::SpellType type) const; + + TIterator end (ESM::Spell::SpellType type) const; + + void add (const std::string& spell, MWWorld::Environment& environment); + /// \note Adding a spell that is already listed in *this is a no-op. + + void remove (const std::string& spell, MWWorld::Environment& environment); + + MagicEffects getMagicEffects (MWWorld::Environment& environment) const; + ///< Return sum of magic effects resulting from abilities, blights, deseases and curses. + + void clear(); + ///< Remove all spells of al types. + }; +} + +#endif From e04ccfced0867c27f8ab049096abad91f9a65b09 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Wed, 11 Apr 2012 19:03:36 +0200 Subject: [PATCH 457/488] replaced old abilities container in CreatureStats with a Spells object --- apps/openmw/mwmechanics/creaturestats.hpp | 3 +- apps/openmw/mwmechanics/mechanicsmanager.cpp | 55 ++------------------ apps/openmw/mwmechanics/mechanicsmanager.hpp | 2 - 3 files changed, 7 insertions(+), 53 deletions(-) diff --git a/apps/openmw/mwmechanics/creaturestats.hpp b/apps/openmw/mwmechanics/creaturestats.hpp index d2edc031d2..ab008da9e8 100644 --- a/apps/openmw/mwmechanics/creaturestats.hpp +++ b/apps/openmw/mwmechanics/creaturestats.hpp @@ -6,6 +6,7 @@ #include "stat.hpp" #include "magiceffects.hpp" +#include "spells.hpp" namespace MWMechanics { @@ -14,7 +15,7 @@ namespace MWMechanics Stat mAttributes[8]; DynamicStat mDynamic[3]; // health, magicka, fatigue int mLevel; - std::set mAbilities; + Spells mSpells; MagicEffects mMagicEffects; }; } diff --git a/apps/openmw/mwmechanics/mechanicsmanager.cpp b/apps/openmw/mwmechanics/mechanicsmanager.cpp index 7ed81f7850..00453eee52 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.cpp @@ -23,7 +23,7 @@ namespace MWMechanics // reset creatureStats.mLevel = player->npdt52.level; - creatureStats.mAbilities.clear(); + creatureStats.mSpells.clear(); creatureStats.mMagicEffects = MagicEffects(); for (int i=0; i<27; ++i) @@ -71,7 +71,7 @@ namespace MWMechanics for (std::vector::const_iterator iter (race->powers.list.begin()); iter!=race->powers.list.end(); ++iter) { - insertSpell (*iter, ptr); + creatureStats.mSpells.add (*iter, mEnvironment); } } @@ -85,7 +85,7 @@ namespace MWMechanics for (std::vector::const_iterator iter (sign->powers.list.begin()); iter!=sign->powers.list.end(); ++iter) { - insertSpell (*iter, ptr); + creatureStats.mSpells.add (*iter, mEnvironment); } } @@ -159,59 +159,14 @@ namespace MWMechanics creatureStats.mDynamic[i].setCurrent (creatureStats.mDynamic[i].getModified()); } - void MechanicsManager::insertSpell (const std::string& id, MWWorld::Ptr& creature) - { - MWMechanics::CreatureStats& creatureStats = - MWWorld::Class::get (creature).getCreatureStats (creature); - - const ESM::Spell *spell = mEnvironment.mWorld->getStore().spells.find (id); - - switch (spell->data.type) - { - case ESM::Spell::ST_Ability: - - if (creatureStats.mAbilities.find (id)==creatureStats.mAbilities.end()) - { - creatureStats.mAbilities.insert (id); - } - - break; - - // TODO ST_SPELL, ST_Blight, ST_Disease, ST_Curse, ST_Power - - default: - - std::cout - << "adding unsupported spell type (" << spell->data.type - << ") to creature: " << id << std::endl; - } - } - void MechanicsManager::adjustMagicEffects (MWWorld::Ptr& creature) { MWMechanics::CreatureStats& creatureStats = MWWorld::Class::get (creature).getCreatureStats (creature); - MagicEffects now; + MagicEffects now = creatureStats.mSpells.getMagicEffects (mEnvironment); - for (std::set::const_iterator iter (creatureStats.mAbilities.begin()); - iter!=creatureStats.mAbilities.end(); ++iter) - { - const ESM::Spell *spell = mEnvironment.mWorld->getStore().spells.find (*iter); - - for (std::vector::const_iterator iter = spell->effects.list.begin(); - iter!=spell->effects.list.end(); ++iter) - { - if (iter->range==0) // self - { - EffectParam param; - param.mMagnitude = iter->magnMax; // TODO calculate magnitude - now.add (EffectKey (*iter), param); - } - } - } - - // TODO add effects from other spell types, active spells and equipment + /// \todo add effects from active spells and equipment MagicEffects diff = MagicEffects::diff (creatureStats.mMagicEffects, now); diff --git a/apps/openmw/mwmechanics/mechanicsmanager.hpp b/apps/openmw/mwmechanics/mechanicsmanager.hpp index 2e2192638f..8975329dd1 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.hpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.hpp @@ -37,8 +37,6 @@ namespace MWMechanics ///< build player according to stored class/race/birthsign information. Will /// default to the values of the ESM::NPC object, if no explicit information is given. - void insertSpell (const std::string& id, MWWorld::Ptr& creature); - void adjustMagicEffects (MWWorld::Ptr& creature); public: From 77065390d7de2c09a9972e3fda90c9ed73255644 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Wed, 11 Apr 2012 19:40:42 +0200 Subject: [PATCH 458/488] simplifying Spells class --- apps/openmw/mwmechanics/mechanicsmanager.cpp | 4 +- apps/openmw/mwmechanics/spells.cpp | 53 ++++++++------------ apps/openmw/mwmechanics/spells.hpp | 24 +++++---- 3 files changed, 37 insertions(+), 44 deletions(-) diff --git a/apps/openmw/mwmechanics/mechanicsmanager.cpp b/apps/openmw/mwmechanics/mechanicsmanager.cpp index 00453eee52..414faa4144 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.cpp @@ -71,7 +71,7 @@ namespace MWMechanics for (std::vector::const_iterator iter (race->powers.list.begin()); iter!=race->powers.list.end(); ++iter) { - creatureStats.mSpells.add (*iter, mEnvironment); + creatureStats.mSpells.add (*iter); } } @@ -85,7 +85,7 @@ namespace MWMechanics for (std::vector::const_iterator iter (sign->powers.list.begin()); iter!=sign->powers.list.end(); ++iter) { - creatureStats.mSpells.add (*iter, mEnvironment); + creatureStats.mSpells.add (*iter); } } diff --git a/apps/openmw/mwmechanics/spells.cpp b/apps/openmw/mwmechanics/spells.cpp index 2b28f0c2fe..4e8c6fa5a9 100644 --- a/apps/openmw/mwmechanics/spells.cpp +++ b/apps/openmw/mwmechanics/spells.cpp @@ -1,7 +1,7 @@ #include "spells.hpp" -#include +#include #include "../mwworld/environment.hpp" #include "../mwworld/world.hpp" @@ -21,57 +21,48 @@ namespace MWMechanics } } - Spells::TIterator Spells::begin (ESM::Spell::SpellType type) const + Spells::TIterator Spells::begin() const { - assert (type>=0 && type=0 && typegetStore().spells.find (spellId); - - int type = spell->data.type; - - assert (type>=0 && typegetStore().spells.find (spellId); + TContainer::iterator iter = std::find (mSpells.begin(), mSpells.end(), spellId); - int type = spell->data.type; - - TContainer::iterator iter = std::find (mSpells[type].begin(), mSpells[type].end(), spell); - - if (iter!=mSpells[type].end()) - mSpells[type].erase (iter); + if (iter!=mSpells.end()) + mSpells.erase (iter); } - MagicEffects Spells::getMagicEffects (MWWorld::Environment& environment) const + MagicEffects Spells::getMagicEffects (const MWWorld::Environment& environment) const { MagicEffects effects; - for (int i=ESM::Spell::ST_Ability; i<=ESM::Spell::ST_Curse; ++i) - for (TIterator iter (begin (static_cast (i))); - iter!=end(static_cast (i)); ++iter) - addSpell (*iter, effects); + for (TIterator iter = mSpells.begin(); iter!=mSpells.end(); ++iter) + { + const ESM::Spell *spell = environment.mWorld->getStore().spells.find (*iter); + + if (spell->data.type==ESM::Spell::ST_Ability || spell->data.type==ESM::Spell::ST_Blight || + spell->data.type==ESM::Spell::ST_Disease || spell->data.type==ESM::Spell::ST_Curse) + addSpell (spell, effects); + } return effects; } void Spells::clear() { - for (int i=0; i - #include +#include + +namespace ESM +{ + struct Spell; +} namespace MWWorld { @@ -22,29 +26,27 @@ namespace MWMechanics { public: - typedef std::vector TContainer; + typedef std::vector TContainer; typedef TContainer::const_iterator TIterator; private: - static const int sTypes = 6; - - std::vector mSpells[sTypes]; + std::vector mSpells; void addSpell (const ESM::Spell *, MagicEffects& effects) const; public: - TIterator begin (ESM::Spell::SpellType type) const; + TIterator begin() const; - TIterator end (ESM::Spell::SpellType type) const; + TIterator end() const; - void add (const std::string& spell, MWWorld::Environment& environment); + void add (const std::string& spell); /// \note Adding a spell that is already listed in *this is a no-op. - void remove (const std::string& spell, MWWorld::Environment& environment); + void remove (const std::string& spell); - MagicEffects getMagicEffects (MWWorld::Environment& environment) const; + MagicEffects getMagicEffects (const MWWorld::Environment& environment) const; ///< Return sum of magic effects resulting from abilities, blights, deseases and curses. void clear(); From 26a529111c760e639321b87a6659e0875be0fe67 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Wed, 11 Apr 2012 19:45:56 +0200 Subject: [PATCH 459/488] removed old known spell list from NpcStats --- apps/openmw/mwclass/npc.cpp | 2 +- apps/openmw/mwmechanics/npcstats.hpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index 2cf4cf41c3..57cc3560a5 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -63,7 +63,7 @@ namespace MWClass for (std::vector::const_iterator iter (ref->base->spells.list.begin()); iter!=ref->base->spells.list.end(); ++iter) - data->mNpcStats.mKnownSpells.insert (*iter); + data->mCreatureStats.mSpells.add (*iter); // creature stats data->mCreatureStats.mAttributes[0].set (ref->base->npdt52.strength); diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index 59bfa2ac0a..ece85f8938 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -11,6 +11,8 @@ namespace MWMechanics /// \brief Additional stats for NPCs /// /// For non-NPC-specific stats, see the CreatureStats struct. + /// + /// \note For technical reasons the spell list is also handled by CreatureStats. struct NpcStats { @@ -26,7 +28,6 @@ namespace MWMechanics bool mSneak; bool mCombat; - std::set mKnownSpells; std::string mSelectedSpell; // can be an empty string (no spell selected) NpcStats() : mForceRun (false), mForceSneak (false), mRun (false), mSneak (false), From a727bcd4a405c1d9007b00d609114cb39b7c98cd Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 11 Apr 2012 20:13:15 +0200 Subject: [PATCH 460/488] override nif transparency settings (part 1) --- CMakeLists.txt | 4 ++ apps/openmw/engine.cpp | 8 +++ components/CMakeLists.txt | 4 ++ components/nifogre/ogre_nif_loader.cpp | 19 ++++-- components/nifoverrides/nifoverrides.cpp | 37 ++++++++++ components/nifoverrides/nifoverrides.hpp | 23 +++++++ files/transparency-overrides.cfg | 86 ++++++++++++++++++++++++ 7 files changed, 177 insertions(+), 4 deletions(-) create mode 100644 components/nifoverrides/nifoverrides.cpp create mode 100644 components/nifoverrides/nifoverrides.hpp create mode 100644 files/transparency-overrides.cfg diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b87e35447..21de30bac8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -227,6 +227,9 @@ endif (APPLE) configure_file(${OpenMW_SOURCE_DIR}/files/settings-default.cfg "${OpenMW_BINARY_DIR}/settings-default.cfg") +configure_file(${OpenMW_SOURCE_DIR}/files/transparency-overrides.cfg + "${OpenMW_BINARY_DIR}/transparency-overrides.cfg") + configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg.local "${OpenMW_BINARY_DIR}/openmw.cfg") configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg @@ -308,6 +311,7 @@ if(DPKG_PROGRAM) #Install global configuration files INSTALL(FILES "${OpenMW_BINARY_DIR}/settings-default.cfg" DESTINATION "../etc/openmw/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") + INSTALL(FILES "${OpenMW_BINARY_DIR}/transparency-overrides.cfg" DESTINATION "../etc/openmw/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "../etc/openmw/" RENAME "openmw.cfg" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") INSTALL(FILES "${OpenMW_BINARY_DIR}/plugins.cfg" DESTINATION "../etc/openmw/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 1adcf8dcac..d5ff165f82 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -349,6 +350,13 @@ void OMW::Engine::go() mFpsLevel = settings.getInt("fps", "HUD"); + // load nif overrides + NifOverrides::Overrides nifOverrides; + if (boost::filesystem::exists(mCfgMgr.getLocalPath().string() + "/transparency-overrides.cfg")) + nifOverrides.loadTransparencyOverrides(mCfgMgr.getLocalPath().string() + "/transparency-overrides.cfg"); + else if (boost::filesystem::exists(mCfgMgr.getGlobalPath().string() + "/transparency-overrides.cfg")) + nifOverrides.loadTransparencyOverrides(mCfgMgr.getGlobalPath().string() + "/transparency-overrides.cfg"); + mOgre->configure(!boost::filesystem::is_regular_file(mCfgMgr.getOgreConfigPath()), mCfgMgr.getOgreConfigPath().string(), mCfgMgr.getLogPath().string(), diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt index b48c50640c..8a1875d0fb 100644 --- a/components/CMakeLists.txt +++ b/components/CMakeLists.txt @@ -6,6 +6,10 @@ add_component_dir (settings settings ) +add_component_dir (nifoverrides + nifoverrides + ) + add_component_dir (bsa bsa_archive bsa_file ) diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 02e4e5447e..6f51427968 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -26,6 +26,7 @@ #include "ogre_nif_loader.hpp" #include +#include typedef unsigned char ubyte; @@ -282,11 +283,21 @@ void NIFLoader::createMaterial(const String &name, // other values. 237 basically means normal transparencly. if (alphaFlags == 237) { - // Enable transparency - pass->setSceneBlending(SBT_TRANSPARENT_ALPHA); + NifOverrides::TransparencyResult result = NifOverrides::Overrides::getTransparencyOverride(texName); + if (result.first) + { + pass->setAlphaRejectFunction(CMPF_GREATER_EQUAL); + pass->setAlphaRejectValue(result.second); + } + else + { + // Enable transparency + pass->setSceneBlending(SBT_TRANSPARENT_ALPHA); - //pass->setDepthCheckEnabled(false); - pass->setDepthWriteEnabled(false); + //pass->setDepthCheckEnabled(false); + pass->setDepthWriteEnabled(false); + std::cout << "alpha 237; material: " << name << " texName: " << texName << std::endl; + } } else warn("Unhandled alpha setting for texture " + texName); diff --git a/components/nifoverrides/nifoverrides.cpp b/components/nifoverrides/nifoverrides.cpp new file mode 100644 index 0000000000..1c8fefd24a --- /dev/null +++ b/components/nifoverrides/nifoverrides.cpp @@ -0,0 +1,37 @@ +#include "nifoverrides.hpp" + +#include + +#include + +using namespace NifOverrides; + +Ogre::ConfigFile Overrides::mTransparencyOverrides = Ogre::ConfigFile(); + +void Overrides::loadTransparencyOverrides (const std::string& file) +{ + mTransparencyOverrides.load(file); +} + +TransparencyResult Overrides::getTransparencyOverride(const std::string& texture) +{ + TransparencyResult result; + result.first = false; + + std::string tex = texture; + boost::to_lower(tex); + + Ogre::ConfigFile::SectionIterator seci = mTransparencyOverrides.getSectionIterator(); + while (seci.hasMoreElements()) + { + Ogre::String sectionName = seci.peekNextKey(); + if (sectionName == tex) + { + result.first = true; + result.second = Ogre::StringConverter::parseInt(mTransparencyOverrides.getSetting("alphaRejectValue", sectionName)); + break; + } + seci.getNext(); + } + return result; +} diff --git a/components/nifoverrides/nifoverrides.hpp b/components/nifoverrides/nifoverrides.hpp new file mode 100644 index 0000000000..c9b711df67 --- /dev/null +++ b/components/nifoverrides/nifoverrides.hpp @@ -0,0 +1,23 @@ +#ifndef COMPONENTS_NIFOVERRIDES_H +#define COMPONENTS_NIFOVERRIDES_H + +#include + +namespace NifOverrides +{ + + typedef std::pair TransparencyResult; + + /// \brief provide overrides for some model / texture properties that bethesda has chosen poorly + class Overrides + { + public: + static Ogre::ConfigFile mTransparencyOverrides; + void loadTransparencyOverrides (const std::string& file); + + static TransparencyResult getTransparencyOverride(const std::string& texture); + }; + +} + +#endif diff --git a/files/transparency-overrides.cfg b/files/transparency-overrides.cfg new file mode 100644 index 0000000000..7750e98347 --- /dev/null +++ b/files/transparency-overrides.cfg @@ -0,0 +1,86 @@ +# Bethesda has used wrong transparency settings for many textures +# (who would have guessed) +# This is very unfortunate because objects with real transparency: +# - cannot cast shadows +# - cannot receive advanced framebuffer effects like depth of field or ambient occlusion +# - cannot cover lens flare effects (the lens flare will just shine through) + +# This file lists textures that should be using alpha rejection instead of transparency +# basically these are textures that are not translucent (i.e. at one spot on the texture, either transparent or opaque) + +# Note: all the texture names here have to be lowercase + +[textures\tx_flag_imp_01.dds] + alphaRejectValue = 128 + +[textures\tx_ivy_02.dds] + alphaRejectValue = 128 + +[textures\tx_ivy_01.dds] + alphaRejectValue = 128 + +[textures\tx_sail.dds] + alphaRejectValue = 128 + +[textures\tx_saltrice_04.dds] + alphaRejectValue = 128 + +[textures\tx_black_lichen_01.dds] + alphaRejectValue = 128 + +[textures\tx_leaves_01.dds] + alphaRejectValue = 128 + +[textures\tx_leaves_02.dds] + alphaRejectValue = 128 + +[textures\tx_leaves_03.dds] + alphaRejectValue = 128 + +[textures\tx_ai_heather_01.dds] + alphaRejectValue = 96 + +[textures\tx_goldkanet_01.dds] + alphaRejectValue = 128 + +[textures\tx_goldkanet_02.dds] + alphaRejectValue = 128 + +[textures\tx_plant_tails00.dds] + alphaRejectValue = 128 + +[textures\tx_vine_01.dds] + alphaRejectValue = 128 + +[textures\tx_comberry_01.dds] + alphaRejectValue = 128 + +[textures\tx_willow_flower_02.dds] + alphaRejectValue = 128 + +[textures\tx_cork_bulb_02.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_telvanni_01.dds] + alphaRejectValue = 128 + +[textures\tx_green_lichen_01.dds] + alphaRejectValue = 128 + +[textures\tx_roobrush_01.dds] + alphaRejectValue = 128 + +[textures\tx_bittergreen_02.dds] + alphaRejectValue = 128 + +[textures\tx_chokeweed_01.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_book_01.dds] + alphaRejectValue = 128 + +[textures\tx_bannerd_w_a_shop_01.dds] + alphaRejectValue = 128 + +[textures\tx_banner_temple_02.dds] + alphaRejectValue = 128 From 800df7376ccc1b88c56c286af5e7a1fe1e12c091 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 12 Apr 2012 14:26:21 +0200 Subject: [PATCH 461/488] use the cursors from morrowind.bsa and remove mwpointer.png --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/engine.cpp | 4 ++++ apps/openmw/mwgui/cursorreplace.cpp | 16 ++++++++++++++++ apps/openmw/mwgui/cursorreplace.hpp | 16 ++++++++++++++++ files/mygui/CMakeLists.txt | 1 - files/mygui/mwpointer.png | Bin 4810 -> 0 bytes files/mygui/openmw_images.xml | 18 +++++++++--------- libs/openengine/ogre/imagerotate.cpp | 3 +-- libs/openengine/ogre/imagerotate.hpp | 2 +- 9 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 apps/openmw/mwgui/cursorreplace.cpp create mode 100644 apps/openmw/mwgui/cursorreplace.hpp delete mode 100644 files/mygui/mwpointer.png diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index a8ae0bd49d..b417c764d2 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -25,7 +25,7 @@ add_openmw_dir (mwinput add_openmw_dir (mwgui layouts text_input widgets race class birth review window_manager console dialogue dialogue_history window_base stats_window messagebox journalwindow charactercreation - map_window window_pinnable_base + map_window window_pinnable_base cursorreplace ) add_openmw_dir (mwdialogue diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 259733600f..8fe6963a9a 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -28,6 +28,7 @@ #include "mwinput/inputmanager.hpp" #include "mwgui/window_manager.hpp" +#include "mwgui/cursorreplace.hpp" #include "mwscript/scriptmanager.hpp" #include "mwscript/compilercontext.hpp" @@ -368,6 +369,9 @@ void OMW::Engine::go() loadBSA(); + // cursor replacer (converts the cursor from the bsa so they can be used by mygui) + MWGui::CursorReplace replacer; + // Create the world mEnvironment.mWorld = new MWWorld::World (*mOgre, mFileCollections, mMaster, mResDir, mNewGame, mEnvironment, mEncoding, mFallbackMap); diff --git a/apps/openmw/mwgui/cursorreplace.cpp b/apps/openmw/mwgui/cursorreplace.cpp new file mode 100644 index 0000000000..2079538fc2 --- /dev/null +++ b/apps/openmw/mwgui/cursorreplace.cpp @@ -0,0 +1,16 @@ +#include "cursorreplace.hpp" + +#include +#include + +#include +#include + +using namespace MWGui; + +CursorReplace::CursorReplace() +{ + OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_vresize.png", 90); + OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_dresize1.png", -45); + OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_dresize2.png", 45); +} diff --git a/apps/openmw/mwgui/cursorreplace.hpp b/apps/openmw/mwgui/cursorreplace.hpp new file mode 100644 index 0000000000..06fe28e39a --- /dev/null +++ b/apps/openmw/mwgui/cursorreplace.hpp @@ -0,0 +1,16 @@ +#ifndef GAME_CURSORREPLACE_H +#define GAME_CURSORREPLACE_H + +#include + +namespace MWGui +{ + /// \brief MyGUI does not support rotating cursors, so we have to do it manually + class CursorReplace + { + public: + CursorReplace(); + }; +} + +#endif diff --git a/files/mygui/CMakeLists.txt b/files/mygui/CMakeLists.txt index dbc20f3f88..e3a7b9999c 100644 --- a/files/mygui/CMakeLists.txt +++ b/files/mygui/CMakeLists.txt @@ -8,7 +8,6 @@ configure_file("${SDIR}/bigbars.png" "${DDIR}/bigbars.png" COPYONLY) configure_file("${SDIR}/black.png" "${DDIR}/black.png" COPYONLY) configure_file("${SDIR}/core.skin" "${DDIR}/core.skin" COPYONLY) configure_file("${SDIR}/core.xml" "${DDIR}/core.xml" COPYONLY) -configure_file("${SDIR}/mwpointer.png" "${DDIR}/mwpointer.png" COPYONLY) configure_file("${SDIR}/mwgui.png" "${DDIR}/mwgui.png" COPYONLY) configure_file("${SDIR}/openmw_images.xml" "${DDIR}/openmw_images.xml" COPYONLY) configure_file("${SDIR}/openmw_settings.xml" "${DDIR}/openmw_settings.xml" COPYONLY) diff --git a/files/mygui/mwpointer.png b/files/mygui/mwpointer.png deleted file mode 100644 index 90bc19b5e2c7ea4f30b895cc5b8cde00ce460e98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4810 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 - + - + - + - + - + - + - + - + - + diff --git a/libs/openengine/ogre/imagerotate.cpp b/libs/openengine/ogre/imagerotate.cpp index 166a1d3c60..b7522c1001 100644 --- a/libs/openengine/ogre/imagerotate.cpp +++ b/libs/openengine/ogre/imagerotate.cpp @@ -49,7 +49,7 @@ void ImageRotate::rotate(const std::string& sourceImage, const std::string& dest unsigned int height = sourceTexture->getHeight(); TexturePtr destTexture = TextureManager::getSingleton().createManual( - "ImageRotateDestTexture", + destImage, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, width, height, @@ -69,7 +69,6 @@ void ImageRotate::rotate(const std::string& sourceImage, const std::string& dest rtt->writeContentsToFile(destImage); // remove all the junk we've created - TextureManager::getSingleton().remove("ImageRotateDestTexture"); MaterialManager::getSingleton().remove("ImageRotateMaterial"); root->destroySceneManager(sceneMgr); delete rect; diff --git a/libs/openengine/ogre/imagerotate.hpp b/libs/openengine/ogre/imagerotate.hpp index 85363d71f4..a3f6d662f3 100644 --- a/libs/openengine/ogre/imagerotate.hpp +++ b/libs/openengine/ogre/imagerotate.hpp @@ -15,7 +15,7 @@ namespace Render public: /** * @param source image (file name - has to exist in an resource group) - * @param destination image (absolute file path) + * @param name of the destination texture to save to (in memory) * @param angle in degrees to turn */ static void rotate(const std::string& sourceImage, const std::string& destImage, const float angle); From 4a6a8e5420eb24f203d6645b157e3aba63a21342 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 12 Apr 2012 14:28:35 +0200 Subject: [PATCH 462/488] don't write to disk --- libs/openengine/ogre/imagerotate.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/openengine/ogre/imagerotate.cpp b/libs/openengine/ogre/imagerotate.cpp index b7522c1001..1147559d6e 100644 --- a/libs/openengine/ogre/imagerotate.cpp +++ b/libs/openengine/ogre/imagerotate.cpp @@ -66,7 +66,6 @@ void ImageRotate::rotate(const std::string& sourceImage, const std::string& dest vp->setClearEveryFrame(true, FBT_DEPTH); rtt->update(); - rtt->writeContentsToFile(destImage); // remove all the junk we've created MaterialManager::getSingleton().remove("ImageRotateMaterial"); From 2b8c81e7795a01c00a6e014714d31206abaa0af4 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 12 Apr 2012 14:31:12 +0200 Subject: [PATCH 463/488] removed test.skin file --- files/mygui/test.skin | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 files/mygui/test.skin diff --git a/files/mygui/test.skin b/files/mygui/test.skin deleted file mode 100644 index 5f198ab4a0..0000000000 --- a/files/mygui/test.skin +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - From 95f87a8abf437e7cc0e35c77c785ca619f02b6dc Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 12 Apr 2012 16:33:36 +0200 Subject: [PATCH 464/488] more or less complete list for morrowind.bsa (thanks to artorius) --- components/nifogre/ogre_nif_loader.cpp | 2 +- files/transparency-overrides.cfg | 502 ++++++++++++++++++++++++- 2 files changed, 496 insertions(+), 8 deletions(-) diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 6f51427968..ab6a708c0e 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -296,7 +296,7 @@ void NIFLoader::createMaterial(const String &name, //pass->setDepthCheckEnabled(false); pass->setDepthWriteEnabled(false); - std::cout << "alpha 237; material: " << name << " texName: " << texName << std::endl; + //std::cout << "alpha 237; material: " << name << " texName: " << texName << std::endl; } } else diff --git a/files/transparency-overrides.cfg b/files/transparency-overrides.cfg index 7750e98347..299792be17 100644 --- a/files/transparency-overrides.cfg +++ b/files/transparency-overrides.cfg @@ -10,7 +10,17 @@ # Note: all the texture names here have to be lowercase -[textures\tx_flag_imp_01.dds] +# fauna +[textures\tx_wickwheat_01.dds] + alphaRejectValue = 128 + +[textures\tx_wickwheat_03.dds] + alphaRejectValue = 128 + +[textures\tx_red_lichen_01.dds] + alphaRejectValue = 128 + +[textures\tx_stone_flower_01.dds] alphaRejectValue = 128 [textures\tx_ivy_02.dds] @@ -19,9 +29,6 @@ [textures\tx_ivy_01.dds] alphaRejectValue = 128 -[textures\tx_sail.dds] - alphaRejectValue = 128 - [textures\tx_saltrice_04.dds] alphaRejectValue = 128 @@ -37,6 +44,15 @@ [textures\tx_leaves_03.dds] alphaRejectValue = 128 +[textures\tx_leaves_04.dds] + alphaRejectValue = 128 + +[textures\tx_leaves_06.dds] + alphaRejectValue = 128 + +[textures\tx_leaves_07.dds] + alphaRejectValue = 128 + [textures\tx_ai_heather_01.dds] alphaRejectValue = 96 @@ -61,9 +77,6 @@ [textures\tx_cork_bulb_02.dds] alphaRejectValue = 128 -[textures\tx_v_b_telvanni_01.dds] - alphaRejectValue = 128 - [textures\tx_green_lichen_01.dds] alphaRejectValue = 128 @@ -76,11 +89,486 @@ [textures\tx_chokeweed_01.dds] alphaRejectValue = 128 +[textures\tx_branches_01.dds] + alphaRejectValue = 128 + +[textures\tx_branches_02.dds] + alphaRejectValue = 128 + +[textures\tx_guarskin_hut_03.dds] + alphaRejectValue = 128 + +[textures\tx_hackle-lo_02.dds] + alphaRejectValue = 128 + +[textures\tx_bc_fern_01.dds] + alphaRejectValue = 128 + +[textures\tx_bc_fern_02.dds] + alphaRejectValue = 128 + +[textures\tx_bc_leaves_02.dds] + alphaRejectValue = 128 + +[textures\tx_marshmerrow_03.dds] + alphaRejectValue = 128 + +[textures\tx_bc_moss_01.dds] + alphaRejectValue = 128 + +[textures\tx_bc_moss_02.dds] + alphaRejectValue = 128 + +[textures\tx_bc_lilypad_01.dds] + alphaRejectValue = 128 + +[textures\tx_bc_lilypad_02.dds] + alphaRejectValue = 128 + +[textures\tx_bc_lilypad_03.dds] + alphaRejectValue = 128 + +[textures\tx_fire_fern_01.dds] + alphaRejectValue = 128 + +# banners and flags +[textures\tx_flag_imp_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_arena_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_comfort_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_child_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_count_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_faith_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_walk_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_imp_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_redoran_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_avs_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_serving_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_speak_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_stdeyln_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_stolms_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_thin_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_vivec_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_vivec_02.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_banner_01.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_banner_02.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_banner_04.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_banner_05.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_banner_06.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_banner_07.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_a_banner.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_e_banner.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_u_banner.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_z_banner.dds] + alphaRejectValue = 128 + +[textures\tx_banner_6th.dds] + alphaRejectValue = 128 + +[textures\tx_banner_6th_tall.dds] + alphaRejectValue = 128 + +[textures\tx_banner_gnisis_01.dds] + alphaRejectValue = 128 + +[textures\tx_banner_gnisis_02.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_bhm_01.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_02.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_03.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_04.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_05.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_06.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_07.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_08.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_08.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_09.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_10.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_11.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_12.dds] + alphaRejectValue = 128 + +[textures\tx_de_tapestry_13.dds] + alphaRejectValue = 128 + +[textures\tx_de_lutestrings_01.dds] + alphaRejectValue = 128 + +[textures\tx_fabric_imp_altar_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_akatosh_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_apprentice_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_arkay_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_dibella_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_golem_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_julianos_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_kynareth_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_lady_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_lord_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_lover_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_mara_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_ritual_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_shadow_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_steed_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_stendarr_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_thief_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_tower_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_warrior_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_wizard_01.dds] + alphaRejectValue = 128 + +[textures\tx_c_t_zenithar_01.dds] + alphaRejectValue = 128 + +[textures\tx_banner_dagoth_01.dds] + alphaRejectValue = 128 + +[textures\tx_bannerd_tavern_01.dds] + alphaRejectValue = 128 + +[textures\tx_bannerd_goods_01.dds] + alphaRejectValue = 128 + +[textures\tx_bannerd_danger_01.dds] + alphaRejectValue = 128 + +[textures\tx_bannerd_welcome_01.dds] + alphaRejectValue = 128 + +[textures\tx_bannerd_clothing_01.dds] + alphaRejectValue = 128 + +[textures\tx_bannerd_alchemy_01.dds] + alphaRejectValue = 128 + +[textures\tx_banner_hlaalu_01.dds] + alphaRejectValue = 128 + +[textures\tx_banner_redoran_01.dds] + alphaRejectValue = 128 + +[textures\tx_banner_temple_01.dds] + alphaRejectValue = 128 + +[textures\tx_banner_temple_03.dds] + alphaRejectValue = 128 + [textures\tx_de_banner_book_01.dds] alphaRejectValue = 128 +[textures\tx_de_banner_ald_velothi.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_gnaar_mok.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_hla_oad.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_khull.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_pawn_01.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_sadrith_mora.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_tel_aruhn.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_tel_branora.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_tel_fyr.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_tel_mora.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_telvani_01.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_tel_vos.dds] + alphaRejectValue = 128 + +[textures\tx_de_banner_vos.dds] + alphaRejectValue = 128 + [textures\tx_bannerd_w_a_shop_01.dds] alphaRejectValue = 128 [textures\tx_banner_temple_02.dds] alphaRejectValue = 128 + +[textures\tx_mural1_00.dds] + alphaRejectValue = 128 + +[textures\tx_mural1_01.dds] + alphaRejectValue = 128 + +[textures\tx_mural4_00.dds] + alphaRejectValue = 128 + +[textures\tx_mural4_01.dds] + alphaRejectValue = 128 + +[textures\tx_mural5_00.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_telvanni_01.dds] + alphaRejectValue = 128 + +[textures\tx_v_b_hlaalu_01.dds] + alphaRejectValue = 128 + +[textures\tx_fabric_tapestry.dds] + alphaRejectValue = 128 + +[textures\tx_fabric_tapestry_01.dds] + alphaRejectValue = 128 + +[textures\tx_fabric_tapestry_02.dds] + alphaRejectValue = 128 + +[textures\tx_fabric_tapestry_03.dds] + alphaRejectValue = 128 + +[textures\tx_fabric_tapestry_04.dds] + alphaRejectValue = 128 + +# characters +[textures\tx_netchgod00.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_argonian_f_hair02.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_argonian_f_hair03.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_argonian_m_hair01.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_argonian_m_hair04.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_argonian_m_hair05.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_khajiit_f_hair01.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_khajiit_f_hair02.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_khajiit_m_hair01.dds] + alphaRejectValue = 128 + +[textures\tx_corprus_stalker12.dds] + alphaRejectValue = 128 + +[textures\tx_a_clavicus02.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_dark elf_m_hair11.dds] + alphaRejectValue = 128 + +[textures\tx_b_n_dark elf_f_hair10.dds] + alphaRejectValue = 128 + +# misc items +[textures\tx_sail.dds] + alphaRejectValue = 128 + +[textures\tx_longboatsail01.dds] + alphaRejectValue = 128 + +[textures\tx_longboatsail01a.dds] + alphaRejectValue = 128 + +[textures\tx_longboatsail01b.dds] + alphaRejectValue = 128 + +[textures\tx_longboatsail02.dds] + alphaRejectValue = 128 + +[textures\tx_quill.dds] + alphaRejectValue = 128 + +[textures\tx_note_01.dds] + alphaRejectValue = 128 + +[textures\tx_note_02.dds] + alphaRejectValue = 128 + +[textures\tx_parchment_02.dds] + alphaRejectValue = 128 + +[textures\tx_parchment_03.dds] + alphaRejectValue = 128 + +[textures\tx_scroll_01.dds] + alphaRejectValue = 128 + +[textures\tx_scroll_02.dds] + alphaRejectValue = 128 + +[textures\tx_scroll_03.dds] + alphaRejectValue = 128 + +[textures\tx_alpha_small_edge.dds] + alphaRejectValue = 128 + +[textures\tx_alpha_shadow_circular.dds] + alphaRejectValue = 128 + +# building materials +[textures\tx_shack_thatch_strip.dds] + alphaRejectValue = 128 + +[textures\tx_rug00.dds] + alphaRejectValue = 128 + +[textures\tx_rug_02.dds] + alphaRejectValue = 128 + +[textures\tx_rug_edge_01.dds] + alphaRejectValue = 128 + +[textures\tx_awning_thatch_02.dds] + alphaRejectValue = 128 + +[textures\tx_awning_woven_01.dds] + alphaRejectValue = 128 + +[textures\tx_bridgeropes.dds] + alphaRejectValue = 128 + +[textures\tx_rope_woven_01.dds] + alphaRejectValue = 128 + +[textures\tx_rope_woven_02.dds] + alphaRejectValue = 128 + +[textures\tx_ashl_tent_06.dds] + alphaRejectValue = 128 + +[textures\tx_guar_tarp.dds] + alphaRejectValue = 128 + +[textures\tx_velothi_glyph00.dds] + alphaRejectValue = 128 From a96ad7fb8295df3470dd0b008d978d234317edd6 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 12 Apr 2012 16:46:56 +0200 Subject: [PATCH 465/488] restored toggleWater --- apps/openmw/mwrender/water.cpp | 55 +++++++++++++++++----------------- apps/openmw/mwrender/water.hpp | 2 ++ 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 85fb2ee994..71cf56dfda 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -11,7 +11,7 @@ namespace MWRender Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), mIsUnderwater(false), mVisibilityFlags(0), - mReflectionTarget(0), mActive(1) + mReflectionTarget(0), mActive(1), mToggled(1) { mSky = sky; @@ -93,32 +93,32 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : // destroy if already exists if (overlay = mgr.getByName("ReflectionDebugOverlay")) mgr.destroy(overlay); - + overlay = mgr.create("ReflectionDebugOverlay"); - + if (MaterialManager::getSingleton().resourceExists("Ogre/ReflectionDebugTexture")) MaterialManager::getSingleton().remove("Ogre/ReflectionDebugTexture"); MaterialPtr debugMat = MaterialManager::getSingleton().create( - "Ogre/ReflectionDebugTexture", + "Ogre/ReflectionDebugTexture", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); - + debugMat->getTechnique(0)->getPass(0)->setLightingEnabled(false); TextureUnitState *t = debugMat->getTechnique(0)->getPass(0)->createTextureUnitState(tex->getName()); t->setTextureAddressingMode(TextureUnitState::TAM_CLAMP); OverlayContainer* debugPanel; - + // destroy container if exists try { - if (debugPanel = + if (debugPanel = static_cast( mgr.getOverlayElement("Ogre/ReflectionDebugTexPanel" ))) mgr.destroyOverlayElement(debugPanel); } catch (Ogre::Exception&) {} - + debugPanel = (OverlayContainer*) (OverlayManager::getSingleton().createOverlayElement("Panel", "Ogre/ReflectionDebugTexPanel")); debugPanel->_setPosition(0, 0.55); @@ -134,8 +134,7 @@ Water::Water (Ogre::Camera *camera, SkyManager* sky, const ESM::Cell* cell) : void Water::setActive(bool active) { mActive = active; - if (mReflectionTarget) mReflectionTarget->setActive(active && !mIsUnderwater); - mWater->setVisible(active); + updateVisible(); } Water::~Water() @@ -167,8 +166,8 @@ void Water::setHeight(const float height) void Water::toggle() { - if (mActive) - mWater->setVisible(!mWater->getVisible()); + mToggled = !mToggled; + updateVisible(); } void Water::checkUnderwater(float y) @@ -183,13 +182,10 @@ void Water::checkUnderwater(float y) if (pass->hasFragmentProgram() && pass->getFragmentProgramParameters()->_findNamedConstantDefinition("isUnderwater", false)) pass->getFragmentProgramParameters()->setNamedConstant("isUnderwater", Real(0)); - if (mReflectionTarget) - mReflectionTarget->setActive(mActive); - mWater->setRenderQueueGroup(RQG_Water); mIsUnderwater = false; - } + } if (!mIsUnderwater && y < mTop && mWater->isVisible() && mCamera->getPolygonMode() == Ogre::PM_SOLID) { @@ -201,13 +197,12 @@ void Water::checkUnderwater(float y) if (pass->hasFragmentProgram() && pass->getFragmentProgramParameters()->_findNamedConstantDefinition("isUnderwater", false)) pass->getFragmentProgramParameters()->setNamedConstant("isUnderwater", Real(1)); - if (mReflectionTarget) - mReflectionTarget->setActive(false); - mWater->setRenderQueueGroup(RQG_UnderWater); mIsUnderwater = true; } + + updateVisible(); } Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) @@ -217,15 +212,14 @@ Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) { - mReflectionCamera->setOrientation(mCamera->getDerivedOrientation()); - mReflectionCamera->setPosition(mCamera->getDerivedPosition()); - mReflectionCamera->setNearClipDistance(mCamera->getNearClipDistance()); - mReflectionCamera->setFarClipDistance(mCamera->getFarClipDistance()); - mReflectionCamera->setAspectRatio(mCamera->getAspectRatio()); - mReflectionCamera->setFOVy(mCamera->getFOVy()); if (evt.source == mReflectionTarget) { - mWater->setVisible(false); + mReflectionCamera->setOrientation(mCamera->getDerivedOrientation()); + mReflectionCamera->setPosition(mCamera->getDerivedPosition()); + mReflectionCamera->setNearClipDistance(mCamera->getNearClipDistance()); + mReflectionCamera->setFarClipDistance(mCamera->getFarClipDistance()); + mReflectionCamera->setAspectRatio(mCamera->getAspectRatio()); + mReflectionCamera->setFOVy(mCamera->getFOVy()); // Some messy code to get the skybox to show up at all // The problem here is that it gets clipped by the water plane @@ -242,8 +236,6 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) { - mWater->setVisible(true); - if (evt.source == mReflectionTarget) { mSky->resetSkyPosition(); @@ -291,4 +283,11 @@ void Water::setViewportBackground(const ColourValue& bg) mReflectionTarget->getViewport(0)->setBackgroundColour(bg); } +void Water::updateVisible() +{ + mWater->setVisible(mToggled && mActive); + if (mReflectionTarget) + mReflectionTarget->setActive(mToggled && mActive && !mIsUnderwater); +} + } // namespace diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 3fb1b07b75..f14482e2b7 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -24,6 +24,7 @@ namespace MWRender { bool mIsUnderwater; bool mActive; + bool mToggled; int mTop; Ogre::Vector3 getSceneNodeCoordinates(int gridX, int gridY); @@ -31,6 +32,7 @@ namespace MWRender { protected: void preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); void postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); + void updateVisible(); SkyManager* mSky; From 03d6d1fb82faf7dcdd808facfcefb7e2716b8cfc Mon Sep 17 00:00:00 2001 From: gugus Date: Thu, 12 Apr 2012 17:08:57 +0200 Subject: [PATCH 466/488] NPC rank is correctly loaded now. Also corrected a potential bug (i think). --- apps/openmw/mwclass/npc.cpp | 41 ++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index b98df79ef1..43e04ab521 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -55,31 +55,38 @@ namespace MWClass { if(ref->base->npdt52.gold != -10) { - data->mNpcStats.mFactionRank[ref->base->faction] = ref->base->npdt52.rank; + data->mNpcStats.mFactionRank[ref->base->faction] = (int)ref->base->npdt52.rank; } else { - data->mNpcStats.mFactionRank[ref->base->faction] = ref->base->npdt52.rank; + data->mNpcStats.mFactionRank[ref->base->faction] = (int)ref->base->npdt12.rank; } } - for (int i=0; i<27; ++i) - data->mNpcStats.mSkill[i].setBase (ref->base->npdt52.skills[i]); + if(ref->base->npdt52.gold != -10) + { + for (int i=0; i<27; ++i) + data->mNpcStats.mSkill[i].setBase (ref->base->npdt52.skills[i]); - // creature stats - data->mCreatureStats.mAttributes[0].set (ref->base->npdt52.strength); - data->mCreatureStats.mAttributes[1].set (ref->base->npdt52.intelligence); - data->mCreatureStats.mAttributes[2].set (ref->base->npdt52.willpower); - data->mCreatureStats.mAttributes[3].set (ref->base->npdt52.agility); - data->mCreatureStats.mAttributes[4].set (ref->base->npdt52.speed); - data->mCreatureStats.mAttributes[5].set (ref->base->npdt52.endurance); - data->mCreatureStats.mAttributes[6].set (ref->base->npdt52.personality); - data->mCreatureStats.mAttributes[7].set (ref->base->npdt52.luck); - data->mCreatureStats.mDynamic[0].set (ref->base->npdt52.health); - data->mCreatureStats.mDynamic[1].set (ref->base->npdt52.mana); - data->mCreatureStats.mDynamic[2].set (ref->base->npdt52.fatigue); + // creature stats + data->mCreatureStats.mAttributes[0].set (ref->base->npdt52.strength); + data->mCreatureStats.mAttributes[1].set (ref->base->npdt52.intelligence); + data->mCreatureStats.mAttributes[2].set (ref->base->npdt52.willpower); + data->mCreatureStats.mAttributes[3].set (ref->base->npdt52.agility); + data->mCreatureStats.mAttributes[4].set (ref->base->npdt52.speed); + data->mCreatureStats.mAttributes[5].set (ref->base->npdt52.endurance); + data->mCreatureStats.mAttributes[6].set (ref->base->npdt52.personality); + data->mCreatureStats.mAttributes[7].set (ref->base->npdt52.luck); + data->mCreatureStats.mDynamic[0].set (ref->base->npdt52.health); + data->mCreatureStats.mDynamic[1].set (ref->base->npdt52.mana); + data->mCreatureStats.mDynamic[2].set (ref->base->npdt52.fatigue); - data->mCreatureStats.mLevel = ref->base->npdt52.level; + data->mCreatureStats.mLevel = ref->base->npdt52.level; + } + else + { + //TODO: do something with npdt12 maybe:p + } // \todo add initial container content From 7edc5c733ca0f52bcba0025a5dc5244c8e1dff09 Mon Sep 17 00:00:00 2001 From: gugus Date: Thu, 12 Apr 2012 17:29:05 +0200 Subject: [PATCH 467/488] corrected a bug about rank. --- apps/openmw/mwdialogue/dialoguemanager.cpp | 4 ++-- apps/openmw/mwscript/statsextensions.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index 1405224991..90f0c0231f 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -488,7 +488,7 @@ namespace MWDialogue if(it!=stats.mFactionRank.end()) { //check rank - if(it->second < info.data.rank) return false; + if(it->second < (int)info.data.rank) return false; } else { @@ -505,7 +505,7 @@ namespace MWDialogue if(it!=stats.mFactionRank.end()) { //check rank - if(it->second < info.data.rank) return false; + if(it->second < (int)info.data.PCrank) return false; } else { diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index a3c517f8cb..47ae9d13d5 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -307,7 +307,7 @@ namespace MWScript MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); if(MWWorld::Class::get(player).getNpcStats(player).mFactionRank.find(factionID) == MWWorld::Class::get(player).getNpcStats(player).mFactionRank.end()) { - MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 1; + MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 0; } else { @@ -340,7 +340,7 @@ namespace MWScript MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); if(MWWorld::Class::get(player).getNpcStats(player).mFactionRank.find(factionID) == MWWorld::Class::get(player).getNpcStats(player).mFactionRank.end()) { - MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 1; + MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID] = 0; } else { From e2ec889d1008bd721a945330b136a53a0950a6b0 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 12 Apr 2012 17:40:26 +0200 Subject: [PATCH 468/488] fixed a warning "implicit cast to float3" --- apps/openmw/mwrender/shaderhelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/shaderhelper.cpp b/apps/openmw/mwrender/shaderhelper.cpp index 93f960dc42..5354251f8c 100644 --- a/apps/openmw/mwrender/shaderhelper.cpp +++ b/apps/openmw/mwrender/shaderhelper.cpp @@ -258,7 +258,7 @@ void ShaderHelper::createShader(const bool mrt, const bool shadows, const bool s outStream << " float3 lightingFinal = lightColour.xyz * diffuse.xyz * vertexColour.xyz + ambient.xyz * lightAmbient.xyz + emissive.xyz; \n" " float fogValue = saturate((iDepth - fogParams.y) * fogParams.w); \n" - " oColor.xyz = lerp(lightingFinal * tex.xyz, fogColour, fogValue); \n" + " oColor.xyz = lerp(lightingFinal * tex.xyz, fogColour.xyz, fogValue); \n" " oColor.a = tex.a * diffuse.a * vertexColour.a; \n"; if (mrt) outStream << From fb78e853d41f07158705936213f21dd1804d0b16 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 12 Apr 2012 19:18:38 +0200 Subject: [PATCH 469/488] removed 2 unneeded lines --- apps/openmw/mwrender/shadows.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/openmw/mwrender/shadows.cpp b/apps/openmw/mwrender/shadows.cpp index 9c150f0c65..bf5602f438 100644 --- a/apps/openmw/mwrender/shadows.cpp +++ b/apps/openmw/mwrender/shadows.cpp @@ -55,9 +55,7 @@ void Shadows::recreate() mSceneMgr->setShadowCasterRenderBackFaces(true); mSceneMgr->setShadowTextureCasterMaterial("depth_shadow_caster"); mSceneMgr->setShadowTexturePixelFormat(PF_FLOAT32_R); - mSceneMgr->setShadowDirLightTextureOffset(0.9); mSceneMgr->setShadowDirectionalLightExtrusionDistance(1000000); - mSceneMgr->setShowDebugShadows(true); mShadowFar = split ? Settings::Manager::getInt("split shadow distance", "Shadows") : Settings::Manager::getInt("shadow distance", "Shadows"); mSceneMgr->setShadowFarDistance(mShadowFar); From 52c7ee3b6ae8a9738289a1728cb02ad8d9a49e1f Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 13 Apr 2012 10:49:45 +0200 Subject: [PATCH 470/488] moved selected spell from NpcStats to Spells --- apps/openmw/mwmechanics/npcstats.hpp | 5 ++--- apps/openmw/mwmechanics/spells.cpp | 13 +++++++++++++ apps/openmw/mwmechanics/spells.hpp | 11 ++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index ece85f8938..b9c672722b 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -12,7 +12,8 @@ namespace MWMechanics /// /// For non-NPC-specific stats, see the CreatureStats struct. /// - /// \note For technical reasons the spell list is also handled by CreatureStats. + /// \note For technical reasons the spell list and the currently selected spell is also handled by + /// CreatureStats, even though they are actually NPC stats. struct NpcStats { @@ -28,8 +29,6 @@ namespace MWMechanics bool mSneak; bool mCombat; - std::string mSelectedSpell; // can be an empty string (no spell selected) - NpcStats() : mForceRun (false), mForceSneak (false), mRun (false), mSneak (false), mCombat (false) {} }; diff --git a/apps/openmw/mwmechanics/spells.cpp b/apps/openmw/mwmechanics/spells.cpp index 4e8c6fa5a9..916239a840 100644 --- a/apps/openmw/mwmechanics/spells.cpp +++ b/apps/openmw/mwmechanics/spells.cpp @@ -43,6 +43,9 @@ namespace MWMechanics if (iter!=mSpells.end()) mSpells.erase (iter); + + if (spellId==mSelectedSpell) + mSelectedSpell.clear(); } MagicEffects Spells::getMagicEffects (const MWWorld::Environment& environment) const @@ -65,4 +68,14 @@ namespace MWMechanics { mSpells.clear(); } + + void Spells::setSelectedSpell (const std::string& spellId) + { + mSelectedSpell = spellId; + } + + const std::string Spells::getSelectedSpell() const + { + return mSelectedSpell; + } } diff --git a/apps/openmw/mwmechanics/spells.hpp b/apps/openmw/mwmechanics/spells.hpp index 4c5f21d351..f7606c4ac2 100644 --- a/apps/openmw/mwmechanics/spells.hpp +++ b/apps/openmw/mwmechanics/spells.hpp @@ -32,6 +32,7 @@ namespace MWMechanics private: std::vector mSpells; + std::string mSelectedSpell; void addSpell (const ESM::Spell *, MagicEffects& effects) const; @@ -42,15 +43,23 @@ namespace MWMechanics TIterator end() const; void add (const std::string& spell); - /// \note Adding a spell that is already listed in *this is a no-op. + ///< Adding a spell that is already listed in *this is a no-op. void remove (const std::string& spell); + ///< If the spell to be removed is the selected spell, the selected spell will be changed to + /// no spell (empty string). MagicEffects getMagicEffects (const MWWorld::Environment& environment) const; ///< Return sum of magic effects resulting from abilities, blights, deseases and curses. void clear(); ///< Remove all spells of al types. + + void setSelectedSpell (const std::string& spellId); + ///< This function does not verify, if the spell is available. + + const std::string getSelectedSpell() const; + ///< May return an empty string. }; } From b099e1baf583202cbaed50697011d09d50a72dc0 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 13 Apr 2012 11:12:53 +0200 Subject: [PATCH 471/488] added addspell and removespell script instructions --- apps/openmw/mwscript/docs/vmformat.txt | 6 ++- apps/openmw/mwscript/statsextensions.cpp | 47 ++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index df955ec198..705d65814d 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -129,4 +129,8 @@ op 0x2000143: ModWaterLevel op 0x2000144: ToggleWater, twa op 0x2000145: ToggleFogOfWar (tfow) op 0x2000146: TogglePathgrid -opcodes 0x2000147-0x3ffffff unused +op 0x2000147: AddSpell +op 0x2000148: AddSpell, explicit reference +op 0x2000149: RemoveSpell +op 0x200014a: RemoveSpell, explicit reference +opcodes 0x200014b-0x3ffffff unused diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 0e97a39cf4..10641903ee 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -280,6 +280,38 @@ namespace MWScript } }; + template + class OpAddSpell : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + MWWorld::Ptr ptr = R()(runtime); + + std::string id = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + + MWWorld::Class::get (ptr).getCreatureStats (ptr).mSpells.add (id); + } + }; + + template + class OpRemoveSpell : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + MWWorld::Ptr ptr = R()(runtime); + + std::string id = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + + MWWorld::Class::get (ptr).getCreatureStats (ptr).mSpells.remove (id); + } + }; + const int numberOfAttributes = 8; const int opcodeGetAttribute = 0x2000027; @@ -311,6 +343,11 @@ namespace MWScript const int opcodeModSkill = 0x20000fa; const int opcodeModSkillExplicit = 0x2000115; + const int opcodeAddSpell = 0x2000147; + const int opcodeAddSpellExplicit = 0x2000148; + const int opcodeRemoveSpell = 0x2000149; + const int opcodeRemoveSpellExplicit = 0x200014a; + void registerExtensions (Compiler::Extensions& extensions) { static const char *attributes[numberOfAttributes] = @@ -381,6 +418,10 @@ namespace MWScript extensions.registerInstruction (mod + skills[i], "l", opcodeModSkill+i, opcodeModSkillExplicit+i); } + + extensions.registerInstruction ("addspell", "c", opcodeAddSpell, opcodeAddSpellExplicit); + extensions.registerInstruction ("removespell", "c", opcodeRemoveSpell, + opcodeRemoveSpellExplicit); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -436,6 +477,12 @@ namespace MWScript interpreter.installSegment5 (opcodeModSkill+i, new OpModSkill (i)); interpreter.installSegment5 (opcodeModSkillExplicit+i, new OpModSkill (i)); } + + interpreter.installSegment5 (opcodeAddSpell, new OpAddSpell); + interpreter.installSegment5 (opcodeAddSpellExplicit, new OpAddSpell); + interpreter.installSegment5 (opcodeRemoveSpell, new OpRemoveSpell); + interpreter.installSegment5 (opcodeRemoveSpellExplicit, + new OpRemoveSpell); } } } From e3486931aef62a4d10eff259a6fb1fd71e488d7d Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 13 Apr 2012 13:17:50 +0200 Subject: [PATCH 472/488] F10 hotkey toggle FPS --- apps/openmw/mwgui/layouts.cpp | 35 +++++++++++++++++++--------- apps/openmw/mwgui/layouts.hpp | 1 + apps/openmw/mwgui/window_manager.cpp | 10 ++++++++ apps/openmw/mwgui/window_manager.hpp | 5 +++- apps/openmw/mwinput/inputmanager.cpp | 10 ++++++++ 5 files changed, 49 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index 6d8aa901b5..21302d7c1d 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -67,17 +67,8 @@ HUD::HUD(int width, int height, int fpsLevel) getWidget(crosshair, "Crosshair"); - if ( fpsLevel == 2 ){ - getWidget(fpsbox, "FPSBoxAdv"); - fpsbox->setVisible(true); - getWidget(fpscounter, "FPSCounterAdv"); - }else if ( fpsLevel == 1 ){ - getWidget(fpsbox, "FPSBox"); - fpsbox->setVisible(true); - getWidget(fpscounter, "FPSCounter"); - }else{ - getWidget(fpscounter, "FPSCounter"); - } + setFpsLevel(fpsLevel); + getWidget(trianglecounter, "TriangleCounter"); getWidget(batchcounter, "BatchCounter"); @@ -95,6 +86,28 @@ HUD::HUD(int width, int height, int fpsLevel) LocalMapBase::init(minimap, this); } +void HUD::setFpsLevel(int level) +{ + MyGUI::Widget* fps; + getWidget(fps, "FPSBoxAdv"); + fps->setVisible(false); + getWidget(fps, "FPSBox"); + fps->setVisible(false); + + if (level == 2) + { + getWidget(fpsbox, "FPSBoxAdv"); + fpsbox->setVisible(true); + getWidget(fpscounter, "FPSCounterAdv"); + } + else if (level == 1) + { + getWidget(fpsbox, "FPSBox"); + fpsbox->setVisible(true); + getWidget(fpscounter, "FPSCounter"); + } +} + void HUD::setFPS(float fps) { fpscounter->setCaption(boost::lexical_cast((int)fps)); diff --git a/apps/openmw/mwgui/layouts.hpp b/apps/openmw/mwgui/layouts.hpp index 0614708cf1..19d96d2efa 100644 --- a/apps/openmw/mwgui/layouts.hpp +++ b/apps/openmw/mwgui/layouts.hpp @@ -78,6 +78,7 @@ namespace MWGui void setPlayerPos(const float x, const float y); void setBottomLeftVisibility(bool hmsVisible, bool weapVisible, bool spellVisible); void setBottomRightVisibility(bool effectBoxVisible, bool minimapVisible); + void setFpsLevel(const int level); MyGUI::ProgressPtr health, magicka, stamina; MyGUI::Widget *weapBox, *spellBox; diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index 13b6fab310..34d62ba080 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -15,6 +15,8 @@ #include "journalwindow.hpp" #include "charactercreation.hpp" +#include + #include #include #include @@ -472,3 +474,11 @@ void WindowManager::toggleFogOfWar() map->toggleFogOfWar(); hud->toggleFogOfWar(); } + +int WindowManager::toggleFps() +{ + showFPSLevel = (showFPSLevel+1)%3; + hud->setFpsLevel(showFPSLevel); + Settings::Manager::setInt("fps", "HUD", showFPSLevel); + return showFPSLevel; +} diff --git a/apps/openmw/mwgui/window_manager.hpp b/apps/openmw/mwgui/window_manager.hpp index f1db11731b..2b53560baf 100644 --- a/apps/openmw/mwgui/window_manager.hpp +++ b/apps/openmw/mwgui/window_manager.hpp @@ -158,7 +158,10 @@ namespace MWGui void setPlayerDir(const float x, const float y); ///< set player view direction in map space void toggleFogOfWar(); - + + int toggleFps(); + ///< toggle fps display @return resulting fps level + void setInteriorMapTexture(const int x, const int y); ///< set the index of the map texture that should be used (for interiors) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index bd27de029c..9b5a9ae30f 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -68,6 +68,8 @@ namespace MWInput A_ToggleWeapon, A_ToggleSpell, + A_ToggleFps, // Toggle FPS display (this is temporary) + A_LAST // Marker for the last item }; @@ -88,6 +90,11 @@ namespace MWInput /* InputImpl Methods */ + void toggleFps() + { + windows.toggleFps(); + } + void toggleSpell() { DrawState state = player.getDrawState(); @@ -235,6 +242,8 @@ namespace MWInput "Draw Weapon"); disp->funcs.bind(A_ToggleSpell,boost::bind(&InputImpl::toggleSpell,this), "Ready hands"); + disp->funcs.bind(A_ToggleFps, boost::bind(&InputImpl::toggleFps, this), + "Toggle FPS display"); // Add the exit listener ogre.getRoot()->addFrameListener(&exit); @@ -281,6 +290,7 @@ namespace MWInput disp->bind(A_ToggleWalk, KC_C); disp->bind(A_ToggleWeapon,KC_F); disp->bind(A_ToggleSpell,KC_R); + disp->bind(A_ToggleFps, KC_F10); // Key bindings for polled keys // NOTE: These keys are constantly being polled. Only add keys that must be checked each frame. From e16daeed238c140754642388ffa6d7988884382e Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 13 Apr 2012 13:17:57 +0200 Subject: [PATCH 473/488] added GetSpell script function --- apps/openmw/mwscript/docs/vmformat.txt | 4 ++- apps/openmw/mwscript/statsextensions.cpp | 32 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 705d65814d..1317794fa8 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -133,4 +133,6 @@ op 0x2000147: AddSpell op 0x2000148: AddSpell, explicit reference op 0x2000149: RemoveSpell op 0x200014a: RemoveSpell, explicit reference -opcodes 0x200014b-0x3ffffff unused +op 0x200014b: GetSpell +op 0x200014c: GetSpell, explicit reference +opcodes 0x200014d-0x3ffffff unused diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 10641903ee..011b8b010f 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -312,6 +312,33 @@ namespace MWScript } }; + template + class OpGetSpell : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + MWWorld::Ptr ptr = R()(runtime); + + std::string id = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + + Interpreter::Type_Integer value = 0; + + for (MWMechanics::Spells::TIterator iter ( + MWWorld::Class::get (ptr).getCreatureStats (ptr).mSpells.begin()); + iter!=MWWorld::Class::get (ptr).getCreatureStats (ptr).mSpells.end(); ++iter) + if (*iter==id) + { + value = 1; + break; + } + + runtime.push (value); + } + }; + const int numberOfAttributes = 8; const int opcodeGetAttribute = 0x2000027; @@ -347,6 +374,8 @@ namespace MWScript const int opcodeAddSpellExplicit = 0x2000148; const int opcodeRemoveSpell = 0x2000149; const int opcodeRemoveSpellExplicit = 0x200014a; + const int opcodeGetSpell = 0x200014b; + const int opcodeGetSpellExplicit = 0x200014c; void registerExtensions (Compiler::Extensions& extensions) { @@ -422,6 +451,7 @@ namespace MWScript extensions.registerInstruction ("addspell", "c", opcodeAddSpell, opcodeAddSpellExplicit); extensions.registerInstruction ("removespell", "c", opcodeRemoveSpell, opcodeRemoveSpellExplicit); + extensions.registerFunction ("getspell", 'l', "c", opcodeGetSpell, opcodeGetSpellExplicit); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -483,6 +513,8 @@ namespace MWScript interpreter.installSegment5 (opcodeRemoveSpell, new OpRemoveSpell); interpreter.installSegment5 (opcodeRemoveSpellExplicit, new OpRemoveSpell); + interpreter.installSegment5 (opcodeGetSpell, new OpGetSpell); + interpreter.installSegment5 (opcodeGetSpellExplicit, new OpGetSpell); } } } From a33ae35e9487913454e87797425307375dc8aefb Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 13 Apr 2012 13:28:31 +0200 Subject: [PATCH 474/488] some fixes --- apps/openmw/mwrender/renderingmanager.cpp | 3 ++- apps/openmw/mwrender/terrainmaterial.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index ee60407b24..984b7ddc91 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -56,6 +56,8 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const const RenderSystemCapabilities* caps = Root::getSingleton().getRenderSystem()->getCapabilities(); if (caps->getNumMultiRenderTargets() < 2) Settings::Manager::setBool("shader", "Water", false); + if (!caps->isShaderProfileSupported("fp40") && !caps->isShaderProfileSupported("ps_4_0")) + Settings::Manager::setBool("enabled", "Shadows", false); // note that the order is important here if (useMRT()) @@ -108,7 +110,6 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const RenderingManager::~RenderingManager () { - //TODO: destroy mSun? delete mPlayer; delete mSkyManager; delete mDebugging; diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 57bea5388e..c69ed3a613 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -1339,7 +1339,13 @@ namespace Ogre // diffuse lighting for (int i=0; igetNumberOfLightsSupported(); ++i) + { + // shadows only for first light (directional) + if (i==0) outStream << " outputCol.rgb += litRes"<isLayerSpecularMappingEnabled()) From 3442ef17a8ee4dc37d74f63dcd0c95843179ab2b Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 13 Apr 2012 14:54:13 +0200 Subject: [PATCH 475/488] fixed ModDisposition --- apps/openmw/mwscript/docs/vmformat.txt | 3 ++- apps/openmw/mwscript/statsextensions.cpp | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 17f11d3a96..fda8d1954b 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -139,4 +139,5 @@ op 0x200014a: RemoveSpell, explicit reference op 0x200014b: GetSpell op 0x200014c: GetSpell, explicit reference op 0x200014d: ModDisposition -opcodes 0x200014e-0x3ffffff unused +op 0x200014e: ModDisposition, explicit reference +opcodes 0x200014f-0x3ffffff unused diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index f7a4e5d86e..9d30098703 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -435,13 +435,19 @@ namespace MWScript } }; + template class OpModDisposition : public Interpreter::Opcode0 { public: virtual void execute (Interpreter::Runtime& runtime) { + MWWorld::Ptr ptr = R()(runtime); +// Interpreter::Type_Integer value = runtime[0].mInteger; + runtime.pop(); + + /// \todo modify disposition towards the player } }; @@ -487,6 +493,7 @@ namespace MWScript const int opcodePCLowerRank = 0x2000c; const int opcodePCJoinFaction = 0x2000d; const int opcodeModDisposition = 0x200014d; + const int opcodeModDispositionExplicit = 0x200014e; void registerExtensions (Compiler::Extensions& extensions) { @@ -567,7 +574,8 @@ namespace MWScript extensions.registerInstruction("pcraiserank","/S",opcodePCRaiseRank); extensions.registerInstruction("pclowerrank","/S",opcodePCLowerRank); extensions.registerInstruction("pcjoinfaction","/S",opcodePCJoinFaction); - extensions.registerInstruction("moddisposition","l",opcodeModDisposition); + extensions.registerInstruction("moddisposition","l",opcodeModDisposition, + opcodeModDispositionExplicit); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -635,7 +643,8 @@ namespace MWScript interpreter.installSegment3(opcodePCRaiseRank,new OpPCRaiseRank); interpreter.installSegment3(opcodePCLowerRank,new OpPCLowerRank); interpreter.installSegment3(opcodePCJoinFaction,new OpPCJoinFaction); - interpreter.installSegment5(opcodeModDisposition,new OpModDisposition); + interpreter.installSegment5(opcodeModDisposition,new OpModDisposition); + interpreter.installSegment5(opcodeModDispositionExplicit,new OpModDisposition); } } } From 0c6862e3e6469ade34ed6d994ffa92e2bcc90ff3 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Fri, 13 Apr 2012 15:09:38 +0200 Subject: [PATCH 476/488] Undefining some windows defines --- apps/openmw/mwmechanics/drawstate.hpp | 2 ++ apps/openmw/mwrender/terrainmaterial.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/apps/openmw/mwmechanics/drawstate.hpp b/apps/openmw/mwmechanics/drawstate.hpp index ded25f8d5d..772086d90a 100644 --- a/apps/openmw/mwmechanics/drawstate.hpp +++ b/apps/openmw/mwmechanics/drawstate.hpp @@ -1,6 +1,8 @@ #ifndef GAME_MWMECHANICS_DRAWSTATE_H #define GAME_MWMECHANICS_DRAWSTATE_H +#undef DrawState + enum DrawState { DrawState_Weapon = 0, diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 57bea5388e..331bb47e32 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -39,6 +39,8 @@ THE SOFTWARE. #include #include "renderingmanager.hpp" +#undef far + namespace Ogre { //--------------------------------------------------------------------- From 226f312163593db2d46dce2c1886b8b365e03650 Mon Sep 17 00:00:00 2001 From: k1ll Date: Fri, 13 Apr 2012 17:36:31 +0200 Subject: [PATCH 477/488] Set the version in the openmw.desktop file via CMake --- CMakeLists.txt | 3 +++ files/openmw.desktop | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f3ca740af9..286d0f743b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -244,6 +244,9 @@ endif (WIN32) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") configure_file(${OpenMW_SOURCE_DIR}/files/plugins.cfg.linux "${OpenMW_BINARY_DIR}/plugins.cfg") + + configure_file(${OpenMW_SOURCE_DIR}/files/openmw.desktop + "${OpenMW_BINARY_DIR}/openmw.desktop") endif() if (APPLE) diff --git a/files/openmw.desktop b/files/openmw.desktop index 8643d4b138..234f660c62 100644 --- a/files/openmw.desktop +++ b/files/openmw.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=0.11 +Version=${OPENMW_VERSION} Type=Application Name=OpenMW Launcher GenericName=Role Playing Game From dc2751f4ec40cec649797e76c7e002a371d965fb Mon Sep 17 00:00:00 2001 From: k1ll Date: Fri, 13 Apr 2012 17:39:46 +0200 Subject: [PATCH 478/488] Moved Build options to the top. I need this for my tar.gz packages but i think this is a good idea in general. --- CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 286d0f743b..d67d3eb5f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,11 @@ configure_file ("${OpenMW_SOURCE_DIR}/Docs/mainpage.hpp.cmake" "${OpenMW_SOURCE_ option(MYGUI_STATIC "Link static build of Mygui into the binaries" FALSE) option(OGRE_STATIC "Link static build of Ogre and Ogre Plugins into the binaries" FALSE) +# Apps and tools +option(BUILD_ESMTOOL "build ESM inspector" ON) +option(BUILD_LAUNCHER "build Launcher" ON) +option(BUILD_MWINIIMPORTER "build MWiniImporter" ON) + # Sound source selection option(USE_FFMPEG "use ffmpeg for sound" OFF) option(USE_AUDIERE "use audiere for sound" OFF) @@ -416,17 +421,14 @@ add_subdirectory (components) # Apps and tools add_subdirectory( apps/openmw ) -option(BUILD_ESMTOOL "build ESM inspector" ON) if (BUILD_ESMTOOL) add_subdirectory( apps/esmtool ) endif() -option(BUILD_LAUNCHER "build Launcher inspector" ON) if (BUILD_LAUNCHER) add_subdirectory( apps/launcher ) endif() -option(BUILD_MWINIIMPORTER "build MWiniImporter inspector" ON) if (BUILD_MWINIIMPORTER) add_subdirectory( apps/mwiniimporter ) endif() From 2d6cd162966f69501ebc8c5f428f8ca4fa382400 Mon Sep 17 00:00:00 2001 From: k1ll Date: Fri, 13 Apr 2012 17:53:01 +0200 Subject: [PATCH 479/488] Now Debian Packages install the configured openmw.desktop file. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d67d3eb5f9..9969747d36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -315,7 +315,7 @@ if(DPKG_PROGRAM) endif() #Install icon and desktop file - INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/openmw.desktop" DESTINATION "share/applications/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") + INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw.desktop" DESTINATION "share/applications/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") INSTALL(FILES "${OpenMW_SOURCE_DIR}/apps/launcher/resources/images/openmw.png" DESTINATION "share/pixmaps/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") #Install global configuration files From 8156e9e5c4022db029213f04e5e62eb8958dac8a Mon Sep 17 00:00:00 2001 From: k1ll Date: Fri, 13 Apr 2012 18:20:49 +0200 Subject: [PATCH 480/488] Fixed install search path for openmw.desktop. It's directly in the binary dir. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9969747d36..442710a02c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -315,7 +315,7 @@ if(DPKG_PROGRAM) endif() #Install icon and desktop file - INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw.desktop" DESTINATION "share/applications/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") + INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.desktop" DESTINATION "share/applications/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") INSTALL(FILES "${OpenMW_SOURCE_DIR}/apps/launcher/resources/images/openmw.png" DESTINATION "share/pixmaps/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") #Install global configuration files From 52b0b28c78f1423c463cfbb390bb1a1f3f6d2161 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 13 Apr 2012 19:20:59 +0200 Subject: [PATCH 481/488] fixed the mygui output on console --- libs/openengine/gui/manager.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libs/openengine/gui/manager.cpp b/libs/openengine/gui/manager.cpp index 2d84ac8045..1bf8ec3257 100644 --- a/libs/openengine/gui/manager.cpp +++ b/libs/openengine/gui/manager.cpp @@ -18,7 +18,6 @@ void MyGUIManager::setup(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool // manager before the main gui system itself, otherwise the main // object will get the chance to spit out a few messages before we // can able to disable it. - /// \todo - can't avoid this with MyGUI 3.2? std::string theLogFile = std::string(MYGUI_PLATFORM_LOG_FILENAME); if(!logDir.empty()) @@ -26,9 +25,9 @@ void MyGUIManager::setup(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool // Set up OGRE platform. We might make this more generic later. mPlatform = new OgrePlatform(); + LogManager::getInstance().setSTDOutputEnabled(logging); mPlatform->initialise(wnd, mgr, "General", theLogFile); - LogManager::getInstance().setSTDOutputEnabled(logging); // Create GUI mGui = new Gui(); From e04d127f30817dfbe02eebe9cc65f358515cfe59 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 14 Apr 2012 15:10:26 +0200 Subject: [PATCH 482/488] terrain shader fixes --- apps/openmw/mwrender/terrainmaterial.cpp | 68 +++++++++--------------- 1 file changed, 26 insertions(+), 42 deletions(-) diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 331bb47e32..7ed2a703b3 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -540,7 +540,6 @@ namespace Ogre params->setNamedAutoConstant("viewProjMatrix", GpuProgramParameters::ACT_VIEWPROJ_MATRIX); params->setNamedAutoConstant("lodMorph", GpuProgramParameters::ACT_CUSTOM, Terrain::LOD_MORPH_CUSTOM_PARAM); - params->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); if (prof->isShadowingEnabled(tt, terrain)) { @@ -576,7 +575,7 @@ namespace Ogre { params->setNamedAutoConstant("lightPosObjSpace"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, i); params->setNamedAutoConstant("lightDiffuseColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, i); - if (prof->getNumberOfLightsSupported() > 1) + if (i > 0) params->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); //params->setNamedAutoConstant("lightSpecularColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR, i); } @@ -586,6 +585,7 @@ namespace Ogre params->setNamedAutoConstant("eyePosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); params->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); + params->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); if (prof->isShadowingEnabled(tt, terrain)) { @@ -813,11 +813,11 @@ namespace Ogre outStream << "out float4 oPos : POSITION,\n" - "out float4 oPosObj : COLOR \n"; + "out float4 oPosObj : TEXCOORD0 \n"; - uint texCoordSet = 0; + uint texCoordSet = 1; outStream << - ", out float4 oUVMisc : TEXCOORD" << texCoordSet++ <<" // xy = uv, z = camDepth\n"; + ", out float4 oUVMisc : COLOR0 // xy = uv, z = camDepth\n"; // layer UV's premultiplied, packed as xy/zw uint numUVSets = numLayers / 2; @@ -837,14 +837,6 @@ namespace Ogre outStream << ", out float2 lodInfo : TEXCOORD" << texCoordSet++ << "\n"; } - bool fog = terrain->getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; - if (fog) - { - outStream << - ", uniform float4 fogParams\n"; - //", out float fogVal : COLOR\n"; - } - if (prof->isShadowingEnabled(tt, terrain)) { texCoordSet = generateVpDynamicShadowsParams(texCoordSet, prof, terrain, tt, outStream); @@ -940,11 +932,11 @@ namespace Ogre outStream << "void main_fp(\n" - "float4 position : COLOR,\n"; + "float4 position : TEXCOORD0,\n"; - uint texCoordSet = 0; + uint texCoordSet = 1; outStream << - "float4 uvMisc : TEXCOORD" << texCoordSet++ << ",\n"; + "float4 uvMisc : COLOR0,\n"; // UV's premultiplied, packed as xy/zw uint maxLayers = prof->getMaxLayers(terrain); @@ -971,8 +963,8 @@ namespace Ogre if (fog) { outStream << + "uniform float4 fogParams, \n" "uniform float3 fogColour, \n"; - //"float fogVal : COLOR,\n"; } uint currentSamplerIdx = 0; @@ -991,7 +983,7 @@ namespace Ogre //"uniform float3 lightSpecularColour"<getNumberOfLightsSupported() > 1) + if (i > 0) outStream << "uniform float4 lightAttenuation"<getNumberOfLightsSupported() > 1) + if (i > 0) outStream << // pre-multiply light color with attenuation factor "d = length( lightDir"<getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; - if (fog) - { - if (terrain->getSceneManager()->getFogMode() == FOG_LINEAR) - { - outStream << - " float fogVal = saturate((oPos.z - fogParams.y) * fogParams.w);\n"; - } - else - { - outStream << - " float fogVal = saturate(1 / (exp(oPos.z * fogParams.x)));\n"; - } - outStream << - " oPosObj.w = fogVal; \n"; - } + " oPosObj.w = oPos.z;\n"; if (prof->isShadowingEnabled(tt, terrain)) generateVpDynamicShadows(prof, terrain, tt, outStream); @@ -1369,6 +1343,16 @@ namespace Ogre bool fog = terrain->getSceneManager()->getFogMode() != FOG_NONE && tt != RENDER_COMPOSITE_MAP; if (fog) { + if (terrain->getSceneManager()->getFogMode() == FOG_LINEAR) + { + outStream << + " float fogVal = saturate((position.w - fogParams.y) * fogParams.w);\n"; + } + else + { + outStream << + " float fogVal = saturate(1 / (exp(position.w * fogParams.x)));\n"; + } outStream << " outputCol.rgb = lerp(outputCol.rgb, fogColour, fogVal);\n"; } @@ -1376,7 +1360,7 @@ namespace Ogre outStream << " oColor = outputCol;\n"; if (MWRender::RenderingManager::useMRT()) outStream << - " oColor1 = float4(uvMisc.z / far, 0, 0, 1); \n"; + " oColor1 = float4(position.w / far, 0, 0, 1); \n"; outStream << "}\n"; @@ -1585,7 +1569,7 @@ namespace Ogre { uint numTextures = prof->getReceiveDynamicShadowsPSSM()->getSplitCount(); outStream << - " float camDepth = uvMisc.z;\n"; + " float camDepth = position.w;\n"; if (prof->getReceiveDynamicShadowsDepth()) { @@ -1629,8 +1613,8 @@ namespace Ogre outStream << " float fadeRange = shadowFar_fadeStart.x - shadowFar_fadeStart.y; \n" - " float fade = 1-((uvMisc.z - shadowFar_fadeStart.y) / fadeRange); \n" - " rtshadow = (uvMisc.z > shadowFar_fadeStart.x) ? 1 : ((uvMisc.z > shadowFar_fadeStart.y) ? 1-((1-rtshadow)*fade) : rtshadow); \n" + " float fade = 1-((position.w - shadowFar_fadeStart.y) / fadeRange); \n" + " rtshadow = (position.w > shadowFar_fadeStart.x) ? 1 : ((position.w > shadowFar_fadeStart.y) ? 1-((1-rtshadow)*fade) : rtshadow); \n" " rtshadow = (1-(1-rtshadow)*0.6); \n" // make the shadow a little less intensive " shadow = min(shadow, rtshadow);\n"; From fa5a1432c9817238245be20ec3ee17ec3107c3f9 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 14 Apr 2012 15:58:58 +0200 Subject: [PATCH 483/488] map lighting tweak, default settings tweak --- apps/openmw/mwrender/renderingmanager.cpp | 2 ++ files/settings-default.cfg | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 984b7ddc91..c1462807fc 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -482,11 +482,13 @@ void RenderingManager::preCellChange(MWWorld::Ptr::CellStore* cell) void RenderingManager::disableLights() { mObjects.disableLights(); + sunDisable(); } void RenderingManager::enableLights() { mObjects.enableLights(); + sunEnable(); } const bool RenderingManager::useMRT() diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 4d2d46fca1..553a82e497 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -93,7 +93,7 @@ rtt size = 512 reflect terrain = true reflect statics = false reflect small statics = false -reflect actors = true +reflect actors = false reflect misc = false # Enable underwater effect. It is not resource intensive, so only disable it if you have problems. From 4b0099fb5b1c90214a14e0d387d52a2ed2668c0f Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 14 Apr 2012 16:10:47 +0200 Subject: [PATCH 484/488] npc visibility flags fix --- apps/openmw/mwrender/npcanimation.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/npcanimation.cpp b/apps/openmw/mwrender/npcanimation.cpp index 9de5705e3f..a231e8fe77 100644 --- a/apps/openmw/mwrender/npcanimation.cpp +++ b/apps/openmw/mwrender/npcanimation.cpp @@ -240,6 +240,7 @@ Ogre::Entity* NpcAnimation::insertBoundedPart(const std::string &mesh, std::stri NIFLoader::load(mesh); Entity* ent = mRend.getScene()->createEntity(mesh); + ent->setVisibilityFlags(RV_Actors); base->attachObjectToBone(bonename, ent); return ent; @@ -249,9 +250,7 @@ void NpcAnimation::insertFreePart(const std::string &mesh, const std::string suf NIFLoader::load(meshNumbered); Ogre::Entity* ent = mRend.getScene()->createEntity(meshNumbered); - - - + ent->setVisibilityFlags(RV_Actors); insert->attachObject(ent); entityparts.push_back(ent); From 45a5877b235e6e41841e83554ada94b0186b9000 Mon Sep 17 00:00:00 2001 From: gugus Date: Sun, 15 Apr 2012 12:05:46 +0200 Subject: [PATCH 485/488] implement getPCRank. Does not work yet. --- apps/openmw/mwscript/docs/vmformat.txt | 6 ++- apps/openmw/mwscript/statsextensions.cpp | 53 ++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index fda8d1954b..c38ff611ca 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -26,8 +26,10 @@ op 0x20009: LoopAnim, explicit reference op 0x2000a: Choice op 0x2000b: PCRaiseRank op 0x2000c: PCLowerRank -op x20000d: PCJoinFaction -opcodes 0x2000e-0x3ffff unused +op 0x2000d: PCJoinFaction +op 0x2000e: PCGetRank implicit +op 0x2000f: PCGetRank explicit +opcodes 0x20010-0x3ffff unused Segment 4: (not implemented yet) diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 9d30098703..727b2d0e14 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -435,6 +435,54 @@ namespace MWScript } }; + template + class OpGetPCRank : public Interpreter::Opcode1 + { + public: + + virtual void execute (Interpreter::Runtime& runtime, unsigned int arg0) + { + MWWorld::Ptr ptr = R()(runtime); + runtime.pop(); + + std::string factionID = ""; + if(arg0 >0) + { + factionID = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + } + else + { + if(MWWorld::Class::get(ptr).getNpcStats(ptr).mFactionRank.empty()) + { + //throw exception? + } + else + { + factionID = MWWorld::Class::get(ptr).getNpcStats(ptr).mFactionRank.begin()->first; + } + } + MWScript::InterpreterContext& context + = static_cast (runtime.getContext()); + MWWorld::Ptr player = context.getEnvironment().mWorld->getPlayer().getPlayer(); + if(factionID!="") + { + if(MWWorld::Class::get(player).getNpcStats(player).mFactionRank.find(factionID) != MWWorld::Class::get(player).getNpcStats(player).mFactionRank.end()) + { + runtime.push(MWWorld::Class::get(player).getNpcStats(player).mFactionRank[factionID]); + } + else + { + runtime.push(-1); + } + } + else + { + runtime.push(-1); + } + } + }; + template class OpModDisposition : public Interpreter::Opcode0 { @@ -492,6 +540,8 @@ namespace MWScript const int opcodePCRaiseRank = 0x2000b; const int opcodePCLowerRank = 0x2000c; const int opcodePCJoinFaction = 0x2000d; + const int opcodeGetPCRank = 0x2000e; + const int opcodeGetPCRankExplicit = 0x2000f; const int opcodeModDisposition = 0x200014d; const int opcodeModDispositionExplicit = 0x200014e; @@ -576,6 +626,7 @@ namespace MWScript extensions.registerInstruction("pcjoinfaction","/S",opcodePCJoinFaction); extensions.registerInstruction("moddisposition","l",opcodeModDisposition, opcodeModDispositionExplicit); + extensions.registerFunction("getpcrank",'l',"/S",opcodeGetPCRank,opcodeGetPCRankExplicit); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -645,6 +696,8 @@ namespace MWScript interpreter.installSegment3(opcodePCJoinFaction,new OpPCJoinFaction); interpreter.installSegment5(opcodeModDisposition,new OpModDisposition); interpreter.installSegment5(opcodeModDispositionExplicit,new OpModDisposition); + interpreter.installSegment3(opcodeGetPCRank,new OpGetPCRank); + interpreter.installSegment3(opcodeGetPCRankExplicit,new OpGetPCRank); } } } From f68248e0d0800d37a18afde61fa2380ec79dccd4 Mon Sep 17 00:00:00 2001 From: gugus Date: Sun, 15 Apr 2012 14:20:08 +0200 Subject: [PATCH 486/488] corrected a bug in getPCRank --- apps/openmw/mwscript/statsextensions.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 727b2d0e14..239f8d7682 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -443,7 +443,6 @@ namespace MWScript virtual void execute (Interpreter::Runtime& runtime, unsigned int arg0) { MWWorld::Ptr ptr = R()(runtime); - runtime.pop(); std::string factionID = ""; if(arg0 >0) From c24a85848f0d162b76c320465e524883e8124d07 Mon Sep 17 00:00:00 2001 From: gugus Date: Sun, 15 Apr 2012 15:56:36 +0200 Subject: [PATCH 487/488] forceGreeting script instruction --- apps/openmw/mwscript/dialogueextensions.cpp | 17 +++++++++++++++++ apps/openmw/mwscript/docs/vmformat.txt | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwscript/dialogueextensions.cpp b/apps/openmw/mwscript/dialogueextensions.cpp index 0cca028e29..178485f789 100644 --- a/apps/openmw/mwscript/dialogueextensions.cpp +++ b/apps/openmw/mwscript/dialogueextensions.cpp @@ -11,6 +11,7 @@ #include "../mwdialogue/dialoguemanager.hpp" #include "interpretercontext.hpp" +#include "ref.hpp" namespace MWScript { @@ -115,12 +116,26 @@ namespace MWScript } }; + template + class OpForceGreeting : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + MWWorld::Ptr ptr = R()(runtime); + MWScript::InterpreterContext& context + = static_cast (runtime.getContext()); + context.getEnvironment().mDialogueManager->startDialogue (ptr); + } + }; const int opcodeJournal = 0x2000133; const int opcodeSetJournalIndex = 0x2000134; const int opcodeGetJournalIndex = 0x2000135; const int opcodeAddTopic = 0x200013a; const int opcodeChoice = 0x2000a; + const int opcodeForceGreeting = 0x200014f; void registerExtensions (Compiler::Extensions& extensions) { @@ -129,6 +144,7 @@ namespace MWScript extensions.registerFunction ("getjournalindex", 'l', "c", opcodeGetJournalIndex); extensions.registerInstruction ("addtopic", "S" , opcodeAddTopic); extensions.registerInstruction ("choice", "/SlSlSlSlSlSlSlSlSlSlSlSlSlSlSlSl", opcodeChoice); + extensions.registerInstruction("forcegreeting","",-1,opcodeForceGreeting); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -138,6 +154,7 @@ namespace MWScript interpreter.installSegment5 (opcodeGetJournalIndex, new OpGetJournalIndex); interpreter.installSegment5 (opcodeAddTopic, new OpAddTopic); interpreter.installSegment3 (opcodeChoice,new OpChoice); + interpreter.installSegment5 (opcodeForceGreeting, new OpForceGreeting); } } diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index c38ff611ca..9155746edb 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -142,4 +142,5 @@ op 0x200014b: GetSpell op 0x200014c: GetSpell, explicit reference op 0x200014d: ModDisposition op 0x200014e: ModDisposition, explicit reference -opcodes 0x200014f-0x3ffffff unused +op 0x200014f: ForceGreeting +opcodes 0x200015-0x3ffffff unused From b5d12d0723731a39ef6ce1bf61c669bf47957bc1 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 15 Apr 2012 17:08:22 +0200 Subject: [PATCH 488/488] fixed ForceGreeting --- apps/openmw/mwscript/dialogueextensions.cpp | 8 ++++++-- apps/openmw/mwscript/docs/vmformat.txt | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwscript/dialogueextensions.cpp b/apps/openmw/mwscript/dialogueextensions.cpp index 178485f789..fec539d3e3 100644 --- a/apps/openmw/mwscript/dialogueextensions.cpp +++ b/apps/openmw/mwscript/dialogueextensions.cpp @@ -136,6 +136,7 @@ namespace MWScript const int opcodeAddTopic = 0x200013a; const int opcodeChoice = 0x2000a; const int opcodeForceGreeting = 0x200014f; + const int opcodeForceGreetingExplicit = 0x2000150; void registerExtensions (Compiler::Extensions& extensions) { @@ -144,7 +145,9 @@ namespace MWScript extensions.registerFunction ("getjournalindex", 'l', "c", opcodeGetJournalIndex); extensions.registerInstruction ("addtopic", "S" , opcodeAddTopic); extensions.registerInstruction ("choice", "/SlSlSlSlSlSlSlSlSlSlSlSlSlSlSlSl", opcodeChoice); - extensions.registerInstruction("forcegreeting","",-1,opcodeForceGreeting); + extensions.registerInstruction("forcegreeting","",opcodeForceGreeting); + extensions.registerInstruction("forcegreeting","",opcodeForceGreeting, + opcodeForceGreetingExplicit); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -154,7 +157,8 @@ namespace MWScript interpreter.installSegment5 (opcodeGetJournalIndex, new OpGetJournalIndex); interpreter.installSegment5 (opcodeAddTopic, new OpAddTopic); interpreter.installSegment3 (opcodeChoice,new OpChoice); - interpreter.installSegment5 (opcodeForceGreeting, new OpForceGreeting); + interpreter.installSegment5 (opcodeForceGreeting, new OpForceGreeting); + interpreter.installSegment5 (opcodeForceGreetingExplicit, new OpForceGreeting); } } diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 9155746edb..58960aac47 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -143,4 +143,5 @@ op 0x200014c: GetSpell, explicit reference op 0x200014d: ModDisposition op 0x200014e: ModDisposition, explicit reference op 0x200014f: ForceGreeting -opcodes 0x200015-0x3ffffff unused +op 0x2000150: ForceGreeting, explicit reference +opcodes 0x2000151-0x3ffffff unused

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

9a9|M;L_hI#@67L^XBUgs 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%0D4s@m-U$n5-wV*15 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 z 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

EB9sUG}8=kp4jK} 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⪕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 diff --git a/files/water/water.material b/files/water/water.material deleted file mode 100644 index 9929feabc3..0000000000 --- a/files/water/water.material +++ /dev/null @@ -1,217 +0,0 @@ -// Derived from ogre samples - - -vertex_program Water/GlassVP cg -{ - source GlassVP.cg - entry_point glass_vp - profiles vs_1_1 arbvp1 - - default_params - { - param_named_auto worldViewProj worldviewproj_matrix - } -} - - -fragment_program Water/GlassFP cg -{ - source GlassFP.cg - entry_point main_ps - profiles ps_2_0 arbfp1 -} - -material Water/Compositor -{ - technique - { - pass - { - depth_check off - - vertex_program_ref Water/GlassVP - { - param_named_auto timeVal time 0.25 - param_named scale float 0.1 - } - - fragment_program_ref Water/GlassFP - { - param_named tintColour float4 0 0.35 0.35 1 - } - - texture_unit RT - { - tex_coord_set 0 - tex_address_mode clamp - filtering linear linear linear - } - - texture_unit - { - texture WaterNormal1.tga 2d - tex_coord_set 1 - //tex_address_mode clamp - filtering linear linear linear - } - texture_unit - { - texture caustic_0.png 2d - tex_coord_set 2 - //tex_address_mode clamp - filtering linear linear linear - } - } - } -} - - - - - - - -vertex_program Water/RefractReflectVP cg -{ - source Example_Fresnel.cg - entry_point main_vp - profiles vs_1_1 arbvp1 -} -vertex_program Water/RefractReflectVPold cg -{ - source Example_Fresnel.cg - entry_point main_vp_old - profiles vs_1_1 arbvp1 -} - -fragment_program Water/RefractReflectFP cg -{ - source Example_Fresnel.cg - entry_point main_fp - // sorry, ps_1_1 and fp20 can't do this - profiles ps_2_0 arbfp1 -} - -fragment_program Water/RefractReflectPS asm -{ - source Example_FresnelPS.asm - // sorry, only for ps_1_4 :) - syntax ps_1_4 - -} - - -material Water/ReflectionRefraction -{ - // ps_2_0 / arbfp1 - technique - { - pass - { - - vertex_program_ref Water/RefractReflectVP - { - param_named_auto worldViewProjMatrix worldviewproj_matrix - param_named_auto eyePosition camera_position_object_space - param_named_auto timeVal time 0.15 - param_named scroll float 1 - param_named scale float 1 - param_named noise float 1 - // scroll and noisePos will need updating per frame - } - fragment_program_ref Water/RefractReflectFP - { - param_named fresnelBias float -0.1 - param_named fresnelScale float 0.8 - param_named fresnelPower float 20 - param_named tintColour float4 0 0.15 0.15 1 - param_named noiseScale float 0.05 - } - // Water - texture_unit - { - // Water texture - texture Water02.jpg - // min / mag filtering, no mip - filtering linear linear none - } - // Noise - texture_unit - { - // Perlin noise volume - texture waves2.dds - // min / mag filtering, no mip - filtering linear linear none - } - // Reflection - texture_unit - { - // Will be filled in at runtime - texture reflection - tex_address_mode clamp - } - // Refraction - texture_unit - { - // Will be filled in at runtime - texture refraction - tex_address_mode clamp - } - } - - - } - - // ATI 8500 + - technique - { - pass - { - vertex_program_ref Water/RefractReflectVPold - { - param_named_auto worldViewProjMatrix worldviewproj_matrix - param_named_auto eyePosition camera_position_object_space - param_named fresnelBias float -0.3 - param_named fresnelScale float 1.4 - param_named fresnelPower float 8 - param_named_auto timeVal time_0_1 20 - param_named scroll float 1 - param_named scale float 4 - param_named noise float 1 - // scroll and noisePos will need updating per frame - } - - // for ATI RADEON 8500 - 9200 - fragment_program_ref Water/RefractReflectPS - { - // distortionRange - param_indexed 0 float 0.025 - // tintColour - param_indexed 1 float4 0.05 0.12 0.15 1 - } - - // Noise - texture_unit - { - // Perlin noise volume - texture perlinvolume.dds 3d - // min / mag filtering, no mip - filtering linear linear none - } - // Reflection - texture_unit - { - // Will be filled in at runtime - texture Reflection - tex_address_mode clamp - } - // Refraction - texture_unit - { - // Will be filled in at runtime - texture Refraction - tex_address_mode clamp - } - } - } -} diff --git a/files/water/water1.cg b/files/water/water1.cg deleted file mode 100644 index f8fa18c1a6..0000000000 --- a/files/water/water1.cg +++ /dev/null @@ -1,39 +0,0 @@ -void main( in float4 fresnel : COLOR0, - in float4 inTex0 : TEXCOORD0, - in float4 inTex1 : TEXCOORD1, - in float4 inTex2 : TEXCOORD2, - in float4 inTex3 : TEXCOORD3, - in float4 inTex4 : COLOR1, - in float4 inTex5 : BCOL1, - out float4 outCol : COLOR, - uniform float4 matrix, - uniform sampler2D offsetTexture : texunit0, - uniform sampler2D reflexTexture : texunit1, - uniform sampler2D refractTexture : texunit2, - uniform sampler2D depthTexture : texunit3) -{ - float4 norm = tex2D(offsetTexture, inTex0.xy); - float4 refr = tex2D(depthTexture, inTex3.xy); - - float4 norm2 = tex2D(offsetTexture, inTex0.xy/10.0f); - - float4 projCoord = inTex1 / inTex1.w; - projCoord = (projCoord + 1.0) * 0.5; - projCoord += norm * 0.02; - projCoord = clamp(projCoord, 0.001, 0.999); - - float4 reflexe = tex2D(reflexTexture, projCoord.xy); - float4 refrakce = tex2D(refractTexture, projCoord.xy); - - float4 odrazy = reflexe*(0.7+0.3*refr); - - reflexe = (float4(0,0.4,0.4,1.0) + reflexe*0.5); - - outCol = lerp(refrakce, reflexe, fresnel.r)-refr*0.08; - -//outCol = lerp(refrakce, reflexe, fresnel.r); - -// outCol = norm; - - outCol.a = 1; -} \ No newline at end of file From f2093a51db22d17368ad85230d6a075d87bbea7d Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Sun, 18 Mar 2012 22:38:07 -0400 Subject: [PATCH 092/488] more cleanup --- files/water/Examples-Water.material | 169 ---------------------------- 1 file changed, 169 deletions(-) diff --git a/files/water/Examples-Water.material b/files/water/Examples-Water.material index c09447aa14..2b46d6e08d 100644 --- a/files/water/Examples-Water.material +++ b/files/water/Examples-Water.material @@ -1,10 +1,4 @@ -vertex_program Water/Test cg -{ - source water1.cg - entry_point main - profiles vs_1_1 arbvp1 -} vertex_program Water/GlassVP cg { source GlassVP.cg @@ -152,167 +146,4 @@ material Examples/Water0 } } -material Examples/Water1 -{ - technique - { - pass - { - scene_blend colour_blend - depth_write off - texture_unit - { - texture BeachStones.jpg - scale 0.25 0.25 - } - - texture_unit - { - texture Water01.jpg - env_map spherical - scroll_anim 0.01 0.01 - } - } - } -} -material Examples/Water2 -{ - technique - { - pass - { - scene_blend colour_blend - depth_write off - - texture_unit - { - texture Water01.jpg - scroll_anim 0.01 0.01 - } - } - } -} -material Examples/Water3 -{ - technique - { - pass - { - scene_blend colour_blend - depth_write off - - texture_unit - { - texture Water02.jpg - env_map spherical - scroll_anim 0.01 0.01 - rotate_anim 0.03 - } - } - } -} -material Examples/Water4 -{ - technique - { - pass - { - cull_hardware none - cull_software none - - texture_unit - { - texture Water02.jpg - env_map spherical - scroll_anim 0.01 0.01 - } - } - } -} -material Examples/Water5 -{ - technique - { - pass - { - cull_hardware none - cull_software none - - texture_unit - { - texture BeachStones.jpg - scale 0.25 0.25 - } - - texture_unit - { - texture Water01.jpg - env_map spherical - scroll_anim 0.01 0.01 - } - } - } -} -material Examples/Water6 -{ - technique - { - pass - { - lighting off - - texture_unit - { - cubic_texture cubescene.jpg combinedUVW - tex_address_mode clamp - env_map cubic_reflection - } - } - } -} -material Examples/Water7 -{ - technique - { - pass - { - cull_hardware none - cull_software none - - texture_unit - { - texture BeachStones.jpg - scale 0.25 0.25 - } - - texture_unit - { - cubic_texture cubescene.jpg combinedUVW - tex_address_mode clamp - env_map cubic_reflection - } - } - } -} -material Examples/Water8 -{ - technique - { - pass - { - lighting off - scene_blend add - depth_write off - cull_hardware none - cull_software none - - texture_unit - { - cubic_texture cubescene.jpg combinedUVW - tex_address_mode clamp - env_map cubic_reflection - } - } - } -} From 6a256d399392131293a1ce413b295ddcaca4f31d Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 00:38:56 -0700 Subject: [PATCH 093/488] Make sure the OpenAL stream list is clear before shutting down --- apps/openmw/mwsound/openal_output.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 9d0cd7d566..556c1bb644 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -156,6 +156,13 @@ struct StreamThread { sStreams.erase(iter); sMutex.unlock(); } + + static void removeAll() + { + sMutex.lock(); + sStreams.clear(); + sMutex.unlock(); + } }; StreamThread::StreamVec StreamThread::sStreams; boost::mutex StreamThread::sMutex; @@ -363,6 +370,8 @@ void OpenAL_Output::init(const std::string &devname) void OpenAL_Output::deinit() { + StreamThread::removeAll(); + alcMakeContextCurrent(0); if(mContext) alcDestroyContext(mContext); From e234b901731ef88df22fff5ed710757e2ea73377 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 00:49:52 -0700 Subject: [PATCH 094/488] Use a loop to find the OpenAL format from the decoder format --- apps/openmw/mwsound/openal_output.cpp | 34 +++++++++++++-------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 556c1bb644..71cf33b751 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -25,26 +25,24 @@ static void throwALerror() static ALenum getALFormat(ChannelConfig chans, SampleType type) { - if(chans == ChannelConfig_Mono) + static const struct { + ALenum format; + ChannelConfig chans; + SampleType type; + } fmtlist[] = { + { AL_FORMAT_MONO16, ChannelConfig_Mono, SampleType_Int16 }, + { AL_FORMAT_MONO8, ChannelConfig_Mono, SampleType_UInt8 }, + { AL_FORMAT_STEREO16, ChannelConfig_Stereo, SampleType_Int16 }, + { AL_FORMAT_STEREO8, ChannelConfig_Stereo, SampleType_UInt8 }, + }; + static const size_t fmtlistsize = sizeof(fmtlist)/sizeof(fmtlist[0]); + + for(size_t i = 0;i < fmtlistsize;i++) { - if(type == SampleType_Int16) - return AL_FORMAT_MONO16; - else if(type == SampleType_UInt8) - return AL_FORMAT_MONO8; - else - fail("Unsupported sample type"); + if(fmtlist[i].chans == chans && fmtlist[i].type == type) + return fmtlist[i].format; } - else if(chans == ChannelConfig_Stereo) - { - if(type == SampleType_Int16) - return AL_FORMAT_STEREO16; - else if(type == SampleType_UInt8) - return AL_FORMAT_STEREO8; - else - fail("Unsupported sample type"); - } - else - fail("Unsupported channel config"); + fail("Unsupported sound format"); return AL_NONE; } From 2c27827e4fbb62b4351ca9bef27c2300d3e42baf Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 01:33:33 -0700 Subject: [PATCH 095/488] Add some comment markers to the OpenAL sound classes --- apps/openmw/mwsound/openal_output.cpp | 101 ++++++++++++++------------ 1 file changed, 56 insertions(+), 45 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 71cf33b751..4b07e204fc 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -46,33 +46,9 @@ static ALenum getALFormat(ChannelConfig chans, SampleType type) return AL_NONE; } - -ALuint LoadBuffer(DecoderPtr decoder) -{ - int srate; - ChannelConfig chans; - SampleType type; - ALenum format; - - decoder->getInfo(&srate, &chans, &type); - format = getALFormat(chans, type); - - std::vector data(32768); - size_t got, total = 0; - while((got=decoder->read(&data[total], data.size()-total)) > 0) - { - total += got; - data.resize(total*2); - } - data.resize(total); - - ALuint buf; - alGenBuffers(1, &buf); - alBufferData(buf, format, &data[0], total, srate); - return buf; -} - - +// +// A streaming OpenAL sound. +// class OpenAL_SoundStream : public Sound { static const ALuint sNumBuffers = 4; @@ -100,26 +76,15 @@ public: bool process(); }; -class OpenAL_Sound : public Sound -{ -public: - ALuint mSource; - ALuint mBuffer; - - OpenAL_Sound(ALuint src, ALuint buf); - virtual ~OpenAL_Sound(); - - virtual void stop(); - virtual bool isPlaying(); - virtual void update(const float *pos); -}; - - +// +// A background streaming thread (keeps active streams processed) +// struct StreamThread { typedef std::vector StreamVec; static StreamVec sStreams; static boost::mutex sMutex; + // boost::thread entry point void operator()() { while(1) @@ -243,12 +208,12 @@ void OpenAL_SoundStream::play(float volume, float pitch) void OpenAL_SoundStream::stop() { StreamThread::remove(this); + mIsFinished = true; alSourceStop(mSource); alSourcei(mSource, AL_BUFFER, 0); throwALerror(); // FIXME: Rewind decoder - mIsFinished = true; } bool OpenAL_SoundStream::isPlaying() @@ -311,6 +276,49 @@ bool OpenAL_SoundStream::process() return true; } +// +// A regular OpenAL sound +// +class OpenAL_Sound : public Sound +{ + ALuint mSource; + ALuint mBuffer; + +public: + OpenAL_Sound(ALuint src, ALuint buf); + virtual ~OpenAL_Sound(); + + virtual void stop(); + virtual bool isPlaying(); + virtual void update(const float *pos); + + static ALuint LoadBuffer(DecoderPtr decoder); +}; + +ALuint OpenAL_Sound::LoadBuffer(DecoderPtr decoder) +{ + int srate; + ChannelConfig chans; + SampleType type; + ALenum format; + + decoder->getInfo(&srate, &chans, &type); + format = getALFormat(chans, type); + + std::vector data(32768); + size_t got, total = 0; + while((got=decoder->read(&data[total], data.size()-total)) > 0) + { + total += got; + data.resize(total*2); + } + data.resize(total); + + ALuint buf; + alGenBuffers(1, &buf); + alBufferData(buf, format, &data[0], total, srate); + return buf; +} OpenAL_Sound::OpenAL_Sound(ALuint src, ALuint buf) : mSource(src), mBuffer(buf) @@ -348,6 +356,9 @@ void OpenAL_Sound::update(const float *pos) } +// +// An OpenAL output device +// void OpenAL_Output::init(const std::string &devname) { if(mDevice || mContext) @@ -390,7 +401,7 @@ Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pi ALuint src=0, buf=0; try { - buf = LoadBuffer(decoder); + buf = OpenAL_Sound::LoadBuffer(decoder); decoder->close(); alGenSources(1, &src); throwALerror(); @@ -439,7 +450,7 @@ Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, fl ALuint src=0, buf=0; try { - buf = LoadBuffer(decoder); + buf = OpenAL_Sound::LoadBuffer(decoder); decoder->close(); alGenSources(1, &src); throwALerror(); From 4698e8c0a23f04b7d32920d2089d96cb0c4a6578 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 02:15:08 -0700 Subject: [PATCH 096/488] Make the sound stream thread object per-device --- apps/openmw/mwsound/openal_output.cpp | 83 ++++++++++++++++----------- apps/openmw/mwsound/openal_output.hpp | 9 ++- 2 files changed, 52 insertions(+), 40 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 4b07e204fc..2f993aa010 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -3,6 +3,8 @@ #include #include +#include + #include "openal_output.hpp" #include "sound_decoder.hpp" #include "sound.hpp" @@ -54,6 +56,8 @@ class OpenAL_SoundStream : public Sound static const ALuint sNumBuffers = 4; static const ALuint sBufferSize = 32768; + OpenAL_Output &mOutput; + ALuint mSource; ALuint mBuffers[sNumBuffers]; @@ -65,7 +69,7 @@ class OpenAL_SoundStream : public Sound volatile bool mIsFinished; public: - OpenAL_SoundStream(DecoderPtr decoder); + OpenAL_SoundStream(OpenAL_Output &output, DecoderPtr decoder); virtual ~OpenAL_SoundStream(); virtual void stop(); @@ -79,60 +83,68 @@ public: // // A background streaming thread (keeps active streams processed) // -struct StreamThread { +struct OpenAL_Output::StreamThread { typedef std::vector StreamVec; - static StreamVec sStreams; - static boost::mutex sMutex; + StreamVec mStreams; + boost::mutex mMutex; + boost::thread mThread; + + StreamThread() + : mThread(boost::ref(*this)) + { + } + ~StreamThread() + { + mThread.interrupt(); + } // boost::thread entry point void operator()() { while(1) { - sMutex.lock(); - StreamVec::iterator iter = sStreams.begin(); - while(iter != sStreams.end()) + mMutex.lock(); + StreamVec::iterator iter = mStreams.begin(); + while(iter != mStreams.end()) { if((*iter)->process() == false) - iter = sStreams.erase(iter); + iter = mStreams.erase(iter); else iter++; } - sMutex.unlock(); + mMutex.unlock(); boost::this_thread::sleep(boost::posix_time::milliseconds(20)); } } - static void add(OpenAL_SoundStream *stream) + void add(OpenAL_SoundStream *stream) { - sMutex.lock(); - if(std::find(sStreams.begin(), sStreams.end(), stream) == sStreams.end()) - sStreams.push_back(stream); - sMutex.unlock(); + mMutex.lock(); + if(std::find(mStreams.begin(), mStreams.end(), stream) == mStreams.end()) + mStreams.push_back(stream); + mMutex.unlock(); } - static void remove(OpenAL_SoundStream *stream) + void remove(OpenAL_SoundStream *stream) { - sMutex.lock(); - StreamVec::iterator iter = std::find(sStreams.begin(), sStreams.end(), stream); - if(iter != sStreams.end()) - sStreams.erase(iter); - sMutex.unlock(); + mMutex.lock(); + StreamVec::iterator iter = std::find(mStreams.begin(), mStreams.end(), stream); + if(iter != mStreams.end()) + mStreams.erase(iter); + mMutex.unlock(); } - static void removeAll() + void removeAll() { - sMutex.lock(); - sStreams.clear(); - sMutex.unlock(); + mMutex.lock(); + mStreams.clear(); + mMutex.unlock(); } }; -StreamThread::StreamVec StreamThread::sStreams; -boost::mutex StreamThread::sMutex; -OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) - : mDecoder(decoder), mIsFinished(true) +OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, DecoderPtr decoder) + : mOutput(output), mDecoder(decoder), mIsFinished(true) { throwALerror(); @@ -170,7 +182,7 @@ OpenAL_SoundStream::OpenAL_SoundStream(DecoderPtr decoder) } OpenAL_SoundStream::~OpenAL_SoundStream() { - StreamThread::remove(this); + mOutput.mStreamThread->remove(this); alDeleteSources(1, &mSource); alDeleteBuffers(sNumBuffers, mBuffers); @@ -201,13 +213,13 @@ void OpenAL_SoundStream::play(float volume, float pitch) alSourcePlay(mSource); throwALerror(); - StreamThread::add(this); + mOutput.mStreamThread->add(this); mIsFinished = false; } void OpenAL_SoundStream::stop() { - StreamThread::remove(this); + mOutput.mStreamThread->remove(this); mIsFinished = true; alSourceStop(mSource); @@ -379,7 +391,8 @@ void OpenAL_Output::init(const std::string &devname) void OpenAL_Output::deinit() { - StreamThread::removeAll(); + if(mStreamThread.get() != 0) + mStreamThread->removeAll(); alcMakeContextCurrent(0); if(mContext) @@ -496,7 +509,7 @@ Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float DecoderPtr decoder = mManager.getDecoder(); decoder->open(fname); - sound.reset(new OpenAL_SoundStream(decoder)); + sound.reset(new OpenAL_SoundStream(*this, decoder)); sound->play(volume, pitch); return sound.release(); @@ -517,13 +530,13 @@ void OpenAL_Output::updateListener(const float *pos, const float *atdir, const f OpenAL_Output::OpenAL_Output(SoundManager &mgr) - : Sound_Output(mgr), mDevice(0), mContext(0), mStreamThread(StreamThread()) + : Sound_Output(mgr), mDevice(0), mContext(0), mStreamThread(new StreamThread) { } OpenAL_Output::~OpenAL_Output() { - mStreamThread.interrupt(); + mStreamThread.reset(); deinit(); } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 9a6d7f9d2a..cd6146e39f 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -3,8 +3,6 @@ #include -#include - #include "alc.h" #include "al.h" @@ -13,7 +11,6 @@ namespace MWSound { class SoundManager; - class Sound_Decoder; class Sound; class OpenAL_Output : public Sound_Output @@ -21,8 +18,6 @@ namespace MWSound ALCdevice *mDevice; ALCcontext *mContext; - boost::thread mStreamThread; - virtual void init(const std::string &devname=""); virtual void deinit(); @@ -37,6 +32,10 @@ namespace MWSound OpenAL_Output(SoundManager &mgr); virtual ~OpenAL_Output(); + class StreamThread; + std::auto_ptr mStreamThread; + + friend class OpenAL_SoundStream; friend class SoundManager; }; #ifndef DEFAULT_OUTPUT From 4a0b5b791865dc0b8fb2f666b7868684311ef4ff Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 02:19:13 -0700 Subject: [PATCH 097/488] Increase the sound stream thread sleep time to 50ms --- apps/openmw/mwsound/openal_output.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 2f993aa010..04ae47c72b 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -113,7 +113,7 @@ struct OpenAL_Output::StreamThread { iter++; } mMutex.unlock(); - boost::this_thread::sleep(boost::posix_time::milliseconds(20)); + boost::this_thread::sleep(boost::posix_time::milliseconds(50)); } } From dc6354b2f9edd6880cf460e1365393ec538ca732 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 02:31:40 -0700 Subject: [PATCH 098/488] Add functions to get string names for sample types and channel configs --- apps/openmw/mwsound/openal_output.cpp | 2 +- apps/openmw/mwsound/sound_decoder.hpp | 3 +++ apps/openmw/mwsound/soundmanager.cpp | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 04ae47c72b..81b874dbf8 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -44,7 +44,7 @@ static ALenum getALFormat(ChannelConfig chans, SampleType type) if(fmtlist[i].chans == chans && fmtlist[i].type == type) return fmtlist[i].format; } - fail("Unsupported sound format"); + fail(std::string("Unsupported sound format (")+getChannelConfigName(chans)+", "+getSampleTypeName(type)+")"); return AL_NONE; } diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index e25321a906..957681e93a 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -9,10 +9,13 @@ namespace MWSound SampleType_UInt8, SampleType_Int16 }; + const char *getSampleTypeName(SampleType type); + enum ChannelConfig { ChannelConfig_Mono, ChannelConfig_Stereo }; + const char *getChannelConfigName(ChannelConfig config); class Sound_Decoder { diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 447c860ffb..a263fb1ac0 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -464,4 +464,25 @@ namespace MWSound updateRegionSound(duration); } + + + const char *getSampleTypeName(SampleType type) + { + switch(type) + { + case SampleType_UInt8: return "U8"; + case SampleType_Int16: return "S16"; + } + return "(unknown sample type)"; + } + + const char *getChannelConfigName(ChannelConfig config) + { + switch(config) + { + case ChannelConfig_Mono: return "Mono"; + case ChannelConfig_Stereo: return "Stereo"; + } + return "(unknown channel config)"; + } } From 8f9d4ff841af39f90426b03e9dc738e30cf17b09 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 05:29:04 -0700 Subject: [PATCH 099/488] Use 6 125ms buffers for OpenAL streams --- apps/openmw/mwsound/openal_output.cpp | 12 ++++++++---- apps/openmw/mwsound/sound_decoder.hpp | 3 +++ apps/openmw/mwsound/soundmanager.cpp | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 81b874dbf8..3e07c3f64e 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -53,8 +53,8 @@ static ALenum getALFormat(ChannelConfig chans, SampleType type) // class OpenAL_SoundStream : public Sound { - static const ALuint sNumBuffers = 4; - static const ALuint sBufferSize = 32768; + static const ALuint sNumBuffers = 6; + static const ALfloat sBufferLength = 0.125f; OpenAL_Output &mOutput; @@ -63,6 +63,7 @@ class OpenAL_SoundStream : public Sound ALenum mFormat; ALsizei mSampleRate; + ALuint mBufferSize; DecoderPtr mDecoder; @@ -171,6 +172,9 @@ OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, DecoderPtr decoder mDecoder->getInfo(&srate, &chans, &type); mFormat = getALFormat(chans, type); mSampleRate = srate; + + mBufferSize = static_cast(sBufferLength*srate); + mBufferSize = framesToBytes(mBufferSize, chans, type); } catch(std::exception &e) { @@ -193,7 +197,7 @@ OpenAL_SoundStream::~OpenAL_SoundStream() void OpenAL_SoundStream::play(float volume, float pitch) { - std::vector data(sBufferSize); + std::vector data(mBufferSize); alSourceStop(mSource); alSourcei(mSource, AL_BUFFER, 0); @@ -251,7 +255,7 @@ bool OpenAL_SoundStream::process() if(processed > 0) { - std::vector data(sBufferSize); + std::vector data(mBufferSize); do { ALuint bufid; size_t got; diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index 957681e93a..2b16eaeeed 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -17,6 +17,9 @@ namespace MWSound }; const char *getChannelConfigName(ChannelConfig config); + size_t framesToBytes(size_t frames, ChannelConfig config, SampleType type); + size_t bytesToFrames(size_t bytes, ChannelConfig config, SampleType type); + class Sound_Decoder { public: diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a263fb1ac0..d86c5c2f50 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -485,4 +485,24 @@ namespace MWSound } return "(unknown channel config)"; } + + size_t framesToBytes(size_t frames, ChannelConfig config, SampleType type) + { + switch(config) + { + case ChannelConfig_Mono: frames *= 1; break; + case ChannelConfig_Stereo: frames *= 2; break; + } + switch(type) + { + case SampleType_UInt8: frames *= 1; break; + case SampleType_Int16: frames *= 2; break; + } + return frames; + } + + size_t bytesToFrames(size_t bytes, ChannelConfig config, SampleType type) + { + return bytes / framesToBytes(1, config, type); + } } From ae8218bf03f5a6b7799c358f58de351a5ed7f371 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 07:11:01 -0700 Subject: [PATCH 100/488] Allocate OpenAL sources when opening the device This allows sources to be more efficiently retrieved and returned --- apps/openmw/mwsound/openal_output.cpp | 165 ++++++++++++++++++-------- apps/openmw/mwsound/openal_output.hpp | 5 + 2 files changed, 119 insertions(+), 51 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 3e07c3f64e..62a7076e9e 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -17,6 +17,13 @@ namespace MWSound static void fail(const std::string &msg) { throw std::runtime_error("OpenAL exception: " + msg); } +static void throwALCerror(ALCdevice *device) +{ + ALCenum err = alcGetError(device); + if(err != ALC_NO_ERROR) + fail(alcGetString(device, err)); +} + static void throwALerror() { ALenum err = alGetError(); @@ -70,14 +77,14 @@ class OpenAL_SoundStream : public Sound volatile bool mIsFinished; public: - OpenAL_SoundStream(OpenAL_Output &output, DecoderPtr decoder); + OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder); virtual ~OpenAL_SoundStream(); virtual void stop(); virtual bool isPlaying(); virtual void update(const float *pos); - void play(float volume, float pitch); + void play(); bool process(); }; @@ -144,25 +151,13 @@ struct OpenAL_Output::StreamThread { }; -OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, DecoderPtr decoder) - : mOutput(output), mDecoder(decoder), mIsFinished(true) +OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder) + : mOutput(output), mSource(src), mDecoder(decoder), mIsFinished(true) { throwALerror(); - alGenSources(1, &mSource); + alGenBuffers(sNumBuffers, mBuffers); throwALerror(); - try - { - alGenBuffers(sNumBuffers, mBuffers); - throwALerror(); - } - catch(std::exception &e) - { - alDeleteSources(1, &mSource); - alGetError(); - throw; - } - try { int srate; @@ -178,7 +173,7 @@ OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, DecoderPtr decoder } catch(std::exception &e) { - alDeleteSources(1, &mSource); + mOutput.mFreeSources.push_back(mSource); alDeleteBuffers(sNumBuffers, mBuffers); alGetError(); throw; @@ -188,21 +183,22 @@ OpenAL_SoundStream::~OpenAL_SoundStream() { mOutput.mStreamThread->remove(this); - alDeleteSources(1, &mSource); + alSourceStop(mSource); + alSourcei(mSource, AL_BUFFER, 0); + + mOutput.mFreeSources.push_back(mSource); alDeleteBuffers(sNumBuffers, mBuffers); alGetError(); mDecoder->close(); } -void OpenAL_SoundStream::play(float volume, float pitch) +void OpenAL_SoundStream::play() { std::vector data(mBufferSize); alSourceStop(mSource); alSourcei(mSource, AL_BUFFER, 0); - alSourcef(mSource, AL_GAIN, volume); - alSourcef(mSource, AL_PITCH, pitch); throwALerror(); for(ALuint i = 0;i < sNumBuffers;i++) @@ -297,11 +293,12 @@ bool OpenAL_SoundStream::process() // class OpenAL_Sound : public Sound { + OpenAL_Output &mOutput; + ALuint mSource; ALuint mBuffer; - public: - OpenAL_Sound(ALuint src, ALuint buf); + OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf); virtual ~OpenAL_Sound(); virtual void stop(); @@ -330,19 +327,22 @@ ALuint OpenAL_Sound::LoadBuffer(DecoderPtr decoder) } data.resize(total); - ALuint buf; + ALuint buf=0; alGenBuffers(1, &buf); alBufferData(buf, format, &data[0], total, srate); return buf; } -OpenAL_Sound::OpenAL_Sound(ALuint src, ALuint buf) - : mSource(src), mBuffer(buf) +OpenAL_Sound::OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf) + : mOutput(output), mSource(src), mBuffer(buf) { } OpenAL_Sound::~OpenAL_Sound() { - alDeleteSources(1, &mSource); + alSourceStop(mSource); + alSourcei(mSource, AL_BUFFER, 0); + + mOutput.mFreeSources.push_back(mSource); alDeleteBuffers(1, &mBuffer); alGetError(); } @@ -391,13 +391,37 @@ void OpenAL_Output::init(const std::string &devname) alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED); throwALerror(); + + ALCint maxmono, maxstereo; + alcGetIntegerv(mDevice, ALC_MONO_SOURCES, 1, &maxmono); + alcGetIntegerv(mDevice, ALC_STEREO_SOURCES, 1, &maxstereo); + throwALCerror(mDevice); + + mFreeSources.resize(std::min(maxmono+maxstereo, 256)); + for(size_t i = 0;i < mFreeSources.size();i++) + { + ALuint src; + alGenSources(1, &src); + if(alGetError() != AL_NO_ERROR) + { + mFreeSources.resize(i); + break; + } + mFreeSources[i] = src; + } + if(mFreeSources.size() == 0) + fail("Could not allocate any sources"); } void OpenAL_Output::deinit() { - if(mStreamThread.get() != 0) - mStreamThread->removeAll(); + mStreamThread->removeAll(); + if(!mFreeSources.empty()) + { + alDeleteSources(mFreeSources.size(), mFreeSources.data()); + mFreeSources.clear(); + } alcMakeContextCurrent(0); if(mContext) alcDestroyContext(mContext); @@ -412,28 +436,33 @@ Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pi { throwALerror(); - DecoderPtr decoder = mManager.getDecoder(); - decoder->open(fname); - + std::auto_ptr sound; ALuint src=0, buf=0; + + if(mFreeSources.empty()) + fail("No free sources"); + src = mFreeSources.back(); + mFreeSources.pop_back(); + try { + DecoderPtr decoder = mManager.getDecoder(); + decoder->open(fname); buf = OpenAL_Sound::LoadBuffer(decoder); - decoder->close(); - alGenSources(1, &src); throwALerror(); + decoder->close(); + + sound.reset(new OpenAL_Sound(*this, src, buf)); } catch(std::exception &e) { - if(alIsSource(src)) - alDeleteSources(1, &src); + mFreeSources.push_back(src); if(alIsBuffer(buf)) alDeleteBuffers(1, &buf); alGetError(); throw; } - std::auto_ptr sound(new OpenAL_Sound(src, buf)); alSource3f(src, AL_POSITION, 0.0f, 0.0f, 0.0f); alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -461,28 +490,33 @@ Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, fl { throwALerror(); - DecoderPtr decoder = mManager.getDecoder(); - decoder->open(fname); - + std::auto_ptr sound; ALuint src=0, buf=0; + + if(mFreeSources.empty()) + fail("No free sources"); + src = mFreeSources.back(); + mFreeSources.pop_back(); + try { + DecoderPtr decoder = mManager.getDecoder(); + decoder->open(fname); buf = OpenAL_Sound::LoadBuffer(decoder); - decoder->close(); - alGenSources(1, &src); throwALerror(); + decoder->close(); + + sound.reset(new OpenAL_Sound(*this, src, buf)); } catch(std::exception &e) { - if(alIsSource(src)) - alDeleteSources(1, &src); + mFreeSources.push_back(src); if(alIsBuffer(buf)) alDeleteBuffers(1, &buf); alGetError(); throw; } - std::auto_ptr sound(new OpenAL_Sound(src, buf)); alSource3f(src, AL_POSITION, pos[0], pos[2], -pos[1]); alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -508,14 +542,44 @@ Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, fl Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float pitch) { + throwALerror(); + std::auto_ptr sound; + ALuint src; - DecoderPtr decoder = mManager.getDecoder(); - decoder->open(fname); + if(mFreeSources.empty()) + fail("No free sources"); + src = mFreeSources.back(); + mFreeSources.pop_back(); - sound.reset(new OpenAL_SoundStream(*this, decoder)); - sound->play(volume, pitch); + try + { + DecoderPtr decoder = mManager.getDecoder(); + decoder->open(fname); + sound.reset(new OpenAL_SoundStream(*this, src, decoder)); + } + catch(std::exception &e) + { + mFreeSources.push_back(src); + throw; + } + alSource3f(src, AL_POSITION, 0.0f, 0.0f, 0.0f); + alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + + alSourcef(src, AL_REFERENCE_DISTANCE, 1.0f); + alSourcef(src, AL_MAX_DISTANCE, 1000.0f); + alSourcef(src, AL_ROLLOFF_FACTOR, 0.0f); + + alSourcef(src, AL_GAIN, volume); + alSourcef(src, AL_PITCH, pitch); + + alSourcei(src, AL_SOURCE_RELATIVE, AL_TRUE); + alSourcei(src, AL_LOOPING, AL_FALSE); + throwALerror(); + + sound->play(); return sound.release(); } @@ -540,7 +604,6 @@ OpenAL_Output::OpenAL_Output(SoundManager &mgr) OpenAL_Output::~OpenAL_Output() { - mStreamThread.reset(); deinit(); } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index cd6146e39f..80c6db8514 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -2,6 +2,7 @@ #define GAME_SOUND_OPENAL_OUTPUT_H #include +#include #include "alc.h" #include "al.h" @@ -18,6 +19,9 @@ namespace MWSound ALCdevice *mDevice; ALCcontext *mContext; + typedef std::vector IDVec; + IDVec mFreeSources; + virtual void init(const std::string &devname=""); virtual void deinit(); @@ -35,6 +39,7 @@ namespace MWSound class StreamThread; std::auto_ptr mStreamThread; + friend class OpenAL_Sound; friend class OpenAL_SoundStream; friend class SoundManager; }; From 4f69972a9c7a10aea930567d3431eea6381049b6 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 07:28:03 -0700 Subject: [PATCH 101/488] Add a method to stream a sound in 3D --- apps/openmw/mwsound/openal_output.cpp | 44 +++++++++++++++++++++++++++ apps/openmw/mwsound/openal_output.hpp | 2 ++ apps/openmw/mwsound/sound_output.hpp | 2 ++ 3 files changed, 48 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 62a7076e9e..d63482273a 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -583,6 +583,50 @@ Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float return sound.release(); } +Sound* OpenAL_Output::streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max) +{ + throwALerror(); + + std::auto_ptr sound; + ALuint src; + + if(mFreeSources.empty()) + fail("No free sources"); + src = mFreeSources.back(); + mFreeSources.pop_back(); + + try + { + DecoderPtr decoder = mManager.getDecoder(); + decoder->open(fname); + sound.reset(new OpenAL_SoundStream(*this, src, decoder)); + } + catch(std::exception &e) + { + mFreeSources.push_back(src); + throw; + } + + alSource3f(src, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + + alSourcef(src, AL_REFERENCE_DISTANCE, min); + alSourcef(src, AL_MAX_DISTANCE, max); + alSourcef(src, AL_ROLLOFF_FACTOR, 1.0f); + + alSourcef(src, AL_GAIN, volume); + alSourcef(src, AL_PITCH, pitch); + + alSourcei(src, AL_SOURCE_RELATIVE, AL_FALSE); + alSourcei(src, AL_LOOPING, AL_FALSE); + throwALerror(); + + sound->play(); + return sound.release(); +} + void OpenAL_Output::updateListener(const float *pos, const float *atdir, const float *updir) { diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 80c6db8514..dddd1d6dc6 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -30,6 +30,8 @@ namespace MWSound float min, float max, bool loop); virtual Sound *streamSound(const std::string &fname, float volume, float pitch); + virtual Sound *streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max); virtual void updateListener(const float *pos, const float *atdir, const float *updir); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index be721831f9..a2a035e710 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -23,6 +23,8 @@ namespace MWSound virtual Sound *playSound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop) = 0; virtual Sound *streamSound(const std::string &fname, float volume, float pitch) = 0; + virtual Sound *streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max) = 0; virtual void updateListener(const float *pos, const float *atdir, const float *updir) = 0; From afa2cb6de7a708a89630d30478bd21bbbef968b6 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 07:51:28 -0700 Subject: [PATCH 102/488] Stop trying to read decoded audio once it's finished --- apps/openmw/mwsound/openal_output.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index d63482273a..f3cc261a4f 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -230,6 +230,13 @@ void OpenAL_SoundStream::stop() bool OpenAL_SoundStream::isPlaying() { + ALint state; + + alGetSourcei(mSource, AL_SOURCE_STATE, &state); + throwALerror(); + + if(state == AL_PLAYING) + return true; return !mIsFinished; } @@ -259,7 +266,11 @@ bool OpenAL_SoundStream::process() alSourceUnqueueBuffers(mSource, 1, &bufid); processed--; + if(mIsFinished) + continue; + got = mDecoder->read(&data[0], data.size()); + mIsFinished = (got < data.size()); if(got > 0) { alBufferData(bufid, mFormat, &data[0], got, mSampleRate); @@ -275,17 +286,14 @@ bool OpenAL_SoundStream::process() alGetSourcei(mSource, AL_BUFFERS_QUEUED, &queued); throwALerror(); - if(queued == 0) + if(queued > 0) { - mIsFinished = true; - return false; + alSourcePlay(mSource); + throwALerror(); } - - alSourcePlay(mSource); - throwALerror(); } - return true; + return !mIsFinished; } // From db46bf39b33f4271bebab20e0a34f917c668fef6 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 08:48:25 -0700 Subject: [PATCH 103/488] Add a rewind method to the sound decoder --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 4 ++++ apps/openmw/mwsound/ffmpeg_decoder.hpp | 2 ++ apps/openmw/mwsound/mpgsnd_decoder.cpp | 17 +++++++++++++++++ apps/openmw/mwsound/mpgsnd_decoder.hpp | 2 ++ apps/openmw/mwsound/openal_output.cpp | 3 ++- apps/openmw/mwsound/sound_decoder.hpp | 2 ++ 6 files changed, 29 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 2b84439c04..cb14df946f 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -29,6 +29,10 @@ size_t FFmpeg_Decoder::read(char *buffer, size_t bytes) return 0; } +void FFmpeg_Decoder::rewind() +{ + fail("Not currently working"); +} FFmpeg_Decoder::FFmpeg_Decoder() { diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index 676a576da3..f622b115ee 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -20,7 +20,9 @@ namespace MWSound virtual void close(); virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type); + virtual size_t read(char *buffer, size_t bytes); + virtual void rewind(); FFmpeg_Decoder(); virtual ~FFmpeg_Decoder(); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index e112d30b1d..1c13b5b1ae 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -109,6 +109,23 @@ size_t MpgSnd_Decoder::read(char *buffer, size_t bytes) return got; } +void MpgSnd_Decoder::rewind() +{ + if(!mSndFile && !mMpgFile) + fail("No open file"); + + if(mSndFile) + { + if(sf_seek(mSndFile, 0, SEEK_SET) == -1) + fail("seek failed"); + } + else if(mMpgFile) + { + if(mpg123_seek(mMpgFile, 0, SEEK_SET) < 0) + fail("seek failed"); + } +} + MpgSnd_Decoder::MpgSnd_Decoder() : mSndFile(NULL), mMpgFile(NULL) { static bool initdone = false; diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index 4d3c7f4aba..19a6079b87 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -23,7 +23,9 @@ namespace MWSound virtual void close(); virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type); + virtual size_t read(char *buffer, size_t bytes); + virtual void rewind(); MpgSnd_Decoder(); public: diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index f3cc261a4f..084c269ddd 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -225,7 +225,8 @@ void OpenAL_SoundStream::stop() alSourceStop(mSource); alSourcei(mSource, AL_BUFFER, 0); throwALerror(); - // FIXME: Rewind decoder + + mDecoder->rewind(); } bool OpenAL_SoundStream::isPlaying() diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index 2b16eaeeed..5abd4371d1 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -27,7 +27,9 @@ namespace MWSound virtual void close() = 0; virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) = 0; + virtual size_t read(char *buffer, size_t bytes) = 0; + virtual void rewind() = 0; virtual ~Sound_Decoder() { } From 91821ccd8c26ea0db1893f5fa07a86694343e833 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 09:08:59 -0700 Subject: [PATCH 104/488] Add the sound stream to the thread after resetting the mIsFinished flag --- apps/openmw/mwsound/openal_output.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 084c269ddd..468c1565d7 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -213,8 +213,8 @@ void OpenAL_SoundStream::play() alSourcePlay(mSource); throwALerror(); - mOutput.mStreamThread->add(this); mIsFinished = false; + mOutput.mStreamThread->add(this); } void OpenAL_SoundStream::stop() From 6c45d6668ba73cbe131ef21fb53b8320ddeae622 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 10:33:06 -0700 Subject: [PATCH 105/488] Cache OpenAL buffers for easy reuse --- apps/openmw/mwsound/openal_output.cpp | 118 ++++++++++++++++---------- apps/openmw/mwsound/openal_output.hpp | 14 +++ 2 files changed, 87 insertions(+), 45 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 468c1565d7..a0884fb40f 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -313,35 +313,8 @@ public: virtual void stop(); virtual bool isPlaying(); virtual void update(const float *pos); - - static ALuint LoadBuffer(DecoderPtr decoder); }; -ALuint OpenAL_Sound::LoadBuffer(DecoderPtr decoder) -{ - int srate; - ChannelConfig chans; - SampleType type; - ALenum format; - - decoder->getInfo(&srate, &chans, &type); - format = getALFormat(chans, type); - - std::vector data(32768); - size_t got, total = 0; - while((got=decoder->read(&data[total], data.size()-total)) > 0) - { - total += got; - data.resize(total*2); - } - data.resize(total); - - ALuint buf=0; - alGenBuffers(1, &buf); - alBufferData(buf, format, &data[0], total, srate); - return buf; -} - OpenAL_Sound::OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf) : mOutput(output), mSource(src), mBuffer(buf) { @@ -352,8 +325,7 @@ OpenAL_Sound::~OpenAL_Sound() alSourcei(mSource, AL_BUFFER, 0); mOutput.mFreeSources.push_back(mSource); - alDeleteBuffers(1, &mBuffer); - alGetError(); + mOutput.bufferFinished(mBuffer); } void OpenAL_Sound::stop() @@ -431,6 +403,15 @@ void OpenAL_Output::deinit() alDeleteSources(mFreeSources.size(), mFreeSources.data()); mFreeSources.clear(); } + + mBufferRefs.clear(); + mUnusedBuffers.clear(); + while(!mBufferCache.empty()) + { + alDeleteBuffers(1, &mBufferCache.begin()->second); + mBufferCache.erase(mBufferCache.begin()); + } + alcMakeContextCurrent(0); if(mContext) alcDestroyContext(mContext); @@ -441,6 +422,63 @@ void OpenAL_Output::deinit() } +ALuint OpenAL_Output::getBuffer(const std::string &fname) +{ + ALuint buf = 0; + + NameMap::iterator iditer = mBufferCache.find(fname); + if(iditer != mBufferCache.end()) + { + buf = iditer->second; + if(mBufferRefs[buf]++ == 0) + { + IDDq::iterator iter = std::find(mUnusedBuffers.begin(), + mUnusedBuffers.end(), buf); + if(iter != mUnusedBuffers.end()) + mUnusedBuffers.erase(iter); + } + + return buf; + } + throwALerror(); + + int srate; + ChannelConfig chans; + SampleType type; + ALenum format; + + DecoderPtr decoder = mManager.getDecoder(); + decoder->open(fname); + decoder->getInfo(&srate, &chans, &type); + format = getALFormat(chans, type); + + std::vector data(32768); + size_t got, total = 0; + while((got=decoder->read(&data[total], data.size()-total)) > 0) + { + total += got; + data.resize(total*2); + } + data.resize(total); + decoder->close(); + + alGenBuffers(1, &buf); + throwALerror(); + + alBufferData(buf, format, &data[0], total, srate); + mBufferCache[fname] = buf; + mBufferRefs[buf] = 1; + + return buf; +} + +void OpenAL_Output::bufferFinished(ALuint buf) +{ + if(mBufferRefs.at(buf)-- == 1) + mUnusedBuffers.push_back(buf); +} + + Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pitch, bool loop) { throwALerror(); @@ -455,19 +493,14 @@ Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pi try { - DecoderPtr decoder = mManager.getDecoder(); - decoder->open(fname); - buf = OpenAL_Sound::LoadBuffer(decoder); - throwALerror(); - decoder->close(); - + buf = getBuffer(fname); sound.reset(new OpenAL_Sound(*this, src, buf)); } catch(std::exception &e) { mFreeSources.push_back(src); - if(alIsBuffer(buf)) - alDeleteBuffers(1, &buf); + if(buf && alIsBuffer(buf)) + bufferFinished(buf); alGetError(); throw; } @@ -509,19 +542,14 @@ Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, fl try { - DecoderPtr decoder = mManager.getDecoder(); - decoder->open(fname); - buf = OpenAL_Sound::LoadBuffer(decoder); - throwALerror(); - decoder->close(); - + buf = getBuffer(fname); sound.reset(new OpenAL_Sound(*this, src, buf)); } catch(std::exception &e) { mFreeSources.push_back(src); - if(alIsBuffer(buf)) - alDeleteBuffers(1, &buf); + if(buf && alIsBuffer(buf)) + bufferFinished(buf); alGetError(); throw; } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index dddd1d6dc6..62ec39abaf 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -3,6 +3,8 @@ #include #include +#include +#include #include "alc.h" #include "al.h" @@ -22,6 +24,18 @@ namespace MWSound typedef std::vector IDVec; IDVec mFreeSources; + typedef std::map NameMap; + NameMap mBufferCache; + + typedef std::map IDRefMap; + IDRefMap mBufferRefs; + + typedef std::deque IDDq; + IDDq mUnusedBuffers; + + ALuint getBuffer(const std::string &fname); + void bufferFinished(ALuint buffer); + virtual void init(const std::string &devname=""); virtual void deinit(); From 04638516b282bf9550758690678095bf1924ef04 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 12:08:40 -0700 Subject: [PATCH 106/488] Check for stopped active sounds too and remove them --- apps/openmw/mwsound/soundmanager.cpp | 42 ++++++++++++++++++---------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index d86c5c2f50..f3480766b0 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -133,13 +133,11 @@ namespace MWSound { try { - Sound *sound; const ESM::Position &pos = ptr.getCellRef().pos; - sound = mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop); - if(untracked) - mLooseSounds[id] = SoundPtr(sound); - else - mActiveSounds[ptr][id] = SoundPtr(sound); + SoundPtr sound(mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop)); + + if(untracked) mLooseSounds[id] = sound; + else mActiveSounds[ptr][id] = sound; } catch(std::exception &e) { @@ -157,7 +155,7 @@ namespace MWSound if(iditer == snditer->second.end()) return false; - return iditer->second->isPlaying(); + return true; } @@ -320,7 +318,7 @@ namespace MWSound if(iditer != snditer->second.end()) { snditer->second.erase(iditer); - if(snditer->second.size() == 0) + if(snditer->second.empty()) mActiveSounds.erase(snditer); } } @@ -450,16 +448,32 @@ namespace MWSound float up[3] = { nUp[0], -nUp[2], nUp[1] }; mOutput->updateListener(pos, at, up); - // Check if any "untracked" sounds are finished playing, and trash - // them - IDMap::iterator snditer = mLooseSounds.begin(); - while(snditer != mLooseSounds.end()) + // Check if any sounds are finished playing, and trash them + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) { - if(!snditer->second->isPlaying()) - mLooseSounds.erase(snditer++); + IDMap::iterator iditer = snditer->second.begin(); + while(iditer != snditer->second.end()) + { + if(!iditer->second->isPlaying()) + snditer->second.erase(iditer++); + else + iditer++; + } + if(snditer->second.empty()) + mActiveSounds.erase(snditer++); else snditer++; } + + IDMap::iterator iditer = mLooseSounds.begin(); + while(iditer != mLooseSounds.end()) + { + if(!iditer->second->isPlaying()) + mLooseSounds.erase(iditer++); + else + iditer++; + } } updateRegionSound(duration); From fd37a4827c1d993b719abf2f8ada23153144c04a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 13:19:22 -0700 Subject: [PATCH 107/488] Enforce a 15MB limit on the sound buffer cache --- apps/openmw/mwsound/openal_output.cpp | 36 ++++++++++++++++++++++++++- apps/openmw/mwsound/openal_output.hpp | 2 ++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index a0884fb40f..7768119b6e 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -469,13 +469,46 @@ ALuint OpenAL_Output::getBuffer(const std::string &fname) mBufferCache[fname] = buf; mBufferRefs[buf] = 1; + ALint bufsize = 0; + alGetBufferi(buf, AL_SIZE, &bufsize); + mBufferCacheMemSize += bufsize; + + // NOTE: Max buffer cache: 15MB + while(mBufferCacheMemSize > 15*1024*1024) + { + if(mUnusedBuffers.empty()) + { + std::cout <<"No more unused buffers to clear!"<< std::endl; + break; + } + + ALuint oldbuf = mUnusedBuffers.front(); + mUnusedBuffers.pop_front(); + + NameMap::iterator nameiter = mBufferCache.begin(); + while(nameiter != mBufferCache.end()) + { + if(nameiter->second == oldbuf) + mBufferCache.erase(nameiter++); + else + nameiter++; + } + + bufsize = 0; + alGetBufferi(oldbuf, AL_SIZE, &bufsize); + alDeleteBuffers(1, &oldbuf); + mBufferCacheMemSize -= bufsize; + } return buf; } void OpenAL_Output::bufferFinished(ALuint buf) { if(mBufferRefs.at(buf)-- == 1) + { + mBufferRefs.erase(mBufferRefs.find(buf)); mUnusedBuffers.push_back(buf); + } } @@ -679,7 +712,8 @@ void OpenAL_Output::updateListener(const float *pos, const float *atdir, const f OpenAL_Output::OpenAL_Output(SoundManager &mgr) - : Sound_Output(mgr), mDevice(0), mContext(0), mStreamThread(new StreamThread) + : Sound_Output(mgr), mDevice(0), mContext(0), mBufferCacheMemSize(0), + mStreamThread(new StreamThread) { } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 62ec39abaf..aeb64ad0d1 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -33,6 +33,8 @@ namespace MWSound typedef std::deque IDDq; IDDq mUnusedBuffers; + uint64_t mBufferCacheMemSize; + ALuint getBuffer(const std::string &fname); void bufferFinished(ALuint buffer); From 80dbf82a748f7b821b8eabbdf7a795e1998fecc2 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 07:22:17 -0700 Subject: [PATCH 108/488] Explicitly stop sounds instead of relying on their deletion to do it --- apps/openmw/mwsound/soundmanager.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 508e9144d7..e5449e09bb 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -40,7 +40,6 @@ namespace MWSound : mFSStrict(fsstrict) , mEnvironment(environment) , mCurrentPlaylist(NULL) - , mUsingSound(useSound) { if(!useSound) return; @@ -239,9 +238,6 @@ namespace MWSound void SoundManager::playPlaylist(std::string playlist) { - if (!mUsingSound) - return; - if (playlist == "") { if(!isMusicPlaying()) @@ -321,13 +317,22 @@ namespace MWSound IDMap::iterator iditer = snditer->second.find(soundId); if(iditer != snditer->second.end()) { + iditer->second->stop(); snditer->second.erase(iditer); if(snditer->second.empty()) mActiveSounds.erase(snditer); } } else + { + IDMap::iterator iditer = snditer->second.begin(); + while(iditer != snditer->second.end()) + { + iditer->second->stop(); + iditer++; + } mActiveSounds.erase(snditer); + } } void SoundManager::stopSound(MWWorld::Ptr::CellStore *cell) @@ -337,7 +342,15 @@ namespace MWSound while(snditer != mActiveSounds.end()) { if(snditer->first.getCell() == cell) + { + IDMap::iterator iditer = snditer->second.begin(); + while(iditer != snditer->second.end()) + { + iditer->second->stop(); + iditer++; + } mActiveSounds.erase(snditer++); + } else snditer++; } @@ -347,7 +360,10 @@ namespace MWSound { IDMap::iterator iditer = mLooseSounds.find(soundId); if(iditer != mLooseSounds.end()) + { + iditer->second->stop(); mLooseSounds.erase(iditer); + } } bool SoundManager::getSoundPlaying(MWWorld::Ptr ptr, const std::string& soundId) const From 0261aac5184d961b9cfb8e5aaba8261ffdb3f5cf Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 10:34:36 -0700 Subject: [PATCH 109/488] Use Ogre's resource group manager to handle sound files --- apps/openmw/mwsound/mpgsnd_decoder.cpp | 79 +++++++++++++++- apps/openmw/mwsound/mpgsnd_decoder.hpp | 11 +++ apps/openmw/mwsound/sound_decoder.hpp | 12 ++- apps/openmw/mwsound/soundmanager.cpp | 122 ++++++------------------- apps/openmw/mwsound/soundmanager.hpp | 23 +---- 5 files changed, 125 insertions(+), 122 deletions(-) diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index 1c13b5b1ae..f9bef9774b 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -12,12 +12,83 @@ static void fail(const std::string &msg) namespace MWSound { +// +// libSndFile io callbacks +// +sf_count_t MpgSnd_Decoder::ogresf_get_filelen(void *user_data) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + return stream->size(); +} + +sf_count_t MpgSnd_Decoder::ogresf_seek(sf_count_t offset, int whence, void *user_data) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + + if(whence == SEEK_CUR) + stream->seek(stream->tell()+offset); + else if(whence == SEEK_SET) + stream->seek(offset); + else if(whence == SEEK_END) + stream->seek(stream->size()+offset); + else + return -1; + + return stream->tell(); +} + +sf_count_t MpgSnd_Decoder::ogresf_read(void *ptr, sf_count_t count, void *user_data) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + return stream->read(ptr, count); +} + +sf_count_t MpgSnd_Decoder::ogresf_write(const void*, sf_count_t, void*) +{ return -1; } + +sf_count_t MpgSnd_Decoder::ogresf_tell(void *user_data) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + return stream->tell(); +} + +// +// libmpg13 io callbacks +// +ssize_t MpgSnd_Decoder::ogrempg_read(void *user_data, void *ptr, size_t count) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + return stream->read(ptr, count); +} + +off_t MpgSnd_Decoder::ogrempg_lseek(void *user_data, off_t offset, int whence) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + + if(whence == SEEK_CUR) + stream->seek(stream->tell()+offset); + else if(whence == SEEK_SET) + stream->seek(offset); + else if(whence == SEEK_END) + stream->seek(stream->size()+offset); + else + return -1; + + return stream->tell(); +} + + void MpgSnd_Decoder::open(const std::string &fname) { close(); + mDataStream = mResourceMgr.openResource(fname); SF_INFO info; - mSndFile = sf_open(fname.c_str(), SFM_READ, &info); + SF_VIRTUAL_IO streamIO = { + ogresf_get_filelen, ogresf_seek, + ogresf_read, ogresf_write, ogresf_tell + }; + mSndFile = sf_open_virtual(&streamIO, SFM_READ, &info, this); if(mSndFile) { if(info.channels == 1) @@ -33,9 +104,11 @@ void MpgSnd_Decoder::open(const std::string &fname) mSampleRate = info.samplerate; return; } + mDataStream->seek(0); mMpgFile = mpg123_new(NULL, NULL); - if(mMpgFile && mpg123_open(mMpgFile, fname.c_str()) == MPG123_OK) + if(mMpgFile && mpg123_replace_reader_handle(mMpgFile, ogrempg_read, ogrempg_lseek, NULL) == MPG123_OK && + mpg123_open_handle(mMpgFile, this) == MPG123_OK) { try { @@ -79,6 +152,8 @@ void MpgSnd_Decoder::close() mpg123_delete(mMpgFile); mMpgFile = NULL; } + + mDataStream.setNull(); } void MpgSnd_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index 19a6079b87..35c753ec81 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -3,6 +3,8 @@ #include +#include + #include "mpg123.h" #include "sndfile.h" @@ -16,6 +18,15 @@ namespace MWSound SNDFILE *mSndFile; mpg123_handle *mMpgFile; + Ogre::DataStreamPtr mDataStream; + static sf_count_t ogresf_get_filelen(void *user_data); + static sf_count_t ogresf_seek(sf_count_t offset, int whence, void *user_data); + static sf_count_t ogresf_read(void *ptr, sf_count_t count, void *user_data); + static sf_count_t ogresf_write(const void*, sf_count_t, void*); + static sf_count_t ogresf_tell(void *user_data); + static ssize_t ogrempg_read(void*, void*, size_t); + static off_t ogrempg_lseek(void*, off_t, int); + ChannelConfig mChanConfig; int mSampleRate; diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index 5abd4371d1..858cc63531 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -3,6 +3,8 @@ #include +#include + namespace MWSound { enum SampleType { @@ -20,9 +22,10 @@ namespace MWSound size_t framesToBytes(size_t frames, ChannelConfig config, SampleType type); size_t bytesToFrames(size_t bytes, ChannelConfig config, SampleType type); - class Sound_Decoder + struct Sound_Decoder { - public: + Ogre::ResourceGroupManager &mResourceMgr; + virtual void open(const std::string &fname) = 0; virtual void close() = 0; @@ -31,10 +34,9 @@ namespace MWSound virtual size_t read(char *buffer, size_t bytes) = 0; virtual void rewind() = 0; + Sound_Decoder() : mResourceMgr(Ogre::ResourceGroupManager::getSingleton()) + { } virtual ~Sound_Decoder() { } - - friend class OpenAL_Output; - friend class SoundManager; }; } diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index e5449e09bb..c0a1a8a833 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -39,7 +39,6 @@ namespace MWSound bool useSound, bool fsstrict, MWWorld::Environment& environment) : mFSStrict(fsstrict) , mEnvironment(environment) - , mCurrentPlaylist(NULL) { if(!useSound) return; @@ -59,24 +58,7 @@ namespace MWSound return; } - // The music library will accept these filetypes - // If none is given then it will accept all filetypes - std::vector acceptableExtensions; - acceptableExtensions.push_back(".mp3"); - acceptableExtensions.push_back(".wav"); - acceptableExtensions.push_back(".ogg"); - acceptableExtensions.push_back(".flac"); - - // Makes a list of all sound files, searches in reverse for priority reasons - for(Files::PathContainer::const_reverse_iterator it = dataDirs.rbegin(); it != dataDirs.rend(); ++it) - Files::FileLister(*it / std::string("Sound"), mSoundFiles, true); - - // Makes a FileLibrary of all music files, searches in reverse for priority reasons - for(Files::PathContainer::const_reverse_iterator it = dataDirs.rbegin(); it != dataDirs.rend(); ++it) - mMusicLibrary.add(*it / std::string("Music"), true, mFSStrict, acceptableExtensions); - - std::string anything = "anything"; // anything is better that a segfault - mCurrentPlaylist = mMusicLibrary.section(anything, mFSStrict); // now points to an empty path + mResourceMgr = Ogre::ResourceGroupManager::getSingletonPtr(); } SoundManager::~SoundManager() @@ -120,7 +102,14 @@ namespace MWSound max = std::max(min, max); } - return Files::FileListLocator(mSoundFiles, snd->sound, mFSStrict, false); + std::string fname = std::string("Sound\\")+snd->sound; + if(!mResourceMgr->resourceExistsInAnyGroup(fname)) + { + std::string::size_type pos = fname.rfind('.'); + if(pos != std::string::npos) + fname = fname.substr(0, pos)+".mp3"; + } + return fname; } // Add a sound to the list and play it @@ -163,53 +152,25 @@ namespace MWSound { if(mMusic) mMusic->stop(); - setPlaylist(); - } - - void SoundManager::streamMusicFull(const std::string& filename) - { - if(mMusic) - mMusic->stop(); - mMusic.reset(mOutput->streamSound(filename, 0.4f, 1.0f)); + mMusic.reset(); } void SoundManager::streamMusic(const std::string& filename) { - std::string filePath = mMusicLibrary.locate(filename, mFSStrict, true).string(); - if(!filePath.empty()) + try { - try - { - streamMusicFull(filePath); - } - catch(std::exception &e) - { - std::cout << "Music Error: " << e.what() << "\n"; - } + if(mMusic) + mMusic->stop(); + mMusic.reset(mOutput->streamSound(filename, 0.4f, 1.0f)); + } + catch(std::exception &e) + { + std::cout << "Music Error: " << e.what() << "\n"; } } void SoundManager::startRandomTitle() { - if(mCurrentPlaylist && !mCurrentPlaylist->empty()) - { - Files::PathContainer::const_iterator fileIter = mCurrentPlaylist->begin(); - srand( time(NULL) ); - int r = rand() % mCurrentPlaylist->size() + 1; //old random code - - std::advance(fileIter, r - 1); - std::string music = fileIter->string(); - //std::cout << "Playing " << music << "\n"; - - try - { - streamMusicFull(music); - } - catch (std::exception &e) - { - std::cout << "Music Error: " << e.what() << "\n"; - } - } } bool SoundManager::isMusicPlaying() @@ -217,52 +178,21 @@ namespace MWSound return mMusic && mMusic->isPlaying(); } - bool SoundManager::setPlaylist(std::string playlist) - { - const Files::PathContainer* previousPlaylist; - previousPlaylist = mCurrentPlaylist; - if (playlist == "") - { - mCurrentPlaylist = mMusicLibrary.section(playlist, mFSStrict); - } - else if(mMusicLibrary.containsSection(playlist, mFSStrict)) - { - mCurrentPlaylist = mMusicLibrary.section(playlist, mFSStrict); - } - else - { - std::cout << "Warning: playlist named " << playlist << " does not exist.\n"; - } - return previousPlaylist == mCurrentPlaylist; - } - void SoundManager::playPlaylist(std::string playlist) { - if (playlist == "") - { - if(!isMusicPlaying()) - { - startRandomTitle(); - } - return; - } - - if(!setPlaylist(playlist)) - { - startRandomTitle(); - } - else if (!isMusicPlaying()) - { - startRandomTitle(); - } } void SoundManager::say(MWWorld::Ptr ptr, const std::string& filename) { // The range values are not tested - std::string filePath = Files::FileListLocator(mSoundFiles, filename, mFSStrict, true); - if(!filePath.empty()) - play3d(filePath, ptr, "_say_sound", 1, 1, 100, 20000, false); + std::string filePath = std::string("Sound\\")+filename; + if(!mResourceMgr->resourceExistsInAnyGroup(filePath)) + { + std::string::size_type pos = filePath.rfind('.'); + if(pos != std::string::npos) + filePath = filePath.substr(0, pos)+".mp3"; + } + play3d(filePath, ptr, "_say_sound", 1, 1, 100, 20000, false); } bool SoundManager::sayDone(MWWorld::Ptr ptr) const diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 3c78268213..2a474e5f54 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -3,6 +3,8 @@ #include +#include + #include #include "../mwworld/ptr.hpp" @@ -29,6 +31,8 @@ namespace MWSound class SoundManager { + Ogre::ResourceGroupManager *mResourceMgr; + // This is used for case insensitive and slash-type agnostic file // finding. It takes DOS paths (any case, \\ slashes or / slashes) // relative to the sound dir, and translates them into full paths @@ -41,19 +45,6 @@ namespace MWSound boost::shared_ptr mMusic; - void streamMusicFull(const std::string& filename); - ///< Play a soundifle - /// \param absolute filename - - // A list of all sound files used to lookup paths - Files::PathContainer mSoundFiles; - - // A library of all Music file paths stored by the folder they are contained in - Files::FileLibrary mMusicLibrary; - - // Points to the current playlist of music files stored in the music library - const Files::PathContainer* mCurrentPlaylist; - typedef boost::shared_ptr SoundPtr; typedef std::map IDMap; typedef std::map SoundMap; @@ -92,12 +83,6 @@ namespace MWSound bool isMusicPlaying(); ///< Returns true if music is playing - bool setPlaylist(std::string playlist=""); - ///< Set the playlist to an existing folder - /// \param name of the folder that contains the playlist - /// if none is set then it is set to an empty playlist - /// \return Return true if the previous playlist was the same - void playPlaylist(std::string playlist=""); ///< Start playing music from the selected folder /// \param name of the folder that contains the playlist From 5ae47f783ebdf9cef3407b96d005f67aa78fd851 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 10:46:10 -0700 Subject: [PATCH 110/488] Use the sound manager's update to make sure music is still playing --- apps/openmw/engine.cpp | 4 ---- apps/openmw/mwsound/soundmanager.cpp | 4 ++++ apps/openmw/mwsound/soundmanager.hpp | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 89068ce533..57723cac99 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -117,11 +117,7 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt) // sound if (mUseSound) - { - mEnvironment.mSoundManager->playPlaylist(); - mEnvironment.mSoundManager->update (evt.timeSinceLastFrame); - } // update GUI Ogre::RenderWindow* window = mOgre->getWindow(); diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index c0a1a8a833..b4a2409ca7 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -384,6 +384,10 @@ namespace MWSound { timePassed = 0.0f; + // Make sure music is still playing + if(!mMusic || !mMusic->isPlaying()) + startRandomTitle(); + Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); Ogre::Vector3 nPos, nDir, nUp; nPos = cam->getRealPosition(); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 2a474e5f54..2f850b569d 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -83,10 +83,9 @@ namespace MWSound bool isMusicPlaying(); ///< Returns true if music is playing - void playPlaylist(std::string playlist=""); + void playPlaylist(std::string playlist); ///< Start playing music from the selected folder /// \param name of the folder that contains the playlist - /// if none is set then it plays from the current playlist void say(MWWorld::Ptr reference, const std::string& filename); ///< Make an actor say some text. From fc27d5cc198e85f0b7ddcf934b606ff312dd65c2 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 11:31:13 -0700 Subject: [PATCH 111/488] Restore music playback --- apps/openmw/mwsound/soundmanager.cpp | 15 +++++++++++++-- apps/openmw/mwsound/soundmanager.hpp | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index b4a2409ca7..7b3346331e 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -157,6 +157,7 @@ namespace MWSound void SoundManager::streamMusic(const std::string& filename) { + std::cout <<"Playing "<findResourceNames(Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "Music/"+mCurrentPlaylist+"/*"); + if(!filelist->size()) + return; + + int i = rand()%filelist->size(); + streamMusic((*filelist)[i]); } bool SoundManager::isMusicPlaying() @@ -178,8 +187,10 @@ namespace MWSound return mMusic && mMusic->isPlaying(); } - void SoundManager::playPlaylist(std::string playlist) + void SoundManager::playPlaylist(const std::string &playlist) { + mCurrentPlaylist = playlist; + startRandomTitle(); } void SoundManager::say(MWWorld::Ptr ptr, const std::string& filename) @@ -385,7 +396,7 @@ namespace MWSound timePassed = 0.0f; // Make sure music is still playing - if(!mMusic || !mMusic->isPlaying()) + if(!isMusicPlaying()) startRandomTitle(); Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 2f850b569d..206b7a1b92 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -44,6 +44,7 @@ namespace MWSound std::auto_ptr mOutput; boost::shared_ptr mMusic; + std::string mCurrentPlaylist; typedef boost::shared_ptr SoundPtr; typedef std::map IDMap; @@ -83,7 +84,7 @@ namespace MWSound bool isMusicPlaying(); ///< Returns true if music is playing - void playPlaylist(std::string playlist); + void playPlaylist(const std::string &playlist); ///< Start playing music from the selected folder /// \param name of the folder that contains the playlist From e48745b68ec25b351b4dd511dac1c1c1bb00e647 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 12:39:49 -0700 Subject: [PATCH 112/488] Fix streamMusic's path lookup --- apps/openmw/mwsound/soundmanager.cpp | 9 +++++++-- apps/openmw/mwsound/soundmanager.hpp | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 7b3346331e..ec5ab310b7 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -155,7 +155,7 @@ namespace MWSound mMusic.reset(); } - void SoundManager::streamMusic(const std::string& filename) + void SoundManager::streamMusicFull(const std::string& filename) { std::cout <<"Playing "<size(); - streamMusic((*filelist)[i]); + streamMusicFull((*filelist)[i]); } bool SoundManager::isMusicPlaying() diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 206b7a1b92..f350da2be1 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -58,6 +58,7 @@ namespace MWSound MWWorld::Ptr ptr, const std::string &id, float volume, float pitch, float min, float max, bool loop, bool untracked=false); + void streamMusicFull(const std::string& filename); bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; void updateRegionSound(float duration); From 9a48002025b266a6767e8c8ea26de3c43dbc5749 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 14:13:58 -0700 Subject: [PATCH 113/488] Fix compilation of the FFmpeg decoder --- CMakeLists.txt | 15 +++++++++------ apps/openmw/mwsound/ffmpeg_decoder.hpp | 6 ++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97cb33685b..d836cccaa8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,19 +126,22 @@ set(OPENMW_LIBS ${MANGLE_ALL} ${OENGINE_ALL}) set(OPENMW_LIBS_HEADER) # Sound setup +set(SOUND_INPUT_INCLUDES "") +set(SOUND_INPUT_LIBRARY "") +set(SOUND_DEFINE "") if (USE_FFMPEG) find_package(FFMPEG REQUIRED) - set(SOUND_INPUT_INCLUDES ${FFMPEG_INCLUDE_DIR}) - set(SOUND_INPUT_LIBRARY ${FFMPEG_LIBRARIES}) - set(SOUND_DEFINE -DOPENMW_USE_FFMPEG) + set(SOUND_INPUT_INCLUDES ${SOUND_INPUT_INCLUDES} ${FFMPEG_INCLUDE_DIR}) + set(SOUND_INPUT_LIBRARY ${SOUND_INPUT_LIBRARY} ${FFMPEG_LIBRARIES}) + set(SOUND_DEFINE ${SOUND_DEFINE} -DOPENMW_USE_FFMPEG) endif (USE_FFMPEG) if (USE_MPG123) find_package(MPG123 REQUIRED) find_package(SNDFILE REQUIRED) - set(SOUND_INPUT_INCLUDES ${MPG123_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR}) - set(SOUND_INPUT_LIBRARY ${MPG123_LIBRARY} ${SNDFILE_LIBRARY}) - set(SOUND_DEFINE -DOPENMW_USE_MPG123) + set(SOUND_INPUT_INCLUDES ${SOUND_INPUT_INCLUDES} ${MPG123_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR}) + set(SOUND_INPUT_LIBRARY ${SOUND_INPUT_LIBRARY} ${MPG123_LIBRARY} ${SNDFILE_LIBRARY}) + set(SOUND_DEFINE ${SOUND_DEFINE} -DOPENMW_USE_MPG123) endif (USE_MPG123) # Platform specific diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index f622b115ee..de39259886 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -3,6 +3,11 @@ #include +// FIXME: This can't be right? The headers refuse to build without UINT64_C, +// which only gets defined in stdint.h in either C99 mode or with this macro +// defined... +#define __STDC_CONSTANT_MACROS +#include extern "C" { #include @@ -25,6 +30,7 @@ namespace MWSound virtual void rewind(); FFmpeg_Decoder(); + public: virtual ~FFmpeg_Decoder(); friend class SoundManager; From deb473b9ae69a37a4c9db91a39f08c7184b5bb24 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 16:45:01 -0700 Subject: [PATCH 114/488] Implement the ffmpeg decoder --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 348 ++++++++++++++++++++++++- apps/openmw/mwsound/ffmpeg_decoder.hpp | 12 + 2 files changed, 354 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index cb14df946f..b8ad809263 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -9,33 +9,369 @@ namespace MWSound static void fail(const std::string &msg) { throw std::runtime_error("FFmpeg exception: "+msg); } + +struct PacketList { + AVPacket pkt; + PacketList *next; +}; + +struct FFmpeg_Decoder::MyStream { + AVCodecContext *mCodecCtx; + int mStreamIdx; + + PacketList *mPackets; + + char *mDecodedData; + size_t mDecodedDataSize; + + FFmpeg_Decoder *mParent; + + void clearPackets(); + void *getAVAudioData(size_t *length); + size_t readAVAudioData(void *data, size_t length); +}; + + +int FFmpeg_Decoder::readPacket(void *user_data, uint8_t *buf, int buf_size) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + return stream->read(buf, buf_size); +} + +int FFmpeg_Decoder::writePacket(void *user_data, uint8_t *buf, int buf_size) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + return stream->write(buf, buf_size); +} + +int64_t FFmpeg_Decoder::seek(void *user_data, int64_t offset, int whence) +{ + Ogre::DataStreamPtr stream = static_cast(user_data)->mDataStream; + + whence &= ~AVSEEK_FORCE; + if(whence == AVSEEK_SIZE) + return stream->size(); + if(whence == SEEK_SET) + stream->seek(offset); + else if(whence == SEEK_CUR) + stream->seek(stream->tell()+offset); + else if(whence == SEEK_END) + stream->seek(stream->size()+offset); + else + return -1; + + return stream->tell(); +} + + +/* Used by getAV*Data to search for more compressed data, and buffer it in the + * correct stream. It won't buffer data for streams that the app doesn't have a + * handle for. */ +bool FFmpeg_Decoder::getNextPacket(int streamidx) +{ + PacketList *packet; + + packet = (PacketList*)av_malloc(sizeof(*packet)); + packet->next = NULL; + +next_packet: + while(av_read_frame(mFormatCtx, &packet->pkt) >= 0) + { + std::vector::iterator iter = mStreams.begin(); + + /* Check each stream the user has a handle for, looking for the one + * this packet belongs to */ + while(iter != mStreams.end()) + { + if((*iter)->mStreamIdx == packet->pkt.stream_index) + { + PacketList **last; + + last = &(*iter)->mPackets; + while(*last != NULL) + last = &(*last)->next; + + *last = packet; + if((*iter)->mStreamIdx == streamidx) + return true; + + packet = (PacketList*)av_malloc(sizeof(*packet)); + packet->next = NULL; + goto next_packet; + } + iter++; + } + /* Free the packet and look for another */ + av_free_packet(&packet->pkt); + } + av_free(packet); + + return false; +} + +void FFmpeg_Decoder::MyStream::clearPackets() +{ + while(mPackets) + { + PacketList *self = mPackets; + mPackets = self->next; + + av_free_packet(&self->pkt); + av_free(self); + } +} + +void *FFmpeg_Decoder::MyStream::getAVAudioData(size_t *length) +{ + int size; + int len; + + if(length) *length = 0; + if(mCodecCtx->codec_type != AVMEDIA_TYPE_AUDIO) + return NULL; + + mDecodedDataSize = 0; + +next_packet: + if(!mPackets && !mParent->getNextPacket(mStreamIdx)) + return NULL; + + /* Decode some data, and check for errors */ + size = AVCODEC_MAX_AUDIO_FRAME_SIZE; + while((len=avcodec_decode_audio3(mCodecCtx, (int16_t*)mDecodedData, &size, + &mPackets->pkt)) == 0) + { + PacketList *self; + + if(size > 0) + break; + + /* Packet went unread and no data was given? Drop it and try the next, + * I guess... */ + self = mPackets; + mPackets = self->next; + + av_free_packet(&self->pkt); + av_free(self); + + if(!mPackets) + goto next_packet; + + size = AVCODEC_MAX_AUDIO_FRAME_SIZE; + } + + if(len < 0) + return NULL; + + if(len < mPackets->pkt.size) + { + /* Move the unread data to the front and clear the end bits */ + int remaining = mPackets->pkt.size - len; + memmove(mPackets->pkt.data, &mPackets->pkt.data[len], remaining); + memset(&mPackets->pkt.data[remaining], 0, mPackets->pkt.size - remaining); + mPackets->pkt.size -= len; + } + else + { + PacketList *self; + + self = mPackets; + mPackets = self->next; + + av_free_packet(&self->pkt); + av_free(self); + } + + if(size == 0) + goto next_packet; + + /* Set the output buffer size */ + mDecodedDataSize = size; + if(length) *length = mDecodedDataSize; + + return mDecodedData; +} + +size_t FFmpeg_Decoder::MyStream::readAVAudioData(void *data, size_t length) +{ + size_t dec = 0; + + while(dec < length) + { + /* If there's no decoded data, find some */ + if(mDecodedDataSize == 0) + { + if(getAVAudioData(NULL) == NULL) + break; + } + + if(mDecodedDataSize > 0) + { + /* Get the amount of bytes remaining to be written, and clamp to + * the amount of decoded data we have */ + size_t rem = length-dec; + if(rem > mDecodedDataSize) + rem = mDecodedDataSize; + + /* Copy the data to the app's buffer and increment */ + if(data != NULL) + { + memcpy(data, mDecodedData, rem); + data = (char*)data + rem; + } + dec += rem; + + /* If there's any decoded data left, move it to the front of the + * buffer for next time */ + if(rem < mDecodedDataSize) + memmove(mDecodedData, &mDecodedData[rem], mDecodedDataSize - rem); + mDecodedDataSize -= rem; + } + } + + /* Return the number of bytes we were able to get */ + return dec; +} + + + void FFmpeg_Decoder::open(const std::string &fname) { - fail("Not currently working"); + close(); + mDataStream = mResourceMgr.openResource(fname); + + if((mFormatCtx=avformat_alloc_context()) == NULL) + fail("Failed to allocate context"); + + try + { + mFormatCtx->pb = avio_alloc_context(NULL, 0, 0, this, readPacket, writePacket, seek); + if(!mFormatCtx->pb || avformat_open_input(&mFormatCtx, fname.c_str(), NULL, NULL) != 0) + fail("Failed to open input"); + + if(avformat_find_stream_info(mFormatCtx, NULL) < 0) + fail("Failed to find stream info"); + + for(size_t j = 0;j < mFormatCtx->nb_streams;j++) + { + if(mFormatCtx->streams[j]->codec->codec_type == AVMEDIA_TYPE_AUDIO) + { + std::auto_ptr stream(new MyStream); + stream->mCodecCtx = mFormatCtx->streams[j]->codec; + stream->mStreamIdx = j; + stream->mPackets = NULL; + + AVCodec *codec; + codec = avcodec_find_decoder(stream->mCodecCtx->codec_id); + if(!codec || avcodec_open(stream->mCodecCtx, codec) < 0) + fail("Could not open audio codec"); + + stream->mDecodedData = (char*)av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE); + stream->mDecodedDataSize = 0; + + stream->mParent = this; + mStreams.push_back(stream.release()); + break; + } + } + if(mStreams.empty()) + fail("No audio streams"); + } + catch(std::exception &e) + { + av_close_input_file(mFormatCtx); + mFormatCtx = NULL; + throw; + } } void FFmpeg_Decoder::close() { + while(!mStreams.empty()) + { + MyStream *stream = mStreams.front(); + + stream->clearPackets(); + avcodec_close(stream->mCodecCtx); + av_free(stream->mDecodedData); + + mStreams.erase(mStreams.begin()); + } + if(mFormatCtx) + av_close_input_file(mFormatCtx); + mFormatCtx = NULL; } void FFmpeg_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) { - fail("Not currently working"); + if(mStreams.empty()) + fail("No audio stream info"); + + MyStream *stream = mStreams[0]; + if(stream->mCodecCtx->sample_fmt == AV_SAMPLE_FMT_U8) + *type = SampleType_UInt8; + else if(stream->mCodecCtx->sample_fmt == AV_SAMPLE_FMT_S16) + *type = SampleType_Int16; + else + fail(std::string("Unsupported sample format:")+ + av_get_sample_fmt_name(stream->mCodecCtx->sample_fmt)); + + if(stream->mCodecCtx->channel_layout == AV_CH_LAYOUT_MONO) + *chans = ChannelConfig_Mono; + else if(stream->mCodecCtx->channel_layout == AV_CH_LAYOUT_STEREO) + *chans = ChannelConfig_Stereo; + else if(stream->mCodecCtx->channel_layout == 0) + { + /* Unknown channel layout. Try to guess. */ + if(stream->mCodecCtx->channels == 1) + *chans = ChannelConfig_Mono; + else if(stream->mCodecCtx->channels == 2) + *chans = ChannelConfig_Stereo; + else + { + std::stringstream sstr("Unsupported raw channel count: "); + sstr << stream->mCodecCtx->channels; + fail(sstr.str()); + } + } + else + { + char str[1024]; + av_get_channel_layout_string(str, sizeof(str), stream->mCodecCtx->channels, + stream->mCodecCtx->channel_layout); + fail(std::string("Unsupported channel layout: ")+str); + } + + *samplerate = stream->mCodecCtx->sample_rate; } size_t FFmpeg_Decoder::read(char *buffer, size_t bytes) { - fail("Not currently working"); - return 0; + if(mStreams.empty()) + fail("No audio streams"); + + return mStreams.front()->readAVAudioData(buffer, bytes); } void FFmpeg_Decoder::rewind() { - fail("Not currently working"); + av_seek_frame(mFormatCtx, -1, 0, 0); + for(size_t i = 0;i < mStreams.size();i++) + mStreams[i]->clearPackets(); } -FFmpeg_Decoder::FFmpeg_Decoder() +FFmpeg_Decoder::FFmpeg_Decoder() : mFormatCtx(NULL) { + static bool done_init = false; + + /* We need to make sure ffmpeg is initialized. Optionally silence warning + * output from the lib */ + if(!done_init) + { + av_register_all(); + av_log_set_level(AV_LOG_ERROR); + done_init = true; + } } FFmpeg_Decoder::~FFmpeg_Decoder() diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index de39259886..9211bcc0dc 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -21,6 +21,18 @@ namespace MWSound { class FFmpeg_Decoder : public Sound_Decoder { + AVFormatContext *mFormatCtx; + + struct MyStream; + std::vector mStreams; + + bool getNextPacket(int streamidx); + + Ogre::DataStreamPtr mDataStream; + static int readPacket(void *user_data, uint8_t *buf, int buf_size); + static int writePacket(void *user_data, uint8_t *buf, int buf_size); + static int64_t seek(void *user_data, int64_t offset, int whence); + virtual void open(const std::string &fname); virtual void close(); From 26a441f29a418c7c87db881491526c854ff07b97 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 17:57:28 -0700 Subject: [PATCH 115/488] Add a readAll method to the sound decoder, for potentially more efficient reading --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 12 ++++++++++++ apps/openmw/mwsound/ffmpeg_decoder.hpp | 1 + apps/openmw/mwsound/mpgsnd_decoder.cpp | 22 +++++++++++++++++----- apps/openmw/mwsound/mpgsnd_decoder.hpp | 2 ++ apps/openmw/mwsound/openal_output.cpp | 15 +++++---------- apps/openmw/mwsound/sound_decoder.hpp | 1 + apps/openmw/mwsound/soundmanager.cpp | 16 ++++++++++++++++ 7 files changed, 54 insertions(+), 15 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index b8ad809263..55ccad43d7 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -353,6 +353,18 @@ size_t FFmpeg_Decoder::read(char *buffer, size_t bytes) return mStreams.front()->readAVAudioData(buffer, bytes); } +void FFmpeg_Decoder::readAll(std::vector &output) +{ + if(mStreams.empty()) + fail("No audio streams"); + MyStream *stream = mStreams.front(); + char *inbuf; + size_t got; + + while((inbuf=(char*)stream->getAVAudioData(&got)) != NULL && got > 0) + output.insert(output.end(), inbuf, inbuf+got); +} + void FFmpeg_Decoder::rewind() { av_seek_frame(mFormatCtx, -1, 0, 0); diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index 9211bcc0dc..ae71c00523 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -39,6 +39,7 @@ namespace MWSound virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type); virtual size_t read(char *buffer, size_t bytes); + virtual void readAll(std::vector &output); virtual void rewind(); FFmpeg_Decoder(); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index f9bef9774b..f576833a82 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -83,17 +83,16 @@ void MpgSnd_Decoder::open(const std::string &fname) close(); mDataStream = mResourceMgr.openResource(fname); - SF_INFO info; SF_VIRTUAL_IO streamIO = { ogresf_get_filelen, ogresf_seek, ogresf_read, ogresf_write, ogresf_tell }; - mSndFile = sf_open_virtual(&streamIO, SFM_READ, &info, this); + mSndFile = sf_open_virtual(&streamIO, SFM_READ, &mSndInfo, this); if(mSndFile) { - if(info.channels == 1) + if(mSndInfo.channels == 1) mChanConfig = ChannelConfig_Mono; - else if(info.channels == 2) + else if(mSndInfo.channels == 2) mChanConfig = ChannelConfig_Stereo; else { @@ -101,7 +100,7 @@ void MpgSnd_Decoder::open(const std::string &fname) mSndFile = NULL; fail("Unsupported channel count in "+fname); } - mSampleRate = info.samplerate; + mSampleRate = mSndInfo.samplerate; return; } mDataStream->seek(0); @@ -184,6 +183,19 @@ size_t MpgSnd_Decoder::read(char *buffer, size_t bytes) return got; } +void MpgSnd_Decoder::readAll(std::vector &output) +{ + if(mSndFile && mSndInfo.frames > 0) + { + size_t pos = output.size(); + output.resize(pos + mSndInfo.frames*mSndInfo.channels*2); + sf_readf_short(mSndFile, (short*)(output.data()+pos), mSndInfo.frames); + return; + } + // Fallback in case we don't know the total already + Sound_Decoder::readAll(output); +} + void MpgSnd_Decoder::rewind() { if(!mSndFile && !mMpgFile) diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index 35c753ec81..1d9e9d5e22 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -15,6 +15,7 @@ namespace MWSound { class MpgSnd_Decoder : public Sound_Decoder { + SF_INFO mSndInfo; SNDFILE *mSndFile; mpg123_handle *mMpgFile; @@ -36,6 +37,7 @@ namespace MWSound virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type); virtual size_t read(char *buffer, size_t bytes); + virtual void readAll(std::vector &output); virtual void rewind(); MpgSnd_Decoder(); diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 7768119b6e..1efb70db47 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -442,30 +442,25 @@ ALuint OpenAL_Output::getBuffer(const std::string &fname) } throwALerror(); - int srate; + std::vector data; ChannelConfig chans; SampleType type; ALenum format; + int srate; DecoderPtr decoder = mManager.getDecoder(); decoder->open(fname); + decoder->getInfo(&srate, &chans, &type); format = getALFormat(chans, type); - std::vector data(32768); - size_t got, total = 0; - while((got=decoder->read(&data[total], data.size()-total)) > 0) - { - total += got; - data.resize(total*2); - } - data.resize(total); + decoder->readAll(data); decoder->close(); alGenBuffers(1, &buf); throwALerror(); - alBufferData(buf, format, &data[0], total, srate); + alBufferData(buf, format, data.data(), data.size(), srate); mBufferCache[fname] = buf; mBufferRefs[buf] = 1; diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index 858cc63531..e076c7b567 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -32,6 +32,7 @@ namespace MWSound virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) = 0; virtual size_t read(char *buffer, size_t bytes) = 0; + virtual void readAll(std::vector &output); virtual void rewind() = 0; Sound_Decoder() : mResourceMgr(Ogre::ResourceGroupManager::getSingleton()) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index ec5ab310b7..ded94aee3b 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -449,6 +449,22 @@ namespace MWSound updateRegionSound(duration); } + // Default readAll implementation, for decoders that can't do anything + // better + void Sound_Decoder::readAll(std::vector &output) + { + size_t total = output.size(); + size_t got; + + output.resize(total+32768); + while((got=read(&output[total], output.size()-total)) > 0) + { + total += got; + output.resize(total*2); + } + output.resize(total); + } + const char *getSampleTypeName(SampleType type) { From 2989a1e06e7b70273aeb2f8e9c1e57bbcc79b9c7 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 18:49:52 -0700 Subject: [PATCH 116/488] Improve ffmpeg failure messages --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 55ccad43d7..d1a90da13f 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -247,10 +247,10 @@ void FFmpeg_Decoder::open(const std::string &fname) { mFormatCtx->pb = avio_alloc_context(NULL, 0, 0, this, readPacket, writePacket, seek); if(!mFormatCtx->pb || avformat_open_input(&mFormatCtx, fname.c_str(), NULL, NULL) != 0) - fail("Failed to open input"); + fail("Failed to open input stream for "+fname); if(avformat_find_stream_info(mFormatCtx, NULL) < 0) - fail("Failed to find stream info"); + fail("Failed to find stream info in "+fname); for(size_t j = 0;j < mFormatCtx->nb_streams;j++) { @@ -261,10 +261,15 @@ void FFmpeg_Decoder::open(const std::string &fname) stream->mStreamIdx = j; stream->mPackets = NULL; - AVCodec *codec; - codec = avcodec_find_decoder(stream->mCodecCtx->codec_id); - if(!codec || avcodec_open(stream->mCodecCtx, codec) < 0) - fail("Could not open audio codec"); + AVCodec *codec = avcodec_find_decoder(stream->mCodecCtx->codec_id); + if(!codec) + { + std::stringstream ss("No codec found for id "); + ss << stream->mCodecCtx->codec_id; + fail(ss.str()); + } + if(avcodec_open(stream->mCodecCtx, codec) < 0) + fail("Failed to open audio codec " + std::string(codec->long_name)); stream->mDecodedData = (char*)av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE); stream->mDecodedDataSize = 0; @@ -275,7 +280,7 @@ void FFmpeg_Decoder::open(const std::string &fname) } } if(mStreams.empty()) - fail("No audio streams"); + fail("No audio streams in "+fname); } catch(std::exception &e) { @@ -313,7 +318,7 @@ void FFmpeg_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType * else if(stream->mCodecCtx->sample_fmt == AV_SAMPLE_FMT_S16) *type = SampleType_Int16; else - fail(std::string("Unsupported sample format:")+ + fail(std::string("Unsupported sample format: ")+ av_get_sample_fmt_name(stream->mCodecCtx->sample_fmt)); if(stream->mCodecCtx->channel_layout == AV_CH_LAYOUT_MONO) From 7b22ee6fd1a4113a131bc74016a92fef5cbe582a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 20 Mar 2012 21:46:12 -0700 Subject: [PATCH 117/488] Use for_each to clear the ffmpeg stream packets --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index d1a90da13f..fb530de913 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -373,8 +373,7 @@ void FFmpeg_Decoder::readAll(std::vector &output) void FFmpeg_Decoder::rewind() { av_seek_frame(mFormatCtx, -1, 0, 0); - for(size_t i = 0;i < mStreams.size();i++) - mStreams[i]->clearPackets(); + std::for_each(mStreams.begin(), mStreams.end(), std::mem_fun(&MyStream::clearPackets)); } FFmpeg_Decoder::FFmpeg_Decoder() : mFormatCtx(NULL) From fd8326e9585259609122b8d289848328749c13a2 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 12:20:36 -0700 Subject: [PATCH 118/488] Better handle some ffmpeg errors --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index fb530de913..3ba1af525d 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -243,12 +243,16 @@ void FFmpeg_Decoder::open(const std::string &fname) if((mFormatCtx=avformat_alloc_context()) == NULL) fail("Failed to allocate context"); + mFormatCtx->pb = avio_alloc_context(NULL, 0, 0, this, readPacket, writePacket, seek); + if(!mFormatCtx->pb || avformat_open_input(&mFormatCtx, fname.c_str(), NULL, NULL) != 0) + { + avformat_free_context(mFormatCtx); + mFormatCtx = NULL; + fail("Failed to allocate input stream"); + } + try { - mFormatCtx->pb = avio_alloc_context(NULL, 0, 0, this, readPacket, writePacket, seek); - if(!mFormatCtx->pb || avformat_open_input(&mFormatCtx, fname.c_str(), NULL, NULL) != 0) - fail("Failed to open input stream for "+fname); - if(avformat_find_stream_info(mFormatCtx, NULL) < 0) fail("Failed to find stream info in "+fname); From 0d973ac8ffa5d7cf196642c83907c85eef52c869 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 14:38:37 -0700 Subject: [PATCH 119/488] Use the vector's data field instead of the address of the first element Same thing really, but less convoluted --- apps/openmw/mwsound/openal_output.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 1efb70db47..d41d692db6 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -204,8 +204,8 @@ void OpenAL_SoundStream::play() for(ALuint i = 0;i < sNumBuffers;i++) { size_t got; - got = mDecoder->read(&data[0], data.size()); - alBufferData(mBuffers[i], mFormat, &data[0], got, mSampleRate); + got = mDecoder->read(data.data(), data.size()); + alBufferData(mBuffers[i], mFormat, data.data(), got, mSampleRate); } throwALerror(); @@ -270,11 +270,11 @@ bool OpenAL_SoundStream::process() if(mIsFinished) continue; - got = mDecoder->read(&data[0], data.size()); + got = mDecoder->read(data.data(), data.size()); mIsFinished = (got < data.size()); if(got > 0) { - alBufferData(bufid, mFormat, &data[0], got, mSampleRate); + alBufferData(bufid, mFormat, data.data(), got, mSampleRate); alSourceQueueBuffers(mSource, 1, &bufid); } } while(processed > 0); From 6a85ef12299f12b302d9c7c14751ba426c5873b9 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 14:46:29 -0700 Subject: [PATCH 120/488] Set Ogre's data stream to NULL when closing the audio file --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 3ba1af525d..41859f7fd9 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -309,6 +309,8 @@ void FFmpeg_Decoder::close() if(mFormatCtx) av_close_input_file(mFormatCtx); mFormatCtx = NULL; + + mDataStream.setNull(); } void FFmpeg_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) From 8c5f85ca83907f31ba4532bbe0afae15a3986630 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 14:49:29 -0700 Subject: [PATCH 121/488] Use a local variable to mark sound streams as finished while processing This avoids a race condition where the source can underrun while the final buffers are being queued and the sound can be detected as stopped --- apps/openmw/mwsound/openal_output.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index d41d692db6..ed7be21f63 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -251,6 +251,7 @@ void OpenAL_SoundStream::update(const float *pos) bool OpenAL_SoundStream::process() { + bool finished = mIsFinished; ALint processed, state; alGetSourcei(mSource, AL_SOURCE_STATE, &state); @@ -267,11 +268,11 @@ bool OpenAL_SoundStream::process() alSourceUnqueueBuffers(mSource, 1, &bufid); processed--; - if(mIsFinished) + if(finished) continue; got = mDecoder->read(data.data(), data.size()); - mIsFinished = (got < data.size()); + finished = (got < data.size()); if(got > 0) { alBufferData(bufid, mFormat, data.data(), got, mSampleRate); @@ -294,7 +295,8 @@ bool OpenAL_SoundStream::process() } } - return !mIsFinished; + mIsFinished = finished; + return !finished; } // From 56c3b988ccb60c66daa20db7ba0dd0fe333de2e0 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 15:19:40 -0700 Subject: [PATCH 122/488] Avoid copying the region when looking for a sound to play --- apps/openmw/mwsound/soundmanager.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index ded94aee3b..a46c17e79d 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -343,38 +343,34 @@ namespace MWSound timePassed += duration; if((current->cell->data.flags & current->cell->Interior) || timePassed < 10) return; - - ESM::Region test = (ESM::Region) *(mEnvironment.mWorld->getStore().regions.find(current->cell->region)); - timePassed = 0; + if(regionName != current->cell->region) { regionName = current->cell->region; total = 0; } - if(test.soundList.size() == 0) + const ESM::Region *regn = mEnvironment.mWorld->getStore().regions.find(regionName); + if(regn->soundList.size() == 0) return; - std::vector::iterator soundIter; + std::vector::const_iterator soundIter; if(total == 0) { - soundIter = test.soundList.begin(); - while(soundIter != test.soundList.end()) + soundIter = regn->soundList.begin(); + while(soundIter != regn->soundList.end()) { - int chance = (int) soundIter->chance; - //ESM::NAME32 go = soundIter->sound; - //std::cout << "Sound: " << go.name <<" Chance:" << chance << "\n"; + total += (int)soundIter->chance; soundIter++; - total += chance; } } int r = rand() % total; //old random code int pos = 0; - soundIter = test.soundList.begin(); - while(soundIter != test.soundList.end()) + soundIter = regn->soundList.begin(); + while(soundIter != regn->soundList.end()) { const std::string go = soundIter->sound.toString(); int chance = (int) soundIter->chance; From 9a139f511f5937e5ad34e2765332857817a5502e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 15:29:05 -0700 Subject: [PATCH 123/488] Avoid redefining SOUND_IN --- apps/openmw/mwsound/soundmanager.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a46c17e79d..5a6b07e0a8 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -23,13 +23,17 @@ */ #ifdef OPENMW_USE_FFMPEG #include "ffmpeg_decoder.hpp" +#ifndef SOUND_IN #define SOUND_IN "FFmpeg" #endif +#endif #ifdef OPENMW_USE_MPG123 #include "mpgsnd_decoder.hpp" +#ifndef SOUND_IN #define SOUND_IN "mpg123,sndfile" #endif +#endif namespace MWSound From ebc49de85117bca4137b45cf95fe4a9e9a98d2fd Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Thu, 22 Mar 2012 00:39:19 +0200 Subject: [PATCH 124/488] Fix Bug #1: "Meshes rendered with wrong orientation" Discard the tranformation of the root NiNode when loading nif files (set the 'identity' transformation instead). After applying the fix test the following types of interiors: - Dwemer ruins (the bug was common here before the fix) - Ancestral tombs (the bug was common here before the fix) - Daedric shrines - Caves/grottos - Dunmer strongholds - Telvanni, imperial, redoran houses/towers/castles Also checked exteriors (although it is hard to do without terrain rendering) --- components/nif/nif_file.cpp | 9 +++++++++ components/nif/nif_types.hpp | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/components/nif/nif_file.cpp b/components/nif/nif_file.cpp index 52a37ba5c1..80ea7a0b7f 100644 --- a/components/nif/nif_file.cpp +++ b/components/nif/nif_file.cpp @@ -162,6 +162,15 @@ void NIFFile::parse() r->recName = rec; records[i] = r; r->read(this); + + // Discard tranformations for the root node, otherwise some meshes + // occasionally get wrong orientation. Only for NiNode-s for now, but + // can be expanded if needed. + // This should be rewritten when the method is cleaned up. + if (0 == i && rec == "NiNode") + { + static_cast(r)->trafo = Nif::Transformation::getIdentity(); + } } /* After the data, the nif contains an int N and then a list of N diff --git a/components/nif/nif_types.hpp b/components/nif/nif_types.hpp index 17cec19bcd..ce7a0de628 100644 --- a/components/nif/nif_types.hpp +++ b/components/nif/nif_types.hpp @@ -59,6 +59,21 @@ struct Transformation Matrix rotation; float scale; Vector velocity; + + static const Transformation* getIdentity() + { + static Transformation* identity = NULL; + if (NULL == identity) + { + identity = new Transformation(); + identity->scale = 1.0f; + identity->rotation.v[0].array[0] = 1.0f; + identity->rotation.v[1].array[1] = 1.0f; + identity->rotation.v[2].array[2] = 1.0f; + } + + return identity; + } }; #pragma pack(pop) From 8056a7f20b22d57c77a9cb42addcad84da022672 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 18:20:32 -0700 Subject: [PATCH 125/488] Throw an exception when looking up a sound instead of returning an empty string --- apps/openmw/mwsound/soundmanager.cpp | 39 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 5a6b07e0a8..cce1bfefe9 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -86,7 +86,8 @@ namespace MWSound float &volume, float &min, float &max) { const ESM::Sound *snd = mEnvironment.mWorld->getStore().sounds.search(soundId); - if(snd == NULL) return ""; + if(snd == NULL) + throw std::runtime_error(std::string("Failed to lookup sound ")+soundId); if(snd->data.volume == 0) volume = 0.0f; @@ -224,34 +225,32 @@ namespace MWSound void SoundManager::playSound(const std::string& soundId, float volume, float pitch, bool loop) { float min, max; - std::string file = lookup(soundId, volume, min, max); - if(!file.empty()) + try { - try - { - Sound *sound; - sound = mOutput->playSound(file, volume, pitch, loop); - mLooseSounds[soundId] = SoundPtr(sound); - } - catch(std::exception &e) - { - std::cout <<"Sound play error: "<playSound(file, volume, pitch, loop); + mLooseSounds[soundId] = SoundPtr(sound); + } + catch(std::exception &e) + { + std::cout <<"Sound play error: "< Date: Wed, 21 Mar 2012 18:35:20 -0700 Subject: [PATCH 126/488] Replace the sound file extension when opening fails This should make it more efficient to lookup a sound instead of checking each time it's played. A better method would perhaps be to check if the resource exists when the ESM is loaded and replace it then as needed. --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 12 +++++++++++- apps/openmw/mwsound/mpgsnd_decoder.cpp | 12 +++++++++++- apps/openmw/mwsound/soundmanager.cpp | 15 +-------------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 41859f7fd9..edc9e6e295 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -238,7 +238,17 @@ size_t FFmpeg_Decoder::MyStream::readAVAudioData(void *data, size_t length) void FFmpeg_Decoder::open(const std::string &fname) { close(); - mDataStream = mResourceMgr.openResource(fname); + try + { + mDataStream = mResourceMgr.openResource(fname); + } + catch(Ogre::Exception &e) + { + std::string::size_type pos = fname.rfind('.'); + if(pos == std::string::npos) + throw; + mDataStream = mResourceMgr.openResource(fname.substr(0, pos)+".mp3"); + } if((mFormatCtx=avformat_alloc_context()) == NULL) fail("Failed to allocate context"); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index f576833a82..e014008a06 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -81,7 +81,17 @@ off_t MpgSnd_Decoder::ogrempg_lseek(void *user_data, off_t offset, int whence) void MpgSnd_Decoder::open(const std::string &fname) { close(); - mDataStream = mResourceMgr.openResource(fname); + try + { + mDataStream = mResourceMgr.openResource(fname); + } + catch(Ogre::Exception &e) + { + std::string::size_type pos = fname.rfind('.'); + if(pos == std::string::npos) + throw; + mDataStream = mResourceMgr.openResource(fname.substr(0, pos)+".mp3"); + } SF_VIRTUAL_IO streamIO = { ogresf_get_filelen, ogresf_seek, diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index cce1bfefe9..6c415957fb 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -107,14 +107,7 @@ namespace MWSound max = std::max(min, max); } - std::string fname = std::string("Sound\\")+snd->sound; - if(!mResourceMgr->resourceExistsInAnyGroup(fname)) - { - std::string::size_type pos = fname.rfind('.'); - if(pos != std::string::npos) - fname = fname.substr(0, pos)+".mp3"; - } - return fname; + return std::string("Sound/")+snd->sound; } // Add a sound to the list and play it @@ -207,12 +200,6 @@ namespace MWSound { // The range values are not tested std::string filePath = std::string("Sound\\")+filename; - if(!mResourceMgr->resourceExistsInAnyGroup(filePath)) - { - std::string::size_type pos = filePath.rfind('.'); - if(pos != std::string::npos) - filePath = filePath.substr(0, pos)+".mp3"; - } play3d(filePath, ptr, "_say_sound", 1, 1, 100, 20000, false); } From e6fe1c026117afba201d0abf607f50d3e94e37c4 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 19:08:11 -0700 Subject: [PATCH 127/488] Remove a mostly unneeded wrapper function --- apps/openmw/mwsound/soundmanager.cpp | 47 ++++++++++++---------------- apps/openmw/mwsound/soundmanager.hpp | 4 --- 2 files changed, 20 insertions(+), 31 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 6c415957fb..36e058c6fe 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -110,27 +110,6 @@ namespace MWSound return std::string("Sound/")+snd->sound; } - // Add a sound to the list and play it - void SoundManager::play3d(const std::string &file, - MWWorld::Ptr ptr, - const std::string &id, - float volume, float pitch, - float min, float max, - bool loop, bool untracked) - { - try - { - const ESM::Position &pos = ptr.getCellRef().pos; - SoundPtr sound(mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop)); - - if(untracked) mLooseSounds[id] = sound; - else mActiveSounds[ptr][id] = sound; - } - catch(std::exception &e) - { - std::cout <<"Sound Error: "<playSound3D(filePath, pos.pos, 1.0f, 1.0f, 100.0f, 20000.0f, false)); + mActiveSounds[ptr]["_say_sound"] = sound; + } + catch(std::exception &e) + { + std::cout <<"Sound Error: "<playSound3D(file, pos.pos, volume, pitch, min, max, loop)); + if(untracked) mLooseSounds[soundId] = sound; + else mActiveSounds[ptr][soundId] = sound; } catch(std::exception &e) { - std::cout <<"Sound play error: "< Date: Wed, 21 Mar 2012 19:21:36 -0700 Subject: [PATCH 128/488] Use a separate method to check for finished sounds and update the listener --- apps/openmw/mwsound/soundmanager.cpp | 90 +++++++++++++++------------- apps/openmw/mwsound/soundmanager.hpp | 1 + 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 36e058c6fe..4cc4eec934 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -370,64 +370,68 @@ namespace MWSound } } - void SoundManager::update(float duration) + void SoundManager::updateSounds(float duration) { static float timePassed = 0.0; timePassed += duration; - if(timePassed > (1.0f/30.0f)) + if(timePassed < (1.0f/30.0f)) + return; + timePassed = 0.0f; + + // Make sure music is still playing + if(!isMusicPlaying()) + startRandomTitle(); + + Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); + Ogre::Vector3 nPos, nDir, nUp; + nPos = cam->getRealPosition(); + nDir = cam->getRealDirection(); + nUp = cam->getRealUp(); + + // The output handler is expecting vectors oriented like the game + // (that is, -Z goes down, +Y goes forward), but that's not what we + // get from Ogre's camera, so we have to convert. + float pos[3] = { nPos[0], -nPos[2], nPos[1] }; + float at[3] = { nDir[0], -nDir[2], nDir[1] }; + float up[3] = { nUp[0], -nUp[2], nUp[1] }; + mOutput->updateListener(pos, at, up); + + // Check if any sounds are finished playing, and trash them + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) { - timePassed = 0.0f; - - // Make sure music is still playing - if(!isMusicPlaying()) - startRandomTitle(); - - Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); - Ogre::Vector3 nPos, nDir, nUp; - nPos = cam->getRealPosition(); - nDir = cam->getRealDirection(); - nUp = cam->getRealUp(); - - // The output handler is expecting vectors oriented like the game - // (that is, -Z goes down, +Y goes forward), but that's not what we - // get from Ogre's camera, so we have to convert. - float pos[3] = { nPos[0], -nPos[2], nPos[1] }; - float at[3] = { nDir[0], -nDir[2], nDir[1] }; - float up[3] = { nUp[0], -nUp[2], nUp[1] }; - mOutput->updateListener(pos, at, up); - - // Check if any sounds are finished playing, and trash them - SoundMap::iterator snditer = mActiveSounds.begin(); - while(snditer != mActiveSounds.end()) - { - IDMap::iterator iditer = snditer->second.begin(); - while(iditer != snditer->second.end()) - { - if(!iditer->second->isPlaying()) - snditer->second.erase(iditer++); - else - iditer++; - } - if(snditer->second.empty()) - mActiveSounds.erase(snditer++); - else - snditer++; - } - - IDMap::iterator iditer = mLooseSounds.begin(); - while(iditer != mLooseSounds.end()) + IDMap::iterator iditer = snditer->second.begin(); + while(iditer != snditer->second.end()) { if(!iditer->second->isPlaying()) - mLooseSounds.erase(iditer++); + snditer->second.erase(iditer++); else iditer++; } + if(snditer->second.empty()) + mActiveSounds.erase(snditer++); + else + snditer++; } + IDMap::iterator iditer = mLooseSounds.begin(); + while(iditer != mLooseSounds.end()) + { + if(!iditer->second->isPlaying()) + mLooseSounds.erase(iditer++); + else + iditer++; + } + } + + void SoundManager::update(float duration) + { + updateSounds(duration); updateRegionSound(duration); } + // Default readAll implementation, for decoders that can't do anything // better void Sound_Decoder::readAll(std::vector &output) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 5c64d912d3..433f2c169c 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -56,6 +56,7 @@ namespace MWSound float &volume, float &min, float &max); void streamMusicFull(const std::string& filename); bool isPlaying(MWWorld::Ptr ptr, const std::string &id) const; + void updateSounds(float duration); void updateRegionSound(float duration); protected: From f11e3e39a146187ac9c4df8bd8f6a8d051f491f4 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 20:15:01 -0700 Subject: [PATCH 129/488] Add an enumerate method to the sound output interface --- apps/openmw/mwsound/openal_output.cpp | 14 ++++++++++++++ apps/openmw/mwsound/openal_output.hpp | 1 + apps/openmw/mwsound/sound_output.hpp | 1 + apps/openmw/mwsound/soundmanager.cpp | 6 ++++++ 4 files changed, 22 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index ed7be21f63..6ee36b1ab1 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -358,6 +358,20 @@ void OpenAL_Sound::update(const float *pos) // // An OpenAL output device // +std::vector OpenAL_Output::enumerate() +{ + std::vector devlist; + const ALCchar *devnames; + + devnames = alcGetString(NULL, ALC_DEVICE_SPECIFIER); + while(devnames && *devnames) + { + devlist.push_back(devnames); + devnames += strlen(devnames)+1; + } + return devlist; +} + void OpenAL_Output::init(const std::string &devname) { if(mDevice || mContext) diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index aeb64ad0d1..6e41c7deed 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -38,6 +38,7 @@ namespace MWSound ALuint getBuffer(const std::string &fname); void bufferFinished(ALuint buffer); + virtual std::vector enumerate(); virtual void init(const std::string &devname=""); virtual void deinit(); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index a2a035e710..14b61e6099 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -16,6 +16,7 @@ namespace MWSound { SoundManager &mManager; + virtual std::vector enumerate() = 0; virtual void init(const std::string &devname="") = 0; virtual void deinit() = 0; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 4cc4eec934..e3931afd64 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -53,6 +53,12 @@ namespace MWSound try { mOutput.reset(new DEFAULT_OUTPUT(*this)); + + std::vector names = mOutput->enumerate(); + std::cout <<"Enumerated output devices:"<< std::endl; + for(size_t i = 0;i < names.size();i++) + std::cout <<" "<init(); } catch(std::exception &e) From 15317796bf67b5834ef924ef0b09d61c14c6b0be Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 22:49:40 -0700 Subject: [PATCH 130/488] Handle the wav -> mp3 extension conversion in the sound output backend --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 12 +----------- apps/openmw/mwsound/mpgsnd_decoder.cpp | 12 +----------- apps/openmw/mwsound/openal_output.cpp | 12 +++++++++++- 3 files changed, 13 insertions(+), 23 deletions(-) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index edc9e6e295..41859f7fd9 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -238,17 +238,7 @@ size_t FFmpeg_Decoder::MyStream::readAVAudioData(void *data, size_t length) void FFmpeg_Decoder::open(const std::string &fname) { close(); - try - { - mDataStream = mResourceMgr.openResource(fname); - } - catch(Ogre::Exception &e) - { - std::string::size_type pos = fname.rfind('.'); - if(pos == std::string::npos) - throw; - mDataStream = mResourceMgr.openResource(fname.substr(0, pos)+".mp3"); - } + mDataStream = mResourceMgr.openResource(fname); if((mFormatCtx=avformat_alloc_context()) == NULL) fail("Failed to allocate context"); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index e014008a06..f576833a82 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -81,17 +81,7 @@ off_t MpgSnd_Decoder::ogrempg_lseek(void *user_data, off_t offset, int whence) void MpgSnd_Decoder::open(const std::string &fname) { close(); - try - { - mDataStream = mResourceMgr.openResource(fname); - } - catch(Ogre::Exception &e) - { - std::string::size_type pos = fname.rfind('.'); - if(pos == std::string::npos) - throw; - mDataStream = mResourceMgr.openResource(fname.substr(0, pos)+".mp3"); - } + mDataStream = mResourceMgr.openResource(fname); SF_VIRTUAL_IO streamIO = { ogresf_get_filelen, ogresf_seek, diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 6ee36b1ab1..456ee534c1 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -465,7 +465,17 @@ ALuint OpenAL_Output::getBuffer(const std::string &fname) int srate; DecoderPtr decoder = mManager.getDecoder(); - decoder->open(fname); + try + { + decoder->open(fname); + } + catch(Ogre::FileNotFoundException &e) + { + std::string::size_type pos = fname.rfind('.'); + if(pos == std::string::npos) + throw; + decoder->open(fname.substr(0, pos)+".mp3"); + } decoder->getInfo(&srate, &chans, &type); format = getALFormat(chans, type); From bac6df5563ea7ca50c932a416b53e60dd6237af0 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 21 Mar 2012 23:32:24 -0700 Subject: [PATCH 131/488] Avoid leaking an ffmpeg stream --- apps/openmw/mwsound/ffmpeg_decoder.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 41859f7fd9..9298bf8488 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -303,6 +303,7 @@ void FFmpeg_Decoder::close() stream->clearPackets(); avcodec_close(stream->mCodecCtx); av_free(stream->mDecodedData); + delete stream; mStreams.erase(mStreams.begin()); } From fd4826d06fc9cb6489f10c177c2fcee4786939e0 Mon Sep 17 00:00:00 2001 From: Pieter van der Kloet Date: Thu, 22 Mar 2012 12:34:43 +0100 Subject: [PATCH 132/488] Fix for Bug #222, config is always written to user location now --- apps/launcher/datafilespage.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/launcher/datafilespage.cpp b/apps/launcher/datafilespage.cpp index c96fc2c7b6..6d8c1f19dd 100644 --- a/apps/launcher/datafilespage.cpp +++ b/apps/launcher/datafilespage.cpp @@ -1057,16 +1057,8 @@ void DataFilesPage::writeConfig(QString profile) return; } - // Prepare the OpenMW config - QString config = QString::fromStdString((mCfgMgr.getLocalPath() / "openmw.cfg").string()); - QFile file(config); - - if (!file.exists()) { - config = QString::fromStdString((mCfgMgr.getUserPath() / "openmw.cfg").string()); - } - - // Open the config as a QFile - file.setFileName(config); + // Open the OpenMW config as a QFile + QFile file(QString::fromStdString((mCfgMgr.getUserPath() / "openmw.cfg").string())); if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { // File cannot be opened or created From 73a1b256a880d69dbd0de24c35be4752223b16e0 Mon Sep 17 00:00:00 2001 From: Pieter van der Kloet Date: Thu, 22 Mar 2012 12:42:08 +0100 Subject: [PATCH 133/488] Changed warning dialog text to be less ambiguous --- apps/launcher/datafilespage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/launcher/datafilespage.cpp b/apps/launcher/datafilespage.cpp index 6d8c1f19dd..c15274e749 100644 --- a/apps/launcher/datafilespage.cpp +++ b/apps/launcher/datafilespage.cpp @@ -225,7 +225,7 @@ void DataFilesPage::setupDataFiles() msgBox.setIcon(QMessageBox::Warning); msgBox.setStandardButtons(QMessageBox::Cancel); msgBox.setText(tr("
Could not find the Data Files location

\ - The directory containing the Data Files was not found.

\ + The directory containing the data files was not found.

\ Press \"Browse...\" to specify the location manually.
")); QAbstractButton *dirSelectButton = From 6df6cbc71a002480f37f0f3296b4715c01d02891 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Thu, 22 Mar 2012 14:12:43 +0100 Subject: [PATCH 134/488] updated changelog once more --- readme.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.txt b/readme.txt index 8f360235fd..4c265c4624 100644 --- a/readme.txt +++ b/readme.txt @@ -144,6 +144,7 @@ Bug #207: Ogre.log not written Bug #209: Sounds do not play Bug #210: Ogre crash at Dren plantation Bug #214: Unsupported file format version +Bug #222: Launcher is writing openmw.cfg file to wrong location Feature #9: NPC Dialogue Window Feature #16/42: New sky/weather implementation Feature #40: Fading From 2e288192433c8834ea959a901633b89f061477a4 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 22 Mar 2012 18:39:10 -0700 Subject: [PATCH 135/488] Avoid trying to play an ambient sound if there's no chance for any to play --- apps/openmw/mwsound/soundmanager.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index e3931afd64..38b9bee256 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -341,9 +341,6 @@ namespace MWSound } const ESM::Region *regn = mEnvironment.mWorld->getStore().regions.find(regionName); - if(regn->soundList.size() == 0) - return; - std::vector::const_iterator soundIter; if(total == 0) { @@ -353,6 +350,8 @@ namespace MWSound total += (int)soundIter->chance; soundIter++; } + if(total == 0) + return; } int r = rand() % total; //old random code From 277597c567efa0b0fe50191dc4026c43716f374a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 22 Mar 2012 18:44:55 -0700 Subject: [PATCH 136/488] Fix DEFAULT_OUTPUT for OpenAL_Output --- apps/openmw/mwsound/openal_output.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 6e41c7deed..33ab7a2aa9 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -63,7 +63,7 @@ namespace MWSound friend class SoundManager; }; #ifndef DEFAULT_OUTPUT -#define DEFAULT_OUTPUT OpenAL_Output +#define DEFAULT_OUTPUT (::MWSound::OpenAL_Output) #endif }; From 2f0af42261ca048d20034e7273a32b92494aa545 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 22 Mar 2012 23:51:00 -0700 Subject: [PATCH 137/488] Use the ALC_ENUMERATE_ALL_EXT extension with OpenAL when available --- apps/openmw/mwsound/openal_output.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 456ee534c1..b9a32d57c0 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -363,7 +363,10 @@ std::vector OpenAL_Output::enumerate() std::vector devlist; const ALCchar *devnames; - devnames = alcGetString(NULL, ALC_DEVICE_SPECIFIER); + if(alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT")) + devnames = alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER); + else + devnames = alcGetString(NULL, ALC_DEVICE_SPECIFIER); while(devnames && *devnames) { devlist.push_back(devnames); @@ -380,7 +383,10 @@ void OpenAL_Output::init(const std::string &devname) mDevice = alcOpenDevice(devname.c_str()); if(!mDevice) fail("Failed to open \""+devname+"\""); - std::cout << "Opened \""< Date: Fri, 23 Mar 2012 00:31:01 -0700 Subject: [PATCH 138/488] Properly report the default device when opening sound fails --- apps/openmw/mwsound/openal_output.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index b9a32d57c0..5e61cb94f2 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -382,7 +382,12 @@ void OpenAL_Output::init(const std::string &devname) mDevice = alcOpenDevice(devname.c_str()); if(!mDevice) - fail("Failed to open \""+devname+"\""); + { + if(devname.empty()) + fail("Failed to open default device"); + else + fail("Failed to open \""+devname+"\""); + } if(alcIsExtensionPresent(mDevice, "ALC_ENUMERATE_ALL_EXT")) std::cout << "Opened \""< Date: Fri, 23 Mar 2012 13:02:07 +0100 Subject: [PATCH 139/488] Adding readme to windows builds --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a454f211b2..7a1b983358 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -347,6 +347,7 @@ if(WIN32) FILE(GLOB files "${OpenMW_BINARY_DIR}/Release/*.*") INSTALL(FILES ${files} DESTINATION ".") INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "." RENAME "openmw.cfg") + INSTALL(FILES "${OpenMW_SOURCE_DIR}/readme.txt" DESTINATION ".") INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION ".") SET(CPACK_GENERATOR "NSIS") @@ -357,6 +358,7 @@ if(WIN32) SET(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINO}) SET(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE}) SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW;esmtool;Esmtool;omwlauncher;OpenMW Launcher") + set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Readme.lnk' '\$INSTDIR\\\\readme.txt'") SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenMW_SOURCE_DIR}/readme.txt") SET(CPACK_RESOURCE_FILE_LICENSE "${OpenMW_SOURCE_DIR}/GPL3.txt") SET(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") From f9bb19fcdc8111ab405cbc8673dbf9c5800b1986 Mon Sep 17 00:00:00 2001 From: gugus Date: Fri, 23 Mar 2012 15:18:09 +0100 Subject: [PATCH 140/488] begining factions --- apps/openmw/mwworld/player.cpp | 53 ++++++++++++++++++++++++++++++++++ apps/openmw/mwworld/player.hpp | 21 ++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index 5bfb82138c..270ffa55ca 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -89,4 +89,57 @@ namespace MWWorld MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Run, !running); } + + Player::Faction Player::getFaction(std::string faction) + { + for(std::list::iterator it = mFactions.begin(); it != mFactions.end();it++) + { + if(it->name == faction) return *it; + } + //faction was not found->dummy faction + Player::Faction fact; + fact.id = "not found"; + fact.name = "not found"; + fact.rank = -10; + fact.expelled = false; + return fact; + } + + void Player::addFaction(std::string faction) + { + if(getFaction(faction).name == "not found") + { + Player::Faction fact; + const ESM::Faction* eFact = mWorld.getStore().factions.find(faction); + fact.expelled = false; + fact.rank = 0; + fact.name = faction; + fact.id = eFact->id; + mFactions.push_back(fact); + } + } + + int Player::getRank(std::string faction) + { + Player::Faction fact = getFaction(faction); + return fact.rank; + } + + void Player::setRank(std::string faction,int rank) + { + Player::Faction fact = getFaction(faction); + fact.rank = rank; + } + + bool Player::isExpelled(std::string faction) + { + Player::Faction fact = getFaction(faction); + return fact.expelled; + } + + void Player::setExpelled(std::string faction,bool expelled) + { + Player::Faction fact = getFaction(faction); + fact.expelled = expelled; + } } diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index 01c71da437..8129c4d8ea 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -4,6 +4,7 @@ #include "OgreCamera.h" #include +#include #include "../mwworld/refdata.hpp" #include "../mwworld/ptr.hpp" @@ -20,6 +21,13 @@ namespace MWWorld /// \brief NPC object representing the player and additional player data class Player { + struct Faction + { + std::string id,name; + int rank; + bool expelled; + }; + ESMS::LiveCellRef mPlayer; MWWorld::Ptr::CellStore *mCellStore; MWRender::Player *mRenderer; @@ -29,9 +37,12 @@ namespace MWWorld std::string mRace; std::string mBirthsign; ESM::Class *mClass; + std::list mFactions; bool mAutoMove; int mForwardBackward; + Faction getFaction(std::string faction); + public: Player(MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world); @@ -108,6 +119,16 @@ namespace MWWorld void setAutoMove (bool enable); + void addFaction(std::string faction); + + int getRank(std::string faction); + + void setRank(std::string faction,int rank); + + bool isExpelled(std::string faction); + + void setExpelled(std::string faction,bool expelled); + void setLeftRight (int value); void setForwardBackward (int value); From 319022d962197b73f09d47418ff29ede2f6dcc2d Mon Sep 17 00:00:00 2001 From: gugus Date: Fri, 23 Mar 2012 15:24:39 +0100 Subject: [PATCH 141/488] speed up dialogue start-up. --- apps/openmw/mwdialogue/dialoguemanager.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index 91785819f9..451c49b1eb 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -531,6 +531,13 @@ namespace MWDialogue mChoice = -1; mIsInChoice = false; mCompilerContext.setExtensions (&extensions); + mDialogueMap.clear(); + actorKnownTopics.clear(); + ESMS::RecListT::MapType dialogueList = mEnvironment.mWorld->getStore().dialogs.list; + for(ESMS::RecListT::MapType::iterator it = dialogueList.begin(); it!=dialogueList.end();it++) + { + mDialogueMap[it->first] = it->second; + } } void DialogueManager::addTopic(std::string topic) @@ -566,13 +573,7 @@ namespace MWDialogue mActor = actor; - mDialogueMap.clear(); actorKnownTopics.clear(); - ESMS::RecListT::MapType dialogueList = mEnvironment.mWorld->getStore().dialogs.list; - for(ESMS::RecListT::MapType::iterator it = dialogueList.begin(); it!=dialogueList.end();it++) - { - mDialogueMap[it->first] = it->second; - } //initialise the GUI mEnvironment.mInputManager->setGuiMode(MWGui::GM_Dialogue); @@ -585,6 +586,7 @@ namespace MWDialogue //greeting bool greetingFound = false; //ESMS::RecListT::MapType dialogueList = mEnvironment.mWorld->getStore().dialogs.list; + ESMS::RecListT::MapType dialogueList = mEnvironment.mWorld->getStore().dialogs.list; for(ESMS::RecListT::MapType::iterator it = dialogueList.begin(); it!=dialogueList.end();it++) { ESM::Dialogue ndialogue = it->second; From 6d33ad248d49258342cd7f56efa2adf64b414f11 Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Fri, 23 Mar 2012 22:08:02 +0200 Subject: [PATCH 142/488] Fix memory leak in getIdentity method Replace static pointer and new() operator with normal static variable --- components/nif/nif_types.hpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/components/nif/nif_types.hpp b/components/nif/nif_types.hpp index ce7a0de628..83f912bfd2 100644 --- a/components/nif/nif_types.hpp +++ b/components/nif/nif_types.hpp @@ -62,17 +62,18 @@ struct Transformation static const Transformation* getIdentity() { - static Transformation* identity = NULL; - if (NULL == identity) + static Transformation identity; + static bool iset = false; + if (!iset) { - identity = new Transformation(); - identity->scale = 1.0f; - identity->rotation.v[0].array[0] = 1.0f; - identity->rotation.v[1].array[1] = 1.0f; - identity->rotation.v[2].array[2] = 1.0f; + identity.scale = 1.0f; + identity.rotation.v[0].array[0] = 1.0f; + identity.rotation.v[1].array[1] = 1.0f; + identity.rotation.v[2].array[2] = 1.0f; + iset = true; } - return identity; + return &identity; } }; #pragma pack(pop) From e6c55c144c7603a52e76cb814331f462b16f66fd Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Fri, 23 Mar 2012 22:15:45 +0200 Subject: [PATCH 143/488] Fix tabulation/formatting --- components/nif/nif_types.hpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/components/nif/nif_types.hpp b/components/nif/nif_types.hpp index 83f912bfd2..ee796cc991 100644 --- a/components/nif/nif_types.hpp +++ b/components/nif/nif_types.hpp @@ -55,26 +55,26 @@ struct Matrix struct Transformation { - Vector pos; - Matrix rotation; - float scale; - Vector velocity; + Vector pos; + Matrix rotation; + float scale; + Vector velocity; - static const Transformation* getIdentity() - { - static Transformation identity; - static bool iset = false; - if (!iset) - { - identity.scale = 1.0f; - identity.rotation.v[0].array[0] = 1.0f; - identity.rotation.v[1].array[1] = 1.0f; - identity.rotation.v[2].array[2] = 1.0f; - iset = true; - } + static const Transformation* getIdentity() + { + static Transformation identity; + static bool iset = false; + if (!iset) + { + identity.scale = 1.0f; + identity.rotation.v[0].array[0] = 1.0f; + identity.rotation.v[1].array[1] = 1.0f; + identity.rotation.v[2].array[2] = 1.0f; + iset = true; + } - return &identity; - } + return &identity; + } }; #pragma pack(pop) From fa70a72b75690f095fb0bf84576245c274ba8742 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 24 Mar 2012 00:22:54 -0700 Subject: [PATCH 144/488] Remove some unused sound manager fields and constructor parameters --- apps/openmw/engine.cpp | 5 +---- apps/openmw/mwsound/soundmanager.cpp | 12 ++++-------- apps/openmw/mwsound/soundmanager.hpp | 12 ++---------- 3 files changed, 7 insertions(+), 22 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 57723cac99..5e49ae2f72 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -333,10 +333,7 @@ void OMW::Engine::go() mExtensions, mFpsLevel, mNewGame, mOgre, mCfgMgr.getLogPath().string() + std::string("/")); // Create sound system - mEnvironment.mSoundManager = new MWSound::SoundManager(mOgre->getRoot(), - mOgre->getCamera(), - mDataDirs, - mUseSound, mFSStrict, mEnvironment); + mEnvironment.mSoundManager = new MWSound::SoundManager(mUseSound, mEnvironment); // Create script system mScriptContext = new MWScript::CompilerContext (MWScript::CompilerContext::Type_Full, diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 38b9bee256..272956082a 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -38,10 +38,8 @@ namespace MWSound { - SoundManager::SoundManager(Ogre::Root *root, Ogre::Camera *camera, - const Files::PathContainer& dataDirs, - bool useSound, bool fsstrict, MWWorld::Environment& environment) - : mFSStrict(fsstrict) + SoundManager::SoundManager(bool useSound, MWWorld::Environment& environment) + : mResourceMgr(Ogre::ResourceGroupManager::getSingleton()) , mEnvironment(environment) { if(!useSound) @@ -67,8 +65,6 @@ namespace MWSound mOutput.reset(); return; } - - mResourceMgr = Ogre::ResourceGroupManager::getSingletonPtr(); } SoundManager::~SoundManager() @@ -161,8 +157,8 @@ namespace MWSound void SoundManager::startRandomTitle() { Ogre::StringVectorPtr filelist; - filelist = mResourceMgr->findResourceNames(Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - "Music/"+mCurrentPlaylist+"/*"); + filelist = mResourceMgr.findResourceNames(Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "Music/"+mCurrentPlaylist+"/*"); if(!filelist->size()) return; diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 433f2c169c..aef4a8ace9 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -31,13 +31,7 @@ namespace MWSound class SoundManager { - Ogre::ResourceGroupManager *mResourceMgr; - - // This is used for case insensitive and slash-type agnostic file - // finding. It takes DOS paths (any case, \\ slashes or / slashes) - // relative to the sound dir, and translates them into full paths - // of existing files in the filesystem, if they exist. - bool mFSStrict; + Ogre::ResourceGroupManager& mResourceMgr; MWWorld::Environment& mEnvironment; @@ -64,9 +58,7 @@ namespace MWSound friend class OpenAL_Output; public: - SoundManager(Ogre::Root*, Ogre::Camera*, - const Files::PathContainer& dataDir, bool useSound, bool fsstrict, - MWWorld::Environment& environment); + SoundManager(bool useSound, MWWorld::Environment& environment); ~SoundManager(); void stopMusic(); From 5cb90ab7044299fddad6028af3b2ab3985cd402a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 24 Mar 2012 03:49:03 -0700 Subject: [PATCH 145/488] Add some dummy copy constructors and assignment operators to prevent implicit versions from being used --- apps/openmw/mwsound/ffmpeg_decoder.hpp | 3 +++ apps/openmw/mwsound/mpgsnd_decoder.hpp | 3 +++ apps/openmw/mwsound/openal_output.cpp | 11 +++++++++++ apps/openmw/mwsound/openal_output.hpp | 3 +++ apps/openmw/mwsound/sound.hpp | 4 ++++ apps/openmw/mwsound/sound_decoder.hpp | 4 ++++ apps/openmw/mwsound/sound_output.hpp | 3 +++ apps/openmw/mwsound/soundmanager.hpp | 3 +++ 8 files changed, 34 insertions(+) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.hpp b/apps/openmw/mwsound/ffmpeg_decoder.hpp index ae71c00523..4344397c70 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.hpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.hpp @@ -42,6 +42,9 @@ namespace MWSound virtual void readAll(std::vector &output); virtual void rewind(); + FFmpeg_Decoder& operator=(const FFmpeg_Decoder &rhs); + FFmpeg_Decoder(const FFmpeg_Decoder &rhs); + FFmpeg_Decoder(); public: virtual ~FFmpeg_Decoder(); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp index 1d9e9d5e22..870773edc5 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.hpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -40,6 +40,9 @@ namespace MWSound virtual void readAll(std::vector &output); virtual void rewind(); + MpgSnd_Decoder& operator=(const MpgSnd_Decoder &rhs); + MpgSnd_Decoder(const MpgSnd_Decoder &rhs); + MpgSnd_Decoder(); public: virtual ~MpgSnd_Decoder(); diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 5e61cb94f2..a0b9c3a724 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -76,6 +76,9 @@ class OpenAL_SoundStream : public Sound volatile bool mIsFinished; + OpenAL_SoundStream(const OpenAL_SoundStream &rhs); + OpenAL_SoundStream& operator=(const OpenAL_SoundStream &rhs); + public: OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder); virtual ~OpenAL_SoundStream(); @@ -148,6 +151,10 @@ struct OpenAL_Output::StreamThread { mStreams.clear(); mMutex.unlock(); } + +private: + StreamThread(const StreamThread &rhs); + StreamThread& operator=(const StreamThread &rhs); }; @@ -308,6 +315,10 @@ class OpenAL_Sound : public Sound ALuint mSource; ALuint mBuffer; + + OpenAL_Sound(const OpenAL_Sound &rhs); + OpenAL_Sound& operator=(const OpenAL_Sound &rhs); + public: OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf); virtual ~OpenAL_Sound(); diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 33ab7a2aa9..e8154e9063 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -52,6 +52,9 @@ namespace MWSound virtual void updateListener(const float *pos, const float *atdir, const float *updir); + OpenAL_Output& operator=(const OpenAL_Output &rhs); + OpenAL_Output(const OpenAL_Output &rhs); + OpenAL_Output(SoundManager &mgr); virtual ~OpenAL_Output(); diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 84725464be..f9e7ab4278 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -9,7 +9,11 @@ namespace MWSound virtual bool isPlaying() = 0; virtual void update(const float *pos) = 0; + Sound& operator=(const Sound &rhs); + Sound(const Sound &rhs); + public: + Sound() { } virtual ~Sound() { } friend class OpenAL_Output; diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp index e076c7b567..9c28d5ff55 100644 --- a/apps/openmw/mwsound/sound_decoder.hpp +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -38,6 +38,10 @@ namespace MWSound Sound_Decoder() : mResourceMgr(Ogre::ResourceGroupManager::getSingleton()) { } virtual ~Sound_Decoder() { } + + private: + Sound_Decoder(const Sound_Decoder &rhs); + Sound_Decoder& operator=(const Sound_Decoder &rhs); }; } diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 14b61e6099..1722165e49 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -29,6 +29,9 @@ namespace MWSound virtual void updateListener(const float *pos, const float *atdir, const float *updir) = 0; + Sound_Output& operator=(const Sound_Output &rhs); + Sound_Output(const Sound_Output &rhs); + Sound_Output(SoundManager &mgr) : mManager(mgr) { } public: virtual ~Sound_Output() { } diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index aef4a8ace9..b7c883a130 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -53,6 +53,9 @@ namespace MWSound void updateSounds(float duration); void updateRegionSound(float duration); + SoundManager(const SoundManager &rhs); + SoundManager& operator=(const SoundManager &rhs); + protected: DecoderPtr getDecoder(); friend class OpenAL_Output; From f4898539e9c99f0f2c4a36c0f47bf0f90dcc0290 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 24 Mar 2012 13:06:01 +0100 Subject: [PATCH 146/488] added some code that doesn't do anything yet, waiting for ogre 1.8 --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwrender/occlusionquery.cpp | 27 +++++++++++++++++++++++ apps/openmw/mwrender/occlusionquery.hpp | 27 +++++++++++++++++++++++ apps/openmw/mwrender/renderingmanager.cpp | 3 +++ apps/openmw/mwrender/renderingmanager.hpp | 7 ++++-- 5 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 apps/openmw/mwrender/occlusionquery.cpp create mode 100644 apps/openmw/mwrender/occlusionquery.hpp diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 2630098f5c..7d4836d3b1 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -15,7 +15,7 @@ source_group(game FILES ${GAME} ${GAME_HEADER}) add_openmw_dir (mwrender renderingmanager debugging sky player animation npcanimation creatureanimation actors objects - renderinginterface localmap + renderinginterface localmap occlusionquery ) add_openmw_dir (mwinput diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp new file mode 100644 index 0000000000..395660bb5c --- /dev/null +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -0,0 +1,27 @@ +#include "occlusionquery.hpp" + +#include +#include + +using namespace MWRender; +using namespace Ogre; + +OcclusionQuery::OcclusionQuery() : + mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0) +{ + try { + RenderSystem* renderSystem = Root::getSingleton().getRenderSystem(); + + mSunTotalAreaQuery = renderSystem->createHardwareOcclusionQuery(); + mSunVisibleAreaQuery = renderSystem->createHardwareOcclusionQuery(); + + mSupported = (mSunTotalAreaQuery != 0) && (mSunVisibleAreaQuery != 0); + } + catch (Ogre::Exception e) + { + mSupported = false; + } + + if (!mSupported) + std::cout << "Hardware occlusion queries not supported." << std::endl; +} diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp new file mode 100644 index 0000000000..619b072ee0 --- /dev/null +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -0,0 +1,27 @@ +#ifndef _GAME_OCCLUSION_QUERY_H +#define _GAME_OCCLUSION_QUERY_H + +#include + +namespace MWRender +{ + /// + /// \brief Implements hardware occlusion queries on the GPU + /// + class OcclusionQuery + { + public: + OcclusionQuery(); + + bool supported(); + ///< returns true if occlusion queries are supported on the user's hardware + + private: + Ogre::HardwareOcclusionQuery* mSunTotalAreaQuery; + Ogre::HardwareOcclusionQuery* mSunVisibleAreaQuery; + + bool mSupported; + }; +} + +#endif diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index e2aea19c6e..78287dadb5 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -49,6 +49,8 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const Ogre::SceneNode *cameraYawNode = playerNode->createChildSceneNode(); Ogre::SceneNode *cameraPitchNode = cameraYawNode->createChildSceneNode(); cameraPitchNode->attachObject(mRendering.getCamera()); + + mOcclusionQuery = new OcclusionQuery(); //mSkyManager = 0; mSkyManager = new SkyManager(mMwRoot, mRendering.getCamera(), &environment); @@ -65,6 +67,7 @@ RenderingManager::~RenderingManager () delete mPlayer; delete mSkyManager; delete mLocalMap; + delete mOcclusionQuery; } MWRender::SkyManager* RenderingManager::getSkyManager() diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 78a1d2fdb7..996396633c 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -25,6 +25,7 @@ #include "actors.hpp" #include "player.hpp" #include "localmap.hpp" +#include "occlusionquery.hpp" namespace Ogre { @@ -131,9 +132,11 @@ class RenderingManager: private RenderingInterface { private: void setAmbientMode(); - + SkyManager* mSkyManager; - + + OcclusionQuery* mOcclusionQuery; + OEngine::Render::OgreRenderer &mRendering; MWRender::Objects mObjects; From 99b2b6b6482cc967694b8f62057367d2f47626ad Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 24 Mar 2012 14:46:48 +0100 Subject: [PATCH 147/488] ogre 1.8 fixes --- apps/openmw/mwrender/terrainmaterial.hpp | 3 ++ components/bsa/bsa_archive.cpp | 31 ++++++++++++++++++-- components/bsa/bsa_file.cpp | 4 +-- components/bsa/bsa_file.hpp | 4 +-- libs/openengine/bullet/BulletShapeLoader.cpp | 8 ++--- 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwrender/terrainmaterial.hpp b/apps/openmw/mwrender/terrainmaterial.hpp index 7c0b87ce46..798821d616 100644 --- a/apps/openmw/mwrender/terrainmaterial.hpp +++ b/apps/openmw/mwrender/terrainmaterial.hpp @@ -63,6 +63,9 @@ namespace Ogre public: SM2Profile(TerrainMaterialGenerator* parent, const String& name, const String& desc); ~SM2Profile(); + + bool isVertexCompressionSupported() const {return false;} + MaterialPtr generate(const Terrain* terrain); MaterialPtr generateForCompositeMap(const Terrain* terrain); uint8 getMaxLayers(const Terrain* terrain) const; diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 72d15944d5..80d92dd521 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -256,8 +256,12 @@ public: return DataStreamPtr(new Mangle2OgreStream(strm)); } +bool exists(const String& filename) { + return cexists(filename); +} + // Check if the file exists. - bool exists(const String& filename) { + bool cexists(const String& filename) const { String passed = filename; if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' || filename.at(filename.length() - 1) == '"' || filename.at(filename.length() - 1) == '>' || filename.at(filename.length() - 1) == ':' @@ -308,6 +312,29 @@ return arc.exists(passed.c_str()); located in BSAs. So instead we channel it through exists() and set up a single-element result list if the file is found. */ + FileInfoListPtr findFileInfo(const String& pattern, bool recursive = true, + bool dirs = false) const + { + FileInfoListPtr ptr = FileInfoListPtr(new FileInfoList()); + + // Check if the file exists (only works for single files - wild + // cards and recursive search isn't implemented.) + if(cexists(pattern)) + { + FileInfo fi; + fi.archive = this; + fi.filename = pattern; + // It apparently doesn't matter that we return bogus + // information + fi.path = ""; + fi.compressedSize = fi.uncompressedSize = 0; + + ptr->push_back(fi); + } + + return ptr; + } + FileInfoListPtr findFileInfo(const String& pattern, bool recursive = true, bool dirs = false) { @@ -315,7 +342,7 @@ return arc.exists(passed.c_str()); // Check if the file exists (only works for single files - wild // cards and recursive search isn't implemented.) - if(exists(pattern)) + if(cexists(pattern)) { FileInfo fi; fi.archive = this; diff --git a/components/bsa/bsa_file.cpp b/components/bsa/bsa_file.cpp index 95358a3628..f19606703c 100644 --- a/components/bsa/bsa_file.cpp +++ b/components/bsa/bsa_file.cpp @@ -148,9 +148,9 @@ void BSAFile::readHeader() } /// Get the index of a given file name, or -1 if not found -int BSAFile::getIndex(const char *str) +int BSAFile::getIndex(const char *str) const { - Lookup::iterator it; + Lookup::const_iterator it; it = lookup.find(str); if(it == lookup.end()) return -1; diff --git a/components/bsa/bsa_file.hpp b/components/bsa/bsa_file.hpp index f54a64d2af..95fac0f4d7 100644 --- a/components/bsa/bsa_file.hpp +++ b/components/bsa/bsa_file.hpp @@ -93,7 +93,7 @@ class BSAFile void readHeader(); /// Get the index of a given file name, or -1 if not found - int getIndex(const char *str); + int getIndex(const char *str) const; public: @@ -119,7 +119,7 @@ class BSAFile */ /// Check if a file exists - bool exists(const char *file) { return getIndex(file) != -1; } + bool exists(const char *file) const { return getIndex(file) != -1; } /** Open a file contained in the archive. Throws an exception if the file doesn't exist. diff --git a/libs/openengine/bullet/BulletShapeLoader.cpp b/libs/openengine/bullet/BulletShapeLoader.cpp index 48b87e1e8c..01b6363d9a 100644 --- a/libs/openengine/bullet/BulletShapeLoader.cpp +++ b/libs/openengine/bullet/BulletShapeLoader.cpp @@ -62,17 +62,17 @@ size_t BulletShape::calculateSize() const //============================================================================================================= -template<> BulletShapeManager *Ogre::Singleton::ms_Singleton = 0; +template<> BulletShapeManager *Ogre::Singleton::msSingleton = 0; BulletShapeManager *BulletShapeManager::getSingletonPtr() { - return ms_Singleton; + return msSingleton; } BulletShapeManager &BulletShapeManager::getSingleton() { - assert(ms_Singleton); - return(*ms_Singleton); + assert(msSingleton); + return(*msSingleton); } BulletShapeManager::BulletShapeManager() From 71d3f9bd512edc078272468e1243e2deaee1bb0e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 24 Mar 2012 08:12:04 -0700 Subject: [PATCH 148/488] Get the object reference's position once when updating its sounds --- apps/openmw/mwsound/soundmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 272956082a..3b1f188e70 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -308,10 +308,10 @@ namespace MWSound if(snditer == mActiveSounds.end()) return; + const ESM::Position &pos = ptr.getCellRef().pos; IDMap::iterator iditer = snditer->second.begin(); while(iditer != snditer->second.end()) { - const ESM::Position &pos = ptr.getCellRef().pos; iditer->second->update(pos.pos); iditer++; } From 743ea0c9be16a6864bf861db101dd5901452045a Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 24 Mar 2012 17:59:26 +0100 Subject: [PATCH 149/488] use hardware occlusion query for sun glare effect --- apps/openmw/mwrender/occlusionquery.cpp | 116 +++++++++++++++++++++- apps/openmw/mwrender/occlusionquery.hpp | 28 +++++- apps/openmw/mwrender/renderingmanager.cpp | 12 ++- apps/openmw/mwrender/renderingmanager.hpp | 4 +- apps/openmw/mwrender/sky.cpp | 52 ++++++---- apps/openmw/mwrender/sky.hpp | 48 ++++----- apps/openmw/mwworld/world.cpp | 17 ++-- 7 files changed, 216 insertions(+), 61 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 395660bb5c..6c74561e95 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -2,13 +2,17 @@ #include #include +#include using namespace MWRender; using namespace Ogre; -OcclusionQuery::OcclusionQuery() : - mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0) +OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : + mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0) { + mRendering = renderer; + mSunNode = sunNode; + try { RenderSystem* renderSystem = Root::getSingleton().getRenderSystem(); @@ -23,5 +27,113 @@ OcclusionQuery::OcclusionQuery() : } if (!mSupported) + { std::cout << "Hardware occlusion queries not supported." << std::endl; + return; + } + + // This means that everything up to RENDER_QUEUE_MAIN can occlude the objects that are tested + const int queue = RENDER_QUEUE_MAIN+1; + + MaterialPtr matBase = MaterialManager::getSingleton().getByName("BaseWhiteNoLighting"); + MaterialPtr matQueryArea = matBase->clone("QueryTotalPixels"); + matQueryArea->setDepthWriteEnabled(false); + matQueryArea->setColourWriteEnabled(false); + matQueryArea->setDepthCheckEnabled(false); // Not occluded by objects + MaterialPtr matQueryVisible = matBase->clone("QueryVisiblePixels"); + matQueryVisible->setDepthWriteEnabled(false); + matQueryVisible->setColourWriteEnabled(false); + matQueryVisible->setDepthCheckEnabled(true); // Occluded by objects + + mBBQueryTotal = mRendering->getScene()->createBillboardSet(1); + mBBQueryTotal->setDefaultDimensions(150, 150); + mBBQueryTotal->createBillboard(Vector3::ZERO); + mBBQueryTotal->setMaterialName("QueryTotalPixels"); + mBBQueryTotal->setRenderQueueGroup(queue); + mSunNode->attachObject(mBBQueryTotal); + + mBBQueryVisible = mRendering->getScene()->createBillboardSet(1); + mBBQueryVisible->setDefaultDimensions(150, 150); + mBBQueryVisible->createBillboard(Vector3::ZERO); + mBBQueryVisible->setMaterialName("QueryVisiblePixels"); + mBBQueryVisible->setRenderQueueGroup(queue); + mSunNode->attachObject(mBBQueryVisible); + + mRendering->getScene()->addRenderObjectListener(this); + mDoQuery = true; } + +OcclusionQuery::~OcclusionQuery() +{ + RenderSystem* renderSystem = Root::getSingleton().getRenderSystem(); + if (mSunTotalAreaQuery) renderSystem->destroyHardwareOcclusionQuery(mSunTotalAreaQuery); + if (mSunVisibleAreaQuery) renderSystem->destroyHardwareOcclusionQuery(mSunVisibleAreaQuery); +} + +bool OcclusionQuery::supported() +{ + return mSupported; +} + +void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass, const AutoParamDataSource* source, + const LightList* pLightList, bool suppressRenderStateChanges) +{ + if (!mSupported) return; + + // The following code activates and deactivates the occlusion queries + // so that the queries only include the rendering of their intended targets + + // Close the last occlusion query + // Each occlusion query should only last a single rendering + if (mActiveQuery != NULL) + { + mActiveQuery->endOcclusionQuery(); + mActiveQuery = NULL; + } + + // Open a new occlusion query + if (mDoQuery == true) + { + if (rend == mBBQueryTotal) + mActiveQuery = mSunTotalAreaQuery; + else if (rend == mBBQueryVisible) + mActiveQuery = mSunVisibleAreaQuery; + + if (mActiveQuery != NULL) + { + mActiveQuery->beginOcclusionQuery(); + } + } +} + +void OcclusionQuery::update() +{ + if (!mSupported) return; + + // Stop occlusion queries until we get their information + // (may not happen on the same frame they are requested in) + mDoQuery = false; + + if (!mSunTotalAreaQuery->isStillOutstanding() && !mSunVisibleAreaQuery->isStillOutstanding()) + { + unsigned int totalPixels; + unsigned int visiblePixels; + + mSunTotalAreaQuery->pullOcclusionQuery(&totalPixels); + mSunVisibleAreaQuery->pullOcclusionQuery(&visiblePixels); + + if (totalPixels == 0) + { + // probably outside of the view frustum + mSunVisibility = 0; + } + else + { + mSunVisibility = float(visiblePixels) / float(totalPixels); + if (mSunVisibility > 1) mSunVisibility = 1; + } + + mDoQuery = true; + } +} + diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index 619b072ee0..e6adc0d4b3 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -2,25 +2,49 @@ #define _GAME_OCCLUSION_QUERY_H #include +#include + +#include namespace MWRender { /// /// \brief Implements hardware occlusion queries on the GPU /// - class OcclusionQuery + class OcclusionQuery : public Ogre::RenderObjectListener { public: - OcclusionQuery(); + OcclusionQuery(OEngine::Render::OgreRenderer*, Ogre::SceneNode* sunNode); + ~OcclusionQuery(); bool supported(); ///< returns true if occlusion queries are supported on the user's hardware + void update(); + ///< per-frame update + + float getSunVisibility() const {return mSunVisibility;}; + private: Ogre::HardwareOcclusionQuery* mSunTotalAreaQuery; Ogre::HardwareOcclusionQuery* mSunVisibleAreaQuery; + Ogre::HardwareOcclusionQuery* mActiveQuery; + + Ogre::BillboardSet* mBBQueryVisible; + Ogre::BillboardSet* mBBQueryTotal; + + Ogre::SceneNode* mSunNode; + + float mSunVisibility; bool mSupported; + bool mDoQuery; + + OEngine::Render::OgreRenderer* mRendering; + + protected: + virtual void notifyRenderSingleObject(Ogre::Renderable* rend, const Ogre::Pass* pass, const Ogre::AutoParamDataSource* source, + const Ogre::LightList* pLightList, bool suppressRenderStateChanges); }; } diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 7aa623879e..b4711e8df7 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -54,12 +54,12 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const Ogre::SceneNode *cameraYawNode = playerNode->createChildSceneNode(); Ogre::SceneNode *cameraPitchNode = cameraYawNode->createChildSceneNode(); cameraPitchNode->attachObject(mRendering.getCamera()); - - mOcclusionQuery = new OcclusionQuery(); //mSkyManager = 0; mSkyManager = new SkyManager(mMwRoot, mRendering.getCamera(), &environment); + mOcclusionQuery = new OcclusionQuery(&mRendering, mSkyManager->getSunNode()); + mPlayer = new MWRender::Player (mRendering.getCamera(), playerNode); mSun = 0; @@ -149,9 +149,13 @@ void RenderingManager::moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Ve void RenderingManager::update (float duration){ mActors.update (duration); - + + mOcclusionQuery->update(); + mSkyManager->update(duration); - + + mSkyManager->setGlare(mOcclusionQuery->getSunVisibility()); + mRendering.update(duration); mLocalMap->updatePlayer( mRendering.getCamera()->getRealPosition(), mRendering.getCamera()->getRealDirection() ); diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index acaf8565bb..450e461730 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -98,7 +98,9 @@ class RenderingManager: private RenderingInterface { void setSunDirection(const Ogre::Vector3& direction); void sunEnable(); void sunDisable(); - + + bool occlusionQuerySupported() { return mOcclusionQuery->supported(); }; + void setGlare(bool glare); void skyEnable (); void skyDisable (); diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 5e85780022..a70913b239 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -12,6 +12,7 @@ #include "../mwworld/environment.hpp" #include "../mwworld/world.hpp" +#include "occlusionquery.hpp" using namespace MWRender; using namespace Ogre; @@ -30,7 +31,7 @@ BillboardObject::BillboardObject() void BillboardObject::setVisible(const bool visible) { - mNode->setVisible(visible); + mBBSet->setVisible(visible); } void BillboardObject::setSize(const float size) @@ -88,7 +89,7 @@ void BillboardObject::init(const String& textureName, /// \todo These billboards are not 100% correct, might want to revisit them later mBBSet = sceneMgr->createBillboardSet("SkyBillboardSet"+StringConverter::toString(bodyCount), 1); mBBSet->setDefaultDimensions(550.f*initialSize, 550.f*initialSize); - mBBSet->setRenderQueueGroup(RENDER_QUEUE_SKIES_EARLY+2); + mBBSet->setRenderQueueGroup(RENDER_QUEUE_MAIN+2); mBBSet->setBillboardType(BBT_PERPENDICULAR_COMMON); mBBSet->setCommonDirection( -position.normalisedCopy() ); mNode = rootNode->createChildSceneNode(); @@ -293,7 +294,7 @@ void SkyManager::ModVertexAlpha(Entity* ent, unsigned int meshType) } SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera, MWWorld::Environment* env) : - mGlareFade(0), mGlareEnabled(false) + mGlare(0), mGlareFade(0) { mEnvironment = env; mViewport = pCamera->getViewport(); @@ -562,10 +563,23 @@ void SkyManager::update(float duration) mMasser->setPhase( static_cast( (int) ((mDay % 32)/4.f)) ); mSecunda->setPhase ( static_cast( (int) ((mDay % 32)/4.f)) ); - // increase the strength of the sun glare effect depending - // on how directly the player is looking at the sun + if (mSunEnabled) { + // take 1/5 sec for fading the glare effect from invisible to full + if (mGlareFade > mGlare) + { + mGlareFade -= duration*5; + if (mGlareFade < mGlare) mGlareFade = mGlare; + } + else if (mGlareFade < mGlare) + { + mGlareFade += duration*5; + if (mGlareFade > mGlare) mGlareFade = mGlare; + } + + // increase the strength of the sun glare effect depending + // on how directly the player is looking at the sun Vector3 sun = mSunGlare->getPosition(); sun = Vector3(sun.x, sun.z, -sun.y); Vector3 cam = mViewport->getCamera()->getRealDirection(); @@ -573,21 +587,10 @@ void SkyManager::update(float duration) float val = 1- (angle.valueDegrees() / 180.f); val = (val*val*val*val)*2; - if (mGlareEnabled) - { - mGlareFade += duration*3; - if (mGlareFade > 1) mGlareFade = 1; - } - else - { - mGlareFade -= duration*3; - if (mGlareFade < 0.3) mGlareFade = 0; - } - - mSunGlare->setSize(val * (mGlareFade)); + mSunGlare->setSize(val * mGlareFade); } - mSunGlare->setVisible(mGlareFade>0 && mSunEnabled); + mSunGlare->setVisible(mSunEnabled); mSun->setVisible(mSunEnabled); mMasser->setVisible(mMasserEnabled); mSecunda->setVisible(mSecundaEnabled); @@ -689,15 +692,15 @@ void SkyManager::setWeather(const MWWorld::WeatherResult& weather) else strength = 1.f; - mSunGlare->setVisibility(weather.mGlareView * strength); - mSun->setVisibility(strength); + mSunGlare->setVisibility(weather.mGlareView * mGlareFade * strength); + mSun->setVisibility(mGlareFade >= 0.5 ? weather.mGlareView * mGlareFade * strength : 0); mAtmosphereNight->setVisible(weather.mNight && mEnabled); } -void SkyManager::setGlare(bool glare) +void SkyManager::setGlare(const float glare) { - mGlareEnabled = glare; + mGlare = glare; } Vector3 SkyManager::getRealSunPos() @@ -782,3 +785,8 @@ void SkyManager::setDate(int day, int month) mDay = day; mMonth = month; } + +Ogre::SceneNode* SkyManager::getSunNode() +{ + return mSun->getNode(); +} diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index bf52afd8dd..508af76732 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -109,58 +109,60 @@ namespace MWRender public: SkyManager(Ogre::SceneNode* pMwRoot, Ogre::Camera* pCamera, MWWorld::Environment* env); ~SkyManager(); - + void update(float duration); - + void enable(); - + void disable(); - + void setHour (double hour); ///< will be called even when sky is disabled. - + void setDate (int day, int month); ///< will be called even when sky is disabled. - + int getMasserPhase() const; ///< 0 new moon, 1 waxing or waning cresecent, 2 waxing or waning half, /// 3 waxing or waning gibbous, 4 full moon - + int getSecundaPhase() const; ///< 0 new moon, 1 waxing or waning cresecent, 2 waxing or waning half, /// 3 waxing or waning gibbous, 4 full moon - + void setMoonColour (bool red); ///< change Secunda colour to red - + void setCloudsOpacity(float opacity); ///< change opacity of the clouds - + void setWeather(const MWWorld::WeatherResult& weather); - + + Ogre::SceneNode* getSunNode(); + void sunEnable(); - + void sunDisable(); - + void setSunDirection(const Ogre::Vector3& direction); - + void setMasserDirection(const Ogre::Vector3& direction); - + void setSecundaDirection(const Ogre::Vector3& direction); - + void setMasserFade(const float fade); - + void setSecundaFade(const float fade); - + void masserEnable(); void masserDisable(); void secundaEnable(); void secundaDisable(); - + void setThunder(const float factor); - - void setGlare(bool glare); + + void setGlare(const float glare); Ogre::Vector3 getRealSunPos(); private: @@ -203,12 +205,12 @@ namespace MWRender float mRemainingTransitionTime; - float mGlareFade; + float mGlare; // target + float mGlareFade; // actual void ModVertexAlpha(Ogre::Entity* ent, unsigned int meshType); bool mEnabled; - bool mGlareEnabled; bool mSunEnabled; bool mMasserEnabled; bool mSecundaEnabled; diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index a636ce2887..261f66ff4f 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -705,13 +705,16 @@ namespace MWWorld mWeatherManager->update (duration); - // cast a ray from player to sun to detect if the sun is visible - // this is temporary until we find a better place to put this code - // currently its here because we need to access the physics system - float* p = mPlayer->getPlayer().getRefData().getPosition().pos; - Vector3 sun = mRendering->getSkyManager()->getRealSunPos(); - sun = Vector3(sun.x, -sun.z, sun.y); - mRendering->getSkyManager()->setGlare(!mPhysics->castRay(Ogre::Vector3(p[0], p[1], p[2]), sun)); + if (!mRendering->occlusionQuerySupported()) + { + // cast a ray from player to sun to detect if the sun is visible + // this is temporary until we find a better place to put this code + // currently its here because we need to access the physics system + float* p = mPlayer->getPlayer().getRefData().getPosition().pos; + Vector3 sun = mRendering->getSkyManager()->getRealSunPos(); + sun = Vector3(sun.x, -sun.z, sun.y); + mRendering->getSkyManager()->setGlare(!mPhysics->castRay(Ogre::Vector3(p[0], p[1], p[2]), sun)); + } } bool World::isCellExterior() const From e212a3235011986ad9fda7f58ac354c79e971f21 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 24 Mar 2012 18:38:58 +0100 Subject: [PATCH 150/488] bugfix --- apps/openmw/mwrender/occlusionquery.cpp | 15 +++++++++++-- apps/openmw/mwrender/occlusionquery.hpp | 29 +++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 6c74561e95..baf55b0249 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -45,19 +45,21 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod matQueryVisible->setColourWriteEnabled(false); matQueryVisible->setDepthCheckEnabled(true); // Occluded by objects + mBBNode = mSunNode->getParentSceneNode()->createChildSceneNode(); + mBBQueryTotal = mRendering->getScene()->createBillboardSet(1); mBBQueryTotal->setDefaultDimensions(150, 150); mBBQueryTotal->createBillboard(Vector3::ZERO); mBBQueryTotal->setMaterialName("QueryTotalPixels"); mBBQueryTotal->setRenderQueueGroup(queue); - mSunNode->attachObject(mBBQueryTotal); + mBBNode->attachObject(mBBQueryTotal); mBBQueryVisible = mRendering->getScene()->createBillboardSet(1); mBBQueryVisible->setDefaultDimensions(150, 150); mBBQueryVisible->createBillboard(Vector3::ZERO); mBBQueryVisible->setMaterialName("QueryVisiblePixels"); mBBQueryVisible->setRenderQueueGroup(queue); - mSunNode->attachObject(mBBQueryVisible); + mBBNode->attachObject(mBBQueryVisible); mRendering->getScene()->addRenderObjectListener(this); mDoQuery = true; @@ -110,6 +112,15 @@ void OcclusionQuery::update() { if (!mSupported) return; + // Adjust the position of the sun billboards according to camera viewing distance + // we need to do this to make sure that _everything_ can occlude the sun + float dist = mRendering->getCamera()->getFarClipDistance(); + if (dist==0) dist = 10000000; + dist -= 1000; // bias + dist /= 1000.f; + mBBNode->setPosition(mSunNode->getPosition() * dist); + mBBNode->setScale(dist, dist, dist); + // Stop occlusion queries until we get their information // (may not happen on the same frame they are requested in) mDoQuery = false; diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index e6adc0d4b3..2545e590e9 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -17,11 +17,32 @@ namespace MWRender OcclusionQuery(OEngine::Render::OgreRenderer*, Ogre::SceneNode* sunNode); ~OcclusionQuery(); + /** + * @return true if occlusion queries are supported on the user's hardware + */ bool supported(); - ///< returns true if occlusion queries are supported on the user's hardware + /** + * per-frame update + */ void update(); - ///< per-frame update + + /** + * request occlusion test for a billboard at the given position, omitting an entity + * @param position of the billboard in ogre coordinates + * @param entity to exclude from the occluders + */ + void occlusionTest(const Ogre::Vector3& position, Ogre::Entity* entity); + + /** + * @return true if a request is still outstanding + */ + bool occlusionTestPending(); + + /** + * @return true if the object tested in the last request was occluded + */ + bool getTestResult(); float getSunVisibility() const {return mSunVisibility;}; @@ -35,8 +56,12 @@ namespace MWRender Ogre::SceneNode* mSunNode; + Ogre::SceneNode* mBBNode; + float mSunVisibility; + bool mTestResult; + bool mSupported; bool mDoQuery; From 9d30a139cc416a078c6f63871e7d584f982fc2a1 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 24 Mar 2012 20:41:23 +0100 Subject: [PATCH 151/488] added api --- apps/openmw/mwrender/occlusionquery.cpp | 73 +++++++++++++++++++++++-- apps/openmw/mwrender/occlusionquery.hpp | 20 ++++++- 2 files changed, 85 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index baf55b0249..8dd30394c9 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -3,12 +3,16 @@ #include #include #include +#include +#include using namespace MWRender; using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : - mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0) + mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), + mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), + mQuerySingleObjectRequested(false) { mRendering = renderer; mSunNode = sunNode; @@ -18,8 +22,9 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mSunTotalAreaQuery = renderSystem->createHardwareOcclusionQuery(); mSunVisibleAreaQuery = renderSystem->createHardwareOcclusionQuery(); + mSingleObjectQuery = renderSystem->createHardwareOcclusionQuery(); - mSupported = (mSunTotalAreaQuery != 0) && (mSunVisibleAreaQuery != 0); + mSupported = (mSunTotalAreaQuery != 0) && (mSunVisibleAreaQuery != 0) && (mSingleObjectQuery != 0); } catch (Ogre::Exception e) { @@ -47,6 +52,8 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBNode = mSunNode->getParentSceneNode()->createChildSceneNode(); + mObjectNode = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); + mBBQueryTotal = mRendering->getScene()->createBillboardSet(1); mBBQueryTotal->setDefaultDimensions(150, 150); mBBQueryTotal->createBillboard(Vector3::ZERO); @@ -61,6 +68,13 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBQueryVisible->setRenderQueueGroup(queue); mBBNode->attachObject(mBBQueryVisible); + mBBQuerySingleObject = mRendering->getScene()->createBillboardSet(1); + mBBQuerySingleObject->setDefaultDimensions(10, 10); + mBBQuerySingleObject->createBillboard(Vector3::ZERO); + mBBQuerySingleObject->setMaterialName("QueryVisiblePixels"); + mBBQuerySingleObject->setRenderQueueGroup(queue); + mObjectNode->attachObject(mBBQuerySingleObject); + mRendering->getScene()->addRenderObjectListener(this); mDoQuery = true; } @@ -70,6 +84,7 @@ OcclusionQuery::~OcclusionQuery() RenderSystem* renderSystem = Root::getSingleton().getRenderSystem(); if (mSunTotalAreaQuery) renderSystem->destroyHardwareOcclusionQuery(mSunTotalAreaQuery); if (mSunVisibleAreaQuery) renderSystem->destroyHardwareOcclusionQuery(mSunVisibleAreaQuery); + if (mSingleObjectQuery) renderSystem->destroyHardwareOcclusionQuery(mSingleObjectQuery); } bool OcclusionQuery::supported() @@ -100,11 +115,15 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass mActiveQuery = mSunTotalAreaQuery; else if (rend == mBBQueryVisible) mActiveQuery = mSunVisibleAreaQuery; + else if (rend == mBBQuerySingleObject && mQuerySingleObjectRequested) + { + mQuerySingleObjectStarted = true; + mQuerySingleObjectRequested = false; + mActiveQuery = mSingleObjectQuery; + } if (mActiveQuery != NULL) - { mActiveQuery->beginOcclusionQuery(); - } } } @@ -125,7 +144,9 @@ void OcclusionQuery::update() // (may not happen on the same frame they are requested in) mDoQuery = false; - if (!mSunTotalAreaQuery->isStillOutstanding() && !mSunVisibleAreaQuery->isStillOutstanding()) + if (!mSunTotalAreaQuery->isStillOutstanding() + && !mSunVisibleAreaQuery->isStillOutstanding() + && !mSingleObjectQuery->isStillOutstanding()) { unsigned int totalPixels; unsigned int visiblePixels; @@ -144,7 +165,49 @@ void OcclusionQuery::update() if (mSunVisibility > 1) mSunVisibility = 1; } + if (mQuerySingleObjectStarted) + { + unsigned int visiblePixels; + + mSingleObjectQuery->pullOcclusionQuery(&visiblePixels); + + mBBQuerySingleObject->setVisible(false); + mObject->setRenderQueueGroup(mObjectOldRenderQueue); + + mQuerySingleObjectStarted = false; + mQuerySingleObjectRequested = false; + } + mDoQuery = true; } } +void OcclusionQuery::occlusionTest(const Ogre::Vector3& position, Ogre::Entity* entity) +{ + assert( !occlusionTestPending() + && "Occlusion test still pending"); + + mBBQuerySingleObject->setVisible(true); + + // we don't want the object to occlude itself + mObjectOldRenderQueue = entity->getRenderQueueGroup(); + if (mObjectOldRenderQueue < RENDER_QUEUE_MAIN+2) + entity->setRenderQueueGroup(RENDER_QUEUE_MAIN+2); + + mObjectNode->setPosition(position); + + mQuerySingleObjectRequested = true; +} + +bool OcclusionQuery::occlusionTestPending() +{ + return (mQuerySingleObjectRequested || mQuerySingleObjectStarted); +} + +bool OcclusionQuery::getTestResult() +{ + assert( !occlusionTestPending() + && "Occlusion test still pending"); + + return mTestResult; +} diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index 2545e590e9..bcc45d96c6 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -1,9 +1,15 @@ #ifndef _GAME_OCCLUSION_QUERY_H #define _GAME_OCCLUSION_QUERY_H -#include #include +namespace Ogre +{ + class HardwareOcclusionQuery; + class Entity; + class SceneNode; +} + #include namespace MWRender @@ -49,22 +55,30 @@ namespace MWRender private: Ogre::HardwareOcclusionQuery* mSunTotalAreaQuery; Ogre::HardwareOcclusionQuery* mSunVisibleAreaQuery; + Ogre::HardwareOcclusionQuery* mSingleObjectQuery; Ogre::HardwareOcclusionQuery* mActiveQuery; Ogre::BillboardSet* mBBQueryVisible; Ogre::BillboardSet* mBBQueryTotal; + Ogre::BillboardSet* mBBQuerySingleObject; Ogre::SceneNode* mSunNode; - Ogre::SceneNode* mBBNode; - float mSunVisibility; + Ogre::Entity* mObject; + + Ogre::SceneNode* mObjectNode; + int mObjectOldRenderQueue; + bool mTestResult; bool mSupported; bool mDoQuery; + bool mQuerySingleObjectRequested; + bool mQuerySingleObjectStarted; + OEngine::Render::OgreRenderer* mRendering; protected: From 155cd76f3733f1b17596bf556d5c9cb68e78d2b1 Mon Sep 17 00:00:00 2001 From: Pieter van der Kloet Date: Sat, 24 Mar 2012 20:43:35 +0100 Subject: [PATCH 152/488] Changed Launcher font to EB Garamond and added license info --- Bitstream Vera License.txt | 123 ++++++++++++++++++ OFL.txt | 93 +++++++++++++ apps/launcher/maindialog.cpp | 21 ++- .../resources/images/openmw-header.png | Bin 45163 -> 50727 bytes files/launcher.qss | 6 +- files/mygui/CMakeLists.txt | 2 +- files/mygui/EBGaramond-Regular.ttf | Bin 0 -> 231904 bytes readme.txt | 4 + 8 files changed, 244 insertions(+), 5 deletions(-) create mode 100644 Bitstream Vera License.txt create mode 100644 OFL.txt create mode 100644 files/mygui/EBGaramond-Regular.ttf diff --git a/Bitstream Vera License.txt b/Bitstream Vera License.txt new file mode 100644 index 0000000000..2b37cc1df2 --- /dev/null +++ b/Bitstream Vera License.txt @@ -0,0 +1,123 @@ +Bitstream Vera Fonts Copyright + +The fonts have a generous copyright, allowing derivative works (as +long as "Bitstream" or "Vera" are not in the names), and full +redistribution (so long as they are not *sold* by themselves). They +can be be bundled, redistributed and sold with any software. + +The fonts are distributed under the following copyright: + +Copyright +========= + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream +Vera is a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute +the Font Software, including without limitation the rights to use, +copy, merge, publish, distribute, and/or sell copies of the Font +Software, and to permit persons to whom the Font Software is furnished +to do so, subject to the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Bitstream" or the word "Vera". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Bitstream Vera" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, +OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT +SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font +Software without prior written authorization from the Gnome Foundation +or Bitstream Inc., respectively. For further information, contact: +fonts at gnome dot org. + +Copyright FAQ +============= + + 1. I don't understand the resale restriction... What gives? + + Bitstream is giving away these fonts, but wishes to ensure its + competitors can't just drop the fonts as is into a font sale system + and sell them as is. It seems fair that if Bitstream can't make money + from the Bitstream Vera fonts, their competitors should not be able to + do so either. You can sell the fonts as part of any software package, + however. + + 2. I want to package these fonts separately for distribution and + sale as part of a larger software package or system. Can I do so? + + Yes. A RPM or Debian package is a "larger software package" to begin + with, and you aren't selling them independently by themselves. + See 1. above. + + 3. Are derivative works allowed? + Yes! + + 4. Can I change or add to the font(s)? + Yes, but you must change the name(s) of the font(s). + + 5. Under what terms are derivative works allowed? + + You must change the name(s) of the fonts. This is to ensure the + quality of the fonts, both to protect Bitstream and Gnome. We want to + ensure that if an application has opened a font specifically of these + names, it gets what it expects (though of course, using fontconfig, + substitutions could still could have occurred during font + opening). You must include the Bitstream copyright. Additional + copyrights can be added, as per copyright law. Happy Font Hacking! + + 6. If I have improvements for Bitstream Vera, is it possible they might get + adopted in future versions? + + Yes. The contract between the Gnome Foundation and Bitstream has + provisions for working with Bitstream to ensure quality additions to + the Bitstream Vera font family. Please contact us if you have such + additions. Note, that in general, we will want such additions for the + entire family, not just a single font, and that you'll have to keep + both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add + glyphs to the font, they must be stylistically in keeping with Vera's + design. Vera cannot become a "ransom note" font. Jim Lyles will be + providing a document describing the design elements used in Vera, as a + guide and aid for people interested in contributing to Vera. + + 7. I want to sell a software package that uses these fonts: Can I do so? + + Sure. Bundle the fonts with your software and sell your software + with the fonts. That is the intent of the copyright. + + 8. If applications have built the names "Bitstream Vera" into them, + can I override this somehow to use fonts of my choosing? + + This depends on exact details of the software. Most open source + systems and software (e.g., Gnome, KDE, etc.) are now converting to + use fontconfig (see www.fontconfig.org) to handle font configuration, + selection and substitution; it has provisions for overriding font + names and subsituting alternatives. An example is provided by the + supplied local.conf file, which chooses the family Bitstream Vera for + "sans", "serif" and "monospace". Other software (e.g., the XFree86 + core server) has other mechanisms for font substitution. diff --git a/OFL.txt b/OFL.txt new file mode 100644 index 0000000000..619d1f429f --- /dev/null +++ b/OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2010, 2011 Georg Duffner (http://www.georgduffner.at) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/apps/launcher/maindialog.cpp b/apps/launcher/maindialog.cpp index 49c0bd960e..ef9cfa8519 100644 --- a/apps/launcher/maindialog.cpp +++ b/apps/launcher/maindialog.cpp @@ -45,9 +45,28 @@ MainDialog::MainDialog() setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); setMinimumSize(QSize(575, 575)); + // Install the stylesheet font + QFile file; + QFontDatabase fontDatabase; + + const QStringList fonts = fontDatabase.families(); + + // Check if the font is installed + if (!fonts.contains("EB Garamond")) { + + QString font = QString::fromStdString((mCfgMgr.getGlobalDataPath() / "resources/mygui/EBGaramond-Regular.ttf").string()); + file.setFileName(font); + + if (!file.exists()) { + font = QString::fromStdString((mCfgMgr.getLocalPath() / "resources/mygui/EBGaramond-Regular.ttf").string()); + } + + fontDatabase.addApplicationFont(font); + } + // Load the stylesheet QString config = QString::fromStdString((mCfgMgr.getGlobalDataPath() / "resources/launcher.qss").string()); - QFile file(config); + file.setFileName(config); if (!file.exists()) { file.setFileName(QString::fromStdString((mCfgMgr.getLocalPath() / "launcher.qss").string())); diff --git a/apps/launcher/resources/images/openmw-header.png b/apps/launcher/resources/images/openmw-header.png index a168d4d2a816cb816dd50eb9ff1961291c2fe899..a2ffab68b8b447193d1153950e5c4d7f43348641 100644 GIT binary patch literal 50727 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Ⓢ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
pQomC`=K^ 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 Dh_$?i diff --git a/files/launcher.qss b/files/launcher.qss index dad87022cb..8be235f71b 100644 --- a/files/launcher.qss +++ b/files/launcher.qss @@ -22,7 +22,7 @@ stop:0.9 rgba(0, 0, 0, 55), stop:1 rgba(0, 0, 0, 100)); - font: 24pt "Trebuchet MS"; + font: 26pt "EB Garamond"; color: black; border-right: 1px solid rgba(0, 0, 0, 155); @@ -54,7 +54,7 @@ } #ProfileLabel { - font: 14pt "Trebuchet MS"; + font: 18pt "EB Garamond"; } #ProfilesComboBox { @@ -82,7 +82,7 @@ padding-top: 3px; padding-left: 4px; - font: 11pt "Trebuchet MS"; + font: 12pt "EB Garamond"; } #ProfilesComboBox::drop-down { diff --git a/files/mygui/CMakeLists.txt b/files/mygui/CMakeLists.txt index 9a6cde7ba1..dbc20f3f88 100644 --- a/files/mygui/CMakeLists.txt +++ b/files/mygui/CMakeLists.txt @@ -6,7 +6,6 @@ set(DDIR ${OpenMW_BINARY_DIR}/resources/mygui) configure_file("${SDIR}/bigbars.png" "${DDIR}/bigbars.png" COPYONLY) configure_file("${SDIR}/black.png" "${DDIR}/black.png" COPYONLY) -configure_file("${SDIR}/Comic.TTF" "${DDIR}/Comic.TTF" COPYONLY) configure_file("${SDIR}/core.skin" "${DDIR}/core.skin" COPYONLY) configure_file("${SDIR}/core.xml" "${DDIR}/core.xml" COPYONLY) configure_file("${SDIR}/mwpointer.png" "${DDIR}/mwpointer.png" COPYONLY) @@ -54,4 +53,5 @@ configure_file("${SDIR}/openmw_journal_layout.xml" "${DDIR}/openmw_journal_layou configure_file("${SDIR}/openmw_journal_skin.xml" "${DDIR}/openmw_journal_skin.xml" COPYONLY) configure_file("${SDIR}/smallbars.png" "${DDIR}/smallbars.png" COPYONLY) configure_file("${SDIR}/transparent.png" "${DDIR}/transparent.png" COPYONLY) +configure_file("${SDIR}/EBGaramond-Regular.ttf" "${DDIR}/EBGaramond-Regular.ttf" COPYONLY) configure_file("${SDIR}/VeraMono.ttf" "${DDIR}/VeraMono.ttf" COPYONLY) diff --git a/files/mygui/EBGaramond-Regular.ttf b/files/mygui/EBGaramond-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dde4869030022bf4d25ac5ea4403795ebd864fd1 GIT binary patch literal 231904 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 GE&~8~d;?(s literal 0 HcmV?d00001 diff --git a/readme.txt b/readme.txt index 8f360235fd..36a7320154 100644 --- a/readme.txt +++ b/readme.txt @@ -7,6 +7,10 @@ Version: 0.13.0 License: GPL (see GPL3.txt for more information) Website: http://www.openmw.org +Font Licenses: +EBGaramond-Regular.ttf: OFL (see OFL.txt for more information) +VeraMono.ttf: custom (see Bitstream Vera License.txt for more information) + THIS IS A WORK IN PROGRESS From 426c2785058a0a4b31148351e5c57dfea18cba22 Mon Sep 17 00:00:00 2001 From: Pieter van der Kloet Date: Sat, 24 Mar 2012 22:02:55 +0100 Subject: [PATCH 153/488] Changed the OpenMW default font from Comic sans to EB Garamond --- files/mygui/Comic.TTF | Bin 129196 -> 0 bytes files/mygui/core.skin | 6 +- files/mygui/core.xml | 48 +++---- files/mygui/openmw.font.xml | 131 +++++------------- files/mygui/openmw_button.skin.xml | 5 +- files/mygui/openmw_console.skin.xml | 2 - files/mygui/openmw_dialogue_window_layout.xml | 5 +- files/mygui/openmw_edit.skin.xml | 8 +- .../openmw_interactive_messagebox_layout.xml | 7 +- files/mygui/openmw_journal_skin.xml | 4 +- files/mygui/openmw_list.skin.xml | 8 +- files/mygui/openmw_messagebox_layout.xml | 7 +- files/mygui/openmw_progress.skin.xml | 5 +- files/mygui/openmw_settings.xml | 4 +- files/mygui/openmw_text.skin.xml | 18 +-- files/mygui/openmw_windows.skin.xml | 15 +- 16 files changed, 94 insertions(+), 179 deletions(-) delete mode 100644 files/mygui/Comic.TTF diff --git a/files/mygui/Comic.TTF b/files/mygui/Comic.TTF deleted file mode 100644 index 309894bafc18692591a1efb70da12fe958eab200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129196 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ℜb$> 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 - - + + - + diff --git a/files/mygui/core.xml b/files/mygui/core.xml index 5bec13aef3..7417328cf1 100644 --- a/files/mygui/core.xml +++ b/files/mygui/core.xml @@ -1,28 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/files/mygui/openmw.font.xml b/files/mygui/openmw.font.xml index 454c3caecc..e7d0f50c8a 100644 --- a/files/mygui/openmw.font.xml +++ b/files/mygui/openmw.font.xml @@ -1,95 +1,40 @@ + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/files/mygui/openmw_button.skin.xml b/files/mygui/openmw_button.skin.xml index 0533a360f6..1c68930264 100644 --- a/files/mygui/openmw_button.skin.xml +++ b/files/mygui/openmw_button.skin.xml @@ -45,10 +45,7 @@ - - - - + diff --git a/files/mygui/openmw_console.skin.xml b/files/mygui/openmw_console.skin.xml index 1c8740ede1..598252734f 100644 --- a/files/mygui/openmw_console.skin.xml +++ b/files/mygui/openmw_console.skin.xml @@ -2,8 +2,6 @@ - - diff --git a/files/mygui/openmw_dialogue_window_layout.xml b/files/mygui/openmw_dialogue_window_layout.xml index 6e833004b1..11ac41cb32 100644 --- a/files/mygui/openmw_dialogue_window_layout.xml +++ b/files/mygui/openmw_dialogue_window_layout.xml @@ -12,7 +12,6 @@ - @@ -21,8 +20,8 @@ - + align="Right Top" name="Disposition"> + diff --git a/files/mygui/openmw_edit.skin.xml b/files/mygui/openmw_edit.skin.xml index 609dfe2c89..a86317d620 100644 --- a/files/mygui/openmw_edit.skin.xml +++ b/files/mygui/openmw_edit.skin.xml @@ -11,8 +11,7 @@ - - + @@ -33,8 +32,7 @@ - - + @@ -51,7 +49,7 @@ - + diff --git a/files/mygui/openmw_interactive_messagebox_layout.xml b/files/mygui/openmw_interactive_messagebox_layout.xml index 4ef2243d42..744f212276 100644 --- a/files/mygui/openmw_interactive_messagebox_layout.xml +++ b/files/mygui/openmw_interactive_messagebox_layout.xml @@ -3,14 +3,13 @@ + + + - - - - diff --git a/files/mygui/openmw_journal_skin.xml b/files/mygui/openmw_journal_skin.xml index a0d6ee2e86..0ef87852f4 100644 --- a/files/mygui/openmw_journal_skin.xml +++ b/files/mygui/openmw_journal_skin.xml @@ -14,13 +14,13 @@ - + - + diff --git a/files/mygui/openmw_list.skin.xml b/files/mygui/openmw_list.skin.xml index 98390367c9..0ac8e03ba6 100644 --- a/files/mygui/openmw_list.skin.xml +++ b/files/mygui/openmw_list.skin.xml @@ -167,8 +167,7 @@ - - + @@ -177,10 +176,9 @@ - - + - + diff --git a/files/mygui/openmw_messagebox_layout.xml b/files/mygui/openmw_messagebox_layout.xml index 244f58c99d..81d1c0a57e 100644 --- a/files/mygui/openmw_messagebox_layout.xml +++ b/files/mygui/openmw_messagebox_layout.xml @@ -6,14 +6,13 @@ + + + - - - - diff --git a/files/mygui/openmw_progress.skin.xml b/files/mygui/openmw_progress.skin.xml index a5fbfb0a34..c4b94e28e2 100644 --- a/files/mygui/openmw_progress.skin.xml +++ b/files/mygui/openmw_progress.skin.xml @@ -19,11 +19,10 @@ - - + - + diff --git a/files/mygui/openmw_settings.xml b/files/mygui/openmw_settings.xml index ca62294de0..c63f962fb7 100644 --- a/files/mygui/openmw_settings.xml +++ b/files/mygui/openmw_settings.xml @@ -1,9 +1,9 @@ - - + + diff --git a/files/mygui/openmw_text.skin.xml b/files/mygui/openmw_text.skin.xml index d62a5b8c02..6ae14c558b 100644 --- a/files/mygui/openmw_text.skin.xml +++ b/files/mygui/openmw_text.skin.xml @@ -2,40 +2,35 @@ - - + - - + - - + - - + - - + @@ -45,8 +40,7 @@ - - + diff --git a/files/mygui/openmw_windows.skin.xml b/files/mygui/openmw_windows.skin.xml index ea8eb5330b..a986dcffc8 100644 --- a/files/mygui/openmw_windows.skin.xml +++ b/files/mygui/openmw_windows.skin.xml @@ -189,14 +189,7 @@ - - - + @@ -221,8 +214,7 @@ ------------------------------------------------------ --> - - + @@ -298,8 +290,7 @@ - - + From 8e76451cda571ae4c58a795a3c8a18e5fa9bdcc5 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sun, 25 Mar 2012 02:00:49 +0400 Subject: [PATCH 154/488] Fix launcher style installation on OS X again --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a1b983358..d5f0bffa8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -501,6 +501,7 @@ if (APPLE) install(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" RENAME "openmw.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime) install(FILES "${OpenMW_BINARY_DIR}/plugins.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime) + install(FILES "${OpenMW_BINARY_DIR}/launcher.qss" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime) set(CPACK_GENERATOR "DragNDrop") set(CPACK_PACKAGE_VERSION ${OPENMW_VERSION}) From f959a5cbeb48e23ebc67d4f8ec571e51b9849167 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 24 Mar 2012 23:24:19 +0100 Subject: [PATCH 155/488] auto adjust size of map window title bar --- apps/openmw/mwgui/layouts.cpp | 1 + libs/openengine/gui/layout.hpp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index 5c5a977d38..9c49c62ac3 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -202,6 +202,7 @@ void MapWindow::setVisible(bool b) void MapWindow::setCellName(const std::string& cellName) { static_cast(mMainWidget)->setCaption(cellName); + adjustWindowCaption(); } void MapWindow::setPlayerPos(const float x, const float y) diff --git a/libs/openengine/gui/layout.hpp b/libs/openengine/gui/layout.hpp index 3c03423c38..e73b2d1cea 100644 --- a/libs/openengine/gui/layout.hpp +++ b/libs/openengine/gui/layout.hpp @@ -80,6 +80,29 @@ namespace GUI mMainWidget->setCoord(x,y,w,h); } + void adjustWindowCaption() + { + // adjust the size of the window caption so that all text is visible + // NOTE: this assumes that mMainWidget is of type Window. + MyGUI::TextBox* box = static_cast(mMainWidget)->getCaptionWidget(); + box->setSize(box->getTextSize().width + 48, box->getSize().height); + + // in order to trigger alignment updates, we need to update the parent + // mygui doesn't provide a proper way of doing this, so we are just changing size + box->getParent()->setCoord(MyGUI::IntCoord( + box->getParent()->getCoord().left, + box->getParent()->getCoord().top, + box->getParent()->getCoord().width, + box->getParent()->getCoord().height+1 + )); + box->getParent()->setCoord(MyGUI::IntCoord( + box->getParent()->getCoord().left, + box->getParent()->getCoord().top, + box->getParent()->getCoord().width, + box->getParent()->getCoord().height-1 + )); + } + void setVisible(bool b) { mMainWidget->setVisible(b); From 3e98e28059b1c26e1973a543e1a3d00489cb94e9 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 24 Mar 2012 21:05:03 -0700 Subject: [PATCH 156/488] Use a better method to get a more even randomization --- apps/openmw/mwsound/soundmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 3b1f188e70..f626ec1584 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -350,7 +350,7 @@ namespace MWSound return; } - int r = rand() % total; //old random code + int r = (int)(rand()/((double)RAND_MAX+1) * total); int pos = 0; soundIter = regn->soundList.begin(); From 17a4adfe88aded63fd21fe5d3ab658aa62c354c8 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 25 Mar 2012 12:26:44 +0200 Subject: [PATCH 157/488] add raycast method that returns _all_ objects that were hit --- libs/openengine/bullet/physic.cpp | 31 +++++++++++++++++++++++++++++++ libs/openengine/bullet/physic.hpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/libs/openengine/bullet/physic.cpp b/libs/openengine/bullet/physic.cpp index 07bad30535..e6a7393cca 100644 --- a/libs/openengine/bullet/physic.cpp +++ b/libs/openengine/bullet/physic.cpp @@ -372,4 +372,35 @@ namespace Physic return std::pair(name,d); } + + std::vector< std::pair > PhysicEngine::rayTest2(btVector3& from, btVector3& to) + { + MyRayResultCallback resultCallback1; + resultCallback1.m_collisionFilterMask = COL_WORLD; + dynamicsWorld->rayTest(from, to, resultCallback1); + resultCallback1.sort(); + std::vector< std::pair > results = resultCallback1.results; + + MyRayResultCallback resultCallback2; + resultCallback2.m_collisionFilterMask = COL_ACTOR_INTERNAL|COL_ACTOR_EXTERNAL; + dynamicsWorld->rayTest(from, to, resultCallback2); + resultCallback2.sort(); + std::vector< std::pair > actorResults = resultCallback2.results; + + std::vector< std::pair > results2; + + for (std::vector< std::pair >::iterator it=results.begin(); + it != results.end(); ++it) + { + results2.push_back( std::make_pair( (*it).first, static_cast(*(*it).second).mName ) ); + } + + for (std::vector< std::pair >::iterator it=actorResults.begin(); + it != actorResults.end(); ++it) + { + results2.push_back( std::make_pair( (*it).first, static_cast(*(*it).second).mName ) ); + } + + return results2; + } }}; diff --git a/libs/openengine/bullet/physic.hpp b/libs/openengine/bullet/physic.hpp index 88e3699aee..97d2c004d1 100644 --- a/libs/openengine/bullet/physic.hpp +++ b/libs/openengine/bullet/physic.hpp @@ -201,6 +201,11 @@ namespace Physic */ std::pair rayTest(btVector3& from,btVector3& to); + /** + * Return all objects hit by a ray. + */ + std::vector< std::pair > rayTest2(btVector3& from, btVector3& to); + //event list of non player object std::list NPEventList; @@ -225,6 +230,30 @@ namespace Physic bool isDebugCreated; }; + + struct MyRayResultCallback : public btCollisionWorld::RayResultCallback + { + virtual btScalar addSingleResult( btCollisionWorld::LocalRayResult& rayResult, bool bNormalInWorldSpace) + { + results.push_back( std::make_pair(rayResult.m_hitFraction, rayResult.m_collisionObject) ); + return rayResult.m_hitFraction; + } + + static bool cmp( const std::pair& i, const std::pair& j ) + { + if( i.first < j.first ) return false; + if( j.first < i.first ) return true; + return false; + } + + void sort() + { + std::sort(results.begin(), results.end(), cmp); + } + + std::vector < std::pair > results; + }; + }} #endif From 53d4be5cf650edfb0730aa3424d19e70ebfcec40 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 25 Mar 2012 20:52:56 +0200 Subject: [PATCH 158/488] object pickup should work everywhere --- apps/openmw/mwrender/occlusionquery.cpp | 105 +++++++++++++++------- apps/openmw/mwrender/occlusionquery.hpp | 22 +++-- apps/openmw/mwrender/renderingmanager.hpp | 1 + apps/openmw/mwworld/physicssystem.cpp | 27 ++++++ apps/openmw/mwworld/physicssystem.hpp | 6 +- apps/openmw/mwworld/world.cpp | 73 +++++++++++++-- apps/openmw/mwworld/world.hpp | 6 ++ libs/openengine/bullet/physic.hpp | 4 +- 8 files changed, 198 insertions(+), 46 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 8dd30394c9..66086a90b8 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -47,7 +47,7 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod matQueryArea->setDepthCheckEnabled(false); // Not occluded by objects MaterialPtr matQueryVisible = matBase->clone("QueryVisiblePixels"); matQueryVisible->setDepthWriteEnabled(false); - matQueryVisible->setColourWriteEnabled(false); + matQueryVisible->setColourWriteEnabled(false); // Uncomment this to visualize the occlusion query matQueryVisible->setDepthCheckEnabled(true); // Occluded by objects mBBNode = mSunNode->getParentSceneNode()->createChildSceneNode(); @@ -69,13 +69,14 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBNode->attachObject(mBBQueryVisible); mBBQuerySingleObject = mRendering->getScene()->createBillboardSet(1); - mBBQuerySingleObject->setDefaultDimensions(10, 10); + mBBQuerySingleObject->setDefaultDimensions(0.01, 0.01); mBBQuerySingleObject->createBillboard(Vector3::ZERO); mBBQuerySingleObject->setMaterialName("QueryVisiblePixels"); mBBQuerySingleObject->setRenderQueueGroup(queue); mObjectNode->attachObject(mBBQuerySingleObject); mRendering->getScene()->addRenderObjectListener(this); + mRendering->getScene()->addRenderQueueListener(this); mDoQuery = true; } @@ -95,8 +96,6 @@ bool OcclusionQuery::supported() void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass, const AutoParamDataSource* source, const LightList* pLightList, bool suppressRenderStateChanges) { - if (!mSupported) return; - // The following code activates and deactivates the occlusion queries // so that the queries only include the rendering of their intended targets @@ -111,26 +110,47 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass // Open a new occlusion query if (mDoQuery == true) { - if (rend == mBBQueryTotal) - mActiveQuery = mSunTotalAreaQuery; - else if (rend == mBBQueryVisible) - mActiveQuery = mSunVisibleAreaQuery; - else if (rend == mBBQuerySingleObject && mQuerySingleObjectRequested) + if (rend == mBBQueryTotal) { - mQuerySingleObjectStarted = true; - mQuerySingleObjectRequested = false; - mActiveQuery = mSingleObjectQuery; + mActiveQuery = mSunTotalAreaQuery; + mWasVisible = true; + } + else if (rend == mBBQueryVisible) + { + mActiveQuery = mSunVisibleAreaQuery; } - - if (mActiveQuery != NULL) - mActiveQuery->beginOcclusionQuery(); } + if (rend == mBBQuerySingleObject && mQuerySingleObjectRequested) + { + mQuerySingleObjectStarted = true; + mQuerySingleObjectRequested = false; + mActiveQuery = mSingleObjectQuery; + } + + if (mActiveQuery != NULL) + mActiveQuery->beginOcclusionQuery(); +} + +void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocation, bool& repeatThisInvocation) +{ + if (queueGroupId == RENDER_QUEUE_SKIES_LATE && mWasVisible == false) + { + // for some reason our single object query returns wrong results when the sun query was never executed + // (which can happen when we are in interiors, or when the sun is outside of the view frustum and gets culled) + // so we force it here once everything has been rendered + mSunTotalAreaQuery->beginOcclusionQuery(); + mSunTotalAreaQuery->endOcclusionQuery(); + mSunVisibleAreaQuery->beginOcclusionQuery(); + mSunVisibleAreaQuery->endOcclusionQuery(); + } } void OcclusionQuery::update() { if (!mSupported) return; + mWasVisible = false; + // Adjust the position of the sun billboards according to camera viewing distance // we need to do this to make sure that _everything_ can occlude the sun float dist = mRendering->getCamera()->getFarClipDistance(); @@ -145,8 +165,7 @@ void OcclusionQuery::update() mDoQuery = false; if (!mSunTotalAreaQuery->isStillOutstanding() - && !mSunVisibleAreaQuery->isStillOutstanding() - && !mSingleObjectQuery->isStillOutstanding()) + && !mSunVisibleAreaQuery->isStillOutstanding()) { unsigned int totalPixels; unsigned int visiblePixels; @@ -165,24 +184,33 @@ void OcclusionQuery::update() if (mSunVisibility > 1) mSunVisibility = 1; } - if (mQuerySingleObjectStarted) + mDoQuery = true; + } + if (!mSingleObjectQuery->isStillOutstanding() && mQuerySingleObjectStarted) + { + unsigned int result; + + mSingleObjectQuery->pullOcclusionQuery(&result); + + //std::cout << "Single object query result: " << result << " pixels " << std::endl; + mTestResult = (result != 0); + + mBBQuerySingleObject->setVisible(false); + + // restore old render queues + for (std::vector::iterator it=mObjectsInfo.begin(); + it!=mObjectsInfo.end(); ++it) { - unsigned int visiblePixels; - - mSingleObjectQuery->pullOcclusionQuery(&visiblePixels); - - mBBQuerySingleObject->setVisible(false); - mObject->setRenderQueueGroup(mObjectOldRenderQueue); - - mQuerySingleObjectStarted = false; - mQuerySingleObjectRequested = false; + if (!mRendering->getScene()->hasMovableObject((*it).name, (*it).typeName)) return; + mRendering->getScene()->getMovableObject((*it).name, (*it).typeName)->setRenderQueueGroup( (*it).oldRenderqueue ); } - mDoQuery = true; + mQuerySingleObjectStarted = false; + mQuerySingleObjectRequested = false; } } -void OcclusionQuery::occlusionTest(const Ogre::Vector3& position, Ogre::Entity* entity) +void OcclusionQuery::occlusionTest(const Ogre::Vector3& position, Ogre::SceneNode* object) { assert( !occlusionTestPending() && "Occlusion test still pending"); @@ -190,11 +218,24 @@ void OcclusionQuery::occlusionTest(const Ogre::Vector3& position, Ogre::Entity* mBBQuerySingleObject->setVisible(true); // we don't want the object to occlude itself - mObjectOldRenderQueue = entity->getRenderQueueGroup(); - if (mObjectOldRenderQueue < RENDER_QUEUE_MAIN+2) - entity->setRenderQueueGroup(RENDER_QUEUE_MAIN+2); + // put it in a render queue _after_ the occlusion query + mObjectsInfo.clear(); + for (int i=0; inumAttachedObjects(); ++i) + { + ObjectInfo info; + MovableObject* obj = object->getAttachedObject(i); + info.name = obj->getName(); + info.typeName = obj->getMovableType(); + info.oldRenderqueue = obj->getRenderQueueGroup(); + + mObjectsInfo.push_back(info); + + object->getAttachedObject(i)->setRenderQueueGroup(RENDER_QUEUE_MAIN+5); + } mObjectNode->setPosition(position); + // scale proportional to camera distance, in order to always give the billboard the same size in screen-space + mObjectNode->setScale( Vector3(1,1,1)*(position - mRendering->getCamera()->getRealPosition()).length() ); mQuerySingleObjectRequested = true; } diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index bcc45d96c6..987087e278 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -2,6 +2,7 @@ #define _GAME_OCCLUSION_QUERY_H #include +#include namespace Ogre { @@ -17,7 +18,14 @@ namespace MWRender /// /// \brief Implements hardware occlusion queries on the GPU /// - class OcclusionQuery : public Ogre::RenderObjectListener + struct ObjectInfo + { + int oldRenderqueue; + std::string name; + std::string typeName; + }; + + class OcclusionQuery : public Ogre::RenderObjectListener, public Ogre::RenderQueueListener { public: OcclusionQuery(OEngine::Render::OgreRenderer*, Ogre::SceneNode* sunNode); @@ -36,9 +44,9 @@ namespace MWRender /** * request occlusion test for a billboard at the given position, omitting an entity * @param position of the billboard in ogre coordinates - * @param entity to exclude from the occluders + * @param object to exclude from the occluders */ - void occlusionTest(const Ogre::Vector3& position, Ogre::Entity* entity); + void occlusionTest(const Ogre::Vector3& position, Ogre::SceneNode* object); /** * @return true if a request is still outstanding @@ -66,10 +74,10 @@ namespace MWRender Ogre::SceneNode* mBBNode; float mSunVisibility; - Ogre::Entity* mObject; - Ogre::SceneNode* mObjectNode; - int mObjectOldRenderQueue; + std::vector mObjectsInfo; + + bool mWasVisible; bool mTestResult; @@ -84,6 +92,8 @@ namespace MWRender protected: virtual void notifyRenderSingleObject(Ogre::Renderable* rend, const Ogre::Pass* pass, const Ogre::AutoParamDataSource* source, const Ogre::LightList* pLightList, bool suppressRenderStateChanges); + + virtual void renderQueueEnded(Ogre::uint8 queueGroupId, const Ogre::String& invocation, bool& repeatThisInvocation); }; } diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 450e461730..569447bca3 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -100,6 +100,7 @@ class RenderingManager: private RenderingInterface { void sunDisable(); bool occlusionQuerySupported() { return mOcclusionQuery->supported(); }; + OcclusionQuery* getOcclusionQuery() { return mOcclusionQuery; }; void setGlare(bool glare); void skyEnable (); diff --git a/apps/openmw/mwworld/physicssystem.cpp b/apps/openmw/mwworld/physicssystem.cpp index bb2f9f8a92..1d8f14cc42 100644 --- a/apps/openmw/mwworld/physicssystem.cpp +++ b/apps/openmw/mwworld/physicssystem.cpp @@ -50,6 +50,33 @@ namespace MWWorld return mEngine->rayTest(from,to); } + + std::vector < std::pair > PhysicsSystem::getFacedObjects () + { + //get a ray pointing to the center of the viewport + Ray centerRay = mRender.getCamera()->getCameraToViewportRay( + mRender.getViewport()->getWidth()/2, + mRender.getViewport()->getHeight()/2); + //let's avoid the capsule shape of the player. + centerRay.setOrigin(centerRay.getOrigin() + 20*centerRay.getDirection()); + btVector3 from(centerRay.getOrigin().x,-centerRay.getOrigin().z,centerRay.getOrigin().y); + btVector3 to(centerRay.getPoint(500).x,-centerRay.getPoint(500).z,centerRay.getPoint(500).y); + + return mEngine->rayTest2(from,to); + } + + btVector3 PhysicsSystem::getRayPoint(float extent) + { + //get a ray pointing to the center of the viewport + Ray centerRay = mRender.getCamera()->getCameraToViewportRay( + mRender.getViewport()->getWidth()/2, + mRender.getViewport()->getHeight()/2); + //let's avoid the capsule shape of the player. + centerRay.setOrigin(centerRay.getOrigin() + 20*centerRay.getDirection()); + btVector3 from(centerRay.getOrigin().x,-centerRay.getOrigin().z,centerRay.getOrigin().y); + btVector3 to(centerRay.getPoint(500).x,-centerRay.getPoint(500).z,centerRay.getPoint(500).y); + return from * (1-extent) + to * extent; + } bool PhysicsSystem::castRay(const Vector3& from, const Vector3& to) { diff --git a/apps/openmw/mwworld/physicssystem.hpp b/apps/openmw/mwworld/physicssystem.hpp index 78cbde0837..7b2d77325e 100644 --- a/apps/openmw/mwworld/physicssystem.hpp +++ b/apps/openmw/mwworld/physicssystem.hpp @@ -35,7 +35,11 @@ namespace MWWorld bool toggleCollisionMode(); std::pair getFacedHandle (MWWorld::World& world); - + + btVector3 getRayPoint(float extent); + + std::vector < std::pair > getFacedObjects (); + // cast ray, return true if it hit something bool castRay(const Ogre::Vector3& from, const Ogre::Vector3& to); diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 261f66ff4f..f185e411f8 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -498,13 +498,21 @@ namespace MWWorld std::string World::getFacedHandle() { - std::pair result = mPhysics->getFacedHandle (*this); + if (!mRendering->occlusionQuerySupported()) + { + std::pair result = mPhysics->getFacedHandle (*this); - if (result.first.empty() || - result.second>getStore().gameSettings.find ("iMaxActivateDist")->i) - return ""; + if (result.first.empty() || + result.second>getStore().gameSettings.find ("iMaxActivateDist")->i) + return ""; - return result.first; + return result.first; + } + else + { + // updated every few frames in update() + return mFacedHandle; + } } void World::deleteObject (Ptr ptr) @@ -715,6 +723,61 @@ namespace MWWorld sun = Vector3(sun.x, -sun.z, sun.y); mRendering->getSkyManager()->setGlare(!mPhysics->castRay(Ogre::Vector3(p[0], p[1], p[2]), sun)); } + + // update faced handle (object the player is looking at) + // this uses a mixture of raycasts and occlusion queries. + else // if (mRendering->occlusionQuerySupported()) + { + MWRender::OcclusionQuery* query = mRendering->getOcclusionQuery(); + if (!query->occlusionTestPending()) + { + // get result of last query + if (mNumFacing == 0) mFacedHandle = ""; + else if (mNumFacing == 1) + { + bool result = query->getTestResult(); + mFacedHandle = result ? mFaced1Name : ""; + } + else if (mNumFacing == 2) + { + bool result = query->getTestResult(); + mFacedHandle = result ? mFaced2Name : mFaced1Name; + } + + // send new query + // figure out which object we want to test against + std::vector < std::pair < float, std::string > > results = mPhysics->getFacedObjects(); + + if (results.size() == 0) + { + mNumFacing = 0; + } + else if (results.size() == 1) + { + mFaced1 = getPtrViaHandle(results.front().second); + mFaced1Name = results.front().second; + mNumFacing = 1; + + btVector3 p = mPhysics->getRayPoint(results.front().first); + Ogre::Vector3 pos(p.x(), p.z(), -p.y()); + Ogre::SceneNode* node = mFaced1.getRefData().getBaseNode(); + query->occlusionTest(pos, node); + } + else + { + mFaced1Name = results.front().second; + mFaced2Name = results[1].second; + mFaced1 = getPtrViaHandle(results.front().second); + mFaced2 = getPtrViaHandle(results[1].second); + mNumFacing = 2; + + btVector3 p = mPhysics->getRayPoint(results[1].first); + Ogre::Vector3 pos(p.x(), p.z(), -p.y()); + Ogre::SceneNode* node = mFaced2.getRefData().getBaseNode(); + query->occlusionTest(pos, node); + } + } + } } bool World::isCellExterior() const diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 71cca3545d..7d8a1b9a0a 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -93,6 +93,12 @@ namespace MWWorld Ptr getPtrViaHandle (const std::string& handle, Ptr::CellStore& cellStore); + std::string mFacedHandle; + Ptr mFaced1; + Ptr mFaced2; + std::string mFaced1Name; + std::string mFaced2Name; + int mNumFacing; int getDaysPerMonth (int month) const; diff --git a/libs/openengine/bullet/physic.hpp b/libs/openengine/bullet/physic.hpp index 97d2c004d1..3ecae7c0cc 100644 --- a/libs/openengine/bullet/physic.hpp +++ b/libs/openengine/bullet/physic.hpp @@ -241,8 +241,8 @@ namespace Physic static bool cmp( const std::pair& i, const std::pair& j ) { - if( i.first < j.first ) return false; - if( j.first < i.first ) return true; + if( i.first > j.first ) return false; + if( j.first > i.first ) return true; return false; } From 382fa6ac688097eb2980067255f4b8fe9395f3cd Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 25 Mar 2012 22:53:00 +0200 Subject: [PATCH 159/488] fixes --- apps/openmw/mwrender/occlusionquery.cpp | 10 +++++++--- libs/openengine/bullet/physic.cpp | 4 ++-- libs/openengine/bullet/physic.hpp | 7 +------ 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 66086a90b8..b5f3f9c102 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -49,6 +49,8 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod matQueryVisible->setDepthWriteEnabled(false); matQueryVisible->setColourWriteEnabled(false); // Uncomment this to visualize the occlusion query matQueryVisible->setDepthCheckEnabled(true); // Occluded by objects + matQueryVisible->setCullingMode(CULL_NONE); + matQueryVisible->setManualCullingMode(MANUAL_CULL_NONE); mBBNode = mSunNode->getParentSceneNode()->createChildSceneNode(); @@ -133,16 +135,18 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocation, bool& repeatThisInvocation) { - if (queueGroupId == RENDER_QUEUE_SKIES_LATE && mWasVisible == false) + if (queueGroupId == RENDER_QUEUE_SKIES_LATE && mWasVisible == false && mDoQuery) { // for some reason our single object query returns wrong results when the sun query was never executed // (which can happen when we are in interiors, or when the sun is outside of the view frustum and gets culled) // so we force it here once everything has been rendered + mSunTotalAreaQuery->beginOcclusionQuery(); mSunTotalAreaQuery->endOcclusionQuery(); mSunVisibleAreaQuery->beginOcclusionQuery(); mSunVisibleAreaQuery->endOcclusionQuery(); - } + + } } void OcclusionQuery::update() @@ -201,7 +205,7 @@ void OcclusionQuery::update() for (std::vector::iterator it=mObjectsInfo.begin(); it!=mObjectsInfo.end(); ++it) { - if (!mRendering->getScene()->hasMovableObject((*it).name, (*it).typeName)) return; + if (!mRendering->getScene()->hasMovableObject((*it).name, (*it).typeName)) break; mRendering->getScene()->getMovableObject((*it).name, (*it).typeName)->setRenderQueueGroup( (*it).oldRenderqueue ); } diff --git a/libs/openengine/bullet/physic.cpp b/libs/openengine/bullet/physic.cpp index e6a7393cca..b1cd9eadee 100644 --- a/libs/openengine/bullet/physic.cpp +++ b/libs/openengine/bullet/physic.cpp @@ -378,13 +378,11 @@ namespace Physic MyRayResultCallback resultCallback1; resultCallback1.m_collisionFilterMask = COL_WORLD; dynamicsWorld->rayTest(from, to, resultCallback1); - resultCallback1.sort(); std::vector< std::pair > results = resultCallback1.results; MyRayResultCallback resultCallback2; resultCallback2.m_collisionFilterMask = COL_ACTOR_INTERNAL|COL_ACTOR_EXTERNAL; dynamicsWorld->rayTest(from, to, resultCallback2); - resultCallback2.sort(); std::vector< std::pair > actorResults = resultCallback2.results; std::vector< std::pair > results2; @@ -401,6 +399,8 @@ namespace Physic results2.push_back( std::make_pair( (*it).first, static_cast(*(*it).second).mName ) ); } + std::sort(results2.begin(), results2.end(), MyRayResultCallback::cmp); + return results2; } }}; diff --git a/libs/openengine/bullet/physic.hpp b/libs/openengine/bullet/physic.hpp index 3ecae7c0cc..f6c52cbf95 100644 --- a/libs/openengine/bullet/physic.hpp +++ b/libs/openengine/bullet/physic.hpp @@ -239,18 +239,13 @@ namespace Physic return rayResult.m_hitFraction; } - static bool cmp( const std::pair& i, const std::pair& j ) + static bool cmp( const std::pair& i, const std::pair& j ) { if( i.first > j.first ) return false; if( j.first > i.first ) return true; return false; } - void sort() - { - std::sort(results.begin(), results.end(), cmp); - } - std::vector < std::pair > results; }; From 978b5f64d8767ef05b1010ecd8f862d36bba1b65 Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Sun, 25 Mar 2012 23:53:14 +0300 Subject: [PATCH 160/488] Merge cmake/findBullet patch for '_debug' postfixed libraries Merge in the patch from the cmake official repository: https://cmake.org/gitweb?p=cmake.git;a=commit;h=6f935d7f55af5c96d18d23b72991e87d1e029dda Without this fix cmake couldn't find bullet's debug libraries, and VS2010 openmw project file was generated with links to release libraries instead (which caused errors during build in debug configuration). --- cmake/FindBullet.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmake/FindBullet.cmake b/cmake/FindBullet.cmake index 7bdf75a0a3..552a0651af 100644 --- a/cmake/FindBullet.cmake +++ b/cmake/FindBullet.cmake @@ -51,13 +51,13 @@ find_path(BULLET_INCLUDE_DIR NAMES btBulletCollisionCommon.h # Find the libraries _FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY BulletDynamics) -_FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY_DEBUG BulletDynamics_d) +_FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY_DEBUG BulletDynamics_Debug BulletDynamics_d) _FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY BulletCollision) -_FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY_DEBUG BulletCollision_d) -_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY LinearMath BulletMath) -_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY_DEBUG LinearMath_d BulletMath_d) +_FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY_DEBUG BulletCollision_Debug BulletCollision_d) +_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY BulletMath LinearMath) +_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY_DEBUG BulletMath_Debug BulletMath_d LinearMath_debug LinearMath_d) _FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY BulletSoftBody) -_FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY_DEBUG BulletSoftBody_d) +_FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY_DEBUG BulletSoftBody_Debug BulletSoftBody_d) # handle the QUIETLY and REQUIRED arguments and set BULLET_FOUND to TRUE if From 35c3a0a3f921ef767121fea17cf2ebf1f4808f7e Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Mon, 26 Mar 2012 00:12:00 +0300 Subject: [PATCH 161/488] Add Boost_USE_STATIC_LIBS parameter for Windows If this parameter is not set in windows, cmake expects boost libraries to be named "boost_*.lib", while they are actually "libboost_*.lib" In findBoost.cmake (728): # Setting some more suffixes for the library set (Boost_LIB_PREFIX "") if (WIN32 AND Boost_USE_STATIC_LIBS AND NOT CYGWIN) set(Boost_LIB_PREFIX "lib") endif() --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d5f0bffa8f..d2801c8f22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -168,6 +168,7 @@ set(OPENMW_LIBS_HEADER) # Platform specific if (WIN32) + set(Boost_USE_STATIC_LIBS ON) set(PLATFORM_INCLUDE_DIR "platform") add_definitions(-DBOOST_ALL_NO_LIB) else (WIN32) From 98a33a7fc6c7f9e3f75f8ccbd93e7625a330eb1f Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 25 Mar 2012 23:28:51 +0200 Subject: [PATCH 162/488] fix --- apps/openmw/mwrender/occlusionquery.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index b5f3f9c102..971815f9bf 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -71,7 +71,8 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBNode->attachObject(mBBQueryVisible); mBBQuerySingleObject = mRendering->getScene()->createBillboardSet(1); - mBBQuerySingleObject->setDefaultDimensions(0.01, 0.01); + /// \todo ideally this should occupy exactly 1 pixel on the screen + mBBQuerySingleObject->setDefaultDimensions(0.003, 0.003); mBBQuerySingleObject->createBillboard(Vector3::ZERO); mBBQuerySingleObject->setMaterialName("QueryVisiblePixels"); mBBQuerySingleObject->setRenderQueueGroup(queue); From 4ee03cd61fef8d71e0a4614ef512e34ce30fa278 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 26 Mar 2012 00:31:03 +0200 Subject: [PATCH 163/488] handle timeout --- apps/openmw/mwrender/occlusionquery.cpp | 16 +++++++++++++--- apps/openmw/mwrender/occlusionquery.hpp | 6 +++++- apps/openmw/mwrender/renderingmanager.cpp | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 971815f9bf..6718a588bc 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -12,7 +12,7 @@ using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), - mQuerySingleObjectRequested(false) + mQuerySingleObjectRequested(false), mResponding(true), mDelay(0) { mRendering = renderer; mSunNode = sunNode; @@ -93,7 +93,8 @@ OcclusionQuery::~OcclusionQuery() bool OcclusionQuery::supported() { - return mSupported; + if (!mResponding) std::cout << "Occlusion query timed out" << std::endl; + return mSupported && mResponding; } void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass, const AutoParamDataSource* source, @@ -150,10 +151,13 @@ void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocati } } -void OcclusionQuery::update() +void OcclusionQuery::update(float duration) { if (!mSupported) return; + mDelay += duration; + if (mDelay >= 2) mResponding = false; + mWasVisible = false; // Adjust the position of the sun billboards according to camera viewing distance @@ -172,6 +176,9 @@ void OcclusionQuery::update() if (!mSunTotalAreaQuery->isStillOutstanding() && !mSunVisibleAreaQuery->isStillOutstanding()) { + mDelay = 0; + mResponding = true; + unsigned int totalPixels; unsigned int visiblePixels; @@ -193,6 +200,9 @@ void OcclusionQuery::update() } if (!mSingleObjectQuery->isStillOutstanding() && mQuerySingleObjectStarted) { + mDelay = 0; + mResponding = true; + unsigned int result; mSingleObjectQuery->pullOcclusionQuery(&result); diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index 987087e278..004190cd90 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -39,7 +39,7 @@ namespace MWRender /** * per-frame update */ - void update(); + void update(float duration); /** * request occlusion test for a billboard at the given position, omitting an entity @@ -79,6 +79,10 @@ namespace MWRender bool mWasVisible; + bool mResponding; + + float mDelay; + bool mTestResult; bool mSupported; diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index b4711e8df7..2aec95e813 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -150,7 +150,7 @@ void RenderingManager::update (float duration){ mActors.update (duration); - mOcclusionQuery->update(); + mOcclusionQuery->update(duration); mSkyManager->update(duration); From 7b3ecc290e2a75a6caed1cf42df4c2e93d3fe1bd Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 26 Mar 2012 01:12:06 -0700 Subject: [PATCH 164/488] Fix compilation with older OpenAL headers --- apps/openmw/mwsound/openal_output.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index a0b9c3a724..c069474034 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -10,6 +10,10 @@ #include "sound.hpp" #include "soundmanager.hpp" +#ifndef ALC_ALL_DEVICES_SPECIFIER +#define ALC_ALL_DEVICES_SPECIFIER 0x1013 +#endif + namespace MWSound { From 0d552c10bc913771b73ca4deb38f3dbaf97477db Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 26 Mar 2012 04:10:47 -0700 Subject: [PATCH 165/488] Use an empty MWWorld::Ptr object for non-3D sounds --- apps/openmw/mwsound/soundmanager.cpp | 29 ++++++++++++---------------- apps/openmw/mwsound/soundmanager.hpp | 1 - 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index f626ec1584..4d47e5f2cc 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -69,7 +69,6 @@ namespace MWSound SoundManager::~SoundManager() { - mLooseSounds.clear(); mActiveSounds.clear(); mMusic.reset(); mOutput.reset(); @@ -207,7 +206,7 @@ namespace MWSound { std::string file = lookup(soundId, volume, min, max); Sound *sound = mOutput->playSound(file, volume, pitch, loop); - mLooseSounds[soundId] = SoundPtr(sound); + mActiveSounds[MWWorld::Ptr()][soundId] = SoundPtr(sound); } catch(std::exception &e) { @@ -226,8 +225,7 @@ namespace MWSound std::string file = lookup(soundId, volume, min, max); SoundPtr sound(mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop)); - if(untracked) mLooseSounds[soundId] = sound; - else mActiveSounds[ptr][soundId] = sound; + mActiveSounds[untracked?MWWorld::Ptr():ptr][soundId] = sound; } catch(std::exception &e) { @@ -272,7 +270,7 @@ namespace MWSound SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { - if(snditer->first.getCell() == cell) + if(snditer->first != MWWorld::Ptr() && snditer->first.getCell() == cell) { IDMap::iterator iditer = snditer->second.begin(); while(iditer != snditer->second.end()) @@ -289,11 +287,17 @@ namespace MWSound void SoundManager::stopSound(const std::string& soundId) { - IDMap::iterator iditer = mLooseSounds.find(soundId); - if(iditer != mLooseSounds.end()) + SoundMap::iterator snditer = mActiveSounds.find(MWWorld::Ptr()); + if(snditer == mActiveSounds.end()) + return; + + IDMap::iterator iditer = snditer->second.find(soundId); + if(iditer != snditer->second.end()) { iditer->second->stop(); - mLooseSounds.erase(iditer); + snditer->second.erase(iditer); + if(snditer->second.empty()) + mActiveSounds.erase(snditer); } } @@ -415,15 +419,6 @@ namespace MWSound else snditer++; } - - IDMap::iterator iditer = mLooseSounds.begin(); - while(iditer != mLooseSounds.end()) - { - if(!iditer->second->isPlaying()) - mLooseSounds.erase(iditer++); - else - iditer++; - } } void SoundManager::update(float duration) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index b7c883a130..8d76ba1008 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -44,7 +44,6 @@ namespace MWSound typedef std::map IDMap; typedef std::map SoundMap; SoundMap mActiveSounds; - IDMap mLooseSounds; std::string lookup(const std::string &soundId, float &volume, float &min, float &max); From 633e80cded155919dd01a7f33f2181ce68e6b327 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sun, 25 Mar 2012 16:12:23 +0200 Subject: [PATCH 166/488] Issue #225: Added cleanup of maps used in PhysicEngine. --- libs/openengine/bullet/physic.cpp | 53 +++++++++++++++++++++++++++---- libs/openengine/bullet/physic.hpp | 10 ++++-- 2 files changed, 55 insertions(+), 8 deletions(-) diff --git a/libs/openengine/bullet/physic.cpp b/libs/openengine/bullet/physic.cpp index 07bad30535..756f3b0c6d 100644 --- a/libs/openengine/bullet/physic.cpp +++ b/libs/openengine/bullet/physic.cpp @@ -173,6 +173,7 @@ namespace Physic mShapeLoader = shapeLoader; isDebugCreated = false; + mDebugDrawer = NULL; } void PhysicEngine::createDebugRendering() @@ -202,6 +203,35 @@ namespace Physic PhysicEngine::~PhysicEngine() { + + RigidBodyContainer::iterator rb_it = RigidBodyMap.begin(); + for (; rb_it != RigidBodyMap.end(); ++rb_it) + { + if (rb_it->second != NULL) + { + dynamicsWorld->removeRigidBody(rb_it->second); + + delete rb_it->second; + rb_it->second = NULL; + } + } + + PhysicActorContainer::iterator pa_it = PhysicActorMap.begin(); + for (; pa_it != PhysicActorMap.end(); ++pa_it) + { + if (pa_it->second != NULL) + { + dynamicsWorld->removeCollisionObject(pa_it->second->externalGhostObject); + dynamicsWorld->removeCollisionObject(pa_it->second->internalGhostObject); + dynamicsWorld->removeAction(pa_it->second->mCharacter); + + delete pa_it->second; + pa_it->second = NULL; + } + } + + delete mDebugDrawer; + delete dynamicsWorld; delete solver; delete collisionConfiguration; @@ -239,32 +269,39 @@ namespace Physic dynamicsWorld->addRigidBody(body,COL_WORLD,COL_NOTHING); } body->setActivationState(DISABLE_DEACTIVATION); + RigidBody* oldBody = RigidBodyMap[body->mName]; + if (oldBody != NULL) + { + dynamicsWorld->removeRigidBody(oldBody); + delete oldBody; + } + RigidBodyMap[body->mName] = body; } void PhysicEngine::removeRigidBody(std::string name) { - std::map::iterator it = RigidBodyMap.find(name); + RigidBodyContainer::iterator it = RigidBodyMap.find(name); if (it != RigidBodyMap.end() ) { RigidBody* body = it->second; if(body != NULL) { // broadphase->getOverlappingPairCache()->removeOverlappingPairsContainingProxy(body->getBroadphaseProxy(),dispatcher); - /*std::map::iterator it2 = PhysicActorMap.begin(); + /*PhysicActorContainer::iterator it2 = PhysicActorMap.begin(); for(;it2!=PhysicActorMap.end();it++) { it2->second->internalGhostObject->getOverlappingPairCache()->removeOverlappingPairsContainingProxy(body->getBroadphaseProxy(),dispatcher); it2->second->externalGhostObject->getOverlappingPairCache()->removeOverlappingPairsContainingProxy(body->getBroadphaseProxy(),dispatcher); }*/ - dynamicsWorld->removeRigidBody(RigidBodyMap[name]); + dynamicsWorld->removeRigidBody(body); } } } void PhysicEngine::deleteRigidBody(std::string name) { - std::map::iterator it = RigidBodyMap.find(name); + RigidBodyContainer::iterator it = RigidBodyMap.find(name); if (it != RigidBodyMap.end() ) { RigidBody* body = it->second; @@ -293,6 +330,10 @@ namespace Physic void PhysicEngine::addCharacter(std::string name) { + // Remove character with given name, so we don't make memory + // leak when character would be added twice + removeCharacter(name); + PhysicActor* newActor = new PhysicActor(name); dynamicsWorld->addCollisionObject( newActor->externalGhostObject, COL_ACTOR_EXTERNAL, COL_WORLD |COL_ACTOR_EXTERNAL ); dynamicsWorld->addCollisionObject( newActor->internalGhostObject, COL_ACTOR_INTERNAL, COL_WORLD |COL_ACTOR_INTERNAL ); @@ -303,7 +344,7 @@ namespace Physic void PhysicEngine::removeCharacter(std::string name) { //std::cout << "remove"; - std::map::iterator it = PhysicActorMap.find(name); + PhysicActorContainer::iterator it = PhysicActorMap.find(name); if (it != PhysicActorMap.end() ) { PhysicActor* act = it->second; @@ -311,7 +352,7 @@ namespace Physic { /*broadphase->getOverlappingPairCache()->removeOverlappingPairsContainingProxy(act->externalGhostObject->getBroadphaseHandle(),dispatcher); broadphase->getOverlappingPairCache()->removeOverlappingPairsContainingProxy(act->internalGhostObject->getBroadphaseHandle(),dispatcher); - std::map::iterator it2 = PhysicActorMap.begin(); + PhysicActorContainer::iterator it2 = PhysicActorMap.begin(); for(;it2!=PhysicActorMap.end();it++) { it->second->internalGhostObject->getOverlappingPairCache()->removeOverlappingPairsContainingProxy(act->externalGhostObject->getBroadphaseHandle(),dispatcher); diff --git a/libs/openengine/bullet/physic.hpp b/libs/openengine/bullet/physic.hpp index 88e3699aee..200b962074 100644 --- a/libs/openengine/bullet/physic.hpp +++ b/libs/openengine/bullet/physic.hpp @@ -42,6 +42,8 @@ namespace Physic :btPairCachingGhostObject(),mName(name) { } + virtual ~PairCachingGhostObject(){} + std::string mName; }; @@ -106,6 +108,7 @@ namespace Physic { public: RigidBody(btRigidBody::btRigidBodyConstructionInfo& CI,std::string name); + virtual ~RigidBody() {} std::string mName; //is this body used for raycasting only? @@ -217,8 +220,11 @@ namespace Physic //the NIF file loader. BulletShapeLoader* mShapeLoader; - std::map RigidBodyMap; - std::map PhysicActorMap; + typedef std::map RigidBodyContainer; + RigidBodyContainer RigidBodyMap; + + typedef std::map PhysicActorContainer; + PhysicActorContainer PhysicActorMap; //debug rendering BtOgre::DebugDrawer* mDebugDrawer; From a7ac0e526e2d942df619cddc737204f5c4b2d283 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sun, 25 Mar 2012 18:12:00 +0200 Subject: [PATCH 167/488] Issue #225: Added cleanup of parts of PhysicEngine. Added cleanup of CMotionState inserted to RigidBody, and btSortedOverlappingPairCache inserted to btDbvtBroadphase in PhysicEngine. --- libs/openengine/bullet/physic.cpp | 13 +++++++++---- libs/openengine/bullet/physic.hpp | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/libs/openengine/bullet/physic.cpp b/libs/openengine/bullet/physic.cpp index 756f3b0c6d..8b9f3dfecb 100644 --- a/libs/openengine/bullet/physic.cpp +++ b/libs/openengine/bullet/physic.cpp @@ -134,10 +134,15 @@ namespace Physic RigidBody::RigidBody(btRigidBody::btRigidBodyConstructionInfo& CI,std::string name) - :btRigidBody(CI),mName(name) + : btRigidBody(CI) + , mName(name) { + } - }; + RigidBody::~RigidBody() + { + delete getMotionState(); + } @@ -155,8 +160,7 @@ namespace Physic // The actual physics solver solver = new btSequentialImpulseConstraintSolver; - //TODO: memory leak? - btOverlappingPairCache* pairCache = new btSortedOverlappingPairCache(); + pairCache = new btSortedOverlappingPairCache(); //pairCache->setInternalGhostPairCallback( new btGhostPairCallback() ); broadphase = new btDbvtBroadphase(pairCache); @@ -237,6 +241,7 @@ namespace Physic delete collisionConfiguration; delete dispatcher; delete broadphase; + delete pairCache; delete mShapeLoader; } diff --git a/libs/openengine/bullet/physic.hpp b/libs/openengine/bullet/physic.hpp index 200b962074..57ffe91305 100644 --- a/libs/openengine/bullet/physic.hpp +++ b/libs/openengine/bullet/physic.hpp @@ -108,7 +108,7 @@ namespace Physic { public: RigidBody(btRigidBody::btRigidBodyConstructionInfo& CI,std::string name); - virtual ~RigidBody() {} + virtual ~RigidBody(); std::string mName; //is this body used for raycasting only? @@ -211,6 +211,7 @@ namespace Physic std::list PEventList; //Bullet Stuff + btOverlappingPairCache* pairCache; btBroadphaseInterface* broadphase; btDefaultCollisionConfiguration* collisionConfiguration; btSequentialImpulseConstraintSolver* solver; From d3b88b9e34ae0d46153262ebd1acf2627bb15984 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sun, 25 Mar 2012 20:37:05 +0200 Subject: [PATCH 168/488] Issue #225: Added cleanup of allocated memory in BulletNifLoader and BulletShapeLoader. --- components/nifbullet/bullet_nif_loader.cpp | 22 ++++++++++++++++++-- components/nifbullet/bullet_nif_loader.hpp | 2 +- libs/openengine/bullet/BulletShapeLoader.cpp | 1 + 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/components/nifbullet/bullet_nif_loader.cpp b/components/nifbullet/bullet_nif_loader.cpp index 82e9d7adc5..e9aa626dbe 100644 --- a/components/nifbullet/bullet_nif_loader.cpp +++ b/components/nifbullet/bullet_nif_loader.cpp @@ -51,7 +51,11 @@ using namespace Mangle::VFS; using namespace NifBullet; -//==================================================================================================== +ManualBulletShapeLoader::~ManualBulletShapeLoader() +{ + delete vfs; +} + Ogre::Matrix3 ManualBulletShapeLoader::getMatrix(Nif::Transformation* tr) { Ogre::Matrix3 rot(tr->rotation.v[0].array[0],tr->rotation.v[0].array[1],tr->rotation.v[0].array[2], @@ -135,7 +139,21 @@ void ManualBulletShapeLoader::loadResource(Ogre::Resource *resource) handleNode(node,0,Ogre::Matrix3::IDENTITY,Ogre::Vector3::ZERO,1,hasCollisionNode,false,true); } - currentShape = new btBvhTriangleMeshShape(mTriMesh,true); + struct TriangleMeshShape : public btBvhTriangleMeshShape + { + TriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression) + : btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression) + { + } + + virtual ~TriangleMeshShape() + { + delete getTriangleInfoMap(); + delete m_meshInterface; + } + }; + + currentShape = new TriangleMeshShape(mTriMesh,true); cShape->Shape = currentShape; } diff --git a/components/nifbullet/bullet_nif_loader.hpp b/components/nifbullet/bullet_nif_loader.hpp index 1fa2b6aa5f..ed3aceac46 100644 --- a/components/nifbullet/bullet_nif_loader.hpp +++ b/components/nifbullet/bullet_nif_loader.hpp @@ -69,7 +69,7 @@ class ManualBulletShapeLoader : public BulletShapeLoader public: ManualBulletShapeLoader():resourceGroup("General"){vfs = 0;} - virtual ~ManualBulletShapeLoader() {} + virtual ~ManualBulletShapeLoader(); void warn(std::string msg) { diff --git a/libs/openengine/bullet/BulletShapeLoader.cpp b/libs/openengine/bullet/BulletShapeLoader.cpp index 48b87e1e8c..4593bad528 100644 --- a/libs/openengine/bullet/BulletShapeLoader.cpp +++ b/libs/openengine/bullet/BulletShapeLoader.cpp @@ -22,6 +22,7 @@ Ogre::Resource(creator, name, handle, group, isManual, loader) BulletShape::~BulletShape() { + deleteShape(Shape); } // farm out to BulletShapeLoader From 5185a28b6002d1e04b89632ff27a00a613634d54 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sun, 25 Mar 2012 21:56:22 +0200 Subject: [PATCH 169/488] Issue #225: Initialize all class members in constructor. --- apps/openmw/mwgui/layouts.cpp | 16 ++++++++++ apps/openmw/mwgui/stats_window.cpp | 13 ++++++++ apps/openmw/mwgui/window_manager.cpp | 29 ++++++++++++++++-- apps/openmw/mwrender/animation.cpp | 25 ++++++++++++++- apps/openmw/mwrender/animation.hpp | 16 +++++----- libs/openengine/ogre/renderer.hpp | 46 +++++++++++++++++++++------- 6 files changed, 123 insertions(+), 22 deletions(-) diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index 9c49c62ac3..dbd6154b7c 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -15,6 +15,22 @@ using namespace MWGui; HUD::HUD(int width, int height, int fpsLevel) : Layout("openmw_hud_layout.xml") + , health(NULL) + , magicka(NULL) + , stamina(NULL) + , weapImage(NULL) + , spellImage(NULL) + , weapStatus(NULL) + , spellStatus(NULL) + , effectBox(NULL) + , effect1(NULL) + , minimap(NULL) + , compass(NULL) + , crosshair(NULL) + , fpsbox(NULL) + , fpscounter(NULL) + , trianglecounter(NULL) + , batchcounter(NULL) { setCoord(0,0, width, height); diff --git a/apps/openmw/mwgui/stats_window.cpp b/apps/openmw/mwgui/stats_window.cpp index 243b6272a5..12b0dcc793 100644 --- a/apps/openmw/mwgui/stats_window.cpp +++ b/apps/openmw/mwgui/stats_window.cpp @@ -13,9 +13,22 @@ const int StatsWindow::lineHeight = 18; StatsWindow::StatsWindow (WindowManager& parWindowManager) : WindowBase("openmw_stats_window_layout.xml", parWindowManager) + , skillAreaWidget(NULL) + , skillClientWidget(NULL) + , skillScrollerWidget(NULL) , lastPos(0) + , clientHeight(0) + , majorSkills() + , minorSkills() + , miscSkills() + , skillValues() + , skillWidgetMap() + , factionWidgetMap() + , factions() + , birthSignId() , reputation(0) , bounty(0) + , skillWidgets() { setCoord(0,0,498, 342); diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index fa6dedc77e..a04e2dcb8b 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -22,15 +22,40 @@ using namespace MWGui; WindowManager::WindowManager(MWWorld::Environment& environment, const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, const std::string logpath) - : environment(environment) + : mGuiManager(NULL) + , environment(environment) + , hud(NULL) + , map(NULL) + , menu(NULL) + , stats(NULL) + , mMessageBoxManager(NULL) + , console(NULL) + , mJournal(NULL) , dialogueWindow(nullptr) + , mCharGen(NULL) + , playerClass() + , playerName() + , playerRaceId() + , playerBirthSignId() + , playerAttributes() + , playerMajorSkills() + , playerMinorSkills() + , playerSkillValues() + , playerHealth() + , playerMagicka() + , playerFatigue() + , gui(NULL) , mode(GM_Game) , nextMode(GM_Game) , needModeChange(false) + , garbageDialogs() , shown(GW_ALL) , allowed(newGame ? GW_None : GW_ALL) + , showFPSLevel(fpsLevel) + , mFPS(0.0f) + , mTriangleCount(0) + , mBatchCount(0) { - showFPSLevel = fpsLevel; // Set up the GUI system mGuiManager = new OEngine::GUI::MyGUIManager(mOgre->getWindow(), mOgre->getScene(), false, logpath); diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index 7b0d7015c0..f3a8f64d55 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -4,7 +4,30 @@ namespace MWRender{ std::map Animation::mUniqueIDs; - Animation::~Animation(){ + Animation::Animation(MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend) + : insert(NULL) + , mRend(_rend) + , mEnvironment(_env) + , vecRotPos() + , shapeparts() + , time(0.0f) + , startTime(0.0f) + , stopTime(0.0f) + , animate(0) + , rindexI() + , tindexI() + , shapeNumber(0) + , shapeIndexI() + , shapes(NULL) + , entityparts() + , transformations(NULL) + , textmappings(NULL) + , base(NULL) + { + } + + Animation::~Animation() + { } std::string Animation::getUniqueID(std::string mesh){ diff --git a/apps/openmw/mwrender/animation.hpp b/apps/openmw/mwrender/animation.hpp index d1e8071f06..7692c71283 100644 --- a/apps/openmw/mwrender/animation.hpp +++ b/apps/openmw/mwrender/animation.hpp @@ -60,14 +60,14 @@ class Animation{ std::string getUniqueID(std::string mesh); public: - Animation(MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend): mRend(_rend), mEnvironment(_env), animate(0){}; - virtual void runAnimation(float timepassed) = 0; - void startScript(std::string groupname, int mode, int loops); - void stopScript(); - - - virtual ~Animation(); + Animation(MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend); + virtual void runAnimation(float timepassed) = 0; + void startScript(std::string groupname, int mode, int loops); + void stopScript(); + + + virtual ~Animation(); }; } -#endif \ No newline at end of file +#endif diff --git a/libs/openengine/ogre/renderer.hpp b/libs/openengine/ogre/renderer.hpp index 6516b0a80c..179515aa92 100644 --- a/libs/openengine/ogre/renderer.hpp +++ b/libs/openengine/ogre/renderer.hpp @@ -44,27 +44,51 @@ namespace Render Ogre::SceneManager *mScene; Ogre::Camera *mCamera; Ogre::Viewport *mView; - #ifdef ENABLE_PLUGIN_CgProgramManager +#ifdef ENABLE_PLUGIN_CgProgramManager Ogre::CgPlugin* mCgPlugin; - #endif - #ifdef ENABLE_PLUGIN_OctreeSceneManager +#endif +#ifdef ENABLE_PLUGIN_OctreeSceneManager Ogre::OctreePlugin* mOctreePlugin; - #endif - #ifdef ENABLE_PLUGIN_ParticleFX +#endif +#ifdef ENABLE_PLUGIN_ParticleFX Ogre::ParticleFXPlugin* mParticleFXPlugin; - #endif - #ifdef ENABLE_PLUGIN_GL +#endif +#ifdef ENABLE_PLUGIN_GL Ogre::GLPlugin* mGLPlugin; - #endif - #ifdef ENABLE_PLUGIN_Direct3D9 +#endif +#ifdef ENABLE_PLUGIN_Direct3D9 Ogre::D3D9Plugin* mD3D9Plugin; - #endif +#endif Fader* mFader; bool logging; public: OgreRenderer() - : mRoot(NULL), mWindow(NULL), mScene(NULL), mFader(NULL) {} + : mRoot(NULL) + , mWindow(NULL) + , mScene(NULL) + , mCamera(NULL) + , mView(NULL) +#ifdef ENABLE_PLUGIN_CgProgramManager + , mCgPlugin(NULL) +#endif +#ifdef ENABLE_PLUGIN_OctreeSceneManager + , mOctreePlugin(NULL) +#endif +#ifdef ENABLE_PLUGIN_ParticleFX + , mParticleFXPlugin(NULL) +#endif +#ifdef ENABLE_PLUGIN_GL + , mGLPlugin(NULL) +#endif +#ifdef ENABLE_PLUGIN_Direct3D9 + , mD3D9Plugin(NULL) +#endif + , mFader(NULL) + , logging(false) + { + } + ~OgreRenderer() { cleanup(); } /** Configure the renderer. This will load configuration files and From 2b9845a5b69de39203e970e326b5a15e22731732 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sun, 25 Mar 2012 23:34:32 +0200 Subject: [PATCH 170/488] Issue #225: Free memory allocated for sending into HardwareVertexBuffer. Free memory allocated for sending into HardwareVertexBuffer in NIFLoader class. --- components/nifogre/ogre_nif_loader.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 2e68cfe905..1367c138a4 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -509,7 +509,8 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std datamod[index+1] = original.y; datamod[index+2] = original.z; } - vbuf->writeData(0, vbuf->getSizeInBytes(), datamod, false); + vbuf->writeData(0, vbuf->getSizeInBytes(), datamod, false); + delete datamod; } else { @@ -550,6 +551,7 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std datamod[index+2] = original.z; } vbuf->writeData(0, vbuf->getSizeInBytes(), datamod, false); + delete datamod; } else { @@ -601,6 +603,7 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std datamod[i + 1] =y; } vbuf->writeData(0, vbuf->getSizeInBytes(), datamod, false); + delete datamod; } else vbuf->writeData(0, vbuf->getSizeInBytes(), data->uvlist.ptr, false); @@ -644,15 +647,13 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std index += 3; } - ibuf->writeData(0, ibuf->getSizeInBytes(), datamod, false); + ibuf->writeData(0, ibuf->getSizeInBytes(), datamod, false); + delete datamod; } else - ibuf->writeData(0, ibuf->getSizeInBytes(), data->triangles.ptr, false); + ibuf->writeData(0, ibuf->getSizeInBytes(), data->triangles.ptr, false); sub->indexData->indexBuffer = ibuf; - - - } // Set material if one was given From 28dfba55e01bd84c82ddf9abea995e4e734d9d66 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 26 Mar 2012 20:29:07 +0200 Subject: [PATCH 171/488] delete fix --- apps/openmw/mwrender/localmap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index b83a982204..44be09eef6 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -32,7 +32,7 @@ void LocalMap::deleteBuffers() for (std::map::iterator it=mBuffers.begin(); it != mBuffers.end(); ++it) { - delete it->second; + delete[] it->second; } mBuffers.clear(); } From 2362d0a02929e457c218ead29610e7990c7a0390 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Mon, 26 Mar 2012 20:40:04 +0200 Subject: [PATCH 172/488] possible EOL problem --- OFL.txt | 186 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/OFL.txt b/OFL.txt index 619d1f429f..043e85e83b 100644 --- a/OFL.txt +++ b/OFL.txt @@ -1,93 +1,93 @@ -Copyright (c) 2010, 2011 Georg Duffner (http://www.georgduffner.at) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. +Copyright (c) 2010, 2011 Georg Duffner (http://www.georgduffner.at) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. From 362e6cb9ed55d68b1142020e1b29c88b7beb870a Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Mon, 26 Mar 2012 23:21:51 +0400 Subject: [PATCH 173/488] Removed predefined SDK path. Found that it's generally not good idea to force it. Also -Wno-unused-but-set-parameter only set for gcc 4.6 or newer --- CMakeLists.txt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d5f0bffa8f..7ff2872463 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,9 +4,6 @@ if (APPLE) set(APP_BUNDLE_NAME "${CMAKE_PROJECT_NAME}.app") set(APP_BUNDLE_DIR "${OpenMW_BINARY_DIR}/${APP_BUNDLE_NAME}") - - # using 10.6 sdk - set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk") endif (APPLE) # Macros @@ -287,7 +284,13 @@ endif (APPLE) # Compiler settings if (CMAKE_COMPILER_IS_GNUCC) - add_definitions (-Wall -Wextra -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-reorder) + add_definitions (-Wall -Wextra -Wno-unused-parameter -Wno-reorder) + + execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion + OUTPUT_VARIABLE GCC_VERSION) + if ("${GCC_VERSION}" VERSION_GREATER 4.6 OR "${GCC_VERSION}" VERSION_EQUAL 4.6) + add_definitions (-Wno-unused-but-set-parameter) + endif("${GCC_VERSION}" VERSION_GREATER 4.6 OR "${GCC_VERSION}" VERSION_EQUAL 4.6) endif (CMAKE_COMPILER_IS_GNUCC) if(DPKG_PROGRAM) From bb3f3ce1db69ab935320bd9ddff0d540ccc25bc0 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 26 Mar 2012 21:52:38 +0200 Subject: [PATCH 174/488] bugfix --- apps/openmw/mwrender/occlusionquery.cpp | 39 ++++++++++++++++--------- apps/openmw/mwrender/occlusionquery.hpp | 1 + apps/openmw/mwrender/sky.cpp | 3 +- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 6718a588bc..c3285a3359 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -12,7 +12,7 @@ using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), - mQuerySingleObjectRequested(false), mResponding(true), mDelay(0) + mQuerySingleObjectRequested(false), mResponding(true), mDelay(0), mWasVisible(false), mObjectWasVisible(false) { mRendering = renderer; mSunNode = sunNode; @@ -93,7 +93,7 @@ OcclusionQuery::~OcclusionQuery() bool OcclusionQuery::supported() { - if (!mResponding) std::cout << "Occlusion query timed out" << std::endl; + //if (!mResponding) std::cout << "Occlusion query timed out" << std::endl; return mSupported && mResponding; } @@ -129,6 +129,7 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass mQuerySingleObjectStarted = true; mQuerySingleObjectRequested = false; mActiveQuery = mSingleObjectQuery; + mObjectWasVisible = true; } if (mActiveQuery != NULL) @@ -136,18 +137,29 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass } void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocation, bool& repeatThisInvocation) -{ - if (queueGroupId == RENDER_QUEUE_SKIES_LATE && mWasVisible == false && mDoQuery) +{ + /** + * for every beginOcclusionQuery(), we want a respective pullOcclusionQuery() and vice versa + * this also means that results can be wrong at other places if we pull, but beginOcclusionQuery() was never called + * this can happen for example if the object that is tested is outside of the view frustum + * to prevent this, check if the queries have been performed after everything has been rendered and if not, start them manually + */ + if (queueGroupId == RENDER_QUEUE_SKIES_LATE) { - // for some reason our single object query returns wrong results when the sun query was never executed - // (which can happen when we are in interiors, or when the sun is outside of the view frustum and gets culled) - // so we force it here once everything has been rendered - - mSunTotalAreaQuery->beginOcclusionQuery(); - mSunTotalAreaQuery->endOcclusionQuery(); - mSunVisibleAreaQuery->beginOcclusionQuery(); - mSunVisibleAreaQuery->endOcclusionQuery(); - + if (mWasVisible == false && mDoQuery) + { + mSunTotalAreaQuery->beginOcclusionQuery(); + mSunTotalAreaQuery->endOcclusionQuery(); + mSunVisibleAreaQuery->beginOcclusionQuery(); + mSunVisibleAreaQuery->endOcclusionQuery(); + } + if (mObjectWasVisible == false && mQuerySingleObjectRequested) + { + mSingleObjectQuery->beginOcclusionQuery(); + mSingleObjectQuery->endOcclusionQuery(); + mQuerySingleObjectStarted = true; + mQuerySingleObjectRequested = false; + } } } @@ -159,6 +171,7 @@ void OcclusionQuery::update(float duration) if (mDelay >= 2) mResponding = false; mWasVisible = false; + mObjectWasVisible = false; // Adjust the position of the sun billboards according to camera viewing distance // we need to do this to make sure that _everything_ can occlude the sun diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index 004190cd90..a9fa0b5e4a 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -78,6 +78,7 @@ namespace MWRender std::vector mObjectsInfo; bool mWasVisible; + bool mObjectWasVisible; bool mResponding; diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index a70913b239..954b462095 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -294,7 +294,8 @@ void SkyManager::ModVertexAlpha(Entity* ent, unsigned int meshType) } SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera, MWWorld::Environment* env) : - mGlare(0), mGlareFade(0) + mGlare(0), mGlareFade(0), mCloudBlendFactor(0), + mCloudOpacity(0), mCloudColour(1,1,1), mSkyColour(1,1,1), mCloudSpeed(0), mStarsOpacity(0) { mEnvironment = env; mViewport = pCamera->getViewport(); From f8afc22f04f1224ccd17edf1552adac2555a0e7f Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Mon, 26 Mar 2012 23:16:59 +0200 Subject: [PATCH 175/488] Issue #225: Corrected wrong delete operator introduced by one of previous commit. --- components/nifogre/ogre_nif_loader.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 1367c138a4..f943231d0d 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -510,7 +510,7 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std datamod[index+2] = original.z; } vbuf->writeData(0, vbuf->getSizeInBytes(), datamod, false); - delete datamod; + delete [] datamod; } else { @@ -551,7 +551,7 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std datamod[index+2] = original.z; } vbuf->writeData(0, vbuf->getSizeInBytes(), datamod, false); - delete datamod; + delete [] datamod; } else { @@ -603,7 +603,7 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std datamod[i + 1] =y; } vbuf->writeData(0, vbuf->getSizeInBytes(), datamod, false); - delete datamod; + delete [] datamod; } else vbuf->writeData(0, vbuf->getSizeInBytes(), data->uvlist.ptr, false); @@ -648,7 +648,7 @@ void NIFLoader::createOgreSubMesh(NiTriShape *shape, const String &material, std } ibuf->writeData(0, ibuf->getSizeInBytes(), datamod, false); - delete datamod; + delete [] datamod; } else From bf421d2873344faa845507c47bde786b7dfb9814 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 27 Mar 2012 00:18:09 +0200 Subject: [PATCH 176/488] use vector instead of array --- apps/openmw/mwrender/localmap.cpp | 25 +++++++++---------------- apps/openmw/mwrender/localmap.hpp | 2 +- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 44be09eef6..ed218dc97d 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -29,11 +29,6 @@ LocalMap::~LocalMap() void LocalMap::deleteBuffers() { - for (std::map::iterator it=mBuffers.begin(); - it != mBuffers.end(); ++it) - { - delete[] it->second; - } mBuffers.clear(); } @@ -202,16 +197,16 @@ void LocalMap::render(const float x, const float y, TU_DYNAMIC_WRITE_ONLY_DISCARDABLE); // create a buffer to use for dynamic operations - uint32* buffer = new uint32[sFogOfWarResolution*sFogOfWarResolution]; + std::vector buffer; + buffer.resize(sFogOfWarResolution*sFogOfWarResolution); // initialize to (0, 0, 0, 1) - uint32* pointer = buffer; for (int p=0; pgetBuffer()->lock(HardwareBuffer::HBL_DISCARD), buffer, sFogOfWarResolution*sFogOfWarResolution*4); + memcpy(tex2->getBuffer()->lock(HardwareBuffer::HBL_DISCARD), &buffer[0], sFogOfWarResolution*sFogOfWarResolution*4); tex2->getBuffer()->unlock(); mBuffers[texture] = buffer; @@ -288,25 +283,23 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& { // get its buffer if (mBuffers.find(texName) == mBuffers.end()) return; - uint32* buffer = mBuffers[texName]; - uint32* pointer = buffer; + int i=0; for (int texV = 0; texV> 24); alpha = std::min( alpha, (uint8) (std::max(0.f, std::min(1.f, (sqrDist/sqrExploreRadius)))*255) ); - *((uint32*)pointer) = (alpha << 24); + mBuffers[texName][i] = (uint32) (alpha << 24); - // move to next texel - ++pointer; + ++i; } } // copy to the texture - memcpy(tex->getBuffer()->lock(HardwareBuffer::HBL_DISCARD), buffer, sFogOfWarResolution*sFogOfWarResolution*4); + memcpy(tex->getBuffer()->lock(HardwareBuffer::HBL_DISCARD), &mBuffers[texName][0], sFogOfWarResolution*sFogOfWarResolution*4); tex->getBuffer()->unlock(); } } diff --git a/apps/openmw/mwrender/localmap.hpp b/apps/openmw/mwrender/localmap.hpp index 3bef475ea9..efbccf8848 100644 --- a/apps/openmw/mwrender/localmap.hpp +++ b/apps/openmw/mwrender/localmap.hpp @@ -86,7 +86,7 @@ namespace MWRender // a buffer for the "fog of war" texture of the current cell. // interior cells could be divided into multiple textures, // so we store in a map. - std::map mBuffers; + std::map > mBuffers; void deleteBuffers(); From 6d6ed909bf62a328c927fbbdb52b6a98ef677e28 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Tue, 27 Mar 2012 00:31:15 +0200 Subject: [PATCH 177/488] Issue #225: Deallocate memory used by actors animations. --- apps/openmw/mwrender/actors.cpp | 10 ++++++++++ apps/openmw/mwrender/actors.hpp | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/actors.cpp b/apps/openmw/mwrender/actors.cpp index d8ca78e3a5..6eb4a182bd 100644 --- a/apps/openmw/mwrender/actors.cpp +++ b/apps/openmw/mwrender/actors.cpp @@ -8,6 +8,15 @@ using namespace Ogre; using namespace MWRender; using namespace NifOgre; +Actors::~Actors(){ + + std::map::iterator it = mAllActors.begin(); + for (; it != mAllActors.end(); ++it) { + delete it->second; + it->second = NULL; + } +} + void Actors::setMwRoot(Ogre::SceneNode* root){ mMwRoot = root; } @@ -61,6 +70,7 @@ void Actors::insertCreature (const MWWorld::Ptr& ptr){ insertBegin(ptr, true, true); CreatureAnimation* anim = new MWRender::CreatureAnimation(ptr, mEnvironment, mRend); //mAllActors.insert(std::pair(ptr,anim)); + delete mAllActors[ptr]; mAllActors[ptr] = anim; //mAllActors.push_back(&anim);*/ } diff --git a/apps/openmw/mwrender/actors.hpp b/apps/openmw/mwrender/actors.hpp index 7179c08fb4..d49c6e0f8d 100644 --- a/apps/openmw/mwrender/actors.hpp +++ b/apps/openmw/mwrender/actors.hpp @@ -30,7 +30,7 @@ namespace MWRender{ public: Actors(OEngine::Render::OgreRenderer& _rend, MWWorld::Environment& _env): mRend(_rend), mEnvironment(_env){} - ~Actors(){} + ~Actors(); void setMwRoot(Ogre::SceneNode* root); void insertBegin (const MWWorld::Ptr& ptr, bool enabled, bool static_); void insertCreature (const MWWorld::Ptr& ptr); From be94da15272937a8719a849a51162c2fd276374d Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Tue, 27 Mar 2012 00:34:06 +0200 Subject: [PATCH 178/488] Issue #225: Initialize class members in constructor. --- apps/openmw/mwrender/sky.cpp | 38 +++++++++++++++++++++++--- apps/openmw/mwsound/mpgsnd_decoder.cpp | 8 +++++- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 5e85780022..a41bc21e0f 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -254,7 +254,7 @@ void SkyManager::ModVertexAlpha(Entity* ent, unsigned int meshType) // Get a pointer to the vertex colour ves_diffuse->baseVertexPointerToElement( pData, ¤tVertex ); - unsigned char alpha; + unsigned char alpha=0; if (meshType == 0) alpha = i%2 ? 0 : 255; // this is a cylinder, so every second vertex belongs to the bottom-most row else if (meshType == 1) { @@ -292,10 +292,40 @@ void SkyManager::ModVertexAlpha(Entity* ent, unsigned int meshType) ent->getMesh()->getSubMesh(0)->vertexData->vertexBufferBinding->getBuffer(ves_diffuse->getSource())->unlock(); } -SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera, MWWorld::Environment* env) : - mGlareFade(0), mGlareEnabled(false) +SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera, MWWorld::Environment* env) + : mEnvironment(env) + , mHour(0.0f) + , mDay(0) + , mMonth(0) + , mSun(NULL) + , mSunGlare(NULL) + , mMasser(NULL) + , mSecunda(NULL) + , mViewport(NULL) + , mRootNode(NULL) + , mSceneMgr(NULL) + , mAtmosphereDay(NULL) + , mAtmosphereNight(NULL) + , mCloudMaterial() + , mAtmosphereMaterial() + , mCloudFragmentShader() + , mClouds() + , mNextClouds() + , mCloudBlendFactor(0.0f) + , mCloudOpacity(0.0f) + , mCloudSpeed(0.0f) + , mStarsOpacity(0.0f) + , mThunderOverlay(NULL) + , mThunderTextureUnit(NULL) + , mRemainingTransitionTime(0.0f) + , mGlareFade(0.0f) + , mEnabled(true) + , mGlareEnabled(true) + , mSunEnabled(true) + , mMasserEnabled(true) + , mSecundaEnabled(true) { - mEnvironment = env; + mViewport = pCamera->getViewport(); mSceneMgr = pMwRoot->getCreator(); mRootNode = pCamera->getParentSceneNode()->createChildSceneNode(); diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp index f576833a82..9b91b4e74e 100644 --- a/apps/openmw/mwsound/mpgsnd_decoder.cpp +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -213,7 +213,13 @@ void MpgSnd_Decoder::rewind() } } -MpgSnd_Decoder::MpgSnd_Decoder() : mSndFile(NULL), mMpgFile(NULL) +MpgSnd_Decoder::MpgSnd_Decoder() + : mSndInfo() + , mSndFile(NULL) + , mMpgFile(NULL) + , mDataStream() + , mChanConfig(ChannelConfig_Stereo) + , mSampleRate(0) { static bool initdone = false; if(!initdone) From 55f1053b4fd9e813caa8838586fec895c6f42da6 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Tue, 27 Mar 2012 00:36:53 +0200 Subject: [PATCH 179/488] Windows fixes for compiling and linking --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwgui/messagebox.hpp | 1 + apps/openmw/mwgui/widgets.hpp | 3 +++ apps/openmw/mwsound/openal_output.cpp | 4 +++- apps/openmw/mwsound/soundmanager.hpp | 2 +- cmake/FindFFMPEG.cmake | 17 ++++++++++++++++- cmake/FindMyGUI.cmake | 2 +- 7 files changed, 26 insertions(+), 5 deletions(-) diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 2e9191e810..6dc9382d03 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -89,7 +89,7 @@ target_link_libraries(openmw ${SOUND_INPUT_LIBRARY} ${BULLET_LIBRARIES} ${MYGUI_LIBRARIES} - MyGUI.OgrePlatform #TODO MyGUI ogre platform is not added by the find script + ${MYGUI_PLATFORM_LIBRARIES} components ) diff --git a/apps/openmw/mwgui/messagebox.hpp b/apps/openmw/mwgui/messagebox.hpp index bf3307accf..33155b2a00 100644 --- a/apps/openmw/mwgui/messagebox.hpp +++ b/apps/openmw/mwgui/messagebox.hpp @@ -7,6 +7,7 @@ #include "window_base.hpp" #include "window_manager.hpp" +#undef MessageBox namespace MWGui { diff --git a/apps/openmw/mwgui/widgets.hpp b/apps/openmw/mwgui/widgets.hpp index 4d31ad5219..a7916285eb 100644 --- a/apps/openmw/mwgui/widgets.hpp +++ b/apps/openmw/mwgui/widgets.hpp @@ -7,6 +7,9 @@ #include "../mwmechanics/stat.hpp" +#undef MYGUI_EXPORT +#define MYGUI_EXPORT + /* This file contains various custom widgets used in OpenMW. */ diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index c069474034..edd923f433 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -65,7 +65,7 @@ static ALenum getALFormat(ChannelConfig chans, SampleType type) class OpenAL_SoundStream : public Sound { static const ALuint sNumBuffers = 6; - static const ALfloat sBufferLength = 0.125f; + static const ALfloat sBufferLength; OpenAL_Output &mOutput; @@ -95,6 +95,8 @@ public: bool process(); }; +const ALfloat OpenAL_SoundStream::sBufferLength = 0.125f; + // // A background streaming thread (keeps active streams processed) // diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index b7c883a130..a076c1cc01 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -24,7 +24,7 @@ namespace MWWorld namespace MWSound { class Sound_Output; - class Sound_Decoder; + struct Sound_Decoder; class Sound; typedef boost::shared_ptr DecoderPtr; diff --git a/cmake/FindFFMPEG.cmake b/cmake/FindFFMPEG.cmake index ff6d0c598d..2e755d047d 100644 --- a/cmake/FindFFMPEG.cmake +++ b/cmake/FindFFMPEG.cmake @@ -9,9 +9,23 @@ SET( FFMPEG_FOUND "NO" ) +FIND_PATH( FFMPEG_general_INCLUDE_DIR libavcodec/avcodec.h libavformat/avformat.h + HINTS + PATHS + /usr/include + /usr/local/include + /usr/include/ffmpeg + /usr/local/include/ffmpeg + /usr/include/ffmpeg/libavcodec + /usr/local/include/ffmpeg/libavcodec + /usr/include/libavcodec + /usr/local/include/libavcodec + ) + FIND_PATH( FFMPEG_avcodec_INCLUDE_DIR avcodec.h HINTS PATHS + ${FFMPEG_general_INCLUDE_DIR}/libavcodec /usr/include /usr/local/include /usr/include/ffmpeg @@ -25,6 +39,7 @@ FIND_PATH( FFMPEG_avcodec_INCLUDE_DIR avcodec.h FIND_PATH( FFMPEG_avformat_INCLUDE_DIR avformat.h HINTS PATHS + ${FFMPEG_general_INCLUDE_DIR}/libavformat /usr/include /usr/local/include /usr/include/ffmpeg @@ -35,7 +50,7 @@ FIND_PATH( FFMPEG_avformat_INCLUDE_DIR avformat.h /usr/local/include/libavformat ) -set(FFMPEG_INCLUDE_DIR ${FFMPEG_avcodec_INCLUDE_DIR} ${FFMPEG_avformat_INCLUDE_DIR}) +set(FFMPEG_INCLUDE_DIR ${FFMPEG_general_INCLUDE_DIR} ${FFMPEG_avcodec_INCLUDE_DIR} ${FFMPEG_avformat_INCLUDE_DIR}) IF( FFMPEG_INCLUDE_DIR ) diff --git a/cmake/FindMyGUI.cmake b/cmake/FindMyGUI.cmake index 339f494ddb..fa0b25383c 100644 --- a/cmake/FindMyGUI.cmake +++ b/cmake/FindMyGUI.cmake @@ -103,7 +103,7 @@ SEPARATE_ARGUMENTS(MYGUI_PLATFORM_LIBRARIES) SET(MYGUI_INCLUDE_DIRS ${MYGUI_INCLUDE_DIRS} CACHE PATH "") SET(MYGUI_LIBRARIES ${MYGUI_LIBRARIES} CACHE STRING "") -SET(MYGUI_LIBRARIES ${MYGUI_PLATFORM_LIBRARIES} CACHE STRING "") +SET(MYGUI_PLATFORM_LIBRARIES ${MYGUI_PLATFORM_LIBRARIES} CACHE STRING "") SET(MYGUI_LIB_DIR ${MYGUI_LIB_DIR} CACHE PATH "") IF (MYGUI_INCLUDE_DIRS AND MYGUI_LIBRARIES) From bb09c2189ad2719f42572ad447a8456fb9aac044 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 27 Mar 2012 00:45:25 +0200 Subject: [PATCH 180/488] lower rendering distance for small objects (reduce batch count) --- apps/openmw/mwrender/objects.cpp | 70 ++++++++++++++++++++++++-------- apps/openmw/mwrender/objects.hpp | 1 + 2 files changed, 55 insertions(+), 16 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index e4e7212275..1c2873b4e7 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -88,35 +88,61 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) NifOgre::NIFLoader::load(mesh); Ogre::Entity *ent = mRenderer.getScene()->createEntity(mesh); + Ogre::Vector3 extents = ent->getBoundingBox().getSize(); + extents *= insert->getScale(); + float size = std::max(std::max(extents.x, extents.y), extents.z); + + bool small = (size < 250); /// \todo config value + + // do not fade out doors. that will cause holes and look stupid + if (ptr.getTypeName().find("Door") != std::string::npos) + small = false; + if(!mIsStatic) { insert->attachObject(ent); + + ent->setRenderingDistance(small ? 2500 : 0); /// \todo config value } else { Ogre::StaticGeometry* sg = 0; - if(mStaticGeometry.find(ptr.getCell()) == mStaticGeometry.end()) + + if (small) { - uniqueID = uniqueID +1; - sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); - //Create the scenenode and put it in the map - mStaticGeometry[ptr.getCell()] = sg; + if( mStaticGeometrySmall.find(ptr.getCell()) == mStaticGeometrySmall.end()) + { + uniqueID = uniqueID +1; + sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); + mStaticGeometrySmall[ptr.getCell()] = sg; - // This specifies the size of a single batch region. - // If it is set too high: - // - there will be problems choosing the correct lights - // - the culling will be more inefficient - // If it is set too low: - // - there will be too many batches. - sg->setRegionDimensions(Ogre::Vector3(2500,2500,2500)); - - mBounds[ptr.getCell()] = Ogre::AxisAlignedBox::BOX_NULL; - mBounds[ptr.getCell()].merge(ent->getBoundingBox()); + sg->setRenderingDistance(2500); /// \todo config value + } + else + sg = mStaticGeometrySmall[ptr.getCell()]; } else { - sg = mStaticGeometry[ptr.getCell()]; + if( mStaticGeometry.find(ptr.getCell()) == mStaticGeometry.end()) + { + + uniqueID = uniqueID +1; + sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); + mStaticGeometry[ptr.getCell()] = sg; + } + else + sg = mStaticGeometry[ptr.getCell()]; } + + // This specifies the size of a single batch region. + // If it is set too high: + // - there will be problems choosing the correct lights + // - the culling will be more inefficient + // If it is set too low: + // - there will be too many batches. + sg->setRegionDimensions(Ogre::Vector3(2500,2500,2500)); + + mBounds[ptr.getCell()].merge(ent->getBoundingBox()); sg->addEntity(ent,insert->_getDerivedPosition(),insert->_getDerivedOrientation(),insert->_getDerivedScale()); mBounds[ptr.getCell()].merge(insert->_getDerivedPosition()); @@ -206,6 +232,13 @@ void Objects::removeCell(MWWorld::Ptr::CellStore* store) mRenderer.getScene()->destroyStaticGeometry (sg); sg = 0; } + if(mStaticGeometrySmall.find(store) != mStaticGeometrySmall.end()) + { + Ogre::StaticGeometry* sg = mStaticGeometrySmall[store]; + mStaticGeometrySmall.erase(store); + mRenderer.getScene()->destroyStaticGeometry (sg); + sg = 0; + } if(mBounds.find(store) != mBounds.end()) mBounds.erase(store); @@ -218,6 +251,11 @@ void Objects::buildStaticGeometry(ESMS::CellStore& cell) Ogre::StaticGeometry* sg = mStaticGeometry[&cell]; sg->build(); } + if(mStaticGeometrySmall.find(&cell) != mStaticGeometrySmall.end()) + { + Ogre::StaticGeometry* sg = mStaticGeometrySmall[&cell]; + sg->build(); + } } Ogre::AxisAlignedBox Objects::getDimensions(MWWorld::Ptr::CellStore* cell) diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index 1ca81331d1..265de875be 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -14,6 +14,7 @@ class Objects{ OEngine::Render::OgreRenderer &mRenderer; std::map mCellSceneNodes; std::map mStaticGeometry; + std::map mStaticGeometrySmall; std::map mBounds; Ogre::SceneNode* mMwRoot; bool mIsStatic; From b76b62e5e4cbf2db27bd443362e10690305d7330 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Tue, 27 Mar 2012 09:20:22 +0100 Subject: [PATCH 181/488] Fixed a crash when there were cells with no data, refactored to remove non mutable data from CellStore --- apps/openmw/mwrender/renderingmanager.cpp | 3 +- apps/openmw/mwrender/terrain.cpp | 150 ++++++++++++++-------- apps/openmw/mwrender/terrain.hpp | 25 ++-- components/esm/loadland.cpp | 22 ++-- components/esm/loadland.hpp | 3 +- components/esm_store/cell_store.hpp | 36 ------ components/esm_store/reclists.hpp | 34 ++--- 7 files changed, 144 insertions(+), 129 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 386b368424..ddf7fe3b0a 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -23,7 +23,8 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const :mRendering(_rend), mObjects(mRendering), mActors(mRendering, environment), mAmbientMode(0), mDebugging(engine) { mRendering.createScene("PlayerCam", 55, 5); - mTerrainManager = new TerrainManager(mRendering.getScene()); + mTerrainManager = new TerrainManager(mRendering.getScene(), + environment); //The fog type must be set before any terrain objects are created as if the //fog type is set to FOG_NONE then the initially created terrain won't have any fog diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 64acd9fe38..1c7db2d8b1 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -1,12 +1,12 @@ #include #include +#include + +#include "../mwworld/world.hpp" #include "terrainmaterial.hpp" #include "terrain.hpp" -#include "components/esm/loadland.hpp" - -#include using namespace Ogre; @@ -15,7 +15,8 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - TerrainManager::TerrainManager(SceneManager* mgr) + TerrainManager::TerrainManager(Ogre::SceneManager* mgr, const MWWorld::Environment& evn) : + mEnvironment(evn) { mTerrainGlobals = OGRE_NEW TerrainGlobalOptions(); @@ -102,6 +103,12 @@ namespace MWRender const int cellX = store->cell->getGridX(); const int cellY = store->cell->getGridY(); + ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); + if ( land != NULL ) + { + land->loadData(); + } + //split the cell terrain into four segments const int numTextures = ESM::Land::LAND_TEXTURE_SIZE/2; @@ -122,22 +129,29 @@ namespace MWRender mLandSize*mLandSize, MEMCATEGORY_GEOMETRY); - //copy the height data row by row - for ( int terrainCopyY = 0; terrainCopyY < mLandSize; terrainCopyY++ ) + if ( land != NULL ) { - //the offset of the current segment - const size_t yOffset = y * (mLandSize-1) * ESM::Land::LAND_SIZE + - //offset of the row - terrainCopyY * ESM::Land::LAND_SIZE; - const size_t xOffset = x * (mLandSize-1); + //copy the height data row by row + for ( int terrainCopyY = 0; terrainCopyY < mLandSize; terrainCopyY++ ) + { + //the offset of the current segment + const size_t yOffset = y * (mLandSize-1) * ESM::Land::LAND_SIZE + + //offset of the row + terrainCopyY * ESM::Land::LAND_SIZE; + const size_t xOffset = x * (mLandSize-1); - memcpy(&terrainData.inputFloat[terrainCopyY*mLandSize], - &store->land[1][1]->landData->heights[yOffset + xOffset], - mLandSize*sizeof(float)); + memcpy(&terrainData.inputFloat[terrainCopyY*mLandSize], + &land->landData->heights[yOffset + xOffset], + mLandSize*sizeof(float)); + } + } + else + { + memset(terrainData.inputFloat, 0, mLandSize*mLandSize*sizeof(float)); } std::map indexes; - initTerrainTextures(&terrainData, store, + initTerrainTextures(&terrainData, cellX, cellY, x * numTextures, y * numTextures, numTextures, indexes); @@ -148,16 +162,18 @@ namespace MWRender mTerrainGroup->loadTerrain(terrainX, terrainY, true); Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); - initTerrainBlendMaps(terrain, store, + initTerrainBlendMaps(terrain, + cellX, cellY, x * numTextures, y * numTextures, numTextures, indexes); - if ( store->land[1][1]->landData->usingColours ) + if ( land->landData->usingColours ) { // disable or enable global colour map (depends on available vertex colours) mActiveProfile->setGlobalColourMapEnabled(true); - TexturePtr vertex = getVertexColours(store, + TexturePtr vertex = getVertexColours(land, + cellX, cellY, x*(mLandSize-1), y*(mLandSize-1), mLandSize); @@ -197,11 +213,10 @@ namespace MWRender //---------------------------------------------------------------------------------------------- void TerrainManager::initTerrainTextures(Terrain::ImportData* terrainData, - MWWorld::Ptr::CellStore* store, + int cellX, int cellY, int fromX, int fromY, int size, std::map& indexes) { - assert(store != NULL && "store must be a valid pointer"); assert(terrainData != NULL && "Must have valid terrain data"); assert(fromX >= 0 && fromY >= 0 && "Can't get a terrain texture on terrain outside the current cell"); @@ -219,7 +234,7 @@ namespace MWRender { for ( int x = fromX - 1; x < fromX + size + 1; x++ ) { - ltexIndexes.insert(getLtexIndexAt(store, x, y)); + ltexIndexes.insert(getLtexIndexAt(cellX, cellY, x, y)); } } @@ -244,7 +259,7 @@ namespace MWRender { //NB: All vtex ids are +1 compared to the ltex ids - assert( (int)store->landTextures->ltex.size() >= (int)ltexIndex - 1 && + assert( (int)mEnvironment.mWorld->getStore().landTexts.getSize() >= (int)ltexIndex - 1 && "LAND.VTEX must be within the bounds of the LTEX array"); std::string texture; @@ -254,7 +269,7 @@ namespace MWRender } else { - texture = store->landTextures->ltex[ltexIndex-1].texture; + texture = mEnvironment.mWorld->getStore().landTexts.search(ltexIndex-1)->texture; //TODO this is needed due to MWs messed up texture handling texture = texture.substr(0, texture.rfind(".")) + ".dds"; } @@ -280,11 +295,10 @@ namespace MWRender //---------------------------------------------------------------------------------------------- void TerrainManager::initTerrainBlendMaps(Terrain* terrain, - MWWorld::Ptr::CellStore* store, + int cellX, int cellY, int fromX, int fromY, int size, const std::map& indexes) { - assert(store != NULL && "store must be a valid pointer"); assert(terrain != NULL && "Must have valid terrain"); assert(fromX >= 0 && fromY >= 0 && "Can't get a terrain texture on terrain outside the current cell"); @@ -313,7 +327,7 @@ namespace MWRender { for ( int texX = fromX - 1; texX < fromX + size + 1; texX++ ) { - const uint16_t ltexIndex = getLtexIndexAt(store, texX, texY); + const uint16_t ltexIndex = getLtexIndexAt(cellX, cellY, texX, texY); //check if it is the base texture (which isn't in the map) and //if it is don't bother altering the blend map for it @@ -332,8 +346,10 @@ namespace MWRender float* const pBlend = terrain->getLayerBlendMap(layerIndex) ->getBlendPointer(); - for ( int y = -1; y < splatSize + 1; y++ ){ - for ( int x = -1; x < splatSize + 1; x++ ){ + for ( int y = -1; y < splatSize + 1; y++ ) + { + for ( int x = -1; x < splatSize + 1; x++ ) + { //Note: Y is reversed const int splatY = blendMapSize - 1 - relY * splatSize - y; @@ -373,7 +389,7 @@ namespace MWRender //---------------------------------------------------------------------------------------------- - int TerrainManager::getLtexIndexAt(MWWorld::Ptr::CellStore* store, + int TerrainManager::getLtexIndexAt(int cellX, int cellY, int x, int y) { //check texture index falls within the 9 cell bounds @@ -386,12 +402,6 @@ namespace MWRender y < 2*ESM::Land::LAND_TEXTURE_SIZE && "Trying to get land textures that are out of bounds"); - assert(store != NULL && "Store pointer must be valid"); - - //default center cell is indexed at (1,1) - int cellX = 1; - int cellY = 1; - if ( x < 0 ) { cellX--; @@ -414,22 +424,32 @@ namespace MWRender y -= ESM::Land::LAND_TEXTURE_SIZE; } - return store->land[cellX][cellY] - ->landData - ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; + + ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); + if ( land != NULL ) + { + land->loadData(); + return land->landData + ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; + } + else + { + return 0; + } } //---------------------------------------------------------------------------------------------- - TexturePtr TerrainManager::getVertexColours(MWWorld::Ptr::CellStore* store, - int fromX, int fromY, int size) + TexturePtr TerrainManager::getVertexColours(ESM::Land* land, + int cellX, int cellY, + int fromX, int fromY, int size) { TextureManager* const texMgr = TextureManager::getSingletonPtr(); const std::string colourTextureName = "VtexColours_" + - boost::lexical_cast(store->cell->getGridX()) + + boost::lexical_cast(cellX) + "_" + - boost::lexical_cast(store->cell->getGridY()) + + boost::lexical_cast(cellY) + "_" + boost::lexical_cast(fromX) + "_" + @@ -451,26 +471,42 @@ namespace MWRender const PixelBox& pixelBox = pixelBuffer->getCurrentLock(); uint8* pDest = static_cast(pixelBox.data); - - const char* const colours = store->land[1][1]->landData->colours; - for ( int y = 0; y < size; y++ ) + + if ( land != NULL ) { - for ( int x = 0; x < size; x++ ) + const char* const colours = land->landData->colours; + for ( int y = 0; y < size; y++ ) { - const size_t colourOffset = (y+fromY)*3*65 + (x+fromX)*3; + for ( int x = 0; x < size; x++ ) + { + const size_t colourOffset = (y+fromY)*3*65 + (x+fromX)*3; - assert( colourOffset >= 0 && colourOffset < 65*65*3 && - "Colour offset is out of the expected bounds of record" ); + assert( colourOffset < 65*65*3 && + "Colour offset is out of the expected bounds of record" ); - const unsigned char r = colours[colourOffset + 0]; - const unsigned char g = colours[colourOffset + 1]; - const unsigned char b = colours[colourOffset + 2]; + const unsigned char r = colours[colourOffset + 0]; + const unsigned char g = colours[colourOffset + 1]; + const unsigned char b = colours[colourOffset + 2]; - //as is the case elsewhere we need to flip the y - const size_t imageOffset = (size - 1 - y)*size*4 + x*4; - pDest[imageOffset + 0] = b; - pDest[imageOffset + 1] = g; - pDest[imageOffset + 2] = r; + //as is the case elsewhere we need to flip the y + const size_t imageOffset = (size - 1 - y)*size*4 + x*4; + pDest[imageOffset + 0] = b; + pDest[imageOffset + 1] = g; + pDest[imageOffset + 2] = r; + } + } + } + else + { + for ( int y = 0; y < size; y++ ) + { + for ( int x = 0; x < size; x++ ) + { + for ( int k = 0; k < 3; k++ ) + { + *pDest++ = 0; + } + } } } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 397c0c473f..16c93d6f49 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -23,7 +23,7 @@ namespace MWRender{ */ class TerrainManager{ public: - TerrainManager(Ogre::SceneManager*); + TerrainManager(Ogre::SceneManager* mgr, const MWWorld::Environment& env); virtual ~TerrainManager(); void setDiffuse(const Ogre::ColourValue& diffuse); @@ -35,6 +35,8 @@ namespace MWRender{ Ogre::TerrainGlobalOptions* mTerrainGlobals; Ogre::TerrainGroup* mTerrainGroup; + const MWWorld::Environment& mEnvironment; + Ogre::TerrainMaterialGeneratorB::SM2Profile* mActiveProfile; /** @@ -53,7 +55,8 @@ namespace MWRender{ * layer * * @param terrainData the terrain data to setup the textures for - * @param store the cell store for the given terrain cell + * @param cellX the coord of the cell + * @param cellY the coord of the cell * @param fromX the ltex index in the current cell to start making the texture from * @param fromY the ltex index in the current cell to start making the texture from * @param size the size (number of splats) to get @@ -61,7 +64,7 @@ namespace MWRender{ * can be used by initTerrainBlendMaps */ void initTerrainTextures(Ogre::Terrain::ImportData* terrainData, - MWWorld::Ptr::CellStore* store, + int cellX, int cellY, int fromX, int fromY, int size, std::map& indexes); @@ -69,14 +72,15 @@ namespace MWRender{ * Creates the blend (splatting maps) for the given terrain from the ltex data. * * @param terrain the terrain object for the current cell - * @param store the cell store for the given terrain cell + * @param cellX the coord of the cell + * @param cellY the coord of the cell * @param fromX the ltex index in the current cell to start making the texture from * @param fromY the ltex index in the current cell to start making the texture from * @param size the size (number of splats) to get * @param indexes the mapping of ltex to blend map produced by initTerrainTextures */ void initTerrainBlendMaps(Ogre::Terrain* terrain, - MWWorld::Ptr::CellStore* store, + int cellX, int cellY, int fromX, int fromY, int size, const std::map& indexes); @@ -85,22 +89,25 @@ namespace MWRender{ * starts at (0,0). This supports getting values from the surrounding * cells so negative x, y is acceptable * - * @param store the cell store for the current cell + * @param cellX the coord of the cell + * @param cellY the coord of the cell * @param x, y the splat position of the ltex index to get relative to the * first splat of the current cell */ - int getLtexIndexAt(MWWorld::Ptr::CellStore* store, int x, int y); + int getLtexIndexAt(int cellX, int cellY, int x, int y); /** * Due to the fact that Ogre terrain doesn't support vertex colours * we have to generate them manually * - * @param store the cell store for the given terrain cell + * @param cellX the coord of the cell + * @param cellY the coord of the cell * @param fromX the *vertex* index in the current cell to start making texture from * @param fromY the *vertex* index in the current cell to start making the texture from * @param size the size (number of vertexes) to get */ - Ogre::TexturePtr getVertexColours(MWWorld::Ptr::CellStore* store, + Ogre::TexturePtr getVertexColours(ESM::Land* land, + int cellX, int cellY, int fromX, int fromY, int size); }; diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index 4fe6279d32..cd2cf1d917 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -4,6 +4,8 @@ namespace ESM { void Land::load(ESMReader &esm) { + mEsm = &esm; + // Get the grid location esm.getSubNameIs("INTV"); esm.getSubHeaderIs(8); @@ -51,7 +53,7 @@ void Land::load(ESMReader &esm) landData = NULL; } -void Land::loadData(ESMReader &esm) +void Land::loadData() { if (dataLoaded) { @@ -62,17 +64,17 @@ void Land::loadData(ESMReader &esm) if (hasData) { - esm.restoreContext(context); + mEsm->restoreContext(context); //esm.getHNExact(landData->normals, sizeof(VNML), "VNML"); - if (esm.isNextSub("VNML")) + if (mEsm->isNextSub("VNML")) { - esm.skipHSubSize(12675); + mEsm->skipHSubSize(12675); } VHGT rawHeights; - esm.getHNExact(&rawHeights, sizeof(VHGT), "VHGT"); + mEsm->getHNExact(&rawHeights, sizeof(VHGT), "VHGT"); int currentHeightOffset = rawHeights.heightOffset; for (int y = 0; y < LAND_SIZE; y++) { @@ -87,20 +89,20 @@ void Land::loadData(ESMReader &esm) } } - if (esm.isNextSub("WNAM")) + if (mEsm->isNextSub("WNAM")) { - esm.skipHSubSize(81); + mEsm->skipHSubSize(81); } - if (esm.isNextSub("VCLR")) + if (mEsm->isNextSub("VCLR")) { landData->usingColours = true; - esm.getHExact(&landData->colours, 3*LAND_NUM_VERTS); + mEsm->getHExact(&landData->colours, 3*LAND_NUM_VERTS); }else{ landData->usingColours = false; } //TODO fix magic numbers uint16_t vtex[512]; - esm.getHNExact(&vtex, 512, "VTEX"); + mEsm->getHNExact(&vtex, 512, "VTEX"); int readPos = 0; //bit ugly, but it works for ( int y1 = 0; y1 < 4; y1++ ) diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index eeb198e905..5ccd966d92 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -17,6 +17,7 @@ struct Land // File context. This allows the ESM reader to be 'reset' to this // location later when we are ready to load the full data set. + ESMReader* mEsm; ESM_Context context; bool hasData; @@ -70,7 +71,7 @@ struct Land /** * Actually loads data */ - void loadData(ESMReader &esm); + void loadData(); /** * Frees memory allocated for land data diff --git a/components/esm_store/cell_store.hpp b/components/esm_store/cell_store.hpp index b733a7ee86..c0a84c577d 100644 --- a/components/esm_store/cell_store.hpp +++ b/components/esm_store/cell_store.hpp @@ -124,9 +124,6 @@ namespace ESMS CellRefList statics; CellRefList weapons; - const Land* land[3][3]; - const LTexList* landTextures; - void load (const ESMStore &store, ESMReader &esm) { if (mState!=State_Loaded) @@ -138,21 +135,6 @@ namespace ESMS loadRefs (store, esm); - if ( ! (cell->data.flags & ESM::Cell::Interior) ) - { - for ( size_t x = 0; x < 3; x++ ) - { - for ( size_t y = 0; y < 3; y++ ) - { - land[x][y] = loadTerrain(cell->data.gridX + x - 1, - cell->data.gridY + y - 1, - store, - esm); - } - } - landTextures = &store.landTexts; - } - mState = State_Loaded; } } @@ -198,24 +180,6 @@ namespace ESMS private: - Land* loadTerrain(int X, int Y, const ESMStore &store, ESMReader &esm) - { - // load terrain - Land *land = store.lands.search(X, Y); - if (land != NULL) - { - land->loadData(esm); - } - - return land; - } - - void unloadTerrain(int X, int Y, const ESMStore &store) { - assert (false && - "This function is not implemented due to the fact that we now store overlapping land blocks so" && - "we cannot be sure that the land segment is not being used by another CellStore"); - } - template bool forEachImp (Functor& functor, List& list) { diff --git a/components/esm_store/reclists.hpp b/components/esm_store/reclists.hpp index cfbd23d75b..a991996be5 100644 --- a/components/esm_store/reclists.hpp +++ b/components/esm_store/reclists.hpp @@ -201,15 +201,21 @@ namespace ESMS // TODO: For multiple ESM/ESP files we need one list per file. std::vector ltex; - int count; - LTexList() : count(0) + LTexList() { // More than enough to hold Morrowind.esm. ltex.reserve(128); } - int getSize() { return count; } + const LandTexture* search(size_t index) const + { + assert(index < ltex.size()); + return <ex.at(index); + } + + int getSize() { return ltex.size(); } + int getSize() const { return ltex.size(); } virtual void listIdentifier (std::vector& identifier) const {} @@ -236,9 +242,9 @@ namespace ESMS virtual ~LandList() {} // Map containing all landscapes - typedef std::map LandsCol; - typedef std::map Lands; - Lands lands; + typedef std::pair LandCoord; + typedef std::map LandMap; + LandMap lands; int count; LandList() : count(0) {} @@ -249,15 +255,13 @@ namespace ESMS // Find land for the given coordinates. Return null if no data. Land *search(int x, int y) const { - Lands::const_iterator it = lands.find(x); - if(it==lands.end()) + LandMap::const_iterator itr = lands.find(std::make_pair(x, y)); + if ( itr == lands.end() ) + { return NULL; + } - LandsCol::const_iterator it2 = it->second.find(y); - if(it2 == it->second.end()) - return NULL; - - return it2->second; + return itr->second; } void load(ESMReader &esm, const std::string &id) @@ -266,11 +270,11 @@ namespace ESMS // Create the structure and load it. This actually skips the // landscape data and remembers the file position for later. - Land *land = new Land; + Land *land = new Land(); land->load(esm); // Store the structure - lands[land->X][land->Y] = land; + lands[std::make_pair(land->X, land->Y)] = land; } }; From c2611d035c44faa25a008f3842d5f043148b3b30 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 27 Mar 2012 02:50:45 -0700 Subject: [PATCH 182/488] Use a pair to match the MWWorld::Ptr object and sound ID, instead of nested maps --- apps/openmw/mwsound/soundmanager.cpp | 96 +++++++++++----------------- apps/openmw/mwsound/soundmanager.hpp | 8 +-- 2 files changed, 40 insertions(+), 64 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 4d47e5f2cc..f20bf736e1 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -114,14 +114,10 @@ namespace MWSound bool SoundManager::isPlaying(MWWorld::Ptr ptr, const std::string &id) const { - SoundMap::const_iterator snditer = mActiveSounds.find(ptr); + SoundMap::const_iterator snditer = mActiveSounds.find(std::make_pair(ptr, id)); if(snditer == mActiveSounds.end()) return false; - IDMap::const_iterator iditer = snditer->second.find(id); - if(iditer == snditer->second.end()) - return false; - return true; } @@ -185,7 +181,7 @@ namespace MWSound std::string filePath = std::string("Sound/")+filename; SoundPtr sound(mOutput->playSound3D(filePath, pos.pos, 1.0f, 1.0f, 100.0f, 20000.0f, false)); - mActiveSounds[ptr]["_say_sound"] = sound; + mActiveSounds[std::make_pair(ptr, std::string("_say_sound"))] = sound; } catch(std::exception &e) { @@ -205,8 +201,8 @@ namespace MWSound try { std::string file = lookup(soundId, volume, min, max); - Sound *sound = mOutput->playSound(file, volume, pitch, loop); - mActiveSounds[MWWorld::Ptr()][soundId] = SoundPtr(sound); + SoundPtr sound = SoundPtr(mOutput->playSound(file, volume, pitch, loop)); + mActiveSounds[std::make_pair(MWWorld::Ptr(), soundId)] = sound; } catch(std::exception &e) { @@ -225,7 +221,7 @@ namespace MWSound std::string file = lookup(soundId, volume, min, max); SoundPtr sound(mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop)); - mActiveSounds[untracked?MWWorld::Ptr():ptr][soundId] = sound; + mActiveSounds[std::make_pair((untracked?MWWorld::Ptr():ptr), soundId)] = sound; } catch(std::exception &e) { @@ -237,30 +233,28 @@ namespace MWSound { // Stop a sound and remove it from the list. If soundId="" then // stop all its sounds. - SoundMap::iterator snditer = mActiveSounds.find(ptr); - if(snditer == mActiveSounds.end()) - return; - if(!soundId.empty()) { - IDMap::iterator iditer = snditer->second.find(soundId); - if(iditer != snditer->second.end()) - { - iditer->second->stop(); - snditer->second.erase(iditer); - if(snditer->second.empty()) - mActiveSounds.erase(snditer); - } + SoundMap::iterator snditer = mActiveSounds.find(std::make_pair(ptr, soundId)); + if(snditer == mActiveSounds.end()) + return; + + snditer->second->stop(); + mActiveSounds.erase(snditer); } else { - IDMap::iterator iditer = snditer->second.begin(); - while(iditer != snditer->second.end()) + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) { - iditer->second->stop(); - iditer++; + if(snditer->first.first == ptr) + { + snditer->second->stop(); + mActiveSounds.erase(snditer++); + } + else + snditer++; } - mActiveSounds.erase(snditer); } } @@ -270,14 +264,10 @@ namespace MWSound SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { - if(snditer->first != MWWorld::Ptr() && snditer->first.getCell() == cell) + if(snditer->first.first != MWWorld::Ptr() && + snditer->first.first.getCell() == cell) { - IDMap::iterator iditer = snditer->second.begin(); - while(iditer != snditer->second.end()) - { - iditer->second->stop(); - iditer++; - } + snditer->second->stop(); mActiveSounds.erase(snditer++); } else @@ -287,18 +277,12 @@ namespace MWSound void SoundManager::stopSound(const std::string& soundId) { - SoundMap::iterator snditer = mActiveSounds.find(MWWorld::Ptr()); + SoundMap::iterator snditer = mActiveSounds.find(std::make_pair(MWWorld::Ptr(), soundId)); if(snditer == mActiveSounds.end()) return; - IDMap::iterator iditer = snditer->second.find(soundId); - if(iditer != snditer->second.end()) - { - iditer->second->stop(); - snditer->second.erase(iditer); - if(snditer->second.empty()) - mActiveSounds.erase(snditer); - } + snditer->second->stop(); + mActiveSounds.erase(snditer); } bool SoundManager::getSoundPlaying(MWWorld::Ptr ptr, const std::string& soundId) const @@ -308,16 +292,16 @@ namespace MWSound void SoundManager::updateObject(MWWorld::Ptr ptr) { - SoundMap::iterator snditer = mActiveSounds.find(ptr); - if(snditer == mActiveSounds.end()) - return; - - const ESM::Position &pos = ptr.getCellRef().pos; - IDMap::iterator iditer = snditer->second.begin(); - while(iditer != snditer->second.end()) + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) { - iditer->second->update(pos.pos); - iditer++; + if(snditer->first.first == ptr) + { + snditer->second->stop(); + mActiveSounds.erase(snditer++); + } + else + snditer++; } } @@ -406,15 +390,7 @@ namespace MWSound SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { - IDMap::iterator iditer = snditer->second.begin(); - while(iditer != snditer->second.end()) - { - if(!iditer->second->isPlaying()) - snditer->second.erase(iditer++); - else - iditer++; - } - if(snditer->second.empty()) + if(!snditer->second->isPlaying()) mActiveSounds.erase(snditer++); else snditer++; diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 8d76ba1008..b7b21b9459 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -2,11 +2,11 @@ #define GAME_SOUND_SOUNDMANAGER_H #include +#include +#include #include -#include - #include "../mwworld/ptr.hpp" @@ -41,8 +41,8 @@ namespace MWSound std::string mCurrentPlaylist; typedef boost::shared_ptr SoundPtr; - typedef std::map IDMap; - typedef std::map SoundMap; + typedef std::pair PtrIDPair; + typedef std::map SoundMap; SoundMap mActiveSounds; std::string lookup(const std::string &soundId, From 033faba9c41b45bd19240df280358d3f9aab6693 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 27 Mar 2012 03:00:04 -0700 Subject: [PATCH 183/488] Make a function parameter const --- apps/openmw/mwsound/soundmanager.cpp | 2 +- apps/openmw/mwsound/soundmanager.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index f20bf736e1..5450c113ae 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -258,7 +258,7 @@ namespace MWSound } } - void SoundManager::stopSound(MWWorld::Ptr::CellStore *cell) + void SoundManager::stopSound(const MWWorld::Ptr::CellStore *cell) { // Remove all references to objects belonging to a given cell SoundMap::iterator snditer = mActiveSounds.begin(); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index b7b21b9459..7f20425afb 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -99,7 +99,7 @@ namespace MWSound ///< Stop the given object from playing the given sound, If no soundId is given, /// all sounds for this reference will stop. - void stopSound(MWWorld::Ptr::CellStore *cell); + void stopSound(const MWWorld::Ptr::CellStore *cell); ///< Stop all sounds for the given cell. void stopSound(const std::string& soundId); From f0db2ab82fb928a2c955750478b0a785f2d229ea Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 27 Mar 2012 03:20:50 -0700 Subject: [PATCH 184/488] Split stopSound3D into separate functions to deal with stopping all sounds on an object --- apps/openmw/mwsound/soundmanager.cpp | 37 ++++++++++++---------------- apps/openmw/mwsound/soundmanager.hpp | 8 +++--- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 5450c113ae..449b5100b0 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -231,36 +231,31 @@ namespace MWSound void SoundManager::stopSound3D(MWWorld::Ptr ptr, const std::string& soundId) { - // Stop a sound and remove it from the list. If soundId="" then - // stop all its sounds. - if(!soundId.empty()) - { - SoundMap::iterator snditer = mActiveSounds.find(std::make_pair(ptr, soundId)); - if(snditer == mActiveSounds.end()) - return; + SoundMap::iterator snditer = mActiveSounds.find(std::make_pair(ptr, soundId)); + if(snditer == mActiveSounds.end()) + return; - snditer->second->stop(); - mActiveSounds.erase(snditer); - } - else + snditer->second->stop(); + mActiveSounds.erase(snditer); + } + + void SoundManager::stopSound3D(MWWorld::Ptr ptr) + { + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) { - SoundMap::iterator snditer = mActiveSounds.begin(); - while(snditer != mActiveSounds.end()) + if(snditer->first.first == ptr) { - if(snditer->first.first == ptr) - { - snditer->second->stop(); - mActiveSounds.erase(snditer++); - } - else - snditer++; + snditer->second->stop(); + mActiveSounds.erase(snditer++); } + else + snditer++; } } void SoundManager::stopSound(const MWWorld::Ptr::CellStore *cell) { - // Remove all references to objects belonging to a given cell SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 7f20425afb..d79aface6a 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -95,9 +95,11 @@ namespace MWSound bool untracked=false); ///< Play a sound from an object - void stopSound3D(MWWorld::Ptr reference, const std::string& soundId=""); - ///< Stop the given object from playing the given sound, If no soundId is given, - /// all sounds for this reference will stop. + void stopSound3D(MWWorld::Ptr reference, const std::string& soundId); + ///< Stop the given object from playing the given sound, + + void stopSound3D(MWWorld::Ptr reference); + ///< Stop the given object from playing all sounds. void stopSound(const MWWorld::Ptr::CellStore *cell); ///< Stop all sounds for the given cell. From e398c51f8a9b641b43658d14639f67301f8d0e11 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 27 Mar 2012 13:13:28 +0200 Subject: [PATCH 185/488] remove unneeded render queue workaround --- apps/openmw/mwrender/occlusionquery.cpp | 24 ------------------------ apps/openmw/mwrender/occlusionquery.hpp | 8 -------- 2 files changed, 32 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index c3285a3359..43a742a548 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -225,14 +225,6 @@ void OcclusionQuery::update(float duration) mBBQuerySingleObject->setVisible(false); - // restore old render queues - for (std::vector::iterator it=mObjectsInfo.begin(); - it!=mObjectsInfo.end(); ++it) - { - if (!mRendering->getScene()->hasMovableObject((*it).name, (*it).typeName)) break; - mRendering->getScene()->getMovableObject((*it).name, (*it).typeName)->setRenderQueueGroup( (*it).oldRenderqueue ); - } - mQuerySingleObjectStarted = false; mQuerySingleObjectRequested = false; } @@ -245,22 +237,6 @@ void OcclusionQuery::occlusionTest(const Ogre::Vector3& position, Ogre::SceneNod mBBQuerySingleObject->setVisible(true); - // we don't want the object to occlude itself - // put it in a render queue _after_ the occlusion query - mObjectsInfo.clear(); - for (int i=0; inumAttachedObjects(); ++i) - { - ObjectInfo info; - MovableObject* obj = object->getAttachedObject(i); - info.name = obj->getName(); - info.typeName = obj->getMovableType(); - info.oldRenderqueue = obj->getRenderQueueGroup(); - - mObjectsInfo.push_back(info); - - object->getAttachedObject(i)->setRenderQueueGroup(RENDER_QUEUE_MAIN+5); - } - mObjectNode->setPosition(position); // scale proportional to camera distance, in order to always give the billboard the same size in screen-space mObjectNode->setScale( Vector3(1,1,1)*(position - mRendering->getCamera()->getRealPosition()).length() ); diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index a9fa0b5e4a..b3e5442cfe 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -18,13 +18,6 @@ namespace MWRender /// /// \brief Implements hardware occlusion queries on the GPU /// - struct ObjectInfo - { - int oldRenderqueue; - std::string name; - std::string typeName; - }; - class OcclusionQuery : public Ogre::RenderObjectListener, public Ogre::RenderQueueListener { public: @@ -75,7 +68,6 @@ namespace MWRender float mSunVisibility; Ogre::SceneNode* mObjectNode; - std::vector mObjectsInfo; bool mWasVisible; bool mObjectWasVisible; From ec21ff21cc6620ba60a947dcc7d7bf1ffcf12e36 Mon Sep 17 00:00:00 2001 From: Jacob Essex Date: Tue, 27 Mar 2012 13:58:12 +0100 Subject: [PATCH 186/488] Removed memory leak, allocated more on the stack --- apps/openmw/mwrender/terrain.cpp | 48 +++++++++++++------------------ apps/openmw/mwrender/terrain.hpp | 5 ++-- components/esm_store/reclists.hpp | 8 +++++- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 1c7db2d8b1..ac60e63238 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -16,33 +16,32 @@ namespace MWRender //---------------------------------------------------------------------------------------------- TerrainManager::TerrainManager(Ogre::SceneManager* mgr, const MWWorld::Environment& evn) : - mEnvironment(evn) + mEnvironment(evn), mTerrainGroup(TerrainGroup(mgr, Terrain::ALIGN_X_Z, mLandSize, mWorldSize)) { - mTerrainGlobals = OGRE_NEW TerrainGlobalOptions(); TerrainMaterialGeneratorPtr matGen; TerrainMaterialGeneratorB* matGenP = new TerrainMaterialGeneratorB(); matGen.bind(matGenP); - mTerrainGlobals->setDefaultMaterialGenerator(matGen); + mTerrainGlobals.setDefaultMaterialGenerator(matGen); TerrainMaterialGenerator::Profile* const activeProfile = - mTerrainGlobals->getDefaultMaterialGenerator() + mTerrainGlobals.getDefaultMaterialGenerator() ->getActiveProfile(); mActiveProfile = static_cast(activeProfile); //The pixel error should be as high as possible without it being noticed //as it governs how fast mesh quality decreases. - mTerrainGlobals->setMaxPixelError(8); + mTerrainGlobals.setMaxPixelError(8); - mTerrainGlobals->setLayerBlendMapSize(32); - mTerrainGlobals->setDefaultGlobalColourMapSize(65); + mTerrainGlobals.setLayerBlendMapSize(32); + mTerrainGlobals.setDefaultGlobalColourMapSize(65); //10 (default) didn't seem to be quite enough - mTerrainGlobals->setSkirtSize(128); + mTerrainGlobals.setSkirtSize(128); //due to the sudden flick between composite and non composite textures, //this seemed the distance where it wasn't too noticeable - mTerrainGlobals->setCompositeMapDistance(mWorldSize*2); + mTerrainGlobals.setCompositeMapDistance(mWorldSize*2); mActiveProfile->setLightmapEnabled(false); mActiveProfile->setLayerSpecularMappingEnabled(false); @@ -54,16 +53,11 @@ namespace MWRender //disabled mActiveProfile->setCompositeMapEnabled(false); - mTerrainGroup = OGRE_NEW TerrainGroup(mgr, - Terrain::ALIGN_X_Z, - mLandSize, - mWorldSize); - - mTerrainGroup->setOrigin(Vector3(mWorldSize/2, + mTerrainGroup.setOrigin(Vector3(mWorldSize/2, 0, -mWorldSize/2)); - Terrain::ImportData& importSettings = mTerrainGroup->getDefaultImportSettings(); + Terrain::ImportData& importSettings = mTerrainGroup.getDefaultImportSettings(); importSettings.inputBias = 0; importSettings.terrainSize = mLandSize; @@ -78,22 +72,20 @@ namespace MWRender TerrainManager::~TerrainManager() { - OGRE_DELETE mTerrainGroup; - OGRE_DELETE mTerrainGlobals; } //---------------------------------------------------------------------------------------------- void TerrainManager::setDiffuse(const ColourValue& diffuse) { - mTerrainGlobals->setCompositeMapDiffuse(diffuse); + mTerrainGlobals.setCompositeMapDiffuse(diffuse); } //---------------------------------------------------------------------------------------------- void TerrainManager::setAmbient(const ColourValue& ambient) { - mTerrainGlobals->setCompositeMapAmbient(ambient); + mTerrainGlobals.setCompositeMapAmbient(ambient); } //---------------------------------------------------------------------------------------------- @@ -117,7 +109,7 @@ namespace MWRender for ( int y = 0; y < 2; y++ ) { Terrain::ImportData terrainData = - mTerrainGroup->getDefaultImportSettings(); + mTerrainGroup.getDefaultImportSettings(); const int terrainX = cellX * 2 + x; const int terrainY = cellY * 2 + y; @@ -155,13 +147,13 @@ namespace MWRender x * numTextures, y * numTextures, numTextures, indexes); - if (mTerrainGroup->getTerrain(terrainX, terrainY) == NULL) + if (mTerrainGroup.getTerrain(terrainX, terrainY) == NULL) { - mTerrainGroup->defineTerrain(terrainX, terrainY, &terrainData); + mTerrainGroup.defineTerrain(terrainX, terrainY, &terrainData); - mTerrainGroup->loadTerrain(terrainX, terrainY, true); + mTerrainGroup.loadTerrain(terrainX, terrainY, true); - Terrain* terrain = mTerrainGroup->getTerrain(terrainX, terrainY); + Terrain* terrain = mTerrainGroup.getTerrain(terrainX, terrainY); initTerrainBlendMaps(terrain, cellX, cellY, x * numTextures, y * numTextures, @@ -193,7 +185,7 @@ namespace MWRender } } - mTerrainGroup->freeTemporaryResources(); + mTerrainGroup.freeTemporaryResources(); } //---------------------------------------------------------------------------------------------- @@ -204,8 +196,8 @@ namespace MWRender { for ( int y = 0; y < 2; y++ ) { - mTerrainGroup->unloadTerrain(store->cell->getGridX() * 2 + x, - store->cell->getGridY() * 2 + y); + mTerrainGroup.unloadTerrain(store->cell->getGridX() * 2 + x, + store->cell->getGridY() * 2 + y); } } } diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 16c93d6f49..29a4ba36b3 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -2,6 +2,7 @@ #define _GAME_RENDER_TERRAIN_H #include +#include #include "terrainmaterial.hpp" #include "../mwworld/ptr.hpp" @@ -32,8 +33,8 @@ namespace MWRender{ void cellAdded(MWWorld::Ptr::CellStore* store); void cellRemoved(MWWorld::Ptr::CellStore* store); private: - Ogre::TerrainGlobalOptions* mTerrainGlobals; - Ogre::TerrainGroup* mTerrainGroup; + Ogre::TerrainGlobalOptions mTerrainGlobals; + Ogre::TerrainGroup mTerrainGroup; const MWWorld::Environment& mEnvironment; diff --git a/components/esm_store/reclists.hpp b/components/esm_store/reclists.hpp index a991996be5..16d37bec71 100644 --- a/components/esm_store/reclists.hpp +++ b/components/esm_store/reclists.hpp @@ -239,7 +239,13 @@ namespace ESMS */ struct LandList : RecList { - virtual ~LandList() {} + virtual ~LandList() + { + for ( LandMap::iterator itr = lands.begin(); itr != lands.end(); ++itr ) + { + delete itr->second; + } + } // Map containing all landscapes typedef std::pair LandCoord; From c6c06f1140aadc0bfc7b5d2d109f00aedd6431d4 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 27 Mar 2012 05:59:09 -0700 Subject: [PATCH 187/488] Return SoundPtr objects from the playSound and streamSound methods --- apps/openmw/mwsound/openal_output.cpp | 28 +++++++++++++-------------- apps/openmw/mwsound/openal_output.hpp | 12 ++++++------ apps/openmw/mwsound/sound_output.hpp | 14 ++++++++------ apps/openmw/mwsound/soundmanager.cpp | 8 ++++---- apps/openmw/mwsound/soundmanager.hpp | 2 +- 5 files changed, 33 insertions(+), 31 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index c069474034..bb083cb8b1 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -559,11 +559,11 @@ void OpenAL_Output::bufferFinished(ALuint buf) } -Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pitch, bool loop) +SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float pitch, bool loop) { throwALerror(); - std::auto_ptr sound; + boost::shared_ptr sound; ALuint src=0, buf=0; if(mFreeSources.empty()) @@ -604,15 +604,15 @@ Sound* OpenAL_Output::playSound(const std::string &fname, float volume, float pi alSourcePlay(src); throwALerror(); - return sound.release(); + return sound; } -Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max, bool loop) +SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max, bool loop) { throwALerror(); - std::auto_ptr sound; + boost::shared_ptr sound; ALuint src=0, buf=0; if(mFreeSources.empty()) @@ -653,15 +653,15 @@ Sound* OpenAL_Output::playSound3D(const std::string &fname, const float *pos, fl alSourcePlay(src); throwALerror(); - return sound.release(); + return sound; } -Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float pitch) +SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, float pitch) { throwALerror(); - std::auto_ptr sound; + boost::shared_ptr sound; ALuint src; if(mFreeSources.empty()) @@ -697,15 +697,15 @@ Sound* OpenAL_Output::streamSound(const std::string &fname, float volume, float throwALerror(); sound->play(); - return sound.release(); + return sound; } -Sound* OpenAL_Output::streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max) +SoundPtr OpenAL_Output::streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max) { throwALerror(); - std::auto_ptr sound; + boost::shared_ptr sound; ALuint src; if(mFreeSources.empty()) @@ -741,7 +741,7 @@ Sound* OpenAL_Output::streamSound3D(const std::string &fname, const float *pos, throwALerror(); sound->play(); - return sound.release(); + return sound; } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index e8154e9063..2b0897bdbc 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -42,13 +42,13 @@ namespace MWSound virtual void init(const std::string &devname=""); virtual void deinit(); - virtual Sound *playSound(const std::string &fname, float volume, float pitch, bool loop); - virtual Sound *playSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max, bool loop); + virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, bool loop); + virtual SoundPtr playSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max, bool loop); - virtual Sound *streamSound(const std::string &fname, float volume, float pitch); - virtual Sound *streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max); + virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch); + virtual SoundPtr streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max); virtual void updateListener(const float *pos, const float *atdir, const float *updir); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 1722165e49..794383591b 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -4,6 +4,8 @@ #include #include +#include "soundmanager.hpp" + #include "../mwworld/ptr.hpp" namespace MWSound @@ -20,12 +22,12 @@ namespace MWSound virtual void init(const std::string &devname="") = 0; virtual void deinit() = 0; - virtual Sound *playSound(const std::string &fname, float volume, float pitch, bool loop) = 0; - virtual Sound *playSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max, bool loop) = 0; - virtual Sound *streamSound(const std::string &fname, float volume, float pitch) = 0; - virtual Sound *streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max) = 0; + virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, bool loop) = 0; + virtual SoundPtr playSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max, bool loop) = 0; + virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch) = 0; + virtual SoundPtr streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, + float min, float max) = 0; virtual void updateListener(const float *pos, const float *atdir, const float *updir) = 0; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 449b5100b0..ce5f93acdb 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -136,7 +136,7 @@ namespace MWSound { if(mMusic) mMusic->stop(); - mMusic.reset(mOutput->streamSound(filename, 0.4f, 1.0f)); + mMusic = mOutput->streamSound(filename, 0.4f, 1.0f); } catch(std::exception &e) { @@ -180,7 +180,7 @@ namespace MWSound const ESM::Position &pos = ptr.getCellRef().pos; std::string filePath = std::string("Sound/")+filename; - SoundPtr sound(mOutput->playSound3D(filePath, pos.pos, 1.0f, 1.0f, 100.0f, 20000.0f, false)); + SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, 1.0f, 1.0f, 100.0f, 20000.0f, false); mActiveSounds[std::make_pair(ptr, std::string("_say_sound"))] = sound; } catch(std::exception &e) @@ -201,7 +201,7 @@ namespace MWSound try { std::string file = lookup(soundId, volume, min, max); - SoundPtr sound = SoundPtr(mOutput->playSound(file, volume, pitch, loop)); + SoundPtr sound = mOutput->playSound(file, volume, pitch, loop); mActiveSounds[std::make_pair(MWWorld::Ptr(), soundId)] = sound; } catch(std::exception &e) @@ -220,7 +220,7 @@ namespace MWSound const ESM::Position &pos = ptr.getCellRef().pos; std::string file = lookup(soundId, volume, min, max); - SoundPtr sound(mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop)); + SoundPtr sound = mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop); mActiveSounds[std::make_pair((untracked?MWWorld::Ptr():ptr), soundId)] = sound; } catch(std::exception &e) diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index d79aface6a..539e818885 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -28,6 +28,7 @@ namespace MWSound class Sound; typedef boost::shared_ptr DecoderPtr; + typedef boost::shared_ptr SoundPtr; class SoundManager { @@ -40,7 +41,6 @@ namespace MWSound boost::shared_ptr mMusic; std::string mCurrentPlaylist; - typedef boost::shared_ptr SoundPtr; typedef std::pair PtrIDPair; typedef std::map SoundMap; SoundMap mActiveSounds; From 6c8be7205a712381067e59755dc1301a7820b2bf Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Tue, 27 Mar 2012 20:13:48 +0200 Subject: [PATCH 188/488] build fix --- cmake/FindMyGUI.cmake | 92 ++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/cmake/FindMyGUI.cmake b/cmake/FindMyGUI.cmake index fa0b25383c..cc97992084 100644 --- a/cmake/FindMyGUI.cmake +++ b/cmake/FindMyGUI.cmake @@ -19,57 +19,57 @@ include(FindPkgMacros) IF (WIN32) #Windows MESSAGE(STATUS "Looking for MyGUI") - SET(MYGUISDK $ENV{MYGUI_HOME}) +SET(MYGUISDK $ENV{MYGUI_HOME}) IF (MYGUISDK) - findpkg_begin ( "MYGUI" ) +findpkg_begin ( "MYGUI" ) MESSAGE(STATUS "Using MyGUI in OGRE SDK") - STRING(REGEX REPLACE "[\\]" "/" MYGUISDK "${MYGUISDK}" ) +STRING(REGEX REPLACE "[\\]" "/" MYGUISDK "${MYGUISDK}" ) - find_path ( MYGUI_INCLUDE_DIRS - MyGUI.h - "${MYGUISDK}/MyGUIEngine/include" - NO_DEFAULT_PATH ) - - find_path ( MYGUI_PLATFORM_INCLUDE_DIRS - MyGUI_OgrePlatform.h - "${MYGUISDK}/Platforms/Ogre/OgrePlatform/include" - NO_DEFAULT_PATH ) +find_path ( MYGUI_INCLUDE_DIRS +MyGUI.h +"${MYGUISDK}/MyGUIEngine/include" +NO_DEFAULT_PATH ) - SET ( MYGUI_LIB_DIR ${MYGUISDK}/*/lib ) - - find_library ( MYGUI_LIBRARIES_REL NAMES - MyGUIEngine.lib - MyGUI.OgrePlatform.lib - HINTS - ${MYGUI_LIB_DIR} - PATH_SUFFIXES "" release relwithdebinfo minsizerel ) +find_path ( MYGUI_PLATFORM_INCLUDE_DIRS +MyGUI_OgrePlatform.h +"${MYGUISDK}/Platforms/Ogre/OgrePlatform/include" +NO_DEFAULT_PATH ) - find_library ( MYGUI_LIBRARIES_DBG NAMES - MyGUIEngine_d.lib - MyGUI.OgrePlatform_d.lib - HINTS - ${MYGUI_LIB_DIR} - PATH_SUFFIXES "" debug ) +SET ( MYGUI_LIB_DIR ${MYGUISDK}/*/lib ) - find_library ( MYGUI_PLATFORM_LIBRARIES_REL NAMES - MyGUI.OgrePlatform.lib - HINTS - ${MYGUI_LIB_DIR} - PATH_SUFFIXES "" release relwithdebinfo minsizerel ) +find_library ( MYGUI_LIBRARIES_REL NAMES +MyGUIEngine.lib +MyGUI.OgrePlatform.lib +HINTS +${MYGUI_LIB_DIR} +PATH_SUFFIXES "" release relwithdebinfo minsizerel ) - find_library ( MYGUI_PLATFORM_LIBRARIES_DBG NAMES - MyGUI.OgrePlatform_d.lib - HINTS - ${MYGUI_LIB_DIR} - PATH_SUFFIXES "" debug ) - - make_library_set ( MYGUI_LIBRARIES ) - make_library_set ( MYGUI_PLATFORM_LIBRARIES ) - - MESSAGE ("${MYGUI_LIBRARIES}") - MESSAGE ("${MYGUI_PLATFORM_LIBRARIES}") +find_library ( MYGUI_LIBRARIES_DBG NAMES +MyGUIEngine_d.lib +MyGUI.OgrePlatform_d.lib +HINTS +${MYGUI_LIB_DIR} +PATH_SUFFIXES "" debug ) - findpkg_finish ( "MYGUI" ) +find_library ( MYGUI_PLATFORM_LIBRARIES_REL NAMES +MyGUI.OgrePlatform.lib +HINTS +${MYGUI_LIB_DIR} +PATH_SUFFIXES "" release relwithdebinfo minsizerel ) + +find_library ( MYGUI_PLATFORM_LIBRARIES_DBG NAMES +MyGUI.OgrePlatform_d.lib +HINTS +${MYGUI_LIB_DIR} +PATH_SUFFIXES "" debug ) + +make_library_set ( MYGUI_LIBRARIES ) +make_library_set ( MYGUI_PLATFORM_LIBRARIES ) + +MESSAGE ("${MYGUI_LIBRARIES}") +MESSAGE ("${MYGUI_PLATFORM_LIBRARIES}") + +findpkg_finish ( "MYGUI" ) ENDIF (MYGUISDK) IF (OGRESOURCE) @@ -87,9 +87,11 @@ ELSE (WIN32) #Unix SET(MYGUI_INCLUDE_DIRS ${MYGUI_INCLUDE_DIRS}) SET(MYGUI_LIB_DIR ${MYGUI_LIBDIR}) SET(MYGUI_LIBRARIES ${MYGUI_LIBRARIES} CACHE STRING "") + SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") ELSE (MYGUI_INCLUDE_DIRS) FIND_PATH(MYGUI_INCLUDE_DIRS MyGUI.h PATHS /usr/local/include /usr/include PATH_SUFFIXES MyGUI MYGUI) FIND_LIBRARY(MYGUI_LIBRARIES mygui PATHS /usr/lib /usr/local/lib) + SET(MYGUI_PLATFORM_LIBRARIES "MyGUI.OgrePlatform") SET(MYGUI_LIB_DIR ${MYGUI_LIBRARIES}) STRING(REGEX REPLACE "(.*)/.*" "\\1" MYGUI_LIB_DIR "${MYGUI_LIB_DIR}") STRING(REGEX REPLACE ".*/" "" MYGUI_LIBRARIES "${MYGUI_LIBRARIES}") @@ -111,7 +113,7 @@ IF (MYGUI_INCLUDE_DIRS AND MYGUI_LIBRARIES) ENDIF (MYGUI_INCLUDE_DIRS AND MYGUI_LIBRARIES) IF (MYGUI_FOUND) - MARK_AS_ADVANCED(MYGUI_LIB_DIR) +MARK_AS_ADVANCED(MYGUI_LIB_DIR) IF (NOT MYGUI_FIND_QUIETLY) MESSAGE(STATUS " libraries : ${MYGUI_LIBRARIES} from ${MYGUI_LIB_DIR}") MESSAGE(STATUS " includes : ${MYGUI_INCLUDE_DIRS}") @@ -122,4 +124,4 @@ ELSE (MYGUI_FOUND) ENDIF (MYGUI_FIND_REQUIRED) ENDIF (MYGUI_FOUND) -CMAKE_POLICY(POP) \ No newline at end of file +CMAKE_POLICY(POP) From 8f6d10f229a45bfa2c01364a4a0e9d1a2a78200e Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 27 Mar 2012 20:59:58 +0200 Subject: [PATCH 189/488] fix uninitalised stuff --- apps/openmw/mwrender/occlusionquery.cpp | 4 ++-- apps/openmw/mwworld/world.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 43a742a548..2c184c3451 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -11,7 +11,7 @@ using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), - mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), + mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), mTestResult(false), mQuerySingleObjectRequested(false), mResponding(true), mDelay(0), mWasVisible(false), mObjectWasVisible(false) { mRendering = renderer; @@ -211,7 +211,7 @@ void OcclusionQuery::update(float duration) mDoQuery = true; } - if (!mSingleObjectQuery->isStillOutstanding() && mQuerySingleObjectStarted) + if (mQuerySingleObjectStarted && !mSingleObjectQuery->isStillOutstanding()) { mDelay = 0; mResponding = true; diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index f185e411f8..567ed8f90b 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -157,7 +157,8 @@ namespace MWWorld const std::string& master, const boost::filesystem::path& resDir, bool newGame, Environment& environment, const std::string& encoding) : mPlayer (0), mLocalScripts (mStore), mGlobalVariables (0), - mSky (true), mEnvironment (environment), mNextDynamicRecord (0), mCells (mStore, mEsm, *this) + mSky (true), mEnvironment (environment), mNextDynamicRecord (0), mCells (mStore, mEsm, *this), + mNumFacing(0) { mPhysics = new PhysicsSystem(renderer); mPhysEngine = mPhysics->getEngine(); From 43b1f896f42f986c6c19daaa3f3f78e6215e0953 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 27 Mar 2012 22:36:02 +0200 Subject: [PATCH 190/488] fix object pickup when player is very close to object --- apps/openmw/mwworld/physicssystem.cpp | 9 ++------- apps/openmw/mwworld/world.cpp | 11 +++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwworld/physicssystem.cpp b/apps/openmw/mwworld/physicssystem.cpp index 1d8f14cc42..83c3ef2bab 100644 --- a/apps/openmw/mwworld/physicssystem.cpp +++ b/apps/openmw/mwworld/physicssystem.cpp @@ -57,8 +57,6 @@ namespace MWWorld Ray centerRay = mRender.getCamera()->getCameraToViewportRay( mRender.getViewport()->getWidth()/2, mRender.getViewport()->getHeight()/2); - //let's avoid the capsule shape of the player. - centerRay.setOrigin(centerRay.getOrigin() + 20*centerRay.getDirection()); btVector3 from(centerRay.getOrigin().x,-centerRay.getOrigin().z,centerRay.getOrigin().y); btVector3 to(centerRay.getPoint(500).x,-centerRay.getPoint(500).z,centerRay.getPoint(500).y); @@ -71,11 +69,8 @@ namespace MWWorld Ray centerRay = mRender.getCamera()->getCameraToViewportRay( mRender.getViewport()->getWidth()/2, mRender.getViewport()->getHeight()/2); - //let's avoid the capsule shape of the player. - centerRay.setOrigin(centerRay.getOrigin() + 20*centerRay.getDirection()); - btVector3 from(centerRay.getOrigin().x,-centerRay.getOrigin().z,centerRay.getOrigin().y); - btVector3 to(centerRay.getPoint(500).x,-centerRay.getPoint(500).z,centerRay.getPoint(500).y); - return from * (1-extent) + to * extent; + btVector3 result(centerRay.getPoint(500*extent).x,-centerRay.getPoint(500*extent).z,centerRay.getPoint(500*extent).y); + return result; } bool PhysicsSystem::castRay(const Vector3& from, const Vector3& to) diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 567ed8f90b..dd30447338 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -749,6 +749,17 @@ namespace MWWorld // figure out which object we want to test against std::vector < std::pair < float, std::string > > results = mPhysics->getFacedObjects(); + // ignore the player + for (std::vector < std::pair < float, std::string > >::iterator it = results.begin(); + it != results.end(); ++it) + { + if ( (*it).second == mPlayer->getPlayer().getRefData().getHandle() ) + { + results.erase(it); + break; + } + } + if (results.size() == 0) { mNumFacing = 0; From fa4c4b8f2129316697d9bbc88350946e0c3ff4db Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Tue, 27 Mar 2012 23:07:25 +0200 Subject: [PATCH 191/488] Issue #225: Initialize members in class constructor. --- apps/openmw/mwgui/layouts.cpp | 15 ++++++++++++++- apps/openmw/mwgui/layouts.hpp | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index dbd6154b7c..f2c650fb39 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -182,7 +182,9 @@ void HUD::setPlayerPos(const float x, const float y) } MapWindow::MapWindow() - : Layout("openmw_map_window_layout.xml"), mGlobal(false) + : Layout("openmw_map_window_layout.xml") + , mGlobal(false) + , mVisible(false) { setCoord(500,0,320,300); setText("WorldButton", "World"); @@ -272,6 +274,17 @@ void MapWindow::onWorldButtonClicked(MyGUI::Widget* _sender) mButton->setCaption( mGlobal ? "Local" : "World" ); } +LocalMapBase::LocalMapBase() + : mCurX(0) + , mCurY(0) + , mInterior(false) + , mLocalMap(NULL) + , mPrefix() + , mChanged(false) + , mLayout(NULL) +{ +} + void LocalMapBase::init(MyGUI::ScrollView* widget, OEngine::GUI::Layout* layout) { mLocalMap = widget; diff --git a/apps/openmw/mwgui/layouts.hpp b/apps/openmw/mwgui/layouts.hpp index 8d9a41a229..614479ccce 100644 --- a/apps/openmw/mwgui/layouts.hpp +++ b/apps/openmw/mwgui/layouts.hpp @@ -34,6 +34,7 @@ namespace MWGui class LocalMapBase { public: + LocalMapBase(); void init(MyGUI::ScrollView* widget, OEngine::GUI::Layout* layout); void setCellPrefix(const std::string& prefix); @@ -85,6 +86,7 @@ namespace MWGui { public: MapWindow(); + virtual ~MapWindow(){} void setVisible(bool b); void setPlayerPos(const float x, const float y); From 4249d2c53699fe42fdc9da3553a7ac5fc9403b90 Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 28 Mar 2012 03:15:10 +0200 Subject: [PATCH 192/488] add getNorthVector method --- apps/openmw/mwworld/world.cpp | 16 ++++++++++++++++ apps/openmw/mwworld/world.hpp | 3 +++ 2 files changed, 19 insertions(+) diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index a636ce2887..a1d5824917 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -701,6 +701,7 @@ namespace MWWorld void World::update (float duration) { + getNorthVector(mWorldScene->getCurrentCell()); mWorldScene->update (duration); mWeatherManager->update (duration); @@ -754,4 +755,19 @@ namespace MWWorld { return mRendering->getFader(); } + + Ogre::Vector2 World::getNorthVector(Ptr::CellStore* cell) + { + ESMS::CellRefList statics = cell->statics; + ESMS::LiveCellRef* ref = statics.find("northmarker"); + if (!ref) + { + std::cout << "No north marker found." << std::endl; + return Vector2(0, 1); + } + Ogre::SceneNode* node = ref->mData.getBaseNode(); + Vector3 dir = -node->_getDerivedOrientation().zAxis(); + Vector2 d = Vector2(dir.x, dir.z); + return d; + } } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 71cca3545d..2607c38300 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -129,6 +129,9 @@ namespace MWWorld bool isCellExterior() const; bool isCellQuasiExterior() const; + Ogre::Vector2 getNorthVector(Ptr::CellStore* cell); + ///< get north vector (OGRE coordinates) for given interior cell + Globals::Data& getGlobalVariable (const std::string& name); Globals::Data getGlobalVariable (const std::string& name) const; From 66b31d3d43f63b8c68d7025a90f38443d47e0afc Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Wed, 28 Mar 2012 12:04:42 +0400 Subject: [PATCH 193/488] Bug #229 (Fixed): On OS X Launcher cannot launch game if path to binary contains spaces --- apps/launcher/maindialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/launcher/maindialog.cpp b/apps/launcher/maindialog.cpp index 49c0bd960e..b312357263 100644 --- a/apps/launcher/maindialog.cpp +++ b/apps/launcher/maindialog.cpp @@ -175,6 +175,7 @@ void MainDialog::play() QDir dir(QCoreApplication::applicationDirPath()); QString game = dir.absoluteFilePath("openmw"); QFile file(game); + game = "\"" + game + "\""; #else QString game = "./openmw"; QFile file(game); From 0c61f0d2942036d52a5703f9c17c968484d08dca Mon Sep 17 00:00:00 2001 From: gugus Date: Wed, 28 Mar 2012 11:45:46 +0200 Subject: [PATCH 194/488] test stuff --- apps/openmw/mwscript/docs/vmformat.txt | 3 +- apps/openmw/mwscript/statsextensions.cpp | 39 +++++++++++++++++ apps/openmw/mwworld/player.cpp | 53 +++++++++++++++++------- apps/openmw/mwworld/player.hpp | 14 ++++--- 4 files changed, 89 insertions(+), 20 deletions(-) diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index eab5bf846f..713ac43b06 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -123,4 +123,5 @@ op 0x200013d: FadeOut op 0x200013e: FadeTo op 0x200013f: GetCurrentWeather op 0x2000140: ChangeWeather -opcodes 0x2000141-0x3ffffff unused +op 0x2000141: OpPCJoinFaction +opcodes 0x2000142-0x3ffffff unused diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 0e97a39cf4..85ac54348a 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -8,6 +8,8 @@ #include #include "../mwworld/class.hpp" +#include "../mwworld/environment.hpp" +#include "../mwworld/player.hpp" #include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/npcstats.hpp" @@ -280,6 +282,36 @@ namespace MWScript } }; + class OpPCJoinFaction : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + MWScript::InterpreterContext& context + = static_cast (runtime.getContext()); + + std::string factionID = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + context.getEnvironment().mWorld->getPlayer().addFaction(factionID); + } + }; + + class OpPCRaiseRank : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + MWScript::InterpreterContext& context + = static_cast (runtime.getContext()); + + std::string factionID = runtime.getStringLiteral (runtime[0].mInteger); + runtime.pop(); + context.getEnvironment().mWorld->getPlayer().raiseRank(factionID); + } + }; + const int numberOfAttributes = 8; const int opcodeGetAttribute = 0x2000027; @@ -310,6 +342,8 @@ namespace MWScript const int opcodeSetSkillExplicit = 0x20000df; const int opcodeModSkill = 0x20000fa; const int opcodeModSkillExplicit = 0x2000115; + const int opcodePCJoinFaction = 0x2000141; + const int opcodePCRaiseRank = 0x2000142; void registerExtensions (Compiler::Extensions& extensions) { @@ -381,6 +415,8 @@ namespace MWScript extensions.registerInstruction (mod + skills[i], "l", opcodeModSkill+i, opcodeModSkillExplicit+i); } + extensions.registerInstruction("PCJoinFaction","S",opcodePCJoinFaction); + extensions.registerInstruction("PCRaiseRank","S",opcodePCRaiseRank); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -436,6 +472,9 @@ namespace MWScript interpreter.installSegment5 (opcodeModSkill+i, new OpModSkill (i)); interpreter.installSegment5 (opcodeModSkillExplicit+i, new OpModSkill (i)); } + + interpreter.installSegment5(opcodePCJoinFaction,new OpPCJoinFaction); + interpreter.installSegment5(opcodePCRaiseRank,new OpPCRaiseRank); } } } diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index 270ffa55ca..518b1d5198 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -90,11 +90,11 @@ namespace MWWorld MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Run, !running); } - Player::Faction Player::getFaction(std::string faction) + Player::Faction Player::getFaction(std::string factionID) { for(std::list::iterator it = mFactions.begin(); it != mFactions.end();it++) { - if(it->name == faction) return *it; + if(it->name == factionID) return *it; } //faction was not found->dummy faction Player::Faction fact; @@ -105,41 +105,66 @@ namespace MWWorld return fact; } - void Player::addFaction(std::string faction) + void Player::addFaction(std::string factionID) { - if(getFaction(faction).name == "not found") + if(getFaction(factionID).name == "not found") { Player::Faction fact; - const ESM::Faction* eFact = mWorld.getStore().factions.find(faction); + const ESM::Faction* eFact = mWorld.getStore().factions.find(factionID); fact.expelled = false; fact.rank = 0; - fact.name = faction; + fact.name = eFact->name; fact.id = eFact->id; mFactions.push_back(fact); } } - int Player::getRank(std::string faction) + int Player::getRank(std::string factionID) { - Player::Faction fact = getFaction(faction); + Player::Faction fact = getFaction(factionID); return fact.rank; } - void Player::setRank(std::string faction,int rank) + void Player::setRank(std::string factionID,int rank) { - Player::Faction fact = getFaction(faction); + Player::Faction fact = getFaction(factionID); fact.rank = rank; } - bool Player::isExpelled(std::string faction) + void Player::raiseRank(std::string factionID) { - Player::Faction fact = getFaction(faction); + if(getFaction(factionID).name == "not found") + { + addFaction(factionID); + setRank(factionID,1); + } + else + { + setRank(factionID,getRank(factionID) + 1); + } + } + + void Player::lowerRank(std::string factionID) + { + if(getFaction(factionID).name == "not found") + { + std::cout << "cannot lower the rank of the player: faction no found. Faction: "<< factionID << std::endl; + } + else + { + setRank(factionID,getRank(factionID) - 1); + } + } + + bool Player::isExpelled(std::string factionID) + { + Player::Faction fact = getFaction(factionID); return fact.expelled; } - void Player::setExpelled(std::string faction,bool expelled) + void Player::setExpelled(std::string factionID,bool expelled) { - Player::Faction fact = getFaction(faction); + Player::Faction fact = getFaction(factionID); fact.expelled = expelled; } } diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index 8129c4d8ea..628a238266 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -119,15 +119,19 @@ namespace MWWorld void setAutoMove (bool enable); - void addFaction(std::string faction); + void addFaction(std::string factionID); - int getRank(std::string faction); + int getRank(std::string factionID); - void setRank(std::string faction,int rank); + void setRank(std::string factionID,int rank); - bool isExpelled(std::string faction); + void raiseRank(std::string factionID); - void setExpelled(std::string faction,bool expelled); + void lowerRank(std::string factionID); + + bool isExpelled(std::string factionID); + + void setExpelled(std::string factionID,bool expelled); void setLeftRight (int value); From 089c3409354dc776e7a921d4c0c34903c2322e22 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 28 Mar 2012 03:48:51 -0700 Subject: [PATCH 195/488] Switch the map so the SoundPtr is used as a key --- apps/openmw/mwsound/soundmanager.cpp | 79 ++++++++++++++++------------ apps/openmw/mwsound/soundmanager.hpp | 2 +- 2 files changed, 47 insertions(+), 34 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index ce5f93acdb..a89c34ded0 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -114,11 +114,14 @@ namespace MWSound bool SoundManager::isPlaying(MWWorld::Ptr ptr, const std::string &id) const { - SoundMap::const_iterator snditer = mActiveSounds.find(std::make_pair(ptr, id)); - if(snditer == mActiveSounds.end()) - return false; - - return true; + SoundMap::const_iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) + { + if(snditer->second.first == ptr && snditer->second.second == id) + return snditer->first->isPlaying(); + snditer++; + } + return false; } @@ -181,7 +184,7 @@ namespace MWSound std::string filePath = std::string("Sound/")+filename; SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, 1.0f, 1.0f, 100.0f, 20000.0f, false); - mActiveSounds[std::make_pair(ptr, std::string("_say_sound"))] = sound; + mActiveSounds[sound] = std::make_pair(ptr, std::string("_say_sound")); } catch(std::exception &e) { @@ -201,8 +204,9 @@ namespace MWSound try { std::string file = lookup(soundId, volume, min, max); + SoundPtr sound = mOutput->playSound(file, volume, pitch, loop); - mActiveSounds[std::make_pair(MWWorld::Ptr(), soundId)] = sound; + mActiveSounds[sound] = std::make_pair(MWWorld::Ptr(), soundId); } catch(std::exception &e) { @@ -221,7 +225,8 @@ namespace MWSound std::string file = lookup(soundId, volume, min, max); SoundPtr sound = mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop); - mActiveSounds[std::make_pair((untracked?MWWorld::Ptr():ptr), soundId)] = sound; + mActiveSounds[sound] = (!untracked ? std::make_pair(ptr, soundId) : + std::make_pair(MWWorld::Ptr(), std::string())); } catch(std::exception &e) { @@ -231,12 +236,17 @@ namespace MWSound void SoundManager::stopSound3D(MWWorld::Ptr ptr, const std::string& soundId) { - SoundMap::iterator snditer = mActiveSounds.find(std::make_pair(ptr, soundId)); - if(snditer == mActiveSounds.end()) - return; - - snditer->second->stop(); - mActiveSounds.erase(snditer); + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) + { + if(snditer->second.first == ptr && snditer->second.second == soundId) + { + snditer->first->stop(); + mActiveSounds.erase(snditer++); + } + else + snditer++; + } } void SoundManager::stopSound3D(MWWorld::Ptr ptr) @@ -244,9 +254,9 @@ namespace MWSound SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { - if(snditer->first.first == ptr) + if(snditer->second.first == ptr) { - snditer->second->stop(); + snditer->first->stop(); mActiveSounds.erase(snditer++); } else @@ -259,10 +269,10 @@ namespace MWSound SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { - if(snditer->first.first != MWWorld::Ptr() && - snditer->first.first.getCell() == cell) + if(snditer->second.first != MWWorld::Ptr() && + snditer->second.first.getCell() == cell) { - snditer->second->stop(); + snditer->first->stop(); mActiveSounds.erase(snditer++); } else @@ -272,12 +282,18 @@ namespace MWSound void SoundManager::stopSound(const std::string& soundId) { - SoundMap::iterator snditer = mActiveSounds.find(std::make_pair(MWWorld::Ptr(), soundId)); - if(snditer == mActiveSounds.end()) - return; - - snditer->second->stop(); - mActiveSounds.erase(snditer); + SoundMap::iterator snditer = mActiveSounds.begin(); + while(snditer != mActiveSounds.end()) + { + if(snditer->second.first == MWWorld::Ptr() && + snditer->second.second == soundId) + { + snditer->first->stop(); + mActiveSounds.erase(snditer++); + } + else + snditer++; + } } bool SoundManager::getSoundPlaying(MWWorld::Ptr ptr, const std::string& soundId) const @@ -287,16 +303,13 @@ namespace MWSound void SoundManager::updateObject(MWWorld::Ptr ptr) { + const ESM::Position &pos = ptr.getCellRef().pos; SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { - if(snditer->first.first == ptr) - { - snditer->second->stop(); - mActiveSounds.erase(snditer++); - } - else - snditer++; + if(snditer->second.first == ptr) + snditer->first->update(pos.pos); + snditer++; } } @@ -385,7 +398,7 @@ namespace MWSound SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { - if(!snditer->second->isPlaying()) + if(!snditer->first->isPlaying()) mActiveSounds.erase(snditer++); else snditer++; diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 539e818885..5808b01421 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -42,7 +42,7 @@ namespace MWSound std::string mCurrentPlaylist; typedef std::pair PtrIDPair; - typedef std::map SoundMap; + typedef std::map SoundMap; SoundMap mActiveSounds; std::string lookup(const std::string &soundId, From c072babd17f5cfeec9f6608ab2725e30d44507dd Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 28 Mar 2012 04:56:40 -0700 Subject: [PATCH 196/488] Better handle bad OpenAL source counts --- apps/openmw/mwsound/openal_output.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index bb083cb8b1..6e5806ee37 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -415,12 +415,12 @@ void OpenAL_Output::init(const std::string &devname) alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED); throwALerror(); - ALCint maxmono, maxstereo; + ALCint maxmono=0, maxstereo=0; alcGetIntegerv(mDevice, ALC_MONO_SOURCES, 1, &maxmono); alcGetIntegerv(mDevice, ALC_STEREO_SOURCES, 1, &maxstereo); throwALCerror(mDevice); - mFreeSources.resize(std::min(maxmono+maxstereo, 256)); + mFreeSources.resize(std::min(maxmono+maxstereo, 256)); for(size_t i = 0;i < mFreeSources.size();i++) { ALuint src; From 7008bd2fe1e8b1e6e275bfd00d8025345af6b6f1 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 28 Mar 2012 04:58:47 -0700 Subject: [PATCH 197/488] Store some sound properties in the Sound class --- apps/openmw/mwsound/sound.hpp | 12 +++++++++- apps/openmw/mwsound/soundmanager.cpp | 34 ++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index f9e7ab4278..a5617bc5a1 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -12,8 +12,18 @@ namespace MWSound Sound& operator=(const Sound &rhs); Sound(const Sound &rhs); + protected: + float mVolume; /* NOTE: Real volume = mVolume*mBaseVolume */ + float mBaseVolume; + float mMinDistance; + float mMaxDistance; + public: - Sound() { } + Sound() : mVolume(1.0f) + , mBaseVolume(1.0f) + , mMinDistance(20.0f) /* 1 * min_range_scale */ + , mMaxDistance(12750.0f) /* 255 * max_range_scale */ + { } virtual ~Sound() { } friend class OpenAL_Output; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a89c34ded0..8e2ef3a278 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -140,6 +140,7 @@ namespace MWSound if(mMusic) mMusic->stop(); mMusic = mOutput->streamSound(filename, 0.4f, 1.0f); + mMusic->mBaseVolume = 0.4f; } catch(std::exception &e) { @@ -180,10 +181,13 @@ namespace MWSound try { // The range values are not tested - const ESM::Position &pos = ptr.getCellRef().pos; + float basevol = 1.0f; /* TODO: volume settings */ std::string filePath = std::string("Sound/")+filename; + const ESM::Position &pos = ptr.getCellRef().pos; + + SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, basevol, 1.0f, 20.0f, 12750.0f, false); + sound->mBaseVolume = basevol; - SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, 1.0f, 1.0f, 100.0f, 20000.0f, false); mActiveSounds[sound] = std::make_pair(ptr, std::string("_say_sound")); } catch(std::exception &e) @@ -200,12 +204,18 @@ namespace MWSound void SoundManager::playSound(const std::string& soundId, float volume, float pitch, bool loop) { - float min, max; try { - std::string file = lookup(soundId, volume, min, max); + float basevol = 1.0f; /* TODO: volume settings */ + float min, max; + std::string file = lookup(soundId, basevol, min, max); + + SoundPtr sound = mOutput->playSound(file, volume*basevol, pitch, loop); + sound->mVolume = volume; + sound->mBaseVolume = basevol; + sound->mMinDistance = min; + sound->mMaxDistance = max; - SoundPtr sound = mOutput->playSound(file, volume, pitch, loop); mActiveSounds[sound] = std::make_pair(MWWorld::Ptr(), soundId); } catch(std::exception &e) @@ -217,16 +227,22 @@ namespace MWSound void SoundManager::playSound3D(MWWorld::Ptr ptr, const std::string& soundId, float volume, float pitch, bool loop, bool untracked) { - float min, max; try { // Look up the sound in the ESM data + float basevol = 1.0f; /* TODO: volume settings */ + float min, max; + std::string file = lookup(soundId, basevol, min, max); const ESM::Position &pos = ptr.getCellRef().pos; - std::string file = lookup(soundId, volume, min, max); - SoundPtr sound = mOutput->playSound3D(file, pos.pos, volume, pitch, min, max, loop); + SoundPtr sound = mOutput->playSound3D(file, pos.pos, volume*basevol, pitch, min, max, loop); + sound->mVolume = volume; + sound->mBaseVolume = basevol; + sound->mMinDistance = min; + sound->mMaxDistance = max; + mActiveSounds[sound] = (!untracked ? std::make_pair(ptr, soundId) : - std::make_pair(MWWorld::Ptr(), std::string())); + std::make_pair(MWWorld::Ptr(), soundId)); } catch(std::exception &e) { From a3291ef360f3d16212252005f181c49e6efcef3e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 28 Mar 2012 05:19:35 -0700 Subject: [PATCH 198/488] Add a sound method to update the volume --- apps/openmw/mwsound/openal_output.cpp | 16 ++++++++++++++++ apps/openmw/mwsound/sound.hpp | 1 + 2 files changed, 17 insertions(+) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 6e5806ee37..032d79ab84 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -89,6 +89,7 @@ public: virtual void stop(); virtual bool isPlaying(); + virtual void setVolume(float volume); virtual void update(const float *pos); void play(); @@ -252,6 +253,13 @@ bool OpenAL_SoundStream::isPlaying() return !mIsFinished; } +void OpenAL_SoundStream::setVolume(float volume) +{ + alSourcef(mSource, AL_GAIN, volume*mBaseVolume); + throwALerror(); + mVolume = volume; +} + void OpenAL_SoundStream::update(const float *pos) { alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); @@ -329,6 +337,7 @@ public: virtual void stop(); virtual bool isPlaying(); + virtual void setVolume(float volume); virtual void update(const float *pos); }; @@ -361,6 +370,13 @@ bool OpenAL_Sound::isPlaying() return state==AL_PLAYING; } +void OpenAL_Sound::setVolume(float volume) +{ + alSourcef(mSource, AL_GAIN, volume*mBaseVolume); + throwALerror(); + mVolume = volume; +} + void OpenAL_Sound::update(const float *pos) { alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index a5617bc5a1..b5d010aa00 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -7,6 +7,7 @@ namespace MWSound { virtual void stop() = 0; virtual bool isPlaying() = 0; + virtual void setVolume(float volume) = 0; virtual void update(const float *pos) = 0; Sound& operator=(const Sound &rhs); From 293f33914e78b8d8aeb44ff06a4cf487a194c85b Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 28 Mar 2012 05:35:51 -0700 Subject: [PATCH 199/488] Use a deque fpr OpenAL's free sources --- apps/openmw/mwsound/openal_output.cpp | 43 ++++++++++++++------------- apps/openmw/mwsound/openal_output.hpp | 8 ++--- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 032d79ab84..ea49eb2f20 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -436,19 +436,22 @@ void OpenAL_Output::init(const std::string &devname) alcGetIntegerv(mDevice, ALC_STEREO_SOURCES, 1, &maxstereo); throwALCerror(mDevice); - mFreeSources.resize(std::min(maxmono+maxstereo, 256)); - for(size_t i = 0;i < mFreeSources.size();i++) + try { - ALuint src; - alGenSources(1, &src); - if(alGetError() != AL_NO_ERROR) + ALCuint maxtotal = std::min(maxmono+maxstereo, 256); + for(size_t i = 0;i < maxtotal;i++) { - mFreeSources.resize(i); - break; + ALuint src = 0; + alGenSources(1, &src); + throwALerror(); + mFreeSources.push_back(src); } - mFreeSources[i] = src; } - if(mFreeSources.size() == 0) + catch(std::exception &e) + { + std::cout <<"Error: "<removeAll(); - if(!mFreeSources.empty()) + while(!mFreeSources.empty()) { - alDeleteSources(mFreeSources.size(), mFreeSources.data()); - mFreeSources.clear(); + alDeleteSources(1, &mFreeSources.front()); + mFreeSources.pop_front(); } mBufferRefs.clear(); @@ -584,8 +587,8 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float if(mFreeSources.empty()) fail("No free sources"); - src = mFreeSources.back(); - mFreeSources.pop_back(); + src = mFreeSources.front(); + mFreeSources.pop_front(); try { @@ -633,8 +636,8 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const float *pos, if(mFreeSources.empty()) fail("No free sources"); - src = mFreeSources.back(); - mFreeSources.pop_back(); + src = mFreeSources.front(); + mFreeSources.pop_front(); try { @@ -682,8 +685,8 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa if(mFreeSources.empty()) fail("No free sources"); - src = mFreeSources.back(); - mFreeSources.pop_back(); + src = mFreeSources.front(); + mFreeSources.pop_front(); try { @@ -726,8 +729,8 @@ SoundPtr OpenAL_Output::streamSound3D(const std::string &fname, const float *pos if(mFreeSources.empty()) fail("No free sources"); - src = mFreeSources.back(); - mFreeSources.pop_back(); + src = mFreeSources.front(); + mFreeSources.pop_front(); try { diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 2b0897bdbc..d288a62f39 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -21,8 +21,9 @@ namespace MWSound ALCdevice *mDevice; ALCcontext *mContext; - typedef std::vector IDVec; - IDVec mFreeSources; + typedef std::deque IDDq; + IDDq mFreeSources; + IDDq mUnusedBuffers; typedef std::map NameMap; NameMap mBufferCache; @@ -30,9 +31,6 @@ namespace MWSound typedef std::map IDRefMap; IDRefMap mBufferRefs; - typedef std::deque IDDq; - IDDq mUnusedBuffers; - uint64_t mBufferCacheMemSize; ALuint getBuffer(const std::string &fname); From be337ef7cc99bb5230105e8f19ba943dd06cb60c Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 28 Mar 2012 06:08:25 -0700 Subject: [PATCH 200/488] Return SoundPtr objects from playSound[3D] Note that each Sound object currently contains "precious" resources even after the sound is stopped. The reference should be reliquished as soon as it's no longer needed (the SoundManager will make sure the sound continues to play until it's finished). --- apps/openmw/mwsound/sound.hpp | 7 ++++--- apps/openmw/mwsound/soundmanager.cpp | 18 ++++++++++++------ apps/openmw/mwsound/soundmanager.hpp | 8 ++++---- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index b5d010aa00..2cbd48d961 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -5,9 +5,6 @@ namespace MWSound { class Sound { - virtual void stop() = 0; - virtual bool isPlaying() = 0; - virtual void setVolume(float volume) = 0; virtual void update(const float *pos) = 0; Sound& operator=(const Sound &rhs); @@ -20,6 +17,10 @@ namespace MWSound float mMaxDistance; public: + virtual void stop() = 0; + virtual bool isPlaying() = 0; + virtual void setVolume(float volume) = 0; + Sound() : mVolume(1.0f) , mBaseVolume(1.0f) , mMinDistance(20.0f) /* 1 * min_range_scale */ diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 8e2ef3a278..ad9e47f729 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -185,7 +185,8 @@ namespace MWSound std::string filePath = std::string("Sound/")+filename; const ESM::Position &pos = ptr.getCellRef().pos; - SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, basevol, 1.0f, 20.0f, 12750.0f, false); + SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, basevol, 1.0f, + 20.0f, 12750.0f, false); sound->mBaseVolume = basevol; mActiveSounds[sound] = std::make_pair(ptr, std::string("_say_sound")); @@ -202,15 +203,16 @@ namespace MWSound } - void SoundManager::playSound(const std::string& soundId, float volume, float pitch, bool loop) + SoundPtr SoundManager::playSound(const std::string& soundId, float volume, float pitch, bool loop) { + SoundPtr sound; try { float basevol = 1.0f; /* TODO: volume settings */ float min, max; std::string file = lookup(soundId, basevol, min, max); - SoundPtr sound = mOutput->playSound(file, volume*basevol, pitch, loop); + sound = mOutput->playSound(file, volume*basevol, pitch, loop); sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; @@ -222,11 +224,14 @@ namespace MWSound { std::cout <<"Sound Error: "<playSound3D(file, pos.pos, volume*basevol, pitch, min, max, loop); + sound = mOutput->playSound3D(file, pos.pos, volume*basevol, pitch, min, max, loop); sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; @@ -248,6 +253,7 @@ namespace MWSound { std::cout <<"Sound Error: "< Date: Sat, 24 Mar 2012 14:46:48 +0100 Subject: [PATCH 201/488] ogre 1.8 fixes --- components/bsa/bsa_archive.cpp | 31 ++++++++++++++++++-- components/bsa/bsa_file.cpp | 4 +-- components/bsa/bsa_file.hpp | 4 +-- libs/openengine/bullet/BulletShapeLoader.cpp | 8 ++--- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 72d15944d5..80d92dd521 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -256,8 +256,12 @@ public: return DataStreamPtr(new Mangle2OgreStream(strm)); } +bool exists(const String& filename) { + return cexists(filename); +} + // Check if the file exists. - bool exists(const String& filename) { + bool cexists(const String& filename) const { String passed = filename; if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' || filename.at(filename.length() - 1) == '"' || filename.at(filename.length() - 1) == '>' || filename.at(filename.length() - 1) == ':' @@ -308,6 +312,29 @@ return arc.exists(passed.c_str()); located in BSAs. So instead we channel it through exists() and set up a single-element result list if the file is found. */ + FileInfoListPtr findFileInfo(const String& pattern, bool recursive = true, + bool dirs = false) const + { + FileInfoListPtr ptr = FileInfoListPtr(new FileInfoList()); + + // Check if the file exists (only works for single files - wild + // cards and recursive search isn't implemented.) + if(cexists(pattern)) + { + FileInfo fi; + fi.archive = this; + fi.filename = pattern; + // It apparently doesn't matter that we return bogus + // information + fi.path = ""; + fi.compressedSize = fi.uncompressedSize = 0; + + ptr->push_back(fi); + } + + return ptr; + } + FileInfoListPtr findFileInfo(const String& pattern, bool recursive = true, bool dirs = false) { @@ -315,7 +342,7 @@ return arc.exists(passed.c_str()); // Check if the file exists (only works for single files - wild // cards and recursive search isn't implemented.) - if(exists(pattern)) + if(cexists(pattern)) { FileInfo fi; fi.archive = this; diff --git a/components/bsa/bsa_file.cpp b/components/bsa/bsa_file.cpp index 95358a3628..f19606703c 100644 --- a/components/bsa/bsa_file.cpp +++ b/components/bsa/bsa_file.cpp @@ -148,9 +148,9 @@ void BSAFile::readHeader() } /// Get the index of a given file name, or -1 if not found -int BSAFile::getIndex(const char *str) +int BSAFile::getIndex(const char *str) const { - Lookup::iterator it; + Lookup::const_iterator it; it = lookup.find(str); if(it == lookup.end()) return -1; diff --git a/components/bsa/bsa_file.hpp b/components/bsa/bsa_file.hpp index f54a64d2af..95fac0f4d7 100644 --- a/components/bsa/bsa_file.hpp +++ b/components/bsa/bsa_file.hpp @@ -93,7 +93,7 @@ class BSAFile void readHeader(); /// Get the index of a given file name, or -1 if not found - int getIndex(const char *str); + int getIndex(const char *str) const; public: @@ -119,7 +119,7 @@ class BSAFile */ /// Check if a file exists - bool exists(const char *file) { return getIndex(file) != -1; } + bool exists(const char *file) const { return getIndex(file) != -1; } /** Open a file contained in the archive. Throws an exception if the file doesn't exist. diff --git a/libs/openengine/bullet/BulletShapeLoader.cpp b/libs/openengine/bullet/BulletShapeLoader.cpp index 4593bad528..59a414f301 100644 --- a/libs/openengine/bullet/BulletShapeLoader.cpp +++ b/libs/openengine/bullet/BulletShapeLoader.cpp @@ -63,17 +63,17 @@ size_t BulletShape::calculateSize() const //============================================================================================================= -template<> BulletShapeManager *Ogre::Singleton::ms_Singleton = 0; +template<> BulletShapeManager *Ogre::Singleton::msSingleton = 0; BulletShapeManager *BulletShapeManager::getSingletonPtr() { - return ms_Singleton; + return msSingleton; } BulletShapeManager &BulletShapeManager::getSingleton() { - assert(ms_Singleton); - return(*ms_Singleton); + assert(msSingleton); + return(*msSingleton); } BulletShapeManager::BulletShapeManager() From f86d53636d0611f9fd45c60f7507b69d6671db81 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Wed, 28 Mar 2012 21:36:38 +0200 Subject: [PATCH 202/488] Issue #225: Correction to commit fa4c4b8. Correction to commit fa4c4b8 - memeber mChanged should be set to true, otherwise the map won't display if the game is started in (0, 0) cell. --- apps/openmw/mwgui/layouts.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index f2c650fb39..de74214eef 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -280,7 +280,7 @@ LocalMapBase::LocalMapBase() , mInterior(false) , mLocalMap(NULL) , mPrefix() - , mChanged(false) + , mChanged(true) , mLayout(NULL) { } From f2075c7f4fb3caebd7c8d0156ef55f39050719e9 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Wed, 28 Mar 2012 21:40:06 +0200 Subject: [PATCH 203/488] temporarily silence warnigns in OGRE headers --- CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c531e475d..3273cfe0a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -160,7 +160,7 @@ endif (APPLE) # Dependencies -# Fix for not visible pthreads functions for linker with glibc 2.15 +# Fix for not visible pthreads functions for linker with glibc 2.15 if (UNIX AND NOT APPLE) find_package (Threads) endif() @@ -257,6 +257,9 @@ endif (APPLE) if (CMAKE_COMPILER_IS_GNUCC) add_definitions (-Wall -Wextra -Wno-unused-parameter -Wno-reorder) + # Silence warnings in OGRE headers. Remove once OGRE got fixed! + add_definitions (-Wno-ignored-qualifiers) + execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) if ("${GCC_VERSION}" VERSION_GREATER 4.6 OR "${GCC_VERSION}" VERSION_EQUAL 4.6) @@ -332,7 +335,7 @@ if(WIN32) SET(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINO}) SET(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE}) SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW;esmtool;Esmtool;omwlauncher;OpenMW Launcher") - set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Readme.lnk' '\$INSTDIR\\\\readme.txt'") + set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Readme.lnk' '\$INSTDIR\\\\readme.txt'") SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenMW_SOURCE_DIR}/readme.txt") SET(CPACK_RESOURCE_FILE_LICENSE "${OpenMW_SOURCE_DIR}/GPL3.txt") SET(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") From 47c3e92db1b3264112657ea6f10178091fe0cf37 Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 28 Mar 2012 21:42:41 +0200 Subject: [PATCH 204/488] removed the unused ray scene query --- apps/openmw/mwrender/renderingmanager.cpp | 3 --- apps/openmw/mwrender/renderingmanager.hpp | 1 - 2 files changed, 4 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 2dc35d8c84..00b43cf9fe 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -46,9 +46,6 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mMwRoot->pitch(Degree(-90)); mObjects.setMwRoot(mMwRoot); mActors.setMwRoot(mMwRoot); - - //used to obtain ingame information of ogre objects (which are faced or selected) - mRaySceneQuery = mRendering.getScene()->createRayQuery(Ray()); Ogre::SceneNode *playerNode = mMwRoot->createChildSceneNode ("player"); playerNode->pitch(Degree(90)); diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 569447bca3..edbc9aff27 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -158,7 +158,6 @@ class RenderingManager: private RenderingInterface { /// that the OGRE coordinate system matches that used internally in /// Morrowind. Ogre::SceneNode *mMwRoot; - Ogre::RaySceneQuery *mRaySceneQuery; OEngine::Physic::PhysicEngine* mPhysicsEngine; From e5a19209a4a8580dba93ca9560617e7dccf2306b Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 00:05:48 +0200 Subject: [PATCH 205/488] remove the timeout stuff --- apps/openmw/mwrender/occlusionquery.cpp | 13 ++----------- apps/openmw/mwrender/occlusionquery.hpp | 4 ---- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 2c184c3451..228d8a4990 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -12,7 +12,7 @@ using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), mTestResult(false), - mQuerySingleObjectRequested(false), mResponding(true), mDelay(0), mWasVisible(false), mObjectWasVisible(false) + mQuerySingleObjectRequested(false), mWasVisible(false), mObjectWasVisible(false) { mRendering = renderer; mSunNode = sunNode; @@ -94,7 +94,7 @@ OcclusionQuery::~OcclusionQuery() bool OcclusionQuery::supported() { //if (!mResponding) std::cout << "Occlusion query timed out" << std::endl; - return mSupported && mResponding; + return mSupported; } void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass, const AutoParamDataSource* source, @@ -167,9 +167,6 @@ void OcclusionQuery::update(float duration) { if (!mSupported) return; - mDelay += duration; - if (mDelay >= 2) mResponding = false; - mWasVisible = false; mObjectWasVisible = false; @@ -189,9 +186,6 @@ void OcclusionQuery::update(float duration) if (!mSunTotalAreaQuery->isStillOutstanding() && !mSunVisibleAreaQuery->isStillOutstanding()) { - mDelay = 0; - mResponding = true; - unsigned int totalPixels; unsigned int visiblePixels; @@ -213,9 +207,6 @@ void OcclusionQuery::update(float duration) } if (mQuerySingleObjectStarted && !mSingleObjectQuery->isStillOutstanding()) { - mDelay = 0; - mResponding = true; - unsigned int result; mSingleObjectQuery->pullOcclusionQuery(&result); diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index b3e5442cfe..e81358eb6c 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -72,10 +72,6 @@ namespace MWRender bool mWasVisible; bool mObjectWasVisible; - bool mResponding; - - float mDelay; - bool mTestResult; bool mSupported; From 4488be33cef2182ca17a6bfac0f2b062181b9393 Mon Sep 17 00:00:00 2001 From: Pieter van der Kloet Date: Thu, 29 Mar 2012 00:12:34 +0200 Subject: [PATCH 206/488] Added missing slash to launcher CMakeLists.txt --- apps/launcher/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/launcher/CMakeLists.txt b/apps/launcher/CMakeLists.txt index fd736e0112..ccefee1ee8 100644 --- a/apps/launcher/CMakeLists.txt +++ b/apps/launcher/CMakeLists.txt @@ -95,5 +95,5 @@ else() "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/launcher.qss") configure_file(${CMAKE_SOURCE_DIR}/files/launcher.cfg - "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}launcher.cfg") + "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/launcher.cfg") endif() From 20f976ddc7aaa894aba85afc4d3776cc8cd8a874 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Thu, 29 Mar 2012 03:02:26 +0400 Subject: [PATCH 207/488] probably openal initialization fix --- apps/openmw/mwsound/openal_output.cpp | 37 ++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 5122b3a5a5..97a3996896 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -426,6 +426,12 @@ void OpenAL_Output::init(const std::string &devname) else std::cout << "Opened \""< attrs(size); +// alcGetIntegerv( mDevice, ALC_ALL_ATTRIBUTES, size, &attrs[0] ); +// for(int i=0; i(maxmono+maxstereo, 256); - for(size_t i = 0;i < maxtotal;i++) + ALCuint maxtotal = 256;//std::min(maxmono+maxstereo, 256); + bool stop = false; + for(size_t i = 0;i < maxtotal && !stop;i++) { ALuint src = 0; alGenSources(1, &src); - throwALerror(); - mFreeSources.push_back(src); + + ALenum err = alGetError(); + if(err != AL_NO_ERROR) + { + stop = true; + std::cout << "Stopping source generation at " << i << std::endl; + } + else + { + mFreeSources.push_back(src); + } + //throwALerror(); } } catch(std::exception &e) From 0d163d76ab2aca24a092f54a940132c17bf38679 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Thu, 29 Mar 2012 03:59:24 +0200 Subject: [PATCH 208/488] Replaced some messy code with some differently messy code, this one at least seems to work --- components/bsa/bsa_archive.cpp | 158 ++++++++++++++------------------- 1 file changed, 69 insertions(+), 89 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 80d92dd521..0ba93d4ad2 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -45,6 +45,32 @@ struct ciLessBoost : std::binary_function } }; +struct mrComparer +{ +private: + int m_start, m_size; + + bool comparePortion(std::string file1, std::string file2, int start, int size) const + { + for(int i = start; i < start+size; i++) + { + char one = tolower(file1.at(i)); + char two = tolower(file2.at(i)); + if(one != two) + return (one < two); + } + return true; + } + +public: + mrComparer(int start, int size) : m_start(start), m_size(size) { } + + bool operator() (const std::string& first, const std::string& other) + { + return comparePortion(first, other, m_start, m_size); + } +}; + static bool fsstrict = false; /// An OGRE Archive wrapping a BSAFile archive @@ -55,16 +81,46 @@ class DirArchive: public Ogre::FileSystemArchive std::map, ciLessBoost> m; unsigned int cutoff; - bool comparePortion(std::string file1, std::string file2, int start, int size) const + bool findFile(const String& filename, std::string& copy) const { - for(int i = start; i < start+size; i++) + copy = filename; + + std::replace(copy.begin(), copy.end(), '\\', '/'); + + if(copy.at(0) == '/') + copy.erase(0, 1); + + if(fsstrict == true) + return true; + + std::string folder; + int delimiter = 0; + size_t lastSlash = copy.rfind('/'); + if (lastSlash != std::string::npos) { - char one = file1.at(i); - char two = file2.at(i); - if(tolower(one) != tolower(two) ) - return false; + folder = copy.substr(0, lastSlash); + delimiter = lastSlash+1; } - return true; + + std::vector current; + { + std::map,ciLessBoost>::const_iterator found = m.find(folder); + if (found == m.end()) + { + std::replace(folder.begin(), folder.end(), '/', '\\'); + found = m.find(folder); + } + + current = found->second; + } + + mrComparer comp(delimiter, copy.size() - delimiter-1); + std::vector::iterator found = std::lower_bound(current.begin(), current.end(), copy, comp); + + if (found != current.end() && !(comp(copy, current.front()))) + return true; + + return false; } public: @@ -120,97 +176,21 @@ class DirArchive: public Ogre::FileSystemArchive void unload() {} bool exists(const String& filename) { - std::string copy = filename; - - - - for (unsigned int i = 0; i < filename.size(); i++) - { - if(copy.at(i) == '\\' ){ - copy.replace(i, 1, "/"); - } - } - - - if(copy.at(0) == '\\' || copy.at(0) == '/') - { - copy.erase(0, 1); - } - if(fsstrict == true) - { - //std::cout << "fsstrict " << copy << "\n"; + std::string copy; + + if (findFile(filename, copy)) return FileSystemArchive::exists(copy); - } - - - int last = copy.size() - 1; - int i = last; - - for (;last >= 0; i--) - { - if(copy.at(i) == '/' || copy.at(i) == '\\') - break; - } - - std::string folder = copy.substr(0, i); //folder with no slash - - std::vector& current = m[folder]; - - for(std::vector::iterator iter = current.begin(); iter != current.end(); iter++) - { - if(comparePortion(*iter, copy, i + 1, copy.size() - i -1) == true){ - return FileSystemArchive::exists(*iter); - } - } - return false; } DataStreamPtr open(const String& filename, bool readonly = true) const { - std::map, ciLessBoost> mlocal = m; - std::string copy = filename; + std::string copy; - - - for (unsigned int i = 0; i < filename.size(); i++) - { - if(copy.at(i) == '\\' ){ - copy.replace(i, 1, "/"); - } - } - - - if(copy.at(0) == '\\' || copy.at(0) == '/') - { - copy.erase(0, 1); - } - - if(fsstrict == true) - { + if (findFile(filename, copy)) return FileSystemArchive::open(copy, readonly); - } - - - int last = copy.size() - 1; - int i = last; - - for (;last >= 0; i--) - { - if(copy.at(i) == '/' || copy.at(i) == '\\') - break; - } - - std::string folder = copy.substr(0, i); //folder with no slash - std::vector current = mlocal[folder]; - - for(std::vector::iterator iter = current.begin(); iter != current.end(); iter++) - { - if(comparePortion(*iter, copy, i + 1, copy.size() - i -1) == true){ - return FileSystemArchive::open(*iter, readonly); - } - } + DataStreamPtr p; return p; } From 42c5d515e652e43757f6e0c2e12d25d24fae6066 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 04:50:40 +0200 Subject: [PATCH 209/488] fixed interior water level --- components/esm/loadcell.cpp | 3 +-- components/esm/loadcell.hpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/components/esm/loadcell.cpp b/components/esm/loadcell.cpp index 80a0f3e5a4..6bc12c5cb1 100644 --- a/components/esm/loadcell.cpp +++ b/components/esm/loadcell.cpp @@ -22,8 +22,7 @@ void Cell::load(ESMReader &esm) { // Interior cells - if (esm.isNextSub("INTV") || esm.isNextSub("WHGT")) - esm.getHT(water); + esm.getHNT(water, "WHGT", 4); // Quasi-exterior cells have a region (which determines the // weather), pure interior cells have ambient lighting diff --git a/components/esm/loadcell.hpp b/components/esm/loadcell.hpp index 671f702cab..57d495e947 100644 --- a/components/esm/loadcell.hpp +++ b/components/esm/loadcell.hpp @@ -114,7 +114,7 @@ struct Cell ESM_Context context; // File position DATAstruct data; AMBIstruct ambi; - int water; // Water level + float water; // Water level int mapColor; void load(ESMReader &esm); From 71cb85dbc48118f49fc987be053e751d2b7a43b6 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Thu, 29 Mar 2012 04:54:33 +0200 Subject: [PATCH 210/488] Performance enhancment and minor copy-paste fix. --- components/bsa/bsa_archive.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 0ba93d4ad2..3981780bcb 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -50,7 +50,7 @@ struct mrComparer private: int m_start, m_size; - bool comparePortion(std::string file1, std::string file2, int start, int size) const + bool comparePortion(const std::string& file1, const std::string& file2, int start, int size) const { for(int i = start; i < start+size; i++) { @@ -59,7 +59,7 @@ private: if(one != two) return (one < two); } - return true; + return false; } public: From 39b3afb98f3fd67da7183acdf64df71805893361 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 05:03:34 +0200 Subject: [PATCH 211/488] use camera height instead of player height for underwater check --- apps/openmw/mwrender/renderingmanager.cpp | 6 ++++-- apps/openmw/mwrender/renderingmanager.hpp | 2 +- apps/openmw/mwworld/world.cpp | 1 - 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 65665350f2..4e8118c02f 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -154,6 +154,8 @@ void RenderingManager::update (float duration){ mRendering.update(duration); mLocalMap->updatePlayer( mRendering.getCamera()->getRealPosition(), mRendering.getCamera()->getRealDirection() ); + + checkUnderwater(); } void RenderingManager::waterAdded (MWWorld::Ptr::CellStore *store){ if(store->cell->data.flags & store->cell->HasWater){ @@ -311,9 +313,9 @@ void RenderingManager::toggleLight() setAmbientMode(); } -void RenderingManager::checkUnderwater(float y){ +void RenderingManager::checkUnderwater(){ if(mWater){ - mWater->checkUnderwater(y); + mWater->checkUnderwater( mRendering.getCamera()->getRealPosition().y ); } } diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 12d9cb3e9a..8800707171 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -91,7 +91,7 @@ class RenderingManager: private RenderingInterface { void moveObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& position); void scaleObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& scale); void rotateObject (const MWWorld::Ptr& ptr, const::Ogre::Quaternion& orientation); - void checkUnderwater(float y); + void checkUnderwater(); /// \param store Cell the object was in previously (\a ptr has already been updated to the new cell). void moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Vector3& position, MWWorld::Ptr::CellStore *store); diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index f0b846c5aa..63d54ea92b 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -535,7 +535,6 @@ namespace MWWorld { //std::cout << "X:" << ptr.getRefData().getPosition().pos[0] << " Z: " << ptr.getRefData().getPosition().pos[1] << "\n"; - mRendering->checkUnderwater( ptr.getRefData().getPosition().pos[2]); Ptr::CellStore *currentCell = mWorldScene->getCurrentCell(); if (currentCell) { From f497813043cd62a96e2ac7c1180529ea6eba9c9b Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 15:49:24 +0200 Subject: [PATCH 212/488] formatting, added Water::setHeight --- apps/openmw/mwrender/renderingmanager.cpp | 6 + apps/openmw/mwrender/renderingmanager.hpp | 7 +- apps/openmw/mwrender/water.cpp | 152 +++++++++++----------- apps/openmw/mwrender/water.hpp | 2 +- apps/openmw/mwworld/world.cpp | 6 + apps/openmw/mwworld/world.hpp | 2 + 6 files changed, 91 insertions(+), 84 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 4e8118c02f..4b197205af 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -171,6 +171,12 @@ void RenderingManager::waterAdded (MWWorld::Ptr::CellStore *store){ } +void RenderingManager::setWaterHeight(const float height) +{ + if (mWater) + mWater->setHeight(height); +} + void RenderingManager::skyEnable () { if(mSkyManager) diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 8800707171..8a6a7aed1b 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -92,6 +92,7 @@ class RenderingManager: private RenderingInterface { void scaleObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& scale); void rotateObject (const MWWorld::Ptr& ptr, const::Ogre::Quaternion& orientation); void checkUnderwater(); + void setWaterHeight(const float height); /// \param store Cell the object was in previously (\a ptr has already been updated to the new cell). void moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Vector3& position, MWWorld::Ptr::CellStore *store); @@ -141,17 +142,13 @@ class RenderingManager: private RenderingInterface { SkyManager* mSkyManager; - Ogre::Camera* camera; - MWRender::Water *mWater; + MWRender::Water *mWater; - - OEngine::Render::OgreRenderer &mRendering; MWRender::Objects mObjects; MWRender::Actors mActors; - // 0 normal, 1 more bright, 2 max int mAmbientMode; diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 3075041577..c77a990066 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,92 +1,88 @@ #include "water.hpp" -namespace MWRender { - Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) { - try { - Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); - } catch(...) { +namespace MWRender +{ + Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) + { + try + { + Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + } catch(...) {} + + mTop = cell->water; + + mIsUnderwater = false; + + mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); + + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); + + + mWater = mSceneManager->createEntity("water"); + + mWater->setMaterialName("Examples/Water0"); + + mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); + mWaterNode->setPosition(0, mTop, 0); + + if(!(cell->data.flags & cell->Interior)) + { + mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); + } + mWaterNode->attachObject(mWater); } - mTop = cell->water; - - - mIsUnderwater = false; - //mCamera->addListener(this); - - mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); - - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); - - - mWater = mSceneManager->createEntity("water"); - - mWater->setMaterialName("Examples/Water0"); - - - - - mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); - mWaterNode->setPosition(0, mTop, 0); - - - if(!(cell->data.flags & cell->Interior)) - { - mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); - } - mWaterNode->attachObject(mWater); - - } - Water::~Water() { - Ogre::MeshManager::getSingleton().remove("water"); - - mWaterNode->detachObject(mWater); - mSceneManager->destroyEntity(mWater); - mSceneManager->destroySceneNode(mWaterNode); - - - Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); - } + Water::~Water() + { + Ogre::MeshManager::getSingleton().remove("water"); + + mWaterNode->detachObject(mWater); + mSceneManager->destroyEntity(mWater); + mSceneManager->destroySceneNode(mWaterNode); + + Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); + } + + void Water::changeCell(const ESM::Cell* cell) + { + mTop = cell->water; - void Water::changeCell(const ESM::Cell* cell){ - mTop = cell->water; - - - if(!(cell->data.flags & cell->Interior)) mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); else - mWaterNode->setPosition(0, mTop, 0); - } - - - - void Water::checkUnderwater(float y) { - - if (mIsUnderwater && y > mTop) { - try { - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); - } catch(...) { - } - mIsUnderwater = false; - } - - if (!mIsUnderwater && y < mTop) { - try { - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); - } catch(...) { - } - mIsUnderwater = true; + setHeight(mTop); + } + + void Water::setHeight(const float height) + { + mTop = height; + mWaterNode->setPosition(0, height, 0); } - } - - Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY){ - Ogre::Vector3 out = Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); - - return out; - } + void Water::checkUnderwater(float y) + { + if (mIsUnderwater && y > mTop) + { + try { + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + } catch(...) {} + mIsUnderwater = false; + } + if (!mIsUnderwater && y < mTop) + { + try { + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); + } catch(...) {} + mIsUnderwater = true; + } + } + + Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) + { + return Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); + } } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 48b0af9847..fc644e265c 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -35,7 +35,7 @@ namespace MWRender { void checkUnderwater(float y); void changeCell(const ESM::Cell* cell); - + void setHeight(const float height); }; } diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 63d54ea92b..c62e2e05d9 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -755,4 +755,10 @@ namespace MWWorld { return mRendering->getFader(); } + + void World::setWaterHeight(const float height) + { + mRendering->setWaterHeight(height); + } + } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 71cca3545d..5025fded4c 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -112,6 +112,8 @@ namespace MWWorld Ptr::CellStore *getExterior (int x, int y); Ptr::CellStore *getInterior (const std::string& name); + + void setWaterHeight(const float height); void adjustSky(); From 5a19d4ec45531f6d92238e323168868f18c243ae Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 15:50:15 +0200 Subject: [PATCH 213/488] implement water script functions and save water height in CellStore --- apps/openmw/mwscript/cellextensions.cpp | 57 +++++++++++++++++++++++++ apps/openmw/mwscript/docs/vmformat.txt | 5 ++- components/esm_store/cell_store.hpp | 7 ++- 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwscript/cellextensions.cpp b/apps/openmw/mwscript/cellextensions.cpp index bb52632032..dec9e96456 100644 --- a/apps/openmw/mwscript/cellextensions.cpp +++ b/apps/openmw/mwscript/cellextensions.cpp @@ -133,11 +133,62 @@ namespace MWScript } }; + class OpGetWaterLevel : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + InterpreterContext& context + = static_cast (runtime.getContext()); + + const ESM::Cell *cell = context.getWorld().getPlayer().getPlayer().getCell()->cell; + runtime.push (cell->water); + } + }; + + class OpSetWaterLevel : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + InterpreterContext& context + = static_cast (runtime.getContext()); + + Interpreter::Type_Float level = runtime[0].mFloat; + + MWWorld::Ptr::CellStore *cell = context.getWorld().getPlayer().getPlayer().getCell(); + cell->mWaterLevel = level; + context.getEnvironment().mWorld->setWaterHeight(cell->mWaterLevel); + } + }; + + class OpModWaterLevel : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + InterpreterContext& context + = static_cast (runtime.getContext()); + + Interpreter::Type_Float level = runtime[0].mFloat; + + MWWorld::Ptr::CellStore *cell = context.getWorld().getPlayer().getPlayer().getCell(); + cell->mWaterLevel +=level; + context.getEnvironment().mWorld->setWaterHeight(cell->mWaterLevel); + } + }; + const int opcodeCellChanged = 0x2000000; const int opcodeCOC = 0x2000026; const int opcodeCOE = 0x200008e; const int opcodeGetInterior = 0x2000131; const int opcodeGetPCCell = 0x2000136; + const int opcodeGetWaterLevel = 0x2000141; + const int opcodeSetWaterLevel = 0x2000142; + const int opcodeModWaterLevel = 0x2000143; void registerExtensions (Compiler::Extensions& extensions) { @@ -146,8 +197,11 @@ namespace MWScript extensions.registerInstruction ("centeroncell", "S", opcodeCOC); extensions.registerInstruction ("coe", "ll", opcodeCOE); extensions.registerInstruction ("centeronexterior", "ll", opcodeCOE); + extensions.registerInstruction ("setwaterlevel", "f", opcodeSetWaterLevel); + extensions.registerInstruction ("modwaterlevel", "f", opcodeModWaterLevel); extensions.registerFunction ("getinterior", 'l', "", opcodeGetInterior); extensions.registerFunction ("getpccell", 'l', "c", opcodeGetPCCell); + extensions.registerFunction ("getwaterlevel", 'f', "", opcodeGetWaterLevel); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -157,6 +211,9 @@ namespace MWScript interpreter.installSegment5 (opcodeCOE, new OpCOE); interpreter.installSegment5 (opcodeGetInterior, new OpGetInterior); interpreter.installSegment5 (opcodeGetPCCell, new OpGetPCCell); + interpreter.installSegment5 (opcodeGetWaterLevel, new OpGetWaterLevel); + interpreter.installSegment5 (opcodeSetWaterLevel, new OpSetWaterLevel); + interpreter.installSegment5 (opcodeModWaterLevel, new OpModWaterLevel); } } } diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index eab5bf846f..64bd43c6c7 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -123,4 +123,7 @@ op 0x200013d: FadeOut op 0x200013e: FadeTo op 0x200013f: GetCurrentWeather op 0x2000140: ChangeWeather -opcodes 0x2000141-0x3ffffff unused +op 0x2000141: GetWaterLevel +op 0x2000142: SetWaterLevel +op 0x2000143: ModWaterLevel +opcodes 0x2000142-0x3ffffff unused diff --git a/components/esm_store/cell_store.hpp b/components/esm_store/cell_store.hpp index c4bcf84d81..0244122916 100644 --- a/components/esm_store/cell_store.hpp +++ b/components/esm_store/cell_store.hpp @@ -95,12 +95,17 @@ namespace ESMS State_Unloaded, State_Preloaded, State_Loaded }; - CellStore (const ESM::Cell *cell_) : cell (cell_), mState (State_Unloaded) {} + CellStore (const ESM::Cell *cell_) : cell (cell_), mState (State_Unloaded) + { + mWaterLevel = cell->water; + } const ESM::Cell *cell; State mState; std::vector mIds; + float mWaterLevel; + // Lists for each individual object type CellRefList activators; CellRefList potions; From 2f096e131da6f7122ddfeaeda2348aea2b0aef78 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 16:23:02 +0200 Subject: [PATCH 214/488] throw exception if water level is attempted to be modified in exterior --- apps/openmw/mwscript/cellextensions.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apps/openmw/mwscript/cellextensions.cpp b/apps/openmw/mwscript/cellextensions.cpp index dec9e96456..155393f9e6 100644 --- a/apps/openmw/mwscript/cellextensions.cpp +++ b/apps/openmw/mwscript/cellextensions.cpp @@ -159,6 +159,10 @@ namespace MWScript Interpreter::Type_Float level = runtime[0].mFloat; MWWorld::Ptr::CellStore *cell = context.getWorld().getPlayer().getPlayer().getCell(); + + if (!(cell->cell->data.flags & ESM::Cell::Interior)) + throw std::runtime_error("Can't set water level in exterior cell"); + cell->mWaterLevel = level; context.getEnvironment().mWorld->setWaterHeight(cell->mWaterLevel); } @@ -176,6 +180,10 @@ namespace MWScript Interpreter::Type_Float level = runtime[0].mFloat; MWWorld::Ptr::CellStore *cell = context.getWorld().getPlayer().getPlayer().getCell(); + + if (!(cell->cell->data.flags & ESM::Cell::Interior)) + throw std::runtime_error("Can't set water level in exterior cell"); + cell->mWaterLevel +=level; context.getEnvironment().mWorld->setWaterHeight(cell->mWaterLevel); } From f45c6509756c77f0b33087338d80e3ef470e10b7 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 16:47:59 +0200 Subject: [PATCH 215/488] bounds fix --- apps/openmw/mwrender/objects.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 1c2873b4e7..906e7e0a30 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -98,6 +98,13 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) if (ptr.getTypeName().find("Door") != std::string::npos) small = false; + if (mBounds.find(ptr.getCell()) == mBounds.end()) + mBounds[ptr.getCell()] = Ogre::AxisAlignedBox::BOX_NULL; + + Ogre::AxisAlignedBox bounds = ent->getBoundingBox(); + bounds.scale(insert->getScale()); + mBounds[ptr.getCell()].merge(bounds); + if(!mIsStatic) { insert->attachObject(ent); @@ -142,10 +149,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) // - there will be too many batches. sg->setRegionDimensions(Ogre::Vector3(2500,2500,2500)); - mBounds[ptr.getCell()].merge(ent->getBoundingBox()); - sg->addEntity(ent,insert->_getDerivedPosition(),insert->_getDerivedOrientation(),insert->_getDerivedScale()); - mBounds[ptr.getCell()].merge(insert->_getDerivedPosition()); mRenderer.getScene()->destroyEntity(ent); } From 19c801f53870d7c75a1bafdff65edff840ce0b99 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 16:56:30 +0200 Subject: [PATCH 216/488] disabled rendering distance for now --- apps/openmw/mwrender/objects.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 906e7e0a30..5594d623e1 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -92,11 +92,14 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) extents *= insert->getScale(); float size = std::max(std::max(extents.x, extents.y), extents.z); +/* bool small = (size < 250); /// \todo config value // do not fade out doors. that will cause holes and look stupid if (ptr.getTypeName().find("Door") != std::string::npos) small = false; +*/ + const bool small = false; if (mBounds.find(ptr.getCell()) == mBounds.end()) mBounds[ptr.getCell()] = Ogre::AxisAlignedBox::BOX_NULL; From 37e6db69d83a82892be8463b36daea5926b131cc Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 17:07:59 +0200 Subject: [PATCH 217/488] fix --- apps/openmw/mwworld/world.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index a1d5824917..5c661b4a24 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -766,7 +766,7 @@ namespace MWWorld return Vector2(0, 1); } Ogre::SceneNode* node = ref->mData.getBaseNode(); - Vector3 dir = -node->_getDerivedOrientation().zAxis(); + Vector3 dir = node->_getDerivedOrientation().yAxis(); Vector2 d = Vector2(dir.x, dir.z); return d; } From e22ae7c84045700d3f0f5cad89a4139e039f3829 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 17:30:13 +0200 Subject: [PATCH 218/488] bounds fix (again) --- apps/openmw/mwrender/objects.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 5594d623e1..c8727c7c2e 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -88,11 +88,11 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) NifOgre::NIFLoader::load(mesh); Ogre::Entity *ent = mRenderer.getScene()->createEntity(mesh); +/* Ogre::Vector3 extents = ent->getBoundingBox().getSize(); extents *= insert->getScale(); float size = std::max(std::max(extents.x, extents.y), extents.z); -/* bool small = (size < 250); /// \todo config value // do not fade out doors. that will cause holes and look stupid @@ -105,6 +105,11 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) mBounds[ptr.getCell()] = Ogre::AxisAlignedBox::BOX_NULL; Ogre::AxisAlignedBox bounds = ent->getBoundingBox(); + bounds = Ogre::AxisAlignedBox( + insert->_getDerivedPosition() + bounds.getMinimum(), + insert->_getDerivedPosition() + bounds.getMaximum() + ); + bounds.scale(insert->getScale()); mBounds[ptr.getCell()].merge(bounds); From ce38876a74b09195d6d20dd82d49e944318b4080 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Thu, 29 Mar 2012 17:31:55 +0200 Subject: [PATCH 219/488] Oops, that could've crashed horribly --- components/bsa/bsa_archive.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 3981780bcb..9a325d1605 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -111,7 +111,8 @@ class DirArchive: public Ogre::FileSystemArchive found = m.find(folder); } - current = found->second; + if (found != m.end()) + current = found->second; } mrComparer comp(delimiter, copy.size() - delimiter-1); From 10b4c1d9046ff9e7ad0542709c25dc6bd6ef2827 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Thu, 29 Mar 2012 18:04:52 +0200 Subject: [PATCH 220/488] silenced a warning --- apps/openmw/mwrender/objects.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 5594d623e1..6b7956c3f2 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -90,7 +90,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) Ogre::Vector3 extents = ent->getBoundingBox().getSize(); extents *= insert->getScale(); - float size = std::max(std::max(extents.x, extents.y), extents.z); +// float size = std::max(std::max(extents.x, extents.y), extents.z); /* bool small = (size < 250); /// \todo config value @@ -143,7 +143,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) else sg = mStaticGeometry[ptr.getCell()]; } - + // This specifies the size of a single batch region. // If it is set too high: // - there will be problems choosing the correct lights @@ -246,7 +246,7 @@ void Objects::removeCell(MWWorld::Ptr::CellStore* store) mRenderer.getScene()->destroyStaticGeometry (sg); sg = 0; } - + if(mBounds.find(store) != mBounds.end()) mBounds.erase(store); } From 35f40b99adb5cd6b04499b5c78f8909eccad27a4 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 18:10:01 +0200 Subject: [PATCH 221/488] remove the bounding box hack, not needed because calculation is correct now --- apps/openmw/mwrender/localmap.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index ed218dc97d..2c0a4e76b9 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -65,9 +65,6 @@ void LocalMap::saveFogOfWar(MWWorld::Ptr::CellStore* cell) { Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); Vector2 max(mBounds.getMaximum().x, mBounds.getMaximum().z); - /// \todo why is this workaround needed? - min *= 1.3; - max *= 1.3; Vector2 length = max-min; // divide into segments @@ -108,10 +105,6 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell, Vector2 min(bounds.getMinimum().x, bounds.getMinimum().z); Vector2 max(bounds.getMaximum().x, bounds.getMaximum().z); - /// \todo why is this workaround needed? - min *= 1.3; - max *= 1.3; - Vector2 length = max-min; Vector2 center(bounds.getCenter().x, bounds.getCenter().z); @@ -243,7 +236,6 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& else { Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); - min *= 1.3; x = std::ceil((pos.x - min.x)/sSize)-1; y = std::ceil((pos.y - min.y)/sSize)-1; @@ -264,7 +256,6 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& else { Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); - min *= 1.3; u = (pos.x - min.x - sSize*x)/sSize; v = (pos.y - min.y - sSize*y)/sSize; From 01ecf3e0be726f028bd662f89c2b26177c169a3d Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 18:16:11 +0200 Subject: [PATCH 222/488] attempt at rotation (BROKEN) --- apps/openmw/mwrender/localmap.cpp | 16 +++++++++++++--- apps/openmw/mwrender/localmap.hpp | 2 ++ apps/openmw/mwworld/world.cpp | 4 ---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 2c0a4e76b9..47b8171a5e 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -2,6 +2,7 @@ #include "renderingmanager.hpp" #include "../mwworld/environment.hpp" +#include "../mwworld/world.hpp" #include "../mwgui/window_manager.hpp" #include @@ -14,12 +15,17 @@ LocalMap::LocalMap(OEngine::Render::OgreRenderer* rend, MWWorld::Environment* en { mRendering = rend; mEnvironment = env; - + + mCameraRotNode = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); + mCameraNode = mCameraRotNode->createChildSceneNode(); + mCellCamera = mRendering->getScene()->createCamera("CellCamera"); mCellCamera->setProjectionType(PT_ORTHOGRAPHIC); // look down -y const float sqrt0pt5 = 0.707106781; mCellCamera->setOrientation(Quaternion(sqrt0pt5, -sqrt0pt5, 0, 0)); + + mCameraNode->attachObject(mCellCamera); } LocalMap::~LocalMap() @@ -100,11 +106,15 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell, { mInterior = true; mBounds = bounds; - + Vector2 z(bounds.getMaximum().y, bounds.getMinimum().y); Vector2 min(bounds.getMinimum().x, bounds.getMinimum().z); Vector2 max(bounds.getMaximum().x, bounds.getMaximum().z); + const Vector2& north = mEnvironment->mWorld->getNorthVector(cell); + Radian angle(std::atan2(north.x, north.y)); + mCameraRotNode->setOrientation(Quaternion(Math::Cos(angle/2.f), 0, Math::Sin(angle/2.f), 0)); + Vector2 length = max-min; Vector2 center(bounds.getCenter().x, bounds.getCenter().z); @@ -141,7 +151,7 @@ void LocalMap::render(const float x, const float y, // make everything visible mRendering->getScene()->setAmbientLight(ColourValue(1,1,1)); - mCellCamera->setPosition(Vector3(x, zhigh+100000, y)); + mCameraNode->setPosition(Vector3(x, zhigh+100000, y)); //mCellCamera->setFarClipDistance( (zhigh-zlow) * 1.1 ); mCellCamera->setFarClipDistance(0); // infinite diff --git a/apps/openmw/mwrender/localmap.hpp b/apps/openmw/mwrender/localmap.hpp index efbccf8848..42603885a0 100644 --- a/apps/openmw/mwrender/localmap.hpp +++ b/apps/openmw/mwrender/localmap.hpp @@ -73,6 +73,8 @@ namespace MWRender static const int sSize = 8192; Ogre::Camera* mCellCamera; + Ogre::SceneNode* mCameraNode; + Ogre::SceneNode* mCameraRotNode; void render(const float x, const float y, const float zlow, const float zhigh, diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 5c661b4a24..24d055c35f 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -701,7 +701,6 @@ namespace MWWorld void World::update (float duration) { - getNorthVector(mWorldScene->getCurrentCell()); mWorldScene->update (duration); mWeatherManager->update (duration); @@ -761,10 +760,7 @@ namespace MWWorld ESMS::CellRefList statics = cell->statics; ESMS::LiveCellRef* ref = statics.find("northmarker"); if (!ref) - { - std::cout << "No north marker found." << std::endl; return Vector2(0, 1); - } Ogre::SceneNode* node = ref->mData.getBaseNode(); Vector3 dir = node->_getDerivedOrientation().yAxis(); Vector2 d = Vector2(dir.x, dir.z); From 79c2a2e465a13bbe3d0cdbbcfaaffa4358152175 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 18:33:08 +0200 Subject: [PATCH 223/488] implemented toggleWater (twa); formatting again --- apps/openmw/mwrender/renderingmanager.cpp | 17 ++- apps/openmw/mwrender/renderingmanager.hpp | 2 + apps/openmw/mwrender/water.cpp | 159 +++++++++++----------- apps/openmw/mwrender/water.hpp | 43 +++--- apps/openmw/mwscript/docs/vmformat.txt | 3 +- apps/openmw/mwscript/miscextensions.cpp | 17 +++ apps/openmw/mwworld/world.cpp | 5 + apps/openmw/mwworld/world.hpp | 1 + 8 files changed, 142 insertions(+), 105 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 4b197205af..7750481107 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -92,19 +92,26 @@ OEngine::Render::Fader* RenderingManager::getFader() return mRendering.getFader(); } -void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store){ - - mObjects.removeCell(store); +void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store) +{ + mObjects.removeCell(store); mActors.removeCell(store); - } -void RenderingManager::removeWater (){ + +void RenderingManager::removeWater () +{ if(mWater){ delete mWater; mWater = 0; } } +void RenderingManager::toggleWater() +{ + if (mWater) + mWater->toggle(); +} + void RenderingManager::cellAdded (MWWorld::Ptr::CellStore *store) { mObjects.buildStaticGeometry (*store); diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 8a6a7aed1b..7d66aa3504 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -91,8 +91,10 @@ class RenderingManager: private RenderingInterface { void moveObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& position); void scaleObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& scale); void rotateObject (const MWWorld::Ptr& ptr, const::Ogre::Quaternion& orientation); + void checkUnderwater(); void setWaterHeight(const float height); + void toggleWater(); /// \param store Cell the object was in previously (\a ptr has already been updated to the new cell). void moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Vector3& position, MWWorld::Ptr::CellStore *store); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index c77a990066..9de55e3a59 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -2,87 +2,94 @@ namespace MWRender { - Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) + +Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : + mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), + mIsUnderwater(false) +{ + try { - try - { - Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); + Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + } catch(...) {} + + mTop = cell->water; + + mIsUnderwater = false; + + mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); + + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); + + mWater = mSceneManager->createEntity("water"); + + mWater->setMaterialName("Examples/Water0"); + + mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); + mWaterNode->setPosition(0, mTop, 0); + + if(!(cell->data.flags & cell->Interior)) + { + mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); + } + mWaterNode->attachObject(mWater); +} + + +Water::~Water() +{ + Ogre::MeshManager::getSingleton().remove("water"); + + mWaterNode->detachObject(mWater); + mSceneManager->destroyEntity(mWater); + mSceneManager->destroySceneNode(mWaterNode); + + Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); +} + +void Water::changeCell(const ESM::Cell* cell) +{ + mTop = cell->water; + + if(!(cell->data.flags & cell->Interior)) + mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); + else + setHeight(mTop); +} + +void Water::setHeight(const float height) +{ + mTop = height; + mWaterNode->setPosition(0, height, 0); +} + +void Water::toggle() +{ + mWater->setVisible(!mWater->getVisible()); +} + +void Water::checkUnderwater(float y) +{ + if ((mIsUnderwater && y > mTop) || !mWater->isVisible()) + { + try { Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) {} - - mTop = cell->water; - mIsUnderwater = false; + } - mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); - - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); - - - mWater = mSceneManager->createEntity("water"); - - mWater->setMaterialName("Examples/Water0"); - - mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); - mWaterNode->setPosition(0, mTop, 0); - - if(!(cell->data.flags & cell->Interior)) - { - mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); - } - mWaterNode->attachObject(mWater); - } - - - Water::~Water() + if (!mIsUnderwater && y < mTop && mWater->isVisible()) { - Ogre::MeshManager::getSingleton().remove("water"); - - mWaterNode->detachObject(mWater); - mSceneManager->destroyEntity(mWater); - mSceneManager->destroySceneNode(mWaterNode); - - Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); - } - - void Water::changeCell(const ESM::Cell* cell) - { - mTop = cell->water; - - if(!(cell->data.flags & cell->Interior)) - mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); - else - setHeight(mTop); - } - - void Water::setHeight(const float height) - { - mTop = height; - mWaterNode->setPosition(0, height, 0); - } - - - void Water::checkUnderwater(float y) - { - if (mIsUnderwater && y > mTop) - { - try { - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); - } catch(...) {} - mIsUnderwater = false; - } - - if (!mIsUnderwater && y < mTop) - { - try { - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); - } catch(...) {} - mIsUnderwater = true; - } - } - - Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) - { - return Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); + try { + Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); + } catch(...) {} + mIsUnderwater = true; } } + +Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) +{ + return Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); +} + +} // namespace diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index fc644e265c..5a5d1cca09 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -7,37 +7,34 @@ namespace MWRender { /// Water rendering - class Water : Ogre::RenderTargetListener, Ogre::Camera::Listener { - static const int CELL_SIZE = 8192; - Ogre::Camera *mCamera; - Ogre::SceneManager *mSceneManager; - Ogre::Viewport *mViewport; + class Water : Ogre::RenderTargetListener, Ogre::Camera::Listener + { + static const int CELL_SIZE = 8192; + Ogre::Camera *mCamera; + Ogre::SceneManager *mSceneManager; + Ogre::Viewport *mViewport; - + Ogre::Plane mWaterPlane; + Ogre::SceneNode *mWaterNode; + Ogre::Entity *mWater; - Ogre::Plane mWaterPlane; - Ogre::SceneNode *mWaterNode; - Ogre::Entity *mWater; + bool mIsUnderwater; + int mTop; - Ogre::Vector3 mOldCameraPos; - bool mIsUnderwater; - int mTop; + Ogre::Vector3 getSceneNodeCoordinates(int gridX, int gridY); + public: + Water (Ogre::Camera *camera, const ESM::Cell* cell); + ~Water(); + void toggle(); - - Ogre::Vector3 getSceneNodeCoordinates(int gridX, int gridY); - - public: - - Water (Ogre::Camera *camera, const ESM::Cell* cell); - ~Water(); + void checkUnderwater(float y); + void changeCell(const ESM::Cell* cell); + void setHeight(const float height); - void checkUnderwater(float y); - void changeCell(const ESM::Cell* cell); - void setHeight(const float height); + }; - }; } #endif diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index 64bd43c6c7..7ff60a2035 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -126,4 +126,5 @@ op 0x2000140: ChangeWeather op 0x2000141: GetWaterLevel op 0x2000142: SetWaterLevel op 0x2000143: ModWaterLevel -opcodes 0x2000142-0x3ffffff unused +op 0x2000144: ToggleWater, twa +opcodes 0x2000145-0x3ffffff unused diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 5bfffd3a26..5109319ed0 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -175,6 +175,19 @@ namespace MWScript } }; + class OpToggleWater : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + InterpreterContext& context = + static_cast (runtime.getContext()); + + context.getWorld().toggleWater(); + } + }; + const int opcodeXBox = 0x200000c; const int opcodeOnActivate = 0x200000d; const int opcodeActivate = 0x2000075; @@ -187,6 +200,7 @@ namespace MWScript const int opcodeFadeIn = 0x200013c; const int opcodeFadeOut = 0x200013d; const int opcodeFadeTo = 0x200013e; + const int opcodeToggleWater = 0x2000144; void registerExtensions (Compiler::Extensions& extensions) { @@ -204,6 +218,8 @@ namespace MWScript extensions.registerInstruction ("fadein", "f", opcodeFadeIn); extensions.registerInstruction ("fadeout", "f", opcodeFadeOut); extensions.registerInstruction ("fadeto", "ff", opcodeFadeTo); + extensions.registerInstruction ("togglewater", "", opcodeToggleWater); + extensions.registerInstruction ("twa", "", opcodeToggleWater); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -220,6 +236,7 @@ namespace MWScript interpreter.installSegment5 (opcodeFadeIn, new OpFadeIn); interpreter.installSegment5 (opcodeFadeOut, new OpFadeOut); interpreter.installSegment5 (opcodeFadeTo, new OpFadeTo); + interpreter.installSegment5 (opcodeToggleWater, new OpToggleWater); } } } diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index c62e2e05d9..e6d44dd8cf 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -761,4 +761,9 @@ namespace MWWorld mRendering->setWaterHeight(height); } + void World::toggleWater() + { + mRendering->toggleWater(); + } + } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 5025fded4c..bfc33ae3df 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -114,6 +114,7 @@ namespace MWWorld Ptr::CellStore *getInterior (const std::string& name); void setWaterHeight(const float height); + void toggleWater(); void adjustSky(); From 0c2317ce9d7f9fb2877605301d53785dc3b472ac Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 19:20:09 +0200 Subject: [PATCH 224/488] player arrow works again --- apps/openmw/mwrender/localmap.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 47b8171a5e..ef21e26583 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -11,7 +11,8 @@ using namespace MWRender; using namespace Ogre; -LocalMap::LocalMap(OEngine::Render::OgreRenderer* rend, MWWorld::Environment* env) +LocalMap::LocalMap(OEngine::Render::OgreRenderer* rend, MWWorld::Environment* env) : + mInterior(false), mCellX(0), mCellY(0) { mRendering = rend; mEnvironment = env; @@ -93,6 +94,8 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell) { mInterior = false; + mCameraRotNode->setOrientation(Quaternion::IDENTITY); + std::string name = "Cell_"+coordStr(cell->cell->data.gridX, cell->cell->data.gridY); int x = cell->cell->data.gridX; @@ -235,7 +238,12 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& // retrieve the x,y grid coordinates the player is in int x,y; - Vector2 pos(position.x, position.z); + Vector3 _pos(position.x, 0, position.z); + _pos = mCameraRotNode->convertWorldToLocalPosition(_pos); + Vector2 pos(_pos.x, _pos.z); + + Vector3 playerdirection = mCameraRotNode->convertWorldToLocalPosition(direction); + if (!mInterior) { x = std::ceil(pos.x / sSize)-1; @@ -273,7 +281,7 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& texName = mInteriorName + "_" + coordStr(x,y); } mEnvironment->mWindowManager->setPlayerPos(u, v); - mEnvironment->mWindowManager->setPlayerDir(direction.x, -direction.z); + mEnvironment->mWindowManager->setPlayerDir(playerdirection.x, -playerdirection.z); // explore radius (squared) const float sqrExploreRadius = 0.01 * sFogOfWarResolution*sFogOfWarResolution; From 8d224f009fc34957572d4c8a3a8695936856197a Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 29 Mar 2012 19:45:19 +0200 Subject: [PATCH 225/488] toggleFogOfWar script command --- apps/openmw/mwgui/layouts.cpp | 35 ++++++++++++++++++++------ apps/openmw/mwgui/layouts.hpp | 5 ++++ apps/openmw/mwgui/window_manager.cpp | 6 +++++ apps/openmw/mwgui/window_manager.hpp | 2 ++ apps/openmw/mwrender/localmap.cpp | 1 - apps/openmw/mwscript/docs/vmformat.txt | 3 ++- apps/openmw/mwscript/guiextensions.cpp | 19 ++++++++++++++ 7 files changed, 62 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index de74214eef..223c072b7c 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -278,6 +278,7 @@ LocalMapBase::LocalMapBase() : mCurX(0) , mCurY(0) , mInterior(false) + , mFogOfWar(true) , mLocalMap(NULL) , mPrefix() , mChanged(true) @@ -297,6 +298,32 @@ void LocalMapBase::setCellPrefix(const std::string& prefix) mChanged = true; } +void LocalMapBase::toggleFogOfWar() +{ + mFogOfWar = !mFogOfWar; + applyFogOfWar(); +} + +void LocalMapBase::applyFogOfWar() +{ + for (int mx=0; mx<3; ++mx) + { + for (int my=0; my<3; ++my) + { + std::string name = "Map_" + boost::lexical_cast(mx) + "_" + + boost::lexical_cast(my); + std::string image = mPrefix+"_"+ boost::lexical_cast(mCurX + (mx-1)) + "_" + + boost::lexical_cast(mCurY + (mInterior ? (my-1) : -1*(my-1))); + MyGUI::ImageBox* fog; + mLayout->getWidget(fog, name+"_fog"); + fog->setImageTexture(mFogOfWar ? + ((MyGUI::RenderManager::getInstance().getTexture(image+"_fog") != 0) ? image+"_fog" + : "black.png" ) + : ""); + } + } +} + void LocalMapBase::setActiveCell(const int x, const int y, bool interior) { if (x==mCurX && y==mCurY && mInterior==interior && !mChanged) return; // don't do anything if we're still in the same cell @@ -312,23 +339,17 @@ void LocalMapBase::setActiveCell(const int x, const int y, bool interior) MyGUI::ImageBox* box; mLayout->getWidget(box, name); - MyGUI::ImageBox* fog; - mLayout->getWidget(fog, name+"_fog"); if (MyGUI::RenderManager::getInstance().getTexture(image) != 0) box->setImageTexture(image); else box->setImageTexture("black.png"); - - if (MyGUI::RenderManager::getInstance().getTexture(image+"_fog") != 0) - fog->setImageTexture(image+"_fog"); - else - fog->setImageTexture("black.png"); } } mInterior = interior; mCurX = x; mCurY = y; mChanged = false; + applyFogOfWar(); } diff --git a/apps/openmw/mwgui/layouts.hpp b/apps/openmw/mwgui/layouts.hpp index 614479ccce..6719e967cd 100644 --- a/apps/openmw/mwgui/layouts.hpp +++ b/apps/openmw/mwgui/layouts.hpp @@ -40,12 +40,17 @@ namespace MWGui void setCellPrefix(const std::string& prefix); void setActiveCell(const int x, const int y, bool interior=false); + void toggleFogOfWar(); + protected: int mCurX, mCurY; bool mInterior; MyGUI::ScrollView* mLocalMap; std::string mPrefix; bool mChanged; + bool mFogOfWar; + + void applyFogOfWar(); OEngine::GUI::Layout* mLayout; }; diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index a04e2dcb8b..e7aa7690fc 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -469,3 +469,9 @@ void WindowManager::setPlayerDir(const float x, const float y) map->setPlayerDir(x,y); hud->setPlayerDir(x,y); } + +void WindowManager::toggleFogOfWar() +{ + map->toggleFogOfWar(); + hud->toggleFogOfWar(); +} diff --git a/apps/openmw/mwgui/window_manager.hpp b/apps/openmw/mwgui/window_manager.hpp index 582f438e8f..204774f5fe 100644 --- a/apps/openmw/mwgui/window_manager.hpp +++ b/apps/openmw/mwgui/window_manager.hpp @@ -156,6 +156,8 @@ namespace MWGui void changeCell(MWWorld::Ptr::CellStore* cell); ///< change the active cell void setPlayerPos(const float x, const float y); ///< set player position in map space void setPlayerDir(const float x, const float y); ///< set player view direction in map space + + void toggleFogOfWar(); void setInteriorMapTexture(const int x, const int y); ///< set the index of the map texture that should be used (for interiors) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index ef21e26583..803899110c 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -269,7 +269,6 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& u = std::abs((pos.x - (sSize*x))/sSize); v = 1-std::abs((pos.y + (sSize*y))/sSize); texName = "Cell_"+coordStr(x,y); - } else { diff --git a/apps/openmw/mwscript/docs/vmformat.txt b/apps/openmw/mwscript/docs/vmformat.txt index eab5bf846f..d7e81531d9 100644 --- a/apps/openmw/mwscript/docs/vmformat.txt +++ b/apps/openmw/mwscript/docs/vmformat.txt @@ -123,4 +123,5 @@ op 0x200013d: FadeOut op 0x200013e: FadeTo op 0x200013f: GetCurrentWeather op 0x2000140: ChangeWeather -opcodes 0x2000141-0x3ffffff unused +op 0x2000145: ToggleFogOfWar (tfow) +opcodes 0x2000146-0x3ffffff unused diff --git a/apps/openmw/mwscript/guiextensions.cpp b/apps/openmw/mwscript/guiextensions.cpp index 484c0d3ab5..426378efca 100644 --- a/apps/openmw/mwscript/guiextensions.cpp +++ b/apps/openmw/mwscript/guiextensions.cpp @@ -67,6 +67,19 @@ namespace MWScript } }; + class OpToggleFogOfWar : public Interpreter::Opcode0 + { + public: + + virtual void execute (Interpreter::Runtime& runtime) + { + InterpreterContext& context = + static_cast (runtime.getContext()); + + context.getEnvironment().mWindowManager->toggleFogOfWar(); + } + }; + const int opcodeEnableBirthMenu = 0x200000e; const int opcodeEnableClassMenu = 0x200000f; const int opcodeEnableNameMenu = 0x2000010; @@ -79,6 +92,7 @@ namespace MWScript const int opcodeEnableRest = 0x2000017; const int opcodeShowRestMenu = 0x2000018; const int opcodeGetButtonPressed = 0x2000137; + const int opcodeToggleFogOfWar = 0x2000145; void registerExtensions (Compiler::Extensions& extensions) { @@ -100,6 +114,9 @@ namespace MWScript extensions.registerInstruction ("showrestmenu", "", opcodeShowRestMenu); extensions.registerFunction ("getbuttonpressed", 'l', "", opcodeGetButtonPressed); + + extensions.registerInstruction ("togglefogofwar", "", opcodeToggleFogOfWar); + extensions.registerInstruction ("tfow", "", opcodeToggleFogOfWar); } void installOpcodes (Interpreter::Interpreter& interpreter) @@ -135,6 +152,8 @@ namespace MWScript new OpShowDialogue (MWGui::GM_Rest)); interpreter.installSegment5 (opcodeGetButtonPressed, new OpGetButtonPressed); + + interpreter.installSegment5 (opcodeToggleFogOfWar, new OpToggleFogOfWar); } } } From 3d5384e2bb350d42f0331fa77f59e3d5c804bb97 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 29 Mar 2012 11:28:33 -0700 Subject: [PATCH 226/488] Remove some unneeded casts --- apps/openmw/mwsound/soundmanager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index ad9e47f729..f072e084db 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -108,7 +108,7 @@ namespace MWSound max = std::max(min, max); } - return std::string("Sound/")+snd->sound; + return "Sound/"+snd->sound; } @@ -182,7 +182,7 @@ namespace MWSound { // The range values are not tested float basevol = 1.0f; /* TODO: volume settings */ - std::string filePath = std::string("Sound/")+filename; + std::string filePath = "Sound/"+filename; const ESM::Position &pos = ptr.getCellRef().pos; SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, basevol, 1.0f, From c3944d3e1a48220d423849472eb5aebc746185ea Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Thu, 29 Mar 2012 21:27:37 +0200 Subject: [PATCH 227/488] Use a normal binary search --- components/bsa/bsa_archive.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 9a325d1605..a68e91df1e 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -116,12 +116,7 @@ class DirArchive: public Ogre::FileSystemArchive } mrComparer comp(delimiter, copy.size() - delimiter-1); - std::vector::iterator found = std::lower_bound(current.begin(), current.end(), copy, comp); - - if (found != current.end() && !(comp(copy, current.front()))) - return true; - - return false; + return std::binary_search(current.begin(), current.end(), copy, comp); } public: From 6acd900577639bc4d83d0a0fcc444f806ab4c2c7 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Thu, 29 Mar 2012 21:36:00 +0200 Subject: [PATCH 228/488] Better name --- components/bsa/bsa_archive.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index a68e91df1e..945aae0773 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -45,7 +45,7 @@ struct ciLessBoost : std::binary_function } }; -struct mrComparer +struct pathComparer { private: int m_start, m_size; @@ -63,7 +63,7 @@ private: } public: - mrComparer(int start, int size) : m_start(start), m_size(size) { } + pathComparer(int start, int size) : m_start(start), m_size(size) { } bool operator() (const std::string& first, const std::string& other) { @@ -115,7 +115,7 @@ class DirArchive: public Ogre::FileSystemArchive current = found->second; } - mrComparer comp(delimiter, copy.size() - delimiter-1); + pathComparer comp(delimiter, copy.size() - delimiter-1); return std::binary_search(current.begin(), current.end(), copy, comp); } From b6aa8925f49ae38958074549ea9722916ab6ebf8 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Fri, 30 Mar 2012 00:12:38 +0400 Subject: [PATCH 229/488] (Temporary) workaround for broken OpenAL implementations that doesn't return meaningful max counts of sources --- apps/openmw/mwsound/openal_output.cpp | 53 ++++++++++++--------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 97a3996896..0417596834 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -426,12 +426,6 @@ void OpenAL_Output::init(const std::string &devname) else std::cout << "Opened \""< attrs(size); -// alcGetIntegerv( mDevice, ALC_ALL_ATTRIBUTES, size, &attrs[0] ); -// for(int i=0; i(maxmono+maxstereo, 256); - bool stop = false; - for(size_t i = 0;i < maxtotal && !stop;i++) + ALCuint maxtotal = std::min(maxmono+maxstereo, 256); + if (maxtotal == 0) // workaround for broken implementations { - ALuint src = 0; - alGenSources(1, &src); - - ALenum err = alGetError(); - if(err != AL_NO_ERROR) + maxtotal = 256; + bool stop = false; + for(size_t i = 0;i < maxtotal && !stop;i++) // generate source until error returned { - stop = true; - std::cout << "Stopping source generation at " << i << std::endl; + ALuint src = 0; + alGenSources(1, &src); + ALenum err = alGetError(); + if(err != AL_NO_ERROR) + { + stop = true; + } + else + { + mFreeSources.push_back(src); + } } - else + } + else // normal case + { + for(size_t i = 0;i < maxtotal;i++) { + ALuint src = 0; + alGenSources(1, &src); + throwALerror(); mFreeSources.push_back(src); } - //throwALerror(); } } catch(std::exception &e) From 60b95e7992f04db17c2a50871e979e71c2ed29bd Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Thu, 29 Mar 2012 22:38:14 +0200 Subject: [PATCH 230/488] Sorting the file lists properly --- components/bsa/bsa_archive.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 945aae0773..64dc979803 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -155,6 +155,7 @@ class DirArchive: public Ogre::FileSystemArchive filesind.push_back(small); } } + std::sort(filesind.begin(), filesind.end(), ciLessBoost()); std::string small; std::string original = d.string(); if(cutoff < original.size()) From d5c49fa03648081f796f8cdbba4fefbf3e81c05e Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 30 Mar 2012 10:12:28 +0200 Subject: [PATCH 231/488] getWaterLevel use CellStore ; attempted fix for morrowind without tribunal --- apps/openmw/mwscript/cellextensions.cpp | 4 ++-- components/esm/loadcell.cpp | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwscript/cellextensions.cpp b/apps/openmw/mwscript/cellextensions.cpp index 155393f9e6..d69c42ab34 100644 --- a/apps/openmw/mwscript/cellextensions.cpp +++ b/apps/openmw/mwscript/cellextensions.cpp @@ -142,8 +142,8 @@ namespace MWScript InterpreterContext& context = static_cast (runtime.getContext()); - const ESM::Cell *cell = context.getWorld().getPlayer().getPlayer().getCell()->cell; - runtime.push (cell->water); + MWWorld::Ptr::CellStore *cell = context.getWorld().getPlayer().getPlayer().getCell(); + runtime.push (cell->mWaterLevel); } }; diff --git a/components/esm/loadcell.cpp b/components/esm/loadcell.cpp index 6bc12c5cb1..158cc08673 100644 --- a/components/esm/loadcell.cpp +++ b/components/esm/loadcell.cpp @@ -21,8 +21,14 @@ void Cell::load(ESMReader &esm) if (data.flags & Interior) { // Interior cells - - esm.getHNT(water, "WHGT", 4); + if (esm.isNextSub("INTV")) + { + int waterl; + esm.getHT(waterl); + water = (float) waterl; + } + else if (esm.isNextSub("WHGT")) + esm.getHT(water); // Quasi-exterior cells have a region (which determines the // weather), pure interior cells have ambient lighting From d3f31c349838cd26a6bcd0f0304d0715975760c6 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 30 Mar 2012 13:53:35 +0200 Subject: [PATCH 232/488] dialogue window enhancements --- apps/openmw/mwgui/dialogue.cpp | 6 ++---- files/mygui/openmw_dialogue_window_layout.xml | 17 ++++++----------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index d6c4ce4e57..ac6681e279 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -43,9 +43,6 @@ DialogueWindow::DialogueWindow(WindowManager& parWindowManager,MWWorld::Environm // Centre dialog center(); - //WindowManager *wm = environment.mWindowManager; - setText("NpcName", "Name of character"); - //History view getWidget(history, "History"); history->setOverflowToTheLeft(true); @@ -116,7 +113,8 @@ void DialogueWindow::onSelectTopic(MyGUI::ListBox* _sender, size_t _index) void DialogueWindow::startDialogue(std::string npcName) { - setText("NpcName", npcName); + static_cast(mMainWidget)->setCaption(npcName); + adjustWindowCaption(); } void DialogueWindow::setKeywords(std::list keyWords) diff --git a/files/mygui/openmw_dialogue_window_layout.xml b/files/mygui/openmw_dialogue_window_layout.xml index 11ac41cb32..29a3b511ec 100644 --- a/files/mygui/openmw_dialogue_window_layout.xml +++ b/files/mygui/openmw_dialogue_window_layout.xml @@ -1,34 +1,29 @@ - - - - - - + - + - + - - + - + From 4bbedeb3e7b684d1c0023177fb9eb87d5589fd4c Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 30 Mar 2012 14:01:43 +0200 Subject: [PATCH 233/488] made all dialogs semi transparent (like in morrowind) --- apps/openmw/mwgui/window_manager.cpp | 1 - files/mygui/openmw_windows.skin.xml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index a04e2dcb8b..4654674695 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -371,7 +371,6 @@ void WindowManager::updateSkillArea() void WindowManager::removeDialog(OEngine::GUI::Layout*dialog) { - std::cout << "dialogue a la poubelle"; assert(dialog); if (!dialog) return; diff --git a/files/mygui/openmw_windows.skin.xml b/files/mygui/openmw_windows.skin.xml index a986dcffc8..3ee33124ca 100644 --- a/files/mygui/openmw_windows.skin.xml +++ b/files/mygui/openmw_windows.skin.xml @@ -294,7 +294,7 @@ - + From 4a9a416d46bb0bd7f2b92615dbde3b81b4975745 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Fri, 30 Mar 2012 14:45:32 +0200 Subject: [PATCH 234/488] Can find files even if no .bsa file exists now --- apps/openmw/engine.cpp | 9 +++++++-- components/bsa/bsa_archive.cpp | 20 +++++++++++++++++++- components/files/collections.cpp | 5 +++++ components/files/collections.hpp | 2 ++ components/nifogre/ogre_nif_loader.cpp | 2 +- 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 5e49ae2f72..9903561911 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -204,13 +204,18 @@ OMW::Engine::~Engine() void OMW::Engine::loadBSA() { const Files::MultiDirCollection& bsa = mFileCollections.getCollection (".bsa"); - std::string dataDirectory; + for (Files::MultiDirCollection::TIter iter(bsa.begin()); iter!=bsa.end(); ++iter) { std::cout << "Adding " << iter->second.string() << std::endl; Bsa::addBSA(iter->second.string()); + } - dataDirectory = iter->second.parent_path().string(); + const Files::PathContainer& dataDirs = mFileCollections.getPaths(); + std::string dataDirectory; + for (Files::PathContainer::const_iterator iter = dataDirs.begin(); iter != dataDirs.end(); ++iter) + { + dataDirectory = iter->string(); std::cout << "Data dir " << dataDirectory << std::endl; Bsa::addDir(dataDirectory, mFSStrict); } diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 64dc979803..36f4b423ce 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -52,8 +52,15 @@ private: bool comparePortion(const std::string& file1, const std::string& file2, int start, int size) const { + return lexicographical_compare(file1.substr(start,size), file2.substr(start,size), boost::algorithm::is_iless()); + for(int i = start; i < start+size; i++) { + if (i >= file1.size()) + return true; + else if (i >= file2.size()) + return false; + char one = tolower(file1.at(i)); char two = tolower(file2.at(i)); if(one != two) @@ -83,7 +90,18 @@ class DirArchive: public Ogre::FileSystemArchive bool findFile(const String& filename, std::string& copy) const { - copy = filename; + { + String passed = filename; + if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' + || filename.at(filename.length() - 1) == '"' || filename.at(filename.length() - 1) == '>' || filename.at(filename.length() - 1) == ':' + || filename.at(filename.length() - 1) == '|') + { + passed = filename.substr(0, filename.length() - 2); + } + if(filename.at(filename.length() - 2) == '>') + passed = filename.substr(0, filename.length() - 6); + copy = passed; + } std::replace(copy.begin(), copy.end(), '\\', '/'); diff --git a/components/files/collections.cpp b/components/files/collections.cpp index 424b558e60..50340dca4d 100644 --- a/components/files/collections.cpp +++ b/components/files/collections.cpp @@ -30,4 +30,9 @@ namespace Files return iter->second; } + + const Files::PathContainer& Collections::getPaths() const + { + return mDirectories; + } } diff --git a/components/files/collections.hpp b/components/files/collections.hpp index 1ddca9a5b7..70aaec55e3 100644 --- a/components/files/collections.hpp +++ b/components/files/collections.hpp @@ -21,6 +21,8 @@ namespace Files /// leading dot and must be all lower-case. const MultiDirCollection& getCollection(const std::string& extension) const; + const Files::PathContainer& getPaths() const; + private: typedef std::map MultiDirCollectionContainer; Files::PathContainer mDirectories; diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index f943231d0d..2ab6ae6211 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -1368,7 +1368,7 @@ void NIFLoader::loadResource(Resource *resource) if (!vfs->isFile(resourceName)) { - warn("File not found."); + warn("File "+resourceName+" not found."); return; } From d2f8539a4283bfd10c5a2639a64558d763adfd11 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Fri, 30 Mar 2012 14:50:39 +0200 Subject: [PATCH 235/488] Forgot to remove some old code that didn't do anything --- components/bsa/bsa_archive.cpp | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 36f4b423ce..eb392757b8 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -50,31 +50,12 @@ struct pathComparer private: int m_start, m_size; - bool comparePortion(const std::string& file1, const std::string& file2, int start, int size) const - { - return lexicographical_compare(file1.substr(start,size), file2.substr(start,size), boost::algorithm::is_iless()); - - for(int i = start; i < start+size; i++) - { - if (i >= file1.size()) - return true; - else if (i >= file2.size()) - return false; - - char one = tolower(file1.at(i)); - char two = tolower(file2.at(i)); - if(one != two) - return (one < two); - } - return false; - } - public: pathComparer(int start, int size) : m_start(start), m_size(size) { } bool operator() (const std::string& first, const std::string& other) { - return comparePortion(first, other, m_start, m_size); + return lexicographical_compare(first.substr(m_start,m_size), other.substr(m_start,m_size), boost::algorithm::is_iless()); } }; From de102cd27465c22f32a6e16277c45a850d13e34d Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2012 06:28:40 -0700 Subject: [PATCH 236/488] Simplify broken OpenAL workaround --- apps/openmw/mwsound/openal_output.cpp | 30 +++++---------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 0417596834..13ea49481d 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -442,33 +442,13 @@ void OpenAL_Output::init(const std::string &devname) { ALCuint maxtotal = std::min(maxmono+maxstereo, 256); if (maxtotal == 0) // workaround for broken implementations - { maxtotal = 256; - bool stop = false; - for(size_t i = 0;i < maxtotal && !stop;i++) // generate source until error returned - { - ALuint src = 0; - alGenSources(1, &src); - ALenum err = alGetError(); - if(err != AL_NO_ERROR) - { - stop = true; - } - else - { - mFreeSources.push_back(src); - } - } - } - else // normal case + for(size_t i = 0;i < maxtotal;i++) { - for(size_t i = 0;i < maxtotal;i++) - { - ALuint src = 0; - alGenSources(1, &src); - throwALerror(); - mFreeSources.push_back(src); - } + ALuint src = 0; + alGenSources(1, &src); + throwALerror(); + mFreeSources.push_back(src); } } catch(std::exception &e) From 71d9d7e94331df0ab05709cb00230b23fb836357 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2012 06:41:06 -0700 Subject: [PATCH 237/488] Store the current sound position with the Sound object --- apps/openmw/mwsound/sound.hpp | 6 +++++- apps/openmw/mwsound/soundmanager.cpp | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 2cbd48d961..f1b09875cd 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -1,6 +1,8 @@ #ifndef GAME_SOUND_SOUND_H #define GAME_SOUND_SOUND_H +#include + namespace MWSound { class Sound @@ -11,6 +13,7 @@ namespace MWSound Sound(const Sound &rhs); protected: + Ogre::Vector3 mPos; float mVolume; /* NOTE: Real volume = mVolume*mBaseVolume */ float mBaseVolume; float mMinDistance; @@ -21,7 +24,8 @@ namespace MWSound virtual bool isPlaying() = 0; virtual void setVolume(float volume) = 0; - Sound() : mVolume(1.0f) + Sound() : mPos(0.0f, 0.0f, 0.0f) + , mVolume(1.0f) , mBaseVolume(1.0f) , mMinDistance(20.0f) /* 1 * min_range_scale */ , mMaxDistance(12750.0f) /* 255 * max_range_scale */ diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index f072e084db..d2e52043ab 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -187,6 +187,7 @@ namespace MWSound SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, basevol, 1.0f, 20.0f, 12750.0f, false); + sound->mPos = Ogre::Vector3(pos.pos[0], pos.pos[1], pos.pos[2]); sound->mBaseVolume = basevol; mActiveSounds[sound] = std::make_pair(ptr, std::string("_say_sound")); @@ -241,6 +242,7 @@ namespace MWSound const ESM::Position &pos = ptr.getCellRef().pos; sound = mOutput->playSound3D(file, pos.pos, volume*basevol, pitch, min, max, loop); + sound->mPos = Ogre::Vector3(pos.pos[0], pos.pos[1], pos.pos[2]); sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; @@ -330,7 +332,10 @@ namespace MWSound while(snditer != mActiveSounds.end()) { if(snditer->second.first == ptr) + { snditer->first->update(pos.pos); + snditer->first->mPos = Ogre::Vector3(pos.pos[0], pos.pos[1], pos.pos[2]); + } snditer++; } } From 557e97bab4872cca91e2770e80f5c4491b7bb75e Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 30 Mar 2012 15:52:09 +0200 Subject: [PATCH 238/488] fixed a terrain-related Redemption crash --- apps/openmw/mwrender/terrain.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index ac60e63238..8877215653 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -14,7 +14,7 @@ namespace MWRender { //---------------------------------------------------------------------------------------------- - + TerrainManager::TerrainManager(Ogre::SceneManager* mgr, const MWWorld::Environment& evn) : mEnvironment(evn), mTerrainGroup(TerrainGroup(mgr, Terrain::ALIGN_X_Z, mLandSize, mWorldSize)) { @@ -42,7 +42,7 @@ namespace MWRender //due to the sudden flick between composite and non composite textures, //this seemed the distance where it wasn't too noticeable mTerrainGlobals.setCompositeMapDistance(mWorldSize*2); - + mActiveProfile->setLightmapEnabled(false); mActiveProfile->setLayerSpecularMappingEnabled(false); mActiveProfile->setLayerNormalMappingEnabled(false); @@ -73,16 +73,16 @@ namespace MWRender TerrainManager::~TerrainManager() { } - + //---------------------------------------------------------------------------------------------- - + void TerrainManager::setDiffuse(const ColourValue& diffuse) { mTerrainGlobals.setCompositeMapDiffuse(diffuse); } - + //---------------------------------------------------------------------------------------------- - + void TerrainManager::setAmbient(const ColourValue& ambient) { mTerrainGlobals.setCompositeMapAmbient(ambient); @@ -160,7 +160,7 @@ namespace MWRender numTextures, indexes); - if ( land->landData->usingColours ) + if ( land && land->landData->usingColours ) { // disable or enable global colour map (depends on available vertex colours) mActiveProfile->setGlobalColourMapEnabled(true); @@ -253,7 +253,7 @@ namespace MWRender assert( (int)mEnvironment.mWorld->getStore().landTexts.getSize() >= (int)ltexIndex - 1 && "LAND.VTEX must be within the bounds of the LTEX array"); - + std::string texture; if ( ltexIndex == 0 ) { @@ -359,7 +359,7 @@ namespace MWRender } else { - //this provides a transition shading but also + //this provides a transition shading but also //rounds off the corners slightly pBlend[index] = std::min(1.0f, pBlend[index] + 0.5f); } @@ -458,10 +458,10 @@ namespace MWRender TEX_TYPE_2D, size, size, 0, PF_BYTE_BGR); HardwarePixelBufferSharedPtr pixelBuffer = tex->getBuffer(); - + pixelBuffer->lock(HardwareBuffer::HBL_DISCARD); const PixelBox& pixelBox = pixelBuffer->getCurrentLock(); - + uint8* pDest = static_cast(pixelBox.data); if ( land != NULL ) @@ -501,7 +501,7 @@ namespace MWRender } } } - + pixelBuffer->unlock(); return tex; From 479df78ea185bd56b8fe4f214beb1c1a8bc034cd Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2012 07:01:37 -0700 Subject: [PATCH 239/488] Update the actual sound position after the listener --- apps/openmw/mwsound/openal_output.cpp | 12 ++++++------ apps/openmw/mwsound/sound.hpp | 2 +- apps/openmw/mwsound/soundmanager.cpp | 9 +++++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 13ea49481d..ad0f7603ba 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -90,7 +90,7 @@ public: virtual void stop(); virtual bool isPlaying(); virtual void setVolume(float volume); - virtual void update(const float *pos); + virtual void update(); void play(); bool process(); @@ -262,9 +262,9 @@ void OpenAL_SoundStream::setVolume(float volume) mVolume = volume; } -void OpenAL_SoundStream::update(const float *pos) +void OpenAL_SoundStream::update() { - alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); throwALerror(); @@ -340,7 +340,7 @@ public: virtual void stop(); virtual bool isPlaying(); virtual void setVolume(float volume); - virtual void update(const float *pos); + virtual void update(); }; OpenAL_Sound::OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf) @@ -379,9 +379,9 @@ void OpenAL_Sound::setVolume(float volume) mVolume = volume; } -void OpenAL_Sound::update(const float *pos) +void OpenAL_Sound::update() { - alSource3f(mSource, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); throwALerror(); diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index f1b09875cd..521d8dbca6 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -7,7 +7,7 @@ namespace MWSound { class Sound { - virtual void update(const float *pos) = 0; + virtual void update() = 0; Sound& operator=(const Sound &rhs); Sound(const Sound &rhs); diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index d2e52043ab..da7cb9d3b3 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -328,14 +328,12 @@ namespace MWSound void SoundManager::updateObject(MWWorld::Ptr ptr) { const ESM::Position &pos = ptr.getCellRef().pos; + const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); SoundMap::iterator snditer = mActiveSounds.begin(); while(snditer != mActiveSounds.end()) { if(snditer->second.first == ptr) - { - snditer->first->update(pos.pos); - snditer->first->mPos = Ogre::Vector3(pos.pos[0], pos.pos[1], pos.pos[2]); - } + snditer->first->mPos = objpos; snditer++; } } @@ -428,7 +426,10 @@ namespace MWSound if(!snditer->first->isPlaying()) mActiveSounds.erase(snditer++); else + { + snditer->first->update(); snditer++; + } } } From a4576f043d110479a236f1c91659298582839c11 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 30 Mar 2012 16:02:41 +0200 Subject: [PATCH 240/488] fixed the physics debug rendering now activates/deactivates properly --- apps/openmw/mwrender/debugging.cpp | 6 +----- libs/openengine/bullet/physic.cpp | 10 +++++++++- libs/openengine/bullet/physic.hpp | 3 +++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index 60b299acd1..4221852730 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -27,11 +27,7 @@ bool Debugging::toggleRenderMode (int mode){ switch (mode) { case MWWorld::World::Render_CollisionDebug: - - // TODO use a proper function instead of accessing the member variable - // directly. - eng->setDebugRenderingMode (!eng->isDebugCreated); - return eng->isDebugCreated; + return eng->toggleDebugRendering(); } return false; diff --git a/libs/openengine/bullet/physic.cpp b/libs/openengine/bullet/physic.cpp index 8b9f3dfecb..cc1f907a01 100644 --- a/libs/openengine/bullet/physic.cpp +++ b/libs/openengine/bullet/physic.cpp @@ -151,7 +151,8 @@ namespace Physic - PhysicEngine::PhysicEngine(BulletShapeLoader* shapeLoader) + PhysicEngine::PhysicEngine(BulletShapeLoader* shapeLoader) : + mDebugActive(0) { // Set up the collision configuration and dispatcher collisionConfiguration = new btDefaultCollisionConfiguration(); @@ -203,6 +204,13 @@ namespace Physic createDebugRendering(); } mDebugDrawer->setDebugMode(mode); + mDebugActive = mode; + } + + bool PhysicEngine::toggleDebugRendering() + { + setDebugRenderingMode(!mDebugActive); + return mDebugActive; } PhysicEngine::~PhysicEngine() diff --git a/libs/openengine/bullet/physic.hpp b/libs/openengine/bullet/physic.hpp index 57ffe91305..16dac96f4c 100644 --- a/libs/openengine/bullet/physic.hpp +++ b/libs/openengine/bullet/physic.hpp @@ -199,6 +199,8 @@ namespace Physic */ void setDebugRenderingMode(int mode); + bool toggleDebugRendering(); + /** * Return the closest object hit by a ray. If there are no objects, it will return ("",-1). */ @@ -230,6 +232,7 @@ namespace Physic //debug rendering BtOgre::DebugDrawer* mDebugDrawer; bool isDebugCreated; + bool mDebugActive; }; }} From fad27d99e66c6892f6e09d03691246ce833b3346 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2012 07:10:34 -0700 Subject: [PATCH 241/488] Update the actual sound volume with the position --- apps/openmw/mwsound/openal_output.cpp | 18 ++---------------- apps/openmw/mwsound/sound.hpp | 2 +- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index ad0f7603ba..d8945cf52b 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -89,7 +89,6 @@ public: virtual void stop(); virtual bool isPlaying(); - virtual void setVolume(float volume); virtual void update(); void play(); @@ -255,15 +254,9 @@ bool OpenAL_SoundStream::isPlaying() return !mIsFinished; } -void OpenAL_SoundStream::setVolume(float volume) -{ - alSourcef(mSource, AL_GAIN, volume*mBaseVolume); - throwALerror(); - mVolume = volume; -} - void OpenAL_SoundStream::update() { + alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -339,7 +332,6 @@ public: virtual void stop(); virtual bool isPlaying(); - virtual void setVolume(float volume); virtual void update(); }; @@ -372,15 +364,9 @@ bool OpenAL_Sound::isPlaying() return state==AL_PLAYING; } -void OpenAL_Sound::setVolume(float volume) -{ - alSourcef(mSource, AL_GAIN, volume*mBaseVolume); - throwALerror(); - mVolume = volume; -} - void OpenAL_Sound::update() { + alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index 521d8dbca6..d2c2d52091 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -22,7 +22,7 @@ namespace MWSound public: virtual void stop() = 0; virtual bool isPlaying() = 0; - virtual void setVolume(float volume) = 0; + void setVolume(float volume) { mVolume = volume; } Sound() : mPos(0.0f, 0.0f, 0.0f) , mVolume(1.0f) From d717b7b9dd3a73631a811bd243983bbd63860f7b Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 30 Mar 2012 16:18:58 +0200 Subject: [PATCH 242/488] factored out actor related game mechanics code into a separate class --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwmechanics/actors.cpp | 44 +++++++++++++++++++ apps/openmw/mwmechanics/actors.hpp | 45 ++++++++++++++++++++ apps/openmw/mwmechanics/mechanicsmanager.cpp | 26 +++-------- apps/openmw/mwmechanics/mechanicsmanager.hpp | 4 +- 5 files changed, 97 insertions(+), 24 deletions(-) create mode 100644 apps/openmw/mwmechanics/actors.cpp create mode 100644 apps/openmw/mwmechanics/actors.hpp diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 2d49a414c4..e16bd181d0 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -54,7 +54,7 @@ add_openmw_dir (mwclass ) add_openmw_dir (mwmechanics - mechanicsmanager stat creaturestats magiceffects movement + mechanicsmanager stat creaturestats magiceffects movement actors ) # Main executable diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp new file mode 100644 index 0000000000..e4fba8a9c4 --- /dev/null +++ b/apps/openmw/mwmechanics/actors.cpp @@ -0,0 +1,44 @@ + +#include "actors.hpp" + +#include "../mwworld/class.hpp" + +namespace MWMechanics +{ + Actors::Actors (MWWorld::Environment& environment) : mEnvironment (environment) {} + + void Actors::addActor (const MWWorld::Ptr& ptr) + { + mActors.insert (ptr); + } + + void Actors::removeActor (const MWWorld::Ptr& ptr) + { + mActors.erase (ptr); + } + + void Actors::dropActors (const MWWorld::Ptr::CellStore *cellStore) + { + std::set::iterator iter = mActors.begin(); + + while (iter!=mActors.end()) + if (iter->getCell()==cellStore) + { + mActors.erase (iter++); + } + else + ++iter; + } + + void Actors::update (std::vector >& movement) + { + for (std::set::iterator iter (mActors.begin()); iter!=mActors.end(); + ++iter) + { + Ogre::Vector3 vector = MWWorld::Class::get (*iter).getMovementVector (*iter); + + if (vector!=Ogre::Vector3::ZERO) + movement.push_back (std::make_pair (iter->getRefData().getHandle(), vector)); + } + } +} diff --git a/apps/openmw/mwmechanics/actors.hpp b/apps/openmw/mwmechanics/actors.hpp new file mode 100644 index 0000000000..d3a3724726 --- /dev/null +++ b/apps/openmw/mwmechanics/actors.hpp @@ -0,0 +1,45 @@ +#ifndef GAME_MWMECHANICS_ACTORS_H +#define GAME_MWMECHANICS_ACTORS_H + +#include +#include +#include + +#include "../mwworld/ptr.hpp" + +namespace Ogre +{ + class Vector3; +} + +namespace MWWorld +{ + class Environment; +} + +namespace MWMechanics +{ + class Actors + { + MWWorld::Environment& mEnvironment; + std::set mActors; + + public: + + Actors (MWWorld::Environment& environment); + + void addActor (const MWWorld::Ptr& ptr); + ///< Register an actor for stats management + + void removeActor (const MWWorld::Ptr& ptr); + ///< Deregister an actor for stats management + + void dropActors (const MWWorld::Ptr::CellStore *cellStore); + ///< Deregister all actors in the given cell. + + void update (std::vector >& movement); + ///< Update actor stats and store desired velocity vectors in \a movement + }; +} + +#endif diff --git a/apps/openmw/mwmechanics/mechanicsmanager.cpp b/apps/openmw/mwmechanics/mechanicsmanager.cpp index 7ed81f7850..f669ea65ce 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.cpp @@ -222,14 +222,14 @@ namespace MWMechanics MechanicsManager::MechanicsManager (MWWorld::Environment& environment) : mEnvironment (environment), mUpdatePlayer (true), mClassSelected (false), - mRaceSelected (false) + mRaceSelected (false), mActors (environment) { buildPlayer(); } void MechanicsManager::addActor (const MWWorld::Ptr& ptr) { - mActors.insert (ptr); + mActors.addActor (ptr); } void MechanicsManager::removeActor (const MWWorld::Ptr& ptr) @@ -237,7 +237,7 @@ namespace MWMechanics if (ptr==mWatched) mWatched = MWWorld::Ptr(); - mActors.erase (ptr); + mActors.removeActor (ptr); } void MechanicsManager::dropActors (const MWWorld::Ptr::CellStore *cellStore) @@ -245,16 +245,7 @@ namespace MWMechanics if (!mWatched.isEmpty() && mWatched.getCell()==cellStore) mWatched = MWWorld::Ptr(); - std::set::iterator iter = mActors.begin(); - - while (iter!=mActors.end()) - if (iter->getCell()==cellStore) - { - //std::cout << "Erasing an actor"; - mActors.erase (iter++); - } - else - ++iter; + mActors.dropActors (cellStore); } void MechanicsManager::watchActor (const MWWorld::Ptr& ptr) @@ -345,14 +336,7 @@ namespace MWMechanics mEnvironment.mWindowManager->configureSkills (majorSkills, minorSkills); } - for (std::set::iterator iter (mActors.begin()); iter!=mActors.end(); - ++iter) - { - Ogre::Vector3 vector = MWWorld::Class::get (*iter).getMovementVector (*iter); - - if (vector!=Ogre::Vector3::ZERO) - movement.push_back (std::make_pair (iter->getRefData().getHandle(), vector)); - } + mActors.update (movement); } void MechanicsManager::setPlayerName (const std::string& name) diff --git a/apps/openmw/mwmechanics/mechanicsmanager.hpp b/apps/openmw/mwmechanics/mechanicsmanager.hpp index 2e2192638f..bf0a6215a1 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.hpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.hpp @@ -1,7 +1,6 @@ #ifndef GAME_MWMECHANICS_MECHANICSMANAGER_H #define GAME_MWMECHANICS_MECHANICSMANAGER_H -#include #include #include @@ -9,6 +8,7 @@ #include "creaturestats.hpp" #include "npcstats.hpp" +#include "actors.hpp" namespace Ogre { @@ -25,13 +25,13 @@ namespace MWMechanics class MechanicsManager { MWWorld::Environment& mEnvironment; - std::set mActors; MWWorld::Ptr mWatched; CreatureStats mWatchedCreature; NpcStats mWatchedNpc; bool mUpdatePlayer; bool mClassSelected; bool mRaceSelected; + Actors mActors; void buildPlayer(); ///< build player according to stored class/race/birthsign information. Will From 1ee8b963d06a17f58f4d28fac02ac3fefcab79bb Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2012 07:30:17 -0700 Subject: [PATCH 243/488] Store the sound listener position as well --- apps/openmw/mwsound/openal_output.cpp | 3 ++- apps/openmw/mwsound/sound_output.hpp | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index d8945cf52b..8d574b2f2b 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -760,8 +760,9 @@ void OpenAL_Output::updateListener(const float *pos, const float *atdir, const f atdir[0], atdir[2], -atdir[1], updir[0], updir[2], -updir[1] }; + mPos = Ogre::Vector3(pos[0], pos[1], pos[2]); - alListener3f(AL_POSITION, pos[0], pos[2], -pos[1]); + alListener3f(AL_POSITION, mPos[0], mPos[2], -mPos[1]); alListenerfv(AL_ORIENTATION, orient); throwALerror(); } diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 794383591b..3c1a3d3127 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -4,6 +4,8 @@ #include #include +#include + #include "soundmanager.hpp" #include "../mwworld/ptr.hpp" @@ -34,7 +36,13 @@ namespace MWSound Sound_Output& operator=(const Sound_Output &rhs); Sound_Output(const Sound_Output &rhs); - Sound_Output(SoundManager &mgr) : mManager(mgr) { } + protected: + Ogre::Vector3 mPos; + + Sound_Output(SoundManager &mgr) + : mManager(mgr) + , mPos(0.0f, 0.0f, 0.0f) + { } public: virtual ~Sound_Output() { } From fc5cd703bb189d774a1d843d44e508772389a1c7 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 30 Mar 2012 16:34:36 +0200 Subject: [PATCH 244/488] maps are now rendered with correct rotation, however for interiors the arrow is wrong --- apps/openmw/mwrender/localmap.cpp | 37 +++++++++++++++++------ apps/openmw/mwrender/localmap.hpp | 5 +-- apps/openmw/mwrender/renderingmanager.cpp | 2 +- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 803899110c..063b253019 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -17,7 +17,8 @@ LocalMap::LocalMap(OEngine::Render::OgreRenderer* rend, MWWorld::Environment* en mRendering = rend; mEnvironment = env; - mCameraRotNode = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); + mCameraPosNode = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); + mCameraRotNode = mCameraPosNode->createChildSceneNode(); mCameraNode = mCameraRotNode->createChildSceneNode(); mCellCamera = mRendering->getScene()->createCamera("CellCamera"); @@ -101,6 +102,8 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell) int x = cell->cell->data.gridX; int y = cell->cell->data.gridY; + mCameraPosNode->setPosition(Vector3(0,0,0)); + render((x+0.5)*sSize, (-y-0.5)*sSize, -10000, 10000, sSize, sSize, name); } @@ -110,17 +113,26 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell, mInterior = true; mBounds = bounds; - Vector2 z(bounds.getMaximum().y, bounds.getMinimum().y); - Vector2 min(bounds.getMinimum().x, bounds.getMinimum().z); - Vector2 max(bounds.getMaximum().x, bounds.getMaximum().z); + Vector2 z(mBounds.getMaximum().y, mBounds.getMinimum().y); const Vector2& north = mEnvironment->mWorld->getNorthVector(cell); - Radian angle(std::atan2(north.x, north.y)); + Radian angle(std::atan2(-north.x, -north.y)); mCameraRotNode->setOrientation(Quaternion(Math::Cos(angle/2.f), 0, Math::Sin(angle/2.f), 0)); - Vector2 length = max-min; + mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::NEAR_LEFT_BOTTOM))); + mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::FAR_LEFT_BOTTOM))); + mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::NEAR_RIGHT_BOTTOM))); + mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::FAR_RIGHT_BOTTOM))); + Vector2 center(bounds.getCenter().x, bounds.getCenter().z); + Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); + Vector2 max(mBounds.getMaximum().x, mBounds.getMaximum().z); + + Vector2 length = max-min; + + mCameraPosNode->setPosition(Vector3(center.x, 0, center.y)); + // divide into segments const int segsX = std::ceil( length.x / sSize ); const int segsY = std::ceil( length.y / sSize ); @@ -134,7 +146,7 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell, Vector2 start = min + Vector2(sSize*x,sSize*y); Vector2 newcenter = start + 4096; - render(newcenter.x, newcenter.y, z.y, z.x, sSize, sSize, + render(newcenter.x - center.x, newcenter.y - center.y, z.y, z.x, sSize, sSize, cell->cell->name + "_" + coordStr(x,y)); } } @@ -227,7 +239,7 @@ void LocalMap::render(const float x, const float y, mRendering->getScene()->setFog(FOG_LINEAR, clr, 0, fStart, fEnd); } -void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& direction) +void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Quaternion& orientation) { if (sFogOfWarSkip != 0) { @@ -240,9 +252,13 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& int x,y; Vector3 _pos(position.x, 0, position.z); _pos = mCameraRotNode->convertWorldToLocalPosition(_pos); + + //if (mInterior) + /// \todo + Vector2 pos(_pos.x, _pos.z); - Vector3 playerdirection = mCameraRotNode->convertWorldToLocalPosition(direction); + Vector3 playerdirection = -mCameraRotNode->convertWorldToLocalOrientation(orientation).zAxis(); if (!mInterior) { @@ -279,6 +295,9 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& texName = mInteriorName + "_" + coordStr(x,y); } + + //std::cout << " x,y " << x << ", " << y << " u,v " << u << "," << v << std::endl; + mEnvironment->mWindowManager->setPlayerPos(u, v); mEnvironment->mWindowManager->setPlayerDir(playerdirection.x, -playerdirection.z); diff --git a/apps/openmw/mwrender/localmap.hpp b/apps/openmw/mwrender/localmap.hpp index 42603885a0..cb294a6568 100644 --- a/apps/openmw/mwrender/localmap.hpp +++ b/apps/openmw/mwrender/localmap.hpp @@ -44,9 +44,9 @@ namespace MWRender * @remarks This is used to draw a "fog of war" effect * to hide areas on the map the player has not discovered yet. * @param position (OGRE coordinates) - * @param view direction (OGRE coordinates) + * @param camera orientation (OGRE coordinates) */ - void updatePlayer (const Ogre::Vector3& position, const Ogre::Vector3& direction); + void updatePlayer (const Ogre::Vector3& position, const Ogre::Quaternion& orientation); /** * Save the fog of war for the current cell to disk. @@ -74,6 +74,7 @@ namespace MWRender Ogre::Camera* mCellCamera; Ogre::SceneNode* mCameraNode; + Ogre::SceneNode* mCameraPosNode; Ogre::SceneNode* mCameraRotNode; void render(const float x, const float y, diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index c947b67f5c..5df93ab32e 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -171,7 +171,7 @@ void RenderingManager::update (float duration){ mRendering.update(duration); - mLocalMap->updatePlayer( mRendering.getCamera()->getRealPosition(), mRendering.getCamera()->getRealDirection() ); + mLocalMap->updatePlayer( mRendering.getCamera()->getRealPosition(), mRendering.getCamera()->getRealOrientation() ); checkUnderwater(); } From 8ac9dd8e70116eb8adf3f1f34a50a4d9b776fd32 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Fri, 30 Mar 2012 16:59:19 +0200 Subject: [PATCH 245/488] Always use the same type of slashes --- components/bsa/bsa_archive.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index eb392757b8..e33f0ba49d 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -104,13 +104,10 @@ class DirArchive: public Ogre::FileSystemArchive std::vector current; { std::map,ciLessBoost>::const_iterator found = m.find(folder); - if (found == m.end()) - { - std::replace(folder.begin(), folder.end(), '/', '\\'); - found = m.find(folder); - } - if (found != m.end()) + if (found == m.end()) + return false; + else current = found->second; } @@ -134,16 +131,14 @@ class DirArchive: public Ogre::FileSystemArchive //need to cut off first boost::filesystem::directory_iterator dir_iter(d), dir_end; std::vector filesind; - boost::filesystem::path f; for(;dir_iter != dir_end; dir_iter++) { if(boost::filesystem::is_directory(*dir_iter)) populateMap(*dir_iter); else { - - f = *dir_iter; - std::string s = f.string(); + std::string s = dir_iter->path().string(); + std::replace(s.begin(), s.end(), '\\', '/'); std::string small; if(cutoff < s.size()) @@ -155,14 +150,16 @@ class DirArchive: public Ogre::FileSystemArchive } } std::sort(filesind.begin(), filesind.end(), ciLessBoost()); + std::string small; std::string original = d.string(); + std::replace(original.begin(), original.end(), '\\', '/'); if(cutoff < original.size()) small = original.substr(cutoff, original.size() - cutoff); else small = original.substr(cutoff - 1, original.size() - cutoff); - m[small] = filesind; + m[small] = filesind; } bool isCaseSensitive() const { return fsstrict; } From a1d3516e0a23c049eca4e787d8dc5e06193f1af9 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 30 Mar 2012 17:01:23 +0200 Subject: [PATCH 246/488] constness fix --- apps/openmw/mwworld/ptr.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/ptr.hpp b/apps/openmw/mwworld/ptr.hpp index c31c531223..d6e485f419 100644 --- a/apps/openmw/mwworld/ptr.hpp +++ b/apps/openmw/mwworld/ptr.hpp @@ -39,7 +39,7 @@ namespace MWWorld return mPtr.empty(); } - const std::type_info& getType() + const std::type_info& getType() const { assert (!mPtr.empty()); return mPtr.type(); From 0892df0ad38ca0eddf0da8b0c46ba7676f4dc0a1 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Fri, 30 Mar 2012 17:01:55 +0200 Subject: [PATCH 247/488] framework for gamemechanics-realted actor updated --- apps/openmw/engine.cpp | 5 +-- apps/openmw/mwmechanics/actors.cpp | 34 ++++++++++++++++++-- apps/openmw/mwmechanics/actors.hpp | 12 +++++-- apps/openmw/mwmechanics/mechanicsmanager.cpp | 5 +-- apps/openmw/mwmechanics/mechanicsmanager.hpp | 6 +++- 5 files changed, 52 insertions(+), 10 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 441c227699..45ed0abd45 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -148,7 +148,8 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt) // update actors std::vector > movement; - mEnvironment.mMechanicsManager->update (movement); + mEnvironment.mMechanicsManager->update (movement, mEnvironment.mFrameDuration, + mEnvironment.mWindowManager->getMode()!=MWGui::GM_Game); if (mEnvironment.mWindowManager->getMode()==MWGui::GM_Game) mEnvironment.mWorld->doPhysics (movement, mEnvironment.mFrameDuration); @@ -317,7 +318,7 @@ void OMW::Engine::go() // to find core.xml here. //addResourcesDirectory(mResDir); - + addResourcesDirectory(mResDir / "mygui"); addResourcesDirectory(mResDir / "water"); diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index e4fba8a9c4..d532c6f091 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -1,11 +1,25 @@ #include "actors.hpp" +#include + +#include + #include "../mwworld/class.hpp" namespace MWMechanics { - Actors::Actors (MWWorld::Environment& environment) : mEnvironment (environment) {} + void Actors::updateActor (const MWWorld::Ptr& ptr, float duration) + { + + } + + void Actors::updateNpc (const MWWorld::Ptr& ptr, float duration, bool paused) + { + + } + + Actors::Actors (MWWorld::Environment& environment) : mEnvironment (environment), mDuration (0) {} void Actors::addActor (const MWWorld::Ptr& ptr) { @@ -30,8 +44,24 @@ namespace MWMechanics ++iter; } - void Actors::update (std::vector >& movement) + void Actors::update (std::vector >& movement, float duration, + bool paused) { + mDuration += duration; + + if (mDuration>=0.25) + { + for (std::set::iterator iter (mActors.begin()); iter!=mActors.end(); ++iter) + { + updateActor (*iter, mDuration); + + if (iter->getTypeName()==typeid (ESM::NPC).name()) + updateNpc (*iter, mDuration, paused); + } + + mDuration = 0; + } + for (std::set::iterator iter (mActors.begin()); iter!=mActors.end(); ++iter) { diff --git a/apps/openmw/mwmechanics/actors.hpp b/apps/openmw/mwmechanics/actors.hpp index d3a3724726..7ff33b63bd 100644 --- a/apps/openmw/mwmechanics/actors.hpp +++ b/apps/openmw/mwmechanics/actors.hpp @@ -21,8 +21,13 @@ namespace MWMechanics { class Actors { - MWWorld::Environment& mEnvironment; - std::set mActors; + MWWorld::Environment& mEnvironment; + std::set mActors; + float mDuration; + + void updateActor (const MWWorld::Ptr& ptr, float duration); + + void updateNpc (const MWWorld::Ptr& ptr, float duration, bool paused); public: @@ -37,7 +42,8 @@ namespace MWMechanics void dropActors (const MWWorld::Ptr::CellStore *cellStore); ///< Deregister all actors in the given cell. - void update (std::vector >& movement); + void update (std::vector >& movement, + float duration, bool paused); ///< Update actor stats and store desired velocity vectors in \a movement }; } diff --git a/apps/openmw/mwmechanics/mechanicsmanager.cpp b/apps/openmw/mwmechanics/mechanicsmanager.cpp index f669ea65ce..3c93857ef9 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.cpp @@ -253,7 +253,8 @@ namespace MWMechanics mWatched = ptr; } - void MechanicsManager::update (std::vector >& movement) + void MechanicsManager::update (std::vector >& movement, + float duration, bool paused) { if (!mWatched.isEmpty()) { @@ -336,7 +337,7 @@ namespace MWMechanics mEnvironment.mWindowManager->configureSkills (majorSkills, minorSkills); } - mActors.update (movement); + mActors.update (movement, duration, paused); } void MechanicsManager::setPlayerName (const std::string& name) diff --git a/apps/openmw/mwmechanics/mechanicsmanager.hpp b/apps/openmw/mwmechanics/mechanicsmanager.hpp index bf0a6215a1..a7defe178a 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.hpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.hpp @@ -60,8 +60,12 @@ namespace MWMechanics ///< On each update look for changes in a previously registered actor and update the /// GUI accordingly. - void update (std::vector >& movement); + void update (std::vector >& movement, float duration, + bool paused); ///< Update actor stats and store desired velocity vectors in \a movement + /// + /// \param paused In game type does not currently advance (this usually means some GUI + /// component is up). void setPlayerName (const std::string& name); ///< Set player name. From ff85006e7159aa808c23bd02f9fb83d24b277da0 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 30 Mar 2012 18:38:33 +0200 Subject: [PATCH 248/488] added untested interface --- components/CMakeLists.txt | 4 ++ components/settings/settings.cpp | 64 ++++++++++++++++++++++++++++++++ components/settings/settings.hpp | 35 +++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 components/settings/settings.cpp create mode 100644 components/settings/settings.hpp diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt index c95efb37df..b48c50640c 100644 --- a/components/CMakeLists.txt +++ b/components/CMakeLists.txt @@ -2,6 +2,10 @@ project (Components) # source files +add_component_dir (settings + settings + ) + add_component_dir (bsa bsa_archive bsa_file ) diff --git a/components/settings/settings.cpp b/components/settings/settings.cpp new file mode 100644 index 0000000000..157de0b4d0 --- /dev/null +++ b/components/settings/settings.cpp @@ -0,0 +1,64 @@ +#include "settings.hpp" + +#include + +#include +#include + +using namespace Settings; + +Ogre::ConfigFile Manager::mFile = Ogre::ConfigFile(); +Ogre::ConfigFile Manager::mDefaultFile = Ogre::ConfigFile(); + +void Manager::load(const std::string& file) +{ + mFile.load(file); +} + +void Manager::loadDefault(const std::string& file) +{ + mDefaultFile.load(file); +} + +void Manager::save(const std::string& file) +{ + std::fstream fout(file.c_str(), std::ios::out); + + Ogre::ConfigFile::SectionIterator seci = mFile.getSectionIterator(); + + while (seci.hasMoreElements()) + { + Ogre::String sectionName = seci.peekNextKey(); + + if (sectionName.length() > 0) + fout << '\n' << '[' << seci.peekNextKey() << ']' << '\n'; + + Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext(); + Ogre::ConfigFile::SettingsMultiMap::iterator i; + for (i = settings->begin(); i != settings->end(); ++i) + { + fout << i->first.c_str() << '=' << i->second.c_str() << '\n'; + } + } +} + +const std::string Manager::getString (const std::string& setting, const std::string& category) +{ + std::string defaultval = mDefaultFile.getSetting(setting, category); + return mFile.getSetting(setting, category, defaultval); +} + +const float Manager::getFloat (const std::string& setting, const std::string& category) +{ + return Ogre::StringConverter::parseReal( getString(setting, category) ); +} + +const int Manager::getInt (const std::string& setting, const std::string& category) +{ + return Ogre::StringConverter::parseInt( getString(setting, category) ); +} + +const bool Manager::getBool (const std::string& setting, const std::string& category) +{ + return Ogre::StringConverter::parseBool( getString(setting, category) ); +} diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp new file mode 100644 index 0000000000..ae6f1a9de7 --- /dev/null +++ b/components/settings/settings.hpp @@ -0,0 +1,35 @@ +#ifndef _COMPONENTS_SETTINGS_H +#define _COMPONENTS_SETTINGS_H + +#include + +namespace Settings +{ + + /// + /// \brief Settings management (can change during runtime) + /// + class Manager + { + public: + static Ogre::ConfigFile mFile; + static Ogre::ConfigFile mDefaultFile; + + void loadDefault (const std::string& file); + ///< load file as the default settings (can be overridden by user settings) + + void load (const std::string& file); + ///< load file as user settings + + void save (const std::string& file); + ///< save to file + + static const int getInt (const std::string& setting, const std::string& category); + static const float getFloat (const std::string& setting, const std::string& category); + static const std::string getString (const std::string& setting, const std::string& category); + static const bool getBool (const std::string& setting, const std::string& category); + }; + +} + +#endif // _COMPONENTS_SETTINGS_H From fc4e4dc336feb15584875f651e88f1cd0936a8e6 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Fri, 30 Mar 2012 19:05:58 +0200 Subject: [PATCH 249/488] Case sensitiviy? --- components/bsa/bsa_archive.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index e33f0ba49d..bd61e03395 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -112,7 +112,13 @@ class DirArchive: public Ogre::FileSystemArchive } pathComparer comp(delimiter, copy.size() - delimiter-1); - return std::binary_search(current.begin(), current.end(), copy, comp); + std::vector::iterator find = std::lower_bound(current.begin(), current.end(), copy, comp); + if (find != current.end() && !comp(copy, current.front())) + { + copy = *find; + return true; + } + return false; } public: From fefc8f86ab05f48cd5253a4939d96e9354c3fbd3 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2012 11:11:07 -0700 Subject: [PATCH 250/488] Remove the unused streamSound3D method --- apps/openmw/mwsound/openal_output.cpp | 44 --------------------------- apps/openmw/mwsound/openal_output.hpp | 3 -- apps/openmw/mwsound/sound_output.hpp | 2 -- 3 files changed, 49 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 8d574b2f2b..da1de3d147 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -709,50 +709,6 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa return sound; } -SoundPtr OpenAL_Output::streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max) -{ - throwALerror(); - - boost::shared_ptr sound; - ALuint src; - - if(mFreeSources.empty()) - fail("No free sources"); - src = mFreeSources.front(); - mFreeSources.pop_front(); - - try - { - DecoderPtr decoder = mManager.getDecoder(); - decoder->open(fname); - sound.reset(new OpenAL_SoundStream(*this, src, decoder)); - } - catch(std::exception &e) - { - mFreeSources.push_back(src); - throw; - } - - alSource3f(src, AL_POSITION, pos[0], pos[2], -pos[1]); - alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); - alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); - - alSourcef(src, AL_REFERENCE_DISTANCE, min); - alSourcef(src, AL_MAX_DISTANCE, max); - alSourcef(src, AL_ROLLOFF_FACTOR, 1.0f); - - alSourcef(src, AL_GAIN, volume); - alSourcef(src, AL_PITCH, pitch); - - alSourcei(src, AL_SOURCE_RELATIVE, AL_FALSE); - alSourcei(src, AL_LOOPING, AL_FALSE); - throwALerror(); - - sound->play(); - return sound; -} - void OpenAL_Output::updateListener(const float *pos, const float *atdir, const float *updir) { diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index d288a62f39..f37f72cabd 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -43,10 +43,7 @@ namespace MWSound virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, bool loop); virtual SoundPtr playSound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop); - virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch); - virtual SoundPtr streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max); virtual void updateListener(const float *pos, const float *atdir, const float *updir); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 3c1a3d3127..e54f9016da 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -28,8 +28,6 @@ namespace MWSound virtual SoundPtr playSound3D(const std::string &fname, const float *pos, float volume, float pitch, float min, float max, bool loop) = 0; virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch) = 0; - virtual SoundPtr streamSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max) = 0; virtual void updateListener(const float *pos, const float *atdir, const float *updir) = 0; From fc167dbc83b6312433d1469ec8222f22ac47e10b Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2012 11:42:11 -0700 Subject: [PATCH 251/488] Pass Ogre Vector3s to playSound3D and updateListener --- apps/openmw/mwsound/openal_output.cpp | 16 ++++++++-------- apps/openmw/mwsound/openal_output.hpp | 6 +++--- apps/openmw/mwsound/sound_output.hpp | 6 +++--- apps/openmw/mwsound/soundmanager.cpp | 16 +++++++++------- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index da1de3d147..9fda1470c6 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -616,7 +616,7 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float return sound; } -SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const float *pos, float volume, float pitch, +SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector3 &pos, float volume, float pitch, float min, float max, bool loop) { throwALerror(); @@ -643,7 +643,7 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const float *pos, throw; } - alSource3f(src, AL_POSITION, pos[0], pos[2], -pos[1]); + alSource3f(src, AL_POSITION, pos.x, pos.z, -pos.y); alSource3f(src, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(src, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -710,15 +710,15 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa } -void OpenAL_Output::updateListener(const float *pos, const float *atdir, const float *updir) +void OpenAL_Output::updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir) { - float orient[6] = { - atdir[0], atdir[2], -atdir[1], - updir[0], updir[2], -updir[1] + ALfloat orient[6] = { + atdir.x, atdir.z, -atdir.y, + updir.x, updir.z, -updir.y }; - mPos = Ogre::Vector3(pos[0], pos[1], pos[2]); + mPos = pos; - alListener3f(AL_POSITION, mPos[0], mPos[2], -mPos[1]); + alListener3f(AL_POSITION, mPos.x, mPos.z, -mPos.y); alListenerfv(AL_ORIENTATION, orient); throwALerror(); } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index f37f72cabd..f4d4e90afd 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -41,11 +41,11 @@ namespace MWSound virtual void deinit(); virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, bool loop); - virtual SoundPtr playSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max, bool loop); + virtual SoundPtr playSound3D(const std::string &fname, const Ogre::Vector3 &pos, + float volume, float pitch, float min, float max, bool loop); virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch); - virtual void updateListener(const float *pos, const float *atdir, const float *updir); + virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir); OpenAL_Output& operator=(const OpenAL_Output &rhs); OpenAL_Output(const OpenAL_Output &rhs); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index e54f9016da..ed3dda2f34 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -25,11 +25,11 @@ namespace MWSound virtual void deinit() = 0; virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, bool loop) = 0; - virtual SoundPtr playSound3D(const std::string &fname, const float *pos, float volume, float pitch, - float min, float max, bool loop) = 0; + virtual SoundPtr playSound3D(const std::string &fname, const Ogre::Vector3 &pos, + float volume, float pitch, float min, float max, bool loop) = 0; virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch) = 0; - virtual void updateListener(const float *pos, const float *atdir, const float *updir) = 0; + virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir) = 0; Sound_Output& operator=(const Sound_Output &rhs); Sound_Output(const Sound_Output &rhs); diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index da7cb9d3b3..005df3e7ef 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -184,10 +184,11 @@ namespace MWSound float basevol = 1.0f; /* TODO: volume settings */ std::string filePath = "Sound/"+filename; const ESM::Position &pos = ptr.getCellRef().pos; + const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); - SoundPtr sound = mOutput->playSound3D(filePath, pos.pos, basevol, 1.0f, + SoundPtr sound = mOutput->playSound3D(filePath, objpos, basevol, 1.0f, 20.0f, 12750.0f, false); - sound->mPos = Ogre::Vector3(pos.pos[0], pos.pos[1], pos.pos[2]); + sound->mPos = objpos; sound->mBaseVolume = basevol; mActiveSounds[sound] = std::make_pair(ptr, std::string("_say_sound")); @@ -240,9 +241,10 @@ namespace MWSound float min, max; std::string file = lookup(soundId, basevol, min, max); const ESM::Position &pos = ptr.getCellRef().pos; + const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); - sound = mOutput->playSound3D(file, pos.pos, volume*basevol, pitch, min, max, loop); - sound->mPos = Ogre::Vector3(pos.pos[0], pos.pos[1], pos.pos[2]); + sound = mOutput->playSound3D(file, objpos, volume*basevol, pitch, min, max, loop); + sound->mPos = objpos; sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; @@ -414,9 +416,9 @@ namespace MWSound // The output handler is expecting vectors oriented like the game // (that is, -Z goes down, +Y goes forward), but that's not what we // get from Ogre's camera, so we have to convert. - float pos[3] = { nPos[0], -nPos[2], nPos[1] }; - float at[3] = { nDir[0], -nDir[2], nDir[1] }; - float up[3] = { nUp[0], -nUp[2], nUp[1] }; + const Ogre::Vector3 pos(nPos[0], -nPos[2], nPos[1]); + const Ogre::Vector3 at(nDir[0], -nDir[2], nDir[1]); + const Ogre::Vector3 up(nUp[0], -nUp[2], nUp[1]); mOutput->updateListener(pos, at, up); // Check if any sounds are finished playing, and trash them From fbd626baf69da248f64e0545d635799469a7a09e Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Fri, 30 Mar 2012 20:59:44 +0200 Subject: [PATCH 252/488] mwiniimporter --- CMakeLists.txt | 7 +++++- apps/mwiniimporter/CMakeLists.txt | 21 +++++++++++++++++ apps/mwiniimporter/importer.cpp | 6 +++++ apps/mwiniimporter/importer.hpp | 17 ++++++++++++++ apps/mwiniimporter/main.cpp | 39 +++++++++++++++++++++++++++++++ apps/mwiniimporter/main.hpp | 11 +++++++++ 6 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 apps/mwiniimporter/CMakeLists.txt create mode 100644 apps/mwiniimporter/importer.cpp create mode 100644 apps/mwiniimporter/importer.hpp create mode 100644 apps/mwiniimporter/main.cpp create mode 100644 apps/mwiniimporter/main.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f007dbccf..552a6997a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -305,7 +305,7 @@ if(DPKG_PROGRAM) Data files from the original game is required to run it.") SET(CPACK_DEBIAN_PACKAGE_NAME "openmw") SET(CPACK_DEBIAN_PACKAGE_VERSION "${VERSION_STRING}") - SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW esmtool;Esmtool omwlauncher;OMWLauncher") + SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW esmtool;Esmtool omwlauncher;OMWLauncher mwiniimporter;MWiniImporter") SET(CPACK_DEBIAN_PACKAGE_DEPENDS "nvidia-cg-toolkit (>= 2.1), libboost-filesystem1.46.1 (>= 1.46.1), libboost-program-options1.46.1 (>= 1.46.1), libboost-system1.46.1 (>= 1.46.1), libboost-thread1.46.1 (>= 1.46.1), libc6 (>= 2.11.2), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libmpg123-0 (>= 1.12.1), libois-1.3.0 (>= 1.3.0), libopenal1 (>= 1:1.12.854), libsndfile1 (>= 1.0.23), libstdc++6 (>= 4.4.5), libuuid1 (>= 2.17.2), libqtgui4 (>= 4.7.0)") SET(CPACK_DEBIAN_PACKAGE_SECTION "Games") @@ -391,6 +391,11 @@ if (BUILD_LAUNCHER) add_subdirectory( apps/launcher ) endif() +option(BUILD_MWINIIMPORTER "build MWiniImporter inspector" ON) +if (BUILD_MWINIIMPORTER) + add_subdirectory( apps/mwiniimporter ) +endif() + if (WIN32) if (MSVC) if (USE_DEBUG_CONSOLE) diff --git a/apps/mwiniimporter/CMakeLists.txt b/apps/mwiniimporter/CMakeLists.txt new file mode 100644 index 0000000000..1d7b7b624c --- /dev/null +++ b/apps/mwiniimporter/CMakeLists.txt @@ -0,0 +1,21 @@ +set(MWINIIMPORT + main.cpp + importer.cpp +) + +set(MWINIIMPORT_HEADER + main.hpp + importer.hpp +) + +source_group(launcher FILES ${MWINIIMPORT} ${MWINIIMPORT_HEADER}) + +add_executable(mwiniimport + ${MWINIIMPORT} +) + +target_link_libraries(mwiniimport + ${Boost_LIBRARIES} + components +) + diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp new file mode 100644 index 0000000000..225b1667c4 --- /dev/null +++ b/apps/mwiniimporter/importer.cpp @@ -0,0 +1,6 @@ +#include "importer.hpp" + +void MwIniImporter::test() { + +} + diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp new file mode 100644 index 0000000000..026ed55bf9 --- /dev/null +++ b/apps/mwiniimporter/importer.hpp @@ -0,0 +1,17 @@ +#ifndef MWINIIMPORTER_IMPORTER +#define MWINIIMPORTER_IMPORTER 1 + +#include + +class MwIniImporter { + + public: + void test(); + + private: + + +}; + + +#endif diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp new file mode 100644 index 0000000000..46cb37e7f4 --- /dev/null +++ b/apps/mwiniimporter/main.cpp @@ -0,0 +1,39 @@ +#include "main.hpp" +#include "importer.hpp" + +int main(int argc, char *argv[]) { + + bpo::options_description desc("Syntax: mwiniimporter \nAllowed options"); + desc.add_options() + ("help,h", "produce help message") + ("in,i", bpo::value()->required(), "morrowind.ini input file") + ("out,o", bpo::value()->required(), "openmw.cfg output file") + ; + + bpo::variables_map vm; + try { + bpo::store(boost::program_options::parse_command_line(argc, argv, desc), vm); + bpo::notify(vm); + + } + catch(std::exception& e) { + std::cout << "Error:" << e.what() << std::endl; + return -1; + } + catch(...) { + std::cout << "Error" << std::endl; + return -1; + } + + if(vm.count("help")) { + std::cout << desc; + return 0; + } + + std::cout << "in:" << vm["in"].as() << std::endl; + + MwIniImporter importer; + importer.test(); + + return 0; +} diff --git a/apps/mwiniimporter/main.hpp b/apps/mwiniimporter/main.hpp new file mode 100644 index 0000000000..f93de7b078 --- /dev/null +++ b/apps/mwiniimporter/main.hpp @@ -0,0 +1,11 @@ +#ifndef MWINIIMPORTER_MAIN +#define MWINIIMPORTER_MAIN 1 + +#include +#include +#include + +namespace bpo = boost::program_options; + + +#endif From c160bc708091039cccdea53bc584704713193852 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Fri, 30 Mar 2012 22:58:54 +0200 Subject: [PATCH 253/488] works, sort of --- apps/mwiniimporter/CMakeLists.txt | 1 - apps/mwiniimporter/importer.cpp | 94 ++++++++++++++++++++++++++++++- apps/mwiniimporter/importer.hpp | 18 +++++- apps/mwiniimporter/main.cpp | 58 +++++++++++++++---- apps/mwiniimporter/main.hpp | 11 ---- 5 files changed, 155 insertions(+), 27 deletions(-) delete mode 100644 apps/mwiniimporter/main.hpp diff --git a/apps/mwiniimporter/CMakeLists.txt b/apps/mwiniimporter/CMakeLists.txt index 1d7b7b624c..2a8c0f5fea 100644 --- a/apps/mwiniimporter/CMakeLists.txt +++ b/apps/mwiniimporter/CMakeLists.txt @@ -4,7 +4,6 @@ set(MWINIIMPORT ) set(MWINIIMPORT_HEADER - main.hpp importer.hpp ) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 225b1667c4..d0cfe4a04e 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -1,6 +1,96 @@ #include "importer.hpp" +#include +#include +#include -void MwIniImporter::test() { - +void MwIniImporter::setVerbose(bool verbose) { + mVerbose = verbose; } +strmap MwIniImporter::loadIniFile(std::string filename) { + std::cout << "load ini file: " << filename << std::endl; + + std::map map; + boost::iostreams::streamfile(filename.c_str()); + + std::string line; + while (std::getline(file, line)) { + + // ignore sections for now + if(line.empty() || line[0] == ';' || line[0] == '[') { + continue; + } + + int pos = line.find("="); + if(pos < 1) { + throw IniParseException(); + } + + map.insert(std::pair( + line.substr(0,pos), line.substr(pos+1) + )); + } + + return map; +} + +strmap MwIniImporter::loadCfgFile(std::string filename) { + std::cout << "load cfg file: " << filename << std::endl; + + std::map map; + boost::iostreams::streamfile(filename.c_str()); + + std::string line; + while (std::getline(file, line)) { + + if(line[0] == '[') { // section + continue; // ignore for now + } + + // we cant say comment by only looking at first char anymore + int comment_pos = line.find("#"); + if(comment_pos > 0) { + line = line.substr(0,comment_pos); + } + + if(line.empty()) { + continue; + } + + int pos = line.find("="); + if(pos < 1) { + throw IniParseException(); + } + + map.insert(std::pair( + line.substr(0,pos), line.substr(pos+1) + )); + } + + return map; +} + +void MwIniImporter::merge(strmap &cfg, strmap &ini) { + strmap::iterator ini_it; + for(strmap::iterator it=cfg.begin(); it != cfg.end(); it++) { + ini_it = ini.find(it->first); + + // found a key in both files + if(ini_it != ini.end()) { + cfg.erase(it); + cfg.insert(std::pair( + ini_it->first, ini_it->second + )); + } + } +} + +void MwIniImporter::writeToFile(std::string file, strmap &cfg) { + boost::iostreams::stream out(file); + + for(strmap::iterator it=cfg.begin(); it != cfg.end(); it++) { + out << (it->first) << "=" << (it->second) << std::endl; + } +} + + diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 026ed55bf9..1933830f21 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -2,14 +2,28 @@ #define MWINIIMPORTER_IMPORTER 1 #include +#include +#include + +typedef std::map strmap; + +class IniParseException : public std::exception { + virtual const char* what() const throw() { + return "unexpected end of line"; + } +}; class MwIniImporter { public: - void test(); + void setVerbose(bool verbose); + strmap loadIniFile(std::string filename); + strmap loadCfgFile(std::string filename); + void merge(strmap &cfg, strmap &ini); + void writeToFile(std::string file, strmap &cfg); private: - + bool mVerbose; }; diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 46cb37e7f4..fa7a5c512f 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -1,39 +1,75 @@ -#include "main.hpp" #include "importer.hpp" +#include +#include +#include +#include + +namespace bpo = boost::program_options; + int main(int argc, char *argv[]) { bpo::options_description desc("Syntax: mwiniimporter \nAllowed options"); desc.add_options() ("help,h", "produce help message") - ("in,i", bpo::value()->required(), "morrowind.ini input file") - ("out,o", bpo::value()->required(), "openmw.cfg output file") + ("verbose,v", "verbose output") + ("ini,i", bpo::value()->required(), "morrowind.ini file") + ("cfg,c", bpo::value()->required(), "openmw.cfg file") + ("output,o", bpo::value()->default_value(""), "openmw.cfg file") ; bpo::variables_map vm; try { bpo::store(boost::program_options::parse_command_line(argc, argv, desc), vm); + + // parse help before calling notify because we dont want it to throw an error if help is set + if(vm.count("help")) { + std::cout << desc; + return 0; + } + bpo::notify(vm); } catch(std::exception& e) { - std::cout << "Error:" << e.what() << std::endl; + std::cerr << "Error:" << e.what() << std::endl; return -1; } catch(...) { - std::cout << "Error" << std::endl; - return -1; + std::cerr << "Error" << std::endl; + return -2; } - if(vm.count("help")) { - std::cout << desc; - return 0; + std::string iniFile = vm["ini"].as(); + std::string cfgFile = vm["cfg"].as(); + + // if no output is given, write back to cfg file + std::string outputFile(vm["output"].as()); + if(vm["output"].defaulted()) { + outputFile = vm["cfg"].as(); } - std::cout << "in:" << vm["in"].as() << std::endl; + if(!boost::filesystem::exists(iniFile)) { + std::cerr << "ini file does not exist" << std::endl; + return -3; + } + if(!boost::filesystem::exists(cfgFile)) { + std::cerr << "cfg file does not exist" << std::endl; + return -4; + } MwIniImporter importer; - importer.test(); + importer.setVerbose(vm.count("verbose")); + + std::mapini = importer.loadIniFile(iniFile); + std::mapcfg = importer.loadCfgFile(cfgFile); + + importer.merge(cfg, ini); + + std::cout << "write to: " << outputFile << std::endl; + importer.writeToFile(outputFile, cfg); return 0; } + + diff --git a/apps/mwiniimporter/main.hpp b/apps/mwiniimporter/main.hpp deleted file mode 100644 index f93de7b078..0000000000 --- a/apps/mwiniimporter/main.hpp +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef MWINIIMPORTER_MAIN -#define MWINIIMPORTER_MAIN 1 - -#include -#include -#include - -namespace bpo = boost::program_options; - - -#endif From 849c3a9bececfdeba8495f09dc057f62236027e8 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Fri, 30 Mar 2012 23:12:52 +0200 Subject: [PATCH 254/488] add the section to the ini-keys --- apps/mwiniimporter/importer.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index d0cfe4a04e..f662f42d64 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -10,6 +10,7 @@ void MwIniImporter::setVerbose(bool verbose) { strmap MwIniImporter::loadIniFile(std::string filename) { std::cout << "load ini file: " << filename << std::endl; + std::string section(""); std::map map; boost::iostreams::streamfile(filename.c_str()); @@ -17,17 +18,25 @@ strmap MwIniImporter::loadIniFile(std::string filename) { while (std::getline(file, line)) { // ignore sections for now - if(line.empty() || line[0] == ';' || line[0] == '[') { + if(line.empty() || line[0] == ';') { continue; } + if(line[0] == '[') { + if(line.length() > 2) { + section = line.substr(1, line.length()-3); + continue; + } + throw IniParseException(); + } + int pos = line.find("="); if(pos < 1) { throw IniParseException(); } map.insert(std::pair( - line.substr(0,pos), line.substr(pos+1) + section + " " + line.substr(0,pos), line.substr(pos+1) )); } From 8d9100c77b7fd67df4c18a1642beffcf3bc68b72 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Fri, 30 Mar 2012 23:29:58 +0200 Subject: [PATCH 255/488] Debug output --- components/bsa/bsa_archive.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index bd61e03395..9d7212a5c4 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -101,12 +101,17 @@ class DirArchive: public Ogre::FileSystemArchive delimiter = lastSlash+1; } + std::cout << "Finding: " << copy; + std::vector current; { std::map,ciLessBoost>::const_iterator found = m.find(folder); if (found == m.end()) + { + std::cout << " failed, couldn't find folder." << std::endl; return false; + } else current = found->second; } @@ -115,9 +120,18 @@ class DirArchive: public Ogre::FileSystemArchive std::vector::iterator find = std::lower_bound(current.begin(), current.end(), copy, comp); if (find != current.end() && !comp(copy, current.front())) { + std::cout << " found"; + if (copy != *find) + if (lexicographical_compare(copy, *find, boost::algorithm::is_iless())) + std::cout << " case folded to " << *find << std::endl; + else + std::cout << " as different file " << *find << std::endl; + copy = *find; return true; } + + std::cout << " failed, couldn't find file." << std::endl; return false; } From 8e07b7e05002e246d785b3c6d7b35ace6bdb68b1 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sat, 31 Mar 2012 00:54:49 +0200 Subject: [PATCH 256/488] Better (less) debug output --- components/bsa/bsa_archive.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 9d7212a5c4..6501271597 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -101,37 +101,34 @@ class DirArchive: public Ogre::FileSystemArchive delimiter = lastSlash+1; } - std::cout << "Finding: " << copy; - std::vector current; { std::map,ciLessBoost>::const_iterator found = m.find(folder); if (found == m.end()) { - std::cout << " failed, couldn't find folder." << std::endl; return false; } else current = found->second; } + std::cout << "Finding: " << copy; + pathComparer comp(delimiter, copy.size() - delimiter-1); std::vector::iterator find = std::lower_bound(current.begin(), current.end(), copy, comp); if (find != current.end() && !comp(copy, current.front())) { std::cout << " found"; - if (copy != *find) - if (lexicographical_compare(copy, *find, boost::algorithm::is_iless())) - std::cout << " case folded to " << *find << std::endl; - else - std::cout << " as different file " << *find << std::endl; + if (copy != *find && !lexicographical_compare(copy, *find, boost::algorithm::is_iless())) + std::cout << ", as different file " << *find; + std::cout << "." << std::endl; copy = *find; return true; } - std::cout << " failed, couldn't find file." << std::endl; + std::cout << " failed." << std::endl; return false; } From 5adeee20fd893f1c7b04206365b6b06a8bacaa9c Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 00:57:29 -0700 Subject: [PATCH 257/488] Mute sounds that go outside the max distance --- apps/openmw/mwsound/openal_output.cpp | 34 +++++++++++++++++---------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 9fda1470c6..1b90c62fa1 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -77,6 +77,7 @@ class OpenAL_SoundStream : public Sound ALuint mBufferSize; DecoderPtr mDecoder; + bool mIs3D; volatile bool mIsFinished; @@ -84,7 +85,7 @@ class OpenAL_SoundStream : public Sound OpenAL_SoundStream& operator=(const OpenAL_SoundStream &rhs); public: - OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder); + OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder, bool is3D); virtual ~OpenAL_SoundStream(); virtual void stop(); @@ -164,8 +165,8 @@ private: }; -OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder) - : mOutput(output), mSource(src), mDecoder(decoder), mIsFinished(true) +OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder, bool is3D) + : mOutput(output), mSource(src), mDecoder(decoder), mIs3D(is3D), mIsFinished(true) { throwALerror(); @@ -256,7 +257,10 @@ bool OpenAL_SoundStream::isPlaying() void OpenAL_SoundStream::update() { - alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); + if(mIs3D && mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) + alSourcef(mSource, AL_GAIN, 0.0f); + else + alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -323,11 +327,13 @@ class OpenAL_Sound : public Sound ALuint mSource; ALuint mBuffer; + bool mIs3D; + OpenAL_Sound(const OpenAL_Sound &rhs); OpenAL_Sound& operator=(const OpenAL_Sound &rhs); public: - OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf); + OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf, bool is3D); virtual ~OpenAL_Sound(); virtual void stop(); @@ -335,8 +341,8 @@ public: virtual void update(); }; -OpenAL_Sound::OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf) - : mOutput(output), mSource(src), mBuffer(buf) +OpenAL_Sound::OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf, bool is3D) + : mOutput(output), mSource(src), mBuffer(buf), mIs3D(is3D) { } OpenAL_Sound::~OpenAL_Sound() @@ -366,7 +372,10 @@ bool OpenAL_Sound::isPlaying() void OpenAL_Sound::update() { - alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); + if(mIs3D && mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) + alSourcef(mSource, AL_GAIN, 0.0f); + else + alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -583,7 +592,7 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float try { buf = getBuffer(fname); - sound.reset(new OpenAL_Sound(*this, src, buf)); + sound.reset(new OpenAL_Sound(*this, src, buf, false)); } catch(std::exception &e) { @@ -632,7 +641,7 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector try { buf = getBuffer(fname); - sound.reset(new OpenAL_Sound(*this, src, buf)); + sound.reset(new OpenAL_Sound(*this, src, buf, true)); } catch(std::exception &e) { @@ -651,7 +660,8 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector alSourcef(src, AL_MAX_DISTANCE, max); alSourcef(src, AL_ROLLOFF_FACTOR, 1.0f); - alSourcef(src, AL_GAIN, volume); + alSourcef(src, AL_GAIN, (pos.squaredDistance(mPos) > max*max) ? + 0.0f : volume); alSourcef(src, AL_PITCH, pitch); alSourcei(src, AL_SOURCE_RELATIVE, AL_FALSE); @@ -682,7 +692,7 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa { DecoderPtr decoder = mManager.getDecoder(); decoder->open(fname); - sound.reset(new OpenAL_SoundStream(*this, src, decoder)); + sound.reset(new OpenAL_SoundStream(*this, src, decoder, false)); } catch(std::exception &e) { From b01289128bb50e6216799cbb0e6427bb0df369d9 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 01:15:27 -0700 Subject: [PATCH 258/488] Split OpenAL_Sound into separate classes for 2D and 3D sounds --- apps/openmw/mwsound/openal_output.cpp | 57 ++++++++++++++++++--------- apps/openmw/mwsound/openal_output.hpp | 1 + 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 1b90c62fa1..3ed86cf2bc 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -77,7 +77,6 @@ class OpenAL_SoundStream : public Sound ALuint mBufferSize; DecoderPtr mDecoder; - bool mIs3D; volatile bool mIsFinished; @@ -85,7 +84,7 @@ class OpenAL_SoundStream : public Sound OpenAL_SoundStream& operator=(const OpenAL_SoundStream &rhs); public: - OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder, bool is3D); + OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder); virtual ~OpenAL_SoundStream(); virtual void stop(); @@ -165,8 +164,8 @@ private: }; -OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder, bool is3D) - : mOutput(output), mSource(src), mDecoder(decoder), mIs3D(is3D), mIsFinished(true) +OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, ALuint src, DecoderPtr decoder) + : mOutput(output), mSource(src), mDecoder(decoder), mIsFinished(true) { throwALerror(); @@ -257,10 +256,7 @@ bool OpenAL_SoundStream::isPlaying() void OpenAL_SoundStream::update() { - if(mIs3D && mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) - alSourcef(mSource, AL_GAIN, 0.0f); - else - alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); + alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -318,22 +314,22 @@ bool OpenAL_SoundStream::process() } // -// A regular OpenAL sound +// A regular 2D OpenAL sound // class OpenAL_Sound : public Sound { +protected: OpenAL_Output &mOutput; ALuint mSource; ALuint mBuffer; - bool mIs3D; - +private: OpenAL_Sound(const OpenAL_Sound &rhs); OpenAL_Sound& operator=(const OpenAL_Sound &rhs); public: - OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf, bool is3D); + OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf); virtual ~OpenAL_Sound(); virtual void stop(); @@ -341,8 +337,24 @@ public: virtual void update(); }; -OpenAL_Sound::OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf, bool is3D) - : mOutput(output), mSource(src), mBuffer(buf), mIs3D(is3D) +// +// A regular 3D OpenAL sound +// +class OpenAL_Sound3D : public OpenAL_Sound +{ + OpenAL_Sound3D(const OpenAL_Sound &rhs); + OpenAL_Sound3D& operator=(const OpenAL_Sound &rhs); + +public: + OpenAL_Sound3D(OpenAL_Output &output, ALuint src, ALuint buf) + : OpenAL_Sound(output, src, buf) + { } + + virtual void update(); +}; + +OpenAL_Sound::OpenAL_Sound(OpenAL_Output &output, ALuint src, ALuint buf) + : mOutput(output), mSource(src), mBuffer(buf) { } OpenAL_Sound::~OpenAL_Sound() @@ -372,7 +384,16 @@ bool OpenAL_Sound::isPlaying() void OpenAL_Sound::update() { - if(mIs3D && mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) + alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); + alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); + alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); + alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); + throwALerror(); +} + +void OpenAL_Sound3D::update() +{ + if(mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) alSourcef(mSource, AL_GAIN, 0.0f); else alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); @@ -592,7 +613,7 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float try { buf = getBuffer(fname); - sound.reset(new OpenAL_Sound(*this, src, buf, false)); + sound.reset(new OpenAL_Sound(*this, src, buf)); } catch(std::exception &e) { @@ -641,7 +662,7 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector try { buf = getBuffer(fname); - sound.reset(new OpenAL_Sound(*this, src, buf, true)); + sound.reset(new OpenAL_Sound3D(*this, src, buf)); } catch(std::exception &e) { @@ -692,7 +713,7 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa { DecoderPtr decoder = mManager.getDecoder(); decoder->open(fname); - sound.reset(new OpenAL_SoundStream(*this, src, decoder, false)); + sound.reset(new OpenAL_SoundStream(*this, src, decoder)); } catch(std::exception &e) { diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index f4d4e90afd..35966cc29b 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -57,6 +57,7 @@ namespace MWSound std::auto_ptr mStreamThread; friend class OpenAL_Sound; + friend class OpenAL_Sound3D; friend class OpenAL_SoundStream; friend class SoundManager; }; From 4e908aa0954801549c5d0f8c30bad057e65c5c9e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 01:34:26 -0700 Subject: [PATCH 259/488] Add a method to set the sound's position --- apps/openmw/mwsound/sound.hpp | 1 + apps/openmw/mwsound/soundmanager.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index d2c2d52091..e23830cdb9 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -22,6 +22,7 @@ namespace MWSound public: virtual void stop() = 0; virtual bool isPlaying() = 0; + void setPosition(const Ogre::Vector3 &pos) { mPos = pos; } void setVolume(float volume) { mVolume = volume; } Sound() : mPos(0.0f, 0.0f, 0.0f) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 005df3e7ef..9c26f00846 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -335,7 +335,7 @@ namespace MWSound while(snditer != mActiveSounds.end()) { if(snditer->second.first == ptr) - snditer->first->mPos = objpos; + snditer->first->setPosition(objpos); snditer++; } } From 06a34b9e0d9edf3060690094ec8ed8a0c1194c77 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sat, 31 Mar 2012 10:35:08 +0200 Subject: [PATCH 260/488] Strange problems call for strange solutions. --- components/bsa/bsa_archive.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 6501271597..660b24d560 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -71,6 +71,9 @@ class DirArchive: public Ogre::FileSystemArchive bool findFile(const String& filename, std::string& copy) const { + if (filename.find(".tga") != std::string::npos) + return false; + { String passed = filename; if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' @@ -120,8 +123,8 @@ class DirArchive: public Ogre::FileSystemArchive if (find != current.end() && !comp(copy, current.front())) { std::cout << " found"; - if (copy != *find && !lexicographical_compare(copy, *find, boost::algorithm::is_iless())) - std::cout << ", as different file " << *find; + if (copy != *find && !lexicographical_compare(copy, *find, boost::algorithm::is_iequal())) + std::cout << ", as different file " << *find; std::cout << "." << std::endl; copy = *find; From 28378c063b0b7601e2846d33963834473f35dad3 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 02:22:23 -0700 Subject: [PATCH 261/488] Minor OpenAL_SoundStream cleanups --- apps/openmw/mwsound/openal_output.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 3ed86cf2bc..c40b340c56 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -65,7 +65,7 @@ static ALenum getALFormat(ChannelConfig chans, SampleType type) class OpenAL_SoundStream : public Sound { static const ALuint sNumBuffers = 6; - static const ALfloat sBufferLength; + static const ALfloat sBufferLength = 0.125f; OpenAL_Output &mOutput; @@ -95,7 +95,6 @@ public: bool process(); }; -const ALfloat OpenAL_SoundStream::sBufferLength = 0.125f; // // A background streaming thread (keeps active streams processed) @@ -186,7 +185,6 @@ OpenAL_SoundStream::OpenAL_SoundStream(OpenAL_Output &output, ALuint src, Decode } catch(std::exception &e) { - mOutput.mFreeSources.push_back(mSource); alDeleteBuffers(sNumBuffers, mBuffers); alGetError(); throw; From 3b0dc408ae1866b5a0d702b8fce6e453eb697b47 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sat, 31 Mar 2012 11:29:24 +0200 Subject: [PATCH 262/488] Debug-b-gone --- components/bsa/bsa_archive.cpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 660b24d560..41bff7e40a 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -71,9 +71,6 @@ class DirArchive: public Ogre::FileSystemArchive bool findFile(const String& filename, std::string& copy) const { - if (filename.find(".tga") != std::string::npos) - return false; - { String passed = filename; if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' @@ -116,22 +113,14 @@ class DirArchive: public Ogre::FileSystemArchive current = found->second; } - std::cout << "Finding: " << copy; - pathComparer comp(delimiter, copy.size() - delimiter-1); std::vector::iterator find = std::lower_bound(current.begin(), current.end(), copy, comp); if (find != current.end() && !comp(copy, current.front())) { - std::cout << " found"; - if (copy != *find && !lexicographical_compare(copy, *find, boost::algorithm::is_iequal())) - std::cout << ", as different file " << *find; - - std::cout << "." << std::endl; copy = *find; return true; } - std::cout << " failed." << std::endl; return false; } From 6eb3281c4c504dfc2d6398156ee5c449772325c8 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 31 Mar 2012 11:36:51 +0200 Subject: [PATCH 263/488] boost fix --- apps/mwiniimporter/main.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index fa7a5c512f..059703ea89 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -13,23 +13,23 @@ int main(int argc, char *argv[]) { desc.add_options() ("help,h", "produce help message") ("verbose,v", "verbose output") - ("ini,i", bpo::value()->required(), "morrowind.ini file") - ("cfg,c", bpo::value()->required(), "openmw.cfg file") + ("ini,i", bpo::value(), "morrowind.ini file") + ("cfg,c", bpo::value(), "openmw.cfg file") ("output,o", bpo::value()->default_value(""), "openmw.cfg file") ; - + bpo::variables_map vm; try { bpo::store(boost::program_options::parse_command_line(argc, argv, desc), vm); - + // parse help before calling notify because we dont want it to throw an error if help is set if(vm.count("help")) { std::cout << desc; return 0; } - + bpo::notify(vm); - + } catch(std::exception& e) { std::cerr << "Error:" << e.what() << std::endl; @@ -39,16 +39,16 @@ int main(int argc, char *argv[]) { std::cerr << "Error" << std::endl; return -2; } - + std::string iniFile = vm["ini"].as(); std::string cfgFile = vm["cfg"].as(); - + // if no output is given, write back to cfg file std::string outputFile(vm["output"].as()); if(vm["output"].defaulted()) { outputFile = vm["cfg"].as(); } - + if(!boost::filesystem::exists(iniFile)) { std::cerr << "ini file does not exist" << std::endl; return -3; @@ -57,19 +57,17 @@ int main(int argc, char *argv[]) { std::cerr << "cfg file does not exist" << std::endl; return -4; } - + MwIniImporter importer; importer.setVerbose(vm.count("verbose")); - + std::mapini = importer.loadIniFile(iniFile); std::mapcfg = importer.loadCfgFile(cfgFile); - + importer.merge(cfg, ini); - + std::cout << "write to: " << outputFile << std::endl; importer.writeToFile(outputFile, cfg); - + return 0; } - - From 7541e08909ee3be2655831bdf0a680ea45112a82 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 02:48:14 -0700 Subject: [PATCH 264/488] Don't reset the sound Output device if init fails --- apps/openmw/mwsound/soundmanager.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 9c26f00846..d537a2bbd4 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -62,7 +62,6 @@ namespace MWSound catch(std::exception &e) { std::cout <<"Sound init failed: "< Date: Sat, 31 Mar 2012 03:31:41 -0700 Subject: [PATCH 265/488] Finally "fix" --nosound Expect degraded performance with it. Looping sounds are constantly checked to see if they're playing, and try to play it again when it's not. --- apps/openmw/mwsound/openal_output.cpp | 41 ++++++++++++++++----------- apps/openmw/mwsound/soundmanager.cpp | 5 ++-- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index c40b340c56..6a4e3fe570 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -25,14 +25,20 @@ static void throwALCerror(ALCdevice *device) { ALCenum err = alcGetError(device); if(err != ALC_NO_ERROR) - fail(alcGetString(device, err)); + { + const ALCchar *errstring = alcGetString(device, err); + fail(errstring ? errstring : ""); + } } static void throwALerror() { ALenum err = alGetError(); if(err != AL_NO_ERROR) - fail(alGetString(err)); + { + const ALchar *errstring = alGetString(err); + fail(errstring ? errstring : ""); + } } @@ -424,8 +430,7 @@ std::vector OpenAL_Output::enumerate() void OpenAL_Output::init(const std::string &devname) { - if(mDevice || mContext) - fail("Device already open"); + deinit(); mDevice = alcOpenDevice(devname.c_str()); if(!mDevice) @@ -442,7 +447,12 @@ void OpenAL_Output::init(const std::string &devname) mContext = alcCreateContext(mDevice, NULL); if(!mContext || alcMakeContextCurrent(mContext) == ALC_FALSE) + { + if(mContext) + alcDestroyContext(mContext); + mContext = 0; fail(std::string("Failed to setup context: ")+alcGetString(mDevice, alcGetError(mDevice))); + } alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED); throwALerror(); @@ -598,8 +608,6 @@ void OpenAL_Output::bufferFinished(ALuint buf) SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float pitch, bool loop) { - throwALerror(); - boost::shared_ptr sound; ALuint src=0, buf=0; @@ -647,8 +655,6 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector3 &pos, float volume, float pitch, float min, float max, bool loop) { - throwALerror(); - boost::shared_ptr sound; ALuint src=0, buf=0; @@ -697,8 +703,6 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, float pitch) { - throwALerror(); - boost::shared_ptr sound; ALuint src; @@ -741,15 +745,18 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa void OpenAL_Output::updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir) { - ALfloat orient[6] = { - atdir.x, atdir.z, -atdir.y, - updir.x, updir.z, -updir.y - }; mPos = pos; - alListener3f(AL_POSITION, mPos.x, mPos.z, -mPos.y); - alListenerfv(AL_ORIENTATION, orient); - throwALerror(); + if(mContext) + { + ALfloat orient[6] = { + atdir.x, atdir.z, -atdir.y, + updir.x, updir.z, -updir.y + }; + alListener3f(AL_POSITION, mPos.x, mPos.z, -mPos.y); + alListenerfv(AL_ORIENTATION, orient); + throwALerror(); + } } diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index d537a2bbd4..534b5b6deb 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -41,6 +41,8 @@ namespace MWSound SoundManager::SoundManager(bool useSound, MWWorld::Environment& environment) : mResourceMgr(Ogre::ResourceGroupManager::getSingleton()) , mEnvironment(environment) + , mOutput(new DEFAULT_OUTPUT(*this)) + { if(!useSound) return; @@ -50,8 +52,6 @@ namespace MWSound try { - mOutput.reset(new DEFAULT_OUTPUT(*this)); - std::vector names = mOutput->enumerate(); std::cout <<"Enumerated output devices:"<< std::endl; for(size_t i = 0;i < names.size();i++) @@ -62,7 +62,6 @@ namespace MWSound catch(std::exception &e) { std::cout <<"Sound init failed: "< Date: Sat, 31 Mar 2012 14:50:10 +0400 Subject: [PATCH 266/488] Merge branch 'master' into pgrd-rendering Conflicts: apps/openmw/mwrender/debugging.cpp --- apps/openmw/engine.cpp | 9 +- apps/openmw/mwrender/debugging.cpp | 6 +- components/bsa/bsa_archive.cpp | 170 +++++++++++-------------- components/files/collections.cpp | 5 + components/files/collections.hpp | 2 + components/nifogre/ogre_nif_loader.cpp | 2 +- libs/openengine/bullet/physic.cpp | 10 +- libs/openengine/bullet/physic.hpp | 3 + 8 files changed, 104 insertions(+), 103 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 441c227699..38050e53b4 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -204,13 +204,18 @@ OMW::Engine::~Engine() void OMW::Engine::loadBSA() { const Files::MultiDirCollection& bsa = mFileCollections.getCollection (".bsa"); - std::string dataDirectory; + for (Files::MultiDirCollection::TIter iter(bsa.begin()); iter!=bsa.end(); ++iter) { std::cout << "Adding " << iter->second.string() << std::endl; Bsa::addBSA(iter->second.string()); + } - dataDirectory = iter->second.parent_path().string(); + const Files::PathContainer& dataDirs = mFileCollections.getPaths(); + std::string dataDirectory; + for (Files::PathContainer::const_iterator iter = dataDirs.begin(); iter != dataDirs.end(); ++iter) + { + dataDirectory = iter->string(); std::cout << "Data dir " << dataDirectory << std::endl; Bsa::addDir(dataDirectory, mFSStrict); } diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index aa98f433fd..ea7f143bb2 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -121,11 +121,7 @@ bool Debugging::toggleRenderMode (int mode){ switch (mode) { case MWWorld::World::Render_CollisionDebug: - - // TODO use a proper function instead of accessing the member variable - // directly. - mEngine->setDebugRenderingMode (!mEngine->isDebugCreated); - return mEngine->isDebugCreated; + return mEngine->toggleDebugRendering(); case MWWorld::World::Render_Pathgrid: togglePathgrid(); return mPathgridEnabled; diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 80d92dd521..41bff7e40a 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -45,6 +45,20 @@ struct ciLessBoost : std::binary_function } }; +struct pathComparer +{ +private: + int m_start, m_size; + +public: + pathComparer(int start, int size) : m_start(start), m_size(size) { } + + bool operator() (const std::string& first, const std::string& other) + { + return lexicographical_compare(first.substr(m_start,m_size), other.substr(m_start,m_size), boost::algorithm::is_iless()); + } +}; + static bool fsstrict = false; /// An OGRE Archive wrapping a BSAFile archive @@ -55,16 +69,59 @@ class DirArchive: public Ogre::FileSystemArchive std::map, ciLessBoost> m; unsigned int cutoff; - bool comparePortion(std::string file1, std::string file2, int start, int size) const + bool findFile(const String& filename, std::string& copy) const { - for(int i = start; i < start+size; i++) { - char one = file1.at(i); - char two = file2.at(i); - if(tolower(one) != tolower(two) ) - return false; + String passed = filename; + if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' + || filename.at(filename.length() - 1) == '"' || filename.at(filename.length() - 1) == '>' || filename.at(filename.length() - 1) == ':' + || filename.at(filename.length() - 1) == '|') + { + passed = filename.substr(0, filename.length() - 2); + } + if(filename.at(filename.length() - 2) == '>') + passed = filename.substr(0, filename.length() - 6); + copy = passed; } - return true; + + std::replace(copy.begin(), copy.end(), '\\', '/'); + + if(copy.at(0) == '/') + copy.erase(0, 1); + + if(fsstrict == true) + return true; + + std::string folder; + int delimiter = 0; + size_t lastSlash = copy.rfind('/'); + if (lastSlash != std::string::npos) + { + folder = copy.substr(0, lastSlash); + delimiter = lastSlash+1; + } + + std::vector current; + { + std::map,ciLessBoost>::const_iterator found = m.find(folder); + + if (found == m.end()) + { + return false; + } + else + current = found->second; + } + + pathComparer comp(delimiter, copy.size() - delimiter-1); + std::vector::iterator find = std::lower_bound(current.begin(), current.end(), copy, comp); + if (find != current.end() && !comp(copy, current.front())) + { + copy = *find; + return true; + } + + return false; } public: @@ -83,16 +140,14 @@ class DirArchive: public Ogre::FileSystemArchive //need to cut off first boost::filesystem::directory_iterator dir_iter(d), dir_end; std::vector filesind; - boost::filesystem::path f; for(;dir_iter != dir_end; dir_iter++) { if(boost::filesystem::is_directory(*dir_iter)) populateMap(*dir_iter); else { - - f = *dir_iter; - std::string s = f.string(); + std::string s = dir_iter->path().string(); + std::replace(s.begin(), s.end(), '\\', '/'); std::string small; if(cutoff < s.size()) @@ -103,14 +158,17 @@ class DirArchive: public Ogre::FileSystemArchive filesind.push_back(small); } } + std::sort(filesind.begin(), filesind.end(), ciLessBoost()); + std::string small; std::string original = d.string(); + std::replace(original.begin(), original.end(), '\\', '/'); if(cutoff < original.size()) small = original.substr(cutoff, original.size() - cutoff); else small = original.substr(cutoff - 1, original.size() - cutoff); - m[small] = filesind; + m[small] = filesind; } bool isCaseSensitive() const { return fsstrict; } @@ -120,97 +178,21 @@ class DirArchive: public Ogre::FileSystemArchive void unload() {} bool exists(const String& filename) { - std::string copy = filename; - - - - for (unsigned int i = 0; i < filename.size(); i++) - { - if(copy.at(i) == '\\' ){ - copy.replace(i, 1, "/"); - } - } - - - if(copy.at(0) == '\\' || copy.at(0) == '/') - { - copy.erase(0, 1); - } - if(fsstrict == true) - { - //std::cout << "fsstrict " << copy << "\n"; + std::string copy; + + if (findFile(filename, copy)) return FileSystemArchive::exists(copy); - } - - - int last = copy.size() - 1; - int i = last; - - for (;last >= 0; i--) - { - if(copy.at(i) == '/' || copy.at(i) == '\\') - break; - } - - std::string folder = copy.substr(0, i); //folder with no slash - - std::vector& current = m[folder]; - - for(std::vector::iterator iter = current.begin(); iter != current.end(); iter++) - { - if(comparePortion(*iter, copy, i + 1, copy.size() - i -1) == true){ - return FileSystemArchive::exists(*iter); - } - } - return false; } DataStreamPtr open(const String& filename, bool readonly = true) const { - std::map, ciLessBoost> mlocal = m; - std::string copy = filename; + std::string copy; - - - for (unsigned int i = 0; i < filename.size(); i++) - { - if(copy.at(i) == '\\' ){ - copy.replace(i, 1, "/"); - } - } - - - if(copy.at(0) == '\\' || copy.at(0) == '/') - { - copy.erase(0, 1); - } - - if(fsstrict == true) - { + if (findFile(filename, copy)) return FileSystemArchive::open(copy, readonly); - } - - - int last = copy.size() - 1; - int i = last; - - for (;last >= 0; i--) - { - if(copy.at(i) == '/' || copy.at(i) == '\\') - break; - } - - std::string folder = copy.substr(0, i); //folder with no slash - std::vector current = mlocal[folder]; - - for(std::vector::iterator iter = current.begin(); iter != current.end(); iter++) - { - if(comparePortion(*iter, copy, i + 1, copy.size() - i -1) == true){ - return FileSystemArchive::open(*iter, readonly); - } - } + DataStreamPtr p; return p; } diff --git a/components/files/collections.cpp b/components/files/collections.cpp index 424b558e60..50340dca4d 100644 --- a/components/files/collections.cpp +++ b/components/files/collections.cpp @@ -30,4 +30,9 @@ namespace Files return iter->second; } + + const Files::PathContainer& Collections::getPaths() const + { + return mDirectories; + } } diff --git a/components/files/collections.hpp b/components/files/collections.hpp index 1ddca9a5b7..70aaec55e3 100644 --- a/components/files/collections.hpp +++ b/components/files/collections.hpp @@ -21,6 +21,8 @@ namespace Files /// leading dot and must be all lower-case. const MultiDirCollection& getCollection(const std::string& extension) const; + const Files::PathContainer& getPaths() const; + private: typedef std::map MultiDirCollectionContainer; Files::PathContainer mDirectories; diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index f943231d0d..2ab6ae6211 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -1368,7 +1368,7 @@ void NIFLoader::loadResource(Resource *resource) if (!vfs->isFile(resourceName)) { - warn("File not found."); + warn("File "+resourceName+" not found."); return; } diff --git a/libs/openengine/bullet/physic.cpp b/libs/openengine/bullet/physic.cpp index 8b9f3dfecb..cc1f907a01 100644 --- a/libs/openengine/bullet/physic.cpp +++ b/libs/openengine/bullet/physic.cpp @@ -151,7 +151,8 @@ namespace Physic - PhysicEngine::PhysicEngine(BulletShapeLoader* shapeLoader) + PhysicEngine::PhysicEngine(BulletShapeLoader* shapeLoader) : + mDebugActive(0) { // Set up the collision configuration and dispatcher collisionConfiguration = new btDefaultCollisionConfiguration(); @@ -203,6 +204,13 @@ namespace Physic createDebugRendering(); } mDebugDrawer->setDebugMode(mode); + mDebugActive = mode; + } + + bool PhysicEngine::toggleDebugRendering() + { + setDebugRenderingMode(!mDebugActive); + return mDebugActive; } PhysicEngine::~PhysicEngine() diff --git a/libs/openengine/bullet/physic.hpp b/libs/openengine/bullet/physic.hpp index 57ffe91305..16dac96f4c 100644 --- a/libs/openengine/bullet/physic.hpp +++ b/libs/openengine/bullet/physic.hpp @@ -199,6 +199,8 @@ namespace Physic */ void setDebugRenderingMode(int mode); + bool toggleDebugRendering(); + /** * Return the closest object hit by a ray. If there are no objects, it will return ("",-1). */ @@ -230,6 +232,7 @@ namespace Physic //debug rendering BtOgre::DebugDrawer* mDebugDrawer; bool isDebugCreated; + bool mDebugActive; }; }} From 006e1cde850ea81e44b4758934a300ec2aae2018 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sat, 31 Mar 2012 14:56:54 +0400 Subject: [PATCH 267/488] some updates after terrain merge --- apps/openmw/mwrender/debugging.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index ea7f143bb2..179c6e0a4d 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -180,12 +180,10 @@ void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) if (!pathgrid) return; Vector3 cellPathGridPos; - /// \todo replace tests like this with isExterior method of ESM::Cell after merging with terrain branch - if (!(store->cell->data.flags & ESM::Cell::Interior)) + if (store->cell->isExterior()) { - /// \todo Replace with ESM::Land::REAL_SIZE after merging with terrain branch - cellPathGridPos.x = store->cell->data.gridX * 8192; - cellPathGridPos.y = store->cell->data.gridY * 8192; + cellPathGridPos.x = store->cell->data.gridX * ESM::Land::REAL_SIZE; + cellPathGridPos.y = store->cell->data.gridY * ESM::Land::REAL_SIZE; } SceneNode *cellPathGrid = mPathGridRoot->createChildSceneNode(cellPathGridPos); ESM::Pathgrid::PointList points = pathgrid->points; @@ -207,7 +205,7 @@ void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) Vector3(p2.x, p2.y, p2.z))); } - if (!(store->cell->data.flags & ESM::Cell::Interior)) + if (store->cell->isExterior()) { mExteriorPathgridNodes[std::make_pair(store->cell->data.gridX, store->cell->data.gridY)] = cellPathGrid; } @@ -220,7 +218,7 @@ void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) void Debugging::disableCellPathgrid(MWWorld::Ptr::CellStore *store) { - if (!(store->cell->data.flags & ESM::Cell::Interior)) + if (store->cell->isExterior()) { ExteriorPathgridNodes::iterator it = mExteriorPathgridNodes.find(std::make_pair(store->cell->data.gridX, store->cell->data.gridY)); From 82429d69316ae8c12c6633d414aadbfec2e694f4 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 13:35:40 +0200 Subject: [PATCH 268/488] finished interface --- components/settings/settings.cpp | 42 +++++++++++++++++++++++++++++--- components/settings/settings.hpp | 14 ++++++++--- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/components/settings/settings.cpp b/components/settings/settings.cpp index 157de0b4d0..500d3c6e63 100644 --- a/components/settings/settings.cpp +++ b/components/settings/settings.cpp @@ -10,17 +10,22 @@ using namespace Settings; Ogre::ConfigFile Manager::mFile = Ogre::ConfigFile(); Ogre::ConfigFile Manager::mDefaultFile = Ogre::ConfigFile(); -void Manager::load(const std::string& file) +void Manager::loadUser (const std::string& file) { mFile.load(file); } -void Manager::loadDefault(const std::string& file) +void Manager::loadDefault (const std::string& file) { mDefaultFile.load(file); } -void Manager::save(const std::string& file) +void Manager::copyDefaultToUserSettings () +{ + mFile = mDefaultFile; +} + +void Manager::saveUser(const std::string& file) { std::fstream fout(file.c_str(), std::ios::out); @@ -39,6 +44,8 @@ void Manager::save(const std::string& file) { fout << i->first.c_str() << '=' << i->second.c_str() << '\n'; } + + seci.getNext(); } } @@ -62,3 +69,32 @@ const bool Manager::getBool (const std::string& setting, const std::string& cate { return Ogre::StringConverter::parseBool( getString(setting, category) ); } + +void Manager::setString (const std::string& setting, const std::string& category, const std::string& value) +{ + Ogre::ConfigFile::SettingsIterator it = mFile.getSettingsIterator(category); + while (it.hasMoreElements()) + { + Ogre::ConfigFile::SettingsMultiMap::iterator i = it.current(); + + if ((*i).first == setting) + (*i).second = value; + + it.getNext(); + } +} + +void Manager::setInt (const std::string& setting, const std::string& category, const int value) +{ + setString(setting, category, Ogre::StringConverter::toString(value)); +} + +void Manager::setFloat (const std::string& setting, const std::string& category, const float value) +{ + setString(setting, category, Ogre::StringConverter::toString(value)); +} + +void Manager::setBool (const std::string& setting, const std::string& category, const bool value) +{ + setString(setting, category, Ogre::StringConverter::toString(value)); +} diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp index ae6f1a9de7..46f8139c49 100644 --- a/components/settings/settings.hpp +++ b/components/settings/settings.hpp @@ -18,16 +18,24 @@ namespace Settings void loadDefault (const std::string& file); ///< load file as the default settings (can be overridden by user settings) - void load (const std::string& file); + void copyDefaultToUserSettings (); + ///< copy the default settings to the user settings (useful when there are no user settings yet) + + void loadUser (const std::string& file); ///< load file as user settings - void save (const std::string& file); - ///< save to file + void saveUser (const std::string& file); + ///< save user settings to file static const int getInt (const std::string& setting, const std::string& category); static const float getFloat (const std::string& setting, const std::string& category); static const std::string getString (const std::string& setting, const std::string& category); static const bool getBool (const std::string& setting, const std::string& category); + + static void setInt (const std::string& setting, const std::string& category, const int value); + static void setFloat (const std::string& setting, const std::string& category, const float value); + static void setString (const std::string& setting, const std::string& category, const std::string& value); + static void setBool (const std::string& setting, const std::string& category, const bool value); }; } From 5e829362cb2d7cb12b14c3316f854da5920aa6ea Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sat, 31 Mar 2012 16:22:55 +0400 Subject: [PATCH 269/488] Feature #37 (In Progress) Render Path Grid more similar to vanilla path grid rendering --- apps/openmw/mwrender/debugging.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index 179c6e0a4d..f768de661f 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -201,8 +201,13 @@ void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) { ESM::Pathgrid::Edge edge = *it; ESM::Pathgrid::Point p1 = points[edge.v0], p2 = points[edge.v1]; - cellPathGrid->attachObject(createPathgridLine(Vector3(p1.x, p1.y, p1.z), - Vector3(p2.x, p2.y, p2.z))); + + Vector3 direction = (Vector3(p2.x, p2.y, p2.z) - Vector3(p1.x, p1.y, p1.z)); + Vector3 lineDisplacement = direction.crossProduct(Vector3::UNIT_Z).normalisedCopy(); + lineDisplacement = lineDisplacement * POINT_MESH_BASE/2 + + Vector3(0, 0, 10); // move lines up a little, so they will be less covered by meshes/landscape + cellPathGrid->attachObject(createPathgridLine(Vector3(p1.x, p1.y, p1.z) + lineDisplacement, + Vector3(p2.x, p2.y, p2.z) + lineDisplacement)); } if (store->cell->isExterior()) From e35670c6cba25e055b6cda9dc2e3ad2ae005997d Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 14:28:19 +0200 Subject: [PATCH 270/488] ignore syntax errors and empty lines; fixed merge function --- apps/mwiniimporter/importer.cpp | 37 +++++++++++++++------------------ apps/mwiniimporter/importer.hpp | 14 ++++++------- 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index f662f42d64..9a76adeed8 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -25,19 +25,16 @@ strmap MwIniImporter::loadIniFile(std::string filename) { if(line[0] == '[') { if(line.length() > 2) { section = line.substr(1, line.length()-3); - continue; } - throw IniParseException(); + continue; } int pos = line.find("="); if(pos < 1) { - throw IniParseException(); + continue; } - map.insert(std::pair( - section + " " + line.substr(0,pos), line.substr(pos+1) - )); + map.insert(STRPAIR(section + ":" + line.substr(0,pos), line.substr(pos+1))); } return map; @@ -68,32 +65,32 @@ strmap MwIniImporter::loadCfgFile(std::string filename) { int pos = line.find("="); if(pos < 1) { - throw IniParseException(); + continue; } - map.insert(std::pair( - line.substr(0,pos), line.substr(pos+1) - )); + map.insert(STRPAIR(line.substr(0,pos), line.substr(pos+1))); } return map; } void MwIniImporter::merge(strmap &cfg, strmap &ini) { - strmap::iterator ini_it; - for(strmap::iterator it=cfg.begin(); it != cfg.end(); it++) { - ini_it = ini.find(it->first); - - // found a key in both files - if(ini_it != ini.end()) { - cfg.erase(it); - cfg.insert(std::pair( - ini_it->first, ini_it->second - )); + strmap::iterator cfgIt; + strmap::iterator iniIt; + for(strmap::iterator it=mMergeMap.begin(); it!=mMergeMap.end(); it++) { + if((iniIt = ini.find(it->second)) != ini.end()) { + cfg.erase(it->first); + if(!this->specialMerge(it->first, it->second, cfg, ini)) { + cfg.insert(STRPAIR(it->first, iniIt->second)); + } } } } +bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, strmap cfg, strmap ini) { + return false; +} + void MwIniImporter::writeToFile(std::string file, strmap &cfg) { boost::iostreams::stream out(file); diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 1933830f21..3ab1d892ee 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -5,17 +5,16 @@ #include #include -typedef std::map strmap; -class IniParseException : public std::exception { - virtual const char* what() const throw() { - return "unexpected end of line"; - } -}; +typedef std::map strmap; +#define STRPAIR std::make_pair class MwIniImporter { public: + MwIniImporter() { + mMergeMap.insert(STRPAIR("fps", "General:Show FPS")); + }; void setVerbose(bool verbose); strmap loadIniFile(std::string filename); strmap loadCfgFile(std::string filename); @@ -23,8 +22,9 @@ class MwIniImporter { void writeToFile(std::string file, strmap &cfg); private: + bool specialMerge(std::string cfgKey, std::string iniKey, strmap cfg, strmap ini); bool mVerbose; - + strmap mMergeMap; }; From b7635b3d4a12bacf31a0c4d7aad92bfaacd2b711 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 14:34:00 +0200 Subject: [PATCH 271/488] pass maps by reference --- apps/mwiniimporter/importer.cpp | 2 +- apps/mwiniimporter/importer.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 9a76adeed8..041712b216 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -87,7 +87,7 @@ void MwIniImporter::merge(strmap &cfg, strmap &ini) { } } -bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, strmap cfg, strmap ini) { +bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, strmap &cfg, strmap &ini) { return false; } diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 3ab1d892ee..d0034a13d4 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -22,7 +22,7 @@ class MwIniImporter { void writeToFile(std::string file, strmap &cfg); private: - bool specialMerge(std::string cfgKey, std::string iniKey, strmap cfg, strmap ini); + bool specialMerge(std::string cfgKey, std::string iniKey, strmap &cfg, strmap &ini); bool mVerbose; strmap mMergeMap; }; From e48d125a84165489825103ddfeabfb6e1095f74a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 05:57:03 -0700 Subject: [PATCH 272/488] Only allow one instance of a given tracked soundid The untracked flag should probably be broken up and combined with the loop boolean into a set of flags. --- apps/openmw/mwsound/soundmanager.cpp | 42 +++++++++++++++++++++++++--- apps/openmw/mwsound/soundmanager.hpp | 3 ++ 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 534b5b6deb..9a71ef4210 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -67,6 +67,7 @@ namespace MWSound SoundManager::~SoundManager() { + mSingleSounds.clear(); mActiveSounds.clear(); mMusic.reset(); mOutput.reset(); @@ -231,15 +232,29 @@ namespace MWSound float volume, float pitch, bool loop, bool untracked) { + const ESM::Position &pos = ptr.getCellRef().pos; + const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); SoundPtr sound; + + if(!untracked) + { + IDSoundMap::iterator inviter = mSingleSounds.find(soundId); + if(inviter != mSingleSounds.end()) + { + if(inviter->second->mPos.squaredDistance(mOutput->mPos) < + objpos.squaredDistance(mOutput->mPos)) + return sound; + inviter->second->stop(); + mSingleSounds.erase(inviter); + } + } + try { // Look up the sound in the ESM data float basevol = 1.0f; /* TODO: volume settings */ float min, max; std::string file = lookup(soundId, basevol, min, max); - const ESM::Position &pos = ptr.getCellRef().pos; - const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); sound = mOutput->playSound3D(file, objpos, volume*basevol, pitch, min, max, loop); sound->mPos = objpos; @@ -248,8 +263,13 @@ namespace MWSound sound->mMinDistance = min; sound->mMaxDistance = max; - mActiveSounds[sound] = (!untracked ? std::make_pair(ptr, soundId) : - std::make_pair(MWWorld::Ptr(), soundId)); + if(untracked) + mActiveSounds[sound] = std::make_pair(MWWorld::Ptr(), soundId); + else + { + mActiveSounds[sound] = std::make_pair(ptr, soundId); + mSingleSounds[soundId] = sound; + } } catch(std::exception &e) { @@ -265,6 +285,9 @@ namespace MWSound { if(snditer->second.first == ptr && snditer->second.second == soundId) { + IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); + if(inviter != mSingleSounds.end() && inviter->second == snditer->first) + mSingleSounds.erase(inviter); snditer->first->stop(); mActiveSounds.erase(snditer++); } @@ -280,6 +303,9 @@ namespace MWSound { if(snditer->second.first == ptr) { + IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); + if(inviter != mSingleSounds.end() && inviter->second == snditer->first) + mSingleSounds.erase(inviter); snditer->first->stop(); mActiveSounds.erase(snditer++); } @@ -296,6 +322,9 @@ namespace MWSound if(snditer->second.first != MWWorld::Ptr() && snditer->second.first.getCell() == cell) { + IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); + if(inviter != mSingleSounds.end() && inviter->second == snditer->first) + mSingleSounds.erase(inviter); snditer->first->stop(); mActiveSounds.erase(snditer++); } @@ -424,7 +453,12 @@ namespace MWSound while(snditer != mActiveSounds.end()) { if(!snditer->first->isPlaying()) + { + IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); + if(inviter != mSingleSounds.end() && inviter->second == snditer->first) + mSingleSounds.erase(inviter); mActiveSounds.erase(snditer++); + } else { snditer->first->update(); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 3ab1e881c3..3ab2b569ea 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -45,6 +45,9 @@ namespace MWSound typedef std::map SoundMap; SoundMap mActiveSounds; + typedef std::map IDSoundMap; + IDSoundMap mSingleSounds; + std::string lookup(const std::string &soundId, float &volume, float &min, float &max); void streamMusicFull(const std::string& filename); From ae308b9b5fc4c73859167d4390cb61a2b264bc2f Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 07:31:55 -0700 Subject: [PATCH 273/488] Use a set of flags instead of separate booleans --- apps/openmw/mwclass/apparatus.cpp | 2 +- apps/openmw/mwclass/armor.cpp | 2 +- apps/openmw/mwclass/book.cpp | 2 +- apps/openmw/mwclass/clothing.cpp | 2 +- apps/openmw/mwclass/container.cpp | 4 ++-- apps/openmw/mwclass/door.cpp | 6 +++--- apps/openmw/mwclass/ingredient.cpp | 2 +- apps/openmw/mwclass/light.cpp | 4 ++-- apps/openmw/mwclass/lockpick.cpp | 2 +- apps/openmw/mwclass/misc.cpp | 2 +- apps/openmw/mwclass/potion.cpp | 2 +- apps/openmw/mwclass/probe.cpp | 2 +- apps/openmw/mwclass/repair.cpp | 2 +- apps/openmw/mwclass/weapon.cpp | 2 +- apps/openmw/mwscript/soundextensions.cpp | 4 ++-- apps/openmw/mwsound/soundmanager.cpp | 13 ++++++------- apps/openmw/mwsound/soundmanager.hpp | 21 ++++++++++++++++++--- 17 files changed, 44 insertions(+), 30 deletions(-) diff --git a/apps/openmw/mwclass/apparatus.cpp b/apps/openmw/mwclass/apparatus.cpp index e95fb572f3..d27d0bc71d 100644 --- a/apps/openmw/mwclass/apparatus.cpp +++ b/apps/openmw/mwclass/apparatus.cpp @@ -56,7 +56,7 @@ namespace MWClass boost::shared_ptr Apparatus::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/armor.cpp b/apps/openmw/mwclass/armor.cpp index e1c2734f0e..9956a56fb5 100644 --- a/apps/openmw/mwclass/armor.cpp +++ b/apps/openmw/mwclass/armor.cpp @@ -60,7 +60,7 @@ namespace MWClass boost::shared_ptr Armor::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/book.cpp b/apps/openmw/mwclass/book.cpp index 0a81ebafb7..76370dc5c0 100644 --- a/apps/openmw/mwclass/book.cpp +++ b/apps/openmw/mwclass/book.cpp @@ -58,7 +58,7 @@ namespace MWClass { // TODO implement reading - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/clothing.cpp b/apps/openmw/mwclass/clothing.cpp index 4fe19ada40..2357851d75 100644 --- a/apps/openmw/mwclass/clothing.cpp +++ b/apps/openmw/mwclass/clothing.cpp @@ -57,7 +57,7 @@ namespace MWClass boost::shared_ptr Clothing::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/container.cpp b/apps/openmw/mwclass/container.cpp index c58a25c03e..29b3331ba9 100644 --- a/apps/openmw/mwclass/container.cpp +++ b/apps/openmw/mwclass/container.cpp @@ -85,7 +85,7 @@ namespace MWClass { // TODO check for key std::cout << "Locked container" << std::endl; - environment.mSoundManager->playSound3D (ptr, lockedSound, 1.0, 1.0, false); + environment.mSoundManager->playSound3D (ptr, lockedSound, 1.0, 1.0); return boost::shared_ptr (new MWWorld::NullAction); } else @@ -100,7 +100,7 @@ namespace MWClass { // Trap activation goes here std::cout << "Activated trap: " << ptr.getCellRef().trap << std::endl; - environment.mSoundManager->playSound3D (ptr, trapActivationSound, 1.0, 1.0, false); + environment.mSoundManager->playSound3D (ptr, trapActivationSound, 1.0, 1.0); ptr.getCellRef().trap = ""; return boost::shared_ptr (new MWWorld::NullAction); } diff --git a/apps/openmw/mwclass/door.cpp b/apps/openmw/mwclass/door.cpp index 5654dff698..9d6c6a78dc 100644 --- a/apps/openmw/mwclass/door.cpp +++ b/apps/openmw/mwclass/door.cpp @@ -73,7 +73,7 @@ namespace MWClass // TODO check for key // TODO report failure to player (message, sound?). Look up behaviour of original MW. std::cout << "Locked!" << std::endl; - environment.mSoundManager->playSound3D (ptr, lockedSound, 1.0, 1.0, false); + environment.mSoundManager->playSound3D (ptr, lockedSound, 1.0, 1.0); return boost::shared_ptr (new MWWorld::NullAction); } @@ -81,7 +81,7 @@ namespace MWClass { // Trap activation std::cout << "Activated trap: " << ptr.getCellRef().trap << std::endl; - environment.mSoundManager->playSound3D(ptr, trapActivationSound, 1.0, 1.0, false); + environment.mSoundManager->playSound3D(ptr, trapActivationSound, 1.0, 1.0); ptr.getCellRef().trap = ""; return boost::shared_ptr (new MWWorld::NullAction); } @@ -110,7 +110,7 @@ namespace MWClass // TODO return action for rotating the door // This is a little pointless, but helps with testing - environment.mSoundManager->playSound3D (ptr, openSound, 1.0, 1.0, false); + environment.mSoundManager->playSound3D (ptr, openSound, 1.0, 1.0); return boost::shared_ptr (new MWWorld::NullAction); } } diff --git a/apps/openmw/mwclass/ingredient.cpp b/apps/openmw/mwclass/ingredient.cpp index 1a7edf6325..cbe153ba3a 100644 --- a/apps/openmw/mwclass/ingredient.cpp +++ b/apps/openmw/mwclass/ingredient.cpp @@ -54,7 +54,7 @@ namespace MWClass boost::shared_ptr Ingredient::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/light.cpp b/apps/openmw/mwclass/light.cpp index e2e63a89bb..71e4775916 100644 --- a/apps/openmw/mwclass/light.cpp +++ b/apps/openmw/mwclass/light.cpp @@ -59,7 +59,7 @@ namespace MWClass if (!ref->base->sound.empty()) { - environment.mSoundManager->playSound3D (ptr, ref->base->sound, 1.0, 1.0, true); + environment.mSoundManager->playSound3D (ptr, ref->base->sound, 1.0, 1.0, MWSound::Play_Loop); } } @@ -83,7 +83,7 @@ namespace MWClass if (!(ref->base->data.flags & ESM::Light::Carry)) return boost::shared_ptr (new MWWorld::NullAction); - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/lockpick.cpp b/apps/openmw/mwclass/lockpick.cpp index 3dda2f4af0..1eef0db8ba 100644 --- a/apps/openmw/mwclass/lockpick.cpp +++ b/apps/openmw/mwclass/lockpick.cpp @@ -58,7 +58,7 @@ namespace MWClass boost::shared_ptr Lockpick::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/misc.cpp b/apps/openmw/mwclass/misc.cpp index 864fc1e382..def1a90a86 100644 --- a/apps/openmw/mwclass/misc.cpp +++ b/apps/openmw/mwclass/misc.cpp @@ -56,7 +56,7 @@ namespace MWClass boost::shared_ptr Miscellaneous::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/potion.cpp b/apps/openmw/mwclass/potion.cpp index 4ab3745900..ed1733e2d2 100644 --- a/apps/openmw/mwclass/potion.cpp +++ b/apps/openmw/mwclass/potion.cpp @@ -56,7 +56,7 @@ namespace MWClass boost::shared_ptr Potion::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/probe.cpp b/apps/openmw/mwclass/probe.cpp index 4b4d79a73e..8013e2e80f 100644 --- a/apps/openmw/mwclass/probe.cpp +++ b/apps/openmw/mwclass/probe.cpp @@ -57,7 +57,7 @@ namespace MWClass boost::shared_ptr Probe::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/repair.cpp b/apps/openmw/mwclass/repair.cpp index 758bf40797..d49979861b 100644 --- a/apps/openmw/mwclass/repair.cpp +++ b/apps/openmw/mwclass/repair.cpp @@ -56,7 +56,7 @@ namespace MWClass boost::shared_ptr Repair::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwclass/weapon.cpp b/apps/openmw/mwclass/weapon.cpp index 20db0cf38f..e36e9202fa 100644 --- a/apps/openmw/mwclass/weapon.cpp +++ b/apps/openmw/mwclass/weapon.cpp @@ -57,7 +57,7 @@ namespace MWClass boost::shared_ptr Weapon::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const { - environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, false, true); + environment.mSoundManager->playSound3D (ptr, getUpSoundId(ptr, environment), 1.0, 1.0, MWSound::Play_NoTrack); return boost::shared_ptr ( new MWWorld::ActionTake (ptr)); diff --git a/apps/openmw/mwscript/soundextensions.cpp b/apps/openmw/mwscript/soundextensions.cpp index d5cc41b76f..7ae109075d 100644 --- a/apps/openmw/mwscript/soundextensions.cpp +++ b/apps/openmw/mwscript/soundextensions.cpp @@ -130,7 +130,7 @@ namespace MWScript std::string sound = runtime.getStringLiteral (runtime[0].mInteger); runtime.pop(); - context.getSoundManager().playSound3D (ptr, sound, 1.0, 1.0, mLoop); + context.getSoundManager().playSound3D (ptr, sound, 1.0, 1.0, MWSound::Play_Single | (mLoop ? MWSound::Play_Loop : 0)); } }; @@ -159,7 +159,7 @@ namespace MWScript Interpreter::Type_Float pitch = runtime[0].mFloat; runtime.pop(); - context.getSoundManager().playSound3D (ptr, sound, volume, pitch, mLoop); + context.getSoundManager().playSound3D (ptr, sound, volume, pitch, MWSound::Play_Single | (mLoop ? MWSound::Play_Loop : 0)); } }; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 9a71ef4210..2d743d9cbf 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -204,7 +204,7 @@ namespace MWSound } - SoundPtr SoundManager::playSound(const std::string& soundId, float volume, float pitch, bool loop) + SoundPtr SoundManager::playSound(const std::string& soundId, float volume, float pitch, int mode) { SoundPtr sound; try @@ -213,7 +213,7 @@ namespace MWSound float min, max; std::string file = lookup(soundId, basevol, min, max); - sound = mOutput->playSound(file, volume*basevol, pitch, loop); + sound = mOutput->playSound(file, volume*basevol, pitch, mode&Play_Loop); sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; @@ -229,14 +229,13 @@ namespace MWSound } SoundPtr SoundManager::playSound3D(MWWorld::Ptr ptr, const std::string& soundId, - float volume, float pitch, bool loop, - bool untracked) + float volume, float pitch, int mode) { const ESM::Position &pos = ptr.getCellRef().pos; const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); SoundPtr sound; - if(!untracked) + if((mode&Play_Single)) { IDSoundMap::iterator inviter = mSingleSounds.find(soundId); if(inviter != mSingleSounds.end()) @@ -256,14 +255,14 @@ namespace MWSound float min, max; std::string file = lookup(soundId, basevol, min, max); - sound = mOutput->playSound3D(file, objpos, volume*basevol, pitch, min, max, loop); + sound = mOutput->playSound3D(file, objpos, volume*basevol, pitch, min, max, mode&Play_Loop); sound->mPos = objpos; sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; sound->mMaxDistance = max; - if(untracked) + if((mode&Play_NoTrack)) mActiveSounds[sound] = std::make_pair(MWWorld::Ptr(), soundId); else { diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 3ab2b569ea..03cacca237 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -30,6 +30,22 @@ namespace MWSound typedef boost::shared_ptr DecoderPtr; typedef boost::shared_ptr SoundPtr; + enum PlayMode { + Play_Normal = 0, /* tracked, non-looping, multi-instance, environment */ + Play_Loop = 1<<0, /* Sound will continually loop until explicitly stopped */ + Play_NoEnv = 1<<1, /* Do not apply environment effects (eg, underwater filters) */ + Play_NoTrack = 1<<2, /* (3D only) Play the sound at the given object's position + * but do not keep it updated (the sound will not move with + * the object and will not stop when the object is deleted. */ + Play_Single = 1<<3, /* (3D only) Play only a single instance of the given sound id. + * Sounds not marked as Single will not count, and all but the + * closest to the listener's position will be stopped. */ + }; + static inline int operator|(const PlayMode &a, const PlayMode &b) + { return (int)a | (int)b; } + static inline int operator&(const PlayMode &a, const PlayMode &b) + { return (int)a & (int)b; } + class SoundManager { Ogre::ResourceGroupManager& mResourceMgr; @@ -90,12 +106,11 @@ namespace MWSound bool sayDone(MWWorld::Ptr reference) const; ///< Is actor not speaking? - SoundPtr playSound(const std::string& soundId, float volume, float pitch, bool loop=false); + SoundPtr playSound(const std::string& soundId, float volume, float pitch, int mode=Play_Normal); ///< Play a sound, independently of 3D-position SoundPtr playSound3D(MWWorld::Ptr reference, const std::string& soundId, - float volume, float pitch, bool loop, - bool untracked=false); + float volume, float pitch, int mode=Play_Normal); ///< Play a sound from an object void stopSound3D(MWWorld::Ptr reference, const std::string& soundId); From 977e7ac9a3c49a4771c2f8ede2193429399a5ee0 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 07:41:26 -0700 Subject: [PATCH 274/488] Remove the Play_Single flag. It's not correct. --- apps/openmw/mwscript/soundextensions.cpp | 4 +-- apps/openmw/mwsound/soundmanager.cpp | 36 ++---------------------- apps/openmw/mwsound/soundmanager.hpp | 6 ---- 3 files changed, 4 insertions(+), 42 deletions(-) diff --git a/apps/openmw/mwscript/soundextensions.cpp b/apps/openmw/mwscript/soundextensions.cpp index 7ae109075d..b4386a8a0d 100644 --- a/apps/openmw/mwscript/soundextensions.cpp +++ b/apps/openmw/mwscript/soundextensions.cpp @@ -130,7 +130,7 @@ namespace MWScript std::string sound = runtime.getStringLiteral (runtime[0].mInteger); runtime.pop(); - context.getSoundManager().playSound3D (ptr, sound, 1.0, 1.0, MWSound::Play_Single | (mLoop ? MWSound::Play_Loop : 0)); + context.getSoundManager().playSound3D (ptr, sound, 1.0, 1.0, mLoop ? MWSound::Play_Loop : 0); } }; @@ -159,7 +159,7 @@ namespace MWScript Interpreter::Type_Float pitch = runtime[0].mFloat; runtime.pop(); - context.getSoundManager().playSound3D (ptr, sound, volume, pitch, MWSound::Play_Single | (mLoop ? MWSound::Play_Loop : 0)); + context.getSoundManager().playSound3D (ptr, sound, volume, pitch, mLoop ? MWSound::Play_Loop : 0); } }; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 2d743d9cbf..6249c4e4df 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -67,7 +67,6 @@ namespace MWSound SoundManager::~SoundManager() { - mSingleSounds.clear(); mActiveSounds.clear(); mMusic.reset(); mOutput.reset(); @@ -231,29 +230,15 @@ namespace MWSound SoundPtr SoundManager::playSound3D(MWWorld::Ptr ptr, const std::string& soundId, float volume, float pitch, int mode) { - const ESM::Position &pos = ptr.getCellRef().pos; - const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); SoundPtr sound; - - if((mode&Play_Single)) - { - IDSoundMap::iterator inviter = mSingleSounds.find(soundId); - if(inviter != mSingleSounds.end()) - { - if(inviter->second->mPos.squaredDistance(mOutput->mPos) < - objpos.squaredDistance(mOutput->mPos)) - return sound; - inviter->second->stop(); - mSingleSounds.erase(inviter); - } - } - try { // Look up the sound in the ESM data float basevol = 1.0f; /* TODO: volume settings */ float min, max; std::string file = lookup(soundId, basevol, min, max); + const ESM::Position &pos = ptr.getCellRef().pos; + const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); sound = mOutput->playSound3D(file, objpos, volume*basevol, pitch, min, max, mode&Play_Loop); sound->mPos = objpos; @@ -265,10 +250,7 @@ namespace MWSound if((mode&Play_NoTrack)) mActiveSounds[sound] = std::make_pair(MWWorld::Ptr(), soundId); else - { mActiveSounds[sound] = std::make_pair(ptr, soundId); - mSingleSounds[soundId] = sound; - } } catch(std::exception &e) { @@ -284,9 +266,6 @@ namespace MWSound { if(snditer->second.first == ptr && snditer->second.second == soundId) { - IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); - if(inviter != mSingleSounds.end() && inviter->second == snditer->first) - mSingleSounds.erase(inviter); snditer->first->stop(); mActiveSounds.erase(snditer++); } @@ -302,9 +281,6 @@ namespace MWSound { if(snditer->second.first == ptr) { - IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); - if(inviter != mSingleSounds.end() && inviter->second == snditer->first) - mSingleSounds.erase(inviter); snditer->first->stop(); mActiveSounds.erase(snditer++); } @@ -321,9 +297,6 @@ namespace MWSound if(snditer->second.first != MWWorld::Ptr() && snditer->second.first.getCell() == cell) { - IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); - if(inviter != mSingleSounds.end() && inviter->second == snditer->first) - mSingleSounds.erase(inviter); snditer->first->stop(); mActiveSounds.erase(snditer++); } @@ -452,12 +425,7 @@ namespace MWSound while(snditer != mActiveSounds.end()) { if(!snditer->first->isPlaying()) - { - IDSoundMap::iterator inviter = mSingleSounds.find(snditer->second.second); - if(inviter != mSingleSounds.end() && inviter->second == snditer->first) - mSingleSounds.erase(inviter); mActiveSounds.erase(snditer++); - } else { snditer->first->update(); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 03cacca237..de5cca839c 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -37,9 +37,6 @@ namespace MWSound Play_NoTrack = 1<<2, /* (3D only) Play the sound at the given object's position * but do not keep it updated (the sound will not move with * the object and will not stop when the object is deleted. */ - Play_Single = 1<<3, /* (3D only) Play only a single instance of the given sound id. - * Sounds not marked as Single will not count, and all but the - * closest to the listener's position will be stopped. */ }; static inline int operator|(const PlayMode &a, const PlayMode &b) { return (int)a | (int)b; } @@ -61,9 +58,6 @@ namespace MWSound typedef std::map SoundMap; SoundMap mActiveSounds; - typedef std::map IDSoundMap; - IDSoundMap mSingleSounds; - std::string lookup(const std::string &soundId, float &volume, float &min, float &max); void streamMusicFull(const std::string& filename); From ceedae4a1af3c155f31221376ac9ef66c3e9dca8 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 16:54:53 +0200 Subject: [PATCH 275/488] technical corrections --- apps/mwiniimporter/importer.cpp | 18 +++++++++++++++--- apps/mwiniimporter/importer.hpp | 5 +---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 041712b216..09088774b4 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -3,6 +3,18 @@ #include #include +MwIniImporter::MwIniImporter() { + const char *map[][2] = + { + { "fps", "General:Show FPS" }, + { 0, 0 } + }; + + for(int i=0; map[i][0]; i++) { + mMergeMap.insert(std::make_pair(map[i][0], map[i][1])); + } +} + void MwIniImporter::setVerbose(bool verbose) { mVerbose = verbose; } @@ -34,7 +46,7 @@ strmap MwIniImporter::loadIniFile(std::string filename) { continue; } - map.insert(STRPAIR(section + ":" + line.substr(0,pos), line.substr(pos+1))); + map.insert(std::make_pair(section + ":" + line.substr(0,pos), line.substr(pos+1))); } return map; @@ -68,7 +80,7 @@ strmap MwIniImporter::loadCfgFile(std::string filename) { continue; } - map.insert(STRPAIR(line.substr(0,pos), line.substr(pos+1))); + map.insert(std::make_pair(line.substr(0,pos), line.substr(pos+1))); } return map; @@ -81,7 +93,7 @@ void MwIniImporter::merge(strmap &cfg, strmap &ini) { if((iniIt = ini.find(it->second)) != ini.end()) { cfg.erase(it->first); if(!this->specialMerge(it->first, it->second, cfg, ini)) { - cfg.insert(STRPAIR(it->first, iniIt->second)); + cfg.insert(std::make_pair(it->first, iniIt->second)); } } } diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index d0034a13d4..ad5aaacde3 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -7,14 +7,11 @@ typedef std::map strmap; -#define STRPAIR std::make_pair class MwIniImporter { public: - MwIniImporter() { - mMergeMap.insert(STRPAIR("fps", "General:Show FPS")); - }; + MwIniImporter(); void setVerbose(bool verbose); strmap loadIniFile(std::string filename); strmap loadCfgFile(std::string filename); From 575474ff69459e52e0d7bba14fadc86da4fd8f84 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 08:14:39 -0700 Subject: [PATCH 276/488] Pass the mode flags to the sound output play methods --- apps/openmw/mwsound/openal_output.cpp | 8 ++++---- apps/openmw/mwsound/openal_output.hpp | 4 ++-- apps/openmw/mwsound/sound.hpp | 2 ++ apps/openmw/mwsound/sound_output.hpp | 4 ++-- apps/openmw/mwsound/soundmanager.cpp | 8 +++++--- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 6a4e3fe570..ddf4df7057 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -606,7 +606,7 @@ void OpenAL_Output::bufferFinished(ALuint buf) } -SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float pitch, bool loop) +SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float pitch, int flags) { boost::shared_ptr sound; ALuint src=0, buf=0; @@ -642,7 +642,7 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float alSourcef(src, AL_PITCH, pitch); alSourcei(src, AL_SOURCE_RELATIVE, AL_TRUE); - alSourcei(src, AL_LOOPING, (loop?AL_TRUE:AL_FALSE)); + alSourcei(src, AL_LOOPING, (flags&Play_Loop) ? AL_TRUE : AL_FALSE); throwALerror(); alSourcei(src, AL_BUFFER, buf); @@ -653,7 +653,7 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float } SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector3 &pos, float volume, float pitch, - float min, float max, bool loop) + float min, float max, int flags) { boost::shared_ptr sound; ALuint src=0, buf=0; @@ -690,7 +690,7 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector alSourcef(src, AL_PITCH, pitch); alSourcei(src, AL_SOURCE_RELATIVE, AL_FALSE); - alSourcei(src, AL_LOOPING, (loop?AL_TRUE:AL_FALSE)); + alSourcei(src, AL_LOOPING, (flags&Play_Loop) ? AL_TRUE : AL_FALSE); throwALerror(); alSourcei(src, AL_BUFFER, buf); diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index 35966cc29b..a709576bae 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -40,9 +40,9 @@ namespace MWSound virtual void init(const std::string &devname=""); virtual void deinit(); - virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, bool loop); + virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, int flags); virtual SoundPtr playSound3D(const std::string &fname, const Ogre::Vector3 &pos, - float volume, float pitch, float min, float max, bool loop); + float volume, float pitch, float min, float max, int flags); virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch); virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir); diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index e23830cdb9..ca12ec5571 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -18,6 +18,7 @@ namespace MWSound float mBaseVolume; float mMinDistance; float mMaxDistance; + int mFlags; public: virtual void stop() = 0; @@ -30,6 +31,7 @@ namespace MWSound , mBaseVolume(1.0f) , mMinDistance(20.0f) /* 1 * min_range_scale */ , mMaxDistance(12750.0f) /* 255 * max_range_scale */ + , mFlags(Play_Normal) { } virtual ~Sound() { } diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index ed3dda2f34..1507e18472 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -24,9 +24,9 @@ namespace MWSound virtual void init(const std::string &devname="") = 0; virtual void deinit() = 0; - virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, bool loop) = 0; + virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, int flags) = 0; virtual SoundPtr playSound3D(const std::string &fname, const Ogre::Vector3 &pos, - float volume, float pitch, float min, float max, bool loop) = 0; + float volume, float pitch, float min, float max, int flags) = 0; virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch) = 0; virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir) = 0; diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 6249c4e4df..2c2e6e9f91 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -185,7 +185,7 @@ namespace MWSound const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); SoundPtr sound = mOutput->playSound3D(filePath, objpos, basevol, 1.0f, - 20.0f, 12750.0f, false); + 20.0f, 12750.0f, Play_Normal); sound->mPos = objpos; sound->mBaseVolume = basevol; @@ -212,11 +212,12 @@ namespace MWSound float min, max; std::string file = lookup(soundId, basevol, min, max); - sound = mOutput->playSound(file, volume*basevol, pitch, mode&Play_Loop); + sound = mOutput->playSound(file, volume*basevol, pitch, mode); sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; sound->mMaxDistance = max; + sound->mFlags = mode; mActiveSounds[sound] = std::make_pair(MWWorld::Ptr(), soundId); } @@ -240,12 +241,13 @@ namespace MWSound const ESM::Position &pos = ptr.getCellRef().pos; const Ogre::Vector3 objpos(pos.pos[0], pos.pos[1], pos.pos[2]); - sound = mOutput->playSound3D(file, objpos, volume*basevol, pitch, min, max, mode&Play_Loop); + sound = mOutput->playSound3D(file, objpos, volume*basevol, pitch, min, max, mode); sound->mPos = objpos; sound->mVolume = volume; sound->mBaseVolume = basevol; sound->mMinDistance = min; sound->mMaxDistance = max; + sound->mFlags = mode; if((mode&Play_NoTrack)) mActiveSounds[sound] = std::make_pair(MWWorld::Ptr(), soundId); From 751e7d2199d595b2024d8172aef1e03670d0eaa9 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 31 Mar 2012 17:26:15 +0200 Subject: [PATCH 277/488] basic auto-equipping (picks the first matching item --- apps/openmw/mwmechanics/actors.cpp | 5 ++- apps/openmw/mwworld/inventorystore.cpp | 58 +++++++++++++++++++++++++- apps/openmw/mwworld/inventorystore.hpp | 14 ++++++- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index d532c6f091..e68b99597e 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -6,6 +6,7 @@ #include #include "../mwworld/class.hpp" +#include "../mwworld/inventorystore.hpp" namespace MWMechanics { @@ -16,7 +17,9 @@ namespace MWMechanics void Actors::updateNpc (const MWWorld::Ptr& ptr, float duration, bool paused) { - + if (!paused) + MWWorld::Class::get (ptr).getInventoryStore (ptr).autoEquip ( + MWWorld::Class::get (ptr).getNpcStats (ptr)); } Actors::Actors (MWWorld::Environment& environment) : mEnvironment (environment), mDuration (0) {} diff --git a/apps/openmw/mwworld/inventorystore.cpp b/apps/openmw/mwworld/inventorystore.cpp index e64c9785f4..aedd119c8a 100644 --- a/apps/openmw/mwworld/inventorystore.cpp +++ b/apps/openmw/mwworld/inventorystore.cpp @@ -6,6 +6,8 @@ #include "class.hpp" +#include /// \todo remove after rendering is implemented + void MWWorld::InventoryStore::copySlots (const InventoryStore& store) { // some const-trickery, required because of a flaw in the handling of MW-references and the @@ -24,10 +26,15 @@ void MWWorld::InventoryStore::copySlots (const InventoryStore& store) } } -MWWorld::InventoryStore::InventoryStore() +void MWWorld::InventoryStore::initSlots (TSlots& slots) { for (int i=0; i, bool> itemsSlots = + MWWorld::Class::get (*iter).getEquipmentSlots (*iter); + + for (std::vector::const_iterator iter2 (itemsSlots.first.begin()); + iter2!=itemsSlots.first.end(); ++iter2) + { + /// \todo comapre item with item in slot + if (slots.at (*iter2)==end()) + { + /// \todo unstack, if reqquired (itemsSlots.second) + + slots[*iter2] = iter; + break; + } + } + } + + bool changed = false; + + for (std::size_t i=0; i mSlots; + typedef std::vector TSlots; + + mutable TSlots mSlots; void copySlots (const InventoryStore& store); + void initSlots (TSlots& slots); + public: InventoryStore(); @@ -52,6 +61,9 @@ namespace MWWorld ///< \note \a iteartor can be an end-iterator ContainerStoreIterator getSlot (int slot); + + void autoEquip (const MWMechanics::NpcStats& stats); + ///< Auto equip items according to stats and item value. }; } From 2a7885b514ab183edc3bfd8f1654cbfcaa501c3f Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sat, 31 Mar 2012 19:36:07 +0400 Subject: [PATCH 278/488] Synchronized OS X icon with our current app icon --- files/mac/openmw.icns | Bin 153405 -> 134980 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/files/mac/openmw.icns b/files/mac/openmw.icns index dfea24660669401eb1a2ae9fb81c142891c7be03..3ff899a799e17fa69258323be59c470633cfec68 100644 GIT binary patch literal 134980 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 bvPti8=?o>mhW|G+lk>trM^!rgV_*OPFXfI0 From 08f8701b33d1a7cc5dc9d92e1c4b9a77cb35f7ab Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 31 Mar 2012 17:52:58 +0200 Subject: [PATCH 279/488] workaround for tga problem --- components/bsa/bsa_archive.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index 41bff7e40a..f4f4b898cf 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -71,6 +71,9 @@ class DirArchive: public Ogre::FileSystemArchive bool findFile(const String& filename, std::string& copy) const { + if (filename.find(".tga") != std::string::npos) + return false; + { String passed = filename; if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' @@ -179,7 +182,7 @@ class DirArchive: public Ogre::FileSystemArchive bool exists(const String& filename) { std::string copy; - + if (findFile(filename, copy)) return FileSystemArchive::exists(copy); @@ -192,7 +195,7 @@ class DirArchive: public Ogre::FileSystemArchive if (findFile(filename, copy)) return FileSystemArchive::open(copy, readonly); - + DataStreamPtr p; return p; } @@ -243,7 +246,7 @@ bool exists(const String& filename) { } // Check if the file exists. - bool cexists(const String& filename) const { + bool cexists(const String& filename) const { String passed = filename; if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' || filename.at(filename.length() - 1) == '"' || filename.at(filename.length() - 1) == '>' || filename.at(filename.length() - 1) == ':' @@ -254,7 +257,7 @@ bool exists(const String& filename) { if(filename.at(filename.length() - 2) == '>') passed = filename.substr(0, filename.length() - 6); -return arc.exists(passed.c_str()); +return arc.exists(passed.c_str()); } time_t getModifiedTime(const String&) { return 0; } From 653fbdd10cf83a3d361b7017b6e491d6df7aa67a Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 18:24:43 +0200 Subject: [PATCH 280/488] master/plugin support; needs multimap instead of map --- apps/mwiniimporter/importer.cpp | 58 +++++++++++++++++++++++++++++++++ apps/mwiniimporter/importer.hpp | 1 + apps/mwiniimporter/main.cpp | 5 +++ 3 files changed, 64 insertions(+) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 09088774b4..7532bf1dae 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -2,6 +2,9 @@ #include #include #include +#include +#include +#include MwIniImporter::MwIniImporter() { const char *map[][2] = @@ -99,6 +102,61 @@ void MwIniImporter::merge(strmap &cfg, strmap &ini) { } } +void MwIniImporter::importGameFiles(strmap &cfg, strmap &ini) { + std::vector esmFiles; + std::string baseEsm("Game Files:GameFile"); + std::string esmFile(""); + + strmap::iterator it = ini.begin(); + for(int i=0; it != ini.end(); i++) { + esmFile = baseEsm; + esmFile.append(1,i+'0'); + + it = ini.find(esmFile); + if(it == ini.end()) { + break; + } + + std::cout << "found EMS file: " << it->second << std::endl; + esmFiles.push_back(it->second); + esmFile = ""; + } + + + std::vector bsaFiles; + std::string baseBsa("Archives:Archive "); + std::string bsaFile(""); + + it = ini.begin(); + for(int i=0; it != ini.end(); i++) { + bsaFile = baseBsa; + bsaFile.append(1,i+'0'); + + it = ini.find(bsaFile); + if(it == ini.end()) { + break; + } + + std::cout << "found BSA file: " << it->second << std::endl; + bsaFiles.push_back(it->second); + bsaFile = ""; + } + + if(!esmFiles.empty()) { + cfg.erase("master"); + for(std::vector::iterator it = esmFiles.begin(); it != esmFiles.end(); it++) { + cfg.insert(std::make_pair("master", *it)); + } + } + + if(!bsaFile.empty()) { + cfg.erase("plugin"); + for(std::vector::iterator it = bsaFiles.begin(); it != bsaFiles.end(); it++) { + cfg.insert(std::make_pair("plugin", *it)); + } + } +} + bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, strmap &cfg, strmap &ini) { return false; } diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index ad5aaacde3..13cb02ee69 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -16,6 +16,7 @@ class MwIniImporter { strmap loadIniFile(std::string filename); strmap loadCfgFile(std::string filename); void merge(strmap &cfg, strmap &ini); + void importGameFiles(strmap &cfg, strmap &ini); void writeToFile(std::string file, strmap &cfg); private: diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 059703ea89..87225432d1 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -16,6 +16,7 @@ int main(int argc, char *argv[]) { ("ini,i", bpo::value(), "morrowind.ini file") ("cfg,c", bpo::value(), "openmw.cfg file") ("output,o", bpo::value()->default_value(""), "openmw.cfg file") + ("game-files,g", "import esm and esp files") ; bpo::variables_map vm; @@ -65,6 +66,10 @@ int main(int argc, char *argv[]) { std::mapcfg = importer.loadCfgFile(cfgFile); importer.merge(cfg, ini); + + if(vm.count("game-files")) { + importer.importGameFiles(cfg, ini); + } std::cout << "write to: " << outputFile << std::endl; importer.writeToFile(outputFile, cfg); From 092de45924ec2c263049e9fe46757892fb93c039 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 18:28:48 +0200 Subject: [PATCH 281/488] std::map to std::multimap --- apps/mwiniimporter/importer.cpp | 4 ++-- apps/mwiniimporter/importer.hpp | 2 +- apps/mwiniimporter/main.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 7532bf1dae..a92eee725c 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -26,7 +26,7 @@ strmap MwIniImporter::loadIniFile(std::string filename) { std::cout << "load ini file: " << filename << std::endl; std::string section(""); - std::map map; + std::multimap map; boost::iostreams::streamfile(filename.c_str()); std::string line; @@ -58,7 +58,7 @@ strmap MwIniImporter::loadIniFile(std::string filename) { strmap MwIniImporter::loadCfgFile(std::string filename) { std::cout << "load cfg file: " << filename << std::endl; - std::map map; + std::multimap map; boost::iostreams::streamfile(filename.c_str()); std::string line; diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 13cb02ee69..3c85fd25a2 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -6,7 +6,7 @@ #include -typedef std::map strmap; +typedef std::multimap strmap; class MwIniImporter { diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 87225432d1..5eba95961a 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -62,8 +62,8 @@ int main(int argc, char *argv[]) { MwIniImporter importer; importer.setVerbose(vm.count("verbose")); - std::mapini = importer.loadIniFile(iniFile); - std::mapcfg = importer.loadCfgFile(cfgFile); + std::multimapini = importer.loadIniFile(iniFile); + std::multimapcfg = importer.loadCfgFile(cfgFile); importer.merge(cfg, ini); From cbf6c0404a7f0177e5eea47da04c77beb0c8a7f3 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 10:06:12 -0700 Subject: [PATCH 282/488] Implement a basic underwater sound environment --- apps/openmw/mwsound/openal_output.cpp | 60 +++++++++++++++++++++++---- apps/openmw/mwsound/openal_output.hpp | 6 ++- apps/openmw/mwsound/sound_output.hpp | 4 +- apps/openmw/mwsound/soundmanager.cpp | 11 ++++- apps/openmw/mwsound/soundmanager.hpp | 5 +++ 5 files changed, 72 insertions(+), 14 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index ddf4df7057..6c7fff973a 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -260,7 +260,16 @@ bool OpenAL_SoundStream::isPlaying() void OpenAL_SoundStream::update() { - alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); + ALfloat gain = mVolume*mBaseVolume; + ALfloat pitch = 1.0f; + if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) + { + gain *= 0.9f; + pitch *= 0.7f; + } + + alSourcef(mSource, AL_GAIN, gain); + alSourcef(mSource, AL_PITCH, pitch); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -388,7 +397,16 @@ bool OpenAL_Sound::isPlaying() void OpenAL_Sound::update() { - alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); + ALfloat gain = mVolume*mBaseVolume; + ALfloat pitch = 1.0f; + if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) + { + gain *= 0.9f; + pitch *= 0.7f; + } + + alSourcef(mSource, AL_GAIN, gain); + alSourcef(mSource, AL_PITCH, pitch); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -397,10 +415,18 @@ void OpenAL_Sound::update() void OpenAL_Sound3D::update() { + ALfloat gain = mVolume*mBaseVolume; + ALfloat pitch = 1.0f; if(mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) - alSourcef(mSource, AL_GAIN, 0.0f); - else - alSourcef(mSource, AL_GAIN, mVolume*mBaseVolume); + gain = 0.0f; + else if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) + { + gain *= 0.9f; + pitch *= 0.7f; + } + + alSourcef(mSource, AL_GAIN, gain); + alSourcef(mSource, AL_PITCH, pitch); alSource3f(mSource, AL_POSITION, mPos[0], mPos[2], -mPos[1]); alSource3f(mSource, AL_DIRECTION, 0.0f, 0.0f, 0.0f); alSource3f(mSource, AL_VELOCITY, 0.0f, 0.0f, 0.0f); @@ -638,6 +664,11 @@ SoundPtr OpenAL_Output::playSound(const std::string &fname, float volume, float alSourcef(src, AL_MAX_DISTANCE, 1000.0f); alSourcef(src, AL_ROLLOFF_FACTOR, 0.0f); + if(!(flags&Play_NoEnv) && mLastEnvironment == Env_Underwater) + { + volume *= 0.9f; + pitch *= 0.7f; + } alSourcef(src, AL_GAIN, volume); alSourcef(src, AL_PITCH, pitch); @@ -685,6 +716,11 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector alSourcef(src, AL_MAX_DISTANCE, max); alSourcef(src, AL_ROLLOFF_FACTOR, 1.0f); + if(!(flags&Play_NoEnv) && mLastEnvironment == Env_Underwater) + { + volume *= 0.9f; + pitch *= 0.7f; + } alSourcef(src, AL_GAIN, (pos.squaredDistance(mPos) > max*max) ? 0.0f : volume); alSourcef(src, AL_PITCH, pitch); @@ -701,7 +737,7 @@ SoundPtr OpenAL_Output::playSound3D(const std::string &fname, const Ogre::Vector } -SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, float pitch) +SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, float pitch, int flags) { boost::shared_ptr sound; ALuint src; @@ -713,6 +749,8 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa try { + if((flags&Play_Loop)) + std::cout <<"Warning: cannot loop stream "<open(fname); sound.reset(new OpenAL_SoundStream(*this, src, decoder)); @@ -731,6 +769,11 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa alSourcef(src, AL_MAX_DISTANCE, 1000.0f); alSourcef(src, AL_ROLLOFF_FACTOR, 0.0f); + if(!(flags&Play_NoEnv) && mLastEnvironment == Env_Underwater) + { + volume *= 0.9f; + pitch *= 0.7f; + } alSourcef(src, AL_GAIN, volume); alSourcef(src, AL_PITCH, pitch); @@ -743,9 +786,10 @@ SoundPtr OpenAL_Output::streamSound(const std::string &fname, float volume, floa } -void OpenAL_Output::updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir) +void OpenAL_Output::updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir, Environment env) { mPos = pos; + mLastEnvironment = env; if(mContext) { @@ -762,7 +806,7 @@ void OpenAL_Output::updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 OpenAL_Output::OpenAL_Output(SoundManager &mgr) : Sound_Output(mgr), mDevice(0), mContext(0), mBufferCacheMemSize(0), - mStreamThread(new StreamThread) + mLastEnvironment(Env_Normal), mStreamThread(new StreamThread) { } diff --git a/apps/openmw/mwsound/openal_output.hpp b/apps/openmw/mwsound/openal_output.hpp index a709576bae..d62d20286a 100644 --- a/apps/openmw/mwsound/openal_output.hpp +++ b/apps/openmw/mwsound/openal_output.hpp @@ -36,6 +36,8 @@ namespace MWSound ALuint getBuffer(const std::string &fname); void bufferFinished(ALuint buffer); + Environment mLastEnvironment; + virtual std::vector enumerate(); virtual void init(const std::string &devname=""); virtual void deinit(); @@ -43,9 +45,9 @@ namespace MWSound virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, int flags); virtual SoundPtr playSound3D(const std::string &fname, const Ogre::Vector3 &pos, float volume, float pitch, float min, float max, int flags); - virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch); + virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch, int flags); - virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir); + virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir, Environment env); OpenAL_Output& operator=(const OpenAL_Output &rhs); OpenAL_Output(const OpenAL_Output &rhs); diff --git a/apps/openmw/mwsound/sound_output.hpp b/apps/openmw/mwsound/sound_output.hpp index 1507e18472..774e42efa3 100644 --- a/apps/openmw/mwsound/sound_output.hpp +++ b/apps/openmw/mwsound/sound_output.hpp @@ -27,9 +27,9 @@ namespace MWSound virtual SoundPtr playSound(const std::string &fname, float volume, float pitch, int flags) = 0; virtual SoundPtr playSound3D(const std::string &fname, const Ogre::Vector3 &pos, float volume, float pitch, float min, float max, int flags) = 0; - virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch) = 0; + virtual SoundPtr streamSound(const std::string &fname, float volume, float pitch, int flags) = 0; - virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir) = 0; + virtual void updateListener(const Ogre::Vector3 &pos, const Ogre::Vector3 &atdir, const Ogre::Vector3 &updir, Environment env) = 0; Sound_Output& operator=(const Sound_Output &rhs); Sound_Output(const Sound_Output &rhs); diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 2c2e6e9f91..aaeef80ff5 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -137,8 +137,9 @@ namespace MWSound { if(mMusic) mMusic->stop(); - mMusic = mOutput->streamSound(filename, 0.4f, 1.0f); + mMusic = mOutput->streamSound(filename, 0.4f, 1.0f, Play_NoEnv); mMusic->mBaseVolume = 0.4f; + mMusic->mFlags = Play_NoEnv; } catch(std::exception &e) { @@ -408,19 +409,25 @@ namespace MWSound if(!isMusicPlaying()) startRandomTitle(); + MWWorld::Ptr::CellStore *current = mEnvironment.mWorld->getPlayer().getPlayer().getCell(); Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); Ogre::Vector3 nPos, nDir, nUp; nPos = cam->getRealPosition(); nDir = cam->getRealDirection(); nUp = cam->getRealUp(); + Environment env = Env_Normal; + if(nPos.y < current->cell->water) + env = Env_Underwater; + // The output handler is expecting vectors oriented like the game // (that is, -Z goes down, +Y goes forward), but that's not what we // get from Ogre's camera, so we have to convert. const Ogre::Vector3 pos(nPos[0], -nPos[2], nPos[1]); const Ogre::Vector3 at(nDir[0], -nDir[2], nDir[1]); const Ogre::Vector3 up(nUp[0], -nUp[2], nUp[1]); - mOutput->updateListener(pos, at, up); + + mOutput->updateListener(pos, at, up, env); // Check if any sounds are finished playing, and trash them SoundMap::iterator snditer = mActiveSounds.begin(); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index de5cca839c..cad5f61871 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -43,6 +43,11 @@ namespace MWSound static inline int operator&(const PlayMode &a, const PlayMode &b) { return (int)a & (int)b; } + enum Environment { + Env_Normal, + Env_Underwater, + }; + class SoundManager { Ogre::ResourceGroupManager& mResourceMgr; From f8d45eae52413bba78fea6715046ac7ac7eb2182 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 19:08:05 +0200 Subject: [PATCH 283/488] fix #1 --- apps/openmw/mwrender/occlusionquery.cpp | 7 +++++-- apps/openmw/mwrender/occlusionquery.hpp | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 228d8a4990..b571e3c3ad 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -55,20 +55,21 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBNode = mSunNode->getParentSceneNode()->createChildSceneNode(); mObjectNode = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); + mBBNodeReal = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); mBBQueryTotal = mRendering->getScene()->createBillboardSet(1); mBBQueryTotal->setDefaultDimensions(150, 150); mBBQueryTotal->createBillboard(Vector3::ZERO); mBBQueryTotal->setMaterialName("QueryTotalPixels"); mBBQueryTotal->setRenderQueueGroup(queue); - mBBNode->attachObject(mBBQueryTotal); + mBBNodeReal->attachObject(mBBQueryTotal); mBBQueryVisible = mRendering->getScene()->createBillboardSet(1); mBBQueryVisible->setDefaultDimensions(150, 150); mBBQueryVisible->createBillboard(Vector3::ZERO); mBBQueryVisible->setMaterialName("QueryVisiblePixels"); mBBQueryVisible->setRenderQueueGroup(queue); - mBBNode->attachObject(mBBQueryVisible); + mBBNodeReal->attachObject(mBBQueryVisible); mBBQuerySingleObject = mRendering->getScene()->createBillboardSet(1); /// \todo ideally this should occupy exactly 1 pixel on the screen @@ -178,6 +179,8 @@ void OcclusionQuery::update(float duration) dist /= 1000.f; mBBNode->setPosition(mSunNode->getPosition() * dist); mBBNode->setScale(dist, dist, dist); + mBBNodeReal->setPosition(mBBNode->_getDerivedPosition()); + mBBNodeReal->setScale(mBBNode->getScale()); // Stop occlusion queries until we get their information // (may not happen on the same frame they are requested in) diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index e81358eb6c..102b18bee3 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -65,6 +65,7 @@ namespace MWRender Ogre::SceneNode* mSunNode; Ogre::SceneNode* mBBNode; + Ogre::SceneNode* mBBNodeReal; float mSunVisibility; Ogre::SceneNode* mObjectNode; From 909abb480d8479f7f70268f717556cb2f82b9102 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 19:09:36 +0200 Subject: [PATCH 284/488] fix 2 --- apps/openmw/mwrender/occlusionquery.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index b571e3c3ad..9baea23b51 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -217,8 +217,6 @@ void OcclusionQuery::update(float duration) //std::cout << "Single object query result: " << result << " pixels " << std::endl; mTestResult = (result != 0); - mBBQuerySingleObject->setVisible(false); - mQuerySingleObjectStarted = false; mQuerySingleObjectRequested = false; } From c08a2b294224da72d32d409c7229aa999c1c4f82 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 19:12:02 +0200 Subject: [PATCH 285/488] fix 3 --- apps/openmw/mwrender/occlusionquery.cpp | 10 +++++++--- apps/openmw/mwrender/occlusionquery.hpp | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 9baea23b51..de66df6d97 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -12,7 +12,7 @@ using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), mTestResult(false), - mQuerySingleObjectRequested(false), mWasVisible(false), mObjectWasVisible(false) + mQuerySingleObjectRequested(false), mWasVisible(false), mObjectWasVisible(false), mDoQuery2(false) { mRendering = renderer; mSunNode = sunNode; @@ -82,6 +82,7 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mRendering->getScene()->addRenderObjectListener(this); mRendering->getScene()->addRenderQueueListener(this); mDoQuery = true; + mDoQuery2 = true; } OcclusionQuery::~OcclusionQuery() @@ -125,7 +126,7 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass mActiveQuery = mSunVisibleAreaQuery; } } - if (rend == mBBQuerySingleObject && mQuerySingleObjectRequested) + if (mDoQuery2 == true && rend == mBBQuerySingleObject && mQuerySingleObjectRequested) { mQuerySingleObjectStarted = true; mQuerySingleObjectRequested = false; @@ -154,7 +155,7 @@ void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocati mSunVisibleAreaQuery->beginOcclusionQuery(); mSunVisibleAreaQuery->endOcclusionQuery(); } - if (mObjectWasVisible == false && mQuerySingleObjectRequested) + if (mObjectWasVisible == false && mDoQuery2 && mQuerySingleObjectRequested) { mSingleObjectQuery->beginOcclusionQuery(); mSingleObjectQuery->endOcclusionQuery(); @@ -185,6 +186,7 @@ void OcclusionQuery::update(float duration) // Stop occlusion queries until we get their information // (may not happen on the same frame they are requested in) mDoQuery = false; + mDoQuery2 = false; if (!mSunTotalAreaQuery->isStillOutstanding() && !mSunVisibleAreaQuery->isStillOutstanding()) @@ -219,6 +221,8 @@ void OcclusionQuery::update(float duration) mQuerySingleObjectStarted = false; mQuerySingleObjectRequested = false; + + mDoQuery2 = true; } } diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index 102b18bee3..ebdc51311d 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -77,6 +77,7 @@ namespace MWRender bool mSupported; bool mDoQuery; + bool mDoQuery2; bool mQuerySingleObjectRequested; bool mQuerySingleObjectStarted; From c9067249dd0a3e4eef6d5db37480bc74426721c8 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 19:16:14 +0200 Subject: [PATCH 286/488] fix 4 --- apps/openmw/mwrender/occlusionquery.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index de66df6d97..2bcf6bd4b4 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -126,7 +126,7 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass mActiveQuery = mSunVisibleAreaQuery; } } - if (mDoQuery2 == true && rend == mBBQuerySingleObject && mQuerySingleObjectRequested) + if (mDoQuery2 == true && rend == mBBQuerySingleObject) { mQuerySingleObjectStarted = true; mQuerySingleObjectRequested = false; @@ -155,7 +155,7 @@ void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocati mSunVisibleAreaQuery->beginOcclusionQuery(); mSunVisibleAreaQuery->endOcclusionQuery(); } - if (mObjectWasVisible == false && mDoQuery2 && mQuerySingleObjectRequested) + if (mObjectWasVisible == false && mDoQuery2) { mSingleObjectQuery->beginOcclusionQuery(); mSingleObjectQuery->endOcclusionQuery(); @@ -210,13 +210,13 @@ void OcclusionQuery::update(float duration) mDoQuery = true; } - if (mQuerySingleObjectStarted && !mSingleObjectQuery->isStillOutstanding()) + if (!mSingleObjectQuery->isStillOutstanding()) { unsigned int result; mSingleObjectQuery->pullOcclusionQuery(&result); - //std::cout << "Single object query result: " << result << " pixels " << std::endl; + std::cout << "Single object query result: " << result << " pixels " << std::endl; mTestResult = (result != 0); mQuerySingleObjectStarted = false; From 4944a29b21b515f33686ab54dc0ecfd71e8b6cbd Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 10:41:12 -0700 Subject: [PATCH 287/488] Keep track of the sound pitch --- apps/openmw/mwsound/openal_output.cpp | 6 +++--- apps/openmw/mwsound/sound.hpp | 2 ++ apps/openmw/mwsound/soundmanager.cpp | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 6c7fff973a..41411a6216 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -261,7 +261,7 @@ bool OpenAL_SoundStream::isPlaying() void OpenAL_SoundStream::update() { ALfloat gain = mVolume*mBaseVolume; - ALfloat pitch = 1.0f; + ALfloat pitch = mPitch; if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) { gain *= 0.9f; @@ -398,7 +398,7 @@ bool OpenAL_Sound::isPlaying() void OpenAL_Sound::update() { ALfloat gain = mVolume*mBaseVolume; - ALfloat pitch = 1.0f; + ALfloat pitch = mPitch; if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) { gain *= 0.9f; @@ -416,7 +416,7 @@ void OpenAL_Sound::update() void OpenAL_Sound3D::update() { ALfloat gain = mVolume*mBaseVolume; - ALfloat pitch = 1.0f; + ALfloat pitch = mPitch; if(mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) gain = 0.0f; else if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) diff --git a/apps/openmw/mwsound/sound.hpp b/apps/openmw/mwsound/sound.hpp index ca12ec5571..a33892548c 100644 --- a/apps/openmw/mwsound/sound.hpp +++ b/apps/openmw/mwsound/sound.hpp @@ -16,6 +16,7 @@ namespace MWSound Ogre::Vector3 mPos; float mVolume; /* NOTE: Real volume = mVolume*mBaseVolume */ float mBaseVolume; + float mPitch; float mMinDistance; float mMaxDistance; int mFlags; @@ -29,6 +30,7 @@ namespace MWSound Sound() : mPos(0.0f, 0.0f, 0.0f) , mVolume(1.0f) , mBaseVolume(1.0f) + , mPitch(1.0f) , mMinDistance(20.0f) /* 1 * min_range_scale */ , mMaxDistance(12750.0f) /* 255 * max_range_scale */ , mFlags(Play_Normal) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index aaeef80ff5..a00b7dc661 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -216,6 +216,7 @@ namespace MWSound sound = mOutput->playSound(file, volume*basevol, pitch, mode); sound->mVolume = volume; sound->mBaseVolume = basevol; + sound->mPitch = pitch; sound->mMinDistance = min; sound->mMaxDistance = max; sound->mFlags = mode; @@ -246,6 +247,7 @@ namespace MWSound sound->mPos = objpos; sound->mVolume = volume; sound->mBaseVolume = basevol; + sound->mPitch = pitch; sound->mMinDistance = min; sound->mMaxDistance = max; sound->mFlags = mode; From 3a57746ee47f8504f6c531fd43166316ba973fd9 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 10:43:55 -0700 Subject: [PATCH 288/488] Remove an unneeded volume special-case --- apps/openmw/mwsound/soundmanager.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a00b7dc661..1aa2bf2bf7 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -88,10 +88,7 @@ namespace MWSound if(snd == NULL) throw std::runtime_error(std::string("Failed to lookup sound ")+soundId); - if(snd->data.volume == 0) - volume = 0.0f; - else - volume *= pow(10.0, (snd->data.volume/255.0f*3348.0 - 3348.0) / 2000.0); + volume *= pow(10.0, (snd->data.volume/255.0*3348.0 - 3348.0) / 2000.0); if(snd->data.minRange == 0 && snd->data.maxRange == 0) { From 3cc81d74bc3395198f9fa995191b410842de31e0 Mon Sep 17 00:00:00 2001 From: Eli2 Date: Sat, 31 Mar 2012 19:50:21 +0200 Subject: [PATCH 289/488] Cleanup, replaced if with switch --- apps/openmw/mwgui/window_manager.cpp | 110 ++++++++++++--------------- 1 file changed, 48 insertions(+), 62 deletions(-) diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index 4654674695..1afca1d41a 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -180,71 +180,57 @@ void WindowManager::updateVisible() // Mouse is visible whenever we're not in game mode MyGUI::PointerManager::getInstance().setVisible(isGuiMode()); - // If in game mode, don't show anything. - if(mode == GM_Game) //Use a switch/case structure - { - return; - } + int eff; + switch(mode) { + case GM_Game: + // If in game mode, don't show anything. + break; + case GM_MainMenu: + menu->setVisible(true); + break; + case GM_Console: + console->enable(); + break; + case GM_Name: + case GM_Race: + case GM_Class: + case GM_ClassPick: + case GM_ClassCreate: + case GM_Birth: + case GM_ClassGenerate: + case GM_Review: + mCharGen->spawnDialog(mode); + break; + case GM_Inventory: + // First, compute the effective set of windows to show. + // This is controlled both by what windows the + // user has opened/closed (the 'shown' variable) and by what + // windows we are allowed to show (the 'allowed' var.) + eff = shown & allowed; - if(mode == GM_MainMenu) - { - // Enable the main menu - menu->setVisible(true); - return; - } - - if(mode == GM_Console) - { - console->enable(); - return; - } - - //There must be a more elegant solution - if (mode == GM_Name || mode == GM_Race || mode == GM_Class || mode == GM_ClassPick || mode == GM_ClassCreate || mode == GM_Birth || mode == GM_ClassGenerate || mode == GM_Review) - { - mCharGen->spawnDialog(mode); - return; - } - - if(mode == GM_Inventory) - { - // Ah, inventory mode. First, compute the effective set of - // windows to show. This is controlled both by what windows the - // user has opened/closed (the 'shown' variable) and by what - // windows we are allowed to show (the 'allowed' var.) - int eff = shown & allowed; - - // Show the windows we want - map -> setVisible( (eff & GW_Map) != 0 ); - stats -> setVisible( (eff & GW_Stats) != 0 ); - return; - } - - if (mode == GM_Dialogue) - { - dialogueWindow->open(); - return; - } - - if(mode == GM_InterMessageBox) - { - if(!mMessageBoxManager->isInteractiveMessageBox()) { + // Show the windows we want + map -> setVisible( (eff & GW_Map) != 0 ); + stats -> setVisible( (eff & GW_Stats) != 0 ); + break; + case GM_Dialogue: + dialogueWindow->open(); + break; + case GM_InterMessageBox: + if(!mMessageBoxManager->isInteractiveMessageBox()) { + setGuiMode(GM_Game); + } + break; + case GM_Journal: + mJournal->setVisible(true); + mJournal->open(); + break; + default: + // Unsupported mode, switch back to game + // Note: The call will eventually end up this method again but + // will stop at the check if mode is GM_Game. setGuiMode(GM_Game); - } - return; + break; } - - if(mode == GM_Journal) - { - mJournal->setVisible(true); - mJournal->open(); - return; - } - - // Unsupported mode, switch back to game - // Note: The call will eventually end up this method again but - // will stop at the check if(mode == GM_Game) above. - setGuiMode(GM_Game); } void WindowManager::setValue (const std::string& id, const MWMechanics::Stat& value) From e8e8d3fb1b4ef1fb917e04278fd6493c310d34ca Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 31 Mar 2012 10:59:29 -0700 Subject: [PATCH 290/488] Fully reset the music before starting the next track --- apps/openmw/mwsound/soundmanager.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 1aa2bf2bf7..a96aac6c5c 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -132,8 +132,7 @@ namespace MWSound std::cout <<"Playing "<stop(); + stopMusic(); mMusic = mOutput->streamSound(filename, 0.4f, 1.0f, Play_NoEnv); mMusic->mBaseVolume = 0.4f; mMusic->mFlags = Play_NoEnv; From b018d00fd3feff313ec9c099ea5c73be89f24e5d Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 20:05:23 +0200 Subject: [PATCH 291/488] fix 5 --- apps/openmw/mwrender/occlusionquery.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index 2bcf6bd4b4..f4eb08acdc 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -126,7 +126,7 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass mActiveQuery = mSunVisibleAreaQuery; } } - if (mDoQuery2 == true && rend == mBBQuerySingleObject) + if (mDoQuery == true && rend == mBBQuerySingleObject) { mQuerySingleObjectStarted = true; mQuerySingleObjectRequested = false; @@ -155,7 +155,7 @@ void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocati mSunVisibleAreaQuery->beginOcclusionQuery(); mSunVisibleAreaQuery->endOcclusionQuery(); } - if (mObjectWasVisible == false && mDoQuery2) + if (mObjectWasVisible == false && mDoQuery) { mSingleObjectQuery->beginOcclusionQuery(); mSingleObjectQuery->endOcclusionQuery(); @@ -189,7 +189,8 @@ void OcclusionQuery::update(float duration) mDoQuery2 = false; if (!mSunTotalAreaQuery->isStillOutstanding() - && !mSunVisibleAreaQuery->isStillOutstanding()) + && !mSunVisibleAreaQuery->isStillOutstanding() + && !mSingleObjectQuery->isStillOutstanding()) { unsigned int totalPixels; unsigned int visiblePixels; @@ -208,10 +209,6 @@ void OcclusionQuery::update(float duration) if (mSunVisibility > 1) mSunVisibility = 1; } - mDoQuery = true; - } - if (!mSingleObjectQuery->isStillOutstanding()) - { unsigned int result; mSingleObjectQuery->pullOcclusionQuery(&result); @@ -222,7 +219,7 @@ void OcclusionQuery::update(float duration) mQuerySingleObjectStarted = false; mQuerySingleObjectRequested = false; - mDoQuery2 = true; + mDoQuery = true; } } From 5f78f6c72325de90c7efbc55fc191dc3c27dee44 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 20:10:34 +0200 Subject: [PATCH 292/488] change queue --- apps/openmw/mwrender/occlusionquery.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index f4eb08acdc..ade0f976e0 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -61,14 +61,14 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mBBQueryTotal->setDefaultDimensions(150, 150); mBBQueryTotal->createBillboard(Vector3::ZERO); mBBQueryTotal->setMaterialName("QueryTotalPixels"); - mBBQueryTotal->setRenderQueueGroup(queue); + mBBQueryTotal->setRenderQueueGroup(queue+1); mBBNodeReal->attachObject(mBBQueryTotal); mBBQueryVisible = mRendering->getScene()->createBillboardSet(1); mBBQueryVisible->setDefaultDimensions(150, 150); mBBQueryVisible->createBillboard(Vector3::ZERO); mBBQueryVisible->setMaterialName("QueryVisiblePixels"); - mBBQueryVisible->setRenderQueueGroup(queue); + mBBQueryVisible->setRenderQueueGroup(queue+1); mBBNodeReal->attachObject(mBBQueryVisible); mBBQuerySingleObject = mRendering->getScene()->createBillboardSet(1); From cfb194f1d13c1836022b0845d7ffdc5d896a768b Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 20:18:20 +0200 Subject: [PATCH 293/488] fix 6 --- apps/openmw/mwrender/occlusionquery.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index ade0f976e0..bfa3b73aef 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -140,6 +140,11 @@ void OcclusionQuery::notifyRenderSingleObject(Renderable* rend, const Pass* pass void OcclusionQuery::renderQueueEnded(uint8 queueGroupId, const String& invocation, bool& repeatThisInvocation) { + if (mActiveQuery != NULL) + { + mActiveQuery->endOcclusionQuery(); + mActiveQuery = NULL; + } /** * for every beginOcclusionQuery(), we want a respective pullOcclusionQuery() and vice versa * this also means that results can be wrong at other places if we pull, but beginOcclusionQuery() was never called From 13efe68fc3a628abaa8ca65181390030983c4e22 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 31 Mar 2012 20:28:07 +0200 Subject: [PATCH 294/488] disabled some debug output --- apps/openmw/mwrender/occlusionquery.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index bfa3b73aef..cc3464c646 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -95,7 +95,6 @@ OcclusionQuery::~OcclusionQuery() bool OcclusionQuery::supported() { - //if (!mResponding) std::cout << "Occlusion query timed out" << std::endl; return mSupported; } @@ -218,7 +217,6 @@ void OcclusionQuery::update(float duration) mSingleObjectQuery->pullOcclusionQuery(&result); - std::cout << "Single object query result: " << result << " pixels " << std::endl; mTestResult = (result != 0); mQuerySingleObjectStarted = false; From 4ef921c43fd82f09e61677765c4394de2c32f251 Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sat, 31 Mar 2012 20:50:22 +0200 Subject: [PATCH 295/488] Prevent internal classes from being marked dllimport --- apps/openmw/mwrender/terrainmaterial.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwrender/terrainmaterial.hpp b/apps/openmw/mwrender/terrainmaterial.hpp index 798821d616..3cb3163475 100644 --- a/apps/openmw/mwrender/terrainmaterial.hpp +++ b/apps/openmw/mwrender/terrainmaterial.hpp @@ -50,7 +50,7 @@ namespace Ogre terrain. @note Requires the Cg plugin to render correctly */ - class _OgreTerrainExport TerrainMaterialGeneratorB : public TerrainMaterialGenerator + class TerrainMaterialGeneratorB : public TerrainMaterialGenerator { public: TerrainMaterialGeneratorB(); @@ -58,7 +58,7 @@ namespace Ogre /** Shader model 2 profile target. */ - class _OgreTerrainExport SM2Profile : public TerrainMaterialGenerator::Profile + class SM2Profile : public TerrainMaterialGenerator::Profile { public: SM2Profile(TerrainMaterialGenerator* parent, const String& name, const String& desc); @@ -161,7 +161,7 @@ namespace Ogre void addTechnique(const MaterialPtr& mat, const Terrain* terrain, TechniqueType tt); /// Interface definition for helper class to generate shaders - class _OgreTerrainExport ShaderHelper : public TerrainAlloc + class ShaderHelper : public TerrainAlloc { public: ShaderHelper() {} @@ -194,7 +194,7 @@ namespace Ogre }; /// Utility class to help with generating shaders for Cg / HLSL. - class _OgreTerrainExport ShaderHelperCg : public ShaderHelper + class ShaderHelperCg : public ShaderHelper { protected: HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); @@ -212,7 +212,7 @@ namespace Ogre void generateFpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream); }; - class _OgreTerrainExport ShaderHelperHLSL : public ShaderHelperCg + class ShaderHelperHLSL : public ShaderHelperCg { protected: HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); @@ -220,7 +220,7 @@ namespace Ogre }; /// Utility class to help with generating shaders for GLSL. - class _OgreTerrainExport ShaderHelperGLSL : public ShaderHelper + class ShaderHelperGLSL : public ShaderHelper { protected: HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); From 64f792c01d4e3595f5ba0116773af23b23c7f9ab Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sat, 31 Mar 2012 21:05:33 +0200 Subject: [PATCH 296/488] Fix a value defined at the wrong place --- apps/openmw/mwsound/openal_output.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index ddf4df7057..e57c1a7094 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -71,7 +71,7 @@ static ALenum getALFormat(ChannelConfig chans, SampleType type) class OpenAL_SoundStream : public Sound { static const ALuint sNumBuffers = 6; - static const ALfloat sBufferLength = 0.125f; + static const ALfloat sBufferLength; OpenAL_Output &mOutput; @@ -101,6 +101,7 @@ public: bool process(); }; +const ALfloat OpenAL_SoundStream::sBufferLength = 0.125f; // // A background streaming thread (keeps active streams processed) From 6d875dfd54105505c62f831717632e6c9eeaad12 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 21:06:48 +0200 Subject: [PATCH 297/488] handle master/plugin properly --- apps/mwiniimporter/importer.cpp | 120 ++++++++++++++------------------ apps/mwiniimporter/importer.hpp | 10 ++- apps/mwiniimporter/main.cpp | 14 ++-- 3 files changed, 69 insertions(+), 75 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index a92eee725c..937073632d 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -5,6 +5,7 @@ #include #include #include +#include MwIniImporter::MwIniImporter() { const char *map[][2] = @@ -26,17 +27,12 @@ strmap MwIniImporter::loadIniFile(std::string filename) { std::cout << "load ini file: " << filename << std::endl; std::string section(""); - std::multimap map; + std::map map; boost::iostreams::streamfile(filename.c_str()); std::string line; while (std::getline(file, line)) { - // ignore sections for now - if(line.empty() || line[0] == ';') { - continue; - } - if(line[0] == '[') { if(line.length() > 2) { section = line.substr(1, line.length()-3); @@ -44,6 +40,15 @@ strmap MwIniImporter::loadIniFile(std::string filename) { continue; } + int comment_pos = line.find(";"); + if(comment_pos > 0) { + line = line.substr(0,comment_pos); + } + + if(line.empty()) { + continue; + } + int pos = line.find("="); if(pos < 1) { continue; @@ -58,16 +63,12 @@ strmap MwIniImporter::loadIniFile(std::string filename) { strmap MwIniImporter::loadCfgFile(std::string filename) { std::cout << "load cfg file: " << filename << std::endl; - std::multimap map; + std::map map; boost::iostreams::streamfile(filename.c_str()); std::string line; while (std::getline(file, line)) { - if(line[0] == '[') { // section - continue; // ignore for now - } - // we cant say comment by only looking at first char anymore int comment_pos = line.find("#"); if(comment_pos > 0) { @@ -102,67 +103,50 @@ void MwIniImporter::merge(strmap &cfg, strmap &ini) { } } -void MwIniImporter::importGameFiles(strmap &cfg, strmap &ini) { - std::vector esmFiles; - std::string baseEsm("Game Files:GameFile"); - std::string esmFile(""); - - strmap::iterator it = ini.begin(); - for(int i=0; it != ini.end(); i++) { - esmFile = baseEsm; - esmFile.append(1,i+'0'); - - it = ini.find(esmFile); - if(it == ini.end()) { - break; - } - - std::cout << "found EMS file: " << it->second << std::endl; - esmFiles.push_back(it->second); - esmFile = ""; - } - - - std::vector bsaFiles; - std::string baseBsa("Archives:Archive "); - std::string bsaFile(""); - - it = ini.begin(); - for(int i=0; it != ini.end(); i++) { - bsaFile = baseBsa; - bsaFile.append(1,i+'0'); - - it = ini.find(bsaFile); - if(it == ini.end()) { - break; - } - - std::cout << "found BSA file: " << it->second << std::endl; - bsaFiles.push_back(it->second); - bsaFile = ""; - } - - if(!esmFiles.empty()) { - cfg.erase("master"); - for(std::vector::iterator it = esmFiles.begin(); it != esmFiles.end(); it++) { - cfg.insert(std::make_pair("master", *it)); - } - } - - if(!bsaFile.empty()) { - cfg.erase("plugin"); - for(std::vector::iterator it = bsaFiles.begin(); it != bsaFiles.end(); it++) { - cfg.insert(std::make_pair("plugin", *it)); - } - } -} - bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, strmap &cfg, strmap &ini) { return false; } -void MwIniImporter::writeToFile(std::string file, strmap &cfg) { - boost::iostreams::stream out(file); +void MwIniImporter::importGameFiles(strmap &cfg, strmap &ini, std::vector &esmFiles, std::vector &espFiles) { + std::string baseGameFile("Game Files:GameFile"); + std::string gameFile(""); + + strmap::iterator it = ini.begin(); + for(int i=0; it != ini.end(); i++) { + gameFile = baseGameFile; + gameFile.append(1,i+'0'); + + it = ini.find(gameFile); + if(it == ini.end()) { + break; + } + + std::string filetype(it->second.substr(it->second.length()-4, 3)); + std::transform(filetype.begin(), filetype.end(), filetype.begin(), ::tolower); + + if(filetype.compare("esm") == 0) { + esmFiles.push_back(it->second); + } + else if(filetype.compare("esp") == 0) { + espFiles.push_back(it->second); + } + + gameFile = ""; + } +} + +void MwIniImporter::writeGameFiles(boost::iostreams::stream &out, std::vector &esmFiles, std::vector &espFiles) { + for(std::vector::iterator it=esmFiles.begin(); it != esmFiles.end(); it++) { + out << "master=" << *it << std::endl; + } + for(std::vector::iterator it=espFiles.begin(); it != espFiles.end(); it++) { + out << "plugin=" << *it << std::endl; + } +} + +void MwIniImporter::writeToFile(boost::iostreams::stream &out, strmap &cfg) { + cfg.erase("master"); + cfg.erase("plugin"); for(strmap::iterator it=cfg.begin(); it != cfg.end(); it++) { out << (it->first) << "=" << (it->second) << std::endl; diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 3c85fd25a2..d7250f5e25 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -1,12 +1,15 @@ #ifndef MWINIIMPORTER_IMPORTER #define MWINIIMPORTER_IMPORTER 1 +#include +#include #include #include +#include #include -typedef std::multimap strmap; +typedef std::map strmap; class MwIniImporter { @@ -16,8 +19,9 @@ class MwIniImporter { strmap loadIniFile(std::string filename); strmap loadCfgFile(std::string filename); void merge(strmap &cfg, strmap &ini); - void importGameFiles(strmap &cfg, strmap &ini); - void writeToFile(std::string file, strmap &cfg); + void importGameFiles(strmap &cfg, strmap &ini, std::vector &esmFiles, std::vector &espFiles); + void writeGameFiles(boost::iostreams::stream &out, std::vector &esmFiles, std::vector &espFiles); + void writeToFile(boost::iostreams::stream &out, strmap &cfg); private: bool specialMerge(std::string cfgKey, std::string iniKey, strmap &cfg, strmap &ini); diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 5eba95961a..7426e71ea0 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -58,21 +58,27 @@ int main(int argc, char *argv[]) { std::cerr << "cfg file does not exist" << std::endl; return -4; } + MwIniImporter importer; importer.setVerbose(vm.count("verbose")); + boost::iostreams::stream file(outputFile); - std::multimapini = importer.loadIniFile(iniFile); - std::multimapcfg = importer.loadCfgFile(cfgFile); + std::mapini = importer.loadIniFile(iniFile); + std::mapcfg = importer.loadCfgFile(cfgFile); importer.merge(cfg, ini); if(vm.count("game-files")) { - importer.importGameFiles(cfg, ini); + std::vector esmFiles; + std::vector espFiles; + + importer.importGameFiles(cfg, ini, esmFiles, espFiles); + importer.writeGameFiles(file, esmFiles, espFiles); } std::cout << "write to: " << outputFile << std::endl; - importer.writeToFile(outputFile, cfg); + importer.writeToFile(file, cfg); return 0; } From ca4ad741517b6d975ed1d6e0df151560582d30d5 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 31 Mar 2012 21:29:46 +0200 Subject: [PATCH 298/488] more cleanup --- apps/openmw/mwgui/window_manager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index 1afca1d41a..49b6e644d3 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -180,7 +180,6 @@ void WindowManager::updateVisible() // Mouse is visible whenever we're not in game mode MyGUI::PointerManager::getInstance().setVisible(isGuiMode()); - int eff; switch(mode) { case GM_Game: // If in game mode, don't show anything. @@ -202,16 +201,18 @@ void WindowManager::updateVisible() mCharGen->spawnDialog(mode); break; case GM_Inventory: + { // First, compute the effective set of windows to show. // This is controlled both by what windows the // user has opened/closed (the 'shown' variable) and by what // windows we are allowed to show (the 'allowed' var.) - eff = shown & allowed; + int eff = shown & allowed; // Show the windows we want map -> setVisible( (eff & GW_Map) != 0 ); stats -> setVisible( (eff & GW_Stats) != 0 ); break; + } case GM_Dialogue: dialogueWindow->open(); break; From bdc4c79b4e06450bb2735dbfeaa3b8a347248308 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sat, 31 Mar 2012 21:34:40 +0200 Subject: [PATCH 299/488] Fix for segfault when doing 'coc "seyda neen"'. This is a fix for segfault: ==8683== Process terminating with default action of signal 11 (SIGSEGV) ==8683== Access not within mapped region at address 0x0 ==8683== at 0x59DFE4: MWRender::Animation::handleShapes(std::vector >*, Ogre::Entity*, Ogre::SkeletonInstance*) (animation.cpp:503) ==8683== by 0x5A4ECE: MWRender::Actors::update(float) (actors.cpp:134) ==8683== by 0x5937A9: MWRender::RenderingManager::update(float) (renderingmanager.cpp:168) ==8683== by 0x629AD6: MWWorld::World::update(float) (world.cpp:705) ==8683== by 0x68B022: OMW::Engine::frameRenderingQueued(Ogre::FrameEvent const&) (engine.cpp:157) ==8683== by 0x51F9574: Ogre::Root::_fireFrameRenderingQueued(Ogre::FrameEvent&) (in /usr/lib/libOgreMain.so.1.8.0) ==8683== by 0x51F964F: Ogre::Root::_fireFrameRenderingQueued() (in /usr/lib/libOgreMain.so.1.8.0) ==8683== by 0x51F9681: Ogre::Root::_updateAllRenderTargets() (in /usr/lib/libOgreMain.so.1.8.0) ==8683== by 0x51F98CF: Ogre::Root::renderOneFrame() (in /usr/lib/libOgreMain.so.1.8.0) ==8683== by 0x51F990C: Ogre::Root::startRendering() (in /usr/lib/libOgreMain.so.1.8.0) ==8683== by 0x68A669: OMW::Engine::go() (engine.cpp:408) ==8683== by 0x51CECB: main (main.cpp:254) ==8683== If you believe this happened as a result of a stack ==8683== overflow in your program's main thread (unlikely but ==8683== possible), you can try to increase the size of the ==8683== main thread stack using the --main-stacksize= flag. ==8683== The main thread stack size used in this run was 8388608. when doing 'coc "seyda neen"' when animations are enabled (Animation::animate member variable is set to 1). --- apps/openmw/mwrender/animation.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index f3a8f64d55..fb710443b6 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -126,6 +126,11 @@ namespace MWRender{ void Animation::handleShapes(std::vector* allshapes, Ogre::Entity* creaturemodel, Ogre::SkeletonInstance *skel){ shapeNumber = 0; + if (allshapes == NULL || creaturemodel == NULL || skel == NULL) + { + return; + } + std::vector::iterator allshapesiter; for(allshapesiter = allshapes->begin(); allshapesiter != allshapes->end(); allshapesiter++) From 1d596d6c722ac579e527b785ff6b393d8375f3b6 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 22:48:50 +0200 Subject: [PATCH 300/488] use std::map > instead of std::map --- apps/mwiniimporter/importer.cpp | 103 ++++++++++++++++++++------------ apps/mwiniimporter/importer.hpp | 20 +++---- apps/mwiniimporter/main.cpp | 11 +--- 3 files changed, 78 insertions(+), 56 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 937073632d..f7ddb2bf07 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -23,11 +23,11 @@ void MwIniImporter::setVerbose(bool verbose) { mVerbose = verbose; } -strmap MwIniImporter::loadIniFile(std::string filename) { +MwIniImporter::multistrmap MwIniImporter::loadIniFile(std::string filename) { std::cout << "load ini file: " << filename << std::endl; std::string section(""); - std::map map; + MwIniImporter::multistrmap map; boost::iostreams::streamfile(filename.c_str()); std::string line; @@ -54,16 +54,23 @@ strmap MwIniImporter::loadIniFile(std::string filename) { continue; } - map.insert(std::make_pair(section + ":" + line.substr(0,pos), line.substr(pos+1))); + std::string key(section + ":" + line.substr(0,pos)); + std::string value(line.substr(pos+1)); + + multistrmap::iterator it; + if((it = map.find(key)) == map.end()) { + map.insert( std::make_pair > (key, std::vector() ) ); + } + map[key].push_back(value); } return map; } -strmap MwIniImporter::loadCfgFile(std::string filename) { +MwIniImporter::multistrmap MwIniImporter::loadCfgFile(std::string filename) { std::cout << "load cfg file: " << filename << std::endl; - std::map map; + MwIniImporter::multistrmap map; boost::iostreams::streamfile(filename.c_str()); std::string line; @@ -84,34 +91,43 @@ strmap MwIniImporter::loadCfgFile(std::string filename) { continue; } - map.insert(std::make_pair(line.substr(0,pos), line.substr(pos+1))); + std::string key(line.substr(0,pos)); + std::string value(line.substr(pos+1)); + + multistrmap::iterator it; + if((it = map.find(key)) == map.end()) { + map.insert( std::make_pair > (key, std::vector() ) ); + } + map[key].push_back(value); } return map; } -void MwIniImporter::merge(strmap &cfg, strmap &ini) { - strmap::iterator cfgIt; - strmap::iterator iniIt; +void MwIniImporter::merge(multistrmap &cfg, multistrmap &ini) { + multistrmap::iterator cfgIt; + multistrmap::iterator iniIt; for(strmap::iterator it=mMergeMap.begin(); it!=mMergeMap.end(); it++) { if((iniIt = ini.find(it->second)) != ini.end()) { cfg.erase(it->first); if(!this->specialMerge(it->first, it->second, cfg, ini)) { - cfg.insert(std::make_pair(it->first, iniIt->second)); + cfg.insert(std::make_pair >(it->first, iniIt->second)); } } } } -bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, strmap &cfg, strmap &ini) { +bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, multistrmap &cfg, multistrmap &ini) { return false; } -void MwIniImporter::importGameFiles(strmap &cfg, strmap &ini, std::vector &esmFiles, std::vector &espFiles) { +void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { + std::vector esmFiles; + std::vector espFiles; std::string baseGameFile("Game Files:GameFile"); std::string gameFile(""); - strmap::iterator it = ini.begin(); + multistrmap::iterator it = ini.begin(); for(int i=0; it != ini.end(); i++) { gameFile = baseGameFile; gameFile.append(1,i+'0'); @@ -121,35 +137,48 @@ void MwIniImporter::importGameFiles(strmap &cfg, strmap &ini, std::vectorsecond.substr(it->second.length()-4, 3)); - std::transform(filetype.begin(), filetype.end(), filetype.begin(), ::tolower); - - if(filetype.compare("esm") == 0) { - esmFiles.push_back(it->second); - } - else if(filetype.compare("esp") == 0) { - espFiles.push_back(it->second); + for(std::vector::iterator entry = it->second.begin(); entry!=it->second.end(); entry++) { + std::string filetype(entry->substr(entry->length()-4, 3)); + std::transform(filetype.begin(), filetype.end(), filetype.begin(), ::tolower); + + if(filetype.compare("esm") == 0) { + esmFiles.push_back(*entry); + } + else if(filetype.compare("esp") == 0) { + espFiles.push_back(*entry); + } } gameFile = ""; } -} - -void MwIniImporter::writeGameFiles(boost::iostreams::stream &out, std::vector &esmFiles, std::vector &espFiles) { - for(std::vector::iterator it=esmFiles.begin(); it != esmFiles.end(); it++) { - out << "master=" << *it << std::endl; - } - for(std::vector::iterator it=espFiles.begin(); it != espFiles.end(); it++) { - out << "plugin=" << *it << std::endl; - } -} - -void MwIniImporter::writeToFile(boost::iostreams::stream &out, strmap &cfg) { - cfg.erase("master"); - cfg.erase("plugin"); - for(strmap::iterator it=cfg.begin(); it != cfg.end(); it++) { - out << (it->first) << "=" << (it->second) << std::endl; + if(!esmFiles.empty()) { + multistrmap::iterator it; + cfg.erase("master"); + cfg.insert( std::make_pair > ("master", std::vector() ) ); + + for(std::vector::iterator it=esmFiles.begin(); it!=esmFiles.end(); it++) { + cfg["master"].push_back(*it); + } + } + + if(!espFiles.empty()) { + multistrmap::iterator it; + cfg.erase("plugin"); + cfg.insert( std::make_pair > ("plugin", std::vector() ) ); + + for(std::vector::iterator it=espFiles.begin(); it!=espFiles.end(); it++) { + cfg["plugin"].push_back(*it); + } + } +} + +void MwIniImporter::writeToFile(boost::iostreams::stream &out, multistrmap &cfg) { + + for(multistrmap::iterator it=cfg.begin(); it != cfg.end(); it++) { + for(std::vector::iterator entry=it->second.begin(); entry != it->second.end(); entry++) { + out << (it->first) << "=" << (*entry) << std::endl; + } } } diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index d7250f5e25..454dc209af 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -8,23 +8,21 @@ #include #include - -typedef std::map strmap; - class MwIniImporter { - public: + typedef std::map strmap; + typedef std::map > multistrmap; + MwIniImporter(); void setVerbose(bool verbose); - strmap loadIniFile(std::string filename); - strmap loadCfgFile(std::string filename); - void merge(strmap &cfg, strmap &ini); - void importGameFiles(strmap &cfg, strmap &ini, std::vector &esmFiles, std::vector &espFiles); - void writeGameFiles(boost::iostreams::stream &out, std::vector &esmFiles, std::vector &espFiles); - void writeToFile(boost::iostreams::stream &out, strmap &cfg); + multistrmap loadIniFile(std::string filename); + multistrmap loadCfgFile(std::string filename); + void merge(multistrmap &cfg, multistrmap &ini); + void importGameFiles(multistrmap &cfg, multistrmap &ini); + void writeToFile(boost::iostreams::stream &out, multistrmap &cfg); private: - bool specialMerge(std::string cfgKey, std::string iniKey, strmap &cfg, strmap &ini); + bool specialMerge(std::string cfgKey, std::string iniKey, multistrmap &cfg, multistrmap &ini); bool mVerbose; strmap mMergeMap; }; diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 7426e71ea0..9a6e61645d 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -59,22 +59,17 @@ int main(int argc, char *argv[]) { return -4; } - MwIniImporter importer; importer.setVerbose(vm.count("verbose")); boost::iostreams::stream file(outputFile); - std::mapini = importer.loadIniFile(iniFile); - std::mapcfg = importer.loadCfgFile(cfgFile); + MwIniImporter::multistrmap ini = importer.loadIniFile(iniFile); + MwIniImporter::multistrmap cfg = importer.loadCfgFile(cfgFile); importer.merge(cfg, ini); if(vm.count("game-files")) { - std::vector esmFiles; - std::vector espFiles; - - importer.importGameFiles(cfg, ini, esmFiles, espFiles); - importer.writeGameFiles(file, esmFiles, espFiles); + importer.importGameFiles(cfg, ini); } std::cout << "write to: " << outputFile << std::endl; From a2a7539fd55b2a4480c36575f0814d4180215146 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Sat, 31 Mar 2012 23:15:33 +0200 Subject: [PATCH 301/488] fix for more than 10 game files; delete both master and plugin settings if called with --game-files --- apps/mwiniimporter/importer.cpp | 36 +++++++++++++++++---------------- apps/mwiniimporter/importer.hpp | 1 + 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index f7ddb2bf07..a82240a8aa 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -6,6 +6,7 @@ #include #include #include +#include MwIniImporter::MwIniImporter() { const char *map[][2] = @@ -23,6 +24,12 @@ void MwIniImporter::setVerbose(bool verbose) { mVerbose = verbose; } +std::string MwIniImporter::numberToString(int n) { + std::stringstream str; + str << n; + return str.str(); +} + MwIniImporter::multistrmap MwIniImporter::loadIniFile(std::string filename) { std::cout << "load ini file: " << filename << std::endl; @@ -130,7 +137,7 @@ void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { multistrmap::iterator it = ini.begin(); for(int i=0; it != ini.end(); i++) { gameFile = baseGameFile; - gameFile.append(1,i+'0'); + gameFile.append(this->numberToString(i)); it = ini.find(gameFile); if(it == ini.end()) { @@ -152,24 +159,19 @@ void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { gameFile = ""; } - if(!esmFiles.empty()) { - multistrmap::iterator it; - cfg.erase("master"); - cfg.insert( std::make_pair > ("master", std::vector() ) ); - - for(std::vector::iterator it=esmFiles.begin(); it!=esmFiles.end(); it++) { - cfg["master"].push_back(*it); - } + multistrmap::iterator it; + cfg.erase("master"); + cfg.insert( std::make_pair > ("master", std::vector() ) ); + + for(std::vector::iterator it=esmFiles.begin(); it!=esmFiles.end(); it++) { + cfg["master"].push_back(*it); } - if(!espFiles.empty()) { - multistrmap::iterator it; - cfg.erase("plugin"); - cfg.insert( std::make_pair > ("plugin", std::vector() ) ); - - for(std::vector::iterator it=espFiles.begin(); it!=espFiles.end(); it++) { - cfg["plugin"].push_back(*it); - } + cfg.erase("plugin"); + cfg.insert( std::make_pair > ("plugin", std::vector() ) ); + + for(std::vector::iterator it=espFiles.begin(); it!=espFiles.end(); it++) { + cfg["plugin"].push_back(*it); } } diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 454dc209af..988f10255e 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -23,6 +23,7 @@ class MwIniImporter { private: bool specialMerge(std::string cfgKey, std::string iniKey, multistrmap &cfg, multistrmap &ini); + std::string numberToString(int n); bool mVerbose; strmap mMergeMap; }; From 8aa4001937834851b83146177cc591ebbc6f0c47 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 1 Apr 2012 10:34:51 +0200 Subject: [PATCH 302/488] compile fix --- apps/mwiniimporter/importer.cpp | 51 ++++++++++++++++----------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index a82240a8aa..08b05f417e 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -14,7 +14,7 @@ MwIniImporter::MwIniImporter() { { "fps", "General:Show FPS" }, { 0, 0 } }; - + for(int i=0; map[i][0]; i++) { mMergeMap.insert(std::make_pair(map[i][0], map[i][1])); } @@ -32,7 +32,7 @@ std::string MwIniImporter::numberToString(int n) { MwIniImporter::multistrmap MwIniImporter::loadIniFile(std::string filename) { std::cout << "load ini file: " << filename << std::endl; - + std::string section(""); MwIniImporter::multistrmap map; boost::iostreams::streamfile(filename.c_str()); @@ -46,68 +46,68 @@ MwIniImporter::multistrmap MwIniImporter::loadIniFile(std::string filename) { } continue; } - + int comment_pos = line.find(";"); if(comment_pos > 0) { line = line.substr(0,comment_pos); } - + if(line.empty()) { continue; } - + int pos = line.find("="); if(pos < 1) { continue; } - + std::string key(section + ":" + line.substr(0,pos)); std::string value(line.substr(pos+1)); - + multistrmap::iterator it; if((it = map.find(key)) == map.end()) { map.insert( std::make_pair > (key, std::vector() ) ); } map[key].push_back(value); } - + return map; } MwIniImporter::multistrmap MwIniImporter::loadCfgFile(std::string filename) { std::cout << "load cfg file: " << filename << std::endl; - + MwIniImporter::multistrmap map; boost::iostreams::streamfile(filename.c_str()); std::string line; while (std::getline(file, line)) { - + // we cant say comment by only looking at first char anymore int comment_pos = line.find("#"); if(comment_pos > 0) { line = line.substr(0,comment_pos); } - + if(line.empty()) { continue; } - + int pos = line.find("="); if(pos < 1) { continue; } - + std::string key(line.substr(0,pos)); std::string value(line.substr(pos+1)); - + multistrmap::iterator it; if((it = map.find(key)) == map.end()) { map.insert( std::make_pair > (key, std::vector() ) ); } map[key].push_back(value); } - + return map; } @@ -138,16 +138,16 @@ void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { for(int i=0; it != ini.end(); i++) { gameFile = baseGameFile; gameFile.append(this->numberToString(i)); - + it = ini.find(gameFile); if(it == ini.end()) { break; } - + for(std::vector::iterator entry = it->second.begin(); entry!=it->second.end(); entry++) { std::string filetype(entry->substr(entry->length()-4, 3)); std::transform(filetype.begin(), filetype.end(), filetype.begin(), ::tolower); - + if(filetype.compare("esm") == 0) { esmFiles.push_back(*entry); } @@ -155,33 +155,30 @@ void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { espFiles.push_back(*entry); } } - + gameFile = ""; } - - multistrmap::iterator it; + cfg.erase("master"); cfg.insert( std::make_pair > ("master", std::vector() ) ); - + for(std::vector::iterator it=esmFiles.begin(); it!=esmFiles.end(); it++) { cfg["master"].push_back(*it); } - + cfg.erase("plugin"); cfg.insert( std::make_pair > ("plugin", std::vector() ) ); - + for(std::vector::iterator it=espFiles.begin(); it!=espFiles.end(); it++) { cfg["plugin"].push_back(*it); } } void MwIniImporter::writeToFile(boost::iostreams::stream &out, multistrmap &cfg) { - + for(multistrmap::iterator it=cfg.begin(); it != cfg.end(); it++) { for(std::vector::iterator entry=it->second.begin(); entry != it->second.end(); entry++) { out << (it->first) << "=" << (*entry) << std::endl; } } } - - From 4e63f89829fbd0d64f6b782c60849f0776987ed8 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 13:09:30 +0200 Subject: [PATCH 303/488] silence an error regarding faced handle --- apps/openmw/engine.cpp | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 441c227699..2da5456e6d 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -82,12 +82,20 @@ void OMW::Engine::updateFocusReport (float duration) if (!handle.empty()) { - MWWorld::Ptr ptr = mEnvironment.mWorld->getPtrViaHandle (handle); + // the faced handle is not updated immediately, so on a cell change it might + // point to an object that doesn't exist anymore + // therefore, we are catching the "Unknown Ogre handle" exception that occurs in this case + try + { + MWWorld::Ptr ptr = mEnvironment.mWorld->getPtrViaHandle (handle); - if (!ptr.isEmpty()){ - name = MWWorld::Class::get (ptr).getName (ptr); + if (!ptr.isEmpty()){ + name = MWWorld::Class::get (ptr).getName (ptr); + } } + catch (std::runtime_error& e) + {} } if (name!=mFocusName) @@ -415,10 +423,21 @@ void OMW::Engine::activate() if (handle.empty()) return; - MWWorld::Ptr ptr = mEnvironment.mWorld->getPtrViaHandle (handle); + // the faced handle is not updated immediately, so on a cell change it might + // point to an object that doesn't exist anymore + // therefore, we are catching the "Unknown Ogre handle" exception that occurs in this case + MWWorld::Ptr ptr; + try + { + ptr = mEnvironment.mWorld->getPtrViaHandle (handle); - if (ptr.isEmpty()) + if (ptr.isEmpty()) + return; + } + catch (std::runtime_error&) + { return; + } MWScript::InterpreterContext interpreterContext (mEnvironment, &ptr.getRefData().getLocals(), ptr); From 80456778be3e51e177626e1e28da2fa907251658 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 14:22:04 +0200 Subject: [PATCH 304/488] fix for pickup up transparent objects, workaround for doors --- apps/openmw/mwrender/occlusionquery.cpp | 42 ++++++++++++++++++++-- apps/openmw/mwrender/occlusionquery.hpp | 8 +++++ apps/openmw/mwworld/world.cpp | 46 ++++++++++++++++++++----- 3 files changed, 85 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index cc3464c646..6215a6f199 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -5,6 +5,7 @@ #include #include #include +#include using namespace MWRender; using namespace Ogre; @@ -12,7 +13,7 @@ using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), mTestResult(false), - mQuerySingleObjectRequested(false), mWasVisible(false), mObjectWasVisible(false), mDoQuery2(false) + mQuerySingleObjectRequested(false), mWasVisible(false), mObjectWasVisible(false) { mRendering = renderer; mSunNode = sunNode; @@ -82,7 +83,6 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod mRendering->getScene()->addRenderObjectListener(this); mRendering->getScene()->addRenderQueueListener(this); mDoQuery = true; - mDoQuery2 = true; } OcclusionQuery::~OcclusionQuery() @@ -190,7 +190,6 @@ void OcclusionQuery::update(float duration) // Stop occlusion queries until we get their information // (may not happen on the same frame they are requested in) mDoQuery = false; - mDoQuery2 = false; if (!mSunTotalAreaQuery->isStillOutstanding() && !mSunVisibleAreaQuery->isStillOutstanding() @@ -252,3 +251,40 @@ bool OcclusionQuery::getTestResult() return mTestResult; } + +bool OcclusionQuery::isPotentialOccluder(Ogre::SceneNode* node) +{ + bool result = false; + for (unsigned int i=0; i < node->numAttachedObjects(); ++i) + { + MovableObject* ob = node->getAttachedObject(i); + std::string type = ob->getMovableType(); + if (type == "Entity") + { + Entity* ent = static_cast(ob); + for (unsigned int j=0; j < ent->getNumSubEntities(); ++j) + { + // if any sub entity has a material with depth write off, + // consider the object as not an occluder + MaterialPtr mat = ent->getSubEntity(j)->getMaterial(); + + Material::TechniqueIterator techIt = mat->getTechniqueIterator(); + while (techIt.hasMoreElements()) + { + Technique* tech = techIt.getNext(); + Technique::PassIterator passIt = tech->getPassIterator(); + while (passIt.hasMoreElements()) + { + Pass* pass = passIt.getNext(); + + if (pass->getDepthWriteEnabled() == false) + return false; + else + result = true; + } + } + } + } + } + return result; +} diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index ebdc51311d..934d963ac2 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -46,6 +46,14 @@ namespace MWRender */ bool occlusionTestPending(); + /** + * Checks if the objects held by this scenenode + * can be considered as potential occluders + * (which might not be the case when transparency is involved) + * @param Scene node + */ + bool isPotentialOccluder(Ogre::SceneNode* node); + /** * @return true if the object tested in the last request was occluded */ diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 6f03fa37f5..47e608624f 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -750,15 +750,16 @@ namespace MWWorld // figure out which object we want to test against std::vector < std::pair < float, std::string > > results = mPhysics->getFacedObjects(); - // ignore the player - for (std::vector < std::pair < float, std::string > >::iterator it = results.begin(); - it != results.end(); ++it) + // ignore the player and other things we're not interested in + std::vector < std::pair < float, std::string > >::iterator it = results.begin(); + while (it != results.end()) { - if ( (*it).second == mPlayer->getPlayer().getRefData().getHandle() ) + if ( (*it).second == mPlayer->getPlayer().getRefData().getHandle()) { - results.erase(it); - break; + it = results.erase(it); } + else + ++it; } if (results.size() == 0) @@ -774,6 +775,7 @@ namespace MWWorld btVector3 p = mPhysics->getRayPoint(results.front().first); Ogre::Vector3 pos(p.x(), p.z(), -p.y()); Ogre::SceneNode* node = mFaced1.getRefData().getBaseNode(); + query->occlusionTest(pos, node); } else @@ -784,10 +786,38 @@ namespace MWWorld mFaced2 = getPtrViaHandle(results[1].second); mNumFacing = 2; + //std::cout << "Num facing 2 : " << mFaced1Name << " " << mFaced2Name << std::endl; + //std::cout << "Type 1 " << mFaced1.getTypeName() << " " << mFaced2.getTypeName() << std::endl; + btVector3 p = mPhysics->getRayPoint(results[1].first); Ogre::Vector3 pos(p.x(), p.z(), -p.y()); - Ogre::SceneNode* node = mFaced2.getRefData().getBaseNode(); - query->occlusionTest(pos, node); + Ogre::SceneNode* node1 = mFaced1.getRefData().getBaseNode(); + Ogre::SceneNode* node2 = mFaced2.getRefData().getBaseNode(); + + // no need to test if the first node is not occluder + if (!query->isPotentialOccluder(node1) && (mFaced1.getTypeName().find("Static") == std::string::npos)) + { + mFacedHandle = mFaced1Name; + //std::cout << "node1 Not an occluder" << std::endl; + return; + } + + // no need to test if the second object is static (thus cannot be activated) + if (mFaced2.getTypeName().find("Static") != std::string::npos) + { + mFacedHandle = mFaced1Name; + return; + } + + // work around door problems + if (mFaced1.getTypeName().find("Static") != std::string::npos + && mFaced2.getTypeName().find("Door") != std::string::npos) + { + mFacedHandle = mFaced2Name; + return; + } + + query->occlusionTest(pos, node2); } } } From df8e0bbff2533a5d9b9c1ef11ca2f4589663b1ed Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 14:53:41 +0200 Subject: [PATCH 305/488] player check --- apps/openmw/mwworld/world.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 47e608624f..9ca31b5d33 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -754,7 +754,7 @@ namespace MWWorld std::vector < std::pair < float, std::string > >::iterator it = results.begin(); while (it != results.end()) { - if ( (*it).second == mPlayer->getPlayer().getRefData().getHandle()) + if ( getPtrViaHandle((*it).second) == mPlayer->getPlayer() ) { it = results.erase(it); } @@ -776,6 +776,9 @@ namespace MWWorld Ogre::Vector3 pos(p.x(), p.z(), -p.y()); Ogre::SceneNode* node = mFaced1.getRefData().getBaseNode(); + //std::cout << "Num facing 1 : " << mFaced1Name << std::endl; + //std::cout << "Type 1 " << mFaced1.getTypeName() << std::endl; + query->occlusionTest(pos, node); } else @@ -786,8 +789,8 @@ namespace MWWorld mFaced2 = getPtrViaHandle(results[1].second); mNumFacing = 2; - //std::cout << "Num facing 2 : " << mFaced1Name << " " << mFaced2Name << std::endl; - //std::cout << "Type 1 " << mFaced1.getTypeName() << " " << mFaced2.getTypeName() << std::endl; + std::cout << "Num facing 2 : " << mFaced1Name << " " << mFaced2Name << std::endl; + std::cout << "Type 1 " << mFaced1.getTypeName() << " " << mFaced2.getTypeName() << std::endl; btVector3 p = mPhysics->getRayPoint(results[1].first); Ogre::Vector3 pos(p.x(), p.z(), -p.y()); From ee754eda6c5e2377956092ad6a04f02c3367fd1e Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 15:07:41 +0200 Subject: [PATCH 306/488] don't create sky until entering an exterior cell --- apps/openmw/mwrender/occlusionquery.cpp | 24 +++++++++++++++++------ apps/openmw/mwrender/occlusionquery.hpp | 2 ++ apps/openmw/mwrender/renderingmanager.cpp | 2 ++ apps/openmw/mwrender/sky.cpp | 18 ++++++++++++++++- apps/openmw/mwrender/sky.hpp | 7 ++++++- apps/openmw/mwworld/world.cpp | 4 ++-- 6 files changed, 47 insertions(+), 10 deletions(-) diff --git a/apps/openmw/mwrender/occlusionquery.cpp b/apps/openmw/mwrender/occlusionquery.cpp index cc3464c646..29cfe33fe3 100644 --- a/apps/openmw/mwrender/occlusionquery.cpp +++ b/apps/openmw/mwrender/occlusionquery.cpp @@ -12,7 +12,8 @@ using namespace Ogre; OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNode* sunNode) : mSunTotalAreaQuery(0), mSunVisibleAreaQuery(0), mSingleObjectQuery(0), mActiveQuery(0), mDoQuery(0), mSunVisibility(0), mQuerySingleObjectStarted(false), mTestResult(false), - mQuerySingleObjectRequested(false), mWasVisible(false), mObjectWasVisible(false), mDoQuery2(false) + mQuerySingleObjectRequested(false), mWasVisible(false), mObjectWasVisible(false), mDoQuery2(false), + mBBNode(0) { mRendering = renderer; mSunNode = sunNode; @@ -52,7 +53,8 @@ OcclusionQuery::OcclusionQuery(OEngine::Render::OgreRenderer* renderer, SceneNod matQueryVisible->setCullingMode(CULL_NONE); matQueryVisible->setManualCullingMode(MANUAL_CULL_NONE); - mBBNode = mSunNode->getParentSceneNode()->createChildSceneNode(); + if (sunNode) + mBBNode = mSunNode->getParentSceneNode()->createChildSceneNode(); mObjectNode = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); mBBNodeReal = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); @@ -182,10 +184,13 @@ void OcclusionQuery::update(float duration) if (dist==0) dist = 10000000; dist -= 1000; // bias dist /= 1000.f; - mBBNode->setPosition(mSunNode->getPosition() * dist); - mBBNode->setScale(dist, dist, dist); - mBBNodeReal->setPosition(mBBNode->_getDerivedPosition()); - mBBNodeReal->setScale(mBBNode->getScale()); + if (mBBNode) + { + mBBNode->setPosition(mSunNode->getPosition() * dist); + mBBNode->setScale(dist, dist, dist); + mBBNodeReal->setPosition(mBBNode->_getDerivedPosition()); + mBBNodeReal->setScale(mBBNode->getScale()); + } // Stop occlusion queries until we get their information // (may not happen on the same frame they are requested in) @@ -245,6 +250,13 @@ bool OcclusionQuery::occlusionTestPending() return (mQuerySingleObjectRequested || mQuerySingleObjectStarted); } +void OcclusionQuery::setSunNode(Ogre::SceneNode* node) +{ + mSunNode = node; + if (!mBBNode) + mBBNode = node->getParentSceneNode()->createChildSceneNode(); +} + bool OcclusionQuery::getTestResult() { assert( !occlusionTestPending() diff --git a/apps/openmw/mwrender/occlusionquery.hpp b/apps/openmw/mwrender/occlusionquery.hpp index ebdc51311d..b655c8e46b 100644 --- a/apps/openmw/mwrender/occlusionquery.hpp +++ b/apps/openmw/mwrender/occlusionquery.hpp @@ -53,6 +53,8 @@ namespace MWRender float getSunVisibility() const {return mSunVisibility;}; + void setSunNode(Ogre::SceneNode* node); + private: Ogre::HardwareOcclusionQuery* mSunTotalAreaQuery; Ogre::HardwareOcclusionQuery* mSunVisibleAreaQuery; diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 3d715b3d32..bbddd325a1 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -201,6 +201,8 @@ void RenderingManager::skyEnable () { if(mSkyManager) mSkyManager->enable(); + + mOcclusionQuery->setSunNode(mSkyManager->getSunNode()); } void RenderingManager::skyDisable () diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 265008e346..23b44d1f3c 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -325,14 +325,17 @@ SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera, MWWorld::Environmen , mSunEnabled(true) , mMasserEnabled(true) , mSecundaEnabled(true) + , mCreated(false) { - mViewport = pCamera->getViewport(); mSceneMgr = pMwRoot->getCreator(); mRootNode = pCamera->getParentSceneNode()->createChildSceneNode(); mRootNode->pitch(Degree(-90)); // convert MW to ogre coordinates mRootNode->setInheritOrientation(false); +} +void SkyManager::create() +{ /// \todo preload all the textures and meshes that are used for sky rendering // Create overlay used for thunderstorm @@ -562,6 +565,8 @@ SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera, MWWorld::Environmen mCloudMaterial->getTechnique(0)->getPass(0)->setSceneBlending(SBT_TRANSPARENT_ALPHA); mCloudMaterial->getTechnique(0)->getPass(0)->createTextureUnitState(""); + + mCreated = true; } SkyManager::~SkyManager() @@ -574,11 +579,13 @@ SkyManager::~SkyManager() int SkyManager::getMasserPhase() const { + if (!mCreated) return 0; return mMasser->getPhaseInt(); } int SkyManager::getSecundaPhase() const { + if (!mCreated) return 0; return mSecunda->getPhaseInt(); } @@ -631,6 +638,9 @@ void SkyManager::update(float duration) void SkyManager::enable() { + if (!mCreated) + create(); + mRootNode->setVisible(true); mEnabled = true; } @@ -654,6 +664,7 @@ void SkyManager::setCloudsOpacity(float opacity) void SkyManager::setWeather(const MWWorld::WeatherResult& weather) { + if (!mCreated) return; if (mClouds != weather.mCloudTexture) { mCloudMaterial->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName("textures\\"+weather.mCloudTexture); @@ -750,17 +761,20 @@ void SkyManager::sunDisable() void SkyManager::setSunDirection(const Vector3& direction) { + if (!mCreated) return; mSun->setPosition(direction); mSunGlare->setPosition(direction); } void SkyManager::setMasserDirection(const Vector3& direction) { + if (!mCreated) return; mMasser->setPosition(direction); } void SkyManager::setSecundaDirection(const Vector3& direction) { + if (!mCreated) return; mSecunda->setPosition(direction); } @@ -786,6 +800,7 @@ void SkyManager::secundaDisable() void SkyManager::setThunder(const float factor) { + if (!mCreated) return; if (factor > 0.f) { mThunderOverlay->show(); @@ -818,5 +833,6 @@ void SkyManager::setDate(int day, int month) Ogre::SceneNode* SkyManager::getSunNode() { + if (!mCreated) return 0; return mSun->getNode(); } diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index 508af76732..baf5933cbc 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -112,6 +112,9 @@ namespace MWRender void update(float duration); + void create(); + ///< no need to call this, automatically done on first enable() + void enable(); void disable(); @@ -164,8 +167,10 @@ namespace MWRender void setGlare(const float glare); Ogre::Vector3 getRealSunPos(); - + private: + bool mCreated; + MWWorld::Environment* mEnvironment; float mHour; int mDay; diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 6f03fa37f5..a48cc7e722 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -146,10 +146,10 @@ namespace MWWorld mRendering->skySetDate (mGlobalVariables->getInt ("day"), mGlobalVariables->getInt ("month")); - mRendering->getSkyManager()->enable(); + mRendering->skyEnable(); } else - mRendering->getSkyManager()->disable(); + mRendering->skyDisable(); } World::World (OEngine::Render::OgreRenderer& renderer, From 9a261a02aa78e1f9edfbb7aac8874d653b814d78 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 15:14:43 +0200 Subject: [PATCH 307/488] changed the cloud movement direction like suggested on the forum --- apps/openmw/mwrender/sky.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 23b44d1f3c..2fdf9b2cd6 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -536,7 +536,7 @@ void SkyManager::create() " uniform float4 emissive \n" ") \n" "{ \n" - " uv += float2(1,0) * time * speed * 0.003; \n" // Scroll in x direction + " uv += float2(0,1) * time * speed * 0.003; \n" // Scroll in y direction " float4 tex = lerp(tex2D(texture, uv), tex2D(secondTexture, uv), transitionFactor); \n" " oColor = color * float4(emissive.xyz,1) * tex * float4(1,1,1,opacity); \n" "}"; From cab412c225703cfda26efc5d20be8fc9bfde4c5f Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sun, 1 Apr 2012 17:27:18 +0400 Subject: [PATCH 308/488] Feature #37 (In Progress) Render Path Grid optimisation, now it takes only two batches per cell. --- apps/openmw/mwrender/debugging.cpp | 132 ++++++++++++++++------------- apps/openmw/mwrender/debugging.hpp | 4 +- 2 files changed, 74 insertions(+), 62 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index f768de661f..730370ae1b 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -23,7 +23,7 @@ namespace MWRender static const std::string PATHGRID_POINT_MATERIAL = "pathgridPointMaterial"; static const std::string PATHGRID_LINE_MATERIAL = "pathgridLineMaterial"; static const std::string DEBUGGING_GROUP = "debugging"; -static const int POINT_MESH_BASE = 80; +static const int POINT_MESH_BASE = 40; void Debugging::createGridMaterials() { @@ -61,39 +61,80 @@ void Debugging::destroyGridMaterials() } } -MovableObject *Debugging::createPathgridLine(const Vector3& from, const Vector3& to) +ManualObject *Debugging::createPathgridLines(const ESM::Pathgrid *pathgrid) { - ManualObject *line = mSceneMgr->createManualObject(); - line->begin(PATHGRID_LINE_MATERIAL, Ogre::RenderOperation::OT_LINE_LIST); - line->position(from); - line->position(to); - line->end(); + ManualObject *result = mSceneMgr->createManualObject(); - return line; + result->begin(PATHGRID_LINE_MATERIAL, RenderOperation::OT_LINE_LIST); + for(ESM::Pathgrid::EdgeList::const_iterator it = pathgrid->edges.begin(); + it != pathgrid->edges.end(); + it++) + { + const ESM::Pathgrid::Edge &edge = *it; + const ESM::Pathgrid::Point &p1 = pathgrid->points[edge.v0], &p2 = pathgrid->points[edge.v1]; + Vector3 direction = (Vector3(p2.x, p2.y, p2.z) - Vector3(p1.x, p1.y, p1.z)); + Vector3 lineDisplacement = direction.crossProduct(Vector3::UNIT_Z).normalisedCopy(); + lineDisplacement = lineDisplacement * POINT_MESH_BASE/2 + Vector3(0, 0, 10); // move lines up a little, so they will be less covered by meshes/landscape + result->position(Vector3(p1.x, p1.y, p1.z) + lineDisplacement); + result->position(Vector3(p2.x, p2.y, p2.z) + lineDisplacement); + } + result->end(); + + return result; } -MovableObject *Debugging::createPathgridPoint() +ManualObject *Debugging::createPathgridPoints(const ESM::Pathgrid *pathgrid) { - ManualObject *point = mSceneMgr->createManualObject(); - point->begin(PATHGRID_POINT_MATERIAL, Ogre::RenderOperation::OT_TRIANGLE_FAN); - float height = POINT_MESH_BASE /*/ sqrtf(2)*/; - point->position(0, 0, height); - point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); - point->position(POINT_MESH_BASE, -POINT_MESH_BASE, 0); - point->position(POINT_MESH_BASE, POINT_MESH_BASE, 0); - point->position(-POINT_MESH_BASE, POINT_MESH_BASE, 0); - point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); - point->end(); - point->begin(PATHGRID_POINT_MATERIAL, Ogre::RenderOperation::OT_TRIANGLE_FAN); - point->position(0, 0, -height); - point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); - point->position(-POINT_MESH_BASE, POINT_MESH_BASE, 0); - point->position(POINT_MESH_BASE, POINT_MESH_BASE, 0); - point->position(POINT_MESH_BASE, -POINT_MESH_BASE, 0); - point->position(-POINT_MESH_BASE, -POINT_MESH_BASE, 0); - point->end(); + ManualObject *result = mSceneMgr->createManualObject(); + const float height = POINT_MESH_BASE /*/ sqrtf(2)*/; - return point; + result->begin(PATHGRID_POINT_MATERIAL, RenderOperation::OT_TRIANGLE_STRIP); + + bool first = true; + uint32 startIndex = 0; + for(ESM::Pathgrid::PointList::const_iterator it = pathgrid->points.begin(); + it != pathgrid->points.end(); + it++, startIndex += 6) + { + Vector3 pointPos(it->x, it->y, it->z); + + if (!first) + { + // degenerate triangle from previous octahedron + result->index(startIndex - 4); // 2nd point of previous octahedron + result->index(startIndex); // start point of current octahedron + } + + result->position(pointPos + Vector3(0, 0, height)); // 0 + result->position(pointPos + Vector3(-POINT_MESH_BASE, -POINT_MESH_BASE, 0)); // 1 + result->position(pointPos + Vector3(POINT_MESH_BASE, -POINT_MESH_BASE, 0)); // 2 + result->position(pointPos + Vector3(POINT_MESH_BASE, POINT_MESH_BASE, 0)); // 3 + result->position(pointPos + Vector3(-POINT_MESH_BASE, POINT_MESH_BASE, 0)); // 4 + result->position(pointPos + Vector3(0, 0, -height)); // 5 + + result->index(startIndex + 0); + result->index(startIndex + 1); + result->index(startIndex + 2); + result->index(startIndex + 5); + result->index(startIndex + 3); + result->index(startIndex + 4); + // degenerates + result->index(startIndex + 4); + result->index(startIndex + 5); + result->index(startIndex + 5); + // end degenerates + result->index(startIndex + 1); + result->index(startIndex + 4); + result->index(startIndex + 0); + result->index(startIndex + 3); + result->index(startIndex + 2); + + first = false; + } + + result->end(); + + return result; } Debugging::Debugging(SceneNode *mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine) : @@ -179,36 +220,15 @@ void Debugging::enableCellPathgrid(MWWorld::Ptr::CellStore *store) ESM::Pathgrid *pathgrid = mEnvironment.mWorld->getStore().pathgrids.search(*store->cell); if (!pathgrid) return; - Vector3 cellPathGridPos; + Vector3 cellPathGridPos(0, 0, 0); if (store->cell->isExterior()) { cellPathGridPos.x = store->cell->data.gridX * ESM::Land::REAL_SIZE; cellPathGridPos.y = store->cell->data.gridY * ESM::Land::REAL_SIZE; } SceneNode *cellPathGrid = mPathGridRoot->createChildSceneNode(cellPathGridPos); - ESM::Pathgrid::PointList points = pathgrid->points; - for (ESM::Pathgrid::PointList::iterator it = points.begin(); it != points.end(); it++) - { - Vector3 position(it->x, it->y, it->z); - SceneNode* pointNode = cellPathGrid->createChildSceneNode(position); - pointNode->setScale(0.5, 0.5, 0.5); - pointNode->attachObject(createPathgridPoint()); - } - - ESM::Pathgrid::EdgeList edges = pathgrid->edges; - for(ESM::Pathgrid::EdgeList::const_iterator it = edges.begin(); - it != edges.end(); it++) - { - ESM::Pathgrid::Edge edge = *it; - ESM::Pathgrid::Point p1 = points[edge.v0], p2 = points[edge.v1]; - - Vector3 direction = (Vector3(p2.x, p2.y, p2.z) - Vector3(p1.x, p1.y, p1.z)); - Vector3 lineDisplacement = direction.crossProduct(Vector3::UNIT_Z).normalisedCopy(); - lineDisplacement = lineDisplacement * POINT_MESH_BASE/2 + - Vector3(0, 0, 10); // move lines up a little, so they will be less covered by meshes/landscape - cellPathGrid->attachObject(createPathgridLine(Vector3(p1.x, p1.y, p1.z) + lineDisplacement, - Vector3(p2.x, p2.y, p2.z) + lineDisplacement)); - } + cellPathGrid->attachObject(createPathgridLines(pathgrid)); + cellPathGrid->attachObject(createPathgridPoints(pathgrid)); if (store->cell->isExterior()) { @@ -246,15 +266,7 @@ void Debugging::disableCellPathgrid(MWWorld::Ptr::CellStore *store) void Debugging::destroyCellPathgridNode(SceneNode *node) { mPathGridRoot->removeChild(node); - - SceneNode::ChildNodeIterator childIt = node->getChildIterator(); - while (childIt.hasMoreElements()) - { - SceneNode *child = static_cast(childIt.getNext()); - destroyAttachedObjects(child); - } destroyAttachedObjects(node); - node->removeAndDestroyAllChildren(); mSceneMgr->destroySceneNode(node); } diff --git a/apps/openmw/mwrender/debugging.hpp b/apps/openmw/mwrender/debugging.hpp index c8c19fb8cb..ebf3884dcc 100644 --- a/apps/openmw/mwrender/debugging.hpp +++ b/apps/openmw/mwrender/debugging.hpp @@ -65,8 +65,8 @@ namespace MWRender void destroyGridMaterials(); // path grid meshes - Ogre::MovableObject* createPathgridLine(const Ogre::Vector3& from, const Ogre::Vector3& to); - Ogre::MovableObject* createPathgridPoint(); + Ogre::ManualObject *createPathgridLines(const ESM::Pathgrid *pathgrid); + Ogre::ManualObject *createPathgridPoints(const ESM::Pathgrid *pathgrid); public: Debugging(Ogre::SceneNode* mwRoot, MWWorld::Environment &env, OEngine::Physic::PhysicEngine *engine); ~Debugging(); From 30d6c880ffd0ed4253ca368324a76eaeb9b24ed4 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Sun, 1 Apr 2012 17:51:37 +0400 Subject: [PATCH 309/488] Feature #37 (In Progress) Render Path Grid tuned sized a bit --- apps/openmw/mwrender/debugging.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/debugging.cpp b/apps/openmw/mwrender/debugging.cpp index 730370ae1b..6182258bb7 100644 --- a/apps/openmw/mwrender/debugging.cpp +++ b/apps/openmw/mwrender/debugging.cpp @@ -23,7 +23,7 @@ namespace MWRender static const std::string PATHGRID_POINT_MATERIAL = "pathgridPointMaterial"; static const std::string PATHGRID_LINE_MATERIAL = "pathgridLineMaterial"; static const std::string DEBUGGING_GROUP = "debugging"; -static const int POINT_MESH_BASE = 40; +static const int POINT_MESH_BASE = 35; void Debugging::createGridMaterials() { @@ -74,7 +74,8 @@ ManualObject *Debugging::createPathgridLines(const ESM::Pathgrid *pathgrid) const ESM::Pathgrid::Point &p1 = pathgrid->points[edge.v0], &p2 = pathgrid->points[edge.v1]; Vector3 direction = (Vector3(p2.x, p2.y, p2.z) - Vector3(p1.x, p1.y, p1.z)); Vector3 lineDisplacement = direction.crossProduct(Vector3::UNIT_Z).normalisedCopy(); - lineDisplacement = lineDisplacement * POINT_MESH_BASE/2 + Vector3(0, 0, 10); // move lines up a little, so they will be less covered by meshes/landscape + lineDisplacement = lineDisplacement * POINT_MESH_BASE + + Vector3(0, 0, 10); // move lines up a little, so they will be less covered by meshes/landscape result->position(Vector3(p1.x, p1.y, p1.z) + lineDisplacement); result->position(Vector3(p2.x, p2.y, p2.z) + lineDisplacement); } @@ -86,7 +87,7 @@ ManualObject *Debugging::createPathgridLines(const ESM::Pathgrid *pathgrid) ManualObject *Debugging::createPathgridPoints(const ESM::Pathgrid *pathgrid) { ManualObject *result = mSceneMgr->createManualObject(); - const float height = POINT_MESH_BASE /*/ sqrtf(2)*/; + const float height = POINT_MESH_BASE * sqrtf(2); result->begin(PATHGRID_POINT_MATERIAL, RenderOperation::OT_TRIANGLE_STRIP); From 308df7caa8806f344a7e32f02b9b1114b433b791 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 16:26:42 +0200 Subject: [PATCH 310/488] add method for keeping track of settings that changed --- components/settings/settings.cpp | 13 ++++++++++++- components/settings/settings.hpp | 8 ++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/components/settings/settings.cpp b/components/settings/settings.cpp index 500d3c6e63..463230bc72 100644 --- a/components/settings/settings.cpp +++ b/components/settings/settings.cpp @@ -9,6 +9,7 @@ using namespace Settings; Ogre::ConfigFile Manager::mFile = Ogre::ConfigFile(); Ogre::ConfigFile Manager::mDefaultFile = Ogre::ConfigFile(); +SettingCategoryVector Manager::mChangedSettings = SettingCategoryVector(); void Manager::loadUser (const std::string& file) { @@ -77,8 +78,11 @@ void Manager::setString (const std::string& setting, const std::string& category { Ogre::ConfigFile::SettingsMultiMap::iterator i = it.current(); - if ((*i).first == setting) + if ((*i).first == setting && (*i).second != value) + { + mChangedSettings.push_back(std::make_pair(setting, category)); (*i).second = value; + } it.getNext(); } @@ -98,3 +102,10 @@ void Manager::setBool (const std::string& setting, const std::string& category, { setString(setting, category, Ogre::StringConverter::toString(value)); } + +const SettingCategoryVector Manager::apply() +{ + SettingCategoryVector vec = mChangedSettings; + mChangedSettings.clear(); + return vec; +} diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp index 46f8139c49..98fad605ef 100644 --- a/components/settings/settings.hpp +++ b/components/settings/settings.hpp @@ -5,6 +5,7 @@ namespace Settings { + typedef std::vector< std::pair > SettingCategoryVector; /// /// \brief Settings management (can change during runtime) @@ -12,9 +13,13 @@ namespace Settings class Manager { public: + static Ogre::ConfigFile mFile; static Ogre::ConfigFile mDefaultFile; + static SettingCategoryVector mChangedSettings; + ///< tracks all the settings that were changed since the last apply() call + void loadDefault (const std::string& file); ///< load file as the default settings (can be overridden by user settings) @@ -27,6 +32,9 @@ namespace Settings void saveUser (const std::string& file); ///< save user settings to file + const SettingCategoryVector apply(); + ///< returns the list of changed settings and then clears it + static const int getInt (const std::string& setting, const std::string& category); static const float getFloat (const std::string& setting, const std::string& category); static const std::string getString (const std::string& setting, const std::string& category); From 6091a0504db624f10e605a1bf3a22345c9399fe6 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 16:59:35 +0200 Subject: [PATCH 311/488] first settings test (config file has to be created manually) --- apps/openmw/engine.cpp | 12 ++ components/nifogre/ogre_nif_loader.cpp | 241 ++++++++++++------------- components/settings/settings.cpp | 3 + components/settings/settings.hpp | 1 - 4 files changed, 135 insertions(+), 122 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 38050e53b4..294fcf492f 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -313,6 +314,17 @@ void OMW::Engine::go() { boost::filesystem::create_directories(configPath); } + + Settings::Manager settings; + + //settings.loadDefault(defaultsettingspath); + + const std::string settingspath = mCfgMgr.getUserPath().string() + "/settings.cfg"; + if (boost::filesystem::exists(settingspath)) + settings.loadUser(settingspath); + else + settings.copyDefaultToUserSettings(); + mOgre->configure(!boost::filesystem::is_regular_file(mCfgMgr.getOgreConfigPath()), mCfgMgr.getOgreConfigPath().string(), mCfgMgr.getLogPath().string(), diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 2ab6ae6211..7fa45815fb 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -25,6 +25,7 @@ #include "ogre_nif_loader.hpp" +#include typedef unsigned char ubyte; @@ -299,138 +300,136 @@ void NIFLoader::createMaterial(const String &name, material->setSelfIllumination(emissive.array[0], emissive.array[1], emissive.array[2]); material->setShininess(glossiness); - // Create shader for the material - // vertex - HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); - - HighLevelGpuProgramPtr vertex; - if (mgr.getByName("main_vp").isNull()) + if (Settings::Manager::getBool("shaders", "Objects")) { - vertex = mgr.createProgram("main_vp", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - "cg", GPT_VERTEX_PROGRAM); - vertex->setParameter("profiles", "vs_4_0 vs_2_x vp40 arbvp1"); - vertex->setParameter("entry_point", "main_vp"); - StringUtil::StrStreamType outStream; - outStream << - "void main_vp( \n" - " float4 position : POSITION, \n" - " float4 normal : NORMAL, \n" - " float4 colour : COLOR, \n" - " in float2 uv : TEXCOORD0, \n" - " out float2 oUV : TEXCOORD0, \n" - " out float4 oPosition : POSITION, \n" - " out float4 oPositionObjSpace : TEXCOORD1, \n" - " out float4 oNormal : TEXCOORD2, \n" - " out float oFogValue : TEXCOORD3, \n" - " out float4 oVertexColour : TEXCOORD4, \n" - " uniform float4 fogParams, \n" - " uniform float4x4 worldViewProj \n" - ") \n" - "{ \n" - " oVertexColour = colour; \n" - " oUV = uv; \n" - " oNormal = normal; \n" - " oPosition = mul( worldViewProj, position ); \n" - " oFogValue = saturate((oPosition.z - fogParams.y) * fogParams.w); \n" - " oPositionObjSpace = position; \n" - "}"; - vertex->setSource(outStream.str()); - vertex->load(); - vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); - vertex->getDefaultParameters()->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); - } - else - vertex = mgr.getByName("main_vp"); - material->getTechnique(0)->getPass(0)->setVertexProgram(vertex->getName()); + // Create shader for the material + // vertex + HighLevelGpuProgramManager& mgr = HighLevelGpuProgramManager::getSingleton(); - // the number of lights to support. - // when rendering an object, OGRE automatically picks the lights that are - // closest to the object being rendered. unfortunately this mechanism does - // not work perfectly for objects batched together (they will all use the same - // lights). to work around this, we are simply pushing the maximum number - // of lights here in order to minimize disappearing lights. - float num_lights; - if (GpuProgramManager::getSingleton().isSyntaxSupported("fp40") || - GpuProgramManager::getSingleton().isSyntaxSupported("ps_4_0")) - num_lights = 8 /* 32 */; - else - num_lights = 8; - - // fragment - HighLevelGpuProgramPtr fragment; - if (mgr.getByName("main_fp").isNull()) - { - fragment = mgr.createProgram("main_fp", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, - "cg", GPT_FRAGMENT_PROGRAM); - fragment->setParameter("profiles", "ps_4_0 ps_2_x fp40 arbfp1"); - fragment->setParameter("entry_point", "main_fp"); - StringUtil::StrStreamType outStream; - outStream << - "void main_fp( \n" - " in float2 uv : TEXCOORD0, \n" - " out float4 oColor : COLOR, \n" - " uniform sampler2D texture : TEXUNIT0, \n" - " float4 positionObjSpace : TEXCOORD1, \n" - " float4 normal : TEXCOORD2, \n" - " float fogValue : TEXCOORD3, \n" - " float4 vertexColour : TEXCOORD4, \n" - " uniform float4 fogColour, \n"; - - for (int i=0; isetParameter("profiles", "vs_4_0 vs_2_x vp40 arbvp1"); + vertex->setParameter("entry_point", "main_vp"); + StringUtil::StrStreamType outStream; outStream << - " uniform float4 lightDiffuse"<setSource(outStream.str()); + vertex->load(); + vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); + vertex->getDefaultParameters()->setNamedAutoConstant("fogParams", GpuProgramParameters::ACT_FOG_PARAMS); } - outStream << - " uniform float4 lightAmbient, \n" - " uniform float4 ambient, \n" - " uniform float4 diffuse, \n" - " uniform float4 emissive \n" - ") \n" - "{ \n" - " float4 tex = tex2D(texture, uv); \n" - " float d; \n" - " float attn; \n" - " float3 lightColour = float3(0, 0, 0); \n"; - - for (int i=0; igetTechnique(0)->getPass(0)->setVertexProgram(vertex->getName()); + + // the number of lights to support. + // when rendering an object, OGRE automatically picks the lights that are + // closest to the object being rendered. unfortunately this mechanism does + // not work perfectly for objects batched together (they will all use the same + // lights). to work around this, we are simply pushing the maximum number + // of lights here in order to minimize disappearing lights. + int num_lights = Settings::Manager::getInt("num lights", "Objects"); + + // fragment + HighLevelGpuProgramPtr fragment; + if (mgr.getByName("main_fp").isNull()) { + fragment = mgr.createProgram("main_fp", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "cg", GPT_FRAGMENT_PROGRAM); + fragment->setParameter("profiles", "ps_4_0 ps_2_x fp40 arbfp1"); + fragment->setParameter("entry_point", "main_fp"); + StringUtil::StrStreamType outStream; outStream << - " float3 lightDir"<setSource(outStream.str()); + fragment->load(); + + for (int i=0; igetDefaultParameters()->setNamedAutoConstant("lightPositionObjSpace"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, i); + fragment->getDefaultParameters()->setNamedAutoConstant("lightDiffuse"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, i); + fragment->getDefaultParameters()->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); + } + fragment->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("diffuse", GpuProgramParameters::ACT_SURFACE_DIFFUSE_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("ambient", GpuProgramParameters::ACT_SURFACE_AMBIENT_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("lightAmbient", GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR); + fragment->getDefaultParameters()->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); } - - outStream << - " float3 lightingFinal = lightColour.xyz * diffuse.xyz * vertexColour.xyz + ambient.xyz * lightAmbient.xyz + emissive.xyz; \n" - " oColor.xyz = lerp(lightingFinal * tex.xyz, fogColour, fogValue); \n" - " oColor.a = tex.a * diffuse.a * vertexColour.a; \n" - "}"; - fragment->setSource(outStream.str()); - fragment->load(); - - for (int i=0; igetDefaultParameters()->setNamedAutoConstant("lightPositionObjSpace"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, i); - fragment->getDefaultParameters()->setNamedAutoConstant("lightDiffuse"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, i); - fragment->getDefaultParameters()->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); - } - fragment->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("diffuse", GpuProgramParameters::ACT_SURFACE_DIFFUSE_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("ambient", GpuProgramParameters::ACT_SURFACE_AMBIENT_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("lightAmbient", GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR); - fragment->getDefaultParameters()->setNamedAutoConstant("fogColour", GpuProgramParameters::ACT_FOG_COLOUR); + else + fragment = mgr.getByName("main_fp"); + material->getTechnique(0)->getPass(0)->setFragmentProgram(fragment->getName()); } - else - fragment = mgr.getByName("main_fp"); - material->getTechnique(0)->getPass(0)->setFragmentProgram(fragment->getName()); } // Takes a name and adds a unique part to it. This is just used to diff --git a/components/settings/settings.cpp b/components/settings/settings.cpp index 463230bc72..f2b7823e3e 100644 --- a/components/settings/settings.cpp +++ b/components/settings/settings.cpp @@ -73,6 +73,7 @@ const bool Manager::getBool (const std::string& setting, const std::string& cate void Manager::setString (const std::string& setting, const std::string& category, const std::string& value) { + bool found=false; Ogre::ConfigFile::SettingsIterator it = mFile.getSettingsIterator(category); while (it.hasMoreElements()) { @@ -82,10 +83,12 @@ void Manager::setString (const std::string& setting, const std::string& category { mChangedSettings.push_back(std::make_pair(setting, category)); (*i).second = value; + found = true; } it.getNext(); } + assert(found && "Attempting to change a non-existing setting"); } void Manager::setInt (const std::string& setting, const std::string& category, const int value) diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp index 98fad605ef..368b5e692c 100644 --- a/components/settings/settings.hpp +++ b/components/settings/settings.hpp @@ -13,7 +13,6 @@ namespace Settings class Manager { public: - static Ogre::ConfigFile mFile; static Ogre::ConfigFile mDefaultFile; From f4bbcb48a6de3a5d505004571c627a68b8b28d71 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 17:14:49 +0200 Subject: [PATCH 312/488] settings-default.cfg --- CMakeLists.txt | 4 ++++ apps/openmw/engine.cpp | 9 ++++++++- files/settings-default.cfg | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 files/settings-default.cfg diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f007dbccf..9c2f5a29a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -214,6 +214,9 @@ endif (APPLE) # Other files +configure_file(${OpenMW_SOURCE_DIR}/files/settings-default.cfg + "${OpenMW_BINARY_DIR}/settings-default.cfg") + configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg.local "${OpenMW_BINARY_DIR}/openmw.cfg") configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg @@ -288,6 +291,7 @@ if(DPKG_PROGRAM) INSTALL(FILES "${OpenMW_SOURCE_DIR}/apps/launcher/resources/images/openmw.png" DESTINATION "share/pixmaps/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") #Install global configuration files + INSTALL(FILES "${OpenMW_BINARY_DIR}/settings-default.cfg" DESTINATION "../etc/openmw/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "../etc/openmw/" RENAME "openmw.cfg" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") INSTALL(FILES "${OpenMW_BINARY_DIR}/plugins.cfg" DESTINATION "../etc/openmw/" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw") diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 294fcf492f..166c9c16ba 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -315,9 +315,16 @@ void OMW::Engine::go() boost::filesystem::create_directories(configPath); } + // Create the settings manager and load default and user settings file Settings::Manager settings; + const std::string localdefault = mCfgMgr.getLocalPath().string() + "/settings-default.cfg"; + const std::string globaldefault = mCfgMgr.getGlobalPath().string() + "/settings-default.cfg"; - //settings.loadDefault(defaultsettingspath); + // prefer local + if (boost::filesystem::exists(localdefault)) + settings.loadDefault(localdefault); + else if (boost::filesystem::exists(globaldefault)) + settings.loadDefault(globaldefault); const std::string settingspath = mCfgMgr.getUserPath().string() + "/settings.cfg"; if (boost::filesystem::exists(settingspath)) diff --git a/files/settings-default.cfg b/files/settings-default.cfg new file mode 100644 index 0000000000..7a35b7102f --- /dev/null +++ b/files/settings-default.cfg @@ -0,0 +1,3 @@ +[Objects] +shaders = true +num lights = 8 From 54ce95cfafb2c525818787f1a52463185eb8278a Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sun, 1 Apr 2012 17:25:03 +0200 Subject: [PATCH 313/488] Make sure it doesn't find the wrong file --- components/bsa/bsa_archive.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/components/bsa/bsa_archive.cpp b/components/bsa/bsa_archive.cpp index f4f4b898cf..0e3563b261 100644 --- a/components/bsa/bsa_archive.cpp +++ b/components/bsa/bsa_archive.cpp @@ -41,21 +41,21 @@ struct ciLessBoost : std::binary_function { bool operator() (const std::string & s1, const std::string & s2) const { //case insensitive version of is_less - return lexicographical_compare(s1, s2, boost::algorithm::is_iless()); + return boost::ilexicographical_compare(s1, s2); } }; struct pathComparer { private: - int m_start, m_size; + std::string find; public: - pathComparer(int start, int size) : m_start(start), m_size(size) { } + pathComparer(const std::string& toFind) : find(toFind) { } - bool operator() (const std::string& first, const std::string& other) + bool operator() (const std::string& other) { - return lexicographical_compare(first.substr(m_start,m_size), other.substr(m_start,m_size), boost::algorithm::is_iless()); + return boost::iequals(find, other); } }; @@ -71,9 +71,6 @@ class DirArchive: public Ogre::FileSystemArchive bool findFile(const String& filename, std::string& copy) const { - if (filename.find(".tga") != std::string::npos) - return false; - { String passed = filename; if(filename.at(filename.length() - 1) == '*' || filename.at(filename.length() - 1) == '?' || filename.at(filename.length() - 1) == '<' @@ -116,10 +113,13 @@ class DirArchive: public Ogre::FileSystemArchive current = found->second; } - pathComparer comp(delimiter, copy.size() - delimiter-1); - std::vector::iterator find = std::lower_bound(current.begin(), current.end(), copy, comp); - if (find != current.end() && !comp(copy, current.front())) + std::vector::iterator find = std::lower_bound(current.begin(), current.end(), copy, ciLessBoost()); + if (find != current.end() && !ciLessBoost()(copy, current.front())) { + if (!boost::iequals(copy, *find)) + if ((find = std::find_if(current.begin(), current.end(), pathComparer(copy))) == current.end()) //\todo Check if this line is actually needed + return false; + copy = *find; return true; } From 7b3adb27a3eb88752681f47fc4622d80f191fd4f Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 1 Apr 2012 18:48:37 +0200 Subject: [PATCH 314/488] backend changes, terrain num lights setting --- apps/openmw/engine.cpp | 3 + apps/openmw/mwrender/terrainmaterial.cpp | 40 ++++-------- components/settings/settings.cpp | 81 +++++++++++++++++++----- components/settings/settings.hpp | 11 +++- files/settings-default.cfg | 3 + 5 files changed, 92 insertions(+), 46 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 166c9c16ba..849ccbe2e0 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -426,6 +426,9 @@ void OMW::Engine::go() // Start the main rendering loop mOgre->start(); + // Save user settings + settings.saveUser(settingspath); + std::cout << "Quitting peacefully.\n"; } diff --git a/apps/openmw/mwrender/terrainmaterial.cpp b/apps/openmw/mwrender/terrainmaterial.cpp index 67ebf45af6..922ea2280e 100644 --- a/apps/openmw/mwrender/terrainmaterial.cpp +++ b/apps/openmw/mwrender/terrainmaterial.cpp @@ -36,7 +36,7 @@ THE SOFTWARE. #include "OgreHardwarePixelBuffer.h" #include "OgreShadowCameraSetupPSSM.h" -#define POINTLIGHTS +#include namespace Ogre { @@ -220,22 +220,10 @@ namespace Ogre } - int TerrainMaterialGeneratorB::SM2Profile::getNumberOfLightsSupported() const - { - #ifndef POINTLIGHTS - return 1; - #else - // number of supported lights depends on the number of available constant registers, - // which in turn depends on the shader profile used - if (GpuProgramManager::getSingleton().isSyntaxSupported("ps_3_0") - || GpuProgramManager::getSingleton().isSyntaxSupported("ps_4_0") - || GpuProgramManager::getSingleton().isSyntaxSupported("fp40") - ) - return 32; - else - return 8; - #endif - } + int TerrainMaterialGeneratorB::SM2Profile::getNumberOfLightsSupported() const + { + return Settings::Manager::getInt("num lights", "Terrain"); + } //--------------------------------------------------------------------- MaterialPtr TerrainMaterialGeneratorB::SM2Profile::generate(const Terrain* terrain) { @@ -565,7 +553,8 @@ namespace Ogre { params->setNamedAutoConstant("lightPosObjSpace"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_POSITION_OBJECT_SPACE, i); params->setNamedAutoConstant("lightDiffuseColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR, i); - params->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); + if (prof->getNumberOfLightsSupported() > 1) + params->setNamedAutoConstant("lightAttenuation"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_ATTENUATION, i); //params->setNamedAutoConstant("lightSpecularColour"+StringConverter::toString(i), GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR, i); } @@ -980,10 +969,9 @@ namespace Ogre //"uniform float3 lightSpecularColour"<getNumberOfLightsSupported() > 1) + outStream << + "uniform float4 lightAttenuation"<getNumberOfLightsSupported() > 1) + outStream << "float d; \n" "float attn; \n"; - #endif outStream << " eyeDir = normalize(eyeDir); \n"; @@ -1144,13 +1131,12 @@ namespace Ogre outStream << " float3 halfAngle"<getNumberOfLightsSupported() > 1) outStream << // pre-multiply light color with attenuation factor "d = length( lightDir"<begin(); i != settings->end(); ++i) { - fout << i->first.c_str() << '=' << i->second.c_str() << '\n'; + fout << i->first.c_str() << " = " << i->second.c_str() << '\n'; } - seci.getNext(); + CategorySettingValueMap::iterator it = mNewSettings.begin(); + while (it != mNewSettings.end()) + { + if (it->first.first == sectionName) + { + fout << it->first.second << " = " << it->second << '\n'; + mNewSettings.erase(it++); + } + else + ++it; + } + } + + std::string category = ""; + for (CategorySettingValueMap::iterator it = mNewSettings.begin(); + it != mNewSettings.end(); ++it) + { + if (category != it->first.first) + { + category = it->first.first; + fout << '\n' << '[' << category << ']' << '\n'; + } + fout << it->first.second << " = " << it->second << '\n'; } } const std::string Manager::getString (const std::string& setting, const std::string& category) { + if (mNewSettings.find(std::make_pair(category, setting)) != mNewSettings.end()) + return mNewSettings[std::make_pair(category, setting)]; + std::string defaultval = mDefaultFile.getSetting(setting, category); return mFile.getSetting(setting, category, defaultval); } @@ -73,22 +99,45 @@ const bool Manager::getBool (const std::string& setting, const std::string& cate void Manager::setString (const std::string& setting, const std::string& category, const std::string& value) { + CategorySetting s = std::make_pair(category, setting); + bool found=false; - Ogre::ConfigFile::SettingsIterator it = mFile.getSettingsIterator(category); - while (it.hasMoreElements()) + try { - Ogre::ConfigFile::SettingsMultiMap::iterator i = it.current(); - - if ((*i).first == setting && (*i).second != value) + Ogre::ConfigFile::SettingsIterator it = mFile.getSettingsIterator(category); + while (it.hasMoreElements()) { - mChangedSettings.push_back(std::make_pair(setting, category)); - (*i).second = value; - found = true; - } + Ogre::ConfigFile::SettingsMultiMap::iterator i = it.current(); - it.getNext(); + if ((*i).first == setting) + { + if ((*i).second != value) + { + mChangedSettings.push_back(std::make_pair(category, setting)); + (*i).second = value; + } + found = true; + } + + it.getNext(); + } + } + catch (Ogre::Exception&) + {} + + if (!found) + { + if (mNewSettings.find(s) != mNewSettings.end()) + { + if (mNewSettings[s] != value) + { + mChangedSettings.push_back(std::make_pair(category, setting)); + mNewSettings[s] = value; + } + } + else + mNewSettings[s] = value; } - assert(found && "Attempting to change a non-existing setting"); } void Manager::setInt (const std::string& setting, const std::string& category, const int value) @@ -106,9 +155,9 @@ void Manager::setBool (const std::string& setting, const std::string& category, setString(setting, category, Ogre::StringConverter::toString(value)); } -const SettingCategoryVector Manager::apply() +const CategorySettingVector Manager::apply() { - SettingCategoryVector vec = mChangedSettings; + CategorySettingVector vec = mChangedSettings; mChangedSettings.clear(); return vec; } diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp index 368b5e692c..f670ea1ddb 100644 --- a/components/settings/settings.hpp +++ b/components/settings/settings.hpp @@ -5,7 +5,9 @@ namespace Settings { - typedef std::vector< std::pair > SettingCategoryVector; + typedef std::pair < std::string, std::string > CategorySetting; + typedef std::vector< std::pair > CategorySettingVector; + typedef std::map < CategorySetting, std::string > CategorySettingValueMap; /// /// \brief Settings management (can change during runtime) @@ -16,9 +18,12 @@ namespace Settings static Ogre::ConfigFile mFile; static Ogre::ConfigFile mDefaultFile; - static SettingCategoryVector mChangedSettings; + static CategorySettingVector mChangedSettings; ///< tracks all the settings that were changed since the last apply() call + static CategorySettingValueMap mNewSettings; + ///< tracks all the settings that are in the default file, but not in user file yet + void loadDefault (const std::string& file); ///< load file as the default settings (can be overridden by user settings) @@ -31,7 +36,7 @@ namespace Settings void saveUser (const std::string& file); ///< save user settings to file - const SettingCategoryVector apply(); + static const CategorySettingVector apply(); ///< returns the list of changed settings and then clears it static const int getInt (const std::string& setting, const std::string& category); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 7a35b7102f..1a6b9b3287 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -1,3 +1,6 @@ [Objects] shaders = true num lights = 8 + +[Terrain] +num lights = 8 From d09f0610eaaf5128b9d849e3bc99868fcf17f43e Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Sun, 1 Apr 2012 20:36:57 +0300 Subject: [PATCH 315/488] Add basic windows pinning Create WindowPinnableBase class for windows which should be allowed to be pinned. Add skin for pinnable windows - currently just a copy of normal window with 1 extra button (hopefully this can be improved later). Handle clicking on PinToggle button (pinning/unpinning a window). --- apps/openmw/mwgui/stats_window.cpp | 2 +- apps/openmw/mwgui/stats_window.hpp | 4 +- apps/openmw/mwgui/window_pinnable_base.cpp | 31 +++++++++ apps/openmw/mwgui/window_pinnable_base.hpp | 24 +++++++ files/mygui/openmw_stats_window_layout.xml | 2 +- files/mygui/openmw_windows.skin.xml | 81 ++++++++++++++++++++++ libs/openengine/gui/layout.hpp | 2 +- 7 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 apps/openmw/mwgui/window_pinnable_base.cpp create mode 100644 apps/openmw/mwgui/window_pinnable_base.hpp diff --git a/apps/openmw/mwgui/stats_window.cpp b/apps/openmw/mwgui/stats_window.cpp index 12b0dcc793..3ded9713af 100644 --- a/apps/openmw/mwgui/stats_window.cpp +++ b/apps/openmw/mwgui/stats_window.cpp @@ -12,7 +12,7 @@ using namespace MWGui; const int StatsWindow::lineHeight = 18; StatsWindow::StatsWindow (WindowManager& parWindowManager) - : WindowBase("openmw_stats_window_layout.xml", parWindowManager) + : WindowPinnableBase("openmw_stats_window_layout.xml", parWindowManager) , skillAreaWidget(NULL) , skillClientWidget(NULL) , skillScrollerWidget(NULL) diff --git a/apps/openmw/mwgui/stats_window.hpp b/apps/openmw/mwgui/stats_window.hpp index 2ff170f571..081a75d56d 100644 --- a/apps/openmw/mwgui/stats_window.hpp +++ b/apps/openmw/mwgui/stats_window.hpp @@ -9,13 +9,13 @@ #include #include "../mwmechanics/stat.hpp" -#include "window_base.hpp" +#include "window_pinnable_base.hpp" namespace MWGui { class WindowManager; - class StatsWindow : public WindowBase + class StatsWindow : public WindowPinnableBase { public: typedef std::pair Faction; diff --git a/apps/openmw/mwgui/window_pinnable_base.cpp b/apps/openmw/mwgui/window_pinnable_base.cpp new file mode 100644 index 0000000000..cca593c9cf --- /dev/null +++ b/apps/openmw/mwgui/window_pinnable_base.cpp @@ -0,0 +1,31 @@ +#include "window_pinnable_base.hpp" +#include "window_manager.hpp" + +using namespace MWGui; + +WindowPinnableBase::WindowPinnableBase(const std::string& parLayout, WindowManager& parWindowManager) + : WindowBase(parLayout, parWindowManager), mIsPinned(false) +{ + MyGUI::WindowPtr t = static_cast(mMainWidget); + t->eventWindowButtonPressed += MyGUI::newDelegate(this, &WindowPinnableBase::onWindowButtonPressed); +} + +void WindowPinnableBase::setVisible(bool b) +{ + // Pinned windows can not be hidden + if (mIsPinned && !b) + return; + + WindowBase::setVisible(b); +} + +void WindowPinnableBase::onWindowButtonPressed(MyGUI::Window* sender, const std::string& eventName) +{ + if ("PinToggle" == eventName) + { + mIsPinned = !mIsPinned; + } + + eventDone(this); +} + diff --git a/apps/openmw/mwgui/window_pinnable_base.hpp b/apps/openmw/mwgui/window_pinnable_base.hpp new file mode 100644 index 0000000000..0e3c27c861 --- /dev/null +++ b/apps/openmw/mwgui/window_pinnable_base.hpp @@ -0,0 +1,24 @@ +#ifndef MWGUI_WINDOW_PINNABLE_BASE_H +#define MWGUI_WINDOW_PINNABLE_BASE_H + +#include "window_base.hpp" + +namespace MWGui +{ + class WindowManager; + + class WindowPinnableBase: public WindowBase + { + public: + WindowPinnableBase(const std::string& parLayout, WindowManager& parWindowManager); + void setVisible(bool b); + + private: + void onWindowButtonPressed(MyGUI::Window* sender, const std::string& eventName); + + bool mIsPinned; + }; +} + +#endif + diff --git a/files/mygui/openmw_stats_window_layout.xml b/files/mygui/openmw_stats_window_layout.xml index 1380d474cd..fd99f863e5 100644 --- a/files/mygui/openmw_stats_window_layout.xml +++ b/files/mygui/openmw_stats_window_layout.xml @@ -1,7 +1,7 @@ - + diff --git a/files/mygui/openmw_windows.skin.xml b/files/mygui/openmw_windows.skin.xml index 3ee33124ca..7c194ea5d0 100644 --- a/files/mygui/openmw_windows.skin.xml +++ b/files/mygui/openmw_windows.skin.xml @@ -289,6 +289,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/openengine/gui/layout.hpp b/libs/openengine/gui/layout.hpp index e73b2d1cea..05a23e8aea 100644 --- a/libs/openengine/gui/layout.hpp +++ b/libs/openengine/gui/layout.hpp @@ -103,7 +103,7 @@ namespace GUI )); } - void setVisible(bool b) + virtual void setVisible(bool b) { mMainWidget->setVisible(b); } From 911ca4be8950b6b590104cb85a35f86e5edc0d5d Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Sun, 1 Apr 2012 20:39:53 +0300 Subject: [PATCH 316/488] Move MapWindow to separate files Separate MapWindow from bunch of classes in layouts.cpp/hpp Inherit it from WindowPinnableBase. TODO: map arrow (player position) updates orientation only when you open the inventory. When the map window is pinned, the arrow direction is not updated. --- apps/openmw/mwgui/layouts.cpp | 93 ------------------------ apps/openmw/mwgui/layouts.hpp | 24 ------- apps/openmw/mwgui/map_window.cpp | 104 +++++++++++++++++++++++++++ apps/openmw/mwgui/map_window.hpp | 33 +++++++++ apps/openmw/mwgui/window_manager.cpp | 3 +- 5 files changed, 139 insertions(+), 118 deletions(-) create mode 100644 apps/openmw/mwgui/map_window.cpp create mode 100644 apps/openmw/mwgui/map_window.hpp diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index de74214eef..af068ffae1 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -181,99 +181,6 @@ void HUD::setPlayerPos(const float x, const float y) compass->setPosition(MyGUI::IntPoint(x*512-16, y*512-16)); } -MapWindow::MapWindow() - : Layout("openmw_map_window_layout.xml") - , mGlobal(false) - , mVisible(false) -{ - setCoord(500,0,320,300); - setText("WorldButton", "World"); - setImage("Compass", "textures\\compass.dds"); - - // Obviously you should override this later on - setCellName("No Cell Loaded"); - - getWidget(mLocalMap, "LocalMap"); - getWidget(mGlobalMap, "GlobalMap"); - getWidget(mPlayerArrow, "Compass"); - - getWidget(mButton, "WorldButton"); - mButton->eventMouseButtonClick += MyGUI::newDelegate(this, &MapWindow::onWorldButtonClicked); - - MyGUI::Button* eventbox; - getWidget(eventbox, "EventBox"); - eventbox->eventMouseDrag += MyGUI::newDelegate(this, &MapWindow::onMouseDrag); - eventbox->eventMouseButtonPressed += MyGUI::newDelegate(this, &MapWindow::onDragStart); - - LocalMapBase::init(mLocalMap, this); -} - -void MapWindow::setVisible(bool b) -{ - mMainWidget->setVisible(b); - if (b) - mVisible = true; - else - mVisible = false; -} - -void MapWindow::setCellName(const std::string& cellName) -{ - static_cast(mMainWidget)->setCaption(cellName); - adjustWindowCaption(); -} - -void MapWindow::setPlayerPos(const float x, const float y) -{ - if (mGlobal || mVisible) return; - MyGUI::IntSize size = mLocalMap->getCanvasSize(); - MyGUI::IntPoint middle = MyGUI::IntPoint((1/3.f + x/3.f)*size.width,(1/3.f + y/3.f)*size.height); - MyGUI::IntCoord viewsize = mLocalMap->getCoord(); - MyGUI::IntPoint pos(0.5*viewsize.width - middle.left, 0.5*viewsize.height - middle.top); - mLocalMap->setViewOffset(pos); - - mPlayerArrow->setPosition(MyGUI::IntPoint(x*512-16, y*512-16)); -} - -void MapWindow::setPlayerDir(const float x, const float y) -{ - if (!mVisible) return; - MyGUI::ISubWidget* main = mPlayerArrow->getSubWidgetMain(); - MyGUI::RotatingSkin* rotatingSubskin = main->castType(); - rotatingSubskin->setCenter(MyGUI::IntPoint(16,16)); - float angle = std::atan2(x,y); - rotatingSubskin->setAngle(angle); -} - -void MapWindow::onDragStart(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) -{ - if (_id!=MyGUI::MouseButton::Left) return; - if (!mGlobal) - mLastDragPos = MyGUI::IntPoint(_left, _top); -} - -void MapWindow::onMouseDrag(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) -{ - if (_id!=MyGUI::MouseButton::Left) return; - - if (!mGlobal) - { - MyGUI::IntPoint diff = MyGUI::IntPoint(_left, _top) - mLastDragPos; - mLocalMap->setViewOffset( mLocalMap->getViewOffset() + diff ); - - mLastDragPos = MyGUI::IntPoint(_left, _top); - } -} - -void MapWindow::onWorldButtonClicked(MyGUI::Widget* _sender) -{ - mGlobal = !mGlobal; - mGlobalMap->setVisible(mGlobal); - mLocalMap->setVisible(!mGlobal); - - mButton->setCaption( mGlobal ? "Local" : "World" ); -} - LocalMapBase::LocalMapBase() : mCurX(0) , mCurY(0) diff --git a/apps/openmw/mwgui/layouts.hpp b/apps/openmw/mwgui/layouts.hpp index 614479ccce..30bea579c5 100644 --- a/apps/openmw/mwgui/layouts.hpp +++ b/apps/openmw/mwgui/layouts.hpp @@ -82,30 +82,6 @@ namespace MWGui MyGUI::TextBox* batchcounter; }; - class MapWindow : public OEngine::GUI::Layout, public LocalMapBase - { - public: - MapWindow(); - virtual ~MapWindow(){} - - void setVisible(bool b); - void setPlayerPos(const float x, const float y); - void setPlayerDir(const float x, const float y); - void setCellName(const std::string& cellName); - - private: - void onDragStart(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); - void onMouseDrag(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); - void onWorldButtonClicked(MyGUI::Widget* _sender); - - MyGUI::ScrollView* mGlobalMap; - MyGUI::ImageBox* mPlayerArrow; - MyGUI::Button* mButton; - MyGUI::IntPoint mLastDragPos; - bool mVisible; - bool mGlobal; - }; - class MainMenu : public OEngine::GUI::Layout { public: diff --git a/apps/openmw/mwgui/map_window.cpp b/apps/openmw/mwgui/map_window.cpp new file mode 100644 index 0000000000..631f61c9d7 --- /dev/null +++ b/apps/openmw/mwgui/map_window.cpp @@ -0,0 +1,104 @@ +#include "map_window.hpp" +/* +#include "../mwmechanics/mechanicsmanager.hpp" +#include "window_manager.hpp" + +#include +#include +#include + +#undef min +#undef max +*/ +using namespace MWGui; + +MapWindow::MapWindow(WindowManager& parWindowManager) : + MWGui::WindowPinnableBase("openmw_map_window_layout.xml", parWindowManager), + mGlobal(false), + mVisible(false) +{ + setCoord(500,0,320,300); + setText("WorldButton", "World"); + setImage("Compass", "textures\\compass.dds"); + + // Obviously you should override this later on + setCellName("No Cell Loaded"); + + getWidget(mLocalMap, "LocalMap"); + getWidget(mGlobalMap, "GlobalMap"); + getWidget(mPlayerArrow, "Compass"); + + getWidget(mButton, "WorldButton"); + mButton->eventMouseButtonClick += MyGUI::newDelegate(this, &MapWindow::onWorldButtonClicked); + + MyGUI::Button* eventbox; + getWidget(eventbox, "EventBox"); + eventbox->eventMouseDrag += MyGUI::newDelegate(this, &MapWindow::onMouseDrag); + eventbox->eventMouseButtonPressed += MyGUI::newDelegate(this, &MapWindow::onDragStart); + + LocalMapBase::init(mLocalMap, this); +} + +void MapWindow::setVisible(bool b) +{ + WindowPinnableBase::setVisible(b); + mVisible = b; +} + +void MapWindow::setCellName(const std::string& cellName) +{ + static_cast(mMainWidget)->setCaption(cellName); + adjustWindowCaption(); +} + +void MapWindow::setPlayerPos(const float x, const float y) +{ + if (mGlobal || mVisible) return; + MyGUI::IntSize size = mLocalMap->getCanvasSize(); + MyGUI::IntPoint middle = MyGUI::IntPoint((1/3.f + x/3.f)*size.width,(1/3.f + y/3.f)*size.height); + MyGUI::IntCoord viewsize = mLocalMap->getCoord(); + MyGUI::IntPoint pos(0.5*viewsize.width - middle.left, 0.5*viewsize.height - middle.top); + mLocalMap->setViewOffset(pos); + + mPlayerArrow->setPosition(MyGUI::IntPoint(x*512-16, y*512-16)); +} + +void MapWindow::setPlayerDir(const float x, const float y) +{ + if (!mVisible) return; + MyGUI::ISubWidget* main = mPlayerArrow->getSubWidgetMain(); + MyGUI::RotatingSkin* rotatingSubskin = main->castType(); + rotatingSubskin->setCenter(MyGUI::IntPoint(16,16)); + float angle = std::atan2(x,y); + rotatingSubskin->setAngle(angle); +} + +void MapWindow::onDragStart(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) +{ + if (_id!=MyGUI::MouseButton::Left) return; + if (!mGlobal) + mLastDragPos = MyGUI::IntPoint(_left, _top); +} + +void MapWindow::onMouseDrag(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) +{ + if (_id!=MyGUI::MouseButton::Left) return; + + if (!mGlobal) + { + MyGUI::IntPoint diff = MyGUI::IntPoint(_left, _top) - mLastDragPos; + mLocalMap->setViewOffset( mLocalMap->getViewOffset() + diff ); + + mLastDragPos = MyGUI::IntPoint(_left, _top); + } +} + +void MapWindow::onWorldButtonClicked(MyGUI::Widget* _sender) +{ + mGlobal = !mGlobal; + mGlobalMap->setVisible(mGlobal); + mLocalMap->setVisible(!mGlobal); + + mButton->setCaption( mGlobal ? "Local" : "World" ); +} + diff --git a/apps/openmw/mwgui/map_window.hpp b/apps/openmw/mwgui/map_window.hpp new file mode 100644 index 0000000000..2fdc0d91ab --- /dev/null +++ b/apps/openmw/mwgui/map_window.hpp @@ -0,0 +1,33 @@ +#ifndef MWGUI_MAPWINDOW_H +#define MWGUI_MAPWINDOW_H + +#include "layouts.hpp" +#include "window_pinnable_base.hpp" + +namespace MWGui +{ + class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase + { + public: + MapWindow(WindowManager& parWindowManager); + virtual ~MapWindow(){} + + void setVisible(bool b); + void setPlayerPos(const float x, const float y); + void setPlayerDir(const float x, const float y); + void setCellName(const std::string& cellName); + + private: + void onDragStart(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); + void onMouseDrag(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); + void onWorldButtonClicked(MyGUI::Widget* _sender); + + MyGUI::ScrollView* mGlobalMap; + MyGUI::ImageBox* mPlayerArrow; + MyGUI::Button* mButton; + MyGUI::IntPoint mLastDragPos; + bool mVisible; + bool mGlobal; + }; +} +#endif diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index 49b6e644d3..4d7b9f9013 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -4,6 +4,7 @@ #include "review.hpp" #include "dialogue.hpp" #include "dialogue_history.hpp" +#include "map_window.hpp" #include "stats_window.hpp" #include "messagebox.hpp" @@ -71,7 +72,7 @@ WindowManager::WindowManager(MWWorld::Environment& environment, hud = new HUD(w,h, showFPSLevel); menu = new MainMenu(w,h); - map = new MapWindow(); + map = new MapWindow(*this); stats = new StatsWindow(*this); console = new Console(w,h, environment, extensions); mJournal = new JournalWindow(*this); From cec9562282b89c9e3e15e35e8e7daf7ebf095cce Mon Sep 17 00:00:00 2001 From: "Alexander \"Ace\" Olofsson" Date: Sun, 1 Apr 2012 20:29:00 +0200 Subject: [PATCH 317/488] Fixing an ambigous symbol --- apps/openmw/mwworld/weather.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index 9a918c2fb3..09fd200762 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -34,7 +34,7 @@ const float WeatherGlobals::mThunderFrequency = .4; const float WeatherGlobals::mThunderThreshold = 0.6; const float WeatherGlobals::mThunderSoundDelay = 0.25; -WeatherManager::WeatherManager(MWRender::RenderingManager* rendering, Environment* env) : +WeatherManager::WeatherManager(MWRender::RenderingManager* rendering, MWWorld::Environment* env) : mHour(14), mCurrentWeather("clear"), mFirstUpdate(true), mWeatherUpdateTime(0), mThunderFlash(0), mThunderChance(0), mThunderChanceNeeded(50), mThunderSoundDelay(0) { From ae989040e58a6b8c688d545a0b6278868e7ce9b7 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sun, 1 Apr 2012 21:29:49 +0200 Subject: [PATCH 318/488] Issue #225: Fix for memleak when loading terrain. --- apps/openmw/mwrender/terrain.cpp | 11 +++++++++-- components/esm/loadland.cpp | 18 ++++++++++++++++++ components/esm/loadland.hpp | 3 +++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 8877215653..0b8f933a27 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -98,7 +98,10 @@ namespace MWRender ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); if ( land != NULL ) { - land->loadData(); + if (!land->dataLoaded) + { + land->loadData(); + } } //split the cell terrain into four segments @@ -420,7 +423,11 @@ namespace MWRender ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); if ( land != NULL ) { - land->loadData(); + if (!land->dataLoaded) + { + land->loadData(); + } + return land->landData ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; } diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index cd2cf1d917..96afdf8316 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -2,6 +2,24 @@ namespace ESM { + +Land::Land() + : flags(0) + , X(0) + , Y(0) + , mEsm(NULL) + , hasData(false) + , dataLoaded(false) + , landData(NULL) +{ +} + +Land::~Land() +{ + delete landData; +} + + void Land::load(ESMReader &esm) { mEsm = &esm; diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index 5ccd966d92..64baecd349 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -11,6 +11,9 @@ namespace ESM struct Land { + Land(); + ~Land(); + int flags; // Only first four bits seem to be used, don't know what // they mean. int X, Y; // Map coordinates. From 2147210ad7ab001b8789689b6e0556dba4c95183 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 1 Apr 2012 12:46:49 -0700 Subject: [PATCH 319/488] Don't set an underwater environment when there's no water --- apps/openmw/mwsound/soundmanager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index a96aac6c5c..1c6e548b6e 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -407,7 +407,7 @@ namespace MWSound if(!isMusicPlaying()) startRandomTitle(); - MWWorld::Ptr::CellStore *current = mEnvironment.mWorld->getPlayer().getPlayer().getCell(); + const ESM::Cell *cell = mEnvironment.mWorld->getPlayer().getPlayer().getCell()->cell; Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); Ogre::Vector3 nPos, nDir, nUp; nPos = cam->getRealPosition(); @@ -415,7 +415,7 @@ namespace MWSound nUp = cam->getRealUp(); Environment env = Env_Normal; - if(nPos.y < current->cell->water) + if((cell->data.flags&cell->HasWater) && nPos.y < cell->water) env = Env_Underwater; // The output handler is expecting vectors oriented like the game From 91a377df86021d99e7c45c9ae16dc68d7e45a8ab Mon Sep 17 00:00:00 2001 From: Roman Melnik Date: Sun, 1 Apr 2012 23:51:49 +0300 Subject: [PATCH 320/488] Fix behaviour of the MapWindow The map now will track player's position/rotation when pinned, and will not update if position/rotation didn't change since last frame. --- apps/openmw/mwgui/map_window.cpp | 22 ++++++++++++---------- apps/openmw/mwgui/map_window.hpp | 6 ++++-- apps/openmw/mwgui/window_pinnable_base.cpp | 7 ++++--- apps/openmw/mwgui/window_pinnable_base.hpp | 4 +++- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/apps/openmw/mwgui/map_window.cpp b/apps/openmw/mwgui/map_window.cpp index 631f61c9d7..b4e8aa4d64 100644 --- a/apps/openmw/mwgui/map_window.cpp +++ b/apps/openmw/mwgui/map_window.cpp @@ -14,8 +14,11 @@ using namespace MWGui; MapWindow::MapWindow(WindowManager& parWindowManager) : MWGui::WindowPinnableBase("openmw_map_window_layout.xml", parWindowManager), - mGlobal(false), - mVisible(false) + mGlobal(false), + mLastPositionX(0.0f), + mLastPositionY(0.0f), + mLastDirectionX(0.0f), + mLastDirectionY(0.0f) { setCoord(500,0,320,300); setText("WorldButton", "World"); @@ -39,12 +42,6 @@ MapWindow::MapWindow(WindowManager& parWindowManager) : LocalMapBase::init(mLocalMap, this); } -void MapWindow::setVisible(bool b) -{ - WindowPinnableBase::setVisible(b); - mVisible = b; -} - void MapWindow::setCellName(const std::string& cellName) { static_cast(mMainWidget)->setCaption(cellName); @@ -53,7 +50,7 @@ void MapWindow::setCellName(const std::string& cellName) void MapWindow::setPlayerPos(const float x, const float y) { - if (mGlobal || mVisible) return; + if (mGlobal || !mVisible || (x == mLastPositionX && y == mLastPositionY)) return; MyGUI::IntSize size = mLocalMap->getCanvasSize(); MyGUI::IntPoint middle = MyGUI::IntPoint((1/3.f + x/3.f)*size.width,(1/3.f + y/3.f)*size.height); MyGUI::IntCoord viewsize = mLocalMap->getCoord(); @@ -61,16 +58,21 @@ void MapWindow::setPlayerPos(const float x, const float y) mLocalMap->setViewOffset(pos); mPlayerArrow->setPosition(MyGUI::IntPoint(x*512-16, y*512-16)); + mLastPositionX = x; + mLastPositionY = y; } void MapWindow::setPlayerDir(const float x, const float y) { - if (!mVisible) return; + if (!mVisible || (x == mLastDirectionX && y == mLastDirectionY)) return; MyGUI::ISubWidget* main = mPlayerArrow->getSubWidgetMain(); MyGUI::RotatingSkin* rotatingSubskin = main->castType(); rotatingSubskin->setCenter(MyGUI::IntPoint(16,16)); float angle = std::atan2(x,y); rotatingSubskin->setAngle(angle); + + mLastDirectionX = x; + mLastDirectionY = y; } void MapWindow::onDragStart(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) diff --git a/apps/openmw/mwgui/map_window.hpp b/apps/openmw/mwgui/map_window.hpp index 2fdc0d91ab..cad652bff2 100644 --- a/apps/openmw/mwgui/map_window.hpp +++ b/apps/openmw/mwgui/map_window.hpp @@ -12,7 +12,6 @@ namespace MWGui MapWindow(WindowManager& parWindowManager); virtual ~MapWindow(){} - void setVisible(bool b); void setPlayerPos(const float x, const float y); void setPlayerDir(const float x, const float y); void setCellName(const std::string& cellName); @@ -26,8 +25,11 @@ namespace MWGui MyGUI::ImageBox* mPlayerArrow; MyGUI::Button* mButton; MyGUI::IntPoint mLastDragPos; - bool mVisible; bool mGlobal; + float mLastPositionX; + float mLastPositionY; + float mLastDirectionX; + float mLastDirectionY; }; } #endif diff --git a/apps/openmw/mwgui/window_pinnable_base.cpp b/apps/openmw/mwgui/window_pinnable_base.cpp index cca593c9cf..07f0ea278b 100644 --- a/apps/openmw/mwgui/window_pinnable_base.cpp +++ b/apps/openmw/mwgui/window_pinnable_base.cpp @@ -4,7 +4,7 @@ using namespace MWGui; WindowPinnableBase::WindowPinnableBase(const std::string& parLayout, WindowManager& parWindowManager) - : WindowBase(parLayout, parWindowManager), mIsPinned(false) + : WindowBase(parLayout, parWindowManager), mPinned(false), mVisible(false) { MyGUI::WindowPtr t = static_cast(mMainWidget); t->eventWindowButtonPressed += MyGUI::newDelegate(this, &WindowPinnableBase::onWindowButtonPressed); @@ -13,17 +13,18 @@ WindowPinnableBase::WindowPinnableBase(const std::string& parLayout, WindowManag void WindowPinnableBase::setVisible(bool b) { // Pinned windows can not be hidden - if (mIsPinned && !b) + if (mPinned && !b) return; WindowBase::setVisible(b); + mVisible = b; } void WindowPinnableBase::onWindowButtonPressed(MyGUI::Window* sender, const std::string& eventName) { if ("PinToggle" == eventName) { - mIsPinned = !mIsPinned; + mPinned = !mPinned; } eventDone(this); diff --git a/apps/openmw/mwgui/window_pinnable_base.hpp b/apps/openmw/mwgui/window_pinnable_base.hpp index 0e3c27c861..f3cec847fd 100644 --- a/apps/openmw/mwgui/window_pinnable_base.hpp +++ b/apps/openmw/mwgui/window_pinnable_base.hpp @@ -16,7 +16,9 @@ namespace MWGui private: void onWindowButtonPressed(MyGUI::Window* sender, const std::string& eventName); - bool mIsPinned; + protected: + bool mPinned; + bool mVisible; }; } From 63e0e820499757a6bbbbf453778756f3e430a455 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 1 Apr 2012 15:02:07 -0700 Subject: [PATCH 321/488] Implement an Audiere-based decoder --- CMakeLists.txt | 8 ++ apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwsound/audiere_decoder.cpp | 122 ++++++++++++++++++++++++ apps/openmw/mwsound/audiere_decoder.hpp | 42 ++++++++ apps/openmw/mwsound/soundmanager.cpp | 11 ++- 5 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 apps/openmw/mwsound/audiere_decoder.cpp create mode 100644 apps/openmw/mwsound/audiere_decoder.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 538e6a2fbc..5d9ef04afd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ option(OGRE_STATIC "Link static build of Ogre and Ogre Plugins into the binaries # Sound source selection option(USE_FFMPEG "use ffmpeg for sound" OFF) +option(USE_AUDIERE "use audiere for sound" OFF) option(USE_MPG123 "use mpg123 + libsndfile for sound" ON) find_program(DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems") @@ -133,6 +134,13 @@ if (USE_FFMPEG) set(SOUND_DEFINE ${SOUND_DEFINE} -DOPENMW_USE_FFMPEG) endif (USE_FFMPEG) +if (USE_AUDIERE) + find_package(Audiere REQUIRED) + set(SOUND_INPUT_INCLUDES ${SOUND_INPUT_INCLUDES} ${AUDIERE_INCLUDE_DIR}) + set(SOUND_INPUT_LIBRARY ${SOUND_INPUT_LIBRARY} ${AUDIERE_LIBRARY}) + set(SOUND_DEFINE ${SOUND_DEFINE} -DOPENMW_USE_AUDIERE) +endif (USE_AUDIERE) + if (USE_MPG123) find_package(MPG123 REQUIRED) find_package(SNDFILE REQUIRED) diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 3dabc9ac8d..873c23a9b1 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -39,7 +39,7 @@ add_openmw_dir (mwscript ) add_openmw_dir (mwsound - soundmanager openal_output mpgsnd_decoder ffmpeg_decoder + soundmanager openal_output audiere_decoder mpgsnd_decoder ffmpeg_decoder ) add_openmw_dir (mwworld diff --git a/apps/openmw/mwsound/audiere_decoder.cpp b/apps/openmw/mwsound/audiere_decoder.cpp new file mode 100644 index 0000000000..acc2e5283c --- /dev/null +++ b/apps/openmw/mwsound/audiere_decoder.cpp @@ -0,0 +1,122 @@ +#ifdef OPENMW_USE_AUDIERE + +#include +#include + +#include "audiere_decoder.hpp" + + +static void fail(const std::string &msg) +{ throw std::runtime_error("Audiere exception: "+msg); } + +namespace MWSound +{ + +class OgreFile : public audiere::File +{ + Ogre::DataStreamPtr mStream; + + ADR_METHOD(int) read(void* buffer, int size) + { + return mStream->read(buffer, size); + } + + ADR_METHOD(bool) seek(int position, SeekMode mode) + { + if(mode == CURRENT) + mStream->seek(mStream->tell()+position); + else if(mode == BEGIN) + mStream->seek(position); + else if(mode == END) + mStream->seek(mStream->size()+position); + else + return false; + + return true; + } + + ADR_METHOD(int) tell() + { + return mStream->tell(); + } + + size_t refs; + virtual void ref() { ++refs; } + virtual void unref() + { + if(--refs == 0) + delete this; + } + +public: + OgreFile(const Ogre::DataStreamPtr &stream) + : mStream(stream), refs(1) + { } + virtual ~OgreFile() { } +}; + + +void Audiere_Decoder::open(const std::string &fname) +{ + close(); + + audiere::FilePtr file(new OgreFile(mResourceMgr.openResource(fname))); + mSoundSource = audiere::OpenSampleSource(file); + + int channels, srate; + audiere::SampleFormat format; + + mSoundSource->getFormat(channels, srate, format); + if(format == audiere::SF_S16) + mSampleType = SampleType_Int16; + else if(format == audiere::SF_U8) + mSampleType = SampleType_UInt8; + else + fail("Unsupported sample type"); + + if(channels == 1) + mChannelConfig = ChannelConfig_Mono; + else if(channels == 2) + mChannelConfig = ChannelConfig_Stereo; + else + fail("Unsupported channel count"); + + mSampleRate = srate; +} + +void Audiere_Decoder::close() +{ + mSoundSource = NULL; +} + +void Audiere_Decoder::getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) +{ + *samplerate = mSampleRate; + *chans = mChannelConfig; + *type = mSampleType; +} + +size_t Audiere_Decoder::read(char *buffer, size_t bytes) +{ + int size = bytesToFrames(bytes, mChannelConfig, mSampleType); + size = mSoundSource->read(size, buffer); + return framesToBytes(size, mChannelConfig, mSampleType); +} + +void Audiere_Decoder::rewind() +{ + mSoundSource->reset(); +} + +Audiere_Decoder::Audiere_Decoder() +{ +} + +Audiere_Decoder::~Audiere_Decoder() +{ + close(); +} + +} + +#endif diff --git a/apps/openmw/mwsound/audiere_decoder.hpp b/apps/openmw/mwsound/audiere_decoder.hpp new file mode 100644 index 0000000000..0ad026d515 --- /dev/null +++ b/apps/openmw/mwsound/audiere_decoder.hpp @@ -0,0 +1,42 @@ +#ifndef GAME_SOUND_AUDIERE_DECODER_H +#define GAME_SOUND_AUDIERE_DECODER_H + +#include + +#include "audiere.h" + +#include "sound_decoder.hpp" + + +namespace MWSound +{ + class Audiere_Decoder : public Sound_Decoder + { + audiere::SampleSourcePtr mSoundSource; + int mSampleRate; + SampleType mSampleType; + ChannelConfig mChannelConfig; + + virtual void open(const std::string &fname); + virtual void close(); + + virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type); + + virtual size_t read(char *buffer, size_t bytes); + virtual void rewind(); + + Audiere_Decoder& operator=(const Audiere_Decoder &rhs); + Audiere_Decoder(const Audiere_Decoder &rhs); + + Audiere_Decoder(); + public: + virtual ~Audiere_Decoder(); + + friend class SoundManager; + }; +#ifndef DEFAULT_DECODER +#define DEFAULT_DECODER (::MWSound::Audiere_Decoder) +#endif +}; + +#endif diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 1c6e548b6e..145390e3e1 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -18,8 +18,8 @@ #include "openal_output.hpp" #define SOUND_OUT "OpenAL" -/* Set up the sound manager to use FFMPEG or MPG123+libsndfile for input. The - * OPENMW_USE_x macros are set in CMakeLists.txt. +/* Set up the sound manager to use FFMPEG, MPG123+libsndfile, or Audiere for + * input. The OPENMW_USE_x macros are set in CMakeLists.txt. */ #ifdef OPENMW_USE_FFMPEG #include "ffmpeg_decoder.hpp" @@ -28,6 +28,13 @@ #endif #endif +#ifdef OPENMW_USE_AUDIERE +#include "audiere_decoder.hpp" +#ifndef SOUND_IN +#define SOUND_IN "Audiere" +#endif +#endif + #ifdef OPENMW_USE_MPG123 #include "mpgsnd_decoder.hpp" #ifndef SOUND_IN From 5accca385ce148bb56545e0d9fbb0037665be3b3 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 13:47:25 +0200 Subject: [PATCH 322/488] fix crash on exit when no user settings exist --- apps/openmw/engine.cpp | 9 ++++++--- components/settings/settings.cpp | 5 ----- components/settings/settings.hpp | 3 --- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 849ccbe2e0..25c0c60bd2 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -315,7 +315,7 @@ void OMW::Engine::go() boost::filesystem::create_directories(configPath); } - // Create the settings manager and load default and user settings file + // Create the settings manager and load default settings file Settings::Manager settings; const std::string localdefault = mCfgMgr.getLocalPath().string() + "/settings-default.cfg"; const std::string globaldefault = mCfgMgr.getGlobalPath().string() + "/settings-default.cfg"; @@ -326,11 +326,14 @@ void OMW::Engine::go() else if (boost::filesystem::exists(globaldefault)) settings.loadDefault(globaldefault); + // load user settings if they exist, otherwise just load the default settings as user settings const std::string settingspath = mCfgMgr.getUserPath().string() + "/settings.cfg"; if (boost::filesystem::exists(settingspath)) settings.loadUser(settingspath); - else - settings.copyDefaultToUserSettings(); + else if (boost::filesystem::exists(localdefault)) + settings.loadUser(localdefault); + else if (boost::filesystem::exists(globaldefault)) + settings.loadUser(globaldefault); mOgre->configure(!boost::filesystem::is_regular_file(mCfgMgr.getOgreConfigPath()), mCfgMgr.getOgreConfigPath().string(), diff --git a/components/settings/settings.cpp b/components/settings/settings.cpp index d94e06678f..28201eda2a 100644 --- a/components/settings/settings.cpp +++ b/components/settings/settings.cpp @@ -22,11 +22,6 @@ void Manager::loadDefault (const std::string& file) mDefaultFile.load(file); } -void Manager::copyDefaultToUserSettings () -{ - mFile = mDefaultFile; -} - void Manager::saveUser(const std::string& file) { std::fstream fout(file.c_str(), std::ios::out); diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp index f670ea1ddb..e9858eb945 100644 --- a/components/settings/settings.hpp +++ b/components/settings/settings.hpp @@ -27,9 +27,6 @@ namespace Settings void loadDefault (const std::string& file); ///< load file as the default settings (can be overridden by user settings) - void copyDefaultToUserSettings (); - ///< copy the default settings to the user settings (useful when there are no user settings yet) - void loadUser (const std::string& file); ///< load file as user settings From 1445ae992db1b4fde52330b0a498a2b616836c41 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 14:24:16 +0200 Subject: [PATCH 323/488] adding a setting to disable static geometry --- apps/openmw/mwrender/objects.cpp | 3 ++- files/settings-default.cfg | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 94ccb6e97b..eb79581aa8 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -3,6 +3,7 @@ #include #include +#include using namespace MWRender; @@ -113,7 +114,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) bounds.scale(insert->getScale()); mBounds[ptr.getCell()].merge(bounds); - if(!mIsStatic) + if(!mIsStatic || !Settings::Manager::getBool("use static geometry", "Objects")) { insert->attachObject(ent); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 1a6b9b3287..bf471e111f 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -1,6 +1,7 @@ [Objects] shaders = true num lights = 8 +use static geometry = true [Terrain] num lights = 8 From b380e71832d5bc35aded3deee5e1752d23e3d79f Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 14:32:21 +0200 Subject: [PATCH 324/488] fixed underwater wireframe mode --- apps/openmw/mwrender/renderingmanager.hpp | 3 --- apps/openmw/mwrender/water.cpp | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 81907a9382..fc32b4dd2b 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -31,11 +31,8 @@ namespace Ogre { - class Camera; - class Viewport; class SceneManager; class SceneNode; - class RaySceneQuery; class Quaternion; class Vector3; } diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 9de55e3a59..cbf9c5b29b 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -70,7 +70,7 @@ void Water::toggle() void Water::checkUnderwater(float y) { - if ((mIsUnderwater && y > mTop) || !mWater->isVisible()) + if ((mIsUnderwater && y > mTop) || !mWater->isVisible() || mCamera->getPolygonMode() != Ogre::PM_SOLID) { try { Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); @@ -78,7 +78,7 @@ void Water::checkUnderwater(float y) mIsUnderwater = false; } - if (!mIsUnderwater && y < mTop && mWater->isVisible()) + if (!mIsUnderwater && y < mTop && mWater->isVisible() && mCamera->getPolygonMode() == Ogre::PM_SOLID) { try { Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); From 89565bacd17453c1ce2a8cff7cf6ea5822a262f5 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Mon, 2 Apr 2012 14:34:21 +0200 Subject: [PATCH 325/488] since the default method is not available in older boost we should check by ourselfs if the options are given and dont use notify --- apps/mwiniimporter/main.cpp | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 9a6e61645d..43b17b76ac 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -9,7 +9,7 @@ namespace bpo = boost::program_options; int main(int argc, char *argv[]) { - bpo::options_description desc("Syntax: mwiniimporter \nAllowed options"); + bpo::options_description desc("Syntax: mwiniimporter -i inifile -c configfile \nAllowed options"); desc.add_options() ("help,h", "produce help message") ("verbose,v", "verbose output") @@ -20,25 +20,11 @@ int main(int argc, char *argv[]) { ; bpo::variables_map vm; - try { - bpo::store(boost::program_options::parse_command_line(argc, argv, desc), vm); + bpo::store(boost::program_options::parse_command_line(argc, argv, desc), vm); - // parse help before calling notify because we dont want it to throw an error if help is set - if(vm.count("help")) { - std::cout << desc; - return 0; - } - - bpo::notify(vm); - - } - catch(std::exception& e) { - std::cerr << "Error:" << e.what() << std::endl; - return -1; - } - catch(...) { - std::cerr << "Error" << std::endl; - return -2; + if(vm.count("help") || !vm.count("ini") || !vm.count("cfg")) { + std::cout << desc; + return 0; } std::string iniFile = vm["ini"].as(); From 16674ad141661ea77b5903b1cba0716bd19ea7d2 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Mon, 2 Apr 2012 14:42:01 +0200 Subject: [PATCH 326/488] open file for writing AFTER reading it :) --- apps/mwiniimporter/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 43b17b76ac..836f84eb08 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -47,7 +47,6 @@ int main(int argc, char *argv[]) { MwIniImporter importer; importer.setVerbose(vm.count("verbose")); - boost::iostreams::stream file(outputFile); MwIniImporter::multistrmap ini = importer.loadIniFile(iniFile); MwIniImporter::multistrmap cfg = importer.loadCfgFile(cfgFile); @@ -59,6 +58,7 @@ int main(int argc, char *argv[]) { } std::cout << "write to: " << outputFile << std::endl; + boost::iostreams::stream file(outputFile); importer.writeToFile(file, cfg); return 0; From e5cc9adbb02938809938f3ea8a0fe222372d82af Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 15:30:29 +0200 Subject: [PATCH 327/488] added settings for rendering distance of small objects --- apps/openmw/mwrender/objects.cpp | 12 +++++------- files/settings-default.cfg | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index eb79581aa8..dd211f8e9f 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -89,18 +89,16 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) NifOgre::NIFLoader::load(mesh); Ogre::Entity *ent = mRenderer.getScene()->createEntity(mesh); -/* + Ogre::Vector3 extents = ent->getBoundingBox().getSize(); extents *= insert->getScale(); -// float size = std::max(std::max(extents.x, extents.y), extents.z); + float size = std::max(std::max(extents.x, extents.y), extents.z); - bool small = (size < 250); /// \todo config value + bool small = (size < Settings::Manager::getInt("small object size", "Objects")) && Settings::Manager::getBool("limit small object distance", "Objects"); // do not fade out doors. that will cause holes and look stupid if (ptr.getTypeName().find("Door") != std::string::npos) small = false; -*/ - const bool small = false; if (mBounds.find(ptr.getCell()) == mBounds.end()) mBounds[ptr.getCell()] = Ogre::AxisAlignedBox::BOX_NULL; @@ -118,7 +116,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) { insert->attachObject(ent); - ent->setRenderingDistance(small ? 2500 : 0); /// \todo config value + ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "Objects") : 0); /// \todo config value } else { @@ -132,7 +130,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); mStaticGeometrySmall[ptr.getCell()] = sg; - sg->setRenderingDistance(2500); /// \todo config value + sg->setRenderingDistance(Settings::Manager::getInt("small object distance", "Objects")); /// \todo config value } else sg = mStaticGeometrySmall[ptr.getCell()]; diff --git a/files/settings-default.cfg b/files/settings-default.cfg index bf471e111f..1e8be450e8 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -1,7 +1,24 @@ [Objects] + shaders = true + +# Max. number of lights that affect objects. Setting to 1 will only reflect sunlight +# Note: has no effect when shaders are turned off num lights = 8 + +# Use static geometry for static objects. Improves rendering speed. use static geometry = true +# Limit the rendering distance of small objects +limit small object distance = false + +# Size below which an object is considered as small +small object size = 250 + +# Rendering distance for small objects +small object distance = 3500 + [Terrain] + +# Max. number of lights that affect the terrain. Setting to 1 will only reflect sunlight num lights = 8 From fd662f937a7b6fe2d5db70eb6a2fa5bc5a929728 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 15:51:48 +0200 Subject: [PATCH 328/488] add settings for viewing distance and fog --- apps/openmw/mwrender/objects.cpp | 6 +++--- apps/openmw/mwrender/renderingmanager.cpp | 13 +++++-------- files/settings-default.cfg | 11 +++++++++++ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index dd211f8e9f..bf83e5c836 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -94,7 +94,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) extents *= insert->getScale(); float size = std::max(std::max(extents.x, extents.y), extents.z); - bool small = (size < Settings::Manager::getInt("small object size", "Objects")) && Settings::Manager::getBool("limit small object distance", "Objects"); + bool small = (size < Settings::Manager::getInt("small object size", "View distance")) && Settings::Manager::getBool("limit small object distance", "Objects"); // do not fade out doors. that will cause holes and look stupid if (ptr.getTypeName().find("Door") != std::string::npos) @@ -116,7 +116,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) { insert->attachObject(ent); - ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "Objects") : 0); /// \todo config value + ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "View distance") : 0); /// \todo config value } else { @@ -130,7 +130,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); mStaticGeometrySmall[ptr.getCell()] = sg; - sg->setRenderingDistance(Settings::Manager::getInt("small object distance", "Objects")); /// \todo config value + sg->setRenderingDistance(Settings::Manager::getInt("small object distance", "View distance")); /// \todo config value } else sg = mStaticGeometrySmall[ptr.getCell()]; diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 688b97a2e3..7f4b1ec396 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -12,6 +12,7 @@ #include "../mwworld/world.hpp" // these includes can be removed once the static-hack is gone #include "../mwworld/ptr.hpp" #include +#include using namespace MWRender; @@ -273,18 +274,14 @@ void RenderingManager::configureFog(ESMS::CellStore &mCell) void RenderingManager::configureFog(const float density, const Ogre::ColourValue& colour) { - /// \todo make the viewing distance and fog start/end configurable + float max = Settings::Manager::getFloat("max viewing distance", "Viewing distance"); - // right now we load 3x3 cells, so the maximum viewing distance we - // can allow (to prevent objects suddenly popping up) equals: - // 8192 * 0.69 - // ^ cell size ^ minimum density value used (clear weather) - float low = 5652.48 / density / 2.f; - float high = 5652.48 / density; + float low = max / (density) * Settings::Manager::getFloat("fog start factor", "Viewing distance"); + float high = max / (density) * Settings::Manager::getFloat("fog end factor", "Viewing distance"); mRendering.getScene()->setFog (FOG_LINEAR, colour, 0, low, high); - mRendering.getCamera()->setFarClipDistance ( high ); + mRendering.getCamera()->setFarClipDistance ( max / density ); mRendering.getViewport()->setBackgroundColour (colour); } diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 1e8be450e8..345977922b 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -9,6 +9,8 @@ num lights = 8 # Use static geometry for static objects. Improves rendering speed. use static geometry = true +[Viewing distance] + # Limit the rendering distance of small objects limit small object distance = false @@ -18,6 +20,15 @@ small object size = 250 # Rendering distance for small objects small object distance = 3500 +# Max viewing distance at clear weather conditions +max viewing distance = 5600 + +# Distance at which fog starts (proportional to viewing distance) +fog start factor = 0.5 + +# Distance at which fog ends (proportional to viewing distance) +fog end factor = 1.0 + [Terrain] # Max. number of lights that affect the terrain. Setting to 1 will only reflect sunlight From 00cc45c5371913d2d4965ffc065e43c10c74042e Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 16:10:54 +0200 Subject: [PATCH 329/488] FPS is now a setting instead of commandline option --- apps/openmw/engine.cpp | 2 ++ apps/openmw/main.cpp | 4 ---- files/settings-default.cfg | 8 ++++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 1722be6754..cfcf9f76b9 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -343,6 +343,8 @@ void OMW::Engine::go() else if (boost::filesystem::exists(globaldefault)) settings.loadUser(globaldefault); + mFpsLevel = settings.getInt("fps", "HUD"); + mOgre->configure(!boost::filesystem::is_regular_file(mCfgMgr.getOgreConfigPath()), mCfgMgr.getOgreConfigPath().string(), mCfgMgr.getLogPath().string(), diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index cd1e0e26e4..a5e5c99e6a 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -92,9 +92,6 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat ("plugin", bpo::value()->default_value(StringsVector(), "") ->multitoken(), "plugin file(s)") - ("fps", boost::program_options::value()->implicit_value(1) - ->default_value(0), "fps counter detail (0 = off, 1 = fps counter, 2 = full detail)") - ("anim-verbose", boost::program_options::value()->implicit_value(true) ->default_value(false), "output animation indices files") @@ -225,7 +222,6 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat engine.setNewGame(variables["new-game"].as()); // other settings - engine.showFPS(variables["fps"].as()); engine.setDebugMode(variables["debug"].as()); engine.setSoundUsage(!variables["nosound"].as()); engine.setScriptsVerbosity(variables["script-verbose"].as()); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 345977922b..6372a31c1d 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -1,3 +1,11 @@ +[HUD] + +# FPS counter +# 0: not visible +# 1: basic FPS display +# 2: advanced FPS display (batches, triangles) +fps = 0 + [Objects] shaders = true From 5f2a674d939f326a41ae9ee6c71f32cdc8136077 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 16:14:39 +0200 Subject: [PATCH 330/488] fixed a typo --- apps/openmw/mwrender/objects.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index bf83e5c836..f52953692e 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -94,7 +94,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) extents *= insert->getScale(); float size = std::max(std::max(extents.x, extents.y), extents.z); - bool small = (size < Settings::Manager::getInt("small object size", "View distance")) && Settings::Manager::getBool("limit small object distance", "Objects"); + bool small = (size < Settings::Manager::getInt("small object size", "Viewing distance")) && Settings::Manager::getBool("limit small object distance", "Objects"); // do not fade out doors. that will cause holes and look stupid if (ptr.getTypeName().find("Door") != std::string::npos) @@ -116,7 +116,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) { insert->attachObject(ent); - ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "View distance") : 0); /// \todo config value + ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "Viewing distance") : 0); /// \todo config value } else { @@ -130,7 +130,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) sg = mRenderer.getScene()->createStaticGeometry( "sg" + Ogre::StringConverter::toString(uniqueID)); mStaticGeometrySmall[ptr.getCell()] = sg; - sg->setRenderingDistance(Settings::Manager::getInt("small object distance", "View distance")); /// \todo config value + sg->setRenderingDistance(Settings::Manager::getInt("small object distance", "Viewing distance")); /// \todo config value } else sg = mStaticGeometrySmall[ptr.getCell()]; From 6e19076dc55b20bdd71a9ba4e680dee5018721ed Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Mon, 2 Apr 2012 17:07:18 +0200 Subject: [PATCH 331/488] fallback for ini importer --- apps/mwiniimporter/importer.cpp | 39 ++++++++++++++++++++++++++++----- apps/mwiniimporter/importer.hpp | 4 +++- apps/mwiniimporter/main.cpp | 9 ++++++-- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 08b05f417e..80ec4a5fd7 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -14,10 +14,19 @@ MwIniImporter::MwIniImporter() { { "fps", "General:Show FPS" }, { 0, 0 } }; + const char *fallback[][2] = { + { "Weather_Sunrise_Time", "Weather:Sunrise Time" }, + { "Weather_Sunset_Time", "Weather:Sunset Time" }, + { 0, 0 } + }; for(int i=0; map[i][0]; i++) { mMergeMap.insert(std::make_pair(map[i][0], map[i][1])); } + + for(int i=0; fallback[i][0]; i++) { + mMergeFallback.insert(std::make_pair(fallback[i][0], fallback[i][1])); + } } void MwIniImporter::setVerbose(bool verbose) { @@ -116,16 +125,36 @@ void MwIniImporter::merge(multistrmap &cfg, multistrmap &ini) { multistrmap::iterator iniIt; for(strmap::iterator it=mMergeMap.begin(); it!=mMergeMap.end(); it++) { if((iniIt = ini.find(it->second)) != ini.end()) { - cfg.erase(it->first); - if(!this->specialMerge(it->first, it->second, cfg, ini)) { - cfg.insert(std::make_pair >(it->first, iniIt->second)); + for(std::vector::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); vc++) { + cfg.erase(it->first); + insertMultistrmap(cfg, it->first, *vc); } } } } -bool MwIniImporter::specialMerge(std::string cfgKey, std::string iniKey, multistrmap &cfg, multistrmap &ini) { - return false; +void MwIniImporter::mergeFallback(multistrmap &cfg, multistrmap &ini) { + cfg.erase("fallback"); + + multistrmap::iterator cfgIt; + multistrmap::iterator iniIt; + for(strmap::iterator it=mMergeFallback.begin(); it!=mMergeFallback.end(); it++) { + if((iniIt = ini.find(it->second)) != ini.end()) { + for(std::vector::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); vc++) { + std::string value("\""); + value.append(it->first).append("=").append(vc->substr(0,vc->length()-1)).append("\""); + insertMultistrmap(cfg, "fallback", value); + } + } + } +}; + +void MwIniImporter::insertMultistrmap(multistrmap &cfg, std::string key, std::string value) { + multistrmap::iterator it = cfg.find(key); + if(it == cfg.end()) { + cfg.insert(std::make_pair >(key, std::vector() )); + } + cfg[key].push_back(value); } void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 988f10255e..9ef7b67037 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -18,14 +18,16 @@ class MwIniImporter { multistrmap loadIniFile(std::string filename); multistrmap loadCfgFile(std::string filename); void merge(multistrmap &cfg, multistrmap &ini); + void mergeFallback(multistrmap &cfg, multistrmap &ini); void importGameFiles(multistrmap &cfg, multistrmap &ini); void writeToFile(boost::iostreams::stream &out, multistrmap &cfg); private: - bool specialMerge(std::string cfgKey, std::string iniKey, multistrmap &cfg, multistrmap &ini); + void insertMultistrmap(multistrmap &cfg, std::string key, std::string value); std::string numberToString(int n); bool mVerbose; strmap mMergeMap; + strmap mMergeFallback; }; diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index 836f84eb08..c5409b8121 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -16,6 +16,7 @@ int main(int argc, char *argv[]) { ("ini,i", bpo::value(), "morrowind.ini file") ("cfg,c", bpo::value(), "openmw.cfg file") ("output,o", bpo::value()->default_value(""), "openmw.cfg file") + ("fallback,f", "import fallback settings") ("game-files,g", "import esm and esp files") ; @@ -44,7 +45,7 @@ int main(int argc, char *argv[]) { std::cerr << "cfg file does not exist" << std::endl; return -4; } - + MwIniImporter importer; importer.setVerbose(vm.count("verbose")); @@ -52,7 +53,11 @@ int main(int argc, char *argv[]) { MwIniImporter::multistrmap cfg = importer.loadCfgFile(cfgFile); importer.merge(cfg, ini); - + + if(vm.count("fallback")) { + importer.mergeFallback(cfg, ini); + } + if(vm.count("game-files")) { importer.importGameFiles(cfg, ini); } From 39ee9e9ab867729a41380f318f1ff7696a253884 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 17:51:51 +0200 Subject: [PATCH 332/488] setting for field of view --- apps/openmw/mwrender/renderingmanager.cpp | 2 +- files/settings-default.cfg | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 7f4b1ec396..7d30fab6ec 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -23,7 +23,7 @@ namespace MWRender { RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine, MWWorld::Environment& environment) :mRendering(_rend), mObjects(mRendering), mActors(mRendering, environment), mAmbientMode(0) { - mRendering.createScene("PlayerCam", 55, 5); + mRendering.createScene("PlayerCam", Settings::Manager::getFloat("fieldofview", "General"), 5); mTerrainManager = new TerrainManager(mRendering.getScene(), environment); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 6372a31c1d..86dddc9086 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -1,5 +1,8 @@ -[HUD] +[General] +# Camera field of view +fieldofview = 55 +[HUD] # FPS counter # 0: not visible # 1: basic FPS display @@ -7,7 +10,6 @@ fps = 0 [Objects] - shaders = true # Max. number of lights that affect objects. Setting to 1 will only reflect sunlight @@ -18,7 +20,6 @@ num lights = 8 use static geometry = true [Viewing distance] - # Limit the rendering distance of small objects limit small object distance = false @@ -38,6 +39,5 @@ fog start factor = 0.5 fog end factor = 1.0 [Terrain] - # Max. number of lights that affect the terrain. Setting to 1 will only reflect sunlight num lights = 8 From ff15f28787bdb71e9abe53a96758ff23ed80d524 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 18:01:49 +0200 Subject: [PATCH 333/488] options for texture filtering and mipmaps --- apps/openmw/mwrender/renderingmanager.cpp | 14 ++++++++++++-- files/settings-default.cfg | 14 +++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 7d30fab6ec..4b54f3ea28 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -23,7 +23,7 @@ namespace MWRender { RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine, MWWorld::Environment& environment) :mRendering(_rend), mObjects(mRendering), mActors(mRendering, environment), mAmbientMode(0) { - mRendering.createScene("PlayerCam", Settings::Manager::getFloat("fieldofview", "General"), 5); + mRendering.createScene("PlayerCam", Settings::Manager::getFloat("field of view", "General"), 5); mTerrainManager = new TerrainManager(mRendering.getScene(), environment); @@ -32,7 +32,17 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const configureFog(1, ColourValue(1,1,1)); // Set default mipmap level (NB some APIs ignore this) - TextureManager::getSingleton().setDefaultNumMipmaps(5); + TextureManager::getSingleton().setDefaultNumMipmaps(Settings::Manager::getInt("num mipmaps", "General")); + + // Set default texture filtering options + TextureFilterOptions tfo; + std::string filter = Settings::Manager::getString("texture filtering", "General"); + if (filter == "anisotropic") tfo = TFO_ANISOTROPIC; + else if (filter == "trilinear") tfo = TFO_TRILINEAR; + else /* if (filter == "bilinear") */ tfo = TFO_BILINEAR; + + MaterialManager::getSingleton().setDefaultTextureFiltering(tfo); + MaterialManager::getSingleton().setDefaultAnisotropy(Settings::Manager::getInt("anisotropy", "General")); // Load resources ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 86dddc9086..f616471cce 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -1,6 +1,18 @@ [General] # Camera field of view -fieldofview = 55 +field of view = 55 + +# Texture filtering mode. valid values: +# anisotropic +# bilinear +# trilinear +texture filtering = anisotropic + +# Has no effect when texture filtering is not anisotropic +anisotropy = 4 + +# Number of texture mipmaps to generate +num mipmaps = 5 [HUD] # FPS counter From 342464530de5f88da0a6728e6ad2f8a99ff08e00 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 19:37:24 +0200 Subject: [PATCH 334/488] rotated map working --- apps/openmw/mwrender/localmap.cpp | 37 ++++++++++++++--------- apps/openmw/mwrender/localmap.hpp | 8 ++++- apps/openmw/mwrender/objects.cpp | 32 ++++++++++++++++++++ apps/openmw/mwrender/objects.hpp | 4 +++ apps/openmw/mwrender/renderingmanager.cpp | 12 +++++++- apps/openmw/mwrender/renderingmanager.hpp | 3 ++ 6 files changed, 80 insertions(+), 16 deletions(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 063b253019..e88557f204 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -11,10 +11,11 @@ using namespace MWRender; using namespace Ogre; -LocalMap::LocalMap(OEngine::Render::OgreRenderer* rend, MWWorld::Environment* env) : +LocalMap::LocalMap(OEngine::Render::OgreRenderer* rend, MWRender::RenderingManager* rendering, MWWorld::Environment* env) : mInterior(false), mCellX(0), mCellY(0) { mRendering = rend; + mRenderingManager = rendering; mEnvironment = env; mCameraPosNode = mRendering->getScene()->getRootSceneNode()->createChildSceneNode(); @@ -35,6 +36,12 @@ LocalMap::~LocalMap() deleteBuffers(); } +const Ogre::Vector2 LocalMap::rotatePoint(const Ogre::Vector2& p, const Ogre::Vector2& c, const float angle) +{ + return Vector2( Math::Cos(angle) * (p.x - c.x) - Math::Sin(angle) * (p.y - c.y) + c.x, + Math::Sin(angle) * (p.x - c.x) + Math::Cos(angle) * (p.y - c.y) + c.y); +} + void LocalMap::deleteBuffers() { mBuffers.clear(); @@ -117,6 +124,7 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell, const Vector2& north = mEnvironment->mWorld->getNorthVector(cell); Radian angle(std::atan2(-north.x, -north.y)); + mAngle = angle.valueRadians(); mCameraRotNode->setOrientation(Quaternion(Math::Cos(angle/2.f), 0, Math::Sin(angle/2.f), 0)); mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::NEAR_LEFT_BOTTOM))); @@ -124,7 +132,9 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell, mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::NEAR_RIGHT_BOTTOM))); mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::FAR_RIGHT_BOTTOM))); - Vector2 center(bounds.getCenter().x, bounds.getCenter().z); + mBounds.scale(Vector3(2,2,2)); + + Vector2 center(mBounds.getCenter().x, mBounds.getCenter().z); Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); Vector2 max(mBounds.getMaximum().x, mBounds.getMaximum().z); @@ -165,6 +175,7 @@ void LocalMap::render(const float x, const float y, // make everything visible mRendering->getScene()->setAmbientLight(ColourValue(1,1,1)); + mRenderingManager->disableLights(); mCameraNode->setPosition(Vector3(x, zhigh+100000, y)); //mCellCamera->setFarClipDistance( (zhigh-zlow) * 1.1 ); @@ -233,7 +244,8 @@ void LocalMap::render(const float x, const float y, //rtt->writeContentsToFile("./" + texture + ".jpg"); } } - + + mRenderingManager->enableLights(); // re-enable fog mRendering->getScene()->setFog(FOG_LINEAR, clr, 0, fStart, fEnd); @@ -251,15 +263,18 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Quaterni // retrieve the x,y grid coordinates the player is in int x,y; Vector3 _pos(position.x, 0, position.z); - _pos = mCameraRotNode->convertWorldToLocalPosition(_pos); - - //if (mInterior) - /// \todo - Vector2 pos(_pos.x, _pos.z); + if (mInterior) + { + pos = rotatePoint(pos, Vector2(mBounds.getCenter().x, mBounds.getCenter().z), mAngle); + } + + Vector3 playerdirection = -mCameraRotNode->convertWorldToLocalOrientation(orientation).zAxis(); + Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); + if (!mInterior) { x = std::ceil(pos.x / sSize)-1; @@ -269,8 +284,6 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Quaterni } else { - Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); - x = std::ceil((pos.x - min.x)/sSize)-1; y = std::ceil((pos.y - min.y)/sSize)-1; @@ -288,16 +301,12 @@ void LocalMap::updatePlayer (const Ogre::Vector3& position, const Ogre::Quaterni } else { - Vector2 min(mBounds.getMinimum().x, mBounds.getMinimum().z); - u = (pos.x - min.x - sSize*x)/sSize; v = (pos.y - min.y - sSize*y)/sSize; texName = mInteriorName + "_" + coordStr(x,y); } - //std::cout << " x,y " << x << ", " << y << " u,v " << u << "," << v << std::endl; - mEnvironment->mWindowManager->setPlayerPos(u, v); mEnvironment->mWindowManager->setPlayerDir(playerdirection.x, -playerdirection.z); diff --git a/apps/openmw/mwrender/localmap.hpp b/apps/openmw/mwrender/localmap.hpp index cb294a6568..95685167c3 100644 --- a/apps/openmw/mwrender/localmap.hpp +++ b/apps/openmw/mwrender/localmap.hpp @@ -12,13 +12,15 @@ namespace MWWorld namespace MWRender { + class RenderingManager; + /// /// \brief Local map rendering /// class LocalMap { public: - LocalMap(OEngine::Render::OgreRenderer*, MWWorld::Environment* env); + LocalMap(OEngine::Render::OgreRenderer*, MWRender::RenderingManager* rendering, MWWorld::Environment* env); ~LocalMap(); /** @@ -58,6 +60,7 @@ namespace MWRender private: OEngine::Render::OgreRenderer* mRendering; + MWRender::RenderingManager* mRenderingManager; MWWorld::Environment* mEnvironment; // 1024*1024 pixels for a cell @@ -77,6 +80,9 @@ namespace MWRender Ogre::SceneNode* mCameraPosNode; Ogre::SceneNode* mCameraRotNode; + float mAngle; + const Ogre::Vector2 rotatePoint(const Ogre::Vector2& p, const Ogre::Vector2& c, const float angle); + void render(const float x, const float y, const float zlow, const float zhigh, const float xw, const float yw, diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 94ccb6e97b..05b7e3b0b3 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -169,6 +169,7 @@ void Objects::insertLight (const MWWorld::Ptr& ptr, float r, float g, float b, f assert(insert); Ogre::Light *light = mRenderer.getScene()->createLight(); light->setDiffuseColour (r, g, b); + mLights.push_back(light->getName()); float cval=0.0f, lval=0.0f, qval=0.0f; @@ -274,3 +275,34 @@ Ogre::AxisAlignedBox Objects::getDimensions(MWWorld::Ptr::CellStore* cell) { return mBounds[cell]; } + +void Objects::enableLights() +{ + std::vector::iterator it = mLights.begin(); + while (it != mLights.end()) + { + if (mMwRoot->getCreator()->hasLight(*it)) + { + mMwRoot->getCreator()->getLight(*it)->setVisible(true); + ++it; + } + else + it = mLights.erase(it); + } +} + +void Objects::disableLights() +{ + std::vector::iterator it = mLights.begin(); + while (it != mLights.end()) + { + if (mMwRoot->getCreator()->hasLight(*it)) + { + mMwRoot->getCreator()->getLight(*it)->setVisible(false); + ++it; + } + else + it = mLights.erase(it); + } +} + diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index 265de875be..5911aa4ccf 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -16,6 +16,7 @@ class Objects{ std::map mStaticGeometry; std::map mStaticGeometrySmall; std::map mBounds; + std::vector mLights; Ogre::SceneNode* mMwRoot; bool mIsStatic; static int uniqueID; @@ -44,6 +45,9 @@ public: void insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh); void insertLight (const MWWorld::Ptr& ptr, float r, float g, float b, float radius); + void enableLights(); + void disableLights(); + Ogre::AxisAlignedBox getDimensions(MWWorld::Ptr::CellStore*); ///< get a bounding box that encloses all objects in the specified cell diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 18675203c7..92e6d9edd7 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -64,7 +64,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mSun = 0; mDebugging = new Debugging(mMwRoot, environment, engine); - mLocalMap = new MWRender::LocalMap(&mRendering, &environment); + mLocalMap = new MWRender::LocalMap(&mRendering, this, &environment); } RenderingManager::~RenderingManager () @@ -411,4 +411,14 @@ void RenderingManager::preCellChange(MWWorld::Ptr::CellStore* cell) mLocalMap->saveFogOfWar(cell); } +void RenderingManager::disableLights() +{ + mObjects.disableLights(); +} + +void RenderingManager::enableLights() +{ + mObjects.enableLights(); +} + } // namespace diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 81907a9382..ff9cd168ec 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -109,6 +109,9 @@ class RenderingManager: private RenderingInterface { void sunEnable(); void sunDisable(); + void disableLights(); + void enableLights(); + bool occlusionQuerySupported() { return mOcclusionQuery->supported(); }; OcclusionQuery* getOcclusionQuery() { return mOcclusionQuery; }; From d4a2bdfa3d33263481a82b0a3e28b98613bd5c30 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 2 Apr 2012 20:46:42 +0200 Subject: [PATCH 335/488] fix crash when hardware occlusion queries unsupporetd --- apps/openmw/mwrender/sky.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 2fdf9b2cd6..781f7abd5d 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -746,6 +746,7 @@ void SkyManager::setGlare(const float glare) Vector3 SkyManager::getRealSunPos() { + if (!mCreated) return Vector3(0,0,0); return mSun->getNode()->_getDerivedPosition(); } From ab9c4306328446807bde837a0befbe45ed3c1381 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Mon, 2 Apr 2012 20:47:09 +0200 Subject: [PATCH 336/488] fallback in apps/openmw; fix for apps/mwiniimporter --- apps/mwiniimporter/importer.cpp | 4 ++-- apps/mwiniimporter/main.cpp | 2 ++ apps/openmw/engine.cpp | 7 ++++++- apps/openmw/engine.hpp | 3 +++ apps/openmw/main.cpp | 25 ++++++++++++++---------- apps/openmw/mwworld/world.cpp | 34 ++++++++++++++++++++++++++++++++- apps/openmw/mwworld/world.hpp | 7 ++++++- 7 files changed, 67 insertions(+), 15 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 80ec4a5fd7..e8fafab44b 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -141,8 +141,8 @@ void MwIniImporter::mergeFallback(multistrmap &cfg, multistrmap &ini) { for(strmap::iterator it=mMergeFallback.begin(); it!=mMergeFallback.end(); it++) { if((iniIt = ini.find(it->second)) != ini.end()) { for(std::vector::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); vc++) { - std::string value("\""); - value.append(it->first).append("=").append(vc->substr(0,vc->length()-1)).append("\""); + std::string value(it->first); + value.append("=").append(vc->substr(0,vc->length()-1)); insertMultistrmap(cfg, "fallback", value); } } diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index c5409b8121..dc9bbcd0ae 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -28,6 +28,8 @@ int main(int argc, char *argv[]) { return 0; } + bpo::notify(vm); + std::string iniFile = vm["ini"].as(); std::string cfgFile = vm["cfg"].as(); diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 2dab53ecc8..c6684593e2 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -341,7 +341,7 @@ void OMW::Engine::go() // Create the world mEnvironment.mWorld = new MWWorld::World (*mOgre, mFileCollections, mMaster, - mResDir, mNewGame, mEnvironment, mEncoding); + mResDir, mNewGame, mEnvironment, mEncoding, mFallbackPairs); // Create window manager - this manages all the MW-specific GUI windows MWScript::registerExtensions (mExtensions); @@ -508,3 +508,8 @@ void OMW::Engine::setEncoding(const std::string& encoding) { mEncoding = encoding; } + +void OMW::Engine::setFallbackValues(std::vector pairs) +{ + mFallbackPairs = pairs; +} diff --git a/apps/openmw/engine.hpp b/apps/openmw/engine.hpp index 690430784b..f1df98f4cf 100644 --- a/apps/openmw/engine.hpp +++ b/apps/openmw/engine.hpp @@ -76,6 +76,7 @@ namespace OMW bool mReportFocus; float mFocusTDiff; std::string mFocusName; + std::vector mFallbackPairs; MWWorld::Environment mEnvironment; Compiler::Extensions mExtensions; @@ -163,6 +164,8 @@ namespace OMW void setAnimationVerbose(bool animverbose); + void setFallbackValues(std::vector pairs); + private: Files::ConfigurationManager& mCfgMgr; }; diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index cd1e0e26e4..0dc5343775 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -92,39 +92,43 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat ("plugin", bpo::value()->default_value(StringsVector(), "") ->multitoken(), "plugin file(s)") - ("fps", boost::program_options::value()->implicit_value(1) + ("fps", bpo::value()->implicit_value(1) ->default_value(0), "fps counter detail (0 = off, 1 = fps counter, 2 = full detail)") - ("anim-verbose", boost::program_options::value()->implicit_value(true) + ("anim-verbose", bpo::value()->implicit_value(true) ->default_value(false), "output animation indices files") - ("debug", boost::program_options::value()->implicit_value(true) + ("debug", bpo::value()->implicit_value(true) ->default_value(false), "debug mode") - ("nosound", boost::program_options::value()->implicit_value(true) + ("nosound", bpo::value()->implicit_value(true) ->default_value(false), "disable all sounds") - ("script-verbose", boost::program_options::value()->implicit_value(true) + ("script-verbose", bpo::value()->implicit_value(true) ->default_value(false), "verbose script output") - ("new-game", boost::program_options::value()->implicit_value(true) + ("new-game", bpo::value()->implicit_value(true) ->default_value(false), "activate char gen/new game mechanics") - ("script-all", boost::program_options::value()->implicit_value(true) + ("script-all", bpo::value()->implicit_value(true) ->default_value(false), "compile all scripts (excluding dialogue scripts) at startup") - ("fs-strict", boost::program_options::value()->implicit_value(true) + ("fs-strict", bpo::value()->implicit_value(true) ->default_value(false), "strict file system handling (no case folding)") - ( "encoding", boost::program_options::value()-> + ( "encoding", bpo::value()-> default_value("win1252"), "Character encoding used in OpenMW game messages:\n" "\n\twin1250 - Central and Eastern European such as Polish, Czech, Slovak, Hungarian, Slovene, Bosnian, Croatian, Serbian (Latin script), Romanian and Albanian languages\n" "\n\twin1251 - Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic and other languages\n" "\n\twin1252 - Western European (Latin) alphabet, used by default") - ("report-focus", boost::program_options::value()->implicit_value(true) + ("report-focus", bpo::value()->implicit_value(true) ->default_value(false), "write name of focussed object to cout") + + ("fallback", bpo::value()->default_value(StringsVector(), "") + ->multitoken()->composing(), "fallback values") + ; bpo::parsed_options valid_opts = bpo::command_line_parser(argc, argv) @@ -232,6 +236,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat engine.setCompileAll(variables["script-all"].as()); engine.setReportFocus(variables["report-focus"].as()); engine.setAnimationVerbose(variables["anim-verbose"].as()); + engine.setFallbackValues(variables["fallback"].as >()); return true; } diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 3a15f42bae..093c3fef0e 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -152,10 +152,40 @@ namespace MWWorld mRendering->skyDisable(); } + void World::setFallbackValues(std::vector pairs) + { + for(std::vector::iterator it = pairs.begin(); it != pairs.end(); it++) + { + std::string kv = *it; + int seperator = kv.find("="); + if(seperator < 1 || seperator == (kv.length()-1)) + { + continue; + } + + std::string key = it->substr(0,seperator); + std::string value = it->substr(seperator+1); + if(mFallback.find(key) == mFallback.end()) { + std::cout << "insert " << key << ":" << value << std::endl; + mFallback.insert(std::make_pair(key,value)); + } + } + } + + std::string World::getFallback(std::string key) + { + std::map::iterator it; + if((it = mFallback.find(key)) == mFallback.end()) + { + return std::string(""); + } + return it->second; + } + World::World (OEngine::Render::OgreRenderer& renderer, const Files::Collections& fileCollections, const std::string& master, const boost::filesystem::path& resDir, - bool newGame, Environment& environment, const std::string& encoding) + bool newGame, Environment& environment, const std::string& encoding, std::vector fallbackPairs) : mPlayer (0), mLocalScripts (mStore), mGlobalVariables (0), mSky (true), mEnvironment (environment), mNextDynamicRecord (0), mCells (mStore, mEsm, *this), mNumFacing(0) @@ -190,6 +220,8 @@ namespace MWWorld } mWorldScene = new Scene(environment, this, *mRendering, mPhysics); + + setFallbackValues(fallbackPairs); } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 0d46fe4e81..d6b4221410 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -100,6 +100,7 @@ namespace MWWorld std::string mFaced1Name; std::string mFaced2Name; int mNumFacing; + std::map mFallback; int getDaysPerMonth (int month) const; @@ -110,7 +111,7 @@ namespace MWWorld World (OEngine::Render::OgreRenderer& renderer, const Files::Collections& fileCollections, const std::string& master, const boost::filesystem::path& resDir, bool newGame, - Environment& environment, const std::string& encoding); + Environment& environment, const std::string& encoding, std::vector fallbackPairs); ~World(); @@ -125,6 +126,10 @@ namespace MWWorld void adjustSky(); + void setFallbackValues(std::vector pairs); + + std::string getFallback(std::string key); + MWWorld::Player& getPlayer(); const ESMS::ESMStore& getStore() const; From 0e5c90d3e783cd471197637ae281494de4dd0b08 Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Mon, 2 Apr 2012 23:50:53 +0200 Subject: [PATCH 337/488] Issue #225: Correction to commit ae98904. Changed pointer to LandData struct to simple member variable. --- apps/openmw/mwrender/terrain.cpp | 25 +++++++------------- components/esm/loadland.cpp | 40 +++++++++----------------------- components/esm/loadland.hpp | 8 +------ 3 files changed, 20 insertions(+), 53 deletions(-) diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 0b8f933a27..f1920490d5 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -98,10 +98,7 @@ namespace MWRender ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); if ( land != NULL ) { - if (!land->dataLoaded) - { - land->loadData(); - } + land->loadData(); } //split the cell terrain into four segments @@ -136,7 +133,7 @@ namespace MWRender const size_t xOffset = x * (mLandSize-1); memcpy(&terrainData.inputFloat[terrainCopyY*mLandSize], - &land->landData->heights[yOffset + xOffset], + &land->landData.heights[yOffset + xOffset], mLandSize*sizeof(float)); } } @@ -163,7 +160,7 @@ namespace MWRender numTextures, indexes); - if ( land && land->landData->usingColours ) + if ( land && land->landData.usingColours ) { // disable or enable global colour map (depends on available vertex colours) mActiveProfile->setGlobalColourMapEnabled(true); @@ -423,18 +420,12 @@ namespace MWRender ESM::Land* land = mEnvironment.mWorld->getStore().lands.search(cellX, cellY); if ( land != NULL ) { - if (!land->dataLoaded) - { - land->loadData(); - } + land->loadData(); - return land->landData - ->textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; - } - else - { - return 0; + return land->landData.textures[y * ESM::Land::LAND_TEXTURE_SIZE + x]; } + + return 0; } //---------------------------------------------------------------------------------------------- @@ -473,7 +464,7 @@ namespace MWRender if ( land != NULL ) { - const char* const colours = land->landData->colours; + const char* const colours = land->landData.colours; for ( int y = 0; y < size; y++ ) { for ( int x = 0; x < size; x++ ) diff --git a/components/esm/loadland.cpp b/components/esm/loadland.cpp index 96afdf8316..c6dc3c6f20 100644 --- a/components/esm/loadland.cpp +++ b/components/esm/loadland.cpp @@ -10,16 +10,10 @@ Land::Land() , mEsm(NULL) , hasData(false) , dataLoaded(false) - , landData(NULL) { + memset(&landData, 0, sizeof(landData)); } -Land::~Land() -{ - delete landData; -} - - void Land::load(ESMReader &esm) { mEsm = &esm; @@ -68,7 +62,6 @@ void Land::load(ESMReader &esm) hasData = (cnt == 3); dataLoaded = false; - landData = NULL; } void Land::loadData() @@ -78,8 +71,6 @@ void Land::loadData() return; } - landData = new LandData; - if (hasData) { mEsm->restoreContext(context); @@ -91,19 +82,20 @@ void Land::loadData() } VHGT rawHeights; + memset(&rawHeights, 0, sizeof(rawHeights)); mEsm->getHNExact(&rawHeights, sizeof(VHGT), "VHGT"); int currentHeightOffset = rawHeights.heightOffset; for (int y = 0; y < LAND_SIZE; y++) { currentHeightOffset += rawHeights.heightData[y * LAND_SIZE]; - landData->heights[y * LAND_SIZE] = currentHeightOffset * HEIGHT_SCALE; + landData.heights[y * LAND_SIZE] = currentHeightOffset * HEIGHT_SCALE; int tempOffset = currentHeightOffset; for (int x = 1; x < LAND_SIZE; x++) { tempOffset += rawHeights.heightData[y * LAND_SIZE + x]; - landData->heights[x + y * LAND_SIZE] = tempOffset * HEIGHT_SCALE; + landData.heights[x + y * LAND_SIZE] = tempOffset * HEIGHT_SCALE; } } @@ -113,10 +105,10 @@ void Land::loadData() } if (mEsm->isNextSub("VCLR")) { - landData->usingColours = true; - mEsm->getHExact(&landData->colours, 3*LAND_NUM_VERTS); + landData.usingColours = true; + mEsm->getHExact(&landData.colours, 3*LAND_NUM_VERTS); }else{ - landData->usingColours = false; + landData.usingColours = false; } //TODO fix magic numbers uint16_t vtex[512]; @@ -127,29 +119,19 @@ void Land::loadData() for ( int x1 = 0; x1 < 4; x1++ ) for ( int y2 = 0; y2 < 4; y2++) for ( int x2 = 0; x2 < 4; x2++ ) - landData->textures[(y1*4+y2)*16+(x1*4+x2)] = vtex[readPos++]; + landData.textures[(y1*4+y2)*16+(x1*4+x2)] = vtex[readPos++]; } else { - landData->usingColours = false; - memset(&landData->textures, 0, 512 * sizeof(uint16_t)); + landData.usingColours = false; + memset(landData.textures, 0, sizeof(landData.textures)); for (int i = 0; i < LAND_NUM_VERTS; i++) { - landData->heights[i] = -256.0f * HEIGHT_SCALE; + landData.heights[i] = -256.0f * HEIGHT_SCALE; } } dataLoaded = true; } -void Land::unloadData() -{ - if (dataLoaded) - { - delete landData; - landData = NULL; - dataLoaded = false; - } -} - } diff --git a/components/esm/loadland.hpp b/components/esm/loadland.hpp index 64baecd349..86f37d5755 100644 --- a/components/esm/loadland.hpp +++ b/components/esm/loadland.hpp @@ -12,7 +12,6 @@ namespace ESM struct Land { Land(); - ~Land(); int flags; // Only first four bits seem to be used, don't know what // they mean. @@ -67,7 +66,7 @@ struct Land char colours[3 * LAND_NUM_VERTS]; }; - LandData *landData; + LandData landData; void load(ESMReader &esm); @@ -75,11 +74,6 @@ struct Land * Actually loads data */ void loadData(); - - /** - * Frees memory allocated for land data - */ - void unloadData(); }; } #endif From 2d23d79fd5d7dc954c1228a5a8197ad46692a311 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 3 Apr 2012 00:44:26 +0200 Subject: [PATCH 338/488] allways merge fallback; better syntax --- apps/mwiniimporter/importer.cpp | 20 ++++++++++---------- apps/mwiniimporter/importer.hpp | 2 +- apps/mwiniimporter/main.cpp | 6 +----- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index e8fafab44b..60f2c620d4 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -14,18 +14,16 @@ MwIniImporter::MwIniImporter() { { "fps", "General:Show FPS" }, { 0, 0 } }; - const char *fallback[][2] = { - { "Weather_Sunrise_Time", "Weather:Sunrise Time" }, - { "Weather_Sunset_Time", "Weather:Sunset Time" }, - { 0, 0 } + const char *fallback[] = { + "Weather:Sunrise Time", "Weather_Sunset_Time", 0 }; for(int i=0; map[i][0]; i++) { mMergeMap.insert(std::make_pair(map[i][0], map[i][1])); } - for(int i=0; fallback[i][0]; i++) { - mMergeFallback.insert(std::make_pair(fallback[i][0], fallback[i][1])); + for(int i=0; fallback[i]; i++) { + mMergeFallback.push_back(fallback[i]); } } @@ -138,11 +136,13 @@ void MwIniImporter::mergeFallback(multistrmap &cfg, multistrmap &ini) { multistrmap::iterator cfgIt; multistrmap::iterator iniIt; - for(strmap::iterator it=mMergeFallback.begin(); it!=mMergeFallback.end(); it++) { - if((iniIt = ini.find(it->second)) != ini.end()) { + for(std::vector::iterator it=mMergeFallback.begin(); it!=mMergeFallback.end(); it++) { + if((iniIt = ini.find(*it)) != ini.end()) { for(std::vector::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); vc++) { - std::string value(it->first); - value.append("=").append(vc->substr(0,vc->length()-1)); + std::string value(*it); + std::replace( value.begin(), value.end(), ' ', '_' ); + std::replace( value.begin(), value.end(), ':', '_' ); + value.append(",").append(vc->substr(0,vc->length()-1)); insertMultistrmap(cfg, "fallback", value); } } diff --git a/apps/mwiniimporter/importer.hpp b/apps/mwiniimporter/importer.hpp index 9ef7b67037..ced332a72d 100644 --- a/apps/mwiniimporter/importer.hpp +++ b/apps/mwiniimporter/importer.hpp @@ -27,7 +27,7 @@ class MwIniImporter { std::string numberToString(int n); bool mVerbose; strmap mMergeMap; - strmap mMergeFallback; + std::vector mMergeFallback; }; diff --git a/apps/mwiniimporter/main.cpp b/apps/mwiniimporter/main.cpp index dc9bbcd0ae..051e7db2b8 100644 --- a/apps/mwiniimporter/main.cpp +++ b/apps/mwiniimporter/main.cpp @@ -16,7 +16,6 @@ int main(int argc, char *argv[]) { ("ini,i", bpo::value(), "morrowind.ini file") ("cfg,c", bpo::value(), "openmw.cfg file") ("output,o", bpo::value()->default_value(""), "openmw.cfg file") - ("fallback,f", "import fallback settings") ("game-files,g", "import esm and esp files") ; @@ -55,10 +54,7 @@ int main(int argc, char *argv[]) { MwIniImporter::multistrmap cfg = importer.loadCfgFile(cfgFile); importer.merge(cfg, ini); - - if(vm.count("fallback")) { - importer.mergeFallback(cfg, ini); - } + importer.mergeFallback(cfg, ini); if(vm.count("game-files")) { importer.importGameFiles(cfg, ini); From d87dffa948af48002863efd1a92837ba88574068 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 3 Apr 2012 01:47:43 +0200 Subject: [PATCH 339/488] should work... but does not even compile --- apps/openmw/main.cpp | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 0dc5343775..e1ddb03e72 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -54,6 +54,35 @@ inline boost::filesystem::path lexical_cast mMap; + + static void + validate(boost::any &v, std::vector const &tokens) + { + if(v.empty()) + { + v = boost::any(FallbackMap()); + } + + FallbackMap *map = boost::any_cast(&v); + + std::map::iterator mapIt; + for(std::vector::const_iterator it=tokens.begin(); it != tokens.end(); it++) + { + int sep = it->find(","); + std::string key(it->substr(0,sep-1)); + std::string value(it->substr(sep)); + + if((mapIt = map->mMap.find(key)) == map->mMap.end()) + { + map->mMap.insert(std::make_pair(key,value)); + } + } + } +}; + + /** * \brief Parses application command line and calls \ref Cfg::ConfigurationManager * to parse configuration files. @@ -126,7 +155,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat ("report-focus", bpo::value()->implicit_value(true) ->default_value(false), "write name of focussed object to cout") - ("fallback", bpo::value()->default_value(StringsVector(), "") + ("fallback", bpo::value() ->multitoken()->composing(), "fallback values") ; @@ -236,7 +265,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat engine.setCompileAll(variables["script-all"].as()); engine.setReportFocus(variables["report-focus"].as()); engine.setAnimationVerbose(variables["anim-verbose"].as()); - engine.setFallbackValues(variables["fallback"].as >()); + //engine.setFallbackValues(variables["fallback"].as >()); return true; } From 73705dadf6036323bbbe79e2da0dbe7c52f7991d Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 3 Apr 2012 02:14:39 +0200 Subject: [PATCH 340/488] parse fallback with boost program option custom validators --- apps/openmw/engine.cpp | 6 ++-- apps/openmw/engine.hpp | 4 +-- apps/openmw/main.cpp | 52 ++++++++++++++++++----------------- apps/openmw/mwworld/world.cpp | 24 ++++------------ apps/openmw/mwworld/world.hpp | 4 +-- 5 files changed, 39 insertions(+), 51 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index c6684593e2..dae5aaff15 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -341,7 +341,7 @@ void OMW::Engine::go() // Create the world mEnvironment.mWorld = new MWWorld::World (*mOgre, mFileCollections, mMaster, - mResDir, mNewGame, mEnvironment, mEncoding, mFallbackPairs); + mResDir, mNewGame, mEnvironment, mEncoding, mFallbackMap); // Create window manager - this manages all the MW-specific GUI windows MWScript::registerExtensions (mExtensions); @@ -509,7 +509,7 @@ void OMW::Engine::setEncoding(const std::string& encoding) mEncoding = encoding; } -void OMW::Engine::setFallbackValues(std::vector pairs) +void OMW::Engine::setFallbackValues(std::map fallbackMap) { - mFallbackPairs = pairs; + mFallbackMap = fallbackMap; } diff --git a/apps/openmw/engine.hpp b/apps/openmw/engine.hpp index f1df98f4cf..6eae20cc0f 100644 --- a/apps/openmw/engine.hpp +++ b/apps/openmw/engine.hpp @@ -76,7 +76,7 @@ namespace OMW bool mReportFocus; float mFocusTDiff; std::string mFocusName; - std::vector mFallbackPairs; + std::map mFallbackMap; MWWorld::Environment mEnvironment; Compiler::Extensions mExtensions; @@ -164,7 +164,7 @@ namespace OMW void setAnimationVerbose(bool animverbose); - void setFallbackValues(std::vector pairs); + void setFallbackValues(std::map map); private: Files::ConfigurationManager& mCfgMgr; diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index e1ddb03e72..b541ea0d36 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -56,32 +56,34 @@ using namespace std; struct FallbackMap { std::map mMap; - - static void - validate(boost::any &v, std::vector const &tokens) - { - if(v.empty()) - { - v = boost::any(FallbackMap()); - } - - FallbackMap *map = boost::any_cast(&v); - - std::map::iterator mapIt; - for(std::vector::const_iterator it=tokens.begin(); it != tokens.end(); it++) - { - int sep = it->find(","); - std::string key(it->substr(0,sep-1)); - std::string value(it->substr(sep)); - - if((mapIt = map->mMap.find(key)) == map->mMap.end()) - { - map->mMap.insert(std::make_pair(key,value)); - } - } - } }; +void validate(boost::any &v, std::vector const &tokens, FallbackMap*, int) +{ + if(v.empty()) + { + v = boost::any(FallbackMap()); + } + + FallbackMap *map = boost::any_cast(&v); + + std::map::iterator mapIt; + for(std::vector::const_iterator it=tokens.begin(); it != tokens.end(); it++) + { + int sep = it->find(","); + if(sep < 1) + continue; + + std::string key(it->substr(0,sep)); + std::string value(it->substr(sep+1)); + + if((mapIt = map->mMap.find(key)) == map->mMap.end()) + { + map->mMap.insert(std::make_pair(key,value)); + } + } +} + /** * \brief Parses application command line and calls \ref Cfg::ConfigurationManager @@ -265,7 +267,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat engine.setCompileAll(variables["script-all"].as()); engine.setReportFocus(variables["report-focus"].as()); engine.setAnimationVerbose(variables["anim-verbose"].as()); - //engine.setFallbackValues(variables["fallback"].as >()); + engine.setFallbackValues(variables["fallback"].as().mMap); return true; } diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 093c3fef0e..596adcf6b0 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -152,24 +152,9 @@ namespace MWWorld mRendering->skyDisable(); } - void World::setFallbackValues(std::vector pairs) + void World::setFallbackValues(std::map fallbackMap) { - for(std::vector::iterator it = pairs.begin(); it != pairs.end(); it++) - { - std::string kv = *it; - int seperator = kv.find("="); - if(seperator < 1 || seperator == (kv.length()-1)) - { - continue; - } - - std::string key = it->substr(0,seperator); - std::string value = it->substr(seperator+1); - if(mFallback.find(key) == mFallback.end()) { - std::cout << "insert " << key << ":" << value << std::endl; - mFallback.insert(std::make_pair(key,value)); - } - } + mFallback = fallbackMap; } std::string World::getFallback(std::string key) @@ -185,7 +170,7 @@ namespace MWWorld World::World (OEngine::Render::OgreRenderer& renderer, const Files::Collections& fileCollections, const std::string& master, const boost::filesystem::path& resDir, - bool newGame, Environment& environment, const std::string& encoding, std::vector fallbackPairs) + bool newGame, Environment& environment, const std::string& encoding, std::map fallbackMap) : mPlayer (0), mLocalScripts (mStore), mGlobalVariables (0), mSky (true), mEnvironment (environment), mNextDynamicRecord (0), mCells (mStore, mEsm, *this), mNumFacing(0) @@ -221,7 +206,8 @@ namespace MWWorld mWorldScene = new Scene(environment, this, *mRendering, mPhysics); - setFallbackValues(fallbackPairs); + setFallbackValues(fallbackMap); + std::cout << "Weather_Sunrise_Time=" << getFallback("Weather_Sunrise_Time") << std::endl; } diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index d6b4221410..7f18762f56 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -111,7 +111,7 @@ namespace MWWorld World (OEngine::Render::OgreRenderer& renderer, const Files::Collections& fileCollections, const std::string& master, const boost::filesystem::path& resDir, bool newGame, - Environment& environment, const std::string& encoding, std::vector fallbackPairs); + Environment& environment, const std::string& encoding, std::map fallbackMap); ~World(); @@ -126,7 +126,7 @@ namespace MWWorld void adjustSky(); - void setFallbackValues(std::vector pairs); + void setFallbackValues(std::map fallbackMap); std::string getFallback(std::string key); From 329d59e52bc7256bb30fa24bd8a0ab01e36d189c Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 3 Apr 2012 02:17:15 +0200 Subject: [PATCH 341/488] typo --- apps/mwiniimporter/importer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 60f2c620d4..f1cec04795 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -15,7 +15,9 @@ MwIniImporter::MwIniImporter() { { 0, 0 } }; const char *fallback[] = { - "Weather:Sunrise Time", "Weather_Sunset_Time", 0 + "Weather:Sunrise Time", + "Weather:Sunset Time", + 0 }; for(int i=0; map[i][0]; i++) { From fd45208196f824bf3536b24d25d8386e7cba302d Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 14:23:23 +0200 Subject: [PATCH 342/488] re-added code for reflection & refraction rendering --- apps/openmw/mwrender/water.cpp | 68 +++++++++++++++++++++++++++++----- apps/openmw/mwrender/water.hpp | 9 ++++- files/settings-default.cfg | 8 ++++ 3 files changed, 74 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index cbf9c5b29b..c19a487abc 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,4 +1,7 @@ #include "water.hpp" +#include + +using namespace Ogre; namespace MWRender { @@ -9,17 +12,17 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : { try { - Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); + CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) {} mTop = cell->water; mIsUnderwater = false; - mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); + mWaterPlane = Plane(Vector3::UNIT_Y, 0); - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); + MeshManager::getSingleton().createPlane("water", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Vector3::UNIT_Z); mWater = mSceneManager->createEntity("water"); @@ -33,18 +36,41 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mWaterNode->setPosition(getSceneNodeCoordinates(cell->data.gridX, cell->data.gridY)); } mWaterNode->attachObject(mWater); + + // Create rendertargets for reflection and refraction + int rttsize = Settings::Manager::getInt("rtt size", "Water"); + for (unsigned int i = 0; i < 2; ++i) + { + if (i==0 && !Settings::Manager::getBool("reflection", "Water")) continue; + if (i==1 && !Settings::Manager::getBool("refraction", "Water")) continue; + + TexturePtr tex = TextureManager::getSingleton().createManual(i == 0 ? "WaterReflection" : "WaterRefraction", + ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_R8G8B8, TU_RENDERTARGET); + + RenderTarget* rtt = tex->getBuffer()->getRenderTarget(); + Viewport* vp = rtt->addViewport(mCamera); + vp->setOverlaysEnabled(false); + vp->setBackgroundColour(ColourValue(0.8f, 0.9f, 1.0f)); + vp->setShadowsEnabled(false); + //vp->setVisibilityMask( ... ); + rtt->addListener(this); + rtt->setActive(true); + + if (i == 0) mReflectionTarget = rtt; + else mRefractionTarget = rtt; + } } Water::~Water() { - Ogre::MeshManager::getSingleton().remove("water"); + MeshManager::getSingleton().remove("water"); mWaterNode->detachObject(mWater); mSceneManager->destroyEntity(mWater); mSceneManager->destroySceneNode(mWaterNode); - Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport); + CompositorManager::getSingleton().removeCompositorChain(mViewport); } void Water::changeCell(const ESM::Cell* cell) @@ -73,7 +99,7 @@ void Water::checkUnderwater(float y) if ((mIsUnderwater && y > mTop) || !mWater->isVisible() || mCamera->getPolygonMode() != Ogre::PM_SOLID) { try { - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); + CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) {} mIsUnderwater = false; } @@ -81,15 +107,37 @@ void Water::checkUnderwater(float y) if (!mIsUnderwater && y < mTop && mWater->isVisible() && mCamera->getPolygonMode() == Ogre::PM_SOLID) { try { - Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); + CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); } catch(...) {} mIsUnderwater = true; } } -Ogre::Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) +Vector3 Water::getSceneNodeCoordinates(int gridX, int gridY) { - return Ogre::Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); + return Vector3(gridX * CELL_SIZE + (CELL_SIZE / 2), mTop, -gridY * CELL_SIZE - (CELL_SIZE / 2)); +} + +void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) +{ + mWater->setVisible(false); + + if (evt.source == mReflectionTarget) + { + mCamera->enableCustomNearClipPlane(mWaterPlane); + mCamera->enableReflection(Plane(Vector3::UNIT_Y, mWaterNode->_getDerivedPosition().y)); + } +} + +void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) +{ + mWater->setVisible(true); + + if (evt.source == mReflectionTarget) + { + mCamera->disableReflection(); + mCamera->disableCustomNearClipPlane(); + } } } // namespace diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 5a5d1cca09..6f3c4a6c39 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -7,7 +7,7 @@ namespace MWRender { /// Water rendering - class Water : Ogre::RenderTargetListener, Ogre::Camera::Listener + class Water : Ogre::RenderTargetListener { static const int CELL_SIZE = 8192; Ogre::Camera *mCamera; @@ -23,6 +23,13 @@ namespace MWRender { Ogre::Vector3 getSceneNodeCoordinates(int gridX, int gridY); + protected: + void preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); + void postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); + + Ogre::RenderTarget* mReflectionTarget; + Ogre::RenderTarget* mRefractionTarget; + public: Water (Ogre::Camera *camera, const ESM::Cell* cell); ~Water(); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index 6372a31c1d..ec105c8f37 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -41,3 +41,11 @@ fog end factor = 1.0 # Max. number of lights that affect the terrain. Setting to 1 will only reflect sunlight num lights = 8 + +[Water] + +reflection = false + +refraction = false + +rtt size = 256 From 8aea311797d2a441a4d3156e2b53a42c03e6fc68 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 15:13:47 +0200 Subject: [PATCH 343/488] added visibility flags for everything --- apps/openmw/mwrender/creatureanimation.cpp | 2 + apps/openmw/mwrender/localmap.cpp | 3 +- apps/openmw/mwrender/npcanimation.cpp | 2 + apps/openmw/mwrender/objects.cpp | 6 ++- apps/openmw/mwrender/renderconst.hpp | 44 ++++++++++++++++++++++ apps/openmw/mwrender/renderingmanager.cpp | 6 +-- apps/openmw/mwrender/sky.cpp | 6 ++- apps/openmw/mwrender/terrain.cpp | 2 + apps/openmw/mwrender/water.cpp | 33 +++++++++++++--- apps/openmw/mwrender/water.hpp | 9 +++++ files/settings-default.cfg | 13 +++++++ 11 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 apps/openmw/mwrender/renderconst.hpp diff --git a/apps/openmw/mwrender/creatureanimation.cpp b/apps/openmw/mwrender/creatureanimation.cpp index 4de6453aa6..4c2ce8399a 100644 --- a/apps/openmw/mwrender/creatureanimation.cpp +++ b/apps/openmw/mwrender/creatureanimation.cpp @@ -1,4 +1,5 @@ #include "creatureanimation.hpp" +#include "renderconst.hpp" #include "../mwworld/world.hpp" @@ -20,6 +21,7 @@ CreatureAnimation::CreatureAnimation(const MWWorld::Ptr& ptr, MWWorld::Environme std::string meshNumbered = mesh + getUniqueID(mesh) + ">|"; NifOgre::NIFLoader::load(meshNumbered); base = mRend.getScene()->createEntity(meshNumbered); + base->setVisibilityFlags(RV_Actors); std::string meshZero = mesh + "0000>|"; if((transformations = (NIFLoader::getSingletonPtr())->getAnim(meshZero))){ diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index e88557f204..cf9cfab4c2 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -4,6 +4,7 @@ #include "../mwworld/environment.hpp" #include "../mwworld/world.hpp" #include "../mwgui/window_manager.hpp" +#include "renderconst.hpp" #include #include @@ -211,7 +212,7 @@ void LocalMap::render(const float x, const float y, vp->setOverlaysEnabled(false); vp->setShadowsEnabled(false); vp->setBackgroundColour(ColourValue(0, 0, 0)); - //vp->setVisibilityMask( ... ); + vp->setVisibilityMask(RV_Map); rtt->update(); diff --git a/apps/openmw/mwrender/npcanimation.cpp b/apps/openmw/mwrender/npcanimation.cpp index c6fe023d69..3a4d9300d7 100644 --- a/apps/openmw/mwrender/npcanimation.cpp +++ b/apps/openmw/mwrender/npcanimation.cpp @@ -1,5 +1,6 @@ #include "npcanimation.hpp" #include "../mwworld/world.hpp" +#include "renderconst.hpp" using namespace Ogre; @@ -65,6 +66,7 @@ NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,O NifOgre::NIFLoader::load(smodel); base = mRend.getScene()->createEntity(smodel); + base->setVisibilityFlags(RV_Actors); base->setSkipAnimationStateUpdate(true); //Magical line of code, this makes the bones //stay in the same place when we skipanim, or open a gui window diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 39ab0b0897..bd39e1f5a5 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -4,6 +4,7 @@ #include #include +#include "renderconst.hpp" using namespace MWRender; @@ -116,7 +117,8 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) { insert->attachObject(ent); - ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "Viewing distance") : 0); /// \todo config value + ent->setRenderingDistance(small ? Settings::Manager::getInt("small object distance", "Viewing distance") : 0); + ent->setVisibilityFlags(mIsStatic ? (small ? RV_StaticsSmall : RV_Statics) : RV_Misc); } else { @@ -158,6 +160,8 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) sg->addEntity(ent,insert->_getDerivedPosition(),insert->_getDerivedOrientation(),insert->_getDerivedScale()); + sg->setVisibilityFlags(small ? RV_StaticsSmall : RV_Statics); + mRenderer.getScene()->destroyEntity(ent); } } diff --git a/apps/openmw/mwrender/renderconst.hpp b/apps/openmw/mwrender/renderconst.hpp new file mode 100644 index 0000000000..5e1c6c7bb1 --- /dev/null +++ b/apps/openmw/mwrender/renderconst.hpp @@ -0,0 +1,44 @@ +#ifndef GAME_RENDER_CONST_H +#define GAME_RENDER_CONST_H + +#include + +namespace MWRender +{ + +// Render queue groups +/// \todo + +// Visibility flags +enum VisibilityFlags +{ + // Terrain + RV_Terrain = 1, + + // Statics (e.g. trees, houses) + RV_Statics = 2, + + // Small statics + RV_StaticsSmall = 4, + + // Water + RV_Water = 8, + + // Actors (player, npcs, creatures) + RV_Actors = 16, + + // Misc objects (containers, dynamic objects) + RV_Misc = 32, + + RV_Sky = 64, + + RV_Map = RV_Terrain + RV_Statics + RV_StaticsSmall + RV_Misc + RV_Water, + + /// \todo markers (normally hidden) + + RV_All = 255 +}; + +} + +#endif diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 5dc41dc4b2..608ae441ba 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -112,8 +112,7 @@ void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store) void RenderingManager::removeWater () { if(mWater){ - delete mWater; - mWater = 0; + mWater->setActive(false); } } @@ -188,8 +187,7 @@ void RenderingManager::waterAdded (MWWorld::Ptr::CellStore *store){ mWater = new MWRender::Water(mRendering.getCamera(), store->cell); else mWater->changeCell(store->cell); - //else - + mWater->setActive(true); } else removeWater(); diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 781f7abd5d..8e774eb084 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -12,7 +12,7 @@ #include "../mwworld/environment.hpp" #include "../mwworld/world.hpp" -#include "occlusionquery.hpp" +#include "renderconst.hpp" using namespace MWRender; using namespace Ogre; @@ -92,6 +92,7 @@ void BillboardObject::init(const String& textureName, mBBSet->setRenderQueueGroup(RENDER_QUEUE_MAIN+2); mBBSet->setBillboardType(BBT_PERPENDICULAR_COMMON); mBBSet->setCommonDirection( -position.normalisedCopy() ); + mBBSet->setVisibilityFlags(RV_Sky); mNode = rootNode->createChildSceneNode(); mNode->setPosition(finalPosition); mNode->attachObject(mBBSet); @@ -376,6 +377,7 @@ void SkyManager::create() MeshPtr mesh = NifOgre::NIFLoader::load("meshes\\sky_night_01.nif"); Entity* night1_ent = mSceneMgr->createEntity("meshes\\sky_night_01.nif"); night1_ent->setRenderQueueGroup(RENDER_QUEUE_SKIES_EARLY+1); + night1_ent->setVisibilityFlags(RV_Sky); mAtmosphereNight = mRootNode->createChildSceneNode(); mAtmosphereNight->attachObject(night1_ent); @@ -449,6 +451,7 @@ void SkyManager::create() ModVertexAlpha(atmosphere_ent, 0); atmosphere_ent->setRenderQueueGroup(RENDER_QUEUE_SKIES_EARLY); + atmosphere_ent->setVisibilityFlags(RV_Sky); mAtmosphereDay = mRootNode->createChildSceneNode(); mAtmosphereDay->attachObject(atmosphere_ent); mAtmosphereMaterial = atmosphere_ent->getSubEntity(0)->getMaterial(); @@ -485,6 +488,7 @@ void SkyManager::create() // Clouds NifOgre::NIFLoader::load("meshes\\sky_clouds_01.nif"); Entity* clouds_ent = mSceneMgr->createEntity("meshes\\sky_clouds_01.nif"); + clouds_ent->setVisibilityFlags(RV_Sky); clouds_ent->setRenderQueueGroup(RENDER_QUEUE_SKIES_EARLY+5); SceneNode* clouds_node = mRootNode->createChildSceneNode(); clouds_node->attachObject(clouds_ent); diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index 8877215653..6c11f74859 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -6,6 +6,7 @@ #include "terrainmaterial.hpp" #include "terrain.hpp" +#include "renderconst.hpp" using namespace Ogre; @@ -159,6 +160,7 @@ namespace MWRender x * numTextures, y * numTextures, numTextures, indexes); + terrain->setVisibilityFlags(RV_Terrain); if ( land && land->landData->usingColours ) { diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index c19a487abc..0ef914210b 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -8,7 +8,8 @@ namespace MWRender Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), - mIsUnderwater(false) + mIsUnderwater(false), mReflectDistance(0), mVisibilityFlags(0), mOldCameraFarClip(0), + mReflectionTarget(0), mRefractionTarget(0), mActive(1) { try { @@ -25,9 +26,16 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : MeshManager::getSingleton().createPlane("water", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, CELL_SIZE*5, CELL_SIZE * 5, 10, 10, true, 1, 3,5, Vector3::UNIT_Z); mWater = mSceneManager->createEntity("water"); - + mWater->setVisibilityFlags(RV_Water); mWater->setMaterialName("Examples/Water0"); + mVisibilityFlags = RV_Terrain * Settings::Manager::getBool("reflect terrain", "Water") + + RV_Statics * Settings::Manager::getBool("reflect statics", "Water") + + RV_StaticsSmall * Settings::Manager::getBool("reflect small statics", "Water") + + RV_Actors * Settings::Manager::getBool("reflect actors", "Water") + + RV_Misc * Settings::Manager::getBool("reflect misc", "Water"); + mReflectDistance = Settings::Manager::getInt("reflect distance", "Water"); + mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); mWaterNode->setPosition(0, mTop, 0); @@ -43,7 +51,7 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : { if (i==0 && !Settings::Manager::getBool("reflection", "Water")) continue; if (i==1 && !Settings::Manager::getBool("refraction", "Water")) continue; - + TexturePtr tex = TextureManager::getSingleton().createManual(i == 0 ? "WaterReflection" : "WaterRefraction", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D, rttsize, rttsize, 0, PF_R8G8B8, TU_RENDERTARGET); @@ -52,7 +60,7 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : vp->setOverlaysEnabled(false); vp->setBackgroundColour(ColourValue(0.8f, 0.9f, 1.0f)); vp->setShadowsEnabled(false); - //vp->setVisibilityMask( ... ); + vp->setVisibilityMask( (i == 0) ? mVisibilityFlags : RV_All); rtt->addListener(this); rtt->setActive(true); @@ -61,6 +69,13 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : } } +void Water::setActive(bool active) +{ + mActive = active; + if (mReflectionTarget) mReflectionTarget->setActive(active); + if (mRefractionTarget) mRefractionTarget->setActive(active); + mWater->setVisible(active); +} Water::~Water() { @@ -91,11 +106,13 @@ void Water::setHeight(const float height) void Water::toggle() { - mWater->setVisible(!mWater->getVisible()); + if (mActive) + mWater->setVisible(!mWater->getVisible()); } void Water::checkUnderwater(float y) { + if (!mActive) return; if ((mIsUnderwater && y > mTop) || !mWater->isVisible() || mCamera->getPolygonMode() != Ogre::PM_SOLID) { try { @@ -122,6 +139,10 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt) { mWater->setVisible(false); + mOldCameraFarClip = mCamera->getFarClipDistance(); + if (mReflectDistance != 0) + mCamera->setFarClipDistance(mReflectDistance); + if (evt.source == mReflectionTarget) { mCamera->enableCustomNearClipPlane(mWaterPlane); @@ -133,6 +154,8 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) { mWater->setVisible(true); + mCamera->setFarClipDistance(mOldCameraFarClip); + if (evt.source == mReflectionTarget) { mCamera->disableReflection(); diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 6f3c4a6c39..44f765a94d 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -4,6 +4,8 @@ #include #include +#include "renderconst.hpp" + namespace MWRender { /// Water rendering @@ -19,6 +21,7 @@ namespace MWRender { Ogre::Entity *mWater; bool mIsUnderwater; + bool mActive; int mTop; Ogre::Vector3 getSceneNodeCoordinates(int gridX, int gridY); @@ -30,10 +33,16 @@ namespace MWRender { Ogre::RenderTarget* mReflectionTarget; Ogre::RenderTarget* mRefractionTarget; + int mVisibilityFlags; + int mReflectDistance; + int mOldCameraFarClip; + public: Water (Ogre::Camera *camera, const ESM::Cell* cell); ~Water(); + void setActive(bool active); + void toggle(); void checkUnderwater(float y); diff --git a/files/settings-default.cfg b/files/settings-default.cfg index ec105c8f37..d9c908883d 100644 --- a/files/settings-default.cfg +++ b/files/settings-default.cfg @@ -49,3 +49,16 @@ reflection = false refraction = false rtt size = 256 + +# 0 unlimited +reflect distance = 0 + +reflect terrain = true + +reflect statics = true + +reflect small statics = false + +reflect actors = true + +reflect misc = false From 51e33cc090d8bf3c0cd4d28506861509959b0942 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 15:34:13 +0200 Subject: [PATCH 344/488] fixed map of some interiors --- apps/openmw/mwrender/localmap.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index e88557f204..6a94551deb 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -127,12 +127,24 @@ void LocalMap::requestMap(MWWorld::Ptr::CellStore* cell, mAngle = angle.valueRadians(); mCameraRotNode->setOrientation(Quaternion(Math::Cos(angle/2.f), 0, Math::Sin(angle/2.f), 0)); - mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::NEAR_LEFT_BOTTOM))); - mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::FAR_LEFT_BOTTOM))); - mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::NEAR_RIGHT_BOTTOM))); - mBounds.merge(mCameraRotNode->convertWorldToLocalPosition(bounds.getCorner(AxisAlignedBox::FAR_RIGHT_BOTTOM))); - - mBounds.scale(Vector3(2,2,2)); + // rotate the cell and merge the rotated corners to the bounding box + Vector2 _center(bounds.getCenter().x, bounds.getCenter().z); + Vector3 _c1 = bounds.getCorner(AxisAlignedBox::NEAR_LEFT_BOTTOM); + Vector3 _c2 = bounds.getCorner(AxisAlignedBox::FAR_LEFT_BOTTOM); + Vector3 _c3 = bounds.getCorner(AxisAlignedBox::NEAR_RIGHT_BOTTOM); + Vector3 _c4 = bounds.getCorner(AxisAlignedBox::FAR_RIGHT_BOTTOM); + Vector2 c1(_c1.x, _c1.z); + Vector2 c2(_c2.x, _c2.z); + Vector2 c3(_c3.x, _c3.z); + Vector2 c4(_c4.x, _c4.z); + c1 = rotatePoint(c1, _center, mAngle); + c2 = rotatePoint(c2, _center, mAngle); + c3 = rotatePoint(c3, _center, mAngle); + c4 = rotatePoint(c4, _center, mAngle); + mBounds.merge(Vector3(c1.x, 0, c1.y)); + mBounds.merge(Vector3(c2.x, 0, c2.y)); + mBounds.merge(Vector3(c3.x, 0, c3.y)); + mBounds.merge(Vector3(c4.x, 0, c4.y)); Vector2 center(mBounds.getCenter().x, mBounds.getCenter().z); From b3a186e7290663a258ca1def65584ac9a5edfde8 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 3 Apr 2012 16:37:54 +0200 Subject: [PATCH 345/488] simple water without shaders that uses original MW textures --- apps/openmw/mwrender/localmap.cpp | 1 + apps/openmw/mwrender/water.cpp | 30 +++++- apps/openmw/mwrender/water.hpp | 2 + files/CMakeLists.txt | 4 +- files/water/Example_Fresnel.cg | 116 ---------------------- files/water/Example_FresnelPS.asm | 72 -------------- files/water/Examples-Water.material | 149 ---------------------------- files/water/Water02.jpg | Bin 185893 -> 232475 bytes files/water/water.material | 62 ++++++++++++ 9 files changed, 95 insertions(+), 341 deletions(-) delete mode 100644 files/water/Example_Fresnel.cg delete mode 100644 files/water/Example_FresnelPS.asm delete mode 100644 files/water/Examples-Water.material create mode 100644 files/water/water.material diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 40ac9b6cd2..cb3c0a204b 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -225,6 +225,7 @@ void LocalMap::render(const float x, const float y, vp->setShadowsEnabled(false); vp->setBackgroundColour(ColourValue(0, 0, 0)); vp->setVisibilityMask(RV_Map); + vp->setMaterialScheme("Map"); rtt->update(); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 0ef914210b..f1d8d7550f 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -27,7 +27,8 @@ Water::Water (Ogre::Camera *camera, const ESM::Cell* cell) : mWater = mSceneManager->createEntity("water"); mWater->setVisibilityFlags(RV_Water); - mWater->setMaterialName("Examples/Water0"); + + mWater->setMaterial(createMaterial()); mVisibilityFlags = RV_Terrain * Settings::Manager::getBool("reflect terrain", "Water") + RV_Statics * Settings::Manager::getBool("reflect statics", "Water") @@ -163,4 +164,31 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt) } } +Ogre::MaterialPtr Water::createMaterial() +{ + MaterialPtr mat = MaterialManager::getSingleton().create("Water", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + mat->removeAllTechniques(); + + // fallback technique without shaders + // also used for minimap (because it can't have reflecting water) + Technique* old = mat->createTechnique(); + old->setSchemeName("Map"); + Pass* oldpass = old->createPass(); + oldpass->setSceneBlending(SBT_TRANSPARENT_ALPHA); + oldpass->setDepthWriteEnabled(false); + oldpass->setDiffuse(0,0,0,1); + oldpass->setSelfIllumination(0.6, 0.7, 1.0); + oldpass->setAmbient(0,0,0); + TextureUnitState* oldtus = oldpass->createTextureUnitState(); + std::string textureNames[32]; + for (int i=0; i<32; ++i) + { + textureNames[i] = "textures\\water\\water" + StringConverter::toString(i, 2, '0') + ".dds"; + } + oldtus->setAnimatedTextureName(textureNames, 32, 2); + oldtus->setTextureScale(0.1, 0.1); + oldtus->setAlphaOperation(LBX_SOURCE1, LBS_MANUAL, LBS_CURRENT, 0.7); + return mat; +} + } // namespace diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 44f765a94d..c4d2189ff6 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -30,6 +30,8 @@ namespace MWRender { void preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); void postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt); + Ogre::MaterialPtr createMaterial(); + Ogre::RenderTarget* mReflectionTarget; Ogre::RenderTarget* mRefractionTarget; diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 203b406810..70458a14a6 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -1,13 +1,11 @@ project(resources) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/caustic_0.png "${OpenMW_BINARY_DIR}/resources/water/caustic_0.png" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Example_Fresnel.cg "${OpenMW_BINARY_DIR}/resources/water/Example_Fresnel.cg" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Example_FresnelPS.asm "${OpenMW_BINARY_DIR}/resources/water/Example_FresnelPS.asm" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassFP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassFP.cg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/GlassVP.cg "${OpenMW_BINARY_DIR}/resources/water/GlassVP.cg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/perlinvolume.dds "${OpenMW_BINARY_DIR}/resources/water/perlinvolume.dds" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Water02.jpg "${OpenMW_BINARY_DIR}/resources/water/Water02.jpg" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.compositor "${OpenMW_BINARY_DIR}/resources/water/water.compositor" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/waves2.dds "${OpenMW_BINARY_DIR}/resources/water/waves2.dds" COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/Examples-Water.material "${OpenMW_BINARY_DIR}/resources/water/Examples-Water.material" COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/water.material "${OpenMW_BINARY_DIR}/resources/water/water.material" COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/water/WaterNormal1.tga "${OpenMW_BINARY_DIR}/resources/water/WaterNormal1.tga" COPYONLY) diff --git a/files/water/Example_Fresnel.cg b/files/water/Example_Fresnel.cg deleted file mode 100644 index e091fc5878..0000000000 --- a/files/water/Example_Fresnel.cg +++ /dev/null @@ -1,116 +0,0 @@ -// Vertex program for fresnel reflections / refractions -void main_vp( - float4 pos : POSITION, - float4 normal : NORMAL, - float2 tex : TEXCOORD0, - - out float4 oPos : POSITION, - out float3 noiseCoord : TEXCOORD0, - out float4 projectionCoord : TEXCOORD1, - out float3 oEyeDir : TEXCOORD2, - out float3 oNormal : TEXCOORD3, - - uniform float4x4 worldViewProjMatrix, - uniform float3 eyePosition, // object space - uniform float timeVal, - uniform float scale, // the amount to scale the noise texture by - uniform float scroll, // the amount by which to scroll the noise - uniform float noise // the noise perturb as a factor of the time - ) -{ - oPos = mul(worldViewProjMatrix, pos); - // Projective texture coordinates, adjust for mapping - float4x4 scalemat = float4x4(0.5, 0, 0, 0.5, - 0,-0.5, 0, 0.5, - 0, 0, 0.5, 0.5, - 0, 0, 0, 1); - projectionCoord = mul(scalemat, oPos); - // Noise map coords - noiseCoord.xy = (tex + (timeVal * scroll)) * scale; - noiseCoord.z = noise * timeVal; - - oEyeDir = normalize(pos.xyz - eyePosition); - oNormal = normal.rgb; - -} - -// Fragment program for distorting a texture using a 3D noise texture -void main_fp( - float3 noiseCoord : TEXCOORD0, - float4 projectionCoord : TEXCOORD1, - float3 eyeDir : TEXCOORD2, - float3 normal : TEXCOORD3, - - out float4 col : COLOR, - - uniform float4 tintColour, - uniform float noiseScale, - uniform float fresnelBias, - uniform float fresnelScale, - uniform float fresnelPower, - uniform sampler2D waterTex : register(s0), - uniform sampler2D noiseMap : register(s1), - uniform sampler2D reflectMap : register(s2), - uniform sampler2D refractMap : register(s3) - ) -{ - // Do the tex projection manually so we can distort _after_ - float2 final = projectionCoord.xy / projectionCoord.w; - - // Noise - float3 noiseNormal = (tex2D(noiseMap, (noiseCoord.xy / 5)).rgb - 0.5).rbg * noiseScale; - final += noiseNormal.xz; - - // Fresnel - //normal = normalize(normal + noiseNormal.xz); - float fresnel = fresnelBias + fresnelScale * pow(1 + dot(eyeDir, normal), fresnelPower); - - // Reflection / refraction - float4 reflectionColour = tex2D(reflectMap, final); - float4 refractionColour = tex2D(refractMap, final) + tintColour; - - // Final colour - col = lerp(refractionColour, reflectionColour, fresnel) * tex2D(waterTex, noiseNormal) / 3 ; - - -} - - -// Old version to match ATI PS 1.3 implementation -void main_vp_old( - float4 pos : POSITION, - float4 normal : NORMAL, - float2 tex : TEXCOORD0, - - out float4 oPos : POSITION, - out float fresnel : COLOR, - out float3 noiseCoord : TEXCOORD0, - out float4 projectionCoord : TEXCOORD1, - - uniform float4x4 worldViewProjMatrix, - uniform float3 eyePosition, // object space - uniform float fresnelBias, - uniform float fresnelScale, - uniform float fresnelPower, - uniform float timeVal, - uniform float scale, // the amount to scale the noise texture by - uniform float scroll, // the amount by which to scroll the noise - uniform float noise // the noise perturb as a factor of the time - ) -{ - oPos = mul(worldViewProjMatrix, pos); - // Projective texture coordinates, adjust for mapping - float4x4 scalemat = float4x4(0.5, 0, 0, 0.5, - 0,-0.5, 0, 0.5, - 0, 0, 0.5, 0.5, - 0, 0, 0, 1); - projectionCoord = mul(scalemat, oPos); - // Noise map coords - noiseCoord.xy = (tex + (timeVal * scroll)) * scale; - noiseCoord.z = noise * timeVal; - - // calc fresnel factor (reflection coefficient) - float3 eyeDir = normalize(pos.xyz - eyePosition); - fresnel = fresnelBias + fresnelScale * pow(1 + dot(eyeDir, normal), fresnelPower); - -} diff --git a/files/water/Example_FresnelPS.asm b/files/water/Example_FresnelPS.asm deleted file mode 100644 index 2de078ef5a..0000000000 --- a/files/water/Example_FresnelPS.asm +++ /dev/null @@ -1,72 +0,0 @@ -ps.1.4 - // conversion from Cg generated ARB_fragment_program to ps.1.4 by NFZ - // command line args: -profile arbfp1 -entry main_fp - // program main_fp - // c0 : distortionRange - // c1 : tintColour - // testure 0 : noiseMap - // texture 1 : reflectMap - // texture 2 : refractMap - // v0.x : fresnel - // t0.xyz : noiseCoord - // t1.xyw : projectionCoord - -def c2, 2, 1, 0, 0 - - // Cg: distort.x = tex3D(noiseMap, noiseCoord).x; - // arbfp1: TEX R0.x, fragment.texcoord[0], texture[0], 3D; - // sample noise map using noiseCoord in TEX unit 0 - -texld r0, t0.xyz - - // get projected texture coordinates from TEX coord 1 - // will be used in phase 2 - -texcrd r1.xy, t1_dw.xyw -mov r1.z, c2.y - - // Cg: distort.y = tex3D(noiseMap, noiseCoord + yoffset).x; - // arbfp1: ADD R1.xyz, fragment.texcoord[0], c1; - // arbfp1: TEX R1.x, R1, texture[0], 3D; - // arbfp1: MOV R0.y, R1.x; - - // Cg: distort = (distort * 2 - 1) * distortionRange; - // arbfp1: MAD R0.xy, R0, c0.x, -c0.y; - // arbfp1: MUL R0.xy, R0, u0.x; - // (distort * 2 - 1) same as 2*(distort -.5) so use _bx2 - - - // Cg: final = projectionCoord.xy / projectionCoord.w; - // Cg: final += distort; - // arbfp1: RCP R0.w, fragment.texcoord[1].w; - // arbfp1: MAD R0.xy, fragment.texcoord[1], R0.w, R0; - // final = (distort * projectionCoord.w) + projectionCoord.xy - // for ps.1.4 have to re-arrange things a bit to perturb projected texture coordinates - -mad r0.xyz, r0_bx2, c0.x, r1 - -phase - - // do dependant texture reads - // Cg: reflectionColour = tex2D(reflectMap, final); - // arbfp1: TEX R0, R0, texture[1], 2D; - // sampe reflectMap using dependant read : texunit 1 - -texld r1, r0.xyz - - // Cg: refractionColour = tex2D(refractMap, final) + tintColour; - // arbfp1: TEX R1, R0, texture[2], 2D; - // sample refractMap : texunit 2 - -texld r2, r0.xyz - - // adding tintColour that is in global c1 - // arbfp1: ADD R1, R1, u1; - -add r2, r2, c1 - - // Cg: col = lerp(refractionColour, reflectionColour, fresnel); - // arbfp1: ADD R0, R0, -R1; - // arbfp1: MAD result.color, fragment.color.primary.x, R0, R1; - -lrp r0, v0.x, r1, r2 diff --git a/files/water/Examples-Water.material b/files/water/Examples-Water.material deleted file mode 100644 index 2b46d6e08d..0000000000 --- a/files/water/Examples-Water.material +++ /dev/null @@ -1,149 +0,0 @@ - -vertex_program Water/GlassVP cg -{ - source GlassVP.cg - entry_point glass_vp - profiles vs_1_1 arbvp1 - - default_params - { - param_named_auto worldViewProj worldviewproj_matrix - } -} - - -fragment_program Water/GlassFP cg -{ - source GlassFP.cg - entry_point main_ps - profiles ps_2_0 arbfp1 -} - -material Water/Compositor -{ - technique - { - pass - { - depth_check off - vertex_program_ref Water/GlassVP - { - param_named_auto timeVal time 0.25 - param_named scale float 0.1 - } - - fragment_program_ref Water/GlassFP - { - param_named tintColour float4 0 0.35 0.35 1 - } - - texture_unit RT - { - tex_coord_set 0 - tex_address_mode clamp - filtering linear linear linear - } - - texture_unit - { - texture WaterNormal1.tga 2d - tex_coord_set 1 - //tex_address_mode clamp - filtering linear linear linear - } - texture_unit - { - texture caustic_0.png 2d - tex_coord_set 2 - //tex_address_mode clamp - filtering linear linear linear - } - } - } -} -vertex_program Water/RefractReflectVP cg -{ - source Example_Fresnel.cg - entry_point main_vp - profiles vs_1_1 arbvp1 -} -vertex_program Water/RefractReflectVPold cg -{ - source Example_Fresnel.cg - entry_point main_vp_old - profiles vs_1_1 arbvp1 -} - -fragment_program Water/RefractReflectFP cg -{ - source Example_Fresnel.cg - entry_point main_fp - // sorry, ps_1_1 and fp20 can't do this - profiles ps_2_0 arbfp1 -} - -fragment_program Water/RefractReflectPS asm -{ - source Example_FresnelPS.asm - // sorry, only for ps_1_4 :) - syntax ps_1_4 - -} -material Examples/Water0 -{ - - technique - { - pass - { - // - - depth_write off - vertex_program_ref Water/RefractReflectVP - { - param_named_auto worldViewProjMatrix worldviewproj_matrix - param_named_auto eyePosition camera_position_object_space - param_named_auto timeVal time 0.15 - param_named scroll float 1 - param_named scale float 1 - param_named noise float 1 - // scroll and noisePos will need updating per frame - } - fragment_program_ref Water/RefractReflectFP - { - param_named fresnelBias float -0.1 - param_named fresnelScale float 0.8 - param_named fresnelPower float 20 - param_named tintColour float4 1 1 1 1 - param_named noiseScale float 0.05 - } - // Water - scene_blend alpha_blend - texture_unit - { - - // Water texture - texture Water02.jpg - // min / mag filtering, no mip - filtering linear linear none - alpha_op_ex source1 src_manual src_current 0.9 - - } - // Noise - texture_unit - { - alpha_op_ex source1 src_manual src_current 0.9 - // Perlin noise volume - texture waves2.dds - // min / mag filtering, no mip - filtering linear linear none - } - - - } - - - } - -} - diff --git a/files/water/Water02.jpg b/files/water/Water02.jpg index 3efda7b6a88488f34f83ef292e57466db09818d3..b91430244629dbfbfbc5a027e198b1b3061dd0ed 100644 GIT binary patch literal 232475 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

EB9sUG}8=kp4jK} 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⪕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 literal 0 HcmV?d00001 diff --git a/files/water/water1.cg b/files/water/water1.cg new file mode 100644 index 0000000000..f8fa18c1a6 --- /dev/null +++ b/files/water/water1.cg @@ -0,0 +1,39 @@ +void main( in float4 fresnel : COLOR0, + in float4 inTex0 : TEXCOORD0, + in float4 inTex1 : TEXCOORD1, + in float4 inTex2 : TEXCOORD2, + in float4 inTex3 : TEXCOORD3, + in float4 inTex4 : COLOR1, + in float4 inTex5 : BCOL1, + out float4 outCol : COLOR, + uniform float4 matrix, + uniform sampler2D offsetTexture : texunit0, + uniform sampler2D reflexTexture : texunit1, + uniform sampler2D refractTexture : texunit2, + uniform sampler2D depthTexture : texunit3) +{ + float4 norm = tex2D(offsetTexture, inTex0.xy); + float4 refr = tex2D(depthTexture, inTex3.xy); + + float4 norm2 = tex2D(offsetTexture, inTex0.xy/10.0f); + + float4 projCoord = inTex1 / inTex1.w; + projCoord = (projCoord + 1.0) * 0.5; + projCoord += norm * 0.02; + projCoord = clamp(projCoord, 0.001, 0.999); + + float4 reflexe = tex2D(reflexTexture, projCoord.xy); + float4 refrakce = tex2D(refractTexture, projCoord.xy); + + float4 odrazy = reflexe*(0.7+0.3*refr); + + reflexe = (float4(0,0.4,0.4,1.0) + reflexe*0.5); + + outCol = lerp(refrakce, reflexe, fresnel.r)-refr*0.08; + +//outCol = lerp(refrakce, reflexe, fresnel.r); + +// outCol = norm; + + outCol.a = 1; +} \ No newline at end of file From 2aad3a0bd8b5ec0875e781b3dfd8bc5f7b1e8402 Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Thu, 19 Jan 2012 23:29:07 -0500 Subject: [PATCH 003/488] Correct water levels --- apps/openmw/mwrender/renderingmanager.cpp | 15 ++++++++++++-- apps/openmw/mwrender/renderingmanager.hpp | 1 + apps/openmw/mwrender/water.cpp | 25 +++++++++++++++-------- apps/openmw/mwrender/water.hpp | 2 +- apps/openmw/mwworld/scene.cpp | 2 +- 5 files changed, 32 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 54c1b55efb..312b2c4106 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -57,7 +57,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const cameraPitchNode->attachObject(rend.getCamera()); mPlayer = new MWRender::Player (rend.getCamera(), playerNode); - mWater = new MWRender::Water(rend.getCamera()); + mWater = 0; //std::cout << "Three"; } @@ -84,6 +84,10 @@ MWRender::Player& RenderingManager::getPlayer(){ void RenderingManager::removeCell (MWWorld::Ptr::CellStore *store){ objects.removeCell(store); + if(mWater){ + delete mWater; + mWater = 0; + } } void RenderingManager::addObject (const MWWorld::Ptr& ptr){ const MWWorld::Class& class_ = @@ -114,6 +118,11 @@ bool RenderingManager::getPhysicsDebugRendering() const{ void RenderingManager::update (float duration){ +} +void RenderingManager::cellAdded (MWWorld::Ptr::CellStore *store){ + if(store->cell->data.flags & store->cell->HasWater) + mWater = new MWRender::Water(rend.getCamera(), store->cell->water); + } void RenderingManager::skyEnable () @@ -222,7 +231,9 @@ void RenderingManager::toggleLight() setAmbientMode(); } void RenderingManager::checkUnderwater(){ - mWater->checkUnderwater(); + if(mWater){ + mWater->checkUnderwater(); + } } diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 7130bdc2bb..f397d23e69 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -58,6 +58,7 @@ class RenderingManager: private RenderingInterface { virtual MWRender::Creatures& getCreatures(); virtual MWRender::Objects& getObjects(); virtual MWRender::Player& getPlayer(); + void cellAdded (MWWorld::Ptr::CellStore *store); void toggleLight(); bool toggleRenderMode(int mode); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 2e4882b637..86e9ad885f 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,23 +1,24 @@ #include "water.hpp" namespace MWRender { - Water::Water (Ogre::Camera *camera) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) { - std::cout << "1\n"; + Water::Water (Ogre::Camera *camera, int top) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) { try { Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) { } mIsUnderwater = false; - mCamera->addListener(this); - - mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, 0); - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 7000, 7000, 1, 1, true, 1, 3,5, Ogre::Vector3::UNIT_Z); - - mWater = mSceneManager->createEntity("Water", "water"); - mWater->setMaterialName("Examples/Water0"); + mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, top); + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 14000, 14000, 1, 1, true, 1, 3,5, Ogre::Vector3::UNIT_Z); + + + mWater = mSceneManager->createEntity("water"); + mWater->setMaterialName("Examples/Water0"); + + + mWaterNode = mSceneManager->getRootSceneNode()->createChildSceneNode(); mWaterNode->attachObject(mWater); @@ -26,6 +27,12 @@ namespace MWRender { Water::~Water() { + mCamera->removeListener(this); + + mWaterNode->detachObject(mWater); + mSceneManager->destroyEntity(mWater); + mSceneManager->destroySceneNode(mWaterNode); + Ogre::MeshManager::getSingleton().remove("water"); //Ogre::TextureManager::getSingleton().remove("refraction"); //Ogre::TextureManager::getSingleton().remove("reflection"); diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index 8e04ca3c81..b12a033579 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -33,7 +33,7 @@ namespace MWRender { public: - Water (Ogre::Camera *camera); + Water (Ogre::Camera *camera, int top); ~Water(); void checkUnderwater(); diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index 152e001302..fde4d6394a 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -95,7 +95,7 @@ namespace MWWorld mActiveCells.insert(cell); if(result.second){ insertCell(*cell, mEnvironment); - //mRendering.cellAdded (cell); + mRendering.cellAdded (cell); mRendering.configureAmbient(*cell); } From 84f45b19720c62d76ab932e18af69d5152ab4599 Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Fri, 20 Jan 2012 17:59:56 -0500 Subject: [PATCH 004/488] underwater view --- apps/openmw/engine.cpp | 4 +--- apps/openmw/mwrender/renderingmanager.cpp | 4 ++-- apps/openmw/mwrender/renderingmanager.hpp | 2 +- apps/openmw/mwrender/water.cpp | 18 +++++++++--------- apps/openmw/mwrender/water.hpp | 3 ++- apps/openmw/mwworld/world.cpp | 5 +++-- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 36d8013267..4535fd820b 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -310,9 +310,7 @@ void OMW::Engine::go() // This has to be added BEFORE MyGUI is initialized, as it needs // to find core.xml here. - std::cout << "Before the water\n"; - - std::cout << "After the water" << mResDir << "\n"; + //addResourcesDirectory(mResDir); addResourcesDirectory(mResDir / "mygui"); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 312b2c4106..b5fce4b447 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -230,9 +230,9 @@ void RenderingManager::toggleLight() setAmbientMode(); } -void RenderingManager::checkUnderwater(){ +void RenderingManager::checkUnderwater(float y){ if(mWater){ - mWater->checkUnderwater(); + mWater->checkUnderwater(y); } } diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index f397d23e69..99926e4005 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -71,7 +71,7 @@ class RenderingManager: private RenderingInterface { void moveObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& position); void scaleObject (const MWWorld::Ptr& ptr, const Ogre::Vector3& scale); void rotateObject (const MWWorld::Ptr& ptr, const::Ogre::Quaternion& orientation); - void checkUnderwater(); + void checkUnderwater(float y); /// \param store Cell the object was in previously (\a ptr has already been updated to the new cell). void moveObjectToCell (const MWWorld::Ptr& ptr, const Ogre::Vector3& position, MWWorld::Ptr::CellStore *store); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 86e9ad885f..2ab2fee385 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,7 +1,7 @@ #include "water.hpp" namespace MWRender { - Water::Water (Ogre::Camera *camera, int top) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()) { + Water::Water (Ogre::Camera *camera, int top) : mCamera (camera), mViewport (camera->getViewport()), mSceneManager (camera->getSceneManager()), mTop(top) { try { Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "Water", -1); Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); @@ -10,11 +10,13 @@ namespace MWRender { mIsUnderwater = false; mCamera->addListener(this); - mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, top); - Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 14000, 14000, 1, 1, true, 1, 3,5, Ogre::Vector3::UNIT_Z); + mWaterPlane = Ogre::Plane(Ogre::Vector3::UNIT_Y, mTop); + + Ogre::MeshManager::getSingleton().createPlane("water", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mWaterPlane, 14000, 14000, 10, 10, true, 1, 3,5, Ogre::Vector3::UNIT_Z); mWater = mSceneManager->createEntity("water"); + mWater->setMaterialName("Examples/Water0"); @@ -58,24 +60,22 @@ namespace MWRender { } } - void Water::checkUnderwater() { - Ogre::Vector3 pos = mCamera->getPosition(); - if (mIsUnderwater && pos.y > 0) { + void Water::checkUnderwater(float y) { + + if (mIsUnderwater && y > mTop) { try { Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", false); } catch(...) { } - std::cout << "Removing water compositor" << "\n"; mIsUnderwater = false; } - if (!mIsUnderwater && pos.y < 0) { + if (!mIsUnderwater && y < mTop) { try { Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "Water", true); } catch(...) { } mIsUnderwater = true; - std::cout << "Adding water compositor" << "\n"; } } diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index b12a033579..73057cc340 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -21,6 +21,7 @@ namespace MWRender { Ogre::Vector3 mOldCameraPos; bool mIsUnderwater; + int mTop; @@ -36,7 +37,7 @@ namespace MWRender { Water (Ogre::Camera *camera, int top); ~Water(); - void checkUnderwater(); + void checkUnderwater(float y); }; diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index b32f0203f1..d290e093b1 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -522,10 +522,11 @@ namespace MWWorld ptr.getRefData().getPosition().pos[0] = x; ptr.getRefData().getPosition().pos[1] = y; ptr.getRefData().getPosition().pos[2] = z; - if (ptr==mPlayer->getPlayer()) { - mRendering.checkUnderwater(); + //std::cout << "Current pos" << ptr.getRefData().getPosition().pos[1]; + + mRendering.checkUnderwater( ptr.getRefData().getPosition().pos[2]); Ptr::CellStore *currentCell = mWorldScene->getCurrentCell(); if (currentCell) { From bf09762b6a467f3d6d8416c554580784d0814911 Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Fri, 20 Jan 2012 19:50:42 -0500 Subject: [PATCH 005/488] Ground showing up --- files/water/Examples-Water.material | 9 +++------ files/water/WaterNormal1.tga | Bin 0 -> 196652 bytes 2 files changed, 3 insertions(+), 6 deletions(-) create mode 100644 files/water/WaterNormal1.tga diff --git a/files/water/Examples-Water.material b/files/water/Examples-Water.material index 285cb22ce8..c09447aa14 100644 --- a/files/water/Examples-Water.material +++ b/files/water/Examples-Water.material @@ -32,7 +32,6 @@ material Water/Compositor pass { depth_check off - vertex_program_ref Water/GlassVP { param_named_auto timeVal time 0.25 @@ -105,7 +104,7 @@ material Examples/Water0 { // - + depth_write off vertex_program_ref Water/RefractReflectVP { param_named_auto worldViewProjMatrix worldviewproj_matrix @@ -133,15 +132,13 @@ material Examples/Water0 texture Water02.jpg // min / mag filtering, no mip filtering linear linear none - colour_op_ex source1 src_manual src_current 0 1 0 - alpha_op_ex source1 src_manual src_current 0.1 + alpha_op_ex source1 src_manual src_current 0.9 } // Noise texture_unit { - colour_op_ex source1 src_manual src_current 0 1 0 - alpha_op_ex source1 src_manual src_current 0.1 + alpha_op_ex source1 src_manual src_current 0.9 // Perlin noise volume texture waves2.dds // min / mag filtering, no mip diff --git a/files/water/WaterNormal1.tga b/files/water/WaterNormal1.tga new file mode 100644 index 0000000000000000000000000000000000000000..a9ca11b7ed0a44ddbd9d1b5cd8d699ade928c4a6 GIT binary patch literal 196652 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

81>ux8Le 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%0A6(3I1}X|rJSETHjnkRvC9 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

Xa!{ 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�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

VCCuT@vy^bOrHoo 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�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%0AFcY8R#5}YS11&&_1G`o<7j}lxg6_prD1+ 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