Exemplo n.º 1
0
    public bool VisibilityFrom(Coord fromPos, out Dictionary <Coord, float> intensities)
    {
        bool ret = false;

        intensities = new Dictionary <Coord, float> ();

        Coord c = PositionActuelle;

        for (int nbIterationsDansLePasse = 0; positions.ValeurPassee(nbIterationsDansLePasse, out c); nbIterationsDansLePasse++)
        {
            if (GameManager.Instance.tiles[c.x, c.y].lit && c.DistanceTo(fromPos) == nbIterationsDansLePasse)
            {
                Vector3    depart  = fromPos.ToVector3() + Vector3.up;
                Vector3    arrivee = c.ToVector3() + Vector3.up;
                Ray        ray     = new Ray(depart, arrivee - depart);       // + Vector3.up est la pour raycast 1m au dessus du sol.
                RaycastHit hit;

                if (!Physics.Raycast(ray, out hit, Vector3.Distance(depart, arrivee), LayerMask.GetMask("Mur"), QueryTriggerInteraction.Collide))
                {
                    intensities.Add(c, GameManager.Instance.tiles[c.x, c.y].lightingHistory.ValeurActuelle);
                    ret = true;
                }
            }
        }


        return(ret);
    }