Merge pull request #203 from OpenMW/master

Add OpenMW commits up to 21 Apr 2017, part 2
pull/176/merge
David Cernat 8 years ago committed by GitHub
commit a5484d237b

@ -50,7 +50,7 @@ namespace MWBase
virtual void goodbye() = 0;
virtual void say(const MWWorld::Ptr &actor, const std::string &topic) const = 0;
virtual void say(const MWWorld::Ptr &actor, const std::string &topic) = 0;
//calbacks for the GUI
virtual void keywordSelected (const std::string& keyword) = 0;

@ -183,7 +183,7 @@ namespace MWDialogue
MWScript::InterpreterContext interpreterContext(&mActor.getRefData().getLocals(),mActor);
win->addResponse (Interpreter::fixDefinesDialog(info->mResponse, interpreterContext));
executeScript (info->mResultScript);
executeScript (info->mResultScript, mActor);
mLastTopic = Misc::StringUtils::lowerCase(it->mId);
// update topics again to accommodate changes resulting from executeScript
@ -202,7 +202,7 @@ namespace MWDialogue
MWBase::Environment::get().getWindowManager()->showCompanionWindow(mActor);
}
bool DialogueManager::compile (const std::string& cmd,std::vector<Interpreter::Type_Code>& code)
bool DialogueManager::compile (const std::string& cmd, std::vector<Interpreter::Type_Code>& code, const MWWorld::Ptr& actor)
{
bool success = true;
@ -218,7 +218,7 @@ namespace MWDialogue
Compiler::Locals locals;
std::string actorScript = mActor.getClass().getScript (mActor);
std::string actorScript = actor.getClass().getScript (actor);
if (!actorScript.empty())
{
@ -258,14 +258,14 @@ namespace MWDialogue
return success;
}
void DialogueManager::executeScript (const std::string& script)
void DialogueManager::executeScript (const std::string& script, const MWWorld::Ptr& actor)
{
std::vector<Interpreter::Type_Code> code;
if(compile(script,code))
if(compile(script, code, actor))
{
try
{
MWScript::InterpreterContext interpreterContext(&mActor.getRefData().getLocals(),mActor);
MWScript::InterpreterContext interpreterContext(&actor.getRefData().getLocals(), actor);
Interpreter::Interpreter interpreter;
MWScript::installOpcodes (interpreter);
interpreter.run (&code[0], code.size(), interpreterContext);
@ -329,7 +329,7 @@ namespace MWDialogue
}
}
executeScript (info->mResultScript);
executeScript (info->mResultScript, mActor);
mLastTopic = topic;
}
@ -512,7 +512,7 @@ namespace MWDialogue
}
}
executeScript (info->mResultScript);
executeScript (info->mResultScript, mActor);
}
else
{
@ -630,13 +630,13 @@ namespace MWDialogue
win->addResponse (Interpreter::fixDefinesDialog(info->mResponse, interpreterContext),
gmsts.find ("sServiceRefusal")->getString());
executeScript (info->mResultScript);
executeScript (info->mResultScript, mActor);
return true;
}
return false;
}
void DialogueManager::say(const MWWorld::Ptr &actor, const std::string &topic) const
void DialogueManager::say(const MWWorld::Ptr &actor, const std::string &topic)
{
MWBase::SoundManager *sndMgr = MWBase::Environment::get().getSoundManager();
if(!sndMgr->sayDone(actor))
@ -675,6 +675,9 @@ namespace MWDialogue
End of tes3mp addition
*/
}
if (!info->mResultScript.empty())
executeScript(info->mResultScript, actor);
}
int DialogueManager::countSavedGameRecords() const

@ -51,8 +51,8 @@ namespace MWDialogue
void updateTopics();
void updateGlobals();
bool compile (const std::string& cmd,std::vector<Interpreter::Type_Code>& code);
void executeScript (const std::string& script);
bool compile (const std::string& cmd, std::vector<Interpreter::Type_Code>& code, const MWWorld::Ptr& actor);
void executeScript (const std::string& script, const MWWorld::Ptr& actor);
void executeTopic (const std::string& topic);
@ -74,7 +74,7 @@ namespace MWDialogue
virtual bool checkServiceRefused ();
virtual void say(const MWWorld::Ptr &actor, const std::string &topic) const;
virtual void say(const MWWorld::Ptr &actor, const std::string &topic);
//calbacks for the GUI
virtual void keywordSelected (const std::string& keyword);

