BVB Source Codes

CRYENGINE Show ParticleComponentRuntime.h Source code

Return Download CRYENGINE: download ParticleComponentRuntime.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. // -------------------------------------------------------------------------
  4. //  Created:     02/04/2015 by Filipe amim
  5. //  Description:
  6. // -------------------------------------------------------------------------
  7. //
  8. ////////////////////////////////////////////////////////////////////////////
  9.  
  10. #ifndef PARTICLECOMPONENTRUNTIME_H
  11. #define PARTICLECOMPONENTRUNTIME_H
  12.  
  13. #pragma once
  14.  
  15. #include "ParticleCommon.h"
  16. #include "ParticleComponent.h"
  17.  
  18. namespace pfx2
  19. {
  20.  
  21. class CParticleComponentRuntime : public ICommonParticleComponentRuntime, public IParticleVertexCreator
  22. {
  23. public:
  24.         typedef std::vector<SInstance, stl::aligned_alloc<SInstance, CRY_PFX2_PARTICLES_ALIGNMENT>> TInstances;
  25.  
  26. public:
  27.         CParticleComponentRuntime(CParticleEffect* pEffect, CParticleEmitter* pEmitter, CParticleComponent* pComponent);
  28.  
  29.         // ICommonParticleComponentRuntime
  30.         // PFX2_TODO : Figure out a way to do static dispatches
  31.         virtual const AABB&                GetBounds() const override { return m_bounds; }
  32.         virtual CParticleComponentRuntime* GetCpuRuntime() override   { return this; }
  33.         virtual void                       ReparentParticles(const uint* swapIds, const uint numSwapIds) override;
  34.         virtual bool                       IsValidRuntimeForInitializationParameters(const SRuntimeInitializationParameters& parameters) override;
  35.         virtual void                       MainPreUpdate() override;
  36.         virtual void                       AccumCounts(SParticleCounts& counts) override;
  37.         // ~ICommonParticleComponentRuntime
  38.  
  39.         void                      Initialize();
  40.         void                      Reset();
  41.         CParticleEffect*          GetEffect() const          { return m_pEffect; }
  42.         CParticleEmitter*         GetEmitter() const         { return m_pEmitter; }
  43.         CParticleComponent*       GetComponent() const       { return m_pComponent; }
  44.         const SComponentParams&   GetComponentParams() const { return m_pComponent->GetComponentParams(); }
  45.  
  46.         CParticleContainer&       GetParentContainer();
  47.         const CParticleContainer& GetParentContainer() const;
  48.         CParticleContainer&       GetContainer()            { return m_container; }
  49.         const CParticleContainer& GetContainer() const      { return m_container; }
  50.  
  51.         virtual bool              IsActive() const override { return m_active; }
  52.         void                      SetActive(bool active);
  53.         void                      UpdateAll(const SUpdateContext& context);
  54.         void                      AddRemoveNewBornsParticles(const SUpdateContext& context);
  55.         void                      UpdateParticles(const SUpdateContext& context);
  56.         void                      CalculateBounds();
  57.  
  58.         virtual void              ComputeVertices(const SCameraInfo& camInfo, CREParticle* pRE, uint64 uRenderFlags, float fMaxPixels) override;
  59.         virtual void              AddSubInstances(SInstance* pInstances, size_t count) override;
  60.         void                      RemoveAllSubInstances();
  61.         size_t                    GetNumInstances() const       { return m_subInstances.size(); }
  62.         const SInstance& GetInstance(size_t idx) const { return m_subInstances[idx]; }
  63.         IPidStream       GetInstanceParentIds() const  { return IPidStream(&(m_subInstances.data())->m_parentId, gInvalidId); }
  64.         template<typename T>
  65.         T*               GetSubInstanceData(size_t instanceId, TInstanceDataOffset offset);
  66.         void             SpawnParticles(CParticleContainer::SSpawnEntry const& entry);
  67.         void             GetSpatialExtents(const SUpdateContext& context, Array<const float, uint> scales, Array<float, uint> extents);
  68.  
  69. private:
  70.         void AddRemoveParticles(const SUpdateContext& context);
  71.         void UpdateNewBorns(const SUpdateContext& context);
  72.         void UpdateFeatures(const SUpdateContext& context);
  73.  
  74.         void AgeUpdate(const SUpdateContext& context);
  75.         void UpdateLocalSpace(SUpdateRange range);
  76.  
  77.         void AlignInstances();
  78.  
  79.         void DebugStabilityCheck();
  80.  
  81.         CParticleContainer                           m_container;
  82.         TInstances                                   m_subInstances;
  83.         std::vector<byte>                            m_subInstanceData;
  84.         std::vector<CParticleContainer::SSpawnEntry> m_spawnEntries;
  85.         CParticleEffect*                             m_pEffect;
  86.         CParticleEmitter*                            m_pEmitter;
  87.         CParticleComponent*                          m_pComponent;
  88.         AABB m_bounds;
  89.         bool m_active;
  90. };
  91.  
  92. }
  93.  
  94. #include "ParticleComponentImpl.h"
  95.  
  96. #endif // PARTICLECOMPONENTRUNTIME_H
  97.  
downloadParticleComponentRuntime.h 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