BVB Source Codes

CRYENGINE Show ParticleAttributes.h Source code

Return Download CRYENGINE: download ParticleAttributes.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef PARTICLEATTRIBUTES_H
  4. #define PARTICLEATTRIBUTES_H
  5.  
  6. #pragma once
  7.  
  8. #include <CrySerialization/Color.h>
  9. #include <CrySerialization/Enum.h>
  10.  
  11. namespace pfx2
  12. {
  13.  
  14. SERIALIZATION_ENUM_DECLARE(EAttributeType, ,
  15.                            Boolean = IParticleAttributes::ET_Boolean,
  16.                            Integer = IParticleAttributes::ET_Integer,
  17.                            Float = IParticleAttributes::ET_Float,
  18.                            Color = IParticleAttributes::ET_Color
  19.                            )
  20.  
  21. SERIALIZATION_ENUM_DECLARE(EAttributeScope, ,
  22.                            PerEmitter,
  23.                            PerEffect
  24.                            )
  25.  
  26. struct SAttribute
  27. {
  28.         SAttribute();
  29.  
  30.         void Serialize(Serialization::IArchive& ar);
  31.  
  32.         string          m_name;
  33.         EAttributeType  m_type;
  34.         EAttributeScope m_scope;
  35.         ColorB          m_asColor;
  36.         float           m_minInt;
  37.         float           m_maxInt;
  38.         float           m_asFloat;
  39.         float           m_minFloat;
  40.         float           m_maxFloat;
  41.         int             m_asInt;
  42.         bool            m_asBoolean;
  43.         bool            m_useMin;
  44.         bool            m_useMax;
  45. };
  46.  
  47. class CAttributeTable
  48. {
  49. public:
  50.         size_t            GetNumAttributes() const       { return m_attributes.size(); }
  51.         const SAttribute& GetAttribute(size_t idx) const { return m_attributes[idx]; }
  52.         void              Serialize(Serialization::IArchive& ar);
  53.  
  54. private:
  55.         std::vector<SAttribute> m_attributes;
  56. };
  57.  
  58. class CAttributeInstance : public IParticleAttributes
  59. {
  60. private:
  61.         struct SData
  62.         {
  63.                 union
  64.                 {
  65.                         bool  m_asBool;
  66.                         int   m_asInt;
  67.                         float m_asFloat;
  68.                         UCol  m_asColor;
  69.                 };
  70.         };
  71.  
  72. public:
  73.         CAttributeInstance();
  74.  
  75.         // IParticleAttributes
  76.         virtual void         UpdateScriptTable(const SmartScriptTable& scriptTable);
  77.         virtual TAttributeId FindAttributeIdByName(cstr name) const;
  78.         virtual uint         GetNumAttributes() const;
  79.         virtual cstr         GetAttributeName(uint idx) const;
  80.         virtual EType        GetAttributeType(uint idx) const;
  81.         virtual bool         GetAsBoolean(TAttributeId id, bool defaultValue) const;
  82.         virtual int          GetAsInteger(TAttributeId id, int defaultValue) const;
  83.         virtual float        GetAsFloat(TAttributeId id, float defaultValue) const;
  84.         virtual ColorB       GetAsColorB(TAttributeId id, ColorB defaultValue) const;
  85.         virtual ColorF       GetAsColorF(TAttributeId id, ColorF defaultValue) const;
  86.         virtual void         SetAsBoolean(TAttributeId id, bool value);
  87.         virtual int          SetAsInteger(TAttributeId id, int value);
  88.         virtual float        SetAsFloat(TAttributeId id, float value);
  89.         virtual void         SetAsColor(TAttributeId id, ColorB value);
  90.         virtual void         SetAsColor(TAttributeId id, ColorF value);
  91.         // ~IParticleAttributes
  92.  
  93.         void              Reset();
  94.         void              Reset(const CAttributeTable* pTable, EAttributeScope scope);
  95.         const SAttribute& GetAttribute(TAttributeId attributeId) const;
  96.  
  97. private:
  98.         std::vector<uint>      m_attributeIndices;
  99.         std::vector<SData>     m_data;
  100.         const CAttributeTable* m_pAttributeTable;
  101. };
  102.  
  103. }
  104.  
  105. #endif
  106.  
downloadParticleAttributes.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