@ -246,8 +246,8 @@ namespace MWGui
mReviewDialog->setBirthSign(player.getBirthSign());
{
MWWorld::Ptr player = MWMechanics::getPlayer();
const MWMechanics::CreatureStats& stats = player.getClass().getCreatureStats(player);
MWWorld::Ptr playerPtr = MWMechanics::getPlayer();
const MWMechanics::CreatureStats& stats = playerPtr.getClass().getCreatureStats(playerPtr);
mReviewDialog->setHealth ( stats.getHealth() );
mReviewDialog->setMagicka( stats.getMagicka() );

@ -450,6 +450,8 @@ namespace MWGui
void InventoryWindow::onPinToggled()
{
Settings::Manager::setBool("inventory pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setWeaponVisibility(!mPinned);
}

@ -646,7 +646,7 @@ namespace MWGui
, mGlobalMap(0)
, mGlobalMapImage(NULL)
, mGlobalMapOverlay(NULL)
, mGlobal(false)
, mGlobal(Settings::Manager::getBool("global", "Map"))
, mEventBoxGlobal(NULL)
, mEventBoxLocal(NULL)
, mGlobalMapRender(new MWRender::GlobalMap(localMapRender->getRoot(), workQueue))
@ -684,7 +684,7 @@ namespace MWGui
getWidget(mButton, "WorldButton");
mButton->eventMouseButtonClick += MyGUI::newDelegate(this, &MapWindow::onWorldButtonClicked);
mButton->setCaptionWithReplacing("#{sWorld}");
mButton->setCaptionWithReplacing( mGlobal ? "#{sLocal}" : "#{sWorld}");
getWidget(mEventBoxGlobal, "EventBoxGlobal");
mEventBoxGlobal->eventMouseDrag += MyGUI::newDelegate(this, &MapWindow::onMouseDrag);
@ -697,6 +697,9 @@ namespace MWGui
mEventBoxLocal->eventMouseButtonDoubleClick += MyGUI::newDelegate(this, &MapWindow::onMapDoubleClicked);
LocalMapBase::init(mLocalMap, mPlayerArrowLocal, Settings::Manager::getInt("local map widget size", "Map"), Settings::Manager::getInt("local map cell distance", "Map"));
mGlobalMap->setVisible(mGlobal);
mLocalMap->setVisible(!mGlobal);
}
void MapWindow::onNoteEditOk()
@ -794,7 +797,7 @@ namespace MWGui
void MapWindow::setVisible(bool visible)
{
WindowBase::setVisible(visible);
mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->isGuiMode());
mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_None);
}
void MapWindow::renderGlobalMap()
@ -935,6 +938,8 @@ namespace MWGui
mGlobalMap->setVisible(mGlobal);
mLocalMap->setVisible(!mGlobal);
Settings::Manager::setBool("global", "Map", mGlobal);
mButton->setCaptionWithReplacing( mGlobal ? "#{sLocal}" :
"#{sWorld}");
@ -944,6 +949,8 @@ namespace MWGui
void MapWindow::onPinToggled()
{
Settings::Manager::setBool("map pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setMinimapVisibility(!mPinned);
}

@ -7,6 +7,7 @@
#include <MyGUI_ImageBox.h>
#include <MyGUI_ListBox.h>
#include <MyGUI_InputManager.h>
#include <MyGUI_LanguageManager.h>
#include <osgDB/ReadFile>
#include <osg/Texture2D>
@ -168,9 +169,9 @@ namespace MWGui
className = "?"; // From an older savegame format that did not support custom classes properly.
}
title << " (Level " << it->getSignature().mPlayerLevel << " " << className << ")";
title << " (#{sLevel} " << it->getSignature().mPlayerLevel << " " << MyGUI::TextIterator::toTagsString(className) << ")";
mCharacterSelection->addItem (title.str());
mCharacterSelection->addItem (MyGUI::LanguageManager::getInstance().replaceTags(title.str()));
if (mCurrentCharacter == &*it ||
(!mCurrentCharacter && !mSaving && directory==Misc::StringUtils::lowerCase (

@ -4,6 +4,8 @@
#include <MyGUI_InputManager.h>
#include <components/settings/settings.hpp>
#include "../mwbase/windowmanager.hpp"
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
@ -51,6 +53,8 @@ namespace MWGui
void SpellWindow::onPinToggled()
{
Settings::Manager::setBool("spells pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setSpellVisibility(!mPinned);
}

@ -6,6 +6,8 @@
#include <MyGUI_ImageBox.h>
#include <MyGUI_Gui.h>
#include <components/settings/settings.hpp>
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
#include "../mwbase/windowmanager.hpp"
@ -672,6 +674,8 @@ namespace MWGui
void StatsWindow::onPinToggled()
{
Settings::Manager::setBool("stats pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setHMSVisibility(!mPinned);
}

@ -372,6 +372,8 @@ namespace MWGui
mPlayerSkillValues.insert(std::make_pair(ESM::Skill::sSkillIds[i], MWMechanics::SkillValue()));
}
updatePinnedWindows();
// Set up visibility
updateVisible();
@ -549,14 +551,14 @@ namespace MWGui
setSpellVisibility((mAllowed & GW_Magic) && (!mSpellWindow->pinned() || (mForceHidden & GW_Magic)));
setHMSVisibility((mAllowed & GW_Stats) && (!mStatsWindow->pinned() || (mForceHidden & GW_Stats)));
// If in game mode, show only the pinned windows
if (gameMode)
// If in game mode (or interactive messagebox), show only the pinned windows
if (mGuiModes.empty())
{
mInventoryWindow->setGuiMode(GM_None);
mMap->setVisible(mMap->pinned() && !(mForceHidden & GW_Map));
mStatsWindow->setVisible(mStatsWindow->pinned() && !(mForceHidden & GW_Stats));
mInventoryWindow->setVisible(mInventoryWindow->pinned() && !(mForceHidden & GW_Inventory));
mSpellWindow->setVisible(mSpellWindow->pinned() && !(mForceHidden & GW_Magic));
mMap->setVisible(mMap->pinned() && !(mForceHidden & GW_Map) && (mAllowed & GW_Map));
mStatsWindow->setVisible(mStatsWindow->pinned() && !(mForceHidden & GW_Stats) && (mAllowed & GW_Stats));
mInventoryWindow->setVisible(mInventoryWindow->pinned() && !(mForceHidden & GW_Inventory) && (mAllowed & GW_Inventory));
mSpellWindow->setVisible(mSpellWindow->pinned() && !(mForceHidden & GW_Magic) && (mAllowed & GW_Magic));
return;
}
@ -1857,6 +1859,17 @@ namespace MWGui
mVideoWidget->stop();
}
void WindowManager::updatePinnedWindows()
{
mInventoryWindow->setPinned(Settings::Manager::getBool("inventory pin", "Windows"));
mMap->setPinned(Settings::Manager::getBool("map pin", "Windows"));
mSpellWindow->setPinned(Settings::Manager::getBool("spells pin", "Windows"));
mStatsWindow->setPinned(Settings::Manager::getBool("stats pin", "Windows"));
}
void WindowManager::pinWindow(GuiWindow window)
{
switch (window)

@ -539,6 +539,8 @@ namespace MWGui
void createTextures();
void createCursors();
void setMenuTransparency(float value);
void updatePinnedWindows();
};
}

@ -93,7 +93,7 @@ class CheckActorCommanded : public MWMechanics::EffectSourceVisitor
MWWorld::Ptr mActor;
public:
bool mCommanded;
CheckActorCommanded(MWWorld::Ptr actor)
CheckActorCommanded(const MWWorld::Ptr& actor)
: mActor(actor)
, mCommanded(false){}
@ -129,9 +129,7 @@ void adjustCommandedActor (const MWWorld::Ptr& actor)
}
if (!check.mCommanded && hasCommandPackage)
{
stats.getAiSequence().erase(it);
}
}
void getRestorationPerHourOfSleep (const MWWorld::Ptr& ptr, float& health, float& magicka)
@ -166,7 +164,7 @@ namespace MWMechanics
MWWorld::Ptr mActor;
bool mTrapped;
public:
SoulTrap(MWWorld::Ptr trappedCreature)
SoulTrap(const MWWorld::Ptr& trappedCreature)
: mCreature(trappedCreature)
, mTrapped(false)
{
@ -737,16 +735,8 @@ namespace MWMechanics
// any value of calm > 0 will stop the actor from fighting
if ((effects.get(ESM::MagicEffect::CalmHumanoid).getMagnitude() > 0 && ptr.getClass().isNpc())
|| (effects.get(ESM::MagicEffect::CalmCreature).getMagnitude() > 0 && !ptr.getClass().isNpc()))
{
for (std::list<AiPackage*>::const_iterator it = creatureStats.getAiSequence().begin(); it != creatureStats.getAiSequence().end(); )
{
if ((*it)->getTypeId() == AiPackage::TypeIdCombat)
it = creatureStats.getAiSequence().erase(it);
else
++it;
}
}
|| (effects.get(ESM::MagicEffect::CalmCreature).getMagnitude() > 0 && !ptr.getClass().isNpc()))
creatureStats.getAiSequence().stopCombat();
// Update bound effects
// Note: in vanilla MW multiple bound items of the same type can be created by different spells.
@ -835,7 +825,7 @@ namespace MWMechanics
NpcStats &stats = ptr.getClass().getNpcStats(ptr);
// When npc stats are just initialized, mTimeToStartDrowning == -1 and we should get value from GMST
static const int fHoldBreathTime = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fHoldBreathTime")->getFloat();
static const float fHoldBreathTime = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fHoldBreathTime")->getFloat();
if (stats.getTimeToStartDrowning() == -1.f)
stats.setTimeToStartDrowning(fHoldBreathTime);
@ -875,10 +865,7 @@ namespace MWMechanics
}
}
else
{
static const float fHoldBreathTime = world->getStore().get<ESM::GameSetting>().find("fHoldBreathTime")->getFloat();
stats.setTimeToStartDrowning(fHoldBreathTime);
}
}
void Actors::updateEquippedLight (const MWWorld::Ptr& ptr, float duration)

