// -*-c++-*-

/*!
  \file predict_ball_object.h
  \brief predict ball object class Header File
*/

/*
 *Copyright:

 Copyright (C) Hidehisa AKIYAMA, Hiroki SHIMORA

 This code is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 *EndCopyright:
 */

/////////////////////////////////////////////////////////////////////

#ifndef RCSC_PLAYER_PREDICT_BALL_OBJECT_H
#define RCSC_PLAYER_PREDICT_BALL_OBJECT_H

#include <rcsc/geom/vector_2d.h>

/*!
  \class PredictBallObject
  \brief predicted ball object state
 */
class PredictBallObject {
private:
    rcsc::Vector2D M_pos;
    rcsc::Vector2D M_vel;

public:
    PredictBallObject()
        : M_pos( 0.0, 0.0 ),
          M_vel( 0.0, 0.0 )
      { }

    PredictBallObject( const rcsc::Vector2D & pos )
        : M_pos( pos ),
          M_vel( 0.0, 0.0 )
      { }

    PredictBallObject( const rcsc::Vector2D & pos,
                       const rcsc::Vector2D & vel )
        : M_pos( pos ),
          M_vel( vel )
      { }

    PredictBallObject & assign( const rcsc::Vector2D & pos,
                                const rcsc::Vector2D & vel )
      {
          M_pos = pos;
          M_vel = vel;
          return *this;
      }

    PredictBallObject & setPos( const rcsc::Vector2D & pos )
      {
          M_pos = pos;
          return *this;
      }

    PredictBallObject & setVel( const rcsc::Vector2D & vel )
      {
          M_vel = vel;
          return *this;
      }

    const rcsc::Vector2D & pos() const
      {
          return M_pos;
      }

    const rcsc::Vector2D & vel() const
      {
          return M_vel;
      }
};

#endif