Sorry about the long post and about my bad English, I'm just sharing my experience so far:
First of all, thanks for the detailed reply R0J0hound what you did for fun, was SUPER inspiring and made me try all day trying to replicate it (with many fails so I kind of gave up) mainly because of the Function didn't work the way I tried and didn't understand how to replicate this action, creating a Function was easy as a Click on the events but using it as the "Sprite" like you did "Function.call" or trying something else was too much for me to follow.
I like how you managed the all code, organized it in groups (this is why I LOVE comments and groups so much) you really did a nice job!
Before that I followed a lot of help from AllanR which not only SAVED THE DAY! but also was very creative and I'm trying to combine the both ways of you guys because at the end they worked great!
The status right now for me is that my project file which became kind of big and messy, is not using a specific code to make a working UNDO/REDO and the other features from my other post which is the main idea so everything will work together.
I'm trying to learn and understand but I must admit, my brain is not getting much more than basic logic, the other technical programming code and math are gibberish to me, no matter how much I try to understand... and I do have this problem that I LOVE TO LEARN so I can use things like that and upgrade them or tweak them if needed.
SAVE SLOTS for UNDO/REDO:
You guys suggested the option to use slots for alternative way, if it's not too complicated maybe I can try it myself and understand how it works by doing it.
The thing is that I have different events such as drag, drop, resize, rotate, and more to come..
So I'm trying to understand the basic idea:
1 - Before any action, SAVE to a slot, for example: "DragSlot" will save before I drag the object.
2 - Event: pressing CTRL+Z will load "DragSlot"
But what if I want to undo ANY LAST action, not just dragging (DragSlot)? this is where I get confused,
Looking at your examples doesn't really translate to logic for because as I said I'm not a programmer, that's why I'm asking stupid questions, after I tried to understand with no luck
Do I have to use an ARRAY (I understand how Array works, but only on the paper not on C3 or how to use it after Setting it up) maybe I'm an Array'phobic!
I believe that it is related to the objects UID using 1D array but it's only a guess my brain trying to follow the logic of it, also I have no clue how to translate such thing to actual C3 code.
I still don't know if I need 1 slot for the UNDO or more? and if more... how do I use them?
UNDO for size, undo for drag, undo for drop and so on? will this work?
I'm so sorry for the stupid questions, I'm just trying to understand the nonsense programming events that I see and trying to translate it to more Human-Like logic sense but I guess it's not that simple after all.
If you guys can explain it with screenshot or some other visual way it will be easier for me to follow, of course if you want I just rather learn instead of copy/past code.
Thanks ahead for any help!