Weapons/Base/CameraEffect.cs
namespace Opium;
public partial class CameraEffect : Component
{
[Property] public Opium.PlayerController Player { get; set; }
/// <summary>
/// Create a regular camera effect
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="player"></param>
/// <returns></returns>
public static T Create<T>( Opium.PlayerController player ) where T : CameraEffect
{
var newEffect = player.Components.Create( TypeLibrary.GetType<T>(), true ) as CameraEffect;
newEffect.Player = player;
return (T)newEffect;
}
/// <summary>
/// Create a melee weapon effect
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="player"></param>
/// <param name="weapon"></param>
/// <returns></returns>
public static T Create<T>( Opium.PlayerController player, MeleeWeapon weapon ) where T : WeaponEffect
{
var newEffect = Create<T>( player ) as WeaponEffect;
newEffect.Weapon = weapon;
return (T)newEffect;
}
/// <summary>
/// We'll tick these effects, if returning true we'll kill the effect.
/// </summary>
/// <returns></returns>
public virtual bool TickEffect()
{
return false;
}
protected override void OnUpdate()
{
if ( Player is null ) Player = Components.Get<Opium.PlayerController>( FindMode.EverythingInSelfAndAncestors );
if ( TickEffect() )
{
Enabled = false;
}
}
}