A "Syntax Error" is described as "a character or string incorrectly placed in a command or instruction that causes a failure in execution."
More specifically, look at this right here:
if ( directHit) ; ^
You can't have a semi-colon between an if statements parameter, and the code block. The code block is the code that runs when the if statement proves true.
thanks dude. cant believe i missed that.