#pragma once #include constexpr auto LIGHT_TYPE_DIRECTIONAL = 0; constexpr auto LIGHT_TYPE_POINT = 1; constexpr auto LIGHT_TYPE_SPOT = 2; struct Light { int Type; DirectX::XMFLOAT3 Direction; float Range; DirectX::XMFLOAT3 Position; float Intensity; DirectX::XMFLOAT3 Color; float SpotFalloff; DirectX::XMFLOAT3 Padding; static Light Directional(DirectX::XMFLOAT3 _direction, DirectX::XMFLOAT3 _color, float _intensity) { Light light = {}; light.Type = LIGHT_TYPE_DIRECTIONAL; light.Direction = _direction; light.Color = _color; light.Intensity = _intensity; return light; }; static Light Point(DirectX::XMFLOAT3 _position, DirectX::XMFLOAT3 _color, float _intensity, float _range) { Light light = {}; light.Type = LIGHT_TYPE_POINT; light.Position = _position; light.Color = _color; light.Intensity = _intensity; light.Range = _range; return light; }; };