1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFWeapAttach_HRG_Energy.uc

107 lines
3.1 KiB
Ucode
Raw Permalink Normal View History

2021-09-02 21:46:08 +00:00
//=============================================================================
// KFWeapAttach_HRG_Energy
//=============================================================================
//
//=============================================================================
// Killing Floor 2
// Copyright (C) 2021 Tripwire Interactive LLC
//=============================================================================
class KFWeapAttach_HRG_Energy extends KFWeaponAttachment;
`define HRG_ENERGY_MIC_LED_INDEX_1 0
`define HRG_ENERGY_MIC_SCREEN_INDEX 1
`define HRG_ENERGY_MIC_LED_INDEX_2 2
var MaterialInstanceConstant WeaponMIC_2;
var MaterialInstanceConstant WeaponMICScreen;
simulated function SetWeaponAltFireMode (bool bUsingAltFireMode)
{
super.SetWeaponAltFireMode(bUsingAltFireMode);
UpdateMaterial(bUsingAltFireMode ? 1 : 0);
}
simulated function UpdateMaterial(byte FireMode)
{
local LinearColor MatColor;
if (WeapMesh == none)
{
return;
}
MatColor = FireMode == 0 ? class'KFWeap_HRG_Energy'.default.DefaultFireMaterialColor : class'KFWeap_HRG_Energy'.default.AltFireMaterialColor;
if ( WeaponMIC == none )
{
WeaponMIC = WeapMesh.CreateAndSetMaterialInstanceConstant(`HRG_ENERGY_MIC_LED_INDEX_1);
}
if ( WeaponMIC_2 == none )
{
WeaponMIC_2 = WeapMesh.CreateAndSetMaterialInstanceConstant(`HRG_ENERGY_MIC_LED_INDEX_2);
}
if (WeaponMICScreen == none)
{
WeaponMICScreen = WeapMesh.CreateAndSetMaterialInstanceConstant(`HRG_ENERGY_MIC_SCREEN_INDEX);
}
WeaponMIC.SetVectorParameterValue('Vector_GlowColor', MatColor);
WeaponMIC_2.SetVectorParameterValue('Vector_GlowColor', MatColor);
WeaponMICScreen.SetVectorParameterValue('Color_override', MatColor);
}
/** Plays fire animation on weapon mesh */
simulated function PlayWeaponFireAnim()
{
local float Duration, AnimRateModifier;
local name Animation;
local KFPawn_Human KFPH;
KFPH = KFPawn_Human(Instigator);
AnimRateModifier = (KFPH != none && KFPH.bUsingAltFireMode) ? class'KFWeap_HRG_Energy'.default.SecondaryFireAnimRateModifier : 1.0f;
if ( Instigator.bIsWalking )
{
Duration = WeapMesh.GetAnimLength( WeaponIronFireAnim );
Animation = WeaponIronFireAnim;
}
else
{
Duration = WeapMesh.GetAnimLength( WeaponFireAnim );
Animation = WeaponFireAnim;
WeapMesh.PlayAnim( WeaponFireAnim, Duration / ThirdPersonAnimRate,, true );
}
WeapMesh.PlayAnim( Animation, Duration / ThirdPersonAnimRate * AnimRateModifier,, true );
}
/** Play a 3rd person reload animation */
simulated function PlayReloadMagazineAnim(EWeaponState NewWeaponState, KFPawn P)
{
local name AnimName;
switch (NewWeaponState)
{
case WEP_Reload:
case WEP_ReloadEmpty:
AnimName = (!P.bIsCrouched) ? ReloadHalfAnim : CH_ReloadHalfAnim;
break;
case WEP_Reload_Elite:
case WEP_ReloadEmpty_Elite:
AnimName = (!P.bIsCrouched) ? ReloadHalfEliteAnim : CH_ReloadHalfEliteAnim;
break;
}
PlayCharacterMeshAnim(P, AnimName, true);
}
defaultproperties
{
}