After debugging very long, and letting all the colision rectangles show up i noticed i was moving my rectangle by (int)0.96 since multiplied normalized X vector of 0.16 with 6(1/5 of my tiles). So it never bumped into the wall and figured the next straight path should be above the wall.
Now i am just multiplying my normals with 1/2 of my tile size, and i should not foresee any problems with what i currently have, it does ocasionally go slightly across a non walkable tile but it's not very noticable. But what if i have really long straight walls so my normalized vector times the full tile size would be below 0. I can 't simply increase the normal since it's used for direction.
I should probably tell how i am doing my smoothing.
I get the path list from a regular A*.
I then "for" loop through it and see what the first path is i can not reach straight.
I check the distance and direction of both tiles and let a test rectangle test the path until it reaches the destination.
testrec.X += (int)(direction.X * velocity);
testrec.Y += (int)(direction.Y * velocity);
// a rectangle only excepts ints, hence the cast so if the direction*velocity of testing rectangle is not above 1 it won't move that direction and thinks the path is ok. I really like this velocity as low as possible so my paths are not intersecting.
I put the tile [i - 1(since i is not reachable)] as a vector in a new list.
Repeat until the list is done.