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

113 commits

Author SHA1 Message Date
David Cernat
f0a22495a2 [General] Synchronize origin and orientation for magical projectiles 2022-05-01 21:58:00 +03:00
fredzio
32108adc31 Change projectile behaviour to be like in vanilla wrt. water plane:
- enchanted arrow explode upon hit the water plane
- non enchanted arrow disappear (or more accurately, they hit nothingness)
- enchanted arrow shot underwater explode immediately
- non enchanted arrow disappear immediately

Also, solve a bug that occured previously and could theoritically still happens where we use the last tested collision position for instead of the last registered hit:
Use the hit position as saved inside Projectile::hit() instead of the last position saved inside the callback.
If a projectile collides with several objects (bottom of the sea and water surface for instance), the last collision tested won't necessarily be the impact position as we have no control over the order in which the tests are performed.
2021-09-24 20:32:00 +02:00
jvoisin
998cc97a4f And done! 2021-04-30 20:49:22 +02:00
Max
2cd96e56d5 create constant and use constant in other parts of the code base 2021-03-24 14:54:46 -07:00
Alexei Dobrohotov
2bfee281fd Merge branch 'restore_caster' into 'master'
Restore projectile caster from savegame (#5860)

See merge request OpenMW/openmw!616

(cherry picked from commit d595c7adb0fb45eafed6d3d0403ad640a91411ed)

c5426bec In the savegame, projectile caster is identified by its actor id. When
2021-03-05 21:07:29 +00:00
fredzio
6e969ca3fa Use mesh collision box instead of node bounding sphere for projectile
size. The bounding sphere is much bigger than the mesh.
2021-02-05 22:53:45 +01:00
Evil Eye
a2171875a0 Prevent nullptr access 2021-01-24 15:15:51 +01:00
fredzio
1f4c85520f Use convexSweepTest for projectile movement to solve any
imprecision issue with projectile collision detection.
Simplify the mechanics: manage hits in one spot.
Give magic projectiles a collision shape similar in size to their visible
model.

Rename the 2 convex result callback to clearly state their purpose.
2021-01-21 20:36:33 +01: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
fredzio
4fbe1ed12c Ignore caster collision shape. Sometimes the magic bolt get launched
inside too near its caster.
2020-12-08 09:06:34 +01:00
fredzio
66fe3b0d38 Modify projectile collision to work with async physics 2020-12-08 09:06:33 +01:00
Andrei Kortunov
dc7b48e92e Generate physics collisions for projectiles (bug #3372)
Remove redundant now mHit field
2020-12-08 09:05:38 +01:00
psi29a
ba3aad31c1 Merge branch 'hitdebug' into 'master'
Visualize hits in the debug overlay

See merge request OpenMW/openmw!379
2020-11-01 10:20:14 +00:00
Alexei Dobrohotov
53f91a3aa5
Merge pull request #3018 from akortunov/emplace
Use emplace_back instead of push_back
2020-11-01 01:58:56 +03:00
fredzio
e8c0a7bec0 Visualie projectile hits 2020-10-26 13:53:36 +01:00
Andrei Kortunov
065ed5138e Use emplace_back instead of push_back 2020-10-18 10:27:35 +04:00
Andrei Kortunov
8ca3c3b123 Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
Petr Mikheev
0de6650add Add RayCastingInterface 2020-08-06 22:03:33 +02:00
Capostrophic
456f0f9f44 Clean up magic bolts of actors that are gone (#5451) 2020-06-06 19:11:22 +03:00
Bret Curtis
8a8107e837 as it says; revert vismask and uncomplicate openmw 2020-04-20 20:57:38 +02:00
Andrei Kortunov
7545256d1f Do not try to launch magic bolt when direction to target is empty (bug #5350) 2020-04-04 22:39:13 +04:00
Andrei Kortunov
84979fa8b7 Move VisMask to components 2020-02-16 16:03:35 +04:00
Andrei Kortunov
d1e0fa575e Take in account caster's race height when launch magic bolt (bug #5209) 2019-11-17 16:37:38 +04:00
Andrei Kortunov
f0cef772fa Refactor weapon types behaviour
1. Move weapon types behaviour from switches to the table (should allow
us to de-hardcode weapon types later)
2. Gereralize bones injection to actors skeletons (instead of using the
hardcoded xbase_anim_sh.nif)
2019-08-09 19:40:27 +04:00
Andrei Kortunov
8557346fbd Use glow for enchanted arrows (feature #5122) 2019-08-07 12:58:14 +04:00
Capostrophic
f0433704b4 Only collect every unique magic bolt sound once (bug #4964) 2019-04-17 19:23:50 +03:00
Andrei Kortunov
4c21776b94 Use relative animation time only for bows and crossbows (bug #3778) 2019-03-08 20:16:02 +04:00
Andrei Kortunov
3032b177a1 Remove redundant includes 2019-02-23 08:02:12 +04:00
Andrei Kortunov
0937f02598 Get rid of unnecessary string streams 2019-01-07 21:08:16 +04:00
Andrei Kortunov
70ed8fd1a9 Use constants instead of widely used magic numbers (task #4645) 2018-09-17 19:22:50 +04:00
Capostrophic
7ef6fa9f61 Remove deprecated GMST get* functions 2018-08-29 18:38:12 +03:00
Andrei Kortunov
5a4d0cec3a Use new logging system for game itself 2018-08-14 23:05:43 +04:00
Miloslav Číž
4373fea21e Correct projectile rotation 2017-11-23 20:27:22 +01:00
Miloslav Číž
d0a299caab Rotate thrown projectiles around the bb center 2017-11-23 20:02:38 +01:00
Miloslav Číž
38bda3bd71 Do not save thrown state for projectiles 2017-11-23 18:00:10 +01:00
Miloslav Číž
3dbcda6686 Make use of mEffectAnimationTime for projectile rotation 2017-11-23 15:14:15 +01:00
Miloslav Číž
2b9a0a7732 Save new projectile state 2017-11-23 12:11:26 +01:00
Miloslav Číž
de42aa9d03 Make thrown projectiles rotate 2017-11-23 00:32:22 +01:00
MiroslavR
b5f5268ff3 Clean up faraway projectiles 2017-09-23 18:54:17 +02:00
MiroslavR
f15de6d3ca ESS-Importer: Convert magic projectiles (Closes #2320) 2017-09-20 18:58:56 +02:00
Chris Robinson
780e82480d Make the PlayMode and PlayType enums scoped
Also shorten them by putting them in the MWSound namespace
2017-09-15 02:36:59 -07:00
Chris Robinson
1fe60dd8e2 Replace some shared_ptrs with pointers to deque entries 2017-09-14 16:00:30 -07:00
Allofich
6b53541571 Prevent AI actors from hitting unintended targets
(Fixes #3254)
2017-02-12 19:51:19 +09:00
NeveHanter
e82d542d89 Merge remote-tracking branch 'upstream/master' into bugfix-3617 2017-01-15 09:49:45 +01:00
NeveHanter
811e9ad9f3 Fixed bug https://bugs.openmw.org/issues/3617 by allowing touch and target enchantments from ranged weapons and their projectiles to explode even when colliding with non-activable objects, terrain, water slab or when shoot underwater.
Also allowed projectiles to fly through the dead bodies as in vanilla.
2017-01-15 09:49:25 +01:00
scrawl
7b5f3e3cdc Fix crash in ProjectileManager when a sound id fails to play or is not found 2017-01-01 21:34:31 +01:00
mrohrlach
71e74f5a93 Moved projectile light calculation to separate method 2016-12-13 18:04:20 -07:00
mrohrlach
f5da179a90 Removed two more bad casts 2016-12-09 18:15:40 -07:00
mrohrlach
3b0c791892 Removed bad casts and unnecessary comments 2016-12-09 18:10:06 -07:00
mrohrlach
c2e5f24e98 Tidying up 2016-12-04 16:31:11 -07:00