15using namespace std::chrono_literals;
 
   40            ins = 
pInstance.load(std::memory_order_relaxed);
 
   43                pInstance.store(ins, std::memory_order_release);
 
 
  148            bool has_frame = scn->getFrameNumber() < 
mTotalFrame;
 
  151                mCond.wait_for(lock, 500ms);
 
 
  211        scn->setFrameNumber(0);
 
 
  239        auto model = node.nodeDataModel();
 
  242        if (widget != 
nullptr)
 
 
  253        class SyncNodeAct : 
public Action 
  256            void process(
Node* node)
 override {
 
  262        scn->traverseForwardWithAutoSync<SyncNodeAct>(node);
 
 
  294        return scn->getFrameNumber();
 
 
@ Info
Information to user.
 
static void sendMessage(MessageType type, const std::string &text)
Add a new message to log.
 
void updateGraphicsContext()
 
static std::atomic< PSimulationThread * > pInstance
 
void reset(int num)
Reset the simulation.
 
void startUpdatingGraphicsContext()
 
std::atomic< bool > mPaused
 
void simulationFinished()
 
void oneFrameFinished(int frame)
 
std::shared_ptr< Node > mActiveNode
 
std::atomic< bool > mUpdatingGraphicsContext
 
std::condition_variable_any mCond
 
static PSimulationThread * instance()
 
void syncNode(std::shared_ptr< Node > node)
 
void resetQtNode(Qt::QtNode &node)
 
std::chrono::milliseconds mTimeOut
 
std::atomic< bool > mRunning
 
void proceed(int num)
Continue the simulation from the current frame.
 
void resetNode(std::shared_ptr< Node > node)
 
static std::mutex mInstanceMutex
 
std::atomic< int > mTotalFrame
 
void stopUpdatingGraphicsContext()
 
void setTotalFrames(int num)
 
std::shared_ptr< SceneGraph > createNewScene()
Create a new SceneGraph.
 
static SceneGraphFactory * instance()
 
void pushScene(std::shared_ptr< SceneGraph > scn)
 
std::shared_ptr< SceneGraph > active()
 
This is an implementation of AdditiveCCD based on peridyno.
 
QWaitCondition m_wait_condition