@ -96,16 +96,16 @@ std::list<AiPackage*>::const_iterator AiSequence::end() const
return mPackages.end();
}
std::list<AiPackage*>::const_iterator AiSequence::erase(std::list<AiPackage*>::const_iterator package)
void AiSequence::erase(std::list<AiPackage*>::const_iterator package)
{
// Not sure if manually terminated packages should trigger mDone, probably not?
for(std::list<AiPackage*>::iterator it = mPackages.begin(); it != mPackages.end(); ++it)
{
if (package == it)
{
AiPackage* packagePtr = *it;
delete packagePtr;
return mPackages.erase(it);
delete *it;
mPackages.erase(it);
return;
}
}
throw std::runtime_error("can't find package to erase");

@ -64,7 +64,7 @@ namespace MWMechanics
std::list<AiPackage*>::const_iterator begin() const;
std::list<AiPackage*>::const_iterator end() const;
std::list<AiPackage*>::const_iterator erase (std::list<AiPackage*>::const_iterator package);
void erase (std::list<AiPackage*>::const_iterator package);
/// Returns currently executing AiPackage type
/** \see enum AiPackage::TypeId **/

@ -893,7 +893,7 @@ namespace MWMechanics
storage.mAllowedNodes.push_back(PathFinder::MakePathgridPoint(vectorStart + delta));
}
void AiWander::SetCurrentNodeToClosestAllowedNode(osg::Vec3f npcPos, AiWanderStorage& storage)
void AiWander::SetCurrentNodeToClosestAllowedNode(const osg::Vec3f& npcPos, AiWanderStorage& storage)
{
float distanceToClosestNode = std::numeric_limits<float>::max();
unsigned int index = 0;

@ -122,7 +122,7 @@ namespace MWMechanics
/// convert point from local (i.e. cell) to world coordinates
void ToWorldCoordinates(ESM::Pathgrid::Point& point, const ESM::Cell * cell);
void SetCurrentNodeToClosestAllowedNode(osg::Vec3f npcPos, AiWanderStorage& storage);
void SetCurrentNodeToClosestAllowedNode(const osg::Vec3f& npcPos, AiWanderStorage& storage);
void AddNonPathGridAllowedPoints(osg::Vec3f npcPos, const ESM::Pathgrid * pathGrid, int pointIndex, AiWanderStorage& storage);

@ -2347,7 +2347,7 @@ void CharacterController::setAttackingOrSpell(bool attackingOrSpell)
mAttackingOrSpell = attackingOrSpell;
}
void CharacterController::setAIAttackType(std::string attackType)
void CharacterController::setAIAttackType(const std::string& attackType)
{
mAttackType = attackType;
}

