Example #1
0
    static public float GetCornerDistanceExt(this Cover cover, bool rightSide, float testedCollisionDistance)
    {
        float testedCornerDistanceLeftRight = 1.2f;
        float testedCornerDistanceForward   = 1.0f;       // TODO : we can compute this calue using distance to the wall

        Vector3 fromPos, forward, rightPos, leftPos, right;

        cover.GetMetricsExt(out fromPos, out right, out forward, out rightPos, out leftPos);

        // new approach
        Vector3 fromPosRFrom = rightPos + right * testedCornerDistanceLeftRight;
        Vector3 fromPosRTo   = fromPosRFrom + forward * testedCornerDistanceForward;

        Vector3 fromPosLFrom = leftPos - right * testedCornerDistanceLeftRight;
        Vector3 fromPosLTo   = fromPosLFrom + forward * testedCornerDistanceForward;

        MinMaxPair tmp = new MinMaxPair();

        tmp.Reset();

        if (rightSide)
        {
            CoverUtils.LineDistanceCast(fromPosRFrom, fromPosRTo, -right, testedCollisionDistance, ref tmp, testedCornerDistanceLeftRight);
        }
        else         // left
        {
            CoverUtils.LineDistanceCast(fromPosLFrom, fromPosLTo, right, testedCollisionDistance, ref tmp, testedCornerDistanceLeftRight);
        }

        return(tmp.m_MaxValue);
    }
Example #2
0
    static public MinMaxPair GetWallDistanceExt(this Cover cover, float testedWallDistance)
    {
        float   testedDistance = testedWallDistance + 0.05f;
        Vector3 fromPos, forward, rightPos, leftPos, right;

        cover.GetMetricsExt(out fromPos, out right, out forward, out rightPos, out leftPos);

        MinMaxPair tmp = new MinMaxPair();

        tmp.Reset();

        CoverUtils.LineDistanceCast(rightPos, leftPos, forward, testedDistance, ref tmp);

        return(tmp);
    }