586 Commits over 1,310 Days - 0.02cph!
Citizen/animgraph: added wish-based flailing & directional lean to skid, and converted the 2D x/y blend to a 1D move_direction blend to ensure the transition between directions look proper regardless of speed
https://files.facepunch.com/maxlebled/1b1811b1/2023-12-18%2013-46-47.mp4
Citizen/animgraph: added Jump_Crouching animation
Citizen: updated Jump animation, renamed it to Jump_Standing, + safeguarded against a rare bug where jumping at a very specific time (frame-perfect?) could cause the jump to be instantly overridden by landing, probably on the exact same tick (see attached video)
https://files.facepunch.com/maxlebled/1b1411b1/2023-12-14%2017-57-20_reencode.mp4
Add clothing_c files as an explicit exclusion to the .gitignore rule that excludes compiled content — and restore the files, since contentbuilder can't take care of them for now
Citizen/animgraph: address a couple of edge cases with that last commit & shove the nodes in a group
Citizen/animgraph: fix potential animation snaps caused by the reset signal used to reset the movement cycle phase sometimes overlapping the frame you start moving (especially while holding SHIFT). Rather than send a reset signal if you were idle for at least 300ms *and* you start moving, simply send a reset signal if you've been idle for 300ms at all
https://files.facepunch.com/maxlebled/1b1311b1/sbox_2023-12-13_09-41-59.mp4
Citizen/animgraph: also nest the long transition from post-jump airborne back to normal state
https://files.facepunch.com/maxlebled/1b1311b1/sbox_2023-12-13_09-41-59.mp4
Citizen/animgraph: use a nested State Machine (single transition, conditionless) to always fade in the post-jump airborne state over a longer period of time than the downstream SM allows (see commit comment)
If we go straight from grounded to airborne (without a jump) then we still want to fade the airborne state quite slow... but we also want a fast snap-free state transition back to grounded if we land almost immediately. Snaps happen if a transition out of a state engages while you're still transitioning into this state.
The 'protection' against snaps is done by using 'Time in State' conditions that are slightly longer than the previous transition's blend time. But if we keep that time too high, having very fast transitions (e.g. land-grounded-airborne-grounded-airborne) can look really off. You'd be in the airborne state for a noticeable period of time even though you're running. Therefore a very short 'protection time' below 200ms is required.
But with such a short time, going straight from grounded to airborne is too snappy.
Therefore, inside the state, we use a new SM, with a single conditionless transition, to always fade in from the upstream state gracefully, over a longer period of time. Because it's effectively a nested SM, it doesn't matter that the downstream state transitions are 100ms long. And because the jump-to-airborne transition is quite long, not only does it barely matter that this fade-in always happens, I also think it makes it look a bit better...
The SM always needs to receive a reset from downstream to restart the fade-in from the start, so I have to use yet another 'makeshift reset blocker' to prevent the upstream movement states from getting reset. (Otherwise you'd see a snap as soon as b_grounded went false)
Delete all compiled content under "/game/core/models/" from the repository
Delete all compiled content under "/game/addons/citizen/" from the repository
Citizen/animgraph: make head look more reactive and bouncier
Apply the same .gitignore wildcard fix that I had made to sbox-assets to prevent compiled files from being committed (*_c to *.*_c), with the explicit exclusion of !*.shader_c
Citizen: polish Land_Crouching a bit
Citizen/animgraph: rip out the Selector node that oversees move_style, and replace it by a State Machine implementation; solves a moderate animation snap if you go from idle to full-on sprint, and also safeguards against repeated large snaps if tapping SHIFT
Citizen/animgraph: improve jump SM logic + make wish-based airborne flail fade in over 500ms (this leaves the visuals after jump almost unaffected while letting non-jump scenarios like "running off a cliff" look & feel better) + move its 1D blend slightly downstream (this prevents the non-wish flail and the wish flail from competing, and they run out of phase sync so that could look terrible)
Citizen: improved Land_Standing_Movement_[E/W]
Citizen: one last pass at the airborne flailing (tweaked hands/fingers, added head motion because I'd forgotten, and offset the loop start point)
Citizen: improve airborne flailing (legs move more, and line up better with the direction input)
Citizen/animgraph: improved Land_Standing_Movement_S
Citizen: perform a post-motion-extraction offset on the sprint anims, to get the center-of-mass & pivot point feel better during turns, and blending in general
Citizen: improved 'Land_Movement_N' animation, & fixes it potentially causing weird IK leg flips in some movement animations
Citizen: improved 'Land_Standing' animation & removed old 'Land' animation from VMDL/files
Citizen/animgraph: tie the new airborne flailing to wish_groundspeed
Citizen/animgraph: added better airborne flailing + fixed airborne-ground-airborne jank protection using a timeout of 1000ms instead of 100ms
Citizen/animgraph: added Sprint_NW
Citizen/animgraph: added Sprint_NE + other misc. small tweaks
Citizen/animgraph: reverse the orders of "lock when waned" in the landing animation groups
Citizen: reduced the lean in the sprint forwards animation clip by ~20 degrees
Citizen/animgraph: expanded landing animations (new crouching & movement-specific behaviours), + big improvements to blending out of landing
Citizen/animgraph: improved sprinting animation & handling of the locomotion 'wish' layer
Citizen/animgraph: further improved the lean layer, especially when holding a weapon
Head look adjustments forthcoming still. https://files.facepunch.com/maxlebled/1b1711b1/2023-11-17%2017-35-37.mp4
Citizen/animgraph: rework input-based lean layers
The upper body lean component now works much better, and is nicely staggered with the additive pelvis position component. A copy of the system, with different settings, is now applied while crouching, which improves settling back to idle. The upper body bit is still a bit hacky due to the lack of model-space additive support, but this works OK enough for now. The entire system is composited in *before* the "center delta" system, so it can't stomp any non-default idle poses anymore.
https://files.facepunch.com/maxlebled/1b1611b1/2023-11-16%2021-41-22.mp4
Citizen/animgraph: re-added 2X walks to the 2D blendspace, made them use new fast walks where currently applicable, and renamed "Walk_[direction]_2X" to "Walk2X_[direction]" for consistency
Add *#local.json to .gitignore so that local keyboard preferences don't get committed
Citizen/animgraph: added experimental Sprint_N animation (doesn't play nice with compositing yet)
Citizen/animgraph: lowered distance of strides in WalkFast_E/N, reining in the look of the legs especially once other layers contribute to the pose
Citizen/animgraph: added WalkFast_E/NE & updated S
Citizen: updated WalkFast_N
Citizen/animgraph: fixed foot IK parameters also affecting hands
Citizen/animgraph: new parameters for "manual" / code-side IK, removed b_vr
FPArms: another pass at movement anims
FPArms: camera is now handled separately on a different path & made additive so that simultaneous jump/land/airborne + attack anims don't stomp each other unpleasantly
Citizen: move foot attachments into prefab
FPArms: updated weightlists
FPArms: overhauled punching animgraph (still some things to iron out, but the core functionality works again at least)
Revert "Remove all vmat_c files from repo"
This reverts commit 78190dfd8e5471286d0142df92a07cd8d3968e14.
Remove all vmat_c files from repo
Exclude .mayaSwatches from main repository too
.gitignore: ignore all compiled content except shaders
FPArms: update shared sprint anim
FPArms: removed hold parameters, started reimplementation of punching animgraph with everything learned from the more recent weapon graphs