BVB Source Codes

CRYENGINE Show GlobalPerceptionScaleHandler.cpp Source code

Return Download CRYENGINE: download GlobalPerceptionScaleHandler.cpp Source code - Download CRYENGINE Source code - Type:.cpp
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #include "StdAfx.h"
  4. #include "GlobalPerceptionScaleHandler.h"
  5. #ifdef CRYAISYSTEM_DEBUG
  6.         #include "DebugDrawContext.h"
  7. #endif
  8.  
  9. CGlobalPerceptionScaleHandler::CGlobalPerceptionScaleHandler()
  10.         : m_visual(1.0f)
  11.         , m_audio(1.0f)
  12.         , m_filterType(eAIFT_None)
  13.         , m_factionID(0)
  14.         , m_playerFactionID(0)
  15.         , m_listenersList(1)
  16. {
  17. }
  18.  
  19. void CGlobalPerceptionScaleHandler::SetGlobalPerception(const float visual, const float audio, const EAIFilterType filterType,
  20.                                                         uint8 factionID)
  21. {
  22.         m_visual = visual;
  23.         m_audio = audio;
  24.         m_filterType = filterType;
  25.         m_factionID = factionID;
  26.         NotifyEvent(IAIGlobalPerceptionListener::eGPS_Set);
  27. }
  28.  
  29. void CGlobalPerceptionScaleHandler::ResetGlobalPerception()
  30. {
  31.         if (m_filterType == eAIFT_None)
  32.                 return;
  33.  
  34.         m_visual = 1.0f;
  35.         m_audio = 1.0f;
  36.         m_filterType = eAIFT_None;
  37.         NotifyEvent(IAIGlobalPerceptionListener::eGPS_Disabled);
  38. }
  39.  
  40. void CGlobalPerceptionScaleHandler::Reload()
  41. {
  42.         const IFactionMap& pFactionMap = gEnv->pAISystem->GetFactionMap();
  43.         m_playerFactionID = pFactionMap.GetFactionID("Players");
  44. }
  45.  
  46. float CGlobalPerceptionScaleHandler::GetGlobalAudioScale(const IAIObject* pAIObject) const
  47. {
  48.         return IsObjectAffected(pAIObject) ? m_audio : 1.0f;
  49. }
  50.  
  51. float CGlobalPerceptionScaleHandler::GetGlobalVisualScale(const IAIObject* pAIObject) const
  52. {
  53.         return IsObjectAffected(pAIObject) ? m_visual : 1.0f;
  54. }
  55.  
  56. bool CGlobalPerceptionScaleHandler::IsObjectAffected(const IAIObject* pAIObject) const
  57. {
  58.         if (!pAIObject)
  59.                 return false;
  60.  
  61.         const IFactionMap& pFactionMap = gEnv->pAISystem->GetFactionMap();
  62.         bool isAffected = false;
  63.  
  64.         const uint8 objectFactionID = pAIObject->GetFactionID();
  65.         switch (m_filterType)
  66.         {
  67.         case eAIFT_All:
  68.                 isAffected = true;
  69.                 break;
  70.         case eAIFT_Enemies:
  71.                 if (pFactionMap.GetReaction(objectFactionID, m_playerFactionID) == IFactionMap::Hostile)
  72.                 {
  73.                         isAffected = true;
  74.                 }
  75.                 break;
  76.         case eAIFT_Friends:
  77.                 if (pFactionMap.GetReaction(objectFactionID, m_playerFactionID) == IFactionMap::Friendly)
  78.                 {
  79.                         isAffected = true;
  80.                 }
  81.                 break;
  82.         case eAIFT_Faction:
  83.                 if (objectFactionID == m_factionID)
  84.                 {
  85.                         isAffected = true;
  86.                 }
  87.                 break;
  88.         case eAIFT_None:
  89.                 break;
  90.         default:
  91.                 assert(0);
  92.                 break;
  93.         }
  94.  
  95.         return isAffected;
  96. }
  97.  
  98. void CGlobalPerceptionScaleHandler::RegisterListener(IAIGlobalPerceptionListener* plistener)
  99. {
  100.         m_listenersList.Add(plistener);
  101. }
  102.  
  103. void CGlobalPerceptionScaleHandler::UnregisterListener(IAIGlobalPerceptionListener* plistener)
  104. {
  105.         m_listenersList.Remove(plistener);
  106. }
  107.  
  108. void CGlobalPerceptionScaleHandler::NotifyEvent(const IAIGlobalPerceptionListener::EGlobalPerceptionScaleEvent event)
  109. {
  110.         for (Listeners::Notifier notifier(m_listenersList); notifier.IsValid(); notifier.Next())
  111.         {
  112.                 notifier->OnPerceptionScalingEvent(event);
  113.         }
  114. }
  115.  
  116. void CGlobalPerceptionScaleHandler::Serialize(TSerialize ser)
  117. {
  118.         ser.BeginGroup("GlobalPerceptionScaleHandler");
  119.         ser.Value("Visual", m_visual);
  120.         ser.Value("Audio", m_audio);
  121.         ser.EnumValue("FilterType", m_filterType, eAIFT_All, eAIFT_None);
  122.         ser.Value("FactionID", m_factionID);
  123.         ser.EndGroup();
  124. }
  125.  
  126. void CGlobalPerceptionScaleHandler::DebugDraw() const
  127. {
  128. #ifdef CRYAISYSTEM_DEBUG
  129.         const static char* filter[eAIFT_None + 1] =
  130.         {
  131.                 "All",
  132.                 "Enemies",
  133.                 "Friends",
  134.                 "Faction",
  135.                 "None",
  136.         };
  137.         CDebugDrawContext dc;
  138.         dc->TextToScreen(0, 60, "Global Perception Scale (Filtered by:%s). VISUAL: %f -- AUDIO %f",
  139.                          filter[m_filterType], m_visual, m_audio);
  140. #endif
  141. }
  142.  
downloadGlobalPerceptionScaleHandler.cpp Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top