1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-25 15:35:23 +00:00

124 Commits

Author SHA1 Message Date
florent.teppe
950cc7be83 gets the right worldspace when calculating exterior positions. 2023-06-29 11:09:06 +02:00
elsid
cfab425fb2
Replace operator== for CellStore with pointer quality
Equality operator is confusing and redundant in this case.

It should not be possible to have 2 CellStores for the same cell. There is no
copy constructor defined so it's not possible to get a copy. It's possible to
independently create second store when another one already exist but it would
mean a bug.

Explicitly delete CellStore copy and move constructors and assignment operators
to enforce this.
2023-05-30 08:46:44 +02:00
Petr Mikheev
29031d0586 Increase ESM4 active grid 2023-05-18 00:38:41 +02:00
florent.teppe
a3bd6e7e47 ESM::ExteriorCellIndex => ESM::ExteriorCellLocation 2023-05-12 22:05:55 +02:00
florent.teppe
141878f30d int x, int y , ESM::RefId worldspace => ESM::ExteriorCellIndex
also removed the changeToExteriorCell that only took a position as input, didn't work with esm4.
2023-05-12 22:05:53 +02:00
florent.teppe
eb48f8724f change grid and preload takes the right exterior
also fixes some crashes
2023-05-12 22:05:53 +02:00
florent.teppe
a3a2685b9a More MWWorld::CellStore* -> MWWorld::CellStore& 2023-04-20 16:16:17 +02:00
florent.teppe
1bbf4a3acf fixes teleport to exterior cells.
fixes linux compile

fix compile bis
2023-04-03 14:16:04 +02:00
florent.teppe
3780033837 Reverts Cell name to a string 2023-01-21 18:39:42 +01:00
florent.teppe
2c30575b3b CellName is now a RefId, makes more sense that way. 2022-12-27 19:16:21 +01:00
clang-format-bot
ddb0522bbf
Apply clang-format to code base 2022-09-22 21:35:26 +03:00
elsid
feb645d15f
Remove redundant Scene::updatePosition function 2022-09-17 01:14:04 +02:00
elsid
22ee592dd3
Lock TileCachedRecastMeshManager once per changing a cell
To save time on locking mutex and prevent AsyncNavMeshUpdater to use RecastMesh
for a tile in the middle of objects loading.
2022-09-08 11:06:35 +02:00
elsid
e1bed86d7e
Do single navigator update per frame
Primarily for crossing cell border case. Each Navigator::update call has a cost.
Doing it multiple times per frame increased frame duration on cell loading.

Call Navigator::wait only when cell has changed but do not use
Scene::hasCellChanged because it doesn't always indicates it.
2022-08-20 19:15:55 +02:00
elsid
5498c169e3
Cleanup openmw render, physics, world, dialogue, gui, input includes 2022-08-17 18:45:52 +02:00
elsid
dffb12ac05
Use std::vector to store paged ref nums 2022-08-06 02:11:58 +02:00
Evil Eye
aa2fab8db5 Enable collision for postponed objects when any object is disabled 2022-06-19 20:16:31 +02:00
elsid
b32a787cd8
Add explicit dependency to World from Scene
To avoid redundant MWBase::Environment::get().getWorld() calls and virtual
calls.
2022-05-08 15:41:53 +02:00
elsid
f03360b666
Move RenderingManager::update call to World::update
There is no need to do that in Scene::update and pass paused argument there.
2022-05-08 15:41:52 +02:00
elsid
3878a12ed3
Delay cell grid change until scene update
This allows proper profiling. Changing cell grid is not a part of physics
system, it's a part of world system.
2022-04-01 21:46:20 +02:00
elsid
783411fa1f
Use new player position when updating navigator on cell loading 2022-02-03 02:44:04 +01:00
psi29a
2c8c36fe5d Merge branch 'master' into 'effective_magic'
# Conflicts:
#   CHANGELOG.md
2021-10-01 21:20:08 +00:00
Bret Curtis
8309910d9d Restore the cell grid to its former non-exorbitant size, reducing stutter and also threw in a simple alternative fix for the actor position adjustment issue. 2021-09-30 22:58:40 +02:00
Evil Eye
b8e4f18751 Clear temporary effects before unloading actors to prevent absorb effects becoming permanent 2021-09-29 19:25:11 +02:00
elsid
5878b1fce6
Use same logic for testing cell as for loading cell
Having different branches makes testing less useful. If something fails in
regular executing it should fail in testing. To make it possible there should
be none differences in the execution paths.
2021-09-24 22:24:07 +02:00
elsid
b8fcd6d3ba
Manage work item lifetime on the client side
Instead of explicit work queue stop before any possibly used engine manager
is destructed. Based on an assumption that any engine manager can be destructed
independently from the work queue destruction. This model is already used in
CellPreloader that conflicts with explicit work queue stop.

