BVB Source Codes

CRYENGINE Show VolumeObjectRenderNode.h Source code

Return Download CRYENGINE: download VolumeObjectRenderNode.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef _VOLUMEOBJECT_RENDERNODE_
  4. #define _VOLUMEOBJECT_RENDERNODE_
  5.  
  6. #pragma once
  7.  
  8. class CREVolumeObject;
  9. class CVolumeDataItem;
  10. class CVolumeShadowCreator;
  11.  
  12. class CVolumeObjectRenderNode : public IVolumeObjectRenderNode, public Cry3DEngineBase
  13. {
  14. public:
  15.         static void MoveVolumeObjects();
  16.  
  17. public:
  18.         CVolumeObjectRenderNode();
  19.  
  20.         // implements IVolumeObjectRenderNode
  21.         virtual void LoadVolumeData(const char* filePath);
  22.         virtual void SetProperties(const SVolumeObjectProperties& properties);
  23.         virtual void SetMovementProperties(const SVolumeObjectMovementProperties& properties);
  24.  
  25.         // implements IRenderNode
  26.         virtual void             SetMatrix(const Matrix34& mat);
  27.  
  28.         virtual EERType          GetRenderNodeType();
  29.         virtual const char*      GetEntityClassName() const;
  30.         virtual const char*      GetName() const;
  31.         virtual Vec3             GetPos(bool bWorldOnly = true) const;
  32.         virtual void             Render(const SRendParams& rParam, const SRenderingPassInfo& passInfo);
  33.         virtual IPhysicalEntity* GetPhysics() const;
  34.         virtual void             SetPhysics(IPhysicalEntity*);
  35.         virtual void             SetMaterial(IMaterial* pMat);
  36.         virtual IMaterial*       GetMaterial(Vec3* pHitPos = 0) const;
  37.         virtual IMaterial*       GetMaterialOverride() { return m_pMaterial; }
  38.         virtual float            GetMaxViewDist();
  39.         virtual void             Precache();
  40.         virtual void             GetMemoryUsage(ICrySizer* pSizer) const;
  41.         virtual const AABB       GetBBox() const             { return m_WSBBox; }
  42.         virtual void             SetBBox(const AABB& WSBBox) { m_WSBBox = WSBBox; }
  43.         virtual void             FillBBox(AABB& aabb);
  44.         virtual void             OffsetPosition(const Vec3& delta);
  45.  
  46. private:
  47.         typedef std::set<CVolumeObjectRenderNode*> VolumeObjectSet;
  48.  
  49. private:
  50.         static void RegisterVolumeObject(CVolumeObjectRenderNode* p);
  51.         static void UnregisterVolumeObject(CVolumeObjectRenderNode* p);
  52.  
  53. private:
  54.         ~CVolumeObjectRenderNode();
  55.         bool  IsViewerInsideVolume(const SRenderingPassInfo& passInfo) const;
  56.         bool  NearPlaneIntersectsVolume(const SRenderingPassInfo& passInfo) const;
  57.         void  InvalidateLastCachedLightDir();
  58.         void  UpdateShadows();
  59.         Plane GetVolumeTraceStartPlane(bool viewerInsideVolume, const SRenderingPassInfo& passInfo) const;
  60.         float GetDistanceToCamera(const SRenderingPassInfo& passInfo) const;
  61.         void  SetMatrixInternal(const Matrix34& mat, bool updateOrigin);
  62.         void  Move();
  63.  
  64. private:
  65.         static CVolumeShadowCreator* ms_pVolShadowCreator;
  66.         static VolumeObjectSet       ms_volumeObjects;
  67.  
  68.         static ICVar*                ms_CV_volobj_stats;
  69.         static int                   e_volobj_stats;
  70.  
  71. private:
  72.         AABB                             m_WSBBox;
  73.  
  74.         Vec3                             m_pos;
  75.         Vec3                             m_origin;
  76.  
  77.         Matrix34                         m_matOrig;
  78.         Matrix34                         m_mat;
  79.         Matrix34                         m_matInv;
  80.  
  81.         Vec3                             m_lastCachedLightDir;
  82.  
  83.         AABB                             m_tightBoundsOS;
  84.  
  85.         SVolumeObjectMovementProperties  m_moveProps;
  86.  
  87.         float                            m_alpha;
  88.         float                            m_scale;
  89.  
  90.         float                            m_shadowStrength;
  91.  
  92.         _smart_ptr<IMaterial>            m_pMaterial;
  93.  
  94.         CREVolumeObject*                 m_pRE[RT_COMMAND_BUF_COUNT];
  95.  
  96.         CVolumeDataItem*                 m_pVolDataItem;
  97.         CREVolumeObject::IVolumeTexture* m_pVolShadTex;
  98. };
  99.  
  100. #endif // #ifndef _VOLUMEOBJECT_RENDERNODE_
  101.  
downloadVolumeObjectRenderNode.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