you can see if I did anything wrong, but explaining what the function does will probably be easier,
I'm not used to matrices with another row/column other than their orientation, explanation on how inverse() and transformPoint(), and getTransform() handle the position(and maybe they handle scale too, instead of just scaling the orientation?) coordinates would help alot
bool Window::FishyCollision(MainFish* Fishy, EnemyFish* Fish){
if (Fish->_Scale > Fishy->_Scale){
// code here works
}else{
// invert the transform, sp that when applied, world coordinates of EnemyFish
// become relative coordinates to MainFish
sf::Transform transform = Fishy->_Sprite.getTransform().getInverse();
// set up corners of the EnemyFish, hard-coded numbers are positions in the image
// where the bounding box is
sf::Vector2<float> Min = transform.transformPoint(sf::Vector2<float>(12,6)*Fish->_Scale+Fish->_MinCornerPos);
sf::Vector2<float> Max = transform.transformPoint(sf::Vector2<float>(240,94)*Fish->_Scale+Fish->_MinCornerPos);
sf::Vector2<float> C1 = transform.transformPoint(sf::Vector2<float>(12,94)*Fish->_Scale+Fish->_MinCornerPos);
sf::Vector2<float> C2 = transform.transformPoint(sf::Vector2<float>(240,6)*Fish->_Scale+Fish->_MinCornerPos);
// set up corners of the Main Fish
sf::Vector2<float> FishyMin = sf::Vector2<float>(12,6)*Fishy->_Scale;
sf::Vector2<float> FishyMax = sf::Vector2<float>(240,94)*Fishy->_Scale;
/* check corners against each other, in a simple smaller-lesser than check, this part was omitted
at this point, FishyMin, and FishyMax are as expected, but the corners of EnemyFish are
definitely way off, so maybe I did something wrong in applying the ransformation,
there is too much unexplained on how the matrix handles it's position coordinates,
so guessing what I did wrong is near impossible, I gave it expected numbers, but got weird
effects, MainFish corner coordinates are at origin of the upper left corner, EnemyFish corner
coordinates are at origin 0,0 being global
*/
}
return false;
}