forked from mirror/openmw-tes3mp
Merge pull request #258 from OpenMW/master while resolving conflicts
# Conflicts: # .travis.yml # README.md0.6.1
commit
721b218cc2
@ -0,0 +1,54 @@
|
||||
#include "aibreathe.hpp"
|
||||
|
||||
#include "../mwbase/world.hpp"
|
||||
#include "../mwbase/environment.hpp"
|
||||
|
||||
#include "../mwworld/class.hpp"
|
||||
#include "../mwworld/esmstore.hpp"
|
||||
|
||||
#include "npcstats.hpp"
|
||||
|
||||
#include "movement.hpp"
|
||||
#include "steering.hpp"
|
||||
|
||||
MWMechanics::AiBreathe::AiBreathe()
|
||||
: AiPackage()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool MWMechanics::AiBreathe::execute (const MWWorld::Ptr& actor, CharacterController& characterController, AiState& state, float duration)
|
||||
{
|
||||
static const float fHoldBreathTime = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fHoldBreathTime")->getFloat();
|
||||
|
||||
const MWWorld::Class& actorClass = actor.getClass();
|
||||
if (actorClass.isNpc())
|
||||
{
|
||||
if (actorClass.getNpcStats(actor).getTimeToStartDrowning() < fHoldBreathTime / 2)
|
||||
{
|
||||
actor.getClass().getCreatureStats(actor).setMovementFlag(CreatureStats::Flag_Run, true);
|
||||
|
||||
actor.getClass().getMovementSettings(actor).mPosition[1] = 1;
|
||||
smoothTurn(actor, -180, 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
MWMechanics::AiBreathe *MWMechanics::AiBreathe::clone() const
|
||||
{
|
||||
return new AiBreathe(*this);
|
||||
}
|
||||
|
||||
int MWMechanics::AiBreathe::getTypeId() const
|
||||
{
|
||||
return TypeIdBreathe;
|
||||
}
|
||||
|
||||
unsigned int MWMechanics::AiBreathe::getPriority() const
|
||||
{
|
||||
return 2;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
#ifndef GAME_MWMECHANICS_AIBREATHE_H
|
||||
#define GAME_MWMECHANICS_AIBREATHE_H
|
||||
|
||||
#include "aipackage.hpp"
|
||||
|
||||
namespace MWMechanics
|
||||
{
|
||||
/// \brief AiPackage to have an actor resurface to breathe
|
||||
// The AI will go up if lesser than half breath left
|
||||
class AiBreathe : public AiPackage
|
||||
{
|
||||
public:
|
||||
AiBreathe();
|
||||
|
||||
virtual AiBreathe *clone() const;
|
||||
|
||||
virtual bool execute (const MWWorld::Ptr& actor, CharacterController& characterController, AiState& state, float duration);
|
||||
|
||||
virtual int getTypeId() const;
|
||||
|
||||
virtual unsigned int getPriority() const;
|
||||
|
||||
virtual bool canCancel() const { return false; }
|
||||
virtual bool shouldCancelPreviousAi() const { return false; }
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
@ -0,0 +1,545 @@
|
||||
#include "spellpriority.hpp"
|
||||
|
||||
#include <components/esm/loadench.hpp>
|
||||
#include <components/esm/loadmgef.hpp>
|
||||
|
||||
#include "../mwbase/environment.hpp"
|
||||
#include "../mwbase/world.hpp"
|
||||
#include "../mwbase/mechanicsmanager.hpp"
|
||||
|
||||
#include "../mwworld/class.hpp"
|
||||
#include "../mwworld/esmstore.hpp"
|
||||
#include "../mwworld/inventorystore.hpp"
|
||||
#include "../mwworld/actionequip.hpp"
|
||||
#include "../mwworld/cellstore.hpp"
|
||||
|
||||
#include "npcstats.hpp"
|
||||
#include "spellcasting.hpp"
|
||||
#include "combat.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
int numEffectsToDispel (const MWWorld::Ptr& actor, int effectFilter=-1, bool negative = true)
|
||||
{
|
||||
int toCure=0;
|
||||
const MWMechanics::ActiveSpells& activeSpells = actor.getClass().getCreatureStats(actor).getActiveSpells();
|
||||
for (MWMechanics::ActiveSpells::TIterator it = activeSpells.begin(); it != activeSpells.end(); ++it)
|
||||
{
|
||||
const MWMechanics::ActiveSpells::ActiveSpellParams& params = it->second;
|
||||
for (std::vector<MWMechanics::ActiveSpells::ActiveEffect>::const_iterator effectIt = params.mEffects.begin();
|
||||
effectIt != params.mEffects.end(); ++effectIt)
|
||||
{
|
||||
int effectId = effectIt->mEffectId;
|
||||
if (effectFilter != -1 && effectId != effectFilter)
|
||||
continue;
|
||||
const ESM::MagicEffect* magicEffect = MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(effectId);
|
||||
|
||||
if (effectIt->mDuration <= 3) // Don't attempt to dispel if effect runs out shortly anyway
|
||||
continue;
|
||||
|
||||
if (negative && magicEffect->mData.mFlags & ESM::MagicEffect::Harmful)
|
||||
++toCure;
|
||||
|
||||
if (!negative && !(magicEffect->mData.mFlags & ESM::MagicEffect::Harmful))
|
||||
++toCure;
|
||||
}
|
||||
}
|
||||
return toCure;
|
||||
}
|
||||
}
|
||||
|
||||
namespace MWMechanics
|
||||
{
|
||||
int getRangeTypes (const ESM::EffectList& effects)
|
||||
{
|
||||
int types = 0;
|
||||
for (std::vector<ESM::ENAMstruct>::const_iterator it = effects.mList.begin(); it != effects.mList.end(); ++it)
|
||||
{
|
||||
if (it->mRange == ESM::RT_Self)
|
||||
types |= RangeTypes::Self;
|
||||
else if (it->mRange == ESM::RT_Touch)
|
||||
types |= RangeTypes::Touch;
|
||||
else if (it->mRange == ESM::RT_Target)
|
||||
types |= RangeTypes::Target;
|
||||
}
|
||||
return types;
|
||||
}
|
||||
|
||||
float ratePotion (const MWWorld::Ptr &item, const MWWorld::Ptr& actor)
|
||||
{
|
||||
if (item.getTypeName() != typeid(ESM::Potion).name())
|
||||
return 0.f;
|
||||
|
||||
const ESM::Potion* potion = item.get<ESM::Potion>()->mBase;
|
||||
return rateEffects(potion->mEffects, actor, MWWorld::Ptr());
|
||||
}
|
||||
|
||||
float rateSpell(const ESM::Spell *spell, const MWWorld::Ptr &actor, const MWWorld::Ptr& enemy)
|
||||
{
|
||||
const CreatureStats& stats = actor.getClass().getCreatureStats(actor);
|
||||
|
||||
float successChance = MWMechanics::getSpellSuccessChance(spell, actor);
|
||||
if (successChance == 0.f)
|
||||
return 0.f;
|
||||
|
||||
if (spell->mData.mType != ESM::Spell::ST_Spell)
|
||||
return 0.f;
|
||||
|
||||
// Don't make use of racial bonus spells, like MW. Can be made optional later
|
||||
if (actor.getClass().isNpc())
|
||||
{
|
||||
std::string raceid = actor.get<ESM::NPC>()->mBase->mRace;
|
||||
const ESM::Race* race = MWBase::Environment::get().getWorld()->getStore().get<ESM::Race>().find(raceid);
|
||||
if (race->mPowers.exists(spell->mId))
|
||||
return 0.f;
|
||||
}
|
||||
|
||||
if (spell->mData.mCost > stats.getMagicka().getCurrent())
|
||||
return 0.f;
|
||||
|
||||
// Spells don't stack, so early out if the spell is still active on the target
|
||||
int types = getRangeTypes(spell->mEffects);
|
||||
if ((types & Self) && stats.getActiveSpells().isSpellActive(spell->mId))
|
||||
return 0.f;
|
||||
if ( ((types & Touch) || (types & Target)) && enemy.getClass().getCreatureStats(enemy).getActiveSpells().isSpellActive(spell->mId))
|
||||
return 0.f;
|
||||
|
||||
return rateEffects(spell->mEffects, actor, enemy) * (successChance / 100.f);
|
||||
}
|
||||
|
||||
float rateMagicItem(const MWWorld::Ptr &ptr, const MWWorld::Ptr &actor, const MWWorld::Ptr& enemy)
|
||||
{
|
||||
if (ptr.getClass().getEnchantment(ptr).empty())
|
||||
return 0.f;
|
||||
|
||||
const ESM::Enchantment* enchantment = MWBase::Environment::get().getWorld()->getStore().get<ESM::Enchantment>().find(ptr.getClass().getEnchantment(ptr));
|
||||
|
||||
if (enchantment->mData.mType == ESM::Enchantment::CastOnce)
|
||||
{
|
||||
return rateEffects(enchantment->mEffects, actor, enemy);
|
||||
}
|
||||
else
|
||||
{
|
||||
//if (!ptr.getClass().canBeEquipped(ptr, actor))
|
||||
return 0.f;
|
||||
}
|
||||
}
|
||||
|
||||
float rateEffect(const ESM::ENAMstruct &effect, const MWWorld::Ptr &actor, const MWWorld::Ptr &enemy)
|
||||
{
|
||||
// NOTE: enemy may be empty
|
||||
|
||||
float rating = 1;
|
||||
switch (effect.mEffectID)
|
||||
{
|
||||
case ESM::MagicEffect::Soultrap:
|
||||
case ESM::MagicEffect::AlmsiviIntervention:
|
||||
case ESM::MagicEffect::DivineIntervention:
|
||||
case ESM::MagicEffect::CalmHumanoid:
|
||||
case ESM::MagicEffect::CalmCreature:
|
||||
case ESM::MagicEffect::FrenzyHumanoid:
|
||||
case ESM::MagicEffect::FrenzyCreature:
|
||||
case ESM::MagicEffect::DemoralizeHumanoid:
|
||||
case ESM::MagicEffect::DemoralizeCreature:
|
||||
case ESM::MagicEffect::RallyHumanoid:
|
||||
case ESM::MagicEffect::RallyCreature:
|
||||
case ESM::MagicEffect::Charm:
|
||||
case ESM::MagicEffect::DetectAnimal:
|
||||
case ESM::MagicEffect::DetectEnchantment:
|
||||
case ESM::MagicEffect::DetectKey:
|
||||
case ESM::MagicEffect::Telekinesis:
|
||||
case ESM::MagicEffect::Mark:
|
||||
case ESM::MagicEffect::Recall:
|
||||
case ESM::MagicEffect::Jump:
|
||||
case ESM::MagicEffect::WaterBreathing:
|
||||
case ESM::MagicEffect::SwiftSwim:
|
||||
case ESM::MagicEffect::WaterWalking:
|
||||
case ESM::MagicEffect::SlowFall:
|
||||
case ESM::MagicEffect::Light:
|
||||
case ESM::MagicEffect::Lock:
|
||||
case ESM::MagicEffect::Open:
|
||||
case ESM::MagicEffect::TurnUndead:
|
||||
case ESM::MagicEffect::WeaknessToCommonDisease:
|
||||
case ESM::MagicEffect::WeaknessToBlightDisease:
|
||||
case ESM::MagicEffect::WeaknessToCorprusDisease:
|
||||
case ESM::MagicEffect::CureCommonDisease:
|
||||
case ESM::MagicEffect::CureBlightDisease:
|
||||
case ESM::MagicEffect::CureCorprusDisease:
|
||||
case ESM::MagicEffect::ResistBlightDisease:
|
||||
case ESM::MagicEffect::ResistCommonDisease:
|
||||
case ESM::MagicEffect::ResistCorprusDisease:
|
||||
case ESM::MagicEffect::Invisibility:
|
||||
case ESM::MagicEffect::Chameleon:
|
||||
case ESM::MagicEffect::NightEye:
|
||||
case ESM::MagicEffect::Vampirism:
|
||||
case ESM::MagicEffect::StuntedMagicka:
|
||||
case ESM::MagicEffect::ExtraSpell:
|
||||
case ESM::MagicEffect::RemoveCurse:
|
||||
case ESM::MagicEffect::CommandCreature:
|
||||
case ESM::MagicEffect::CommandHumanoid:
|
||||
return 0.f;
|
||||
|
||||
case ESM::MagicEffect::Sound:
|
||||
{
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
// there is no need to cast sound if enemy is not able to cast spells
|
||||
CreatureStats& stats = enemy.getClass().getCreatureStats(enemy);
|
||||
|
||||
if (stats.getMagicEffects().get(ESM::MagicEffect::Silence).getMagnitude() > 0)
|
||||
return 0.f;
|
||||
|
||||
if (stats.getMagicEffects().get(ESM::MagicEffect::Paralyze).getMagnitude() > 0)
|
||||
return 0.f;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ESM::MagicEffect::RestoreAttribute:
|
||||
return 0.f; // TODO: implement based on attribute damage
|
||||
case ESM::MagicEffect::RestoreSkill:
|
||||
return 0.f; // TODO: implement based on skill damage
|
||||
|
||||
case ESM::MagicEffect::ResistFire:
|
||||
case ESM::MagicEffect::ResistFrost:
|
||||
case ESM::MagicEffect::ResistMagicka:
|
||||
case ESM::MagicEffect::ResistNormalWeapons:
|
||||
case ESM::MagicEffect::ResistParalysis:
|
||||
case ESM::MagicEffect::ResistPoison:
|
||||
case ESM::MagicEffect::ResistShock:
|
||||
case ESM::MagicEffect::SpellAbsorption:
|
||||
case ESM::MagicEffect::Reflect:
|
||||
return 0.f; // probably useless since we don't know in advance what the enemy will cast
|
||||
|
||||
// don't cast these for now as they would make the NPC cast the same effect over and over again, especially when they have potions
|
||||
case ESM::MagicEffect::FortifyAttribute:
|
||||
case ESM::MagicEffect::FortifyHealth:
|
||||
case ESM::MagicEffect::FortifyMagicka:
|
||||
case ESM::MagicEffect::FortifyFatigue:
|
||||
case ESM::MagicEffect::FortifySkill:
|
||||
case ESM::MagicEffect::FortifyMaximumMagicka:
|
||||
case ESM::MagicEffect::FortifyAttack:
|
||||
return 0.f;
|
||||
|
||||
case ESM::MagicEffect::Burden:
|
||||
{
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
// Ignore enemy without inventory
|
||||
if (!enemy.getClass().hasInventoryStore(enemy))
|
||||
return 0.f;
|
||||
|
||||
// burden makes sense only to overburden an enemy
|
||||
float burden = enemy.getClass().getEncumbrance(enemy) - enemy.getClass().getCapacity(enemy);
|
||||
if (burden > 0)
|
||||
return 0.f;
|
||||
|
||||
if ((effect.mMagnMin + effect.mMagnMax)/2.f > -burden)
|
||||
rating *= 3;
|
||||
else
|
||||
return 0.f;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ESM::MagicEffect::Feather:
|
||||
{
|
||||
// Ignore actors without inventory
|
||||
if (!actor.getClass().hasInventoryStore(actor))
|
||||
return 0.f;
|
||||
|
||||
// feather makes sense only for overburden actors
|
||||
float burden = actor.getClass().getEncumbrance(actor) - actor.getClass().getCapacity(actor);
|
||||
if (burden <= 0)
|
||||
return 0.f;
|
||||
|
||||
if ((effect.mMagnMin + effect.mMagnMax)/2.f >= burden)
|
||||
rating *= 3;
|
||||
else
|
||||
return 0.f;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ESM::MagicEffect::Levitate:
|
||||
return 0.f; // AI isn't designed to take advantage of this, and could be perceived as unfair anyway
|
||||
case ESM::MagicEffect::BoundBoots:
|
||||
case ESM::MagicEffect::BoundHelm:
|
||||
if (actor.getClass().isNpc())
|
||||
{
|
||||
// Beast races can't wear helmets or boots
|
||||
std::string raceid = actor.get<ESM::NPC>()->mBase->mRace;
|
||||
const ESM::Race* race = MWBase::Environment::get().getWorld()->getStore().get<ESM::Race>().find(raceid);
|
||||
if (race->mData.mFlags & ESM::Race::Beast)
|
||||
return 0.f;
|
||||
}
|
||||
// Intended fall-through
|
||||
// Creatures can not wear armor
|
||||
case ESM::MagicEffect::BoundCuirass:
|
||||
case ESM::MagicEffect::BoundGloves:
|
||||
if (!actor.getClass().isNpc())
|
||||
return 0.f;
|
||||
break;
|
||||
|
||||
case ESM::MagicEffect::RestoreHealth:
|
||||
case ESM::MagicEffect::RestoreMagicka:
|
||||
case ESM::MagicEffect::RestoreFatigue:
|
||||
if (effect.mRange == ESM::RT_Self)
|
||||
{
|
||||
int priority = 1;
|
||||
if (effect.mEffectID == ESM::MagicEffect::RestoreHealth)
|
||||
priority = 10;
|
||||
const DynamicStat<float>& current = actor.getClass().getCreatureStats(actor).
|
||||
getDynamic(effect.mEffectID - ESM::MagicEffect::RestoreHealth);
|
||||
float toHeal = (effect.mMagnMin + effect.mMagnMax)/2.f * effect.mDuration;
|
||||
// Effect doesn't heal more than we need, *or* we are below 1/2 health
|
||||
if (current.getModified() - current.getCurrent() > toHeal
|
||||
|| current.getCurrent() < current.getModified()*0.5)
|
||||
{
|
||||
return 10000.f * priority
|
||||
- (toHeal - (current.getModified()-current.getCurrent())); // prefer the most fitting potion
|
||||
}
|
||||
else
|
||||
return -10000.f * priority; // Save for later
|
||||
}
|
||||
break;
|
||||
|
||||
case ESM::MagicEffect::Dispel:
|
||||
{
|
||||
int numPositive = 0;
|
||||
int numNegative = 0;
|
||||
int diff = 0;
|
||||
|
||||
if (effect.mRange == ESM::RT_Self)
|
||||
{
|
||||
numPositive = numEffectsToDispel(actor, -1, false);
|
||||
numNegative = numEffectsToDispel(actor);
|
||||
|
||||
diff = numNegative - numPositive;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
numPositive = numEffectsToDispel(enemy, -1, false);
|
||||
numNegative = numEffectsToDispel(enemy);
|
||||
|
||||
diff = numPositive - numNegative;
|
||||
|
||||
// if rating < 0 here, the spell will be considered as negative later
|
||||
rating *= -1;
|
||||
}
|
||||
|
||||
if (diff <= 0)
|
||||
return 0.f;
|
||||
|
||||
rating *= (diff) / 5.f;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Prefer Cure effects over Dispel, because Dispel also removes positive effects
|
||||
case ESM::MagicEffect::CureParalyzation:
|
||||
return 1001.f * numEffectsToDispel(actor, ESM::MagicEffect::Paralyze);
|
||||
|
||||
case ESM::MagicEffect::CurePoison:
|
||||
return 1001.f * numEffectsToDispel(actor, ESM::MagicEffect::Poison);
|
||||
case ESM::MagicEffect::DisintegrateArmor:
|
||||
{
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
// Ignore enemy without inventory
|
||||
if (!enemy.getClass().hasInventoryStore(enemy))
|
||||
return 0.f;
|
||||
|
||||
MWWorld::InventoryStore& inv = enemy.getClass().getInventoryStore(enemy);
|
||||
|
||||
// According to UESP
|
||||
static const int armorSlots[] = {
|
||||
MWWorld::InventoryStore::Slot_CarriedLeft,
|
||||
MWWorld::InventoryStore::Slot_Cuirass,
|
||||
MWWorld::InventoryStore::Slot_LeftPauldron,
|
||||
MWWorld::InventoryStore::Slot_RightPauldron,
|
||||
MWWorld::InventoryStore::Slot_LeftGauntlet,
|
||||
MWWorld::InventoryStore::Slot_RightGauntlet,
|
||||
MWWorld::InventoryStore::Slot_Helmet,
|
||||
MWWorld::InventoryStore::Slot_Greaves,
|
||||
MWWorld::InventoryStore::Slot_Boots
|
||||
};
|
||||
|
||||
bool enemyHasArmor = false;
|
||||
|
||||
// Ignore enemy without armor
|
||||
for (unsigned int i=0; i<sizeof(armorSlots)/sizeof(int); ++i)
|
||||
{
|
||||
MWWorld::ContainerStoreIterator item = inv.getSlot(armorSlots[i]);
|
||||
|
||||
if (item != inv.end() && (item.getType() == MWWorld::ContainerStore::Type_Armor))
|
||||
{
|
||||
enemyHasArmor = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!enemyHasArmor)
|
||||
return 0.f;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ESM::MagicEffect::DisintegrateWeapon:
|
||||
{
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
// Ignore enemy without inventory
|
||||
if (!enemy.getClass().hasInventoryStore(enemy))
|
||||
return 0.f;
|
||||
|
||||
MWWorld::InventoryStore& inv = enemy.getClass().getInventoryStore(enemy);
|
||||
MWWorld::ContainerStoreIterator item = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
|
||||
|
||||
// Ignore enemy without weapons
|
||||
if (item == inv.end() || (item.getType() != MWWorld::ContainerStore::Type_Weapon))
|
||||
return 0.f;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ESM::MagicEffect::DamageAttribute:
|
||||
case ESM::MagicEffect::DrainAttribute:
|
||||
if (!enemy.isEmpty() && enemy.getClass().getCreatureStats(enemy).getAttribute(effect.mAttribute).getModified() <= 0)
|
||||
return 0.f;
|
||||
{
|
||||
if (effect.mAttribute >= 0 && effect.mAttribute < ESM::Attribute::Length)
|
||||
{
|
||||
const float attributePriorities[ESM::Attribute::Length] = {
|
||||
1.0f, // Strength
|
||||
0.5f, // Intelligence
|
||||
0.6f, // Willpower
|
||||
0.7f, // Agility
|
||||
0.5f, // Speed
|
||||
0.8f, // Endurance
|
||||
0.7f, // Personality
|
||||
0.3f // Luck
|
||||
};
|
||||
rating *= attributePriorities[effect.mAttribute];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ESM::MagicEffect::DamageSkill:
|
||||
case ESM::MagicEffect::DrainSkill:
|
||||
if (enemy.isEmpty() || !enemy.getClass().isNpc())
|
||||
return 0.f;
|
||||
if (enemy.getClass().getNpcStats(enemy).getSkill(effect.mSkill).getModified() <= 0)
|
||||
return 0.f;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
const ESM::MagicEffect* magicEffect = MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(effect.mEffectID);
|
||||
|
||||
// Underwater casting not possible
|
||||
if (effect.mRange == ESM::RT_Target)
|
||||
{
|
||||
if (MWBase::Environment::get().getWorld()->isUnderwater(MWWorld::ConstPtr(actor), 0.75f))
|
||||
return 0.f;
|
||||
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
if (MWBase::Environment::get().getWorld()->isUnderwater(MWWorld::ConstPtr(enemy), 0.75f))
|
||||
return 0.f;
|
||||
}
|
||||
|
||||
if (magicEffect->mData.mFlags & ESM::MagicEffect::Harmful)
|
||||
{
|
||||
rating *= -1.f;
|
||||
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
// Check resistance for harmful effects
|
||||
CreatureStats& stats = enemy.getClass().getCreatureStats(enemy);
|
||||
|
||||
float resistance = MWMechanics::getEffectResistanceAttribute(effect.mEffectID, &stats.getMagicEffects());
|
||||
|
||||
rating *= (1.f - std::min(resistance, 100.f) / 100.f);
|
||||
}
|
||||
|
||||
// for harmful no-magnitude effects (e.g. silence) check if enemy is already has them
|
||||
// for non-harmful no-magnitude effects (e.g. bound items) check if actor is already has them
|
||||
if (magicEffect->mData.mFlags & ESM::MagicEffect::NoMagnitude)
|
||||
{
|
||||
if (magicEffect->mData.mFlags & ESM::MagicEffect::Harmful)
|
||||
{
|
||||
CreatureStats& stats = enemy.getClass().getCreatureStats(enemy);
|
||||
|
||||
if (stats.getMagicEffects().get(effect.mEffectID).getMagnitude() > 0)
|
||||
return 0.f;
|
||||
}
|
||||
else
|
||||
{
|
||||
CreatureStats& stats = actor.getClass().getCreatureStats(actor);
|
||||
|
||||
if (stats.getMagicEffects().get(effect.mEffectID).getMagnitude() > 0)
|
||||
return 0.f;
|
||||
}
|
||||
}
|
||||
|
||||
rating *= calcEffectCost(effect);
|
||||
|
||||
// Currently treating all "on target" or "on touch" effects to target the enemy actor.
|
||||
// Combat AI is egoistic, so doesn't consider applying positive effects to friendly actors.
|
||||
if (effect.mRange != ESM::RT_Self)
|
||||
rating *= -1.f;
|
||||
|
||||
return rating;
|
||||
}
|
||||
|
||||
float rateEffects(const ESM::EffectList &list, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy)
|
||||
{
|
||||
// NOTE: enemy may be empty
|
||||
float rating = 0.f;
|
||||
for (std::vector<ESM::ENAMstruct>::const_iterator it = list.mList.begin(); it != list.mList.end(); ++it)
|
||||
{
|
||||
rating += rateEffect(*it, actor, enemy);
|
||||
|
||||
if (it->mRange == ESM::RT_Target)
|
||||
rating *= 1.5f;
|
||||
}
|
||||
return rating;
|
||||
}
|
||||
|
||||
float vanillaRateSpell(const ESM::Spell* spell, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy)
|
||||
{
|
||||
const MWWorld::Store<ESM::GameSetting>& gmst = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>();
|
||||
|
||||
static const float fAIMagicSpellMult = gmst.find("fAIMagicSpellMult")->getFloat();
|
||||
static const float fAIRangeMagicSpellMult = gmst.find("fAIRangeMagicSpellMult")->getFloat();
|
||||
|
||||
float mult = fAIMagicSpellMult;
|
||||
|
||||
for (std::vector<ESM::ENAMstruct>::const_iterator effectIt =
|
||||
spell->mEffects.mList.begin(); effectIt != spell->mEffects.mList.end(); ++effectIt)
|
||||
{
|
||||
if (effectIt->mRange == ESM::RT_Target)
|
||||
{
|
||||
if (!MWBase::Environment::get().getWorld()->isSwimming(enemy))
|
||||
mult = fAIRangeMagicSpellMult;
|
||||
else
|
||||
mult = 0.0f;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return MWMechanics::getSpellSuccessChance(spell, actor) * mult;
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
#ifndef OPENMW_SPELL_PRIORITY_H
|
||||
#define OPENMW_SPELL_PRIORITY_H
|
||||
|
||||
#include <components/esm/loadspel.hpp>
|
||||
|
||||
#include "../mwworld/ptr.hpp"
|
||||
|
||||
namespace MWMechanics
|
||||
{
|
||||
// RangeTypes using bitflags to allow multiple range types, as can be the case with spells having multiple effects.
|
||||
enum RangeTypes
|
||||
{
|
||||
Self = 0x1,
|
||||
Touch = 0x10,
|
||||
Target = 0x100
|
||||
};
|
||||
|
||||
int getRangeTypes (const ESM::EffectList& effects);
|
||||
|
||||
float rateSpell (const ESM::Spell* spell, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy);
|
||||
float rateMagicItem (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy);
|
||||
float ratePotion (const MWWorld::Ptr& item, const MWWorld::Ptr &actor);
|
||||
|
||||
/// @note target may be empty
|
||||
float rateEffect (const ESM::ENAMstruct& effect, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy);
|
||||
/// @note target may be empty
|
||||
float rateEffects (const ESM::EffectList& list, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy);
|
||||
|
||||
float vanillaRateSpell(const ESM::Spell* spell, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy);
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,146 @@
|
||||
#include "weaponpriority.hpp"
|
||||
|
||||
#include <components/esm/loadench.hpp>
|
||||
#include <components/esm/loadmgef.hpp>
|
||||
|
||||
#include "../mwbase/environment.hpp"
|
||||
#include "../mwbase/world.hpp"
|
||||
|
||||
#include "../mwworld/class.hpp"
|
||||
#include "../mwworld/esmstore.hpp"
|
||||
|
||||
#include "npcstats.hpp"
|
||||
#include "combat.hpp"
|
||||
#include "aicombataction.hpp"
|
||||
#include "spellpriority.hpp"
|
||||
|
||||
namespace MWMechanics
|
||||
{
|
||||
float rateWeapon (const MWWorld::Ptr &item, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy, int type,
|
||||
float arrowRating, float boltRating)
|
||||
{
|
||||
if (item.getTypeName() != typeid(ESM::Weapon).name())
|
||||
return 0.f;
|
||||
|
||||
const ESM::Weapon* weapon = item.get<ESM::Weapon>()->mBase;
|
||||
|
||||
if (type != -1 && weapon->mData.mType != type)
|
||||
return 0.f;
|
||||
|
||||
float rating=0.f;
|
||||
float bonus=0.f;
|
||||
|
||||
if (weapon->mData.mType >= ESM::Weapon::MarksmanBow && weapon->mData.mType <= ESM::Weapon::MarksmanThrown)
|
||||
{
|
||||
// Range weapon is useless under water
|
||||
if (MWBase::Environment::get().getWorld()->isUnderwater(MWWorld::ConstPtr(actor), 0.75f))
|
||||
return 0.f;
|
||||
|
||||
if (enemy.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
if (MWBase::Environment::get().getWorld()->isUnderwater(MWWorld::ConstPtr(enemy), 0.75f))
|
||||
return 0.f;
|
||||
|
||||
bonus+=1.5f;
|
||||
}
|
||||
|
||||
if (weapon->mData.mType >= ESM::Weapon::MarksmanBow)
|
||||
{
|
||||
rating = (weapon->mData.mChop[0] + weapon->mData.mChop[1]) / 2.f;
|
||||
|
||||
if (weapon->mData.mType >= ESM::Weapon::MarksmanThrown)
|
||||
MWMechanics::resistNormalWeapon(enemy, actor, item, rating);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i=0; i<2; ++i)
|
||||
{
|
||||
rating += weapon->mData.mSlash[i];
|
||||
rating += weapon->mData.mThrust[i];
|
||||
rating += weapon->mData.mChop[i];
|
||||
}
|
||||
rating /= 6.f;
|
||||
|
||||
MWMechanics::resistNormalWeapon(enemy, actor, item, rating);
|
||||
}
|
||||
|
||||
if (item.getClass().hasItemHealth(item))
|
||||
{
|
||||
if (item.getClass().getItemHealth(item) == 0)
|
||||
return 0.f;
|
||||
rating *= item.getClass().getItemHealth(item) / float(item.getClass().getItemMaxHealth(item));
|
||||
}
|
||||
|
||||
if (weapon->mData.mType == ESM::Weapon::MarksmanBow)
|
||||
{
|
||||
if (arrowRating <= 0.f)
|
||||
rating = 0.f;
|
||||
else
|
||||
rating += arrowRating;
|
||||
}
|
||||
else if (weapon->mData.mType == ESM::Weapon::MarksmanCrossbow)
|
||||
{
|
||||
if (boltRating <= 0.f)
|
||||
rating = 0.f;
|
||||
else
|
||||
rating += boltRating;
|
||||
}
|
||||
|
||||
if (!weapon->mEnchant.empty())
|
||||
{
|
||||
const ESM::Enchantment* enchantment = MWBase::Environment::get().getWorld()->getStore().get<ESM::Enchantment>().find(weapon->mEnchant);
|
||||
if (enchantment->mData.mType == ESM::Enchantment::WhenStrikes
|
||||
&& (item.getCellRef().getEnchantmentCharge() == -1
|
||||
|| item.getCellRef().getEnchantmentCharge() >= enchantment->mData.mCost))
|
||||
rating += rateEffects(enchantment->mEffects, actor, enemy);
|
||||
}
|
||||
|
||||
int skill = item.getClass().getEquipmentSkill(item);
|
||||
if (skill != -1)
|
||||
rating *= actor.getClass().getSkill(actor, skill) / 100.f;
|
||||
|
||||
// There is no need to apply bonus if weapon rating == 0
|
||||
if (rating == 0.f)
|
||||
return 0.f;
|
||||
|
||||
return rating + bonus;
|
||||
}
|
||||
|
||||
float vanillaRateWeaponAndAmmo(const MWWorld::Ptr& weapon, const MWWorld::Ptr& ammo, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy)
|
||||
{
|
||||
const MWWorld::Store<ESM::GameSetting>& gmst = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>();
|
||||
|
||||
static const float fAIMeleeWeaponMult = gmst.find("fAIMeleeWeaponMult")->getFloat();
|
||||
static const float fAIMeleeArmorMult = gmst.find("fAIMeleeArmorMult")->getFloat();
|
||||
static const float fAIRangeMeleeWeaponMult = gmst.find("fAIRangeMeleeWeaponMult")->getFloat();
|
||||
|
||||
if (weapon.isEmpty())
|
||||
return 0.f;
|
||||
|
||||
float skillMult = actor.getClass().getSkill(actor, weapon.getClass().getEquipmentSkill(weapon)) * 0.01f;
|
||||
float chopMult = fAIMeleeWeaponMult;
|
||||
float bonusDamage = 0.f;
|
||||
|
||||
const ESM::Weapon* esmWeap = weapon.get<ESM::Weapon>()->mBase;
|
||||
|
||||
if (esmWeap->mData.mType >= ESM::Weapon::MarksmanBow)
|
||||
{
|
||||
if (!ammo.isEmpty() && !MWBase::Environment::get().getWorld()->isSwimming(enemy))
|
||||
{
|
||||
bonusDamage = ammo.get<ESM::Weapon>()->mBase->mData.mChop[1];
|
||||
chopMult = fAIRangeMeleeWeaponMult;
|
||||
}
|
||||
else
|
||||
chopMult = 0.f;
|
||||
}
|
||||
|
||||
float chopRating = (esmWeap->mData.mChop[1] + bonusDamage) * skillMult * chopMult;
|
||||
float slashRating = esmWeap->mData.mSlash[1] * skillMult * fAIMeleeWeaponMult;
|
||||
float thrustRating = esmWeap->mData.mThrust[1] * skillMult * fAIMeleeWeaponMult;
|
||||
|
||||
return actor.getClass().getArmorRating(actor) * fAIMeleeArmorMult
|
||||
+ std::max(std::max(chopRating, slashRating), thrustRating);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
#ifndef OPENMW_WEAPON_PRIORITY_H
|
||||
#define OPENMW_WEAPON_PRIORITY_H
|
||||
|
||||
#include "../mwworld/ptr.hpp"
|
||||
|
||||
namespace MWMechanics
|
||||
{
|
||||
float rateWeapon (const MWWorld::Ptr& item, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy,
|
||||
int type=-1, float arrowRating=0.f, float boltRating=0.f);
|
||||
|
||||
float vanillaRateWeaponAndAmmo(const MWWorld::Ptr& weapon, const MWWorld::Ptr& ammo, const MWWorld::Ptr& actor, const MWWorld::Ptr& enemy);
|
||||
}
|
||||
|
||||
#endif
|
@ -1,3 +1,2 @@
|
||||
breathe
|
||||
parse_cmake
|
||||
sphinx
|
||||
|
@ -1,8 +0,0 @@
|
||||
Project Source Documentation
|
||||
============================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
openmw/index
|
||||
opencs/index
|
@ -1,11 +0,0 @@
|
||||
OpenMW-CS Source Documentation
|
||||
##############################
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
model/index
|
||||
view/index
|
||||
|
||||
.. autodoxygenfile:: editor.hpp
|
||||
:project: opencs
|
@ -1,358 +0,0 @@
|
||||
./opencs/model
|
||||
##############
|
||||
|
||||
doc
|
||||
---
|
||||
.. autodoxygenfile:: model/doc/blacklist.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/document.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/documentmanager.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/loader.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/messages.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/operationholder.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/operation.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/runner.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/saving.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/savingstages.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/savingstate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/stage.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/doc/state.hpp
|
||||
:project: opencs
|
||||
|
||||
filter
|
||||
------
|
||||
.. autodoxygenfile:: model/filter/andnode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/booleannode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/leafnode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/narynode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/node.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/notnode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/ornode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/parser.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/textnode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/unarynode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/filter/valuenode.hpp
|
||||
:project: opencs
|
||||
|
||||
prefs
|
||||
-----
|
||||
.. autodoxygenfile:: model/prefs/boolsetting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/category.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/coloursetting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/doublesetting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/enumsetting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/intsetting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/modifiersetting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/setting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/shortcuteventhandler.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/shortcut.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/shortcutmanager.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/shortcutsetting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/prefs/state.hpp
|
||||
:project: opencs
|
||||
|
||||
tools
|
||||
-----
|
||||
.. autodoxygenfile:: model/tools/birthsigncheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/bodypartcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/classcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/factioncheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/gmstcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/journalcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/magiceffectcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/mandatoryid.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/mergeoperation.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/mergestages.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/mergestate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/pathgridcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/racecheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/referenceablecheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/referencecheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/regioncheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/reportmodel.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/scriptcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/search.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/searchoperation.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/searchstage.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/skillcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/soundcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/soundgencheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/spellcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/startscriptcheck.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/tools.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/tools/topicinfocheck.hpp
|
||||
:project: opencs
|
||||
|
||||
world
|
||||
-----
|
||||
.. autodoxygenfile:: model/world/cellcoordinates.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/cell.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/cellselection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/collectionbase.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/collection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/columnbase.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/columnimp.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/columns.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/commanddispatcher.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/commandmacro.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/commands.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/data.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/defaultgmsts.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/idcollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/idcompletionmanager.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/idtablebase.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/idtable.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/idtableproxymodel.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/idtree.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/infocollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/info.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/infoselectwrapper.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/infotableproxymodel.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/land.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/landtexture.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/metadata.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/nestedcoladapterimp.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/nestedcollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/nestedcolumnadapter.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/nestedidcollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/nestedinfocollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/nestedtableproxymodel.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/nestedtablewrapper.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/pathgrid.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/record.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/refcollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/ref.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/refidadapter.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/refidadapterimp.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/refidcollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/refiddata.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/regionmap.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/resources.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/resourcesmanager.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/resourcetable.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/scope.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/scriptcontext.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/subcellcollection.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/tablemimedata.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: model/world/universalid.hpp
|
||||
:project: opencs
|
||||
|
@ -1,340 +0,0 @@
|
||||
./opencs/view
|
||||
#############
|
||||
|
||||
doc
|
||||
---
|
||||
.. autodoxygenfile:: view/doc/adjusterwidget.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/filedialog.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/filewidget.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/globaldebugprofilemenu.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/loader.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/newgame.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/operation.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/operations.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/runlogsubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/sizehint.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/startup.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/subviewfactory.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/subviewfactoryimp.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/subview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/view.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/doc/viewmanager.hpp
|
||||
:project: opencs
|
||||
|
||||
filter
|
||||
------
|
||||
.. autodoxygenfile:: view/filter/editwidget.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/filter/filterbox.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/filter/recordfilterbox.hpp
|
||||
:project: opencs
|
||||
|
||||
prefs
|
||||
-----
|
||||
.. autodoxygenfile:: view/prefs/dialogue.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/prefs/keybindingpage.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/prefs/pagebase.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/prefs/page.hpp
|
||||
:project: opencs
|
||||
|
||||
render
|
||||
------
|
||||
.. autodoxygenfile:: view/render/cameracontroller.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/cellarrow.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/cellborder.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/cell.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/cellmarker.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/cellwater.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/editmode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/instancemode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/instancemovemode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/instanceselectionmode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/lightingbright.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/lightingday.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/lighting.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/lightingnight.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/mask.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/object.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/orbitcameramode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/pagedworldspacewidget.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/pathgrid.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/pathgridmode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/pathgridselectionmode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/previewwidget.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/scenewidget.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/selectionmode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/tagbase.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/terrainstorage.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/unpagedworldspacewidget.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/render/worldspacewidget.hpp
|
||||
:project: opencs
|
||||
|
||||
tools
|
||||
-----
|
||||
.. autodoxygenfile:: view/tools/merge.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/tools/reportsubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/tools/reporttable.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/tools/searchbox.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/tools/searchsubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/tools/subviews.hpp
|
||||
:project: opencs
|
||||
|
||||
widget
|
||||
------
|
||||
.. autodoxygenfile:: view/widget/coloreditor.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/colorpickerpopup.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/completerpopup.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/droplineedit.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/modebutton.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/pushbutton.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/scenetoolbar.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/scenetool.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/scenetoolmode.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/scenetoolrun.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/scenetooltoggle2.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/widget/scenetooltoggle.hpp
|
||||
:project: opencs
|
||||
|
||||
world
|
||||
-----
|
||||
.. autodoxygenfile:: view/world/cellcreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/colordelegate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/creator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/datadisplaydelegate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/dialoguecreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/dialoguespinbox.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/dialoguesubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/dragdroputils.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/dragrecordtable.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/enumdelegate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/extendedcommandconfigurator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/genericcreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/globalcreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/idcompletiondelegate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/idtypedelegate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/idvalidator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/infocreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/nestedtable.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/pathgridcreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/previewsubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/recordbuttonbar.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/recordstatusdelegate.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/referenceablecreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/referencecreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/regionmap.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/regionmapsubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/scenesubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/scriptedit.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/scripterrortable.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/scripthighlighter.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/scriptsubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/startscriptcreator.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/subviews.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/tablebottombox.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/tableeditidaction.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/table.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/tablesubview.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/util.hpp
|
||||
:project: opencs
|
||||
|
||||
.. autodoxygenfile:: view/world/vartypedelegate.hpp
|
||||
:project: opencs
|
@ -1,24 +0,0 @@
|
||||
OpenMW Source Documentation
|
||||
###########################
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
mwbase
|
||||
mwclass
|
||||
mwdialogue
|
||||
mwgui
|
||||
mwinput
|
||||
mwmechanics
|
||||
mwphysics
|
||||
mwrender
|
||||
mwscript
|
||||
mwsound
|
||||
mwstate
|
||||
mwworld
|
||||
|
||||
.. autodoxygenfile:: engine.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: doc.hpp
|
||||
:project: openmw
|
@ -1,32 +0,0 @@
|
||||
./mwbase
|
||||
########
|
||||
|
||||
.. autodoxygenfile:: mwbase/dialoguemanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/environment.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/inputmanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/journal.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/mechanicsmanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/scriptmanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/soundmanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/statemanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/windowmanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwbase/world.hpp
|
||||
:project: openmw
|
@ -1,68 +0,0 @@
|
||||
./mwclass
|
||||
#########
|
||||
|
||||
.. autodoxygenfile:: mwclass/activator.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/actor.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/apparatus.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/armor.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/bodypart.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/book.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/classes.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/clothing.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/container.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/creature.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/creaturelevlist.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/ingredient.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/itemlevlist.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/light.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/lockpick.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/misc.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/npc.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/potion.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/probe.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/repair.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/static.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwclass/weapon.hpp
|
||||
:project: openmw
|
@ -1,32 +0,0 @@
|
||||
./mwdialogue
|
||||
############
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/dialoguemanagerimp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/filter.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/hypertextparser.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/journalentry.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/journalimp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/keywordsearch.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/quest.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/scripttest.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/selectwrapper.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwdialogue/topic.hpp
|
||||
:project: openmw
|
@ -1,227 +0,0 @@
|
||||
./mwgui
|
||||
#######
|
||||
|
||||
.. autodoxygenfile:: mwgui/alchemywindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/backgroundimage.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/birth.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/bookpage.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/bookwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/charactercreation.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/class.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/companionitemmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/companionwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/confirmationdialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/console.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/container.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/containeritemmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/controllers.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/countdialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/cursor.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/debugwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/dialogue.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/draganddrop.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/enchantingdialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/exposedwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/formatting.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/hud.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/inventoryitemmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/inventorywindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/itemchargeview.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/itemmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/itemselection.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/itemview.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/itemwidget.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/jailscreen.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/journalbooks.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/journalviewmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/journalwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/layout.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/levelupdialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/loadingscreen.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/mainmenu.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/mapwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/merchantrepair.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/messagebox.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/mode.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/pickpocketitemmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/quickkeysmenu.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/race.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/recharge.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/referenceinterface.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/repair.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/review.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/savegamedialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/screenfader.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/scrollwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/settingswindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/sortfilteritemmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/soulgemdialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/spellbuyingwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/spellcreationdialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/spellicons.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/spellmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/spellview.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/spellwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/statswindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/textinput.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/timeadvancer.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/tooltips.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/tradeitemmodel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/tradewindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/trainingwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/travelwindow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/videowidget.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/waitdialog.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/widgets.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/windowbase.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/windowmanagerimp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwgui/windowpinnablebase.hpp
|
||||
:project: openmw
|
@ -1,5 +0,0 @@
|
||||
./mwinput
|
||||
#########
|
||||
|
||||
.. autodoxygenfile:: mwinput/inputmanagerimp.hpp
|
||||
:project: openmw
|
@ -1,137 +0,0 @@
|
||||
./mwmechanics
|
||||
#############
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/activespells.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/actor.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/actors.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/actorutil.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aiactivate.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aiavoiddoor.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aicombataction.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aicombat.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aiescort.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aiface.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aifollow.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aipackage.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aipursue.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aisequence.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aistate.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aitravel.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/aiwander.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/alchemy.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/autocalcspell.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/character.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/combat.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/coordinateconverter.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/creaturestats.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/difficultyscaling.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/disease.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/drawstate.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/enchanting.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/levelledlist.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/magiceffects.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/mechanicsmanagerimp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/movement.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/npcstats.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/objects.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/obstacle.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/pathfinding.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/pathgrid.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/pickpocket.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/repair.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/security.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/spellcasting.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/spells.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/stat.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/steering.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/summoning.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwmechanics/trading.hpp
|
||||
:project: openmw
|
@ -1,15 +0,0 @@
|
||||
./mwphysics
|
||||
###########
|
||||
|
||||
.. autodoxygenfile:: mwphysics/actor.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwphysics/collisiontype.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwphysics/convert.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwphysics/physicssystem.hpp
|
||||
:project: openmw
|
||||
|
@ -1,77 +0,0 @@
|
||||
./mwrender
|
||||
##########
|
||||
|
||||
.. autodoxygenfile:: mwrender/actoranimation.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/animation.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/bulletdebugdraw.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/camera.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/cell.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/characterpreview.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/creatureanimation.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/effectmanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/globalmap.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/localmap.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/npcanimation.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/objects.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/pathgrid.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/renderbin.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/renderinginterface.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/renderingmanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/rendermode.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/ripplesimulation.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/rotatecontroller.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/sky.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/terrainstorage.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/util.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/vismask.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/water.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwrender/weaponanimation.hpp
|
||||
:project: openmw
|
@ -1,65 +0,0 @@
|
||||
./mwscript
|
||||
##########
|
||||
|
||||
.. autodoxygenfile:: mwscript/aiextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/animationextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/cellextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/compilercontext.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/consoleextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/containerextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/controlextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/dialogueextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/extensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/globalscripts.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/guiextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/interpretercontext.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/locals.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/miscextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/ref.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/scriptmanagerimp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/skyextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/soundextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/statsextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/transformationextensions.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwscript/userextensions.hpp
|
||||
:project: openmw
|
@ -1,29 +0,0 @@
|
||||
./mwsound
|
||||
#########
|
||||
|
||||
.. autodoxygenfile:: mwsound/ffmpeg_decoder.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/loudness.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/movieaudiofactory.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/openal_output.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/sound_buffer.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/sound_decoder.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/sound.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/soundmanagerimp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwsound/sound_output.hpp
|
||||
:project: openmw
|
@ -1,11 +0,0 @@
|
||||
./mwstate
|
||||
#########
|
||||
|
||||
.. autodoxygenfile:: mwstate/character.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwstate/charactermanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwstate/statemanagerimp.hpp
|
||||
:project: openmw
|
@ -1,132 +0,0 @@
|
||||
./mwworld
|
||||
#########
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionalchemy.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionapply.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actiondoor.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actioneat.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionequip.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/action.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionopen.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionread.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionrepair.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionsoulgem.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actiontake.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actiontalk.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actionteleport.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/actiontrap.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/cellpreloader.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/cellref.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/cellreflist.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/cells.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/cellstore.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/cellvisitors.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/class.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/containerstore.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/contentloader.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/customdata.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/esmloader.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/esmstore.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/failedaction.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/globals.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/inventorystore.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/livecellref.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/localscripts.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/manualref.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/nullaction.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/player.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/projectilemanager.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/ptr.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/recordcmp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/refdata.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/scene.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/store.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/timestamp.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/weather.hpp
|
||||
:project: openmw
|
||||
|
||||
.. autodoxygenfile:: mwworld/worldimp.hpp
|
||||
:project: openmw
|
||||
|
@ -0,0 +1,2 @@
|
||||
[Paths]
|
||||
Plugins = PlugIns
|
Loading…
Reference in New Issue