What I meant by order of operations is that, for example, I can't translate1, rotate, translate2. The first translate will just never happen.
And I realize the API is called 'move' and 'setPosition', but in my head it's still just a glorified translate.
No it's not. It is exactly what it means: the position of the entity. Not a translation that could occur anywhere in a transform chain, and would depend on what has been done before.
And this is exactly what the component approach is: you set the final position, orientation, scale of the entity. You don't combine custom transformations to produce the final one. It is a totally different approach -- even though it internally uses the same low-level class.
What's important with this approach is that you can
get the transformation components back.
Unless you mean by passing a transform in directly to RenderTarget::draw?
This is what I mean, yes.
That did work, it just feels clunky to me. Not the draw aspect, I like that API, just having to do that instead of dealing directly with the sprite feels clunky.
Dealing with a custom transform directly in the high-level entities (such as sf::Sprite) would have major drawbacks, number one being the inability to get the position/rotation/scale as I said above.
If I missed something, please let me know, but otherwise I doubt I'll be using the Transformable API. For me it isn't about simple needs as much as I understand the use of the Transform stuff better than the Transformable stuff. The limitations of it are a bit wacky to me.
So I think SFML did its job wonderfully: you were able to find a set of classes/functions that exactly fit your needs