// Used for weapons page class SpinnyWeap extends Actor; var() int SpinRate; var() bool bPlayRandomAnims; var() bool bPlayCrouches; var() float AnimChangeInterval; var() array AnimNames; var float CurrentTime; var float NextAnimTime; simulated event PostBeginPlay() { local int i; if ( !bPlayCrouches ) { for ( i = AnimNames.Length - 1; i >= 0; i++ ) { if ( AnimNames[i] == 'Crouch' ) AnimNames.Remove(i,1); } } } function Tick(float Delta) { local rotator NewRot; NewRot = Rotation; NewRot.Yaw += Delta * SpinRate/Level.TimeDilation; SetRotation(NewRot); CurrentTime += Delta/Level.TimeDilation; // If desired, play some random animations if(bPlayRandomAnims && CurrentTime >= NextAnimTime) { PlayNextAnim(); } } event AnimEnd( int Channel ) { Super.AnimEnd(Channel); PlayAnim(AnimNames[0], 1.0/Level.TimeDilation, 0.25/Level.TimeDilation); } function PlayNextAnim() { local name NewAnimName; if(Mesh == None || AnimNames.Length == 0) return; NewAnimName = AnimNames[Rand(AnimNames.Length)]; while ( NewAnimName == 'Crouch' && !bPlayCrouches ) NewAnimName = AnimNames[Rand(AnimNames.Length)]; PlayAnim(NewAnimName, 1.0/Level.TimeDilation, 0.25/Level.TimeDilation); NextAnimTime = CurrentTime + AnimChangeInterval; } defaultproperties { RemoteRole=ROLE_None bUnlit=true bPlayCrouches=True SpinRate=20000 DrawType=DT_StaticMesh //DrawType=DT_Mesh bAlwaysTick=true DrawScale=0.5 LODBias=100000 AnimNames(0)=Idle_Rest AnimNames(1)=Crouch AnimNames(2)=asssmack AnimNames(3)=pthrust AnimNames(4)=throatcut AnimNames(5)=gesture_halt AnimNames(6)=gesture_point AnimNames(7)=gesture_beckon AnimChangeInterval=3.0; }