public virtual WorldRaycastResult Raycast(Ray ray, bool ignoreTerrainNonColliders, float maxDist = float.MaxValue, params Player[] ignorePlayers) { TerrainRaycastResult tResult = RaycastTerrain(ray, ignoreTerrainNonColliders, maxDist); PlayerRaycastResult pResult = RaycastPlayers(ray, maxDist, ignorePlayers); if (tResult.Intersects && (!pResult.Intersects || (pResult.IntersectionDistance.Value > tResult.IntersectionDistance.Value))) { return(new WorldRaycastResult(tResult)); } else if (pResult.Intersects && pResult.Player.Health > 0) { return(new WorldRaycastResult(pResult)); } else { return(new WorldRaycastResult(ray)); } }
public WorldRaycastResult(PlayerRaycastResult result) : base(result) { PlayerResult = result; }