Skip to content

Commit

Permalink
[WIP] Build lander game
Browse files Browse the repository at this point in the history
  • Loading branch information
kwiesmueller committed Mar 31, 2024
1 parent 1b1a66f commit 367e0a4
Show file tree
Hide file tree
Showing 6 changed files with 413 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ OSP-MAGNUM.cbp
CMakeSettings.json
out/
.vs/
.vscode/
build/
2 changes: 1 addition & 1 deletion src/osp/util/logging.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
*/
#pragma once

#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_INFO
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG
#include <spdlog/spdlog.h>

namespace osp
Expand Down
3 changes: 2 additions & 1 deletion src/testapp/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ int main(int argc, char** argv)
{
Corrade::Utility::Arguments args;
args.addSkippedPrefix("magnum", "Magnum options")
.addOption("scene", "none") .setHelp("scene", "Set the scene to launch")
.addOption("scene", "lander") .setHelp("scene", "Set the scene to launch")
.addOption("config") .setHelp("config", "path to configuration file to use")
.addBooleanOption("norepl") .setHelp("norepl", "don't enter read, evaluate, print, loop.")
.addBooleanOption("log-exec") .setHelp("log-exec", "Log Task/Pipeline Execution (Extremely chatty!)")
Expand Down Expand Up @@ -308,6 +308,7 @@ void start_magnum_async()
g_testApp.close_session(g_testApp.m_windowApp);

OSP_LOG_INFO("Closed Magnum Application");
std::exit(0);
});
g_magnumThread.swap(t);
}
Expand Down
95 changes: 95 additions & 0 deletions src/testapp/scenarios.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,101 @@ static ScenarioMap_t make_scenarios()
return setup_renderer;
});