@ -268,7 +268,7 @@ public:
bool isSneaking() const;
void setAttackingOrSpell(bool attackingOrSpell);
void setAIAttackType(std::string attackType); // set and used by AiCombat
void setAIAttackType(const std::string& attackType);
static void setAttackTypeRandomly(std::string& attackType);
bool readyToPrepareAttack() const;

@ -21,7 +21,7 @@ namespace MWMechanics
, mSelfEnchanting(false)
{}
void Enchanting::setOldItem(MWWorld::Ptr oldItem)
void Enchanting::setOldItem(const MWWorld::Ptr& oldItem)
{
mOldItemPtr=oldItem;
if(!itemEmpty())
@ -39,7 +39,7 @@ namespace MWMechanics
mNewItemName=s;
}
void Enchanting::setEffect(ESM::EffectList effectList)
void Enchanting::setEffect(const ESM::EffectList& effectList)
{
mEffectList=effectList;
}
@ -49,7 +49,7 @@ namespace MWMechanics
return mCastStyle;
}
void Enchanting::setSoulGem(MWWorld::Ptr soulGem)
void Enchanting::setSoulGem(const MWWorld::Ptr& soulGem)
{
mSoulGemPtr=soulGem;
}
@ -269,7 +269,7 @@ namespace MWMechanics
mSelfEnchanting = selfEnchanting;
}
void Enchanting::setEnchanter(MWWorld::Ptr enchanter)
void Enchanting::setEnchanter(const MWWorld::Ptr& enchanter)
{
mEnchanter = enchanter;
}

