2 things, your rotatePoint functions is wrong, and your not even setting its return to a variable, so its being called, but not doing anything.
try
scaler = 2
RotatedPoint.x = Point.x + (cos(Angle) * scaler;
RotatedPoint.y = Point.y + (-sin(Angle)* scaler;
//and then later in the update function
m_Barrel = Collison.RotatePoint(m_Barrel, theta);
This may take some adjusting, scaler is how far from the origin of the sprite, the barrel end is, you'll have to adjust this yourself for what works in your game, the rest SHOULD work, but its kinda late and i might not be thinking straight, let me know what your results are