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

268 commits

Author SHA1 Message Date
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
Chris Robinson
544011e096 Fix 'start' text key fallback lookup 2013-04-24 00:40:58 -07:00
Chris Robinson
7e2995bc2f Fix setting up active controllers 2013-04-23 19:43:26 -07:00
Chris Robinson
8c9e2e0ee9 Improve handling of reaching the stop animation text key 2013-04-23 05:34:08 -07:00
Chris Robinson
c4806f01f8 Use a separate list of controllers to update
This should make it easier to figure out what controllers need to be updated
for various animation sources and layers.
2013-04-23 04:08:09 -07:00
Chris Robinson
e4c5aac966 Keep track of the animation layers a given object list is animating on
This only tracks layers they explicitly animate on. They may animate on other
layers as well, if nothing else is animating on them.
2013-04-23 02:48:11 -07:00
Chris Robinson
e378176937 Don't update controllers that have already been updated 2013-04-23 00:15:31 -07:00
Chris Robinson
8782ae6976 Separate some Animation fields into a separate AnimLayer class 2013-04-22 23:52:28 -07:00
Chris Robinson
c3ce49798a Fix animation velocity calculation 2013-04-22 21:34:39 -07:00
Chris Robinson
7279e015e9 Search the textkeys to check if an animation group exists 2013-04-22 20:59:55 -07:00
Chris Robinson
a2fc43c7df Use reset to check that the animation exists and has the right markers 2013-04-22 20:41:54 -07:00
Chris Robinson
bb64efc18e Improve looping behavior 2013-04-22 05:08:52 -07:00
Chris Robinson
cc70c6263b Use the NodeTargetValue for the NonAccum root 2013-04-22 04:10:46 -07:00
Chris Robinson
9485a4aa6d Look through the whole animation stack to find the "velocity" 2013-04-22 01:40:41 -07:00
Chris Robinson
a7776e124c Only set mNonAccumRoot from mSkelBase 2013-04-22 00:22:31 -07:00
Chris Robinson
a3511c62cf Don't store textkeys in user object bindings
It's a bit unwieldy to have them stored in the 'skeleton master' instead
of the skeleton instance. And although the text keys are extracted for
each created instance now, this shouldn't be much worse than the
multimap copying going on before.

