175 lines
4.2 KiB
Ucode
175 lines
4.2 KiB
Ucode
class KFActor_DoshPile extends StaticMeshActor;
|
|
|
|
var float DoshPileMax;
|
|
var ParticleSystemComponent ExplodeOutEffect;
|
|
var(Projectile) ParticleSystem ExplodeOutTemplate;
|
|
|
|
var ParticleSystemComponent ExplodeInEffect;
|
|
var(Projectile) ParticleSystem ExplodeInTemplate;
|
|
|
|
var float LastPercent;
|
|
|
|
var int MaterialSlot;
|
|
var float ExplodeDelay;
|
|
var bool bDelayActive;
|
|
var bool bCreatedMic;
|
|
|
|
var int PileIndexID;
|
|
|
|
function SetValue(Float Percentfilled)
|
|
{
|
|
// Only the main, central pile needs animate (i.e. create a MIC).
|
|
// If this is not the main pile, simple toggle hidden; creating a MIC causes visual problems.
|
|
if (PileIndexID != 0)
|
|
{
|
|
SetHidden(PercentFilled < 1.0);
|
|
return;
|
|
}
|
|
|
|
if(!bDelayActive)
|
|
{
|
|
if (!bCreatedMic)
|
|
{
|
|
StaticMeshComponent.CreateAndSetMaterialInstanceConstant(MaterialSlot);
|
|
bCreatedMic = true;
|
|
}
|
|
|
|
MaterialInstanceConstant(StaticMeshComponent.GetMaterial(MaterialSlot)).SetScalarParameterValue('Perc', Percentfilled);
|
|
LastPercent = Percentfilled;
|
|
}
|
|
|
|
}
|
|
|
|
simulated function Destroyed()
|
|
{
|
|
if (ExplodeOutEffect != None)
|
|
{
|
|
DetachComponent(ExplodeOutEffect);
|
|
WorldInfo.MyEmitterPool.OnParticleSystemFinished(ExplodeOutEffect);
|
|
ExplodeOutEffect = None;
|
|
}
|
|
|
|
if (ExplodeInEffect != None)
|
|
{
|
|
DetachComponent(ExplodeInEffect);
|
|
WorldInfo.MyEmitterPool.OnParticleSystemFinished(ExplodeInEffect);
|
|
ExplodeInEffect = None;
|
|
}
|
|
}
|
|
|
|
function ExplodeIn()
|
|
{
|
|
bDelayActive = false;
|
|
SetValue(1);
|
|
}
|
|
|
|
function ExplodeOut()
|
|
{
|
|
bDelayActive = false;
|
|
SetValue(0);
|
|
}
|
|
|
|
simulated function OnExplodeParticleSystemFinished(ParticleSystemComponent PSC)
|
|
{
|
|
if (PSC == ExplodeInEffect && ExplodeInEffect != none)
|
|
{
|
|
ExplodeInEffect = none;
|
|
}
|
|
else if (PSC == ExplodeOutEffect && ExplodeInEffect != none)
|
|
{
|
|
ExplodeOutEffect = none;
|
|
}
|
|
|
|
DetachComponent(PSC);
|
|
WorldInfo.MyEmitterPool.OnParticleSystemFinished(PSC);
|
|
}
|
|
|
|
function SpawnCompleteParticleEffects(optional bool bExplodIn = true)
|
|
{
|
|
if (bDelayActive)
|
|
{
|
|
return;
|
|
}
|
|
bDelayActive = true;
|
|
|
|
if(bExplodIn)
|
|
{
|
|
ExplodeInEffect = WorldInfo.MyEmitterPool.SpawnEmitterCustomLifetime(ExplodeInTemplate);
|
|
if (ExplodeInEffect != none)
|
|
{
|
|
ExplodeInEffect.OnSystemFinished = OnExplodeParticleSystemFinished;
|
|
ExplodeInEffect.SetAbsolute(false, false, false);
|
|
ExplodeInEffect.SetLODLevel(WorldInfo.bDropDetail ? 1 : 0);
|
|
ExplodeInEffect.bUpdateComponentInTick = true;
|
|
AttachComponent(ExplodeInEffect);
|
|
}
|
|
else
|
|
{
|
|
`log("Explode in effect failed to spawn. Is this setup correctly?");
|
|
}
|
|
|
|
SetTimer(ExplodeDelay, false, nameof(ExplodeIn));
|
|
}
|
|
else
|
|
{
|
|
ExplodeOutEffect = WorldInfo.MyEmitterPool.SpawnEmitterCustomLifetime(ExplodeOutTemplate);
|
|
if (ExplodeOutEffect != none)
|
|
{
|
|
ExplodeOutEffect.OnSystemFinished = OnExplodeParticleSystemFinished;
|
|
ExplodeOutEffect.SetAbsolute(false, false, false);
|
|
ExplodeOutEffect.SetLODLevel(WorldInfo.bDropDetail ? 1 : 0);
|
|
ExplodeOutEffect.bUpdateComponentInTick = true;
|
|
AttachComponent(ExplodeOutEffect);
|
|
}
|
|
else
|
|
{
|
|
`log("Explode out effect not spawned. Is this setup correctly?");
|
|
}
|
|
|
|
SetTimer(ExplodeDelay, false, nameof(ExplodeOut));
|
|
}
|
|
|
|
PlayDoshPileExplodeSound();
|
|
}
|
|
|
|
|
|
function PlayDoshPileExplodeSound()
|
|
{
|
|
local KFPlayerController KFPC;
|
|
|
|
foreach LocalPlayerControllers(class'KFPlayerController', KFPC)
|
|
{
|
|
if(KFPC.MyGfxManager != none)
|
|
{
|
|
KFPC.MyGfxManager.PlaySoundFromTheme( class'KFGFxMenu_DoshVault'.default.PileDisappearEventName, class'KFGFxMenu_DoshVault'.default.DoshVaultSoundThemeName);
|
|
}
|
|
}
|
|
}
|
|
|
|
function SpawnFillingParticleEffects()
|
|
{
|
|
//NO FILL PARTICLE YET
|
|
}
|
|
|
|
DefaultProperties
|
|
{
|
|
ExplodeInTemplate=ParticleSystem'FX_Environmental_EMIT_THREE.FX_Dosh_Vault_Appear_01'
|
|
|
|
ExplodeOutTemplate=ParticleSystem'FX_Environmental_EMIT_THREE.FX_Dosh_Vault_Disappear_01'
|
|
|
|
bStatic=false
|
|
bNoDelete=false
|
|
|
|
DoshPileMax=1000000.0
|
|
|
|
MaterialSlot=1
|
|
|
|
Begin Object Name=StaticMeshComponent0
|
|
StaticMesh=StaticMesh'econ_dosh_mesh.Econ_Dosh_Pallet_SM'
|
|
End Object
|
|
|
|
ExplodeDelay=1.0f
|
|
bCreatedMic=false
|
|
|
|
LastPercent=INDEX_NONE
|
|
} |