The different modes just describe what coordinate system the transformation happens in. Translations are probably easiest to understand - if you translate 2.0f Vector3::FORWARD
using:
- TS_LOCAL: you move
2.0f * node->GetWorldDirection()
in world space.
- TS_PARENT: you move
2.0f * node->GetParent()->GetWorldDirection()
in world space. This one is equivalent to node->SetPosition(node->GetPosition() + 2.0f * Vector3::FORWARD)
- TS_WORLD: you move
2.0f * Vector3::FORWARD
in world space.
Regular functions with Node mostly work in the parent space (so the world Forward, Right, and Up vectors from the parent node at it’s world position define the z, x, and y axes and the 0,0,0 point that defines the coordinate system) for functions like GetPosition(). GetWorldPosition(), of course, returns the position in the world space. GetLocalPosition() would be meaningless, as it would just return Vector3::ZERO, so it does not exist.
Scaling may make things a bit more complicated, but hopefully that gives you a good place to start.