Pin or not the logical order of objects updates determines the reaction of SetPosition.
So let's break down what is happening.
scml.setPosition( ply.x, ply.y )
ply.setPosition(newx, newy)
so what happens here?
the first object updates the position to the current player position. Then the player is updated. This leaves the scml(or any other object) 1 tick update behind. Is this a bug? no it's an architecture design issue. The solution.
ply.setPosition(newx, newy)
scml.setPosition( ply.x, ply.y )
ok ok, but of course there is a problem. I'm aware of it too. The player is likely to be using a behaviour like Platformer. Which means we can't actually control the order of position. And as a >>>hunch<<< it goes like this.
EventSheet
Behaviours
And of course we can't actually control that order So instead try
wait0
scml.setPosition( ply.x, ply.y )
So is it a bug or is the result of design architecture. How can we create a fundamental change mixing plugins and ES code? The best we could get is the toggle ES/Behaviours order. But that won't fix the problems for PIN. How do we order which behaviours go last in the order structure? This is kinda the thing that just has to be. We get a massive awesome tool, but we need to accept the design architecture.
If Ashley decides to put the actions of PIN after all other updates. Then that breaks up the speed flow. As the object updates, other objects update, then goes back to PIN objects. This would reduce performance as this increases object loop update size.
Your noticing this on the SCML. I've seen it on a lot more. It really depends on some other form of object ordering. For now try the Wait 0 and see if that fixes up the problem. However it's still not an SCML issue.
And just assist you a topic made two years ago.