void dgWorld::StepDynamics (dgFloat32 timestep) { //SerializeToFile ("xxx.bin"); dgAssert (m_inUpdate == 0); dgAssert (GetThreadCount() >= 1); m_inUpdate ++; DG_TRACKTIME(__FUNCTION__); UpdateSkeletons(); UpdateBroadphase(timestep); UpdateDynamics (timestep); if (m_listeners.GetCount()) { for (dgListenerList::dgListNode* node = m_listeners.GetFirst(); node; node = node->GetNext()) { dgListener& listener = node->GetInfo(); if (listener.m_onPostUpdate) { listener.m_onPostUpdate(this, listener.m_userData, timestep); } } } m_inUpdate --; }
void dgWorld::StepDynamics (dgFloat32 timestep) { //static int xxx ; //xxx ++; //dgTrace (("%d\n", xxx)); //if (xxx >= 2000) //xxx *=1; //xxxxx(); dgAssert (m_inUpdate == 0); //SerializeToFile ("xxx.bin"); m_inUpdate ++; dgAssert (GetThreadCount() >= 1); m_broadPhase->UpdateContacts (timestep); UpdateDynamics (timestep); if (m_postListener.GetCount()) { for (dgListenerList::dgListNode* node = m_postListener.GetFirst(); node; node = node->GetNext()) { dgListener& listener = node->GetInfo(); listener.m_onListenerUpdate (this, listener.m_userData, timestep); } } m_inUpdate --; }
void Window::OpenWindow() { glEnable(GL_DEPTH_TEST); while (!glfwWindowShouldClose(window_)) { double time = glfwGetTime(); double dt = time - prev_time_; prev_time_ = time; UpdateDynamics(dt); glClearColor(0.0f, 0.7f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); DrawScene(); glfwSwapBuffers(window_); glfwPollEvents(); } glfwTerminate(); }
void dgWorld::StepDynamics (dgFloat32 timestep) { //static int xxx ; //xxx ++; //dgTrace (("%d\n", xxx)); //if (xxx >= 2000) //xxx *=1; //xxxxx(); dgAssert (m_inUpdate == 0); //SerializeToFile ("xxx.bin"); dgThreadHive::ClearTimers(); memset (m_perfomanceCounters, 0, sizeof (m_perfomanceCounters)); dgUnsigned32 ticks = m_getPerformanceCount(); m_inUpdate ++; dgAssert (GetThreadCount() >= 1); m_broadPhase->UpdateContacts (timestep); UpdateDynamics (timestep); if (m_postListener.GetCount()) { dgUnsigned32 ticks = m_getPerformanceCount(); for (dgListenerList::dgListNode* node = m_postListener.GetFirst(); node; node = node->GetNext()) { dgListener& listener = node->GetInfo(); listener.m_onListenerUpdate (this, listener.m_userData, timestep); } m_perfomanceCounters[m_postUpdataListerTicks] = m_getPerformanceCount() - ticks; } m_inUpdate --; m_perfomanceCounters[m_worldTicks] = m_getPerformanceCount() - ticks; }