OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
worldimp.hpp
Go to the documentation of this file.
1 #ifndef GAME_MWWORLD_WORLDIMP_H
2 #define GAME_MWWORLD_WORLDIMP_H
3 
4 #include <osg/ref_ptr>
5 
8 
9 #include "../mwbase/world.hpp"
10 
11 #include "ptr.hpp"
12 #include "scene.hpp"
13 #include "esmstore.hpp"
14 #include "cells.hpp"
15 #include "localscripts.hpp"
16 #include "timestamp.hpp"
17 #include "globals.hpp"
18 #include "contentloader.hpp"
19 
20 namespace osg
21 {
22  class Group;
23 }
24 
25 namespace osgViewer
26 {
27  class Viewer;
28 }
29 
30 namespace Resource
31 {
32  class ResourceSystem;
33 }
34 
35 namespace SceneUtil
36 {
37  class WorkQueue;
38 }
39 
40 namespace ESM
41 {
42  struct Position;
43 }
44 
45 namespace Files
46 {
47  class Collections;
48 }
49 
50 namespace MWRender
51 {
52  class SkyManager;
53  class Animation;
54  class Camera;
55 }
56 
57 namespace ToUTF8
58 {
59  class Utf8Encoder;
60 }
61 
62 struct ContentLoader;
63 
64 namespace MWWorld
65 {
66  class WeatherManager;
67  class Player;
68  class ProjectileManager;
69 
71 
72  class World final: public MWBase::World
73  {
75 
77 
78  std::vector<ESM::ESMReader> mEsm;
82  bool mSky;
83 
90 
92 
93  std::string mCurrentWorldSpace;
94 
95  std::unique_ptr<MWWorld::Player> mPlayer;
96  std::unique_ptr<MWPhysics::PhysicsSystem> mPhysics;
97  std::unique_ptr<MWRender::RenderingManager> mRendering;
98  std::unique_ptr<MWWorld::Scene> mWorldScene;
99  std::unique_ptr<MWWorld::WeatherManager> mWeatherManager;
100  std::shared_ptr<ProjectileManager> mProjectileManager;
101 
102  bool mGodMode;
104  std::vector<std::string> mContentFiles;
105 
106  std::string mUserDataPath;
107 
108  // not implemented
109  World (const World&);
110  World& operator= (const World&);
111 
113 
114  std::string mStartupScript;
115 
116  std::map<MWWorld::Ptr, int> mDoorStates;
118 
119  std::string mStartCell;
120 
121  void updateWeather(float duration, bool paused = false);
122  int getDaysPerMonth (int month) const;
123 
124  void rotateObjectImp (const Ptr& ptr, const osg::Vec3f& rot, bool adjust);
125 
126  Ptr moveObjectImp (const Ptr& ptr, float x, float y, float z, bool movePhysics=true);
128 
129  Ptr copyObjectToCell(const ConstPtr &ptr, CellStore* cell, ESM::Position pos, int count, bool adjustPos);
130 
131  void updateSoundListener();
132  void updatePlayer();
133 
134  void preloadSpells();
135 
136  MWWorld::Ptr getFacedObject(float maxDistance, bool ignorePlayer=true);
137 
138  public: // FIXME
139  void removeContainerScripts(const Ptr& reference) override;
140  private:
141  void addContainerScripts(const Ptr& reference, CellStore* cell);
142  void PCDropped (const Ptr& item);
143 
144  void processDoors(float duration);
146 
147  void doPhysics(float duration);
149 
150  void ensureNeededRecords();
151 
152  void fillGlobalVariables();
153 
160  void loadContentFiles(const Files::Collections& fileCollections,
161  const std::vector<std::string>& content, ContentLoader& contentLoader);
162 
164 
166 
169  bool mGoToJail;
173 
175 
176  float feetToGameUnits(float feet);
178 
179  MWWorld::ConstPtr getClosestMarker( const MWWorld::Ptr &ptr, const std::string &id );
180  MWWorld::ConstPtr getClosestMarkerFromExteriorPosition( const osg::Vec3f& worldPos, const std::string &id );
181 
182  public:
183 
184  World (
185  osgViewer::Viewer* viewer,
186  osg::ref_ptr<osg::Group> rootNode,
187  Resource::ResourceSystem* resourceSystem, SceneUtil::WorkQueue* workQueue,
188  const Files::Collections& fileCollections,
189  const std::vector<std::string>& contentFiles,
190  ToUTF8::Utf8Encoder* encoder, const std::map<std::string,std::string>& fallbackMap,
191  int activationDistanceOverride, const std::string& startCell, const std::string& startupScript, const std::string& resourcePath, const std::string& userDataPath);
192 
193  virtual ~World();
194 
195  void startNewGame (bool bypass) override;
197 
198  void clear() override;
199 
200  int countSavedGameRecords() const override;
201  int countSavedGameCells() const override;
202 
203  void write (ESM::ESMWriter& writer, Loading::Listener& progress) const override;
204 
205  void readRecord (ESM::ESMReader& reader, uint32_t type,
206  const std::map<int, int>& contentFileMap) override;
207 
208  CellStore *getExterior (int x, int y) override;
209 
210  CellStore *getInterior (const std::string& name) override;
211 
212  CellStore *getCell (const ESM::CellId& id) override;
213 
214  //switch to POV before showing player's death animation
215  void useDeathCamera() override;
216 
217  void setWaterHeight(const float height) override;
218 
219  void rotateWorldObject (const MWWorld::Ptr& ptr, osg::Quat rotate) override;
220 
221  bool toggleWater() override;
222  bool toggleWorld() override;
223  bool toggleBorders() override;
224 
225  void adjustSky() override;
226 
227  const Fallback::Map *getFallback() const override;
228 
229  Player& getPlayer() override;
230  MWWorld::Ptr getPlayerPtr() override;
231 
232  const MWWorld::ESMStore& getStore() const override;
233 
234  std::vector<ESM::ESMReader>& getEsmReader() override;
235 
236  LocalScripts& getLocalScripts() override;
237 
238  bool hasCellChanged() const override;
240 
241  bool isCellExterior() const override;
242 
243  bool isCellQuasiExterior() const override;
244 
245  osg::Vec2f getNorthVector (const CellStore* cell) override;
247 
248  void getDoorMarkers (MWWorld::CellStore* cell, std::vector<DoorMarker>& out) override;
250 
251  void setGlobalInt (const std::string& name, int value) override;
253 
254  void setGlobalFloat (const std::string& name, float value) override;
256 
257  int getGlobalInt (const std::string& name) const override;
259 
260  float getGlobalFloat (const std::string& name) const override;
262 
263  char getGlobalVariableType (const std::string& name) const override;
265 
266  std::string getCellName (const MWWorld::CellStore *cell = 0) const override;
271 
272  void removeRefScript (MWWorld::RefData *ref) override;
273  //< Remove the script attached to ref from mLocalScripts
274 
275  Ptr getPtr (const std::string& name, bool activeOnly) override;
278 
279  Ptr searchPtr (const std::string& name, bool activeOnly) override;
282 
283  Ptr searchPtrViaActorId (int actorId) override;
285 
286  MWWorld::Ptr findContainer (const MWWorld::ConstPtr& ptr) override;
289 
290  void adjustPosition (const Ptr& ptr, bool force) override;
293 
294  void fixPosition (const Ptr& actor) override;
296 
297  void enable (const Ptr& ptr) override;
298 
299  void disable (const Ptr& ptr) override;
300 
301  void advanceTime (double hours, bool incremental = false) override;
303 
304  void setHour (double hour) override;
306 
307  void setMonth (int month) override;
309 
310  void setDay (int day) override;
312 
313  int getDay() const override;
314  int getMonth() const override;
315  int getYear() const override;
316 
317  std::string getMonthName (int month = -1) const override;
319 
320  TimeStamp getTimeStamp() const override;
322 
323  bool toggleSky() override;
325 
326  void changeWeather (const std::string& region, const unsigned int id) override;
327 
328  int getCurrentWeather() const override;
329 
330  int getMasserPhase() const override;
331 
332  int getSecundaPhase() const override;
333 
334  void setMoonColour (bool red) override;
335 
336  void modRegion(const std::string &regionid, const std::vector<char> &chances) override;
337 
338  float getTimeScaleFactor() const override;
339 
340  void changeToInteriorCell (const std::string& cellName, const ESM::Position& position, bool adjustPlayerPos, bool changeEvent = true) override;
343 
344  void changeToExteriorCell (const ESM::Position& position, bool adjustPlayerPos, bool changeEvent = true) override;
347 
348  void changeToCell (const ESM::CellId& cellId, const ESM::Position& position, bool adjustPlayerPos, bool changeEvent=true) override;
350 
351  const ESM::Cell *getExterior (const std::string& cellName) const override;
353 
354  void markCellAsUnchanged() override;
355 
356  MWWorld::Ptr getFacedObject() override;
358 
359  float getDistanceToFacedObject() override;
360 
364  std::pair<MWWorld::Ptr,osg::Vec3f> getHitContact(const MWWorld::ConstPtr &ptr, float distance, std::vector<MWWorld::Ptr> &targets) override;
365 
367  void deleteObject (const Ptr& ptr) override;
368 
369  void undeleteObject (const Ptr& ptr) override;
370 
371  MWWorld::Ptr moveObject (const Ptr& ptr, float x, float y, float z) override;
373 
374  MWWorld::Ptr moveObject (const Ptr& ptr, CellStore* newCell, float x, float y, float z, bool movePhysics=true) override;
376 
377  void scaleObject (const Ptr& ptr, float scale) override;
378 
383  void rotateObject (const Ptr& ptr,float x,float y,float z, bool adjust = false) override;
384 
387 
388  MWWorld::Ptr safePlaceObject (const MWWorld::ConstPtr& ptr, const MWWorld::ConstPtr& referenceObject, MWWorld::CellStore* referenceCell, int direction, float distance) override;
391 
392  float getMaxActivationDistance() override;
393 
394  void indexToPosition (int cellX, int cellY, float &x, float &y, bool centre = false)
395  const override;
397 
398  void positionToIndex (float x, float y, int &cellX, int &cellY) const override;
400 
401  void queueMovement(const Ptr &ptr, const osg::Vec3f &velocity) override;
404 
405  bool castRay (float x1, float y1, float z1, float x2, float y2, float z2, bool ignoreDoors=false) override;
407 
408  bool toggleCollisionMode() override;
412 
413  bool toggleRenderMode (MWRender::RenderMode mode) override;
416 
417  const ESM::Potion *createRecord (const ESM::Potion& record) override;
420 
421  const ESM::Spell *createRecord (const ESM::Spell& record) override;
424 
425  const ESM::Class *createRecord (const ESM::Class& record) override;
428 
429  const ESM::Cell *createRecord (const ESM::Cell& record) override;
432 
433  const ESM::NPC *createRecord(const ESM::NPC &record) override;
436 
437  const ESM::Armor *createRecord (const ESM::Armor& record) override;
440 
441  const ESM::Weapon *createRecord (const ESM::Weapon& record) override;
444 
445  const ESM::Clothing *createRecord (const ESM::Clothing& record) override;
448 
449  const ESM::Enchantment *createRecord (const ESM::Enchantment& record) override;
452 
453  const ESM::Book *createRecord (const ESM::Book& record) override;
456 
457  const ESM::CreatureLevList *createOverrideRecord (const ESM::CreatureLevList& record) override;
460 
461  const ESM::ItemLevList *createOverrideRecord (const ESM::ItemLevList& record) override;
464 
465  void update (float duration, bool paused) override;
466 
467  void updateWindowManager () override;
468 
469  MWWorld::Ptr placeObject (const MWWorld::ConstPtr& object, float cursorX, float cursorY, int amount) override;
475 
476  MWWorld::Ptr dropObjectOnGround (const MWWorld::Ptr& actor, const MWWorld::ConstPtr& object, int amount) override;
481 
482  bool canPlaceObject(float cursorX, float cursorY) override;
484 
485  void processChangedSettings(const Settings::CategorySettingVector& settings) override;
486 
487  bool isFlying(const MWWorld::Ptr &ptr) const override;
488  bool isSlowFalling(const MWWorld::Ptr &ptr) const override;
490  bool isSubmerged(const MWWorld::ConstPtr &object) const override;
491  bool isSwimming(const MWWorld::ConstPtr &object) const override;
492  bool isUnderwater(const MWWorld::CellStore* cell, const osg::Vec3f &pos) const override;
493  bool isUnderwater(const MWWorld::ConstPtr &object, const float heightRatio) const override;
494  bool isWading(const MWWorld::ConstPtr &object) const override;
495  bool isWaterWalkingCastableOnTarget(const MWWorld::ConstPtr &target) const override;
496  bool isOnGround(const MWWorld::Ptr &ptr) const override;
497 
498  osg::Matrixf getActorHeadTransform(const MWWorld::ConstPtr& actor) const override;
499 
500  void togglePOV() override;
501 
502  bool isFirstPerson() const override;
503 
504  void togglePreviewMode(bool enable) override;
505 
506  bool toggleVanityMode(bool enable) override;
507 
508  void allowVanityMode(bool allow) override;
509 
510  void togglePlayerLooking(bool enable) override;
511 
512  void changeVanityModeScale(float factor) override;
513 
514  bool vanityRotateCamera(float * rot) override;
515  void setCameraDistance(float dist, bool adjust = false, bool override = true) override;
516 
517  void setupPlayer() override;
518  void renderPlayer() override;
519 
521  void activateDoor(const MWWorld::Ptr& door) override;
522 
526  void activateDoor(const MWWorld::Ptr& door, int state) override;
527 
528  void getActorsStandingOn (const MWWorld::ConstPtr& object, std::vector<MWWorld::Ptr> &actors) override;
529  bool getPlayerStandingOn (const MWWorld::ConstPtr& object) override;
530  bool getActorStandingOn (const MWWorld::ConstPtr& object) override;
531  bool getPlayerCollidingWith(const MWWorld::ConstPtr& object) override;
532  bool getActorCollidingWith (const MWWorld::ConstPtr& object) override;
533  void hurtStandingActors (const MWWorld::ConstPtr& object, float dmgPerSecond) override;
536  void hurtCollidingActors (const MWWorld::ConstPtr& object, float dmgPerSecond) override;
539 
540  float getWindSpeed() override;
541 
542  void getContainersOwnedBy (const MWWorld::ConstPtr& npc, std::vector<MWWorld::Ptr>& out) override;
544  void getItemsOwnedBy (const MWWorld::ConstPtr& npc, std::vector<MWWorld::Ptr>& out) override;
546 
547  bool getLOS(const MWWorld::ConstPtr& actor,const MWWorld::ConstPtr& targetActor) override;
549 
550  float getDistToNearestRayHit(const osg::Vec3f& from, const osg::Vec3f& dir, float maxDist, bool includeWater = false) override;
551 
552  void enableActorCollision(const MWWorld::Ptr& actor, bool enable) override;
553 
554  RestPermitted canRest() const override;
556 
557  void rest() override;
558 
560  MWRender::Animation* getAnimation(const MWWorld::Ptr &ptr) override;
561  const MWRender::Animation* getAnimation(const MWWorld::ConstPtr &ptr) const override;
562  void reattachPlayerCamera() override;
563 
565  void screenshot (osg::Image* image, int w, int h) override;
566  bool screenshot360 (osg::Image* image, std::string settingStr) override;
567 
570  bool findExteriorPosition(const std::string &name, ESM::Position &pos) override;
571 
574  bool findInteriorPosition(const std::string &name, ESM::Position &pos) override;
575 
577  void enableTeleporting(bool enable) override;
578 
580  bool isTeleportingEnabled() const override;
581 
583  void enableLevitation(bool enable) override;
584 
586  bool isLevitationEnabled() const override;
587 
588  bool getGodModeState() override;
589 
590  bool toggleGodMode() override;
591 
592  bool toggleScripts() override;
593  bool getScriptsEnabled() const override;
594 
600  bool startSpellCast (const MWWorld::Ptr& actor) override;
601 
606  void castSpell (const MWWorld::Ptr& actor, bool manualSpell=false) override;
607 
608  void launchMagicBolt (const std::string& spellId, const MWWorld::Ptr& caster, const osg::Vec3f& fallbackDirection) override;
609  void launchProjectile (MWWorld::Ptr& actor, MWWorld::Ptr& projectile,
610  const osg::Vec3f& worldPos, const osg::Quat& orient, MWWorld::Ptr& bow, float speed, float attackStrength) override;
611 
612  void applyLoopingParticles(const MWWorld::Ptr& ptr) override;
613 
614  const std::vector<std::string>& getContentFiles() const override;
615  void breakInvisibility (const MWWorld::Ptr& actor) override;
616 
617  // Allow NPCs to use torches?
618  bool useTorches() const override;
619 
620  bool findInteriorPositionInWorldSpace(const MWWorld::CellStore* cell, osg::Vec3f& result) override;
621 
624  void teleportToClosestMarker (const MWWorld::Ptr& ptr,
625  const std::string& id) override;
626 
630  void listDetectedReferences (const MWWorld::Ptr& ptr, std::vector<MWWorld::Ptr>& out,
631  DetectionType type) override;
632 
635  void updateDialogueGlobals() override;
636 
638  void confiscateStolenItems(const MWWorld::Ptr& ptr) override;
639 
640  void goToJail () override;
641 
643  void spawnRandomCreature(const std::string& creatureList) override;
644 
646  void spawnBloodEffect (const MWWorld::Ptr& ptr, const osg::Vec3f& worldPosition) override;
647 
648  void spawnEffect (const std::string& model, const std::string& textureOverride, const osg::Vec3f& worldPos, float scale = 1.f, bool isMagicVFX = true) override;
649 
650  void explodeSpell(const osg::Vec3f& origin, const ESM::EffectList& effects, const MWWorld::Ptr& caster, const MWWorld::Ptr& ignore,
651  ESM::RangeType rangeType, const std::string& id, const std::string& sourceName,
652  const bool fromProjectile=false) override;
653 
654  void activate (const MWWorld::Ptr& object, const MWWorld::Ptr& actor) override;
655 
657  bool isInStorm() const override;
658 
660  osg::Vec3f getStormDirection() const override;
661 
663  void resetActors() override;
664 
665  bool isWalkingOnWater (const MWWorld::ConstPtr& actor) const override;
666 
669  osg::Vec3f aimToTarget(const MWWorld::ConstPtr& actor, const MWWorld::ConstPtr& target) override;
670 
672  float getHitDistance(const MWWorld::ConstPtr& actor, const MWWorld::ConstPtr& target) override;
673 
674  bool isPlayerInJail() const override;
675 
676  void setPlayerTraveling(bool traveling) override;
677  bool isPlayerTraveling() const override;
678 
680  float getTerrainHeightAt(const osg::Vec3f& worldPos) const override;
681 
683  osg::Vec3f getHalfExtents(const MWWorld::ConstPtr& actor, bool rendering=false) const override;
684 
687  std::string exportSceneGraph(const MWWorld::Ptr& ptr) override;
688 
690  void preloadEffects(const ESM::EffectList* effectList) override;
691  };
692 }
693 
694 #endif
std::unique_ptr< MWRender::RenderingManager > mRendering
Definition: worldimp.hpp:97
void changeToExteriorCell(const ESM::Position &position, bool adjustPlayerPos, bool changeEvent=true) override
Definition: worldimp.cpp:994
std::vector< ESM::ESMReader > mEsm
Definition: worldimp.hpp:78
void enableLevitation(bool enable) override
Enables or disables use of levitation spell effect.
Definition: worldimp.cpp:2746
int getDay() const override
Definition: worldimp.cpp:909
Cell container.
Definition: cells.hpp:28
void disable(const Ptr &ptr) override
Definition: worldimp.cpp:800
void updateWindowManager() override
Definition: worldimp.cpp:1820
std::unique_ptr< MWWorld::Player > mPlayer
Definition: worldimp.hpp:95
void useDeathCamera() override
Definition: worldimp.cpp:546
int getGlobalInt(const std::string &name) const override
Get value independently from real type.
Definition: worldimp.cpp:606
bool isSlowFalling(const MWWorld::Ptr &ptr) const override
Definition: worldimp.cpp:2161
bool isInStorm() const override
Definition: worldimp.cpp:2506
bool isFlying(const MWWorld::Ptr &ptr) const override
Definition: worldimp.cpp:2137
float mDistanceToFacedObject
Definition: worldimp.hpp:165
osg::Vec3f getHalfExtents(const MWWorld::ConstPtr &actor, bool rendering=false) const override
Return physical or rendering half extents of the given actor.
Definition: worldimp.cpp:3428
Wrapper class that constructs and provides access to the most commonly used resource subsystems...
Definition: resourcesystem.hpp:30
bool toggleCollisionMode() override
Definition: worldimp.cpp:1582
bool isOnGround(const MWWorld::Ptr &ptr) const override
Definition: worldimp.cpp:2229
CellStore * getInterior(const std::string &name) override
Definition: worldimp.cpp:533
const Fallback::Map * getFallback() const override
Definition: worldimp.cpp:523
bool isCellQuasiExterior() const override
Definition: worldimp.cpp:1878
bool toggleRenderMode(MWRender::RenderMode mode) override
Definition: worldimp.cpp:1587
void launchMagicBolt(const std::string &spellId, const MWWorld::Ptr &caster, const osg::Vec3f &fallbackDirection) override
Definition: worldimp.cpp:2983
LocalScripts mLocalScripts
Definition: worldimp.hpp:80
bool getActorCollidingWith(const MWWorld::ConstPtr &object) override
Definition: worldimp.cpp:2423
void enableActorCollision(const MWWorld::Ptr &actor, bool enable) override
Definition: worldimp.cpp:2613
bool isUnderwater(const MWWorld::CellStore *cell, const osg::Vec3f &pos) const override
Definition: worldimp.cpp:2200
int mActivationDistanceOverride
Definition: worldimp.hpp:112
int mDaysInPrison
Definition: worldimp.hpp:170
Player & getPlayer() override
Definition: worldimp.cpp:557
void markCellAsUnchanged() override
Definition: worldimp.cpp:1020
void activate(const MWWorld::Ptr &object, const MWWorld::Ptr &actor) override
Definition: worldimp.cpp:3582
MWWorld::Ptr safePlaceObject(const MWWorld::ConstPtr &ptr, const MWWorld::ConstPtr &referenceObject, MWWorld::CellStore *referenceCell, int direction, float distance) override
Definition: worldimp.cpp:1408
Definition: animation.hpp:85
const ESM::CreatureLevList * createOverrideRecord(const ESM::CreatureLevList &record) override
Definition: worldimp.cpp:1618
osg::Vec2f getNorthVector(const CellStore *cell) override
get north vector for given interior cell
Definition: worldimp.cpp:1906
void preloadEffects(const ESM::EffectList *effectList) override
Preload VFX associated with this effect list.
Definition: worldimp.cpp:3659
Interface for the World (implemented in MWWorld)
Definition: world.hpp:77
Fallback::Map mFallback
Definition: worldimp.hpp:76
void breakInvisibility(const MWWorld::Ptr &actor) override
Definition: worldimp.cpp:3006
A work queue that users can push work items onto, to be completed by one or more background threads...
Definition: workqueue.hpp:48
Definition: esmreader.hpp:21
void togglePOV() override
Definition: worldimp.cpp:2234
void renderPlayer() override
Definition: worldimp.cpp:2298
RestPermitted canRest() const override
check if the player is allowed to rest
Definition: worldimp.cpp:2324
Definition: loadspel.hpp:14
void rotateObjectImp(const Ptr &ptr, const osg::Vec3f &rot, bool adjust)
Definition: worldimp.cpp:1285
void updateSoundListener()
Definition: worldimp.cpp:1798
ESM::Variant * mGameHour
Definition: worldimp.hpp:84
bool mPlayerInJail
Definition: worldimp.hpp:172
void doPhysics(float duration)
Run physics simulation and modify world accordingly.
Definition: worldimp.cpp:1485
void changeToInteriorCell(const std::string &cellName, const ESM::Position &position, bool adjustPlayerPos, bool changeEvent=true) override
Definition: worldimp.cpp:976
Definition: loadarmo.hpp:66
MWWorld::Ptr placeObject(const MWWorld::ConstPtr &ptr, MWWorld::CellStore *cell, ESM::Position pos) override
Place an object. Makes a copy of the Ptr.
Definition: worldimp.cpp:1403
void applyLoopingParticles(const MWWorld::Ptr &ptr) override
Definition: worldimp.cpp:2988
osg::Vec3f getStormDirection() const override
Definition: worldimp.cpp:2514
bool screenshot360(osg::Image *image, std::string settingStr) override
Definition: worldimp.cpp:2363
bool isSubmerged(const MWWorld::ConstPtr &object) const override
Is the head of the creature underwater?
Definition: worldimp.cpp:2173
NPC object representing the player and additional player data.
Definition: player.hpp:32
contains settings imported from the Morrowind INI file.
Definition: fallback.hpp:12
void allowVanityMode(bool allow) override
Definition: worldimp.cpp:2254
char getGlobalVariableType(const std::string &name) const override
Return ' ', if there is no global variable with this name.
Definition: worldimp.cpp:616
void update(float duration, bool paused) override
Definition: worldimp.cpp:1674
std::pair< MWWorld::Ptr, osg::Vec3f > getHitContact(const MWWorld::ConstPtr &ptr, float distance, std::vector< MWWorld::Ptr > &targets) override
Definition: worldimp.cpp:1076
void advanceTime(double hours, bool incremental=false) override
Advance in-game time.
Definition: worldimp.cpp:818
void enableTeleporting(bool enable) override
Enables or disables use of teleport spell effects (recall, intervention, etc).
Definition: worldimp.cpp:2736
Definition: globals.hpp:28
TimeStamp getTimeStamp() const override
Return current in-game time stamp.
Definition: worldimp.cpp:944
CellStore * getExterior(int x, int y) override
Definition: worldimp.cpp:528
int getMasserPhase() const override
Definition: worldimp.cpp:956
Cells mCells
Definition: worldimp.hpp:91
std::map< MWWorld::Ptr, int > mDoorStates
only holds doors that are currently moving. 1 = opening, 2 = closing
Definition: worldimp.hpp:116
void updatePlayer()
Definition: worldimp.cpp:1709
bool toggleBorders() override
Definition: worldimp.cpp:1991
void setMonth(int month) override
Set in-game time month.
Definition: worldimp.cpp:888
void goToJail() override
Definition: worldimp.cpp:3378
float getTimeScaleFactor() const override
Definition: worldimp.cpp:971
void write(ESM::ESMWriter &writer, Loading::Listener &progress) const override
Definition: worldimp.cpp:343
void modRegion(const std::string &regionid, const std::vector< char > &chances) override
Definition: worldimp.cpp:1901
int getDaysPerMonth(int month) const
Definition: worldimp.cpp:112
Definition: loadinglistener.hpp:8
void enable(const Ptr &ptr) override
Definition: worldimp.cpp:766
bool useTorches() const override
Definition: worldimp.cpp:3017
void castSpell(const MWWorld::Ptr &actor, bool manualSpell=false) override
Cast the actual spell, should be called mid-animation.
Definition: worldimp.cpp:2850
std::string getMonthName(int month=-1) const override
Return name of month (-1: current month)
Definition: worldimp.cpp:924
MWRender::Animation * getAnimation(const MWWorld::Ptr &ptr) override
Definition: worldimp.cpp:2348
bool getLOS(const MWWorld::ConstPtr &actor, const MWWorld::ConstPtr &targetActor) override
get Line of Sight (morrowind stupid implementation)
Definition: worldimp.cpp:2585
void adjustPosition(const Ptr &ptr, bool force) override
Definition: worldimp.cpp:1325
void setGlobalInt(const std::string &name, int value) override
Set value independently from real type.
Definition: worldimp.cpp:582
RangeType
Definition: defs.hpp:27
void fillGlobalVariables()
Definition: worldimp.cpp:201
void addContainerScripts(const Ptr &reference, CellStore *cell)
Definition: worldimp.cpp:746
Definition: refdata.hpp:29
void launchProjectile(MWWorld::Ptr &actor, MWWorld::Ptr &projectile, const osg::Vec3f &worldPos, const osg::Quat &orient, MWWorld::Ptr &bow, float speed, float attackStrength) override
Definition: worldimp.cpp:2953
ESM::Variant * mYear
Definition: worldimp.hpp:88
bool getGodModeState() override
Definition: worldimp.cpp:2761
std::set< std::pair< std::string, std::string > > CategorySettingVector
Definition: settings.hpp:11
void undeleteObject(const Ptr &ptr) override
Definition: worldimp.cpp:1132
MWWorld::Ptr getPlayerPtr() override
Definition: worldimp.cpp:3316
ESM::Variant * mTimeScale
Definition: worldimp.hpp:89
bool getPlayerStandingOn(const MWWorld::ConstPtr &object) override
Definition: worldimp.cpp:2399
virtual ~World()
Definition: worldimp.cpp:495
MWWorld::Ptr dropObjectOnGround(const MWWorld::Ptr &actor, const MWWorld::ConstPtr &object, int amount) override
Definition: worldimp.cpp:2104
Resource::ResourceSystem * mResourceSystem
Definition: worldimp.hpp:74
void loadContentFiles(const Files::Collections &fileCollections, const std::vector< std::string > &content, ContentLoader &contentLoader)
loadContentFiles - Loads content files (esm,esp,omwgame,omwaddon)
Definition: worldimp.cpp:2784
void preloadSpells()
Definition: worldimp.cpp:1765
float getTerrainHeightAt(const osg::Vec3f &worldPos) const override
Return terrain height at worldPos position.
Definition: worldimp.cpp:3423
bool vanityRotateCamera(float *rot) override
Definition: worldimp.cpp:2269
Definition: esmwriter.hpp:17
void getActorsStandingOn(const MWWorld::ConstPtr &object, std::vector< MWWorld::Ptr > &actors) override
get a list of actors standing on object
Definition: worldimp.cpp:2412
bool startSpellCast(const MWWorld::Ptr &actor) override
startSpellCast attempt to start casting a spell. Might fail immediately if conditions are not met...
Definition: worldimp.cpp:2806
The game world and its visual representation.
Definition: worldimp.hpp:72
Ptr copyObjectToCell(const ConstPtr &ptr, CellStore *cell, ESM::Position pos, int count, bool adjustPos)
Definition: worldimp.cpp:2051
MWWorld::ESMStore mStore
Definition: worldimp.hpp:79
bool isWaterWalkingCastableOnTarget(const MWWorld::ConstPtr &target) const override
Definition: worldimp.cpp:2211
const std::vector< std::string > & getContentFiles() const override
Definition: worldimp.cpp:3001
void spawnEffect(const std::string &model, const std::string &textureOverride, const osg::Vec3f &worldPos, float scale=1.f, bool isMagicVFX=true) override
Definition: worldimp.cpp:3496
std::string exportSceneGraph(const MWWorld::Ptr &ptr) override
Definition: worldimp.cpp:3440
ESM::Variant * mMonth
Definition: worldimp.hpp:87
void clear() override
Definition: worldimp.cpp:292
ESM::Variant * mDaysPassed
Definition: worldimp.hpp:85
std::unique_ptr< MWPhysics::PhysicsSystem > mPhysics
Definition: worldimp.hpp:96
Definition: esmstore.hpp:17
void updateDialogueGlobals() override
Definition: worldimp.cpp:3321
MWWorld::Ptr getFacedObject() override
Return pointer to the object the player is looking at, if it is within activation range...
Definition: worldimp.cpp:1034
void spawnRandomCreature(const std::string &creatureList) override
Spawn a random creature from a levelled list next to the player.
Definition: worldimp.cpp:3447
float getDistanceToFacedObject() override
Definition: worldimp.cpp:1054
void positionToIndex(float x, float y, int &cellX, int &cellY) const override
Convert position to cell numbers.
Definition: worldimp.cpp:1474
bool mPlayerTraveling
Definition: worldimp.hpp:171
void scaleObject(const Ptr &ptr, float scale) override
Definition: worldimp.cpp:1278
void setHour(double hour) override
Set in-game time hour.
Definition: worldimp.cpp:841
void changeVanityModeScale(float factor) override
Definition: worldimp.cpp:2264
float getMaxActivationDistance() override
Definition: worldimp.cpp:1025
float mSpellPreloadTimer
Definition: worldimp.hpp:174
void getDoorMarkers(MWWorld::CellStore *cell, std::vector< DoorMarker > &out) override
get a list of teleport door markers for a given cell, to be displayed on the local map ...
Definition: worldimp.cpp:1969
int getMonth() const override
Definition: worldimp.cpp:914
void setPlayerTraveling(bool traveling) override
Definition: worldimp.cpp:3413
bool mLevitationEnabled
Definition: worldimp.hpp:168
osg::Vec3f aimToTarget(const MWWorld::ConstPtr &actor, const MWWorld::ConstPtr &target) override
Definition: worldimp.cpp:3626
bool getScriptsEnabled() const override
Definition: worldimp.cpp:2779
void removeContainerScripts(const Ptr &reference) override
Definition: worldimp.cpp:781
void rest() override
Definition: worldimp.cpp:3166
std::shared_ptr< ProjectileManager > mProjectileManager
Definition: worldimp.hpp:100
bool mGodMode
Definition: worldimp.hpp:102
Definition: loadnpc.hpp:23
float getActivationDistancePlusTelekinesis()
Definition: worldimp.cpp:3304
void getContainersOwnedBy(const MWWorld::ConstPtr &npc, std::vector< MWWorld::Ptr > &out) override
get all containers in active cells owned by this Npc
Definition: worldimp.cpp:2549
void spawnBloodEffect(const MWWorld::Ptr &ptr, const osg::Vec3f &worldPosition) override
Spawn a blood effect for ptr at worldPosition.
Definition: worldimp.cpp:3466
bool isCellExterior() const override
Definition: worldimp.cpp:1868
bool isWalkingOnWater(const MWWorld::ConstPtr &actor) const override
Definition: worldimp.cpp:3618
bool isLevitationEnabled() const override
Returns true if levitation spell effect is allowed.
Definition: worldimp.cpp:2751
void hurtCollidingActors(const MWWorld::ConstPtr &object, float dmgPerSecond) override
Definition: worldimp.cpp:2464
bool toggleScripts() override
Definition: worldimp.cpp:2773
bool getPlayerCollidingWith(const MWWorld::ConstPtr &object) override
Definition: worldimp.cpp:2417
std::vector< ESM::ESMReader > & getEsmReader() override
Definition: worldimp.cpp:567
Mutable state of a cell.
Definition: cellstore.hpp:51
std::string mUserDataPath
Definition: worldimp.hpp:106
Ptr searchPtrViaActorId(int actorId) override
Search is limited to the active cells.
Definition: worldimp.cpp:692
bool findInteriorPosition(const std::string &name, ESM::Position &pos) override
Definition: worldimp.cpp:2620
void ensureNeededRecords()
Definition: worldimp.cpp:407
void listDetectedReferences(const MWWorld::Ptr &ptr, std::vector< MWWorld::Ptr > &out, DetectionType type) override
Definition: worldimp.cpp:3271
int getYear() const override
Definition: worldimp.cpp:919
void hurtStandingActors(const MWWorld::ConstPtr &object, float dmgPerSecond) override
Definition: worldimp.cpp:2430
Pointer to a const LiveCellRef.
Definition: ptr.hpp:90
std::string getCellName(const MWWorld::CellStore *cell=0) const override
Definition: worldimp.cpp:621
void removeRefScript(MWWorld::RefData *ref) override
Definition: worldimp.cpp:635
Ptr getPtr(const std::string &name, bool activeOnly) override
Definition: worldimp.cpp:684
MWWorld::Ptr findContainer(const MWWorld::ConstPtr &ptr) override
Definition: worldimp.cpp:720
void indexToPosition(int cellX, int cellY, float &x, float &y, bool centre=false) const override
Convert cell numbers to position.
Definition: worldimp.cpp:1460
bool isPlayerInJail() const override
Definition: worldimp.cpp:3408
void changeWeather(const std::string &region, const unsigned int id) override
Definition: worldimp.cpp:1896
Definition: contentloader.hpp:14
void queueMovement(const Ptr &ptr, const osg::Vec3f &velocity) override
Definition: worldimp.cpp:1480
Definition: loadlevlist.hpp:46
void changeToCell(const ESM::CellId &cellId, const ESM::Position &position, bool adjustPlayerPos, bool changeEvent=true) override
Definition: worldimp.cpp:1009
std::unique_ptr< MWWorld::WeatherManager > mWeatherManager
Definition: worldimp.hpp:99
int getCurrentWeather() const override
Definition: worldimp.cpp:1891
float feetToGameUnits(float feet)
Definition: worldimp.cpp:3297
void rotateWorldObject(const MWWorld::Ptr &ptr, osg::Quat rotate) override
Definition: worldimp.cpp:1394
float distance(const ESM::Pathgrid::Point &point, float x, float y, float z)
Definition: pathfinding.cpp:69
const MWWorld::ESMStore & getStore() const override
Definition: worldimp.cpp:562
void explodeSpell(const osg::Vec3f &origin, const ESM::EffectList &effects, const MWWorld::Ptr &caster, const MWWorld::Ptr &ignore, ESM::RangeType rangeType, const std::string &id, const std::string &sourceName, const bool fromProjectile=false) override
Definition: worldimp.cpp:3501
Definition: loadcell.hpp:64
const ESM::Potion * createRecord(const ESM::Potion &record) override
Definition: worldimp.cpp:1598
std::string mCurrentWorldSpace
Definition: worldimp.hpp:93
bool mGoToJail
Definition: worldimp.hpp:169
In-game time stamp.
Definition: timestamp.hpp:14
bool canPlaceObject(float cursorX, float cursorY) override
Definition: worldimp.cpp:2033
void reattachPlayerCamera() override
Definition: worldimp.cpp:2756
bool findInteriorPositionInWorldSpace(const MWWorld::CellStore *cell, osg::Vec3f &result) override
Definition: worldimp.cpp:3038
float getWindSpeed() override
Definition: worldimp.cpp:2498
void updateWeather(float duration, bool paused=false)
Definition: worldimp.cpp:3190
void setWaterHeight(const float height) override
Definition: worldimp.cpp:1975
void screenshot(osg::Image *image, int w, int h) override
Definition: worldimp.cpp:2358
void togglePreviewMode(bool enable) override
Definition: worldimp.cpp:2244
Definition: defs.hpp:38
bool getActorStandingOn(const MWWorld::ConstPtr &object) override
Definition: worldimp.cpp:2405
Definition: loadclot.hpp:18
void confiscateStolenItems(const MWWorld::Ptr &ptr) override
Moves all stolen items from ptr to the closest evidence chest.
Definition: worldimp.cpp:3348
void PCDropped(const Ptr &item)
Definition: worldimp.cpp:1996
void setMoonColour(bool red) override
Definition: worldimp.cpp:966
MWWorld::Globals mGlobalVariables
Definition: worldimp.hpp:81
bool isWading(const MWWorld::ConstPtr &object) const override
Definition: worldimp.cpp:2183
osg::Matrixf getActorHeadTransform(const MWWorld::ConstPtr &actor) const override
Definition: worldimp.cpp:1059
MWWorld::ConstPtr getClosestMarker(const MWWorld::Ptr &ptr, const std::string &id)
Definition: worldimp.cpp:3088
bool mScriptsEnabled
Definition: worldimp.hpp:103
bool castRay(float x1, float y1, float z1, float x2, float y2, float z2, bool ignoreDoors=false) override
cast a Ray and return true if there is an object in the ray path.
Definition: worldimp.cpp:1508
bool toggleSky() override
Definition: worldimp.cpp:949
std::unique_ptr< MWWorld::Scene > mWorldScene
Definition: worldimp.hpp:98
List of active local scripts.
Definition: localscripts.hpp:16
void setGlobalFloat(const std::string &name, float value) override
Set value independently from real type.
Definition: worldimp.cpp:594
Definition: loadclas.hpp:18
bool mSky
Definition: worldimp.hpp:82
void teleportToClosestMarker(const MWWorld::Ptr &ptr, const std::string &id) override
Definition: worldimp.cpp:3171
void rotateObject(const Ptr &ptr, float x, float y, float z, bool adjust=false) override
Definition: worldimp.cpp:1389
float getHitDistance(const MWWorld::ConstPtr &actor, const MWWorld::ConstPtr &target) override
Return the distance between actor's weapon and target's collision box.
Definition: worldimp.cpp:3634
Definition: variant.hpp:25
bool hasCellChanged() const override
Has the set of active cells changed, since the last frame?
Definition: worldimp.cpp:577
void fixPosition(const Ptr &actor) override
Attempt to fix position so that the Ptr is no longer inside collision geometry.
Definition: worldimp.cpp:1354
ESM::Variant * mDay
Definition: worldimp.hpp:86
int getSecundaPhase() const override
Definition: worldimp.cpp:961
RestPermitted
Definition: world.hpp:441
void deleteObject(const Ptr &ptr) override
Definition: worldimp.cpp:1112
World()
Definition: world.hpp:94
float mSwimHeightScale
Definition: worldimp.hpp:163
bool findExteriorPosition(const std::string &name, ESM::Position &pos) override
Definition: worldimp.cpp:2700
void processDoors(float duration)
Run physics simulation and modify world accordingly.
Definition: worldimp.cpp:1521
bool isTeleportingEnabled() const override
Returns true if teleport spell effects are allowed.
Definition: worldimp.cpp:2741
MWWorld::Ptr moveObject(const Ptr &ptr, float x, float y, float z) override
Definition: worldimp.cpp:1273
World & operator=(const World &)
void resetActors() override
Resets all actors in the current active cells to their original location within that cell...
Definition: worldimp.cpp:3607
void togglePlayerLooking(bool enable) override
Definition: worldimp.cpp:2259
Definition: loadlevlist.hpp:66
int countSavedGameCells() const override
Definition: worldimp.cpp:338
void setCameraDistance(float dist, bool adjust=false, bool override=true) override
Definition: worldimp.cpp:2274
void activateDoor(const MWWorld::Ptr &door) override
open or close a non-teleport door (depending on current state)
Definition: worldimp.cpp:2368
Pointer to a LiveCellRef.
Definition: ptr.hpp:19
Ptr searchPtr(const std::string &name, bool activeOnly) override
Definition: worldimp.cpp:640
bool toggleVanityMode(bool enable) override
Definition: worldimp.cpp:2249
Definition: collections.hpp:10
Definition: loadench.hpp:18
LocalScripts & getLocalScripts() override
Definition: worldimp.cpp:572
float getDistToNearestRayHit(const osg::Vec3f &from, const osg::Vec3f &dir, float maxDist, bool includeWater=false) override
Definition: worldimp.cpp:2595
Definition: loadalch.hpp:18
Definition: to_utf8.hpp:25
Ptr moveObjectImp(const Ptr &ptr, float x, float y, float z, bool movePhysics=true)
Definition: worldimp.cpp:1259
float getGlobalFloat(const std::string &name) const override
Get value independently from real type.
Definition: worldimp.cpp:611
bool toggleWorld() override
Definition: worldimp.cpp:1986
Definition: cellid.hpp:11
bool mTeleportEnabled
Definition: worldimp.hpp:167
DetectionType
Definition: world.hpp:517
void setDay(int day) override
Set in-game time day.
Definition: worldimp.cpp:856
std::string mStartupScript
Definition: worldimp.hpp:114
EffectList, ENAM subrecord.
Definition: effectlist.hpp:33
bool isSwimming(const MWWorld::ConstPtr &object) const override
Definition: worldimp.cpp:2178
void processChangedSettings(const Settings::CategorySettingVector &settings) override
Definition: worldimp.cpp:2132
int countSavedGameRecords() const override
Definition: worldimp.cpp:324
Definition: loadbook.hpp:15
void readRecord(ESM::ESMReader &reader, uint32_t type, const std::map< int, int > &contentFileMap) override
Definition: worldimp.cpp:373
void adjustSky() override
Definition: worldimp.cpp:133
bool isFirstPerson() const override
Definition: worldimp.cpp:2239
void setupPlayer() override
Definition: worldimp.cpp:2279
RenderMode
Definition: rendermode.hpp:7
void getItemsOwnedBy(const MWWorld::ConstPtr &npc, std::vector< MWWorld::Ptr > &out) override
get all items in active cells owned by this Npc
Definition: worldimp.cpp:2571
bool toggleGodMode() override
Definition: worldimp.cpp:2766
void startNewGame(bool bypass) override
Definition: worldimp.cpp:213
bool toggleWater() override
Definition: worldimp.cpp:1981
CellStore * getCell(const ESM::CellId &id) override
Definition: worldimp.cpp:538
MWWorld::ConstPtr getClosestMarkerFromExteriorPosition(const osg::Vec3f &worldPos, const std::string &id)
Definition: worldimp.cpp:3144
Definition: loadweap.hpp:16
const char * name
Definition: crashcatcher.cpp:67
bool isPlayerTraveling() const override
Definition: worldimp.cpp:3418
std::string mStartCell
Definition: worldimp.hpp:119
std::vector< std::string > mContentFiles
Definition: worldimp.hpp:104