RadiationParticleEffect.cs

A component that controls a particle effect representing radiation. It exposes properties for the ParticleEffect, a sprite renderer and a sphere emitter, and RPC methods to toggle visibility, set radius, set lifetime and emission rate, and change tint for a healing variant.

Networking
using System;
using Sandbox;

public class RadiationParticleEffect : Component
{
	[Property] public ParticleEffect ParticleEffect { get; set; }
	[Property] public ParticleSpriteRenderer ParticleRenderer { get; set; }
	[Property] public ParticleSphereEmitter SphereEmitter { get; set; }

	protected override void OnStart()
	{
		base.OnStart();

	}

	[Rpc.Broadcast]
	public void SetVisible( bool visible )
	{
		ParticleRenderer.Enabled = visible;
	}

	[Rpc.Broadcast]
	public void SetRadius( float radius )
	{
		ParticleRenderer.Scale = radius;
	}

	[Rpc.Broadcast]
	public void SetTiming( float lifetime, float rate )
	{
		ParticleEffect.Lifetime = lifetime;
		SphereEmitter.Rate = rate;
	}

	[Rpc.Broadcast]
	public void ShowHealing()
	{
		ParticleEffect.Tint = new Color( 0f, 0.07f, 0f );
	}
}