1 #ifndef INCLUDE_AL_DISTRIBUTEDAPP_HPP
2 #define INCLUDE_AL_DISTRIBUTEDAPP_HPP
11 #include "al/app/al_App.hpp"
12 #include "al/app/al_NodeConfiguration.hpp"
13 #include "al/app/al_OmniRendererDomain.hpp"
14 #include "al/app/al_StateDistributionDomain.hpp"
15 #include "al/io/al_PersistentConfig.hpp"
16 #include "al/io/al_Socket.hpp"
17 #include "al/io/al_Toml.hpp"
18 #include "al/scene/al_DistributedScene.hpp"
19 #include "al/scene/al_DynamicScene.hpp"
25 void registerAudioIO(
AudioIO &io) {
29 void update(
AudioIO &io) { gain = io.mGain; }
31 Parameter gain{
"gain",
"sound", 1.0, 0.0, 2.0};
73 void start()
override;
89 Window &defaultWindow()
override;
91 Pose &pose()
override;
92 Lens &lens()
override;
96 std::shared_ptr<GLFWOpenGLOmniRendererDomain> omniRendering;
97 std::map<std::string, std::string> additionalConfig;
102 bool initialized{
false};
104 std::map<std::string, std::string> mRoleMap;
105 bool mFoundHost =
false;
123 template <
class TSharedState>
129 mOpenGLGraphicsDomain->removeSubDomain(simulationDomain());
133 mOpenGLGraphicsDomain
137 TSharedState &state() {
138 return std::static_pointer_cast<StateDistributionDomain<TSharedState>>(
147 void start()
override {
150 std::static_pointer_cast<StateDistributionDomain<TSharedState>>(
153 if (hasCapability(CAP_STATE_SEND)) {
154 std::cout <<
"Running primary with state send" << std::endl;
156 distDomain->addStateSender(
"state", distDomain->statePtr());
157 sender->configure(10101,
"state", additionalConfig[
"broadcastAddress"]);
159 std::cout <<
"Not enabling state sending for primary." << std::endl;
162 std::cout <<
"Running REPLICA" << std::endl;
164 distDomain->addStateReceiver(
"state", distDomain->statePtr());
165 receiver->configure(10101);
167 DistributedApp::start();
virtual void prepare()
prepares domains and configuration
Interface for loading fonts and rendering text.
void registerChangeCallback(ParameterChangeCallback cb)
registerChangeCallback adds a callback to be called when the value changes
A local coordinate frame.
Domain for distributing state for a simulation domain.
Viewpoint within a scene.
Window with OpenGL context.
The NodeConfiguration struct describes a distributed node and its capabilities.