Class VSFPZedHands extends Actor transient; var SkeletalMeshComponent Mesh; var AnimNodeSlot HandsAnimNode,BodyNode; var name IdleAnimName; simulated function InitHands(SkeletalMeshComponent C) { Mesh.SetSkeletalMesh(C.SkeletalMesh); Mesh.AnimSets = C.AnimSets; HandsAnimNode = AnimNodeSlot(Mesh.FindAnimNode('ArmsSlot')); BodyNode = AnimNodeSlot(Mesh.FindAnimNode('BodySlot')); } simulated final function SetIdleAnim(name N) { IdleAnimName = N; Timer(); } simulated function Timer() { HandsAnimNode.PlayCustomAnim(IdleAnimName,1.f,0.15,,true); } simulated final function PlayHandsAnim(name N, optional float Rate=1.f) { SetTimer(HandsAnimNode.PlayCustomAnim(N,Rate,0.05,,,true),false); } defaultproperties { Begin Object Class=AnimTree Name=FPZEDAnimTree Begin Object Class=SkelControlSingleBone Name=ArmStretcher bApplyTranslation=True bAddTranslation=True BoneTranslation=(X=50.000000,Y=0.000000,Z=0.000000) BoneTranslationSpace=BCS_ActorSpace End Object Begin Object Class=AnimNodeSlot Name=ArmSlotter TickArrayIndex=2 NodeName="ArmsSlot" End Object Begin Object Class=AnimNodeBlendPerBone Name=AnimBoneBlender BranchStartBoneName(0)="RightArm" BranchStartBoneName(1)="LeftArm" Child2Weight=1.000000 Child2WeightTarget=1.000000 Children(1)=(Anim=AnimNodeSlot'ArmSlotter') TickArrayIndex=1 NodeTotalWeight=1.000000 End Object SkelControlLists(0)=(BoneName="RightArm",ControlHead=SkelControlSingleBone'ArmStretcher') SkelControlLists(1)=(BoneName="LeftArm",ControlHead=SkelControlSingleBone'ArmStretcher') AnimTickArray(0)=AnimTree'FPZEDAnimTree' AnimTickArray(1)=AnimNodeBlendPerBone'AnimBoneBlender' AnimTickArray(2)=AnimNodeSlot'ArmSlotter' Children(0)=(Anim=AnimNodeBlendPerBone'AnimBoneBlender') End Object Begin Object Class=SkeletalMeshComponent Name=FPHandSkeletalMesh MinDistFactorForKinematicUpdate=0.200000 bSkipAllUpdateWhenPhysicsAsleep=True bIgnoreControllersWhenNotRendered=True bHasPhysicsAssetInstance=True bUpdateKinematicBonesFromAnimation=False bPerBoneMotionBlur=True bOverrideAttachmentOwnerVisibility=True bChartDistanceFactor=True RBChannel=RBCC_Pawn RBDominanceGroup=20 bAcceptsDynamicDecals=True bUseOnePassLightingOnTranslucency=True CollideActors=false BlockZeroExtent=false BlockRigidBody=false Translation=(X=0.000000,Y=0.000000,Z=-86.000000) ScriptRigidBodyCollisionThreshold=200.000000 PerObjectShadowCullDistance=4000.000000 bAllowPerObjectShadows=True bAllowPerObjectShadowBatching=True AnimTreeTemplate=AnimTree'FPZEDAnimTree' CastShadow=false bCastDynamicShadow=false bCastStaticShadow=false End Object Mesh=FPHandSkeletalMesh Components.Add(FPHandSkeletalMesh) }