private void shootAtAngle(int m, int n, float dx, float dy, float angle) {
		float x = (float) boundary.x;
		float y = (float) boundary.y;
		float w = (float) boundary.width;
		float h = (float) boundary.height;
		if (angle > 0 && angle < 0.5 * Math.PI) {
			for (int i = 1; i <= m; i++)
				addPhotonAtAngle(x + dx * i, y, angle);
			for (int i = 0; i <= n; i++)
				addPhotonAtAngle(x, y + dy * i, angle);
		} else if (angle < 0 && angle > -0.5 * Math.PI) {
			for (int i = 1; i <= m; i++)
				addPhotonAtAngle(x + dx * i, y + h, angle);
			for (int i = 0; i <= n; i++)
				addPhotonAtAngle(x, y + h - dy * i, angle);
		} else if (angle < Math.PI && angle > 0.5 * Math.PI) {
			for (int i = 0; i <= m; i++)
				addPhotonAtAngle(x + w - dx * i, y, angle);
			for (int i = 1; i <= n; i++)
				addPhotonAtAngle(x + w, y + dy * i, angle);
		} else if (angle > -Math.PI && angle < -0.5 * Math.PI) {
			for (int i = 0; i <= m; i++)
				addPhotonAtAngle(x + w - dx * i, y + h, angle);
			for (int i = 1; i <= n; i++)
				addPhotonAtAngle(x + w, y + h - dy * i, angle);
		}
	}