00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00072 #ifndef PLAYEROBJECT_H
00073 #define PLAYEROBJECT_H
00074
00075
00076 #include "MobileObject.h"
00077
00078
00079 RS_BEGIN_NAMESPACE
00080
00081
00095 class PlayerObject : public MobileObject {
00096 public:
00098 PlayerObject(const PointUE& def_point = PointUE(),
00099 const TimeUnknown& def_time = TimeUnknown(),
00100 const VectorUE& def_speed = VectorUE(),
00101 const TimeUnknown& def_speed_time = TimeUnknown(),
00102 const AngleDegUE& def_body_dir = AngleDegUE(),
00103 const AngleDegUE& def_neck_dir = AngleDegUE(),
00104 const AngleDegUE& def_point_dir = AngleDegUE(),
00105 const bool def_tackling = false,
00106 const bool def_goalie = false,
00107 const Team def_team = T_UNKNOWN,
00108 const Side def_side = S_UNKNOWN,
00109 const TimeUnknown& def_team_time = TimeUnknown(),
00110 const UIntUnknown def_u_number = UIntUnknown(),
00111 const TimeUnknown& def_unum_time = TimeUnknown(),
00112 const VectorUE& def_acceleration = VectorUE());
00113
00115 PlayerObject(const PlayerObject& obj);
00116
00118 PlayerObject& operator= (const PlayerObject& obj);
00119
00121 void setBodyDirection(const AngleDegUE& ang);
00122
00124 AngleDegUE getBodyDirection() const;
00125
00128 AngleDegUE getRelativeBodyDirectionToPoint(const PointUE& point) const;
00129
00132 AngleDegUE getRelativeBodyDirectionTo(const AngleDegUE& dir) const;
00133
00137 VectorUE getRelativeVectorTo(const PointUE& point) const;
00138
00143 FuzzyBool isPointInFrontOf(const PointUE& point) const;
00144
00149 FuzzyBool isPointBehind(const PointUE& point) const;
00150
00156 FuzzyBool isRelativePointBehind(const PointUE& point) const;
00157
00159 void setNeckDirection(const AngleDegUE& ang);
00160
00162 AngleDegUE getNeckDirection() const;
00163
00166 AngleDegUE getRelativeNeckDirection() const;
00167
00170 AngleDegUE getMinNeckDirection() const;
00171
00174 AngleDegUE getMaxNeckDirection() const;
00175
00178 AngleDegUE getRelativeNeckDirectionToPoint(const PointUE& point) const;
00179
00182 AngleDegUE getRelativeNeckDirectionToDirection(const AngleDegUE& dir) const;
00183
00185 void setPointDirection(const AngleDegUE& ang);
00186
00188 AngleDegUE getPointDirection() const;
00189
00191 void setTackling(const bool tackle);
00192
00194 bool getTackling() const;
00195
00198 void setTeam(const Team tm);
00199
00201 void setTeam(const Side our_side);
00202
00205 Team getTeam() const;
00206
00208 void setGoalie(const bool goalie_);
00209
00211 bool isGoalie() const;
00212
00215 void setSide(const Side new_side);
00216
00219 Side getSide() const;
00220
00222 void setTeamObservationTime(const TimeUnknown& def_team_time);
00223
00225 TimeUnknown getTeamObservationTime() const;
00226
00228 void setUniformNumber(const UIntUnknown u_num);
00229
00231 UIntUnknown getUniformNumber() const;
00232
00234 void setUniformNumberObservationTime(const TimeUnknown& def_unum_time);
00235
00237 TimeUnknown getUniformNumberObservationTime() const;
00238
00239 protected:
00241 AngleDegUE bodyDir;
00242
00244 AngleDegUE neckDir;
00245
00247 AngleDegUE pointDir;
00248
00250 bool tackling;
00251
00253 Team team;
00254
00256 bool goalie;
00257
00259 Side side;
00260
00262 TimeUnknown teamObservationTime;
00263
00265 UIntUnknown uNumber;
00266
00268 TimeUnknown uNumberObservationTime;
00269 };
00270
00271
00272 RS_END_NAMESPACE
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285 #ifdef RS_USE_INLINE
00286 # include "PlayerObject.icc"
00287 #endif
00288
00289
00290 #endif // !PLAYEROBJECT_H