BVB Source Codes

CRYENGINE Show BreakableGlassRenderNode.h Source code

Return Download CRYENGINE: download BreakableGlassRenderNode.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef _BREAKABLE_GLASS_RENDERNODE_
  4. #define _BREAKABLE_GLASS_RENDERNODE_
  5.  
  6. #pragma once
  7.  
  8. // Includes
  9. #include <CryRenderer/RenderElements/CREBreakableGlass.h>
  10. #include <CryRenderer/RenderElements/CREBreakableGlassHelpers.h>
  11.  
  12. // Forward declares
  13. class CREBreakableGlass;
  14. struct IParticleEffect;
  15.  
  16. //==================================================================================================
  17. // Name: CBreakableGlassRenderNode
  18. // Desc: Breakable glass sim render node
  19. // Author: Chris Bunner
  20. //==================================================================================================
  21. class CBreakableGlassRenderNode : public IBreakableGlassRenderNode, Cry3DEngineBase
  22. {
  23. public:
  24.         CBreakableGlassRenderNode();
  25.         virtual ~CBreakableGlassRenderNode();
  26.  
  27.         // IBreakableGlassRenderNode interface
  28.         virtual bool   InitialiseNode(const SBreakableGlassInitParams& params, const Matrix34& matrix);
  29.         virtual void   ReleaseNode(bool bImmediate);
  30.  
  31.         virtual void   SetId(const uint16 id);
  32.         virtual uint16 GetId();
  33.  
  34.         virtual void   Update(SBreakableGlassUpdateParams& params);
  35.         virtual bool   HasGlassShattered();
  36.         virtual bool   HasActiveFragments();
  37.         virtual void   ApplyImpactToGlass(const EventPhysCollision* pPhysEvent);
  38.         virtual void   ApplyExplosionToGlass(const EventPhysCollision* pPhysEvent);
  39.         virtual void   DestroyPhysFragment(SGlassPhysFragment* pPhysFrag);
  40.  
  41.         virtual void   SetCVars(const SBreakableGlassCVars* pCVars);
  42.  
  43.         // IRenderNode interface
  44.         virtual const char*      GetName() const;
  45.         virtual EERType          GetRenderNodeType();
  46.         virtual const char*      GetEntityClassName() const;
  47.         virtual void             GetMemoryUsage(ICrySizer* pSizer) const;
  48.         virtual void             SetMaterial(IMaterial* pMaterial);
  49.         virtual IMaterial*       GetMaterial(Vec3* pHitPos = NULL) const;
  50.         virtual void             SetMatrix(const Matrix34& matrix);
  51.         virtual Vec3             GetPos(bool worldOnly = true) const;
  52.         virtual const AABB       GetBBox() const;
  53.         virtual void             SetBBox(const AABB& worldSpaceBoundingBox);
  54.         virtual void             FillBBox(AABB& aabb);
  55.         virtual void             OffsetPosition(const Vec3& delta);
  56.         virtual float            GetMaxViewDist();
  57.         virtual IPhysicalEntity* GetPhysics() const;
  58.         virtual void             SetPhysics(IPhysicalEntity* pPhysics);
  59.         virtual void             Render(const SRendParams& renderParams, const SRenderingPassInfo& passInfo);
  60.         virtual IMaterial*       GetMaterialOverride();
  61.  
  62. private:
  63.         void PhysicalizeGlass();
  64.         void DephysicalizeGlass();
  65.  
  66.         void PhysicalizeGlassFragment(SGlassPhysFragment& physFrag, const Vec3& centerOffset);
  67.         void DephysicalizeGlassFragment(SGlassPhysFragment& physFrag);
  68.  
  69.         void CalculateImpactPoint(const Vec3& pt, Vec2& impactPt);
  70.         void UpdateGlassState(const EventPhysCollision* pPhysEvent);
  71.         void SetParticleEffectColours(IParticleEffect* pEffect, const Vec4& rgba);
  72.         void PlayBreakageEffect(const EventPhysCollision* pPhysEvent);
  73.  
  74.         TGlassPhysFragmentArray            m_physFrags;
  75.         TGlassPhysFragmentIdArray          m_deadPhysFrags;
  76.  
  77.         SBreakableGlassInitParams          m_glassParams;
  78.         SBreakableGlassState               m_lastGlassState;
  79.  
  80.         AABB                               m_planeBBox; // Plane's world space bounding box
  81.         AABB                               m_fragBBox;  // Phys fragments' world space bounding box
  82.         Matrix34                           m_matrix;
  83.         float                              m_maxViewDist;
  84.         CREBreakableGlass*                 m_pBreakableGlassRE;
  85.         IPhysicalEntity*                   m_pPhysEnt;
  86.  
  87.         static const SBreakableGlassCVars* s_pCVars;
  88.  
  89.         Vec4                               m_glassTintColour;
  90.         uint16                             m_id;
  91.         uint8                              m_state;
  92.         uint8                              m_nextPhysFrag;
  93. };//------------------------------------------------------------------------------------------------
  94.  
  95. #endif // _BREAKABLE_GLASS_RENDERNODE_
  96.  
downloadBreakableGlassRenderNode.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