//============================================================================= // KFAnimSeq_ByWeaponClass //============================================================================= // AnimNodeSequence which chooses an animation based on the equipped weapon //============================================================================= // Killing Floor 2 // Copyright (C) 2015 Tripwire Interactive LLC // - Andrew "Strago" Ladenberger //============================================================================= // Based on GearAnim_SequenceByWeaponClass // Copyright 1998-2011 Epic Games, Inc. All Rights Reserved. //============================================================================= class KFAnimSeq_ByWeaponClass extends AnimNodeSequence deprecated native(Anim); struct native WeaponClassNameInfo { /** Weapon class */ var() Class WeaponClass; /** Animation to use */ var() Name AnimName; }; /** List of weapons, class and animation name.*/ var() Array WeaponList; /** Default, when no match can be made, or weapon is holstered */ var() Name WeaponDefaultAnimName; /** When moving the slider, keep nodes with same property in sync. */ var() bool bSynchronizeNodesInEditor; /** Slider position for weapon list */ var editoronly const FLOAT WeaponListSliderPosition; /** Internal cached pointer to GearPawn Owner */ var const transient Pawn PawnOwner; /** Internal cached pointer to owner's weapon */ var const transient Weapon CurrentWeapon; /** Cached bool to track holstering changes */ var const transient bool bTemporaryHolster; cpptext { virtual void InitAnim(USkeletalMeshComponent* MeshComp, UAnimNodeBlendBase* Parent); virtual void TickAnim(FLOAT DeltaSeconds); /** * @return TRUE if this object is of the specified type. * If SomeBase is a parent class of CheckClass, then Depth will tell how many generations between both. */ UBOOL IsA_AndDepth(UClass* CheckClass, const UClass* SomeBase, INT& Depth) const; /** Looks at current weapon, and default classes, and makes a suggestion on Channel to use. */ INT SuggestTargetChannelForClass(UClass* CheckClass) const; /** * Utility function to update animation to use based on weapon carried. * Optimized version that updates the animation only when the node is relevant in the tree, * and otherwise will defer the update until the node comes into relevancy. */ void SetWeaponAnim(FName NewAnimName); // AnimTree editor interface virtual INT GetNumSliders() const { return bShowTimeLineSlider ? 2 : 1; } virtual FLOAT GetSliderPosition(INT SliderIndex, INT ValueIndex); virtual void HandleSliderMove(INT SliderIndex, INT ValueIndex, FLOAT NewSliderValue); virtual FString GetSliderDrawValue(INT SliderIndex); }; defaultproperties { bSynchronizeNodesInEditor=TRUE }