#ifndef _MIND_H #define _MIND_H #include #include #include #include #include #include #include #include #include #include #include #include namespace smo { class Mind : public sscl::PuppetApplication { public: Mind(void); ~Mind(void) = default; mrntt::MrnttViralNonPostingInvokerT initializeCReq(); mrntt::MrnttViralNonPostingInvokerT finalizeCReq(); // ComponentThread access methods std::shared_ptr getComponentThread(sscl::ThreadId id) const; std::shared_ptr getComponentThread( const std::string& name) const; // Get all this Mind's component threads. std::vector> getMindThreads() const; public: director::Director director; simulator::Simulator canvas; MindComponent subconscious; body::Body body; MindComponent world; private: friend class body::Body; bool bodyComponentInitialized = false; }; namespace mind { // Global Mind instance will be defined in marionette.cpp extern std::shared_ptr globalMind; } // namespace mind } // namespace smo #endif