@ -29,14 +29,14 @@ namespace MWMechanics
public:
Enchanting();
void setEnchanter(MWWorld::Ptr enchanter);
void setEnchanter(const MWWorld::Ptr& enchanter);
void setSelfEnchanting(bool selfEnchanting);
void setOldItem(MWWorld::Ptr oldItem);
void setOldItem(const MWWorld::Ptr& oldItem);
MWWorld::Ptr getOldItem() { return mOldItemPtr; }
MWWorld::Ptr getGem() { return mSoulGemPtr; }
void setNewItemName(const std::string& s);
void setEffect(ESM::EffectList effectList);
void setSoulGem(MWWorld::Ptr soulGem);
void setEffect(const ESM::EffectList& effectList);
void setSoulGem(const MWWorld::Ptr& soulGem);
bool create(); //Return true if created, false if failed.
void nextCastStyle(); //Set enchant type to next possible type (for mOldItemPtr object)
int getCastStyle() const;

@ -15,7 +15,7 @@ namespace
// Chooses a reachable end pathgrid point. start is assumed reachable.
std::pair<int, bool> getClosestReachablePoint(const ESM::Pathgrid* grid,
const MWWorld::CellStore *cell,
const osg::Vec3f pos, int start)
const osg::Vec3f& pos, int start)
{
assert(grid && !grid->mPoints.empty());

@ -794,7 +794,7 @@ namespace MWPhysics
btVector3 mContactPoint;
btScalar mLeastDistSqr;
DeepestNotMeContactTestResultCallback(const btCollisionObject* me, const std::vector<const btCollisionObject*> targets, const btVector3 &origin)
DeepestNotMeContactTestResultCallback(const btCollisionObject* me, const std::vector<const btCollisionObject*>& targets, const btVector3 &origin)
: mMe(me), mTargets(targets), mOrigin(origin), mObject(NULL), mContactPoint(0,0,0),
mLeastDistSqr(std::numeric_limits<float>::max())
{ }
@ -912,7 +912,7 @@ namespace MWPhysics
class ClosestNotMeRayResultCallback : public btCollisionWorld::ClosestRayResultCallback
{
public:
ClosestNotMeRayResultCallback(const btCollisionObject* me, const std::vector<const btCollisionObject*> targets, const btVector3& from, const btVector3& to)
ClosestNotMeRayResultCallback(const btCollisionObject* me, const std::vector<const btCollisionObject*>& targets, const btVector3& from, const btVector3& to)
: btCollisionWorld::ClosestRayResultCallback(from, to)
, mMe(me), mTargets(targets)
{
@ -938,7 +938,7 @@ namespace MWPhysics
const std::vector<const btCollisionObject*> mTargets;
};
PhysicsSystem::RayResult PhysicsSystem::castRay(const osg::Vec3f &from, const osg::Vec3f &to, MWWorld::ConstPtr ignore, std::vector<MWWorld::Ptr> targets, int mask, int group) const
PhysicsSystem::RayResult PhysicsSystem::castRay(const osg::Vec3f &from, const osg::Vec3f &to, const MWWorld::ConstPtr& ignore, std::vector<MWWorld::Ptr> targets, int mask, int group) const
{
btVector3 btFrom = toBullet(from);
btVector3 btTo = toBullet(to);

@ -114,7 +114,7 @@ namespace MWPhysics
};
/// @param me Optional, a Ptr to ignore in the list of results. targets are actors to filter for, ignoring all other actors.
RayResult castRay(const osg::Vec3f &from, const osg::Vec3f &to, MWWorld::ConstPtr ignore = MWWorld::ConstPtr(),
RayResult castRay(const osg::Vec3f &from, const osg::Vec3f &to, const MWWorld::ConstPtr& ignore = MWWorld::ConstPtr(),
std::vector<MWWorld::Ptr> targets = std::vector<MWWorld::Ptr>(),
int mask = CollisionType_World|CollisionType_HeightMap|CollisionType_Actor|CollisionType_Door, int group=0xff) const;

@ -282,7 +282,7 @@ namespace MWRender
class GlowUpdater : public SceneUtil::StateSetUpdater
{
public:
GlowUpdater(int texUnit, osg::Vec4f color, const std::vector<osg::ref_ptr<osg::Texture2D> >& textures,
GlowUpdater(int texUnit, const osg::Vec4f& color, const std::vector<osg::ref_ptr<osg::Texture2D> >& textures,
osg::Node* node, float duration, Resource::ResourceSystem* resourcesystem)
: mTexUnit(texUnit)
, mColor(color)
@ -383,7 +383,7 @@ namespace MWRender
return mDone;
}
void setColor(osg::Vec4f color)
void setColor(const osg::Vec4f& color)
{
mColor = color;
mColorChanged = true;
@ -1362,7 +1362,7 @@ namespace MWRender
useQuadratic, quadraticValue, quadraticRadiusMult, useLinear, linearRadiusMult, linearValue);
}
void Animation::addEffect (const std::string& model, int effectId, bool loop, const std::string& bonename, std::string texture)
void Animation::addEffect (const std::string& model, int effectId, bool loop, const std::string& bonename, const std::string& texture)
{
if (!mObjectRoot.get())
return;

@ -362,7 +362,7 @@ public:
* @param texture override the texture specified in the model's materials - if empty, do not override
* @note Will not add an effect twice.
*/
void addEffect (const std::string& model, int effectId, bool loop = false, const std::string& bonename = "", std::string texture = "");
void addEffect (const std::string& model, int effectId, bool loop = false, const std::string& bonename = "", const std::string& texture = "");
void removeEffect (int effectId);
void getLoopingEffects (std::vector<int>& out) const;

@ -105,7 +105,7 @@ namespace MWRender
};
CharacterPreview::CharacterPreview(osg::Group* parent, Resource::ResourceSystem* resourceSystem,
MWWorld::Ptr character, int sizeX, int sizeY, const osg::Vec3f& position, const osg::Vec3f& lookAt)
const MWWorld::Ptr& character, int sizeX, int sizeY, const osg::Vec3f& position, const osg::Vec3f& lookAt)
: mParent(parent)
, mResourceSystem(resourceSystem)
, mPosition(position)
@ -244,7 +244,7 @@ namespace MWRender
// --------------------------------------------------------------------------------------------------
InventoryPreview::InventoryPreview(osg::Group* parent, Resource::ResourceSystem* resourceSystem, MWWorld::Ptr character)
InventoryPreview::InventoryPreview(osg::Group* parent, Resource::ResourceSystem* resourceSystem, const MWWorld::Ptr& character)
: CharacterPreview(parent, resourceSystem, character, 512, 1024, osg::Vec3f(0, 700, 71), osg::Vec3f(0,0,71))
{
}

@ -28,7 +28,7 @@ namespace MWRender
class CharacterPreview
{
public:
CharacterPreview(osg::Group* parent, Resource::ResourceSystem* resourceSystem, MWWorld::Ptr character, int sizeX, int sizeY,
CharacterPreview(osg::Group* parent, Resource::ResourceSystem* resourceSystem, const MWWorld::Ptr& character, int sizeX, int sizeY,
const osg::Vec3f& position, const osg::Vec3f& lookAt);
virtual ~CharacterPreview();
@ -73,7 +73,7 @@ namespace MWRender
{
public:
InventoryPreview(osg::Group* parent, Resource::ResourceSystem* resourceSystem, MWWorld::Ptr character);
InventoryPreview(osg::Group* parent, Resource::ResourceSystem* resourceSystem, const MWWorld::Ptr& character);
void updatePtr(const MWWorld::Ptr& ptr);

@ -99,7 +99,7 @@ private:
private:
void resetBlinkTimer();
public:
HeadAnimationTime(MWWorld::Ptr reference);
HeadAnimationTime(const MWWorld::Ptr& reference);
void updatePtr(const MWWorld::Ptr& updated);
@ -128,7 +128,7 @@ public:
{
}
void setOffset(osg::Vec3f offset)
void setOffset(const osg::Vec3f& offset)
{
mOffset = offset;
}
@ -155,7 +155,7 @@ private:
// --------------------------------------------------------------------------------------------------------------
HeadAnimationTime::HeadAnimationTime(MWWorld::Ptr reference)
HeadAnimationTime::HeadAnimationTime(const MWWorld::Ptr& reference)
: mReference(reference), mTalkStart(0), mTalkStop(0), mBlinkStart(0), mBlinkStop(0), mEnabled(true), mValue(0)
{
resetBlinkTimer();

@ -37,7 +37,7 @@ class Animation;
class PtrHolder : public osg::Object
{
public:
PtrHolder(MWWorld::Ptr ptr)
PtrHolder(const MWWorld::Ptr& ptr)
: mPtr(ptr)
{
}

@ -14,7 +14,7 @@ namespace MWRender
class TextureOverrideVisitor : public osg::NodeVisitor
{
public:
TextureOverrideVisitor(std::string texture, Resource::ResourceSystem* resourcesystem)
TextureOverrideVisitor(const std::string& texture, Resource::ResourceSystem* resourcesystem)
: osg::NodeVisitor(TRAVERSE_ALL_CHILDREN)
, mTexture(texture)
, mResourcesystem(resourcesystem)

@ -49,6 +49,9 @@ namespace MWScript
{
MWWorld::Ptr ptr = R()(runtime);
if (!ptr.getRefData().isEnabled())
return;
std::string group = runtime.getStringLiteral (runtime[0].mInteger);
runtime.pop();
@ -91,6 +94,9 @@ namespace MWScript
{
MWWorld::Ptr ptr = R()(runtime);
if (!ptr.getRefData().isEnabled())
return;
std::string group = runtime.getStringLiteral (runtime[0].mInteger);
runtime.pop();

@ -142,7 +142,7 @@ namespace MWScript
InterpreterContext::InterpreterContext (
MWScript::Locals *locals, MWWorld::Ptr reference, const std::string& targetId)
MWScript::Locals *locals, const MWWorld::Ptr& reference, const std::string& targetId)
: mLocals (locals), mReference (reference), mTargetId (targetId)
{
// If we run on a reference (local script, dialogue script or console with object

@ -51,7 +51,7 @@ namespace MWScript
public:
InterpreterContext (MWScript::Locals *locals, MWWorld::Ptr reference,
InterpreterContext (MWScript::Locals *locals, const MWWorld::Ptr& reference,
const std::string& targetId = "");
///< The ownership of \a locals is not transferred. 0-pointer allowed.

@ -255,7 +255,7 @@ namespace MWWorld
return MWBase::Environment::get().getMechanicsManager()->getEnemiesNearby(getPlayer()).size() != 0;
}
void Player::markPosition(CellStore *markedCell, ESM::Position markedPosition)
void Player::markPosition(CellStore *markedCell, const ESM::Position& markedPosition)
{
mMarkedCell = markedCell;
mMarkedPosition = markedPosition;

@ -61,7 +61,7 @@ namespace MWWorld
void setWerewolfSkillsAttributes();
// For mark/recall magic effects
void markPosition (CellStore* markedCell, ESM::Position markedPosition);
void markPosition (CellStore* markedCell, const ESM::Position& markedPosition);
void getMarkedPosition (CellStore*& markedCell, ESM::Position& markedPosition) const;
/// Interiors can not always be mapped to a world position. However

@ -3087,7 +3087,7 @@ namespace MWWorld
struct AddDetectedReferenceVisitor
{
AddDetectedReferenceVisitor(std::vector<Ptr>& out, Ptr detector, World::DetectionType type, float squaredDist)
AddDetectedReferenceVisitor(std::vector<Ptr>& out, const Ptr& detector, World::DetectionType type, float squaredDist)
: mOut(out), mDetector(detector), mSquaredDist(squaredDist), mType(type)
{
}

@ -408,6 +408,11 @@ namespace Compiler
special = S_cmpEQ;
else if (c=='=')
special = S_cmpEQ;
else if (c == '>' || c == '<') // Treat => and =< as ==
{
special = S_cmpEQ;
mErrorHandler.warning (std::string("invalid operator =") + c + ", treating it as ==", mLoc);
}
else
{
special = S_cmpEQ;

@ -86,7 +86,7 @@ private:
// Prevent using writeHNT with strings. This already happened by accident and results in
// state being discarded without any error on writing or reading it. :(
// writeHNString and friends must be used instead.
void writeHNT(const std::string &name, std::string data)
void writeHNT(const std::string& name, const std::string& data)
{
}
void writeT(const std::string& data)

@ -218,7 +218,7 @@ UVController::UVController()
{
}
UVController::UVController(const Nif::NiUVData *data, std::set<int> textureUnits)
UVController::UVController(const Nif::NiUVData *data, const std::set<int>& textureUnits)
: mUTrans(data->mKeyList[0], 0.f)
, mVTrans(data->mKeyList[1], 0.f)
, mUScale(data->mKeyList[2], 1.f)
@ -381,14 +381,14 @@ void MaterialColorController::apply(osg::StateSet *stateset, osg::NodeVisitor *n
}
}
FlipController::FlipController(const Nif::NiFlipController *ctrl, std::vector<osg::ref_ptr<osg::Texture2D> > textures)
FlipController::FlipController(const Nif::NiFlipController *ctrl, const std::vector<osg::ref_ptr<osg::Texture2D> >& textures)
: mTexSlot(ctrl->mTexSlot)
, mDelta(ctrl->mDelta)
, mTextures(textures)
{
}
FlipController::FlipController(int texSlot, float delta, std::vector<osg::ref_ptr<osg::Texture2D> > textures)
FlipController::FlipController(int texSlot, float delta, const std::vector<osg::ref_ptr<osg::Texture2D> >& textures)
: mTexSlot(texSlot)
, mDelta(delta)
, mTextures(textures)

@ -223,7 +223,7 @@ namespace NifOsg
public:
UVController();
UVController(const UVController&,const osg::CopyOp&);
UVController(const Nif::NiUVData *data, std::set<int> textureUnits);
UVController(const Nif::NiUVData *data, const std::set<int>& textureUnits);
META_Object(NifOsg,UVController)
@ -297,8 +297,8 @@ namespace NifOsg
std::vector<osg::ref_ptr<osg::Texture2D> > mTextures;
public:
FlipController(const Nif::NiFlipController* ctrl, std::vector<osg::ref_ptr<osg::Texture2D> > textures);
FlipController(int texSlot, float delta, std::vector<osg::ref_ptr<osg::Texture2D> > textures);
FlipController(const Nif::NiFlipController* ctrl, const std::vector<osg::ref_ptr<osg::Texture2D> >& textures);
FlipController(int texSlot, float delta, const std::vector<osg::ref_ptr<osg::Texture2D> >& textures);
FlipController();
FlipController(const FlipController& copy, const osg::CopyOp& copyop);

@ -1,6 +1,17 @@
Map Settings
############
global
------
:Type: boolean
:Range: True/False
:Default: False
If this setting is true, a world map on a map window will be displayed, otherwise a local map will be displayed.
The default value is false. This setting can be toggled with the local/world map switch button on the map window.
global map cell size
--------------------

@ -18,6 +18,21 @@ Each window in the GUI mode remembers it's previous location when exiting the ga
.. note::
To scale the windows, making the widgets proportionally larger, see the scaling factor setting instead.
:Type: boolean
:Range: True/False
This section controls the state of pinnable windows: pinned or not. For example, to pin only the map window, the actual settings will be::
inventory pin = false
map pin = true
stats pin = false
spells pin = false
The pinnable window can be pinned/unpinned by clicking on a button in the right upper corner of the window.
.. note::
A world/local map switch button on the map window will be showed only in GUI mode.
stats
-----
@ -25,6 +40,7 @@ stats
y = 0.0
h = 0.375
w = 0.4275
pin = false
The stats window, displaying level, race, class, skills and stats. Activated by clicking on any of the three bars in the lower left corner of the HUD.
@ -35,6 +51,7 @@ spells
y = 0.5725
h = 0.375
w = 0.4275
pin = false
The spells window, displaying powers, spells, and magical items. Activated by clicking on the spells widget (third from left) in the bottom left corner of the HUD.
@ -45,39 +62,10 @@ map
y = 0.0
h = 0.375
w = 0.5725
pin = false
The local and world map window. Activated by clicking on the map widget in the bottom right corner of the HUD.
dialogue
--------
:Default: x = 0.095
y = 0.095
h = 0.810
w = 0.810
The dialog window, for talking with NPCs. Activated by clicking on a NPC.
alchemy
-------
:Default: x = 0.25
y = 0.25
h = 0.5
w = 0.5
The alchemy window, for crafting potions. Activated by dragging an alchemy tool on to the rag doll. Unlike most other windows, this window hides all other windows when opened.
console
-------
:Default: x = 0.0
y = 0.0
h = 1.0
w = 0.5
The console command window. Activated by pressing the tilde (~) key.
inventory
---------
@ -85,6 +73,7 @@ inventory
y = 0.4275
h = 0.6225
w = 0.5725
pin = false
The inventory window, displaying the paper doll and possessions, when activated by clicking on the inventory widget (second from left) in the bottom left corner of the HUD.
@ -147,3 +136,33 @@ companion
w = 0.375
The NPC's inventory window while interacting with a companion. The companion windows were added in the Tribunal expansion, but are available everywhere in the OpenMW engine.
dialogue
--------
:Default: x = 0.095
y = 0.095
h = 0.810
w = 0.810
The dialog window, for talking with NPCs. Activated by clicking on a NPC.
alchemy
-------
:Default: x = 0.25
y = 0.25
h = 0.5
w = 0.5
The alchemy window, for crafting potions. Activated by dragging an alchemy tool on to the rag doll. Unlike most other windows, this window hides all other windows when opened.
console
-------
:Default: x = 0.0
y = 0.0
h = 1.0
w = 0.5
The console command window. Activated by pressing the tilde (~) key.

@ -107,6 +107,9 @@ local map widget size = 512
# may result in longer loading times.
local map cell distance = 1
# If true, map in world mode, otherwise in local mode
global = false
[GUI]
# Scales GUI window and widget size. (<1.0 is smaller, >1.0 is larger).
@ -371,18 +374,24 @@ stats x = 0.0
stats y = 0.0
stats w = 0.375
stats h = 0.4275
# Stats window pin status
stats pin = false
# Spells window displaying powers, spells, and magical items.
spells x = 0.625
spells y = 0.5725
spells w = 0.375
spells h = 0.4275
# Spells window pin status
spells pin = false
# Local and world map window.
map x = 0.625
map y = 0.0
map w = 0.375
map h = 0.5725
# Map window pin status
map pin = false
# Dialog window for talking with NPCs.
dialogue x = 0.095
@ -407,6 +416,8 @@ inventory x = 0.0
inventory y = 0.4275
inventory w = 0.6225
inventory h = 0.5725
# Inventory window pin status
inventory pin = false
# Player inventory window when searching a container.
inventory container x = 0.0

Loading…
Cancel
Save