00001 #include "Ball.h"
00002 #include "Circle.h"
00003
00004 Ball::Ball(float xpos, float ypos, float w, float h, Color *color, float maxSpeed):GameObject(xpos,ypos,w,h,color)
00005 {
00006 flying=false;
00007 Ball::maxSpeed=maxSpeed;
00008
00009 centerPos = new vec3(xpos+w/2,ypos+h/2);
00010 velos= new vec3();
00011 }
00012 vec3 * Ball::getVelosity()
00013 {
00014 return velos;
00015 }
00016 void Ball::setVelosity(vec3 * newVelos)
00017 {
00018 delete velos;
00019 velos=new vec3(*newVelos);
00020 float speed=velos->length();
00021 if(speed>maxSpeed)
00022 {
00023 *velos/=speed;
00024 *velos*=maxSpeed;
00025 }
00026 }
00027 void Ball::updateVelosity(vec3 * newVelos)
00028 {
00029 *velos+=*newVelos;
00030 float speed=velos->length();
00031 if(speed>maxSpeed)
00032 {
00033 *velos/=speed;
00034 *velos*=maxSpeed;
00035 }
00036 }
00037 bool Ball::isFlying()
00038 {
00039 return flying;
00040 }
00041 void Ball::setFlying(bool arg)
00042 {
00043 flying=arg;
00044 }
00045 vec3* Ball::getCenterPos()
00046 {
00047 return centerPos;
00048 }
00049 void Ball::setCenterPos(float x, float y)
00050 {
00051 delete centerPos;
00052 centerPos= new vec3(x,y);
00053 setXpos(x-getWidth()/2);
00054 setYpos(y-getHeight()/2);
00055 }
00056 void Ball::move(vec3 * velos, float fps)
00057 {
00058 *centerPos+=*velos*30/fps;
00059 setXpos(getXpos()+velos->v[0]*30/fps);
00060 setYpos(getYpos()+velos->v[1]*30/fps);
00061 }