summaryrefslogtreecommitdiff
path: root/game/vehicles
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-04-03 14:17:38 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2026-04-03 14:17:38 +0100
commit5795e8939bcd5e849c5e63e2c443bada03c93a20 (patch)
treeae7b9297ce96135a58b6b121fd1ad62da2defe9d /game/vehicles
parentAdd light support to RailVehicleClass (diff)
downloadilt-main.tar.bz2
ilt-main.tar.xz
ilt-main.zip
Create mix-ins for handling asset and instance lightsHEADmain
Diffstat (limited to 'game/vehicles')
-rw-r--r--game/vehicles/railVehicle.cpp1
-rw-r--r--game/vehicles/railVehicle.h2
-rw-r--r--game/vehicles/railVehicleClass.cpp4
-rw-r--r--game/vehicles/railVehicleClass.h6
4 files changed, 5 insertions, 8 deletions
diff --git a/game/vehicles/railVehicle.cpp b/game/vehicles/railVehicle.cpp
index c11d817..b5de833 100644
--- a/game/vehicles/railVehicle.cpp
+++ b/game/vehicles/railVehicle.cpp
@@ -20,6 +20,7 @@ RailVehicle::RailVehicle(RailVehicleClassPtr rvc, GlobalPosition3D position) :
Location {.pos = position + RelativePosition3D {0, -rvc->wheelBase / 2.F, 0}, .rot = {}}))},
rvClass {std::move(rvc)}
{
+ lightsEnable(rvClass, get()->body.index);
}
void
diff --git a/game/vehicles/railVehicle.h b/game/vehicles/railVehicle.h
index 0f341f9..c02c19e 100644
--- a/game/vehicles/railVehicle.h
+++ b/game/vehicles/railVehicle.h
@@ -8,7 +8,7 @@
template<typename> class Ray;
class Train;
-class RailVehicle : Selectable, RailVehicleClass::Instance {
+class RailVehicle : Selectable, RailVehicleClass::Instance, public InstanceLights {
public:
explicit RailVehicle(RailVehicleClassPtr rvc, GlobalPosition3D = {});
diff --git a/game/vehicles/railVehicleClass.cpp b/game/vehicles/railVehicleClass.cpp
index 5ee778b..cfdc52d 100644
--- a/game/vehicles/railVehicleClass.cpp
+++ b/game/vehicles/railVehicleClass.cpp
@@ -12,9 +12,7 @@ bool
RailVehicleClass::persist(Persistence::PersistenceStore & store)
{
return STORE_TYPE && STORE_MEMBER(length) && STORE_MEMBER(wheelBase) && STORE_MEMBER(maxSpeed)
- && STORE_NAME_HELPER("bogie", bogies, Asset::MeshArrayConstruct)
- && STORE_HELPER(pointLight, Persistence::Appender<decltype(pointLight)>)
- && STORE_HELPER(spotLight, Persistence::Appender<decltype(spotLight)>)
+ && STORE_NAME_HELPER("bogie", bogies, Asset::MeshArrayConstruct) && AssetLights::persist(store)
&& STORE_HELPER(bodyMesh, Asset::MeshConstruct) && Asset::persist(store);
}
diff --git a/game/vehicles/railVehicleClass.h b/game/vehicles/railVehicleClass.h
index b7f6c59..1ea87cd 100644
--- a/game/vehicles/railVehicleClass.h
+++ b/game/vehicles/railVehicleClass.h
@@ -1,7 +1,7 @@
#pragma once
#include "assetFactory/asset.h"
-#include "assetFactory/lights.h"
+#include "game/mixins/lights.h"
#include "gfx/gl/instanceVertices.h"
#include "gfx/models/mesh.h"
#include "gfx/models/texture.h"
@@ -13,7 +13,7 @@ class SceneShader;
class ShadowMapper;
class Location;
-class RailVehicleClass : public Renderable, public Asset {
+class RailVehicleClass : public Renderable, public Asset, public AssetLights {
public:
void render(const SceneShader & shader, const Frustum &) const override;
void shadows(const ShadowMapper & shadowMapper, const Frustum &) const override;
@@ -27,8 +27,6 @@ public:
std::array<Mesh::Ptr, 2> bogies;
Mesh::Ptr bodyMesh;
Texture::Ptr texture;
- std::vector<SpotLight::Ptr> spotLight;
- std::vector<PointLight::Ptr> pointLight;
float wheelBase;
float length;
float maxSpeed;