Update ray trace masks and beam cleanup

#### General
- **Updated markdown** files.
- Switched from `RayTrace.WorldOnlyMask` to CounterStrikeSharp's built-in `Masks.SolidBrushOnly` mask.
- Added tracking and automatic removal of beams created by traces with `drawBeam` enabled.
This commit is contained in:
Juzlus 2026-09-25 03:37:34 +02:00
parent f88fed45b3
commit 5f21afd34d
9 changed files with 50 additions and 6 deletions

View file

@ -795,7 +795,7 @@ namespace src.player
Vector eyePos = new(pawn.AbsOrigin.X, pawn.AbsOrigin.Y, pawn.AbsOrigin.Z + pawn.ViewOffset.Z);
Vector endPos = eyePos + SkillUtils.GetForwardVector(pawn.EyeAngles) * 80;
ulong mask = RayTrace.WorldOnlyMask | (ulong)(Contents.Player | Contents.Npc);
ulong mask = (ulong)Masks.SolidBrushOnly | (ulong)(Contents.Player | Contents.Npc);
ulong contents = 0;
var result = RayTrace.TraceShape(player, eyePos, endPos, mask, contents);

View file

@ -21,7 +21,7 @@ namespace src.player.skills
private static readonly List<Flight> flights = [];
private static readonly object flightLock = new();
private static readonly Color tracerColor = Color.FromArgb(170, 255, 226, 140);
private static readonly ulong worldOnlyMask = RayTrace.WorldOnlyMask;
private static readonly ulong worldOnlyMask = (ulong)Masks.SolidBrushOnly;
public static void LoadSkill()
{

View file

@ -162,7 +162,7 @@ namespace src.player.skills
Vector rightDir = SkillUtils.GetForwardVector(new QAngle(0, yaw - 90, 0));
Vector leftDir = SkillUtils.GetForwardVector(new QAngle(0, yaw + 90, 0));
ulong wallMask = RayTrace.WorldOnlyMask;
ulong wallMask = (ulong)Masks.SolidBrushOnly;
var rightHit = RayTrace.TraceShape(player, origin, origin + rightDir * maxDistance, wallMask, 0);
var leftHit = RayTrace.TraceShape(player, origin, origin + leftDir * maxDistance, wallMask, 0);

View file

@ -467,7 +467,7 @@ namespace src.utils
DestroyAllTracked();
}
private static void ScheduleAutoDestroy(uint entityIndex, float? seconds)
public static void ScheduleAutoDestroy(uint entityIndex, float? seconds)
{
if (seconds is not > 0) return;
Instance?.AddTimer(seconds.Value, () => DestroyEntity(entityIndex), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);

View file

@ -10,10 +10,9 @@ namespace src.utils
{
public static class RayTrace
{
public const ulong WorldOnlyMask = (ulong)(Contents.Solid | Contents.Window | Contents.PassBullets);
private static bool traceFailureLogged;
public static bool IsAvailable => true;
private static bool TryTraceHull(Vector startPos, Vector endPos, Vector mins, Vector maxs, CBaseEntity? ignore, ulong mask, ulong contents, out TraceResult result)
@ -208,6 +207,9 @@ namespace src.utils
beam.EndPos.Z = end.Z;
beam.DispatchSpawn();
EntityManager.RegisterEntity(beam.Index, int.MaxValue, "beam");
EntityManager.ScheduleAutoDestroy(beam.Index, 10);
}
public static float Distance(this CustomTraceResult result)