📄 visualsensor.cc
字号:
if ( stadium.player[ j ] != &player && stadium.player[ j ]->alive != DISABLE && stadium.player [ j ]->obj_ver <= player.version ) { VisualSensor_v1::player_low_data_t data; data.set ( *( stadium.player [ j ] ), player ); if ( data.M_range != VisualSensor_v1::OUT ) M_players.push_back ( data ); } } int line_count = 0; int max_line_count; int min_line_count; if ( fabs ( player.pos.x ) < PITCH_LENGTH/2 && fabs ( player.pos.y ) < PITCH_WIDTH/2 ) min_line_count = max_line_count = 1; else { max_line_count = 2; min_line_count = 0; } if ( line_count < max_line_count && stadium.field.line_l.obj_ver <= player.version ) { VisualSensor_v1::line_low_data_t data; data.set ( stadium.field.line_l, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if ( line_count < max_line_count && stadium.field.line_r.obj_ver <= player.version ) { VisualSensor_v1::line_low_data_t data; data.set ( stadium.field.line_r, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if ( line_count < max_line_count && stadium.field.line_t.obj_ver <= player.version ) { VisualSensor_v1::line_low_data_t data; data.set ( stadium.field.line_t, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if ( line_count < max_line_count && stadium.field.line_b.obj_ver <= player.version ) { VisualSensor_v1::line_low_data_t data; data.set ( stadium.field.line_b, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if( line_count < min_line_count ) std::cerr << __FILE__ << ": " << __LINE__ << ": Error rendering visual: not enough lines\n" << "Player = " << player << std::endl;}void VisualSensor_v1::high_data_t::set ( const Stadium& stadium, const Player& player ){ M_time = stadium.time; for( int j = 0 ; j < stadium.votable.n ; j++ ) { switch ( stadium.votable.object [ j ]->getObjectType () ) { case MPObject::OT_GOAL: if ( stadium.votable.object [ j ]->obj_ver <= player.version ) { VisualSensor_v1::goal_high_data_t data; data.set ( *( stadium.votable.object [ j ] ), player ); if ( data.M_range != VisualSensor_v1::OUT ) M_goals.push_back ( data ); } break; case MPObject::OT_FLAG: if ( stadium.votable.object [ j ]->obj_ver <= player.version ) { VisualSensor_v1::flag_high_data_t data; data.set ( *( stadium.votable.object [ j ] ), player ); if ( data.M_range != VisualSensor_v1::OUT ) M_flags.push_back ( data ); } break; default: break; } } for( int j = 0 ; j < stadium.motable.n ; j++ ) { switch ( stadium.motable.object [ j ]->getObjectType () ) { case MPObject::OT_BALL: if ( stadium.motable.object [ j ]->obj_ver <= player.version ) { VisualSensor_v1::ball_high_data_t data; data.set ( *( stadium.motable.object [ j ] ), player ); if ( data.M_range != VisualSensor_v1::OUT ) M_balls.push_back ( data ); } break; default: break; } } for ( int j = 0 ; j < MAX_PLAYER * 2; j++) { if ( stadium.player[ j ] != &player && stadium.player[ j ]->alive != DISABLE && stadium.player [ j ]->obj_ver <= player.version ) { VisualSensor_v1::player_high_data_t data; data.set ( *( stadium.player [ j ] ), player ); if ( data.M_range != VisualSensor_v1::OUT ) M_players.push_back ( data ); } } int line_count = 0; int max_line_count; int min_line_count; if ( fabs ( player.pos.x ) < PITCH_LENGTH/2 && fabs ( player.pos.y ) < PITCH_WIDTH/2 ) min_line_count = max_line_count = 1; else { max_line_count = 2; min_line_count = 0; } if ( line_count < max_line_count && stadium.field.line_l.obj_ver <= player.version ) { VisualSensor_v1::line_high_data_t data; data.set ( stadium.field.line_l, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if ( line_count < max_line_count && stadium.field.line_r.obj_ver <= player.version ) { VisualSensor_v1::line_high_data_t data; data.set ( stadium.field.line_r, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if ( line_count < max_line_count && stadium.field.line_t.obj_ver <= player.version ) { VisualSensor_v1::line_high_data_t data; data.set ( stadium.field.line_t, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if ( line_count < max_line_count && stadium.field.line_b.obj_ver <= player.version ) { VisualSensor_v1::line_high_data_t data; data.set ( stadium.field.line_b, player ); if ( data.M_range != VisualSensor_v1::OUT ) { M_lines.push_back ( data ); line_count++; } } if( line_count < min_line_count ) std::cerr << __FILE__ << ": " << __LINE__ << ": Error rendering visual: not enough lines\n" << "Player = " << player << std::endl; M_lines.sort();}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::ball_low_close_data_t& data ){ return o << "(" << O_TYPE_BALL_NAME << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::ball_low_normal_data_t& data ){ return o << "(" << BALL_NAME << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::ball_low_data_t& data ){ switch ( data.M_range ) { case VisualSensor_v1::CLOSE: return toStr ( o, data.M_close_data ); case VisualSensor_v1::NORMAL: return toStr ( o, data.M_normal_data ); default: return o; }}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::player_low_close_data_t& data ){ return o << "(" << O_TYPE_PLAYER_NAME << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::player_low_normal_data_t& data ){ return o << "(" << data.M_name << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::player_low_ufar_data_t& data ){ return o << "(" << data.M_name << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::player_low_tfar_data_t& data ){ return o << "(" << data.M_name << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::player_low_data_t& data ){ switch ( data.M_range ) { case VisualSensor_v1::CLOSE: return toStr ( o, data.M_close_data ); case VisualSensor_v1::NORMAL: return toStr ( o, data.M_normal_data ); case VisualSensor_v1::UFAR: return toStr ( o, data.M_ufar_data ); case VisualSensor_v1::TFAR: return toStr ( o, data.M_tfar_data ); default: return o; }}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::flag_low_close_data_t& data ){ return o << "(" << O_TYPE_FLAG_NAME << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::flag_low_normal_data_t& data ){ return o << "(" << data.M_name << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::flag_low_data_t& data ){ switch ( data.M_range ) { case VisualSensor_v1::CLOSE: return toStr ( o, data.M_close_data ); case VisualSensor_v1::NORMAL: return toStr ( o, data.M_normal_data ); default: return o; }}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::goal_low_close_data_t& data ){ return o << "(" << O_TYPE_GOAL_NAME << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::goal_low_normal_data_t& data ){ return o << "(" << data.M_name << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::goal_low_data_t& data ){ switch ( data.M_range ) { case VisualSensor_v1::CLOSE: return toStr ( o, data.M_close_data ); case VisualSensor_v1::NORMAL: return toStr ( o, data.M_normal_data ); default: return o; }}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::line_low_normal_data_t& data ){ return o << "(" << data.M_name << " " << data.M_direction << ")";}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::line_low_data_t& data ){ switch ( data.M_range ) { case VisualSensor_v1::NORMAL: return toStr ( o, data.M_normal_data ); default: return o; }}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::ball_high_close_data_t& data ){ return o << "(" << O_TYPE_BALL_NAME << " " << data.M_distance << " " << data.M_direction << ")"; }std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::ball_high_normal_data_t& data ){ return o << "(" << BALL_NAME << " " << data.M_distance << " " << data.M_direction << " " << data.M_vel.M_dist_chg << " " << data.M_vel.M_dir_chg << ")"; }std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::ball_high_ufar_data_t& data ){ return o << "(" << BALL_NAME << " " << data.M_distance << " " << data.M_direction << ")"; }std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::ball_high_data_t& data ){ switch ( data.M_range ) { case VisualSensor_v1::CLOSE: return toStr ( o, data.M_close_data ); case VisualSensor_v1::NORMAL: return toStr ( o, data.M_normal_data ); case VisualSensor_v1::UFAR: return toStr ( o, data.M_ufar_data ); default: return o; };}std::ostream& toStr ( std::ostream& o, const VisualSensor_v1::player_high_close_data_t& data ){ return o << "(" << O_TYPE_PLAYER_NAME << " " << data.M_distance << " " << data.M_direction << ")"; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -