Example #1
0
    void Update()
    {
        m_bSeesPlayer = false;
        Vector3 vDirToPlayer = m_Player.GetPlayerHeadPos() - GetHeadPos();

        //Debug.DrawRay(GetHeadPos(), vDirToPlayer);
        if (Vector3.Distance(GetHeadPos(), m_Player.GetPlayerHeadPos()) < m_fSightRange)
        {
            if (Vector3.Dot(GetHeadTransform().transform.forward, vDirToPlayer.normalized) >= m_fCurrentSightCone)
            {
                if (RayToPlayer() == true)
                {
                    m_bSeesPlayer = true;
                    m_AI.SetLoseSightTimer(GetTimeUntilLoseSight());
                    m_AI.SetPOI(m_Player.transform.position);
                }
            }
        }

        if (GetSeesPlayer() == true)
        {
            if (m_fSightDuration < m_fDetectAfterSeconds)
            {
                m_fSightDuration += Time.deltaTime;
                if (m_fSightDuration >= m_fDetectAfterSeconds)
                {
                    m_AI.SetCombat(true);
                    //CAIManager.AddToCombatList(m_AI);
                }
            }
        }
        else //m_bSeesPlayer == false
        {
            if (m_fSightDuration > 0.0f && m_fSightDuration < m_fDetectAfterSeconds)
            {
                m_fSightDuration -= Time.deltaTime;
                if (m_fSightDuration <= 0.0f)
                {
                    m_fSightDuration = 0.0f;
                }
                m_AI.SetPOI(m_Player.transform.position);
            }
            if (m_AI.GetCombat() == true)
            {
                if (m_AI.LoseCombatSlowly() == true)   // returns true if Combat was turned false
                {
                    m_fSightDuration = 0.0f;
                }
            }
        }
    }