mirror of
https://github.com/mapbase-source/mapbase-model-src.git
synced 2025-03-13 14:10:15 +03:00
47 lines
2.0 KiB
Plaintext
47 lines
2.0 KiB
Plaintext
|
|
||
|
//
|
||
|
// Dynamic interactions base, including macros.
|
||
|
//
|
||
|
// To put existing interactions on other NPCs, most recompiled animations use special blending techniques
|
||
|
// so interactions meant for one NPC (like Alyx) could transition into a more appropriate animation for another NPC.
|
||
|
// Unfortunately, there does not appear to be a way to transition dynamically to a NPC's current weapon's aiming animation
|
||
|
// without rewriting a great portion of the dynamic interaction code.
|
||
|
// So, in order to determine which animation to blend from/into, global variables are declared before $including these QCIs:
|
||
|
//
|
||
|
// Blend_SMD_Default - Their most common aiming anim. For example, citizens use the SMG aim while metrocops use the Pistol aim.
|
||
|
// Blend_SMD_Pistol - Pistol aiming animation.
|
||
|
// Blend_SMD_Rifle - SMG/AR2 aiming animation.
|
||
|
//
|
||
|
// These are then called by each interaction based on which one they used to begin with.
|
||
|
// For example, DI_Idle_Pistol is used for Alyx's pistol interactions while DI_Idle_Rifle is used for Alyx's shotgun interactions.
|
||
|
//
|
||
|
// This technique is now used with other animation ports as well.
|
||
|
//
|
||
|
|
||
|
// This is the macro that makes the blended animation.
|
||
|
// Activity and stuff should be added with $append.
|
||
|
// This can be used with both dealing and receiving ends of the interaction.
|
||
|
$definemacro MakeDynamicInteraction SeqName InteractionAnim IdleAnim InFrame OutFrame FrameNum \\
|
||
|
$sequence $SeqName$_layer $InteractionAnim$ hidden \\
|
||
|
$sequence $SeqName$ $IdleAnim$ { \\
|
||
|
blendlayer $SeqName$_layer 0 $InFrame$ $OutFrame$ $FrameNum$ spline \\
|
||
|
numframes $FrameNum$ \\
|
||
|
fps 30 \\
|
||
|
fadein 0.25 \\
|
||
|
fadeout 0.25 \\
|
||
|
cmdlist lockfeet \\
|
||
|
} \\
|
||
|
$continue $SeqName$
|
||
|
|
||
|
// This makes a dynamic interaction from an existing layer.
|
||
|
$definemacro MakeDynamicInteractionFromExistingSeq SeqName ExistingAnim IdleAnim InFrame OutFrame FrameNum \\
|
||
|
$sequence $SeqName$ $IdleAnim$ { \\
|
||
|
blendlayer $ExistingAnim$ 0 $InFrame$ $OutFrame$ $FrameNum$ spline \\
|
||
|
numframes $FrameNum$ \\
|
||
|
fps 30 \\
|
||
|
fadein 0.25 \\
|
||
|
fadeout 0.25 \\
|
||
|
cmdlist lockfeet \\
|
||
|
} \\
|
||
|
$continue $SeqName$
|