summaryrefslogtreecommitdiff
path: root/game/vehicles/railVehicleClass.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2023-05-06 16:42:08 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2023-05-06 16:42:08 +0100
commit72ab29786f6d4c97a92cb95c75091537490e2d0f (patch)
tree18bf013e3be660b0769cd1a601e670eb79355324 /game/vehicles/railVehicleClass.cpp
parentRefactor InstanceVertices in terms of glContainer (diff)
downloadilt-72ab29786f6d4c97a92cb95c75091537490e2d0f.tar.bz2
ilt-72ab29786f6d4c97a92cb95c75091537490e2d0f.tar.xz
ilt-72ab29786f6d4c97a92cb95c75091537490e2d0f.zip
Templated BufferedLocation and single buffer storage for RVC locations
Diffstat (limited to 'game/vehicles/railVehicleClass.cpp')
-rw-r--r--game/vehicles/railVehicleClass.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/game/vehicles/railVehicleClass.cpp b/game/vehicles/railVehicleClass.cpp
index 148081f..324148c 100644
--- a/game/vehicles/railVehicleClass.cpp
+++ b/game/vehicles/railVehicleClass.cpp
@@ -4,6 +4,7 @@
#include "gfx/gl/vertexArrayObject.h"
#include "gfx/models/mesh.h"
#include "gfx/models/texture.h"
+#include "stream_support.h"
#include <algorithm>
#include <array>
#include <cache.h>
@@ -34,36 +35,36 @@ void
RailVehicleClass::postLoad()
{
texture = getTexture();
- bodyMesh->configureVAO(instanceVAO).addAttribs<glm::mat4>(instancesBody.bufferName(), 1);
+ bodyMesh->configureVAO(instanceVAO).addAttribs<LocationVertex, &LocationVertex::body>(instances.bufferName(), 1);
bogies.front()
->configureVAO(instancesBogiesVAO.front())
- .addAttribs<glm::mat4>(instancesBogies.front().bufferName(), 1);
+ .addAttribs<LocationVertex, &LocationVertex::front>(instances.bufferName(), 1);
bogies.back()
->configureVAO(instancesBogiesVAO.back())
- .addAttribs<glm::mat4>(instancesBogies.back().bufferName(), 1);
+ .addAttribs<LocationVertex, &LocationVertex::back>(instances.bufferName(), 1);
}
void
RailVehicleClass::render(const SceneShader & shader) const
{
- if (const auto count = instancesBody.size()) {
+ if (const auto count = static_cast<GLsizei>(instances.size())) {
if (texture) {
texture->bind();
}
shader.basicInst.use();
- bodyMesh->DrawInstanced(instanceVAO, static_cast<GLsizei>(count));
- bogies.front()->DrawInstanced(instancesBogiesVAO.front(), static_cast<GLsizei>(instancesBogies.front().size()));
- bogies.back()->DrawInstanced(instancesBogiesVAO.back(), static_cast<GLsizei>(instancesBogies.back().size()));
+ bodyMesh->DrawInstanced(instanceVAO, count);
+ bogies.front()->DrawInstanced(instancesBogiesVAO.front(), count);
+ bogies.back()->DrawInstanced(instancesBogiesVAO.back(), count);
}
}
void
RailVehicleClass::shadows(const ShadowMapper & mapper) const
{
- if (const auto count = instancesBody.size()) {
+ if (const auto count = static_cast<GLsizei>(instances.size())) {
mapper.dynamicPointInst.use();
- bodyMesh->DrawInstanced(instanceVAO, static_cast<GLsizei>(count));
- bogies.front()->DrawInstanced(instancesBogiesVAO.front(), static_cast<GLsizei>(instancesBogies.front().size()));
- bogies.back()->DrawInstanced(instancesBogiesVAO.back(), static_cast<GLsizei>(instancesBogies.back().size()));
+ bodyMesh->DrawInstanced(instanceVAO, count);
+ bogies.front()->DrawInstanced(instanceVAO, count);
+ bogies.back()->DrawInstanced(instanceVAO, count);
}
}