Plus, proper serialization can help for future optimizations.
2013-04-22 00:01:30 -07:00
Chris Robinson
2345b5e8b3 Avoid storing text keys for each animation 2013-04-21 22:56:40 -07:00
Chris Robinson
7d59340ed6 Don't clip out the group name from the textkeys 2013-04-21 22:13:49 -07:00
Chris Robinson
6c85d6763a Pass "loop stop" to the character controller 2013-04-21 18:38:25 -07:00
Chris Robinson
d7c9df16f8 Store the current animation group 2013-04-21 18:32:34 -07:00
Chris Robinson
835ff8eb1e Avoid creating an AnimationValue per ObjectList 2013-04-20 17:13:27 -07:00
Chris Robinson
50bb92beb3 Use a method to set the visibility flags and render queue. 2013-04-19 02:01:50 -07:00
Chris Robinson
4ce98e9bd6 Store iterators for start and stop keys 2013-04-15 20:37:10 -07:00
Chris Robinson
1b1f9f7921 Allow multiple ObjectLists to be created for Animations.
addObjectList may not currently be called outside of the related constructor.
2013-04-15 18:55:28 -07:00
Chris Robinson
69084139aa Use an array of objectlists, instead of one base objectlist and an array of 'animation sources' 2013-04-14 17:58:21 -07:00
Chris Robinson
f9dee25fd1 Store the base skeleton entity in MWRender::Animation 2013-04-14 16:56:35 -07:00
Chris Robinson
a700c50e84 Add a first-person view mode to NpcAnimation
And use it instead of showing/hiding the player.
2013-04-09 15:10:14 -07:00
Chris Robinson
08d43fe217 Make the getHeadNode method more general 2013-04-08 05:48:52 -07:00
Chris Robinson
7baca30a1d Only get the non-accum root's keyframe when updating positions
The actual animation pose is now handled by the controllers, based on the
current animation time.
2013-04-07 16:21:45 -07:00
Chris Robinson
261ea1fe5e Implement a KeyframeController 2013-04-07 14:56:23 -07:00
Chris Robinson
f69a8259e1 Update animation source controller targets 2013-04-07 13:51:04 -07:00
Chris Robinson
2362e920f3 Use an unconnected object list for animation sources
We'll want the controllers, as the plan is to use their keyframe controllers
to animate the actual skeleton used for the meshes.
2013-04-07 12:41:27 -07:00
Chris Robinson
80a1abd48a Clear the old text keys when setting new animation sources 2013-04-07 11:09:55 -07:00
Chris Robinson
be419bc891 Handle NiCamera nodes 2013-04-07 02:28:15 -07:00
Chris Robinson
2db72ae607 Rename EntityList to ObjectList 2013-04-07 01:52:35 -07:00
Chris Robinson
59f1d4b047 Add support for NiUVController on meshes 2013-04-06 09:44:10 -07:00
Chris Robinson
0631b28646 Prepare for supporting controller objects 2013-04-05 10:13:54 -07:00
Chris Robinson
af2a38db38 Fix looping anims that dont have "loop start" 2013-04-05 08:27:26 -07:00
Chris Robinson
77ba0fbe73 Prepare for creating particles
This adds a vector of ParticleSystems to the EntityList, and modifies
corresponding code to handle it. It also loads the ParticleFX plugin so
particles can be created (although they aren't yet).
2013-04-04 05:10:52 -07:00
Chris Robinson
bfe80bb8dc Avoid duplicating skeletons due to casing issues
Manually created resource names are apparently always case sensitive, causing
some skeletons to get loaded multiple times.
2013-02-27 12:33:36 -08:00
Chris Robinson
8e59ea4941 Use a separate method to handle animation events 2013-02-23 14:39:01 -08:00
Chris Robinson
d77d035d3a Handle the "sound" events in runAnimation 2013-02-23 14:15:11 -08:00
Chris Robinson
d208422ca7 Add a method to update an Animation's Ptr object 2013-02-23 10:12:36 -08:00
Chris Robinson
0d0e75fe0b Don't set animation sources for models that don't have a skeleton 2013-02-23 07:36:11 -08:00
Chris Robinson
e6da9dfae5 Specify the animation key to stop playing at 2013-02-23 05:15:10 -08:00
Chris Robinson
b8f5813609 Set all animation sources at once 2013-02-23 03:34:03 -08:00
Chris Robinson
9dee2a72cd Use a separate method to calculate animation velocity 2013-02-22 09:22:06 -08:00
Chris Robinson
617158afcd Ensure updated skeleton bone placement matches in world space
Objects attached to actors (shirts, robes, etc) do not require the same node
hierarchy as the character root. So to ensure proper placement, we need to set
the bone target's derived transformation using the source bone's derived
transformation (which in turn means we need to work up from the root, to ensure
the bone's parents are properly placed).
2013-02-20 02:41:46 -08:00
Chris Robinson
8196694c08 Avoid applying the animation when resetting it 2013-02-19 06:04:25 -08:00
Chris Robinson
f8349a04bf Use the looping portion of the animation to calculate the velocity 2013-02-19 05:26:58 -08:00
Chris Robinson
1399a06c76 Update animation looping when setting the same state 2013-02-19 04:01:33 -08:00
Chris Robinson
ff0099fa6e Scale the animation speed based on the animation velocity and movement speed
This may not be totoally correct since it takes the whole animation into
account, rather than just the looping portion. But it's good enough for now.
2013-02-15 02:15:39 -08:00