1
0
KF2-Dev-Scripts/KFGame/Classes/KFSkelControl_SprayScaling.uc

83 lines
2.1 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
/**
* Copyright 1998-2011 Epic Games, Inc. All Rights Reserved.
*
* Handles dynamic scaling for the Gears 2 flamethrower.
*/
class KFSkelControl_SprayScaling extends SkelControlBase
native(Anim);
struct native SprayScaleInParams
{
/** Will scale from ScaleRange.X to ScaleRange.Y over this time range. */
var() vector2d ScaleInTimeRange;
/** */
var() vector2d ScaleRange;
/** Exponent used to control the mapping curve. */
var() float Pow;
structdefaultproperties
{
Pow=1.f
}
};
/** Information to describe how a bone scales with velocity. */
struct native SprayVelocityScaleParams
{
/** Range of velocities that is mapped to ScaleRange */
var() vector2d VelocityRange;
/** Range of scales that is mapped to VelocityRange. */
var() vector2d ScaleRange;
/** Exponent used to control the mapping curve. */
var() float Pow;
structdefaultproperties
{
Pow=1.f
}
};
struct native SprayBoneScaleParams
{
/** which bone we're setting params for. */
var() name BoneName;
var float CachedBoneIndex;
var() bool bScaleIn;
var() SprayScaleInParams ScaleInParams;
var() bool bScaleWithVelocity;
var() SprayVelocityScaleParams VelocityScaleParams;
};
// transient properties
var() transient float CurrentAge;
var() transient float CurrentVel;
var transient float LastVel;
/** Velocity is smoothed over time. This controls how tightly it adheres to the actual velocity. */
var() protected float VelocitySmoothingInterpSpeed;
var() protected array<SprayBoneScaleParams> ScaleParams;
cpptext
{
public:
// USkelControlBase interface
virtual void TickSkelControl(FLOAT DeltaSeconds, USkeletalMeshComponent* SkelComp);
virtual void GetAffectedBones(INT BoneIndex, USkeletalMeshComponent* SkelComp, TArray<INT>& OutBoneIndices);
virtual void CalculateNewBoneScales(INT BoneIndex, USkeletalMeshComponent* SkelComp, TArray<FLOAT>& OutBoneScales);
}
simulated function ResetTransients()
{
CurrentAge = 0.f;
CurrentVel = 0.f;
LastVel = 0.f;
}
defaultproperties
{
VelocitySmoothingInterpSpeed=8.f
}