diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-04-03 14:17:38 +0100 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-04-03 14:17:38 +0100 |
| commit | 5795e8939bcd5e849c5e63e2c443bada03c93a20 (patch) | |
| tree | ae7b9297ce96135a58b6b121fd1ad62da2defe9d /game/mixins/lights.h | |
| parent | Add light support to RailVehicleClass (diff) | |
| download | ilt-main.tar.bz2 ilt-main.tar.xz ilt-main.zip | |
Diffstat (limited to 'game/mixins/lights.h')
| -rw-r--r-- | game/mixins/lights.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/game/mixins/lights.h b/game/mixins/lights.h new file mode 100644 index 0000000..c2207a5 --- /dev/null +++ b/game/mixins/lights.h @@ -0,0 +1,26 @@ +#pragma once + +#include "assetFactory/lights.h" +#include "gfx/gl/instanceVertices.h" +#include <flat_map> + +class AssetLights { +protected: + bool persist(Persistence::PersistenceStore & store); + template<typename T> using LightVec = std::vector<typename T::Ptr>; + + LightVec<SpotLight> spotLight; + LightVec<PointLight> pointLight; + + friend class InstanceLights; +}; + +class InstanceLights { +protected: + template<typename V> using LightInstanceMap = std::flat_map<size_t, typename InstanceVertices<V>::InstanceProxy>; + LightInstanceMap<SpotLightVertex> spotLightInstances; + LightInstanceMap<PointLightVertex> pointLightInstances; + + void lightsEnable(AnyPtr<const AssetLights>, uint32_t); + void lightsDisable(); +}; |
