Okay first off, I was mistaken. There is not an issue with the HitNormal when it is fired at a flat surface, at least not initially.
Code:
CollisionComponent.SetTranslation( vect(16,0,0) );
The above line of code is responsible for skewing subsequent HitNormal data. Setting the translation back to vect(0,0,0) (the original value,) or even vect(-16,0,0) does not seem to alleviate the issue either. Thankfully, commenting out this line of code seems to have zero effect on collision detection and only positive effects for what I set out to do.
So my issue is solved but this begs a new question, what exactly does this function do? I'm assuming it gets called to shift the collision cylinder to the center of the goo puddle but why would that turn a HitNormal of vect(0,0,-1) into vect(-1,0,0)? And why would setting the translation back to its prior value not fix it?
Bookmarks