@@ -137,40 +137,50 @@ Theme lightTheme()
137137 *
138138 * @param display display to obtain events from.
139139 * @param camera the camera to update.
140+ * @param zoomSpeed multiplier for zoom.
141+ * @param rotateSpeed multiplier for rotation.
142+ * @param inclineSpeed multiplier for inclination.
140143 * @return true if the camera moved.
141144 * @return false if the camera did not move.
142145 */
143- bool cameraControls (jGL::DesktopDisplay & display, Camera & camera)
146+ bool cameraControls
147+ (
148+ jGL::DesktopDisplay & display,
149+ Camera & camera,
150+ float zoomSpeed,
151+ float rotateSpeed,
152+ float inclineSpeed
153+ )
144154{
145155 bool moved = false ;
146156 if (display.keyHasAnyEvents (GLFW_KEY_W, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
147157 {
148- camera.zoom (-dr);
158+ camera.zoom (-dr*zoomSpeed );
149159 moved = true ;
150160 }
151161 if (display.keyHasAnyEvents (GLFW_KEY_S, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
152162 {
153- camera.zoom (dr);
163+ camera.zoom (dr*zoomSpeed );
154164 moved = true ;
155165 }
156166 if (display.keyHasAnyEvents (GLFW_KEY_Q, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
157167 {
158- camera.incline (dtheta);
168+ camera.incline (dtheta*inclineSpeed );
159169 moved = true ;
160170 }
161171 if (display.keyHasAnyEvents (GLFW_KEY_E, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
162172 {
163- camera.incline (-dtheta);
173+ camera.incline (-dtheta*inclineSpeed );
164174 moved = true ;
165175 }
166176 if (display.keyHasAnyEvents (GLFW_KEY_A, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
167177 {
168- camera.rotate (-dphi);
178+ camera.rotate (-dphi*rotateSpeed );
169179 moved = true ;
170180 }
171181 if (display.keyHasAnyEvents (GLFW_KEY_D, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
172182 {
173- camera.rotate (dphi);
183+ camera.rotate (dphi*rotateSpeed );
174184 moved = true ;
175185 }
176186 return moved;
@@ -182,6 +192,10 @@ bool cameraControls(jGL::DesktopDisplay & display, Camera & camera)
182192 * @param display the display to get events from.
183193 * @param atoms the Atoms to modify.
184194 * @param emphasisControls key bindings to emphasise elements.
195+ * @param elementMap map elements to indices.
196+ * @param alphaOverrides overriding alpha channels.
197+ * @param deemphasisAlpha alpha for faded atoms.
198+ * @param translateSpeed atom translation speed.
185199 *
186200 * @return true if the Atoms were modified.
187201 * @return false if the Atoms were not modified.
@@ -193,38 +207,39 @@ bool atomControls
193207 std::map<int , Element> & emphasisControls,
194208 std::multimap<Element, uint64_t > & elementMap,
195209 std::vector<float > & alphaOverrides,
196- float deemphasisAlpha
210+ float deemphasisAlpha,
211+ float translateSpeed
197212)
198213{
199214 bool elementsNeedUpdate = false ;
200215 if (display.keyHasEvent (GLFW_KEY_LEFT, jGL::EventType::PRESS) || display.keyHasEvent (GLFW_KEY_LEFT, jGL::EventType::HOLD))
201216 {
202- translate (atoms, {-dr, 0.0 , 0.0 });
217+ translate (atoms, {-dr*translateSpeed , 0.0 , 0.0 });
203218 elementsNeedUpdate = true ;
204219 }
205220 if (display.keyHasEvent (GLFW_KEY_RIGHT, jGL::EventType::PRESS) || display.keyHasEvent (GLFW_KEY_RIGHT, jGL::EventType::HOLD))
206221 {
207- translate (atoms, {dr, 0.0 , 0.0 });
222+ translate (atoms, {dr*translateSpeed , 0.0 , 0.0 });
208223 elementsNeedUpdate = true ;
209224 }
210225 if (display.keyHasEvent (GLFW_KEY_PERIOD, jGL::EventType::PRESS) || display.keyHasEvent (GLFW_KEY_PERIOD, jGL::EventType::HOLD))
211226 {
212- translate (atoms, {0.0 , -dr, 0.0 });
227+ translate (atoms, {0.0 , -dr*translateSpeed , 0.0 });
213228 elementsNeedUpdate = true ;
214229 }
215230 if (display.keyHasEvent (GLFW_KEY_SLASH, jGL::EventType::PRESS) || display.keyHasEvent (GLFW_KEY_SLASH, jGL::EventType::HOLD))
216231 {
217- translate (atoms, {0.0 , dr, 0.0 });
232+ translate (atoms, {0.0 , dr*translateSpeed , 0.0 });
218233 elementsNeedUpdate = true ;
219234 }
220235 if (display.keyHasEvent (GLFW_KEY_DOWN, jGL::EventType::PRESS) || display.keyHasEvent (GLFW_KEY_DOWN, jGL::EventType::HOLD))
221236 {
222- translate (atoms, {0.0 , 0.0 , -dr});
237+ translate (atoms, {0.0 , 0.0 , -dr*translateSpeed });
223238 elementsNeedUpdate = true ;
224239 }
225240 if (display.keyHasEvent (GLFW_KEY_UP, jGL::EventType::PRESS) || display.keyHasEvent (GLFW_KEY_UP, jGL::EventType::HOLD))
226241 {
227- translate (atoms, {0.0 , 0.0 , dr});
242+ translate (atoms, {0.0 , 0.0 , dr*translateSpeed });
228243 elementsNeedUpdate = true ;
229244 }
230245
@@ -287,7 +302,7 @@ void loadingScreenFrame
287302 jGLInstance->setClear (theme.background );
288303 jGLInstance->clear ();
289304
290- cameraControls (display, camera);
305+ cameraControls (display, camera, 1 . 0f , 1 . 0f , 1 . 0f );
291306
292307 loadingAtoms.updateCamera (camera);
293308 loadingAtoms.draw (true );
0 commit comments