124 bool& isDirty() {
return _dirty; }
131 shaders::ParticleSphereShader::ColorMode& colorMode() {
return _colorMode; }
133 UniverseRenderer& setColorMode(shaders::ParticleSphereShader::ColorMode colorMode) {
134 _colorMode = colorMode;
138 const Float lineWidth();
142 const Float lineWidthMin();
144 const Float lineWidthMax();
146 Color3& ambientColor() {
return _ambientColor; }
150 Color3& diffuseColor() {
return _diffuseColor; }
154 Color3& specularColor() {
return _specularColor; }
158 Float& shininess() {
return _shininess; }
162 Color3& gridColor() {
return _gridColor; }
169 Color3& sceneBoxColor() {
return _sceneBoxColor; }
172 _sceneBoxColor = color;
176 fVector3& lightDirection() {
return _lightDir; }
180 Color3& lightColor() {
return _lightColor; }
184 Color3& backgroundColor() {
return _clearColor; }
198 const bool showingDiscretizationGrid()
const {
199 return _showDiscretizationGrid;
203 _showDiscretizationGrid =
show;
207 Color3& discretizationGridColor() {
208 return _discretizationGridColor;
213 const fVector3& defaultEye()
const {
217 const fVector3& defaultCenter()
const {
225 bool renderUniverse =
true;
228 void onCursorMove(
double xpos,
double ypos);
230 void onCursorEnter(
int entered);
232 void onMouseButton(
int button,
int action,
int mods);
236 void onWindowMove(
int x,
int y);
238 void onWindowSizeChange(
int x,
int y);
240 void onFramebufferSizeChange(
int x,
int y);
242 void viewportEvent(
const int w,
const int h);
246 int clipPlaneCount()
const;
248 static int maxClipPlaneCount();
250 const unsigned addClipPlaneEquation(
const Magnum::Vector4& pe);
252 const unsigned removeClipPlaneEquation(
const unsigned int &
id);
254 void setClipPlaneEquation(
unsigned id,
const Magnum::Vector4& pe);
256 const Magnum::Vector4& getClipPlaneEquation(
unsigned id);
258 const float getZoomRate();
260 void setZoomRate(
const float &zoomRate);
262 const float getSpinRate();
264 void setSpinRate(
const float &spinRate);
266 const float getMoveRate();
268 void setMoveRate(
const float &moveRate);
321 void viewportEvent(Platform::GlfwApplication::ViewportEvent& event);
323 void cameraTranslateDown();
325 void cameraTranslateUp();
327 void cameraTranslateRight();
329 void cameraTranslateLeft();
331 void cameraTranslateForward();
333 void cameraTranslateBackward();
335 void cameraRotateDown();
337 void cameraRotateUp();
339 void cameraRotateLeft();
341 void cameraRotateRight();
343 void cameraRollLeft();
345 void cameraRollRight();
349 void cameraZoomOut();
384 void mousePressEvent(Platform::GlfwApplication::MouseEvent& event);
385 void mouseReleaseEvent(Platform::GlfwApplication::MouseEvent& event);
399 void mouseScrollEvent(Platform::GlfwApplication::MouseScrollEvent& event);
401 SubRenderer *getSubRenderer(
const SubRendererFlag &flag);
405 bool _decorateScene =
true;
406 bool _showDiscretizationGrid =
false;
407 shaders::ParticleSphereShader::ColorMode _colorMode = shaders::ParticleSphereShader::ColorMode::ConsistentRandom;
408 Color3 _ambientColor{0.4f};
409 Color3 _diffuseColor{1.f};
410 Color3 _specularColor{0.2f};
411 Color3 _gridColor = {1.f, 1.f, 1.f};
412 Color3 _sceneBoxColor = {1.f, 1.f, 0.f};
413 Float _shininess = 100.0f;
414 fVector3 _lightDir{1.0f, 1.0f, 2.0f};
415 Color3 _lightColor = {0.9, 0.9, 0.9};
416 Color3 _clearColor{0.35f};
417 Color3 _discretizationGridColor{0.1, 0.1, 0.8};
419 fVector3 _eye, _center, _up;
421 std::vector<Magnum::Vector4> _clipPlanes;
432 Magnum::Matrix4 projMat = Matrix4{Math::IdentityInit};
435 fVector3 _rotationPoint, _translationPoint;
443 ArcBallCamera *_arcball;
446 GL::Mesh gridMesh{NoCreate};
447 Magnum::Matrix4 gridModelView;
449 GL::Mesh sceneBox{NoCreate};
454 shaders::Phong sphereShader{NoCreate};
456 Shaders::Flat3D wireframeShader{NoCreate};
458 GL::Buffer sphereInstanceBuffer{NoCreate};
460 GL::Buffer largeSphereInstanceBuffer{NoCreate};
462 GL::Mesh sphereMesh{NoCreate};
464 GL::Mesh largeSphereMesh{NoCreate};
466 GL::Mesh discretizationGridMesh{NoCreate};
468 GL::Buffer discretizationGridBuffer{NoCreate};
470 std::vector<SubRenderer*> subRenderers;
494 void setupCallbacks();
501 bool _bonds3d_flags[3] = {
false,
false,
false};