After the work queue is requested to be stopped, any client waiting for a not
started work item to be done will wait forever because the work item is dropped
from the queue. Therefore either clients should not wait for own work items to
be completed in destructor or the work queue should not drop items before
clients are destructed. Other approaches are possible but are not considered
due to increasing complexity.

CellPreloader already tries to wait for all created work items to be done so
keep it that way and extend the model to AsyncScreenCaptureOperation and Scene.
Additionally abort all scheduled work items when owner is destructed. This
prevents a long exit when multiple screenshots are scheduled right before
exiting the game.
2021-07-12 11:41:14 +02:00
fredzio
c795e0bce6 Some actors are supposed to spawn on an object that belongs to an adjacent cell.
Since actors can be active in 3x3 grid around the player, we need to
first load all objects in a 5x5 grid around the player.

Split load and unloading in 2 phases. Add an mInactiveCells set into the
scene, which contains all cells inside the aforementioned 5x5 grid.
These cells contains only heightfields and non-animated physics objects.

Animated objects are tied to the scene graph, which doesn't exists yet
in these cells, so we skip them.
2021-06-28 09:36:04 +02:00
fredzio
fda639eb57 Remove unused forward declarations 2021-04-11 14:46:51 +02:00
Andrei Kortunov
165af1c365 Revert "Some actors are supposed to spawn on a static object that belong to an adjacent cell."
This reverts commit f031a191b847443c848637b17d0936a43b5070b5.
2021-01-29 16:51:05 +04:00
fredzio
f031a191b8 Some actors are supposed to spawn on a static object that belong to an adjacent cell.
Since actors can be active in 3x3 grid around the player, we need to
first load all statics in a 5x5 grid around the player.

Split load and unloading in 2 phases. Add an mInactiveCells set into the
scene, which contains all cells inside the aforementioned 5x5 grid.
These cells contains only heightfields and physics objects of static
class.
2021-01-24 14:11:10 +01:00
Andrei Kortunov
d1a3cc98ff Get rid of ECLD and dependencies 2020-06-17 13:09:16 +04:00
bzzt lost a hitlab login
b27b76e325 avoid pagerebuild when reloading a same save
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
6fa12a6eb8 preload tweak
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
340d626589 static moving support
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
c7fda6d280 activegrid paging = 2xfps
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
b4af2ac672 avoid blocking on pagerebuild
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
ffbed7ee38 loadingscreen
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt
d684f1a78f terrainbased objectpaging
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
Capostrophic
d44dcc3242 Revert infinite fall failsafe addition 2020-02-25 16:46:53 +03:00
Capostrophic
61b60c8a94 Add an infinite fall failsafe (feature 1415) 2020-02-11 18:26:58 +03:00
Andrei Kortunov
24ce242941 Implement TestCells (feature #5219) 2019-12-22 11:13:42 +04:00
Assumeru
dfbe0021a5 Change rescaling to be more inline with vanilla (fixes #5214) (#2635)
* move rescaling to loadData

* clamp on save
2019-12-18 19:37:45 +03:00
elsid
3cfd5fca4e
Rotate door object using direct rotation order once
Instead of rotating using inverse and then applying the direct rotation.
To properly update object in navigator.
2019-11-30 14:09:00 +01:00
elsid
1d3668cd22
Add Navigator interface 2019-02-16 15:37:06 +03:00
elsid
346e9e3141
Add off mesh connections for doors without teleport 2018-10-13 22:16:33 +03:00
elsid
c95cea414c
Support water for NavMesh 2018-10-13 22:16:32 +03:00
elsid
0c8db84962
Load cells in order from nearest to player to furthest 2018-10-13 22:16:26 +03:00
scrawl
20606a2aff Add 'prediction time' setting for cell/terrain pre-loading 2017-07-19 16:44:37 +02:00
Ewan Higgs
38a2de3c51 convert std::autor_ptr to std::unique_ptr, originally by Ewan Higgs and updated by Bret Curtis 2017-06-09 16:49:25 +02:00
scrawl
c22fde2bcd Preload terrain while reading savegame 2017-03-14 19:27:56 +01:00