forked from mirror/openmw-tes3mp
added option to override the activation distance
The command line option '--activate-dist <int>' can be used to override the in game activation distance.
This commit is contained in:
parent
b3932e3dea
commit
719663d86e
5 changed files with 28 additions and 4 deletions
|
@ -336,7 +336,8 @@ void OMW::Engine::go()
|
||||||
|
|
||||||
// Create the world
|
// Create the world
|
||||||
mEnvironment.setWorld (new MWWorld::World (*mOgre, mFileCollections, mMaster,
|
mEnvironment.setWorld (new MWWorld::World (*mOgre, mFileCollections, mMaster,
|
||||||
mResDir, mCfgMgr.getCachePath(), mNewGame, &encoder, mFallbackMap));
|
mResDir, mCfgMgr.getCachePath(), mNewGame, &encoder, mFallbackMap,
|
||||||
|
mActivationDistanceOverride));
|
||||||
|
|
||||||
//Load translation data
|
//Load translation data
|
||||||
mTranslationDataStorage.setEncoder(&encoder);
|
mTranslationDataStorage.setEncoder(&encoder);
|
||||||
|
@ -509,3 +510,9 @@ void OMW::Engine::setStartupScript (const std::string& path)
|
||||||
{
|
{
|
||||||
mStartupScript = path;
|
mStartupScript = path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OMW::Engine::setActivationDistanceOverride (int distance)
|
||||||
|
{
|
||||||
|
mActivationDistanceOverride = distance;
|
||||||
|
}
|
||||||
|
|
|
@ -76,6 +76,7 @@ namespace OMW
|
||||||
std::map<std::string,std::string> mFallbackMap;
|
std::map<std::string,std::string> mFallbackMap;
|
||||||
bool mScriptConsoleMode;
|
bool mScriptConsoleMode;
|
||||||
std::string mStartupScript;
|
std::string mStartupScript;
|
||||||
|
int mActivationDistanceOverride;
|
||||||
|
|
||||||
Compiler::Extensions mExtensions;
|
Compiler::Extensions mExtensions;
|
||||||
Compiler::Context *mScriptContext;
|
Compiler::Context *mScriptContext;
|
||||||
|
@ -167,6 +168,9 @@ namespace OMW
|
||||||
/// Set path for a script that is run on startup in the console.
|
/// Set path for a script that is run on startup in the console.
|
||||||
void setStartupScript (const std::string& path);
|
void setStartupScript (const std::string& path);
|
||||||
|
|
||||||
|
/// Override the game setting specified activation distance.
|
||||||
|
void setActivationDistanceOverride (int distance);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Files::ConfigurationManager& mCfgMgr;
|
Files::ConfigurationManager& mCfgMgr;
|
||||||
};
|
};
|
||||||
|
|
|
@ -149,6 +149,8 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat
|
||||||
("fallback", bpo::value<FallbackMap>()->default_value(FallbackMap(), "")
|
("fallback", bpo::value<FallbackMap>()->default_value(FallbackMap(), "")
|
||||||
->multitoken()->composing(), "fallback values")
|
->multitoken()->composing(), "fallback values")
|
||||||
|
|
||||||
|
("activate-dist", bpo::value <int> ()->default_value (-1), "activation distance override");
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
bpo::parsed_options valid_opts = bpo::command_line_parser(argc, argv)
|
bpo::parsed_options valid_opts = bpo::command_line_parser(argc, argv)
|
||||||
|
@ -236,6 +238,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat
|
||||||
engine.setFallbackValues(variables["fallback"].as<FallbackMap>().mMap);
|
engine.setFallbackValues(variables["fallback"].as<FallbackMap>().mMap);
|
||||||
engine.setScriptConsoleMode (variables["script-console"].as<bool>());
|
engine.setScriptConsoleMode (variables["script-console"].as<bool>());
|
||||||
engine.setStartupScript (variables["script-run"].as<std::string>());
|
engine.setStartupScript (variables["script-run"].as<std::string>());
|
||||||
|
engine.setActivationDistanceOverride (variables["activate-dist"].as<int>());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -170,10 +170,10 @@ namespace MWWorld
|
||||||
World::World (OEngine::Render::OgreRenderer& renderer,
|
World::World (OEngine::Render::OgreRenderer& renderer,
|
||||||
const Files::Collections& fileCollections,
|
const Files::Collections& fileCollections,
|
||||||
const std::string& master, const boost::filesystem::path& resDir, const boost::filesystem::path& cacheDir, bool newGame,
|
const std::string& master, const boost::filesystem::path& resDir, const boost::filesystem::path& cacheDir, bool newGame,
|
||||||
ToUTF8::Utf8Encoder* encoder, std::map<std::string,std::string> fallbackMap)
|
ToUTF8::Utf8Encoder* encoder, std::map<std::string,std::string> fallbackMap, int mActivationDistanceOverride)
|
||||||
: mPlayer (0), mLocalScripts (mStore), mGlobalVariables (0),
|
: mPlayer (0), mLocalScripts (mStore), mGlobalVariables (0),
|
||||||
mSky (true), mCells (mStore, mEsm),
|
mSky (true), mCells (mStore, mEsm),
|
||||||
mNumFacing(0)
|
mNumFacing(0), mActivationDistanceOverride (mActivationDistanceOverride)
|
||||||
{
|
{
|
||||||
mPhysics = new PhysicsSystem(renderer);
|
mPhysics = new PhysicsSystem(renderer);
|
||||||
mPhysEngine = mPhysics->getEngine();
|
mPhysEngine = mPhysics->getEngine();
|
||||||
|
@ -575,16 +575,25 @@ namespace MWWorld
|
||||||
|
|
||||||
float World::getMaxActivationDistance ()
|
float World::getMaxActivationDistance ()
|
||||||
{
|
{
|
||||||
|
if (mActivationDistanceOverride >= 0)
|
||||||
|
return mActivationDistanceOverride;
|
||||||
|
|
||||||
return (std::max) (getNpcActivationDistance (), getObjectActivationDistance ());
|
return (std::max) (getNpcActivationDistance (), getObjectActivationDistance ());
|
||||||
}
|
}
|
||||||
|
|
||||||
float World::getNpcActivationDistance ()
|
float World::getNpcActivationDistance ()
|
||||||
{
|
{
|
||||||
|
if (mActivationDistanceOverride >= 0)
|
||||||
|
return mActivationDistanceOverride;
|
||||||
|
|
||||||
return getStore().get<ESM::GameSetting>().find ("iMaxActivateDist")->getInt()*5/4;
|
return getStore().get<ESM::GameSetting>().find ("iMaxActivateDist")->getInt()*5/4;
|
||||||
}
|
}
|
||||||
|
|
||||||
float World::getObjectActivationDistance ()
|
float World::getObjectActivationDistance ()
|
||||||
{
|
{
|
||||||
|
if (mActivationDistanceOverride >= 0)
|
||||||
|
return mActivationDistanceOverride;
|
||||||
|
|
||||||
return getStore().get<ESM::GameSetting>().find ("iMaxActivateDist")->getInt();
|
return getStore().get<ESM::GameSetting>().find ("iMaxActivateDist")->getInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,7 @@ namespace MWWorld
|
||||||
|
|
||||||
Ptr getPtrViaHandle (const std::string& handle, Ptr::CellStore& cellStore);
|
Ptr getPtrViaHandle (const std::string& handle, Ptr::CellStore& cellStore);
|
||||||
|
|
||||||
|
int mActivationDistanceOverride;
|
||||||
std::string mFacedHandle;
|
std::string mFacedHandle;
|
||||||
float mFacedDistance;
|
float mFacedDistance;
|
||||||
Ptr mFaced1;
|
Ptr mFaced1;
|
||||||
|
@ -109,7 +110,7 @@ namespace MWWorld
|
||||||
World (OEngine::Render::OgreRenderer& renderer,
|
World (OEngine::Render::OgreRenderer& renderer,
|
||||||
const Files::Collections& fileCollections,
|
const Files::Collections& fileCollections,
|
||||||
const std::string& master, const boost::filesystem::path& resDir, const boost::filesystem::path& cacheDir, bool newGame,
|
const std::string& master, const boost::filesystem::path& resDir, const boost::filesystem::path& cacheDir, bool newGame,
|
||||||
ToUTF8::Utf8Encoder* encoder, std::map<std::string,std::string> fallbackMap);
|
ToUTF8::Utf8Encoder* encoder, std::map<std::string,std::string> fallbackMap, int mActivationDistanceOverride);
|
||||||
|
|
||||||
virtual ~World();
|
virtual ~World();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue