You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HighGroundRoyaleNetcode/Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileActi...

65 lines
2.1 KiB
C#

3 weeks ago
using System;
using System.Collections.Generic;
using Unity.BossRoom.Gameplay.GameplayObjects.Character;
using Unity.BossRoom.VisualEffects;
namespace Unity.BossRoom.Gameplay.Actions
{
public partial class ChargedLaunchProjectileAction
{
/// <summary>
/// A list of the special particle graphics we spawned.
/// </summary>
/// <remarks>
/// Performance note: repeatedly creating and destroying GameObjects is not optimal, and on low-resource platforms
/// (like mobile devices), it can lead to major performance problems. On mobile platforms, visual graphics should
/// use object-pooling (i.e. reusing the same GameObjects repeatedly). But that's outside the scope of this demo.
/// </remarks>
private List<SpecialFXGraphic> m_Graphics = new List<SpecialFXGraphic>();
private bool m_ChargeEnded;
public override bool OnStartClient(ClientCharacter clientCharacter)
{
base.OnStartClient(clientCharacter);
m_Graphics = InstantiateSpecialFXGraphics(clientCharacter.transform, true);
return true;
}
public override bool OnUpdateClient(ClientCharacter clientCharacter)
{
return !m_ChargeEnded;
}
public override void CancelClient(ClientCharacter clientCharacter)
{
if (!m_ChargeEnded)
{
foreach (var graphic in m_Graphics)
{
if (graphic)
{
graphic.Shutdown();
}
}
}
}
public override void OnStoppedChargingUpClient(ClientCharacter clientCharacter, float finalChargeUpPercentage)
{
m_ChargeEnded = true;
foreach (var graphic in m_Graphics)
{
if (graphic)
{
graphic.Shutdown();
}
}
// the graphics will now take care of themselves and shutdown, so we can forget about 'em
m_Graphics.Clear();
}
}
}