1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 17:19:56 +00:00
Commit graph

16875 commits

Author SHA1 Message Date
AnyOldName3
5e004356a2 Merge remote-tracking branch 'upstream/master' into alpha-meddling 2020-12-27 02:48:42 +00:00
psi29a
a094269c46 Merge branch 'guardsguards' into 'master'
Don't consider a path completed unless we're close

Closes #5736

See merge request OpenMW/openmw!498
2020-12-26 23:10:53 +00:00
psi29a
3afa4e5869 Merge branch 'feels_good_guar' into 'master'
Make followers keep a distance dependant on the fattest party member

Closes #5423

See merge request OpenMW/openmw!499
2020-12-26 23:09:41 +00:00
AnyOldName3
8f4b856b44 Initial A2C implementation 2020-12-26 22:45:53 +00:00
Evil Eye
7cac7fa870 Make followers keep a distance dependant on the fattest party member 2020-12-25 23:57:01 +01:00
Alexei Dobrohotov
ad41546648 Merge branch 'fix_swimming' into 'master'
Fix #5743 where NPCs and creatures underwater may rotate to the upwards direction

Closes #5743

See merge request OpenMW/openmw!494
2020-12-25 21:33:35 +00:00
Evil Eye
d2a28d915a Don't consider a path completed unless we're close 2020-12-25 15:58:11 +01:00
Evil Eye
1f1755ae48 Add version checks 2020-12-25 13:05:41 +01:00
Evil Eye
bdcbb412a5 Don't restore focus to hidden/unrelated buttons 2020-12-25 13:03:09 +01:00
Petr Mikheev
8b3088a9e5 Fix #5743 2020-12-24 11:54:21 +01:00
Petr Mikheev
51d63a4152 Fix minor bug: mSmoothedSpeed is not updating in first person mode, that leads to an incorrect value after switching to first person mode and back.
Additional refactoring: move `setSideMovementAngle` from camera.cpp to character.cpp as this logic shouldn't belong to Camera.
2020-12-24 03:39:59 +01:00
psi29a
4f1361b5ea Merge branch 'paralyze' into 'master'
Fix paralyze for swimming and levitating actors

Closes #5758

See merge request OpenMW/openmw!488
2020-12-22 10:49:24 +00:00
Alexei Dobrohotov
22476281da Fix paralyze for swimming actors 2020-12-22 08:03:51 +03:00
Alexei Dobrohotov
218597b13d Fix paralyze for levitating actors 2020-12-22 06:33:19 +03:00
Alexei Dobrohotov
f5af09aed9 Fix AI sequence looping code (bug #5706) 2020-12-22 05:56:59 +03:00
psi29a
3e87c35005 Merge branch 'dialogue' into 'master'
Don't regenerate the topics list unconditionally

See merge request OpenMW/openmw!459
2020-12-21 22:52:38 +00:00
Alexei Dobrohotov
e9a8636d18 Merge branch 'restore_absolute_position_handling' into 'master'
Restore pre-async handling of absolute actors positionning

See merge request OpenMW/openmw!486
2020-12-20 22:52:35 +00:00
Alexei Dobrohotov
ce36dd8a52 Merge branch 'misc_cleanup' into 'master'
Small cleanup

See merge request OpenMW/openmw!482
2020-12-20 19:10:06 +00:00
fredzio
5bd921fa3a Restore pre-async handling of absolute actors positionning
One of the issue since the introduction of async physics is the quirky
handling of scripted moves. Previous attempt to account for them was
based on detecting changes in actor position while the physics thread is
running. To this end, semantics of Actor::updatePosition() (which is
responsible for set the absolute position of an actor in the world) was
toned down to merely store the desired position, with the physics system
actually responsible for moving the actor. For the cases were complete
override of the physics simulation was needed, I introduced
Actor::resetPosition(), which actually have same semantics as
original updatePosition(). This in turn introduced a loads of new bugs
when the weakened semantics broke key assumptions inside the engine
(spawning, summoning, teleport, etc).
Instead of tracking them down, count on the newly introduced support for
object relative movements in the engine (World::moveObjectBy) to
register relative movements and restore original handling of absolute positionning.

Changes are relatively small:
- move resetPosition() content into updatePosition()
- call updatePosition() everywhere it was called before
- remove all added calls to the now non-existing resetPosition()

tldr; ditch last month worth of bug introduction and eradication and redo
it properly
2020-12-20 19:23:09 +01:00
fredzio
33eb09f534 Remove unused headers 2020-12-20 18:28:21 +01:00
Alexei Dobrohotov
6b5e614b1a Merge branch 'dont_cache_ptr' into 'master'
Always use latest actor's Ptr

See merge request OpenMW/openmw!481
2020-12-19 17:15:43 +00:00
fredzio
e5f0c7f117 Fix a typo introduced in 08e73a09ec
It closes #5752
2020-12-19 16:54:50 +01:00
fredzio
93a12fe388 Avoid dynamic_cast when possible. 2020-12-18 23:47:01 +01:00
fredzio
8e084dea2e Don't cache Ptr, it can be updated while the simulation is running. 2020-12-18 22:22:37 +01:00
fredzio
58297ffbf4 Move stats update into their own function. 2020-12-18 21:18:04 +01:00
fredzio
24a8b8c66a Remove redundant call to resetPosition(). adjustPosition() takes care of
it,
2020-12-18 21:16:48 +01:00
Mads Buvik Sandvei
eec2ba3623 Loading screen initialdrawcallback 4th time's the charm 2020-12-18 18:15:14 +00:00
AnyOldName3
2ecd00b6db Don't accidentally enable alpha testing for all shadow casting 2020-12-18 16:31:21 +00:00
fredzio
4e7c9b6696 Embed physics simulation results inside of actor class.
This gives finer control over reseting positions (switch off tcl is no
longer glitchy) and solve most of the erroneous usage of stale World::Ptr
indicated by:
"Error in frame: moveTo: object is not in this cell"
2020-12-18 12:54:02 +01:00
psi29a
d01d5745c6 Merge branch 'relative_move' into 'master'
Relative translation for scripts

See merge request OpenMW/openmw!477
2020-12-18 09:23:18 +00:00
Mads Buvik Sandvei
ea8f98b339 Wait for initialDrawCallback to finish before removing it 2020-12-18 08:48:39 +00:00
fredzio
7bae6691b6 Introduce World::moveObjectBy() function to translate an object relatively to
its current position.
Use it in relevant MWScripts opcode (move and moveworld).
Remove the fragile detection of scripted translation from PhysicsTaskScheduler.

No user visible change, just a more robust mechanism.
2020-12-18 08:40:38 +01:00
AnyOldName3
a080071588 Set default state sensibly 2020-12-18 00:02:51 +00:00
psi29a
96a87b582c Merge branch 'loadingScreen_initialdrawcallback' into 'master'
Fix for !472 for older versions of OSG

See merge request OpenMW/openmw!474

(cherry picked from commit 35e25d79b9a6c76807084be5ca2584c4fd9b9c35)

4447dd41 osg versions
06f4d63b Preserve callback in older osg version
2020-12-17 23:37:21 +00:00
Alexei Dobrohotov
8db2ba2b38
Merge pull request #3032 from akortunov/gtest
Mark mock methods as overrides (requires GTest 1.10)
2020-12-18 01:46:42 +03:00
Mads Buvik Sandvei
bc961a13f5 avoid redundant calls to removeInitialDrawCallback 2020-12-16 22:03:16 +01:00
Mads Buvik Sandvei
640420eaaa No longer delete and recreate CopyFramebufferToTextureCallback, remove oneshot functionality. Instead just remove the callback after the traversals. Use addInitialDrawCallback instead of setInitialDrawCallback to avoid messing with existing callbacks. 2020-12-16 21:46:52 +01:00
fredzio
259d522800 When doing a ray cast to the next projectile position, ignore collisions
that occurs with the projectile own collision object. Otherwise a magic
bolt can explode "spontaneously".
2020-12-15 21:34:58 +01:00
psi29a
884b434ee0 Merge branch 'fixfriendlyfire' into 'master'
Fix projectiles friendly fire (#5744)

See merge request OpenMW/openmw!466
2020-12-15 15:45:43 +00:00
psi29a
78e85fe011 Merge branch 'this_is_nife' into 'master'
More NIF stuff

See merge request OpenMW/openmw!461
2020-12-15 15:43:12 +00:00
psi29a
bc6bcda58f Merge branch 'wizard' into 'master'
Wizard: fix "file is already opened" warning

See merge request OpenMW/openmw!465
2020-12-15 15:35:47 +00:00
Nelsson Huotari
8b2bf12e8f Use bip01 for root bone name 2020-12-15 13:51:49 +02:00
fredzio
b39437dfb6 Don't allow projectiles to stand still when they hit an ally.
When an NPC fire a projectile, it should affect only its targeted actor.
To this end, after a hit is detected the target is checked against the
list of AI targets and reactivated if necessary.
Problem occurs when the hit occurs as a result of a friendly actor going
into the projectile (detected in ClosestNotMeConvexResultCallback):
while the projectile is inside the friend's collision box, it is
deactivated, just to be immediately reactivated. Effectively, the
projectile does nothing until the actor moves out.

Add a check inside the ClosestNotMeConvexResultCallback before declaring
a hit.
Since the necessary data is not safely accessible from the async thread,
maintain a copy inside the Projectile class.
2020-12-14 22:23:01 +01:00
Alexei Dobrohotov
8fd45d85ec Unify NiGeometry/NiGeometryData handling 2020-12-15 00:06:43 +03:00
Alexei Dobrohotov
ab789e37e1 Wizard: fix "file is already opened" warning 2020-12-14 03:45:03 +03:00
Alexei Dobrohotov
201999c4a9 Make sure adjustPosition() is safe to call for any actor 2020-12-14 03:01:26 +03:00
Alexei Dobrohotov
817ac4cfbd Don't regenerate the topics list unconditionally 2020-12-12 23:07:00 +03:00
fredzio
a314f196eb Unconditionally call actor->resetPosition in adjustPosition.
Revert broken change that would force adjust all actors in cell upon
loading. That break floating corpses (and probably others things).
2020-12-12 18:17:26 +01:00
Alexei Dobrohotov
15291f15d3 Make actor collision box components a struct 2020-12-11 20:07:59 +03:00
psi29a
11eff02a1d Merge branch 'Show-more-information-about-level-on-menu' into 'master'
Show more information about level on menu

See merge request OpenMW/openmw!437
2020-12-11 12:04:15 +00:00