Пример #1
0
        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;
 }