add_scenario("lander", "Lander simulation game", [] (TestApp& rTestApp) -> RendererSetupFunc_t {
#define SCENE_SESSIONS scene, commonScene, uniCore, uniScnFrame, uniPlanet, physics, \
prefabs, parts, signalsFloat, vehicleSpawn, vehicleSpawnVB, vehicles, \
newton, vehicleSpawnNwt, nwtRocketSet, rocketsNwt, \
machRocket, machRcsDriver
#define SCENE_SESSIONS_COUNT 18
#define RENDERER_SESSIONS sceneRenderer, magnumScene, planetDraw, \
cameraCtrl, cameraFree, shVisual, shFlat, shPhong, \
prefabDraw, vehicleDraw, vehicleCtrl, cameraVehicle
#define RENDERER_SESSIONS_COUNT 12

using namespace testapp::scenes;

auto const defaultPkg = rTestApp.m_defaultPkg;
auto const application = rTestApp.m_application;
auto & rTopData = rTestApp.m_topData;

TopTaskBuilder builder{rTestApp.m_tasks, rTestApp.m_scene.m_edges, rTestApp.m_taskData};

auto & [SCENE_SESSIONS] = resize_then_unpack<SCENE_SESSIONS_COUNT>(rTestApp.m_scene.m_sessions);

scene = setup_scene(builder, rTopData, application);
commonScene = setup_common_scene (builder, rTopData, scene, application, defaultPkg);

auto const tgApp = application.get_pipelines< PlApplication >();
uniCore = setup_uni_core (builder, rTopData, tgApp.mainLoop);
uniScnFrame = setup_uni_sceneframe (builder, rTopData, uniCore);
uniPlanet = setup_uni_landerplanet (builder, rTopData, uniCore, uniScnFrame);

physics = setup_physics (builder, rTopData, scene, commonScene);
prefabs = setup_prefabs (builder, rTopData, application, scene, commonScene, physics);
parts = setup_parts (builder, rTopData, application, scene);
signalsFloat = setup_signals_float (builder, rTopData, scene, parts);
vehicleSpawn = setup_vehicle_spawn (builder, rTopData, scene);
vehicleSpawnVB = setup_vehicle_spawn_vb (builder, rTopData, application, scene, commonScene, prefabs, parts, vehicleSpawn, signalsFloat);
vehicles = setup_prebuilt_vehicles (builder, rTopData, application, scene);

machRocket = setup_mach_rocket (builder, rTopData, scene, parts, signalsFloat);
machRcsDriver = setup_mach_rcsdriver (builder, rTopData, scene, parts, signalsFloat);

newton = setup_newton (builder, rTopData, scene, commonScene, physics);
vehicleSpawnNwt = setup_vehicle_spawn_newton(builder, rTopData, application, commonScene, physics, prefabs, parts, vehicleSpawn, newton);
nwtRocketSet = setup_newton_factors (builder, rTopData);
rocketsNwt = setup_rocket_thrust_newton(builder, rTopData, scene, commonScene, physics, prefabs, parts, signalsFloat, newton, nwtRocketSet);


OSP_DECLARE_GET_DATA_IDS(vehicleSpawn, TESTAPP_DATA_VEHICLE_SPAWN);
OSP_DECLARE_GET_DATA_IDS(vehicleSpawnVB, TESTAPP_DATA_VEHICLE_SPAWN_VB);
OSP_DECLARE_GET_DATA_IDS(vehicles, TESTAPP_DATA_TEST_VEHICLES);

auto &rVehicleSpawn = top_get<ACtxVehicleSpawn> (rTopData, idVehicleSpawn);
auto &rVehicleSpawnVB = top_get<ACtxVehicleSpawnVB> (rTopData, idVehicleSpawnVB);
auto &rPrebuiltVehicles = top_get<PrebuiltVehicles> (rTopData, idPrebuiltVehicles);

rVehicleSpawn.spawnRequest.push_back(
{
.position = {30.0f, 0.0f, 0.0f},
.velocity = {0.0f, 0.0f, 0.0f},
.rotation = {}
});
rVehicleSpawnVB.dataVB.push_back(rPrebuiltVehicles[gc_pbvSimpleCommandServiceModule].get());

RendererSetupFunc_t const setup_renderer = [] (TestApp& rTestApp) -> void
{
auto const application = rTestApp.m_application;
auto const windowApp = rTestApp.m_windowApp;
auto const magnum = rTestApp.m_magnum;
auto & rTopData = rTestApp.m_topData;

TopTaskBuilder builder{rTestApp.m_tasks, rTestApp.m_renderer.m_edges, rTestApp.m_taskData};

auto & [SCENE_SESSIONS] = unpack<SCENE_SESSIONS_COUNT>(rTestApp.m_scene.m_sessions);
auto & [RENDERER_SESSIONS] = resize_then_unpack<RENDERER_SESSIONS_COUNT>(rTestApp.m_renderer.m_sessions);

sceneRenderer = setup_scene_renderer (builder, rTopData, application, windowApp, commonScene);
create_materials(rTopData, sceneRenderer, sc_materialCount);

magnumScene = setup_magnum_scene (builder, rTopData, application, rTestApp.m_windowApp, sceneRenderer, rTestApp.m_magnum, scene, commonScene);
cameraCtrl = setup_camera_ctrl (builder, rTopData, windowApp, sceneRenderer, magnumScene);
// cameraFree = setup_camera_free (builder, rTopData, windowApp, scene, cameraCtrl);
shVisual = setup_shader_visualizer (builder, rTopData, windowApp, sceneRenderer, magnum, magnumScene, sc_matVisualizer);
// shFlat = setup_shader_flat (builder, rTopData, windowApp, sceneRenderer, magnum, magnumScene, sc_matFlat);
shPhong = setup_shader_phong (builder, rTopData, windowApp, sceneRenderer, magnum, magnumScene, sc_matPhong);
planetDraw = setup_testplanets_draw (builder, rTopData, windowApp, sceneRenderer, cameraCtrl, commonScene, uniCore, uniScnFrame, uniPlanet, sc_matVisualizer, sc_matFlat);

prefabDraw = setup_prefab_draw (builder, rTopData, application, windowApp, sceneRenderer, commonScene, prefabs, sc_matPhong);
vehicleDraw = setup_vehicle_spawn_draw (builder, rTopData, sceneRenderer, vehicleSpawn);
vehicleCtrl = setup_vehicle_control (builder, rTopData, windowApp, scene, parts, signalsFloat);
cameraVehicle = setup_camera_vehicle (builder, rTopData, windowApp, scene, sceneRenderer, commonScene, physics, parts, cameraCtrl, vehicleCtrl);

setup_magnum_draw(rTestApp, scene, sceneRenderer, magnumScene);
};
return setup_renderer;
});

return scenarioMap;
}

Expand Down
Loading

0 comments on commit 367e0a4

Please sign in to comment.