33 static const std::vector<LightComponent*>&
instances() {
return _instances; }
47 float range()
const {
return _range; }
59 uint32_t
mask()
const {
return _mask; }
60 void setMask(
const uint32_t value) { _mask = value; }
99 const std::vector<int>&
layers()
const {
return _layers; }
103 if (_layers.empty()) {
106 return std::find(_layers.begin(), _layers.end(), layerId) != _layers.end();
116 void syncToLight()
const;
118 inline static std::vector<LightComponent*> _instances;
120 mutable std::unique_ptr<Light> _light;
124 float _intensity = 1.0f;
125 float _range = 10.0f;
126 float _innerConeAngle = 30.0f;
127 float _outerConeAngle = 45.0f;
132 bool _castShadows =
false;
133 float _shadowBias = 0.001f;
134 float _shadowNormalBias = 0.0f;
135 float _shadowStrength = 1.0f;
136 float _shadowDistance = 40.0f;
137 int _shadowResolution = 2048;
138 int _numCascades = 4;
139 float _cascadeDistribution = 0.5f;
140 float _cascadeBlend = 0.0f;
141 float _areaWidth = 1.0f;
142 float _areaHeight = 1.0f;
Base class for ECS components that attach functionality to entities.
Component(IComponentSystem *system, Entity *entity)
IComponentSystem * system() const
ECS entity — a GraphNode that hosts components defining its behavior.
void setAreaHeight(const float value)
void setNumCascades(const int value)
LightComponent(IComponentSystem *system, Entity *entity)
float shadowNormalBias() const
void setShadowDistance(const float value)
float outerConeAngle() const
void setOuterConeAngle(const float angleDegrees)
const std::vector< int > & layers() const
void setIntensity(const float intensity)
void setLayers(const std::vector< int > &layers)
void cloneFrom(const Component *source) override
~LightComponent() override
static const std::vector< LightComponent * > & instances()
void setShadowResolution(const int value)
Vector3 direction() const
void setAreaWidth(const float value)
float innerConeAngle() const
const Color & color() const
bool rendersLayer(const int layerId) const
void setType(const LightType type)
void initializeComponentData() override
void setFalloffMode(const LightFalloff mode)
float shadowStrength() const
void setCascadeBlend(const float value)
void setShadowStrength(const float value)
void setCascadeDistribution(const float value)
void setInnerConeAngle(const float angleDegrees)
void setShadowNormalBias(const float value)
LightFalloff falloffMode() const
float cascadeBlend() const
float shadowDistance() const
int shadowResolution() const
void setColor(const Color &color)
void setMask(const uint32_t value)
void setShadowBias(const float value)
void setCastShadows(const bool castShadows)
float cascadeDistribution() const
void setRange(const float range)
Directional, point, spot, or area light with shadow mapping and cookie projection.
constexpr int LAYERID_WORLD
constexpr uint32_t MASK_AFFECT_DYNAMIC
RGBA color with floating-point components in [0, 1].
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.