BVB Source Codes

CRYENGINE Show MFXContainer.cpp Source code

Return Download CRYENGINE: download MFXContainer.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 "MFXContainer.h"
  5.  
  6. #include "MFXRandomEffect.h"
  7. #include "MFXParticleEffect.h"
  8. #include "MFXAudioEffect.h"
  9. #include "MFXDecalEffect.h"
  10. #include "MFXFlowGraphEffect.h"
  11. #include "MFXForceFeedbackFX.h"
  12.  
  13. #include "GameXmlParamReader.h"
  14.  
  15. namespace MaterialEffectsUtils
  16. {
  17. CMFXEffectBase* CreateEffectByName(const char* effectType)
  18. {
  19.         if (!stricmp("RandEffect", effectType))
  20.         {
  21.                 return new CMFXRandomEffect();
  22.         }
  23.         else if (!stricmp("Particle", effectType))
  24.         {
  25.                 return new CMFXParticleEffect();
  26.         }
  27.         else if (!stricmp("Audio", effectType))
  28.         {
  29.                 return new CMFXAudioEffect();
  30.         }
  31.         else if (!stricmp("Decal", effectType))
  32.         {
  33.                 return new CMFXDecalEffect();
  34.         }
  35.         else if (!stricmp("FlowGraph", effectType))
  36.         {
  37.                 return new CMFXFlowGraphEffect();
  38.         }
  39.         else if (!stricmp("ForceFeedback", effectType))
  40.         {
  41.                 return new CMFXForceFeedbackEffect();
  42.         }
  43.  
  44.         return NULL;
  45. }
  46. }
  47.  
  48. CMFXContainer::~CMFXContainer()
  49. {
  50. }
  51.  
  52. void CMFXContainer::BuildFromXML(const XmlNodeRef& paramsNode)
  53. {
  54.         CRY_ASSERT(paramsNode != NULL);
  55.  
  56.         LoadParamsFromXml(paramsNode);
  57.  
  58.         BuildChildEffects(paramsNode);
  59. }
  60.  
  61. void CMFXContainer::Execute(const SMFXRunTimeEffectParams& params)
  62. {
  63.         TMFXEffects::iterator it = m_effects.begin();
  64.         TMFXEffects::iterator itEnd = m_effects.end();
  65.  
  66.         while (it != itEnd)
  67.         {
  68.                 TMFXEffectBasePtr& pEffect = *it;
  69.                 if (pEffect->CanExecute(params))
  70.                 {
  71.                         pEffect->Execute(params);
  72.                 }
  73.  
  74.                 ++it;
  75.         }
  76. }
  77.  
  78. void CMFXContainer::SetCustomParameter(const char* customParameter, const SMFXCustomParamValue& customParameterValue)
  79. {
  80.         FUNCTION_PROFILER(gEnv->pSystem, PROFILE_ACTION);
  81.  
  82.         TMFXEffects::iterator it = m_effects.begin();
  83.         TMFXEffects::iterator itEnd = m_effects.end();
  84.         while (it != itEnd)
  85.         {
  86.                 TMFXEffectBasePtr& pEffect = *it;
  87.                 pEffect->SetCustomParameter(customParameter, customParameterValue);
  88.  
  89.                 ++it;
  90.         }
  91. }
  92.  
  93. void CMFXContainer::GetResources(SMFXResourceList& resourceList) const
  94. {
  95.         TMFXEffects::const_iterator it = m_effects.begin();
  96.         TMFXEffects::const_iterator itEnd = m_effects.end();
  97.         while (it != itEnd)
  98.         {
  99.                 TMFXEffectBasePtr pEffect = *it;
  100.                 pEffect->GetResources(resourceList);
  101.  
  102.                 ++it;
  103.         }
  104. }
  105.  
  106. void CMFXContainer::PreLoadAssets()
  107. {
  108.         TMFXEffects::const_iterator it = m_effects.begin();
  109.         TMFXEffects::const_iterator itEnd = m_effects.end();
  110.         while (it != itEnd)
  111.         {
  112.                 TMFXEffectBasePtr pEffect = *it;
  113.                 pEffect->PreLoadAssets();
  114.  
  115.                 ++it;
  116.         }
  117. }
  118.  
  119. void CMFXContainer::ReleasePreLoadAssets()
  120. {
  121.         TMFXEffects::const_iterator it = m_effects.begin();
  122.         TMFXEffects::const_iterator itEnd = m_effects.end();
  123.         while (it != itEnd)
  124.         {
  125.                 TMFXEffectBasePtr pEffect = *it;
  126.                 pEffect->ReleasePreLoadAssets();
  127.  
  128.                 ++it;
  129.         }
  130. }
  131.  
  132. void CMFXContainer::GetMemoryUsage(ICrySizer* pSizer) const
  133. {
  134.         pSizer->AddObject(m_params.name);
  135.         pSizer->AddObject(m_params.libraryName);
  136.         pSizer->AddObject(m_effects);
  137. }
  138.  
  139. void CMFXContainer::BuildChildEffects(const XmlNodeRef& paramsNode)
  140. {
  141.         const CGameXmlParamReader reader(paramsNode);
  142.         const int totalChildCount = reader.GetUnfilteredChildCount();
  143.         const int filteredChildCount = reader.GetFilteredChildCount();
  144.  
  145.         m_effects.reserve(filteredChildCount);
  146.  
  147.         for (int i = 0; i < totalChildCount; i++)
  148.         {
  149.                 XmlNodeRef currentEffectNode = reader.GetFilteredChildAt(i);
  150.                 if (currentEffectNode == NULL)
  151.                         continue;
  152.  
  153.                 const char* nodeName = currentEffectNode->getTag();
  154.                 if (nodeName == 0 || *nodeName == 0)
  155.                         continue;
  156.  
  157.                 TMFXEffectBasePtr pEffect = MaterialEffectsUtils::CreateEffectByName(nodeName);
  158.                 if (pEffect != NULL)
  159.                 {
  160.                         pEffect->LoadParamsFromXml(currentEffectNode);
  161.                         m_effects.push_back(pEffect);
  162.                 }
  163.         }
  164. }
  165.  
  166. void CMFXContainer::LoadParamsFromXml(const XmlNodeRef& paramsNode)
  167. {
  168.         m_params.name = paramsNode->getAttr("name");
  169.  
  170.         paramsNode->getAttr("delay", m_params.delay);
  171. }
  172.  
  173. //////////////////////////////////////////////////////////////////////////
  174.  
  175. void CMFXDummyContainer::BuildChildEffects(const XmlNodeRef& paramsNode)
  176. {
  177.  
  178. }
  179.  
downloadMFXContainer.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