BVB Source Codes

CRYENGINE Show LightEntity.h Source code

Return Download CRYENGINE: download LightEntity.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef LIGHT_ENTITY_H
  4. #define LIGHT_ENTITY_H
  5.  
  6. const float LIGHT_PROJECTOR_MAX_FOV = 175.f;
  7.  
  8. struct CLightEntity : public ILightSource, public Cry3DEngineBase
  9. {
  10.         static void StaticReset();
  11.  
  12. public:
  13.         virtual EERType                  GetRenderNodeType();
  14.         virtual const char*              GetEntityClassName(void) const { return "LightEntityClass"; }
  15.         virtual const char*              GetName(void) const;
  16.         virtual void                     GetLocalBounds(AABB& bbox);
  17.         virtual Vec3                     GetPos(bool) const;
  18.         virtual void                     Render(const SRendParams&, const SRenderingPassInfo& passInfo);
  19.         virtual void                     Hide(bool bHide);
  20.         virtual IPhysicalEntity*         GetPhysics(void) const                  { return 0; }
  21.         virtual void                     SetPhysics(IPhysicalEntity*)            {}
  22.         virtual void                     SetMaterial(IMaterial* pMat)            { m_pMaterial = pMat; }
  23.         virtual IMaterial*               GetMaterial(Vec3* pHitPos = NULL) const { return m_pMaterial; }
  24.         virtual IMaterial*               GetMaterialOverride()                   { return m_pMaterial; }
  25.         virtual float                    GetMaxViewDist();
  26.         virtual void                     SetLightProperties(const CDLight& light);
  27.         virtual CDLight&                 GetLightProperties() { return m_light; };
  28.         virtual void                     Release(bool);
  29.         virtual void                     SetMatrix(const Matrix34& mat);
  30.         virtual const Matrix34&          GetMatrix() { return m_Matrix; }
  31.         virtual struct ShadowMapFrustum* GetShadowFrustum(int nId = 0);
  32.         virtual void                     GetMemoryUsage(ICrySizer* pSizer) const;
  33.         virtual const AABB               GetBBox() const             { return m_WSBBox; }
  34.         virtual void                     SetBBox(const AABB& WSBBox) { m_WSBBox = WSBBox; }
  35.         virtual void                     FillBBox(AABB& aabb);
  36.         virtual void                     OffsetPosition(const Vec3& delta);
  37.         virtual void                     SetCastingException(IRenderNode* pNotCaster) { m_pNotCaster = pNotCaster; }
  38.         virtual bool                     IsLightAreasVisible();
  39.         const PodArray<SPlaneObject>&    GetCastersHull() const { return s_lstTmpCastersHull; }
  40.  
  41.         virtual struct IStatObj* GetEntityStatObj(unsigned int nPartId = 0, unsigned int nSubPartId = 0, Matrix34A* pMatrix = NULL, bool bReturnOnlyVisible = false) { return NULL; }
  42.         virtual int              GetSlotCount() const;
  43.         virtual void             SetViewDistRatio(int nViewDistRatio);
  44. #if defined(FEATURE_SVO_GI)
  45.         virtual EGIMode          GetGIMode() const;
  46. #endif
  47.         virtual void             SetOwnerEntity( IEntity *pEntity );
  48.         void                     InitEntityShadowMapInfoStructure();
  49.         void                     UpdateGSMLightSourceShadowFrustum(const SRenderingPassInfo& passInfo);
  50.         int                      UpdateGSMLightSourceDynamicShadowFrustum(int nDynamicLodCount, int nDistanceLodCount, float& fDistanceFromViewLastDynamicLod, float& fGSMBoxSizeLastDynamicLod, bool bFadeLastCascade, const SRenderingPassInfo& passInfo);
  51.         int                      UpdateGSMLightSourceCachedShadowFrustum(int nFirstLod, int nLodCount, float& fDistFromViewDynamicLod, float fRadiusDynamicLod, const SRenderingPassInfo& passInfo);
  52.         int                      UpdateGSMLightSourceNearestShadowFrustum(int nFrustumIndex, const SRenderingPassInfo& passInfo);
  53.         bool                     ProcessFrustum(int nLod, float fCamBoxSize, float fDistanceFromView, PodArray<struct SPlaneObject>& lstCastersHull, const SRenderingPassInfo& passInfo);
  54.         static void              ProcessPerObjectFrustum(ShadowMapFrustum* pFr, struct SPerObjectShadow* pPerObjectShadow, ILightSource* pLightSource, const SRenderingPassInfo& passInfo);
  55.         void                     InitShadowFrustum_SUN_Conserv(ShadowMapFrustum* pFr, int dwAllowedTypes, float fGSMBoxSize, float fDistance, int nLod, const SRenderingPassInfo& passInfo);
  56.         void                     InitShadowFrustum_PROJECTOR(ShadowMapFrustum* pFr, int dwAllowedTypes, const SRenderingPassInfo& passInfo);
  57.         void                     InitShadowFrustum_OMNI(ShadowMapFrustum* pFr, int dwAllowedTypes, const SRenderingPassInfo& passInfo);
  58.         void                     FillFrustumCastersList_SUN(ShadowMapFrustum* pFr, int dwAllowedTypes, int nRenderNodeFlags, PodArray<struct SPlaneObject>& lstCastersHull, int nLod, const SRenderingPassInfo& passInfo);
  59.         void                     FillFrustumCastersList_PROJECTOR(ShadowMapFrustum* pFr, int dwAllowedTypes, const SRenderingPassInfo& passInfo);
  60.         void                     FillFrustumCastersList_OMNI(ShadowMapFrustum* pFr, int dwAllowedTypes, const SRenderingPassInfo& passInfo);
  61.         void                     CheckValidFrustums_OMNI(ShadowMapFrustum* pFr, const SRenderingPassInfo& passInfo);
  62.         bool                     CheckFrustumsIntersect(CLightEntity* lightEnt);
  63.         bool                     GetGsmFrustumBounds(const CCamera& viewFrustum, ShadowMapFrustum* pShadowFrustum);
  64.         void                     DetectCastersListChanges(ShadowMapFrustum* pFr, const SRenderingPassInfo& passInfo);
  65.         void                     OnCasterDeleted(IShadowCaster* pCaster);
  66.         int                      MakeShadowCastersHull(PodArray<SPlaneObject>& lstCastersHull, const SRenderingPassInfo& passInfo);
  67.         static Vec3              GSM_GetNextScreenEdge(float fPrevRadius, float fPrevDistanceFromView, const SRenderingPassInfo& passInfo);
  68.         static float             GSM_GetLODProjectionCenter(const Vec3& vEdgeScreen, float fRadius);
  69.         static bool              FrustumIntersection(const CCamera& viewFrustum, const CCamera& shadowFrustum);
  70.         void                     UpdateCastShadowFlag(float fDistance, const SRenderingPassInfo& passInfo);
  71.         void                     CalculateShadowBias(ShadowMapFrustum* pFr, int nLod, float fGSMBoxSize) const;
  72.  
  73.         CLightEntity();
  74.         ~CLightEntity();
  75.  
  76.         CDLight               m_light;
  77.         bool                  m_bShadowCaster : 1;
  78.  
  79.         _smart_ptr<IMaterial> m_pMaterial;
  80.         Matrix34              m_Matrix;
  81.         IRenderNode*          m_pNotCaster;
  82.  
  83.         // used for shadow maps
  84.         struct ShadowMapInfo
  85.         {
  86.                 void Release(struct IRenderer* pRenderer);
  87.                 void GetMemoryUsage(ICrySizer* pSizer) const
  88.                 {
  89.                         pSizer->AddObject(this, sizeof(*this));
  90.                 }
  91.                 ShadowMapFrustumPtr pGSM[MAX_GSM_LODS_NUM];
  92.         }*   m_pShadowMapInfo;
  93.  
  94.         AABB m_WSBBox;
  95.  
  96.         void   SetLayerId(uint16 nLayerId);
  97.         uint16 GetLayerId()                { return m_layerId; }
  98.  
  99. private:
  100.         static PodArray<SPlaneObject> s_lstTmpCastersHull;
  101.  
  102. private:
  103.         IStatObj* m_pStatObj;
  104.  
  105.         uint16    m_layerId;
  106. };
  107. #endif
  108.  
downloadLightEntity.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