Utility/Effects.cs
namespace Sandbox;
public class Effects : GameObjectSystem<Effects>
{
public Effects( Scene scene ) : base( scene )
{
}
public static void SpawnExplosion( Vector3 worldPosition )
{
var prefab = GameObject.GetPrefab( "/prefabs/effects/explosion.prefab" );
prefab?.Clone( worldPosition );
}
public static void SpawnExplosionSmall( Vector3 worldPosition )
{
var prefab = GameObject.GetPrefab( "/prefabs/effects/explosion_sm.prefab" );
prefab?.Clone( worldPosition );
}
public static void SpawnScorch( Vector3 worldPosition, Vector3 direction, GameObject source )
{
var tr = Game.ActiveScene.Trace.Ray( new Ray( worldPosition, -direction ), 64 )
.IgnoreGameObjectHierarchy( source )
.WithoutTags( "player" )
.UseHitPosition( true )
.Run();
if ( !tr.Hit ) return;
var prefab = GameObject.GetPrefab( "/prefabs/effects/scorchdecal.prefab" );
var instance = prefab.Clone( tr.HitPosition + tr.Normal * 1, Rotation.LookAt( -tr.Normal, Vector3.Up ) );
instance.SetParent( tr.GameObject, true );
}
}