first of all sorry about my bad english...
I found one interesting problem and I can't decide if this is a bug or feature
I have this situation:
1) I have Per Object compound that uses Repeat node, in each iteration it chooses point by ID and executes my compound jp_strand_compute_spiral_points that computes some my per point data. Please see img1.jpg ( i hope that it's correctly attached,this is my first post here)
2) Inside this compound, Point ID is compared with input port ID and some functionality on that point is executed. Simple comparison in image img3.jpg
3) Point with given ID computes some per point position data by compound jp_strand_spiral on img2.jpg
The problem is, that repeated per object compound is executed simultanously with per point compounds (so the repeat continues on next iteration although jp_strand_spiral is not finished yet), so the code on img2.jpg is not executed on correct points. For example i am logging the value of the ID input port and it changes its value IN THE MIDDLE of the compound execution, on the different stages of the inner compound execution it has a different value, because outside per object repeat node started next iteration and new ID is chosen.
The result is,that jp_strand_spiral is executed on some bad points with ID's that normally are not choosed by ID filter on img3.jpg.
There is a workaround,i tried to copy values of the input ports to the each point (simple switch to point context by FirstValid node) and it works, but it is an interesting problem. If some per point code access per object data,it is not guaranteed that have the same value during compound execution, because other per object code may change it "under your hands"
And the question is, is this correct "by ICE design" or it is a bug? From the programmer point of view, per object and per point code cannot run in parallel, only multiple per point codes can do it,because per point contexts are indenpendent....
Any opinions?
thanks,
JIPO