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

419 commits

Author SHA1 Message Date
scrawl
59f21c6105 Use "hair" as filter for PRT_Hair parts (Fixes #2218) 2014-12-24 15:45:14 +01:00
scrawl
d55fe43fc9 Support animation groups for Light and Door objects (Fixes #2039) 2014-12-24 15:45:14 +01:00
scrawl
42d63a4eb2 Fix position flicker after an animation ends 2014-12-24 15:45:14 +01:00
scrawl
8bc7eb5530 PlayGroup: Don't loop animations with no loop keys (Fixes #2223) 2014-12-24 15:45:13 +01:00
scrawl
65536f0857 Load initial particle system state from NIF files (Fixes #2178) 2014-12-05 18:00:30 +01:00
scrawl
ed686ddd2f Don't update nodes with an empty name from the skeleton source (Fixes #2125) 2014-12-01 23:09:46 +01:00
scrawl
5f5fcc2fef Make PlayGroup use an indefinite number of loops (Fixes #2156) 2014-11-28 17:15:31 +01:00
scrawl
deabc52c16 Treat "Root Bone" as the animation root if existing (Fixes #2019) 2014-10-17 23:29:59 +02:00
scrawl
db6b04d127 Use the footstep volume slider for jump landing sounds (Fixes #1968) 2014-10-04 19:50:38 +02:00
scrawl
7252cb63a6 Fix cppcheck issues 2014-09-26 17:48:14 +02:00
scrawl
447e93bdb4 Use SpellCast animation for creatures that have it (flame atronach) 2014-09-18 03:24:47 +02:00
scrawl
3ce3f31452 Adjust turning animation speed multiplier based on turning speed 2014-09-17 07:02:19 +02:00
scrawl
8b0cb239a9 Ignore text keys for zero-length animations (Fixes #1876)
This fixes an issue where the Riekling's attack animation would trigger *two* hits on each swing. It has the "min hit" and "hit" keys at the same time, so the MinHitToHit segment a zero-length animation. This caused problems as the "hit" text key will be encountered twice; once when playing the "max attack to min hit" segment and once when playing the "min hit to hit" segment.
2014-09-08 15:23:35 +02:00
scrawl
0fe9612afb Implement basic spellcasting AI (Fixes #961)
Select a weapon to attack with in AiCombat and equip it (Fixes #1609, Fixes #1772)
2014-08-28 00:55:37 +02:00
scrawl
e0e4cbbb41 Implement Light magic effect (Fixes #1122) 2014-08-24 02:37:59 +02:00
scrawl
714c927fda Fix being able to change camera during death via mouse wheel 2014-08-24 02:37:59 +02:00
scrawl
83037a1a91 Move fast-forward of particle systems outside of OgreNifLoader (Fixes #1830)
Particle systems were being fast-forwarded before the skeleton base was attached, so particles without the LocalSpace flag would spawn at an incorrect position.
2014-08-18 16:37:47 +02:00
scrawl
7432771ac7 For non-active torches set the particle system speed factor to zero instead of destroying it (Fixes #1811) 2014-08-16 00:51:02 +02:00
scrawl
e2ee3b2497 Merge branch 'master' of https://github.com/OpenMW/openmw
Conflicts:
	apps/openmw/mwrender/terrainstorage.cpp
2014-08-12 19:53:37 +02:00
MiroslavR
baa14511cf Use ResourceHelpers to replace DDS hacks scattered throughout the code, fix prefix comparision 2014-08-12 12:18:38 +02:00
scrawl
28fe81df90 Make Lights with OffDefault flag not emit light nor particles when placed in a cell (Fixes #1796) 2014-08-11 20:39:56 +02:00
scrawl
fc1687906b Use the last Loop Stop key for calculating animation velocity (Fixes #1776) 2014-08-11 05:29:36 +02:00
scrawl
516014c071 Trigger hit on start key if there's no hit key (Fixes #1574) 2014-06-28 01:06:53 +02:00
scrawl
78d02d97da Find text keys in reverse (Bug #1578) 2014-06-28 00:06:08 +02:00
scrawl
37c85f0af4 Don't update object root controllers with no time source (Fixes #1564) 2014-06-27 19:35:41 +02:00
scrawl
ec64f1a53a Reset accumulation root when its animation finishes
Fixes a position flicker after standing up from knockdown.
2014-06-25 02:46:39 +02:00
scrawl
ee098de0a6 Don't ignore lighting values of particles not attached to a character 2014-06-25 01:14:21 +02:00
mrcheko
fc6366fb27 Merge remote-tracking branch 'upstream/master'
Equipping_Weapon check isn't needed cause there won't be WeapType_None in
that case

Conflicts:
	apps/openmw/mwmechanics/character.cpp
2014-06-13 14:12:41 +04:00
scrawl
14a9f0ebf8 Handle Quadratic and Linear attenuation independently (Fixes #1456) 2014-06-11 02:24:17 +02:00
mrcheko
d6d9df6cec split getStartTime 2014-06-11 00:20:46 +04:00
mrcheko
08e8dab067 merge openmw master 2014-06-09 22:37:49 +04:00
mrcheko
67abc60264 aiming to moving target in ranged combat ai
1) Taking into account target move vector and speed. However aiming is not
ideal, since attack strength can't be controlled directly. I did achieve
almost 100% accuracy updating it everyframe but then thought it would be
unfair, cause AI should mimic human targetting.
2) Also added in this commit func to measure real attack durations for
weapon.
2014-06-08 20:59:26 +04:00
scrawl
a6788cfb0e Support lights that do not have a model (Fixes #1361) 2014-05-29 16:44:50 +02:00
scrawl
4caa8c5cca Fix offset to accumulation root not being cleared when adding an animation state with startpoint=1.f (observed with death animations) 2014-05-26 20:52:38 +02:00
scrawl
039398c8ae Basic RefData and CellRef change tracking
Wrapped item charge handling in getItemHealth function
2014-05-25 14:30:07 +02:00
Thoronador
1b8c975d5b minor performance improvements in apps/openmw
Checking for emptiness using size() might be inefficient, because
it can take linear time, while empty() is guaranteed to take only
constant time.

For non-primitive types, postfix ++ operators are inefficient
compared to prefix ++ operators, because post-increment usually
involves keeping a copy of the previous value around.
2014-04-27 19:10:23 +02:00
scrawl
edb5a54092 Include some more required Ogre headers explicitely. 2014-03-05 21:46:37 +01:00
Marc Zinnschlag
f9d2fde783 Merge branch 'openmw-29'
Conflicts:
	apps/openmw/mwmechanics/aicombat.cpp
2014-03-04 09:34:38 +01:00
Marc Zinnschlag
367919200f moved CellRefList into a separate file 2014-02-23 20:11:05 +01:00
Marc Zinnschlag
7693f712bc started making CellStore into a proper class; encapsulated mCell member 2014-02-21 11:35:46 +01:00
scrawl
bc376e6649 Closes #888: Treat "Bip 01" as animation root if existing 2014-02-19 11:23:03 +01:00
mrcheko
a6be72673c improves animation-controlled velocity check 2014-02-08 16:59:15 +02:00
scrawl
ffe19e7a52 Feature #50: Handle attach & release of projectiles 2014-02-05 05:18:11 +01:00
scrawl
a07eaa0c0d Feature #50: Allow body pitch in third person for ranged weapon aiming 2014-02-05 05:18:10 +01:00
scrawl
7cf22391a5 Feature #50: Handle weapon controllers (i.e. bowstring animations, etc) 2014-02-05 05:18:10 +01:00
mrcheko
761f13d3ce activate whole-body attack animations 2014-02-02 16:29:51 +02:00
scrawl
60bbab52fe Support keyframe controllers for bones that aren't in the skeleton base 2014-01-31 05:06:34 +01:00
mrcheko
e50e94af0b remove CreatureStats::mAttackType, set/getAttackType() 2014-01-27 23:05:17 +02:00
scrawl
eba6c9a8fd Fix massive console spam regarding the scrib's idle3 animation 2014-01-26 02:49:32 +01:00
scrawl
cf378ec31e Support optional volume and pitch arguments for soundgen events (e.g. moan 0.5 1.0) as required for some actors 2014-01-22 15:25:03 +01:00
scrawl
16f5f5862d Feature #956: Implement blocking melee attacks 2014-01-21 23:25:24 +01:00
scrawl
9b32b1403b Feature #960: Implement Creature::hit 2014-01-17 17:19:08 +01:00
scrawl
805843d7ff Closes #1086: Implement blood effects 2014-01-17 11:27:13 +01:00
scrawl
240d96a0f1 Renamed AnimationValue to AnimationTime 2014-01-17 10:55:46 +01:00
Marc Zinnschlag
f62497dfdc Merge remote-tracking branch 'mrcheko/master' 2014-01-10 19:08:35 +01:00
mrcheko
d41f27451b appropriate camera vanity<>preview mode switch + hit recoils fix 2014-01-09 23:36:40 +02:00
Marc Zinnschlag
a7be755db0 Merge remote-tracking branch 'mrcheko/master' 2014-01-08 20:13:31 +01:00
mrcheko
46519062d3 hit recoils/knockdowns feature 2014-01-08 16:05:14 +02:00
mrcheko
2591ff2d5a bug repairing 2014-01-06 22:00:01 +02:00
scrawl
634a53211c Make sure materials are built before trying to determine their transparency 2014-01-04 22:56:06 +01:00
mrcheko
7002412760 resolve conflict in character.cpp 2014-01-04 17:55:09 +02:00
mrcheko
09a0a69b04 more improvements 2014-01-01 21:40:31 +02:00
scrawl
be1938ee90 Closes #805: Don't add entities that are supposed to be invisible to static geometry 2013-12-31 18:32:46 +01:00
scrawl
6400f23ab0 Use the material controller manager for effects with overridden texture 2013-12-27 14:54:36 +01:00
scrawl
d262d9e6b0 Bug #1054: Set render queue group for effects 2013-12-27 14:51:59 +01:00
scrawl
d09a86e208 Issue #1018: Don't allow view mode switching while performing an action 2013-12-27 00:36:06 +01:00
scrawl
5931fdcbde Implement NiBillboardNode. Flags not handled yet. 2013-12-26 20:53:52 +01:00
scrawl
6d27ebabb6 Integrate AddGlow with material controllers 2013-12-26 20:53:45 +01:00
scrawl
1624e0fd8a Rename ObjectList to ObjectScene. Wrap it in a SharedPtr so we can automate the destruction routine. 2013-12-07 20:15:39 +01:00
scrawl
ffc885853a Fix bolt for magic effects that don't have one specified 2013-11-29 10:39:37 +01:00
scrawl
3452bd2e0b Add glow effect for enchanted items 2013-11-20 00:13:12 +01:00
scrawl
0dc2e829dd Lots of cleanup. Implemented Absorb and Resist. Implemented several instant effects. Added hand VFX. 2013-11-17 23:31:08 +01:00
scrawl
e7993ced69 Fix invalid casts 2013-11-17 04:33:04 +01:00
scrawl
0b5f5351b5 Fix continuous FX getting removed instantly 2013-11-14 13:30:48 +01:00
scrawl
da5c59c8af addEffect should check effectId, not model. 2013-11-13 19:07:44 +01:00
scrawl
a6e2f43b75 Stop continuous VFX when the effect is no longer active. 2013-11-13 15:44:43 +01:00
scrawl
9b0e82a37f Projectile models are now spawned (no movement or impact yet). Refactored trap activation to apply range types properly. Handle ContinuousVFX for magic effects (note they aren't stopped yet when the effect ends) 2013-11-13 14:02:15 +01:00
scrawl
0dab7031c0 Make sure effects are destroyed with the animation 2013-11-12 02:22:44 +01:00
scrawl
ffdb91bb21 Add particles for Cast + Hit. Not looking quite right yet. 2013-11-11 23:43:28 +01:00
scrawl
cbe96a2170 Refactor ActiveSpells to track range type. Added basic self range magic. 2013-11-09 07:51:46 +01:00
Chris Robinson
bd6dd071aa Use the non-accumulation root's parent as the accumulation root
This relies on the non-accumulation root not being the skeleton root. I haven't
found an instance where this isn't the case.
2013-08-25 16:08:42 -07:00
Chris Robinson
3ca4d54bf9 Better handle animations with a 0-length loop 2013-08-19 07:26:42 -07:00
Chris Robinson
5ac82a50b7 Remove unused function 2013-08-08 04:40:30 -07:00
Chris Robinson
2b2101958d Destroy the scene node we create 2013-08-07 03:56:07 -07:00
Chris Robinson
0458fd5531 Remove unused/unneeded parameters 2013-08-07 03:56:06 -07:00
Chris Robinson
b4b095ca72 Don't try to get the center of a null bounding box 2013-08-07 01:32:36 -07:00
Chris Robinson
3555476dfd Use Animation-derived objects for generic objects 2013-08-06 19:49:07 -07:00
Chris Robinson
a9dca21d05 Create the Animation SceneNode in the constructor 2013-08-06 19:49:05 -07:00
Chris Robinson
48784c7e2f Use for_each and functors to avoid some for loops 2013-08-06 19:49:05 -07:00
Chris Robinson
de95926e9f Use controllers to animate lights in ObjectLists 2013-08-06 19:49:04 -07:00
Chris Robinson
e976bb16c5 Add a light for torches 2013-08-06 19:49:02 -07:00
Chris Robinson
57fb065a86 Add Ogre::Light objects to the object list
Note that NIFs actually have NiLight-based light records which could be
used to create Ogre::Light objects. However, no Morrowind NIF uses them,
as far as I can tell.
2013-08-06 19:49:01 -07:00
scrawl
7dc30a01cd Some changes suggested by cppcheck 2013-07-31 18:46:32 +02:00
Chris Robinson
465f4d2063 Properly handle starting an animation at the end 2013-07-28 09:56:03 -07:00
Chris Robinson
92cc566fdc Rename the Class::attack method to Class::hit 2013-07-25 00:30:01 -07:00
Chris Robinson
59f1bc7542 Use time values for the aniamtion's start, stop, and loop points
This seems to be closer to the expected behavior. This more cleanly handles 0-
length animations, especially where the start marker comes after the stop
marker while still being on the same time key.
2013-07-24 08:38:36 -07:00
Chris Robinson
0c8d4d9be2 Add beginnings of melee hits 2013-07-24 02:51:42 -07:00
Chris Robinson
45302f9e25 Handle controllers in the NPC's bound object parts 2013-07-23 22:05:03 -07:00
Chris Robinson
fecb8c1cc4 Fix the completion amount for 0-length anims 2013-07-23 05:30:37 -07:00
Chris Robinson
537d5c4934 Avoid trying to play animations without any animation sources 2013-07-23 04:36:25 -07:00
Chris Robinson
ad6d663e09 Remove some unnecessary debug messages 2013-07-23 03:44:52 -07:00
Marc Zinnschlag
ec575200e3 Merge remote-tracking branch 'gus/MeleeCombat2'
Conflicts:
	apps/openmw/mwrender/animation.cpp
2013-07-23 09:12:23 +02:00
Chris Robinson
0cb7d186e7 Use Play_TypeFoot for 'left' and 'right' soundgen keys 2013-07-18 21:50:11 -07:00
Marc Zinnschlag
fdd47e5b73 silenced a warning 2013-07-18 13:50:12 +02:00
Chris Robinson
9ea6b22a83 Handle soundgen animation keys 2013-07-17 23:58:21 -07:00
scrawl
91e95e1404 Use the correct slash, chop or thrust animation 2013-07-16 23:32:41 +02:00
Chris Robinson
a932a89e02 Specify the velocity-based animation speed multiplier when playing it 2013-07-16 01:30:03 -07:00
Chris Robinson
f296d13c20 Add a speed multiplier to the animation state 2013-07-16 00:43:31 -07:00
scrawl
fa5198d7b2 Fix an assertion 2013-07-14 14:59:24 +02:00
Chris Robinson
5ee889e8b6 Attach the camera to the Head node in first-person 2013-07-13 16:12:38 -07:00
Chris Robinson
2d7620e774 Rotate the neck when looking up and down in first-person 2013-07-13 12:39:06 -07:00
Chris Robinson
908f010c74 Reset the NPC object root when switching POV
When in first person, the skeleton in the .1st.nif file is used. In
particular, these have extra finger bones that are used by the first
person models.
2013-07-12 22:31:57 -07:00
scrawl
7a2d1cd8ce Security skill 2013-05-19 18:40:37 +02:00
Chris Robinson
f83ee5d316 Play ready/unready animations on the upper body 2013-05-13 03:32:00 -07:00
Chris Robinson
a9928bb842 Split up the UpperBody group
Also recognize the [un]equip start and stop text keys.
2013-05-13 02:09:22 -07:00
Chris Robinson
70dc2f77ad Move the priority enum to MWMechanics 2013-05-13 00:54:44 -07:00
Chris Robinson
bbb38c61cc Fix queued animations 2013-05-12 05:08:01 -07:00
Chris Robinson
3988866ecd Make sure active groups are updated after a state is auto-disabled 2013-05-12 04:34:37 -07:00
Chris Robinson
2c556e4036 Be smarter about handling non-moving animations
Don't rely on being told by the play method, so the animation can
automatically change without impacting the character controller.
2013-05-12 04:29:42 -07:00
Chris Robinson
4ea347ac52 Use shared pointers to store animation sources
This ensures references to the sources stay valid as long it the object
is, rather than becoming invalidated whenever one is added or removed.
2013-05-11 19:38:23 -07:00
Chris Robinson
6b8a687a79 Add methods to disable an animation
And rename WeaponState to WeaponType
2013-05-10 22:22:39 -07:00
Chris Robinson
6605aa7dec Create three bone groups
This still won't work as expected. Currently there is only one priority level,
and only one animation state per priority level can be active at a time.

It's close, though.
2013-05-10 20:45:09 -07:00
Chris Robinson
abc676eedd Allow specifying which bone groups to play an animation on 2013-05-10 20:05:09 -07:00
Chris Robinson
56eede2610 Search more aggressively for an animation velocity 2013-05-10 19:31:33 -07:00
Chris Robinson
5a9c1e1245 Don't explicitly track the last position 2013-05-10 18:58:14 -07:00
Chris Robinson
7c3b014193 Figure out which animations to play based on priority
Bone group will also be taken into account later.
2013-05-10 18:37:44 -07:00
Chris Robinson
921f534980 Parameterize the number of bone groups 2013-05-10 16:35:43 -07:00
Chris Robinson
8a9b0eb5f7 Store the AnimSource in the animation state 2013-05-10 15:27:29 -07:00
Chris Robinson
58efce5008 Rename animation layers to animation states 2013-05-10 04:01:30 -07:00
Chris Robinson
ccff364b52 Use a map of active layers instead of an array
A bit of an upheaval. Each animation is now a "layer", instead of each layer
having an animation. Incidentally, this is much closer to how Ogre handles
animation states.

In the future, each layer will have a priority, which will be used to determine
which one affects a given bone group (which we currently only have one of).
2013-05-10 03:08:07 -07:00
Chris Robinson
d5490b0f8f Fix an outdated comment 2013-05-09 23:07:50 -07:00
Chris Robinson
8e38dc410f Allow loading multiple animation sources
Animation sources are treated differently from base objects. When given
"path\file.nif", base objects will look for "path\xfile.nif" and use that
if it exists (falling back to the original name if not found). Animation
sources will instead use "path\xfile.kf", ignoring it if the file doesn't
exist.
2013-05-07 16:59:32 -07:00
Chris Robinson
e85bc8b2cd Only load one Nif for Animation objects
This breaks quite a bit, but it's needed for the transition to using the
.kf files.
2013-05-06 23:11:26 -07:00
Chris Robinson
6a3ba41170 Don't store camera nodes, we don't need them. 2013-05-06 21:46:11 -07:00
Chris Robinson
4b15da076b Move getStateInfo into the character controller 2013-04-30 19:26:41 -07:00
gus
766d1efa84 Render weapon and shield. Only shield can be seen right now as weapons need to be drawed out. 2013-04-28 11:41:01 +01:00
Chris Robinson
9a2a32f2a5 Add a method to clear all Animation sources except the first
The first needs to remain, since that's where any mSkelBase entity comes from,
and where any retrieved nodes are from.
2013-04-25 05:02:11 -07:00
Chris Robinson
9be20b90f1 Fix potential infinite loop when layer 0 is empty 2013-04-25 03:35:40 -07:00
Chris Robinson
86fda1bff6 Only set mSkelBase from the first objectlist 2013-04-25 00:52:26 -07:00
Chris Robinson
7eac37be23 Make sure the old layer is cleared before starting the next 2013-04-25 00:18:02 -07:00
Chris Robinson
09fc50948b Add methods to disable and get info for a layer 2013-04-25 00:08:16 -07:00
Chris Robinson
24f1eba902 Keep track of whether an animation supplies movement
Also handle it when it doesn't.
2013-04-24 22:45:43 -07:00
Chris Robinson
0817d59f23 Allow specifying where to start in an animation 2013-04-24 19:09:36 -07:00
Chris Robinson
333354fe62 Remove the character controller from the Animation class 2013-04-24 07:10:41 -07:00
Chris Robinson
b80891099e Don't use the character controller to handle text keys
The Animation class has the Ptr and can call to whatever subsystem is needed.
2013-04-24 06:48:34 -07:00
Chris Robinson
e8cabc9434 Pass the loop count from loopgroup to the play method
Instead of queueing each iteration separately.
2013-04-24 06:32:11 -07:00
Chris Robinson
c58dfbe921 Specify the loop count to Animation::play 2013-04-24 04:56:39 -07:00
Chris Robinson
7241267d5c Make an AnimationValue for each animation layer 2013-04-24 04:41:52 -07:00
Chris Robinson
102b3bdef9 Update position by reference 2013-04-24 01:57:51 -07:00
Chris Robinson
9e05ee53da Avoid looking for the controller if there is no NonAccum node
Also, make sure there is a controller before updating the position.
2013-04-24 01:18:08 -07:00