From 8971db8962c0e70a430a5a696ed31dcdc46ecc4a Mon Sep 17 00:00:00 2001 From: cc9cii Date: Sat, 17 May 2014 23:53:33 +1000 Subject: [PATCH 1/4] SceneWidget windowHandle fix for Windows. --- apps/opencs/view/render/scenewidget.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/opencs/view/render/scenewidget.cpp b/apps/opencs/view/render/scenewidget.cpp index 8a58b7d328..52e7afefd3 100644 --- a/apps/opencs/view/render/scenewidget.cpp +++ b/apps/opencs/view/render/scenewidget.cpp @@ -86,8 +86,11 @@ namespace CSVRender } std::stringstream windowHandle; +#ifdef WIN32 + windowHandle << Ogre::StringConverter::toString((unsigned long)(this->winId())); +#else windowHandle << this->winId(); - +#endif std::stringstream windowTitle; static int count=0; windowTitle << ++count; From a5f0fe7282d200a88f357b1bf9b2cca0743630a7 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 18 May 2014 20:07:41 +0200 Subject: [PATCH 2/4] incremented version number --- CMakeLists.txt | 2 +- readme.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c5c156dbd..541720f7e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/) message(STATUS "Configuring OpenMW...") set(OPENMW_VERSION_MAJOR 0) -set(OPENMW_VERSION_MINOR 29) +set(OPENMW_VERSION_MINOR 30) set(OPENMW_VERSION_RELEASE 0) set(OPENMW_VERSION_COMMITHASH "") diff --git a/readme.txt b/readme.txt index 4db9425b6d..92cb35f31f 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ OpenMW: A reimplementation of The Elder Scrolls III: Morrowind OpenMW is an attempt at recreating the engine for the popular role-playing game Morrowind by Bethesda Softworks. You need to own and install the original game for OpenMW to work. -Version: 0.29.0 +Version: 0.30.0 License: GPL (see GPL3.txt for more information) Website: http://www.openmw.org From fa14df62b7e863ba17ee7f82dd3363e0bba62b6f Mon Sep 17 00:00:00 2001 From: mrcheko Date: Sun, 18 May 2014 23:15:22 +0400 Subject: [PATCH 3/4] fix crash on disappeared target --- apps/openmw/mwmechanics/aisequence.cpp | 28 ++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwmechanics/aisequence.cpp b/apps/openmw/mwmechanics/aisequence.cpp index 9dc2380f85..6a5cf572a9 100644 --- a/apps/openmw/mwmechanics/aisequence.cpp +++ b/apps/openmw/mwmechanics/aisequence.cpp @@ -141,17 +141,33 @@ void AiSequence::execute (const MWWorld::Ptr& actor,float duration) { if ((*it)->getTypeId() != AiPackage::TypeIdCombat) break; - ESM::Position &targetPos = static_cast(*it)->getTarget().getRefData().getPosition(); + MWWorld::Ptr target = static_cast(*it)->getTarget(); - float distTo = (Ogre::Vector3(targetPos.pos) - vActorPos).length(); - if (distTo < nearestDist) + // target disappeared (e.g. summoned creatures) + if (target.isEmpty()) { - nearestDist = distTo; - itActualCombat = it; + mPackages.erase(it++); + } + else + { + ESM::Position &targetPos = target.getRefData().getPosition(); + + float distTo = (Ogre::Vector3(targetPos.pos) - vActorPos).length(); + if (distTo < nearestDist) + { + nearestDist = distTo; + itActualCombat = it; + } } } - if (mPackages.begin() != itActualCombat) + // all targets disappeared + if (nearestDist == std::numeric_limits::max()) + { + mDone = true; + return; + } + else if (mPackages.begin() != itActualCombat) { // move combat package with nearest target to the front mPackages.splice(mPackages.begin(), mPackages, itActualCombat); From 638df221a6f2ef7c1f1a1b727b43ab7dbc6d4655 Mon Sep 17 00:00:00 2001 From: mrcheko Date: Mon, 19 May 2014 23:29:35 +0400 Subject: [PATCH 4/4] memory leak fix --- apps/openmw/mwmechanics/aisequence.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/openmw/mwmechanics/aisequence.cpp b/apps/openmw/mwmechanics/aisequence.cpp index 6a5cf572a9..980a23a3ed 100644 --- a/apps/openmw/mwmechanics/aisequence.cpp +++ b/apps/openmw/mwmechanics/aisequence.cpp @@ -146,6 +146,7 @@ void AiSequence::execute (const MWWorld::Ptr& actor,float duration) // target disappeared (e.g. summoned creatures) if (target.isEmpty()) { + delete *it; mPackages.erase(it++); } else