@@ -44,15 +44,16 @@ using namespace std::chrono;
4444const int resX = 1000 ;
4545const int resY = 1000 ;
4646const float MAX_SPEED = 1.0 /60.0 ;
47- const unsigned MAX_THREADS = 8 ;
47+ const unsigned MAX_THREADS = 0 ;
4848
4949// for smoothing delta numbers
5050uint8_t frameId = 0 ;
5151double deltas[60 ];
5252
5353bool debug = false ;
5454
55- const double deltaPhysics = 1.0 /900.0 ;
55+ const double deltaPhysics = 1.0 /(900.0 );
56+ const unsigned subSamples = 1 ;
5657
5758using Hop::Object::Component::cTransform;
5859using Hop::Object::Component::cPhysics;
@@ -176,7 +177,6 @@ int main(int argc, char ** argv)
176177 // setup physics system
177178 sPhysics & physics = manager.getSystem <sPhysics >();
178179 physics.setTimeStep (deltaPhysics);
179- physics.setGravity (9.81 );
180180
181181 sCollision & collisions = manager.getSystem <sCollision >();
182182
@@ -185,7 +185,7 @@ int main(int argc, char ** argv)
185185 auto res = std::make_unique<Hop::System::Physics::SpringDashpot>
186186 (
187187 deltaPhysics*10.0 ,
188- 0.66 ,
188+ 0.5 ,
189189 0.0
190190 );
191191
@@ -201,15 +201,17 @@ int main(int argc, char ** argv)
201201
202202 console.luaStore (&luaStore);
203203
204- console.runFile (" test .lua" );
204+ console.runFile (" tests/circles .lua" );
205205 std::string status = console.luaStatus ();
206206 if (status != " LUA_OK" ) { WARN (status) >> log; }
207207
208208
209- physics.stabaliseObjectParameters (&manager);
209+ // physics.stabaliseObjectParameters(&manager);
210210
211211 bool refreshObjectShaders = true ;
212212
213+ bool paused = true ;
214+
213215 while (window.isOpen ())
214216 {
215217
@@ -239,40 +241,40 @@ int main(int argc, char ** argv)
239241 workers.joinThread ();
240242 INFO (" Thread: " +std::to_string (workers.size ())) >> log;
241243 }
242- if (event.type == sf::Event::KeyPressed && event.key .code == sf::Keyboard::Space)
243- {
244- posX = 0.0 ; posY = 0.0 ;
245- }
246244
247245 if (event.type == sf::Event::MouseWheelScrolled)
248246 {
249247 double z = event.mouseWheelScroll .delta ;
250248 camera.incrementZoom (z);
251249 }
250+ if (event.type == sf::Event::KeyPressed && event.key .code == sf::Keyboard::Space)
251+ {
252+ paused = !paused;
253+ }
252254 }
253255
254256 if ( sf::Keyboard::isKeyPressed (sf::Keyboard::W))
255257 {
256258
257- posY += MAX_SPEED ;
259+ posY += MAX_SPEED /camera. getZoomLevel () ;
258260
259261 }
260262 if (sf::Keyboard::isKeyPressed (sf::Keyboard::S))
261263 {
262264
263- posY -= MAX_SPEED ;
265+ posY -= MAX_SPEED /camera. getZoomLevel () ;
264266
265267 }
266268 if (sf::Keyboard::isKeyPressed (sf::Keyboard::A))
267269 {
268270
269- posX -= MAX_SPEED ;
271+ posX -= MAX_SPEED /camera. getZoomLevel () ;
270272
271273 }
272274 if (sf::Keyboard::isKeyPressed (sf::Keyboard::D))
273275 {
274276
275- posX += MAX_SPEED ;
277+ posX += MAX_SPEED /camera. getZoomLevel () ;
276278
277279 }
278280
@@ -287,17 +289,25 @@ int main(int argc, char ** argv)
287289
288290 collisions.centreOn (world.get ()->getMapCenter ());
289291
290- if (workers. size () > 1 )
292+ if (!paused )
291293 {
292- collisions.update (&manager, world.get (),&workers);
293- }
294- else
295- {
296- collisions.update (&manager, world.get ());
294+ for (unsigned k = 0 ; k < subSamples; k++)
295+ {
296+ if (workers.size () > 1 )
297+ {
298+ collisions.update (&manager, world.get (),&workers);
299+ }
300+ else
301+ {
302+ collisions.update (&manager, world.get ());
303+ }
304+
305+ physics.gravityForce (&manager,9.81 ,0.0 ,-1.0 );
306+
307+ physics.update (&manager);
308+ }
297309 }
298310
299- physics.update (&manager);
300-
301311 tp1 = high_resolution_clock::now ();
302312
303313 tr0 = high_resolution_clock::now ();
@@ -309,7 +319,24 @@ int main(int argc, char ** argv)
309319 rendering.update (&manager, &shaderPool, refreshObjectShaders);
310320 refreshObjectShaders = false ;
311321
312- rendering.draw (&shaderPool);
322+ rendering.draw (&shaderPool);
323+
324+ auto objects = manager.getObjects ();
325+
326+ auto citer = objects.cbegin ();
327+ auto cend = objects.cend ();
328+
329+ while (citer != cend)
330+ {
331+ if (manager.hasComponent <cCollideable>(citer->first ))
332+ {
333+
334+ cCollideable & c = manager.getComponent <cCollideable>(citer->first );
335+
336+ c.mesh .drawDebug (camera.getVP ());
337+ }
338+ citer++;
339+ }
313340
314341 tr1 = high_resolution_clock::now ();
315342
0 commit comments