@Override
	public synchronized void update(Graphics g) {
		if (!active)
			return;
		
		if (isShooting) {
			//low hope that owner's dpos didn't change this update
			dPos = dir.multiply(shootSpeed).add(owner.dPos);						
			
			doPhysics();

			//one step further to be on solid with rope
			//pos = pos.add(dPos.normalize());

			//next step wuold be a collission?
			
			len = (int) (owner.pos.subtract(pos).abs());
			if (world.background.isSolid(pos)) {
				isShooting = false;	
				System.out.println("rope found fixpoint");
			} else {		
							
				if (len > maxRopeLen) {
					isShooting = false;

					killMe = true;
					active = false;
				}
			}
		} else
			dPos.set(0.0f, 0.0f);
		
		
		//draw it!
		
		//System.out.println("Time draw rope:"+System.currentTimeMillis());
		
		//low: maybe put this in extern paint function
		g.setColor(Color.MAGENTA);
		
		//draw it thicker
		g.drawLine((int)owner.pos.x, (int)owner.pos.y, (int)pos.x, (int)pos.y);
		g.drawLine((int)owner.pos.x-1, (int)owner.pos.y-1, (int)pos.x-1, (int)pos.y-1);
		g.drawLine((int)owner.pos.x+1, (int)owner.pos.y+1, (int)pos.x+1, (int)pos.y+1);
		
	}