summaryrefslogtreecommitdiff
path: root/test/test-assetFactory.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2023-03-04 15:48:53 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2023-03-04 15:48:53 +0000
commit73a8abf0762a113a04b05e6f1364aa0b961fa7f6 (patch)
tree44536af3af0284ab75eae79ef81a5e4452019269 /test/test-assetFactory.cpp
parentDefault RailVehicle bogie positions according to class wheelBase (diff)
downloadilt-73a8abf0762a113a04b05e6f1364aa0b961fa7f6.tar.bz2
ilt-73a8abf0762a113a04b05e6f1364aa0b961fa7f6.tar.xz
ilt-73a8abf0762a113a04b05e6f1364aa0b961fa7f6.zip
Remove old hard coded asset factory test, run entirely from XML load and render a RailVehicle instance
Diffstat (limited to 'test/test-assetFactory.cpp')
-rw-r--r--test/test-assetFactory.cpp99
1 files changed, 7 insertions, 92 deletions
diff --git a/test/test-assetFactory.cpp b/test/test-assetFactory.cpp
index 9930714..ae5a88a 100644
--- a/test/test-assetFactory.cpp
+++ b/test/test-assetFactory.cpp
@@ -6,10 +6,11 @@
#include <boost/test/unit_test.hpp>
#include "assetFactory/assetFactory.h"
-#include "assetFactory/factoryMesh.h"
#include "assetFactory/object.h"
+#include "game/vehicles/railVehicle.h"
#include "game/vehicles/railVehicleClass.h"
#include "gfx/gl/sceneRenderer.h"
+#include "gfx/renderable.h"
#include "lib/collection.hpp"
#include "lib/location.hpp"
#include "lib/stream_support.hpp"
@@ -34,7 +35,7 @@ public:
content(const SceneShader & shader) const override
{
shader.basic.use(Location {{0, 0, 0}, {0, 0, 0}});
- meshes.apply(&Mesh::Draw);
+ objects.apply(&Renderable::render, shader);
}
void
lights(const SceneShader & shader) const override
@@ -51,7 +52,7 @@ public:
shadows(const ShadowMapper & mapper) const override
{
mapper.dynamicPoint.use(Location {{0, 0, 0}, {0, 0, 0}});
- meshes.apply(&Mesh::Draw);
+ objects.apply(&Renderable::shadows, mapper);
}
void
render(float dist = 10.f)
@@ -59,98 +60,13 @@ public:
sceneRenderer.camera.setView({dist, dist, dist}, south + west + down);
sceneRenderer.render(*this);
}
- Collection<const Mesh> meshes;
+ Collection<const Renderable> objects;
private:
SceneRenderer sceneRenderer;
};
BOOST_FIXTURE_TEST_SUITE(m, FactoryFixture);
-BOOST_AUTO_TEST_CASE(brush47)
-{
- AssetFactory assetFactory;
- {
- auto wheel = std::make_shared<Object>("wheel");
- {
- auto wheelCylinder = wheel->uses.emplace_back(std::make_shared<Use>());
- wheelCylinder->type = assetFactory.shapes.at("cylinder");
- wheelCylinder->position = {0, 0, 0.571};
- wheelCylinder->scale = {1.142, 1.142, 0.07};
- wheelCylinder->rotation = {0, 0, half_pi};
- wheelCylinder->colour = assetFactory.parseColour("#2C3539");
- }
- assetFactory.shapes.emplace(wheel->id, wheel);
- }
- {
- auto axel = std::make_shared<Object>("axel");
- for (float x : {-1.f, 1.f}) {
- auto wheel = axel->uses.emplace_back(std::make_shared<Use>());
- wheel->type = assetFactory.shapes.at("wheel");
- wheel->position = {x * 0.717f, 0, 0};
- wheel->rotation = {0, x == 1.f ? pi : 0.f, 0};
- }
- assetFactory.shapes.emplace(axel->id, axel);
- }
- {
- auto bogie = std::make_shared<Object>("bogie");
- for (float y : {-2.f, 0.f, 2.f}) {
- auto axel = bogie->uses.emplace_back(std::make_shared<Use>());
- axel->type = assetFactory.shapes.at("axel");
- axel->position = {0, y, 0};
- }
- assetFactory.shapes.emplace(bogie->id, bogie);
- }
- FactoryMesh::Collection factoryMeshes;
- {
- unsigned short b {0};
- for (float y : {-6.f, 6.f}) {
- auto bogie = factoryMeshes.emplace_back(std::make_shared<FactoryMesh>());
- bogie->id = "bogie" + std::to_string(b);
- auto bogieUse = bogie->uses.emplace_back(std::make_shared<Use>());
- bogieUse->type = assetFactory.shapes.at("bogie");
- bogieUse->position = {0, y, 0};
- bogieUse->rotation = {0, b * pi, 0};
- b++;
- }
- }
- {
- auto body = factoryMeshes.emplace_back(std::make_shared<FactoryMesh>());
- body->id = "body";
- body->size = {2.69f, 19.38f, 3.9f};
- auto bodyLower = body->uses.emplace_back(std::make_shared<Use>());
- bodyLower->type = assetFactory.shapes.at("cuboid");
- bodyLower->position = {0, 0, 1.2};
- bodyLower->scale = {2.69, 19.38, 1.5};
- bodyLower->colour = assetFactory.parseColour("#1111DD");
- auto & bottom = bodyLower->faceControllers["bottom"];
- bottom = std::make_unique<FaceController>();
- bottom->colour = assetFactory.parseColour("#2C3539");
- auto & bodyUpper = bodyLower->faceControllers["top"];
- bodyUpper = std::make_unique<FaceController>();
- bodyUpper->type = "extrude";
- bodyUpper->scale = {1, .95f, 1};
- bodyUpper->position = {0, 0, 1.0};
- auto & roof = bodyUpper->faceControllers["top"];
- roof = std::make_unique<FaceController>();
- roof->type = "extrude";
- roof->scale = {.6f, .9f, 0};
- roof->position = {0, 0, 0.2};
- roof->smooth = true;
- {
- auto batteryBox = body->uses.emplace_back(std::make_shared<Use>());
- batteryBox->type = assetFactory.shapes.at("cuboid");
- batteryBox->position = {0, 0, .2};
- batteryBox->scale = {2.6, 4.5, 1};
- batteryBox->colour = assetFactory.parseColour("#2C3539");
- }
- }
- std::transform(factoryMeshes.begin(), factoryMeshes.end(), std::back_inserter(meshes.objects),
- [](const FactoryMesh::CPtr & factoryMesh) -> Mesh::Ptr {
- return factoryMesh->createMesh();
- });
-
- render(20);
-}
BOOST_AUTO_TEST_CASE(brush47xml)
{
auto mf = AssetFactory::loadXML(RESDIR "/brush47.xml");
@@ -174,9 +90,8 @@ BOOST_AUTO_TEST_CASE(brush47xml)
BOOST_REQUIRE(brush47rvc->bogies.front());
BOOST_REQUIRE(brush47rvc->bogies.back());
- meshes.objects.push_back(brush47rvc->bodyMesh);
- meshes.objects.push_back(brush47rvc->bogies.front());
- meshes.objects.push_back(brush47rvc->bogies.back());
+ auto railVehicle = std::make_shared<RailVehicle>(brush47rvc);
+ objects.objects.push_back(railVehicle);
render(20);
}