agent_t::agent_t( context_t ctx ) : m_current_state_ptr( &st_default ) , m_was_defined( false ) , m_state_listener_controller( new impl::state_listener_controller_t ) , m_handler_finder{ // Actual handler finder is dependent on msg_tracing status. impl::internal_env_iface_t{ ctx.env() }.is_msg_tracing_enabled() ? &agent_t::handler_finder_msg_tracing_enabled : &agent_t::handler_finder_msg_tracing_disabled } , m_subscriptions( ctx.options().query_subscription_storage_factory()( self_ptr() ) ) , m_message_limits( message_limit::impl::info_storage_t::create_if_necessary( ctx.options().giveout_message_limits() ) ) , m_env( ctx.env() ) , m_event_queue( nullptr ) , m_direct_mbox( impl::internal_env_iface_t{ ctx.env() }.create_mpsc_mbox( self_ptr(), m_message_limits.get() ) ) // It is necessary to enable agent subscription in the // constructor of derived class. , m_working_thread_id( so_5::query_current_thread_id() ) , m_agent_coop( 0 ) , m_priority( ctx.options().query_priority() ) { }
//------------------------------------------------------------------------------ Example::Example(void) : glfw_error_handler(glfwSetErrorCallback(HandleGLFWError)) , glfw_init_ok(glfwInit()) , glfw_window(InitWindow()) , gl() , palette(MakePalette()) , program(MakeProgram()) , view_matrix(program, "ViewMatrix") , screen( oglplus::List("Position").Get(), oglplus::shapes::Screen(), program ), screen_width(800) , screen_height(600) , view_aspect(4.0/3.0) , view_divs(4) , view_tile(0) , view_tile_index(view_divs*view_divs) , mouse_left_down(false) , mouse_middle_down(false) , frame_no(0) { oglplus::UniformSampler(program, "Palette").Set(0); for(unsigned i=0; i!=view_tile_index.size(); ++i) view_tile_index[i] = i; CenterView(); UpdateView(); screen.Use(); self_ptr(this); gl.Enable(oglplus::Capability::ScissorTest); }
Example& Example::self(void) { return *self_ptr(nullptr); }