How to use "For Each" tag loop on each object

  • Having selected a tag, and started the loop, imagine I want to get the position of each of the tagged objects and add it to an array.

    How do I get each tagged object's position? Or ANYTHING from each object? There's no apparent reference or binding, or knowledge of each object ni the loop, that I can see.

    I know this seems like a ridiculous question, too simple.

    But think about it in hyperPad:

    Get Position Behaviour requires an object be selected. If the For Each Tagged Object loop selects an object of any sort, which it does automatically, it's only operating on one object.

    If it's selecting a tag, in Get Position, what is reported back? An array with the position of every tagged object, each time the loop goes through every object with this tag?

    I'm definitely missing something because the example for Loop For Each tag specifically says this:

    Selecting a tag and the "For Each" loop style allows you to calculate distance to each object in a group separately rather than using the average

    That's pretty cool.


    The loop provides an index, not access to the currently selected object. In fact, it seems, the loop appears/is oblivious to which object selected during its loop.

    Or I'm missing something. I'm definitely missing something.

  • @Deeeds if you use get position with the same tag selected for it as the “for each” it should loop though and get position of each. And I assume you know how to add to array.

  • @iTap-Development This is the first thing I did. And the array is empty. Nothing ever gets sent to it.

  • @iTap-Development To explain further, this is EXACTLY what I'm trying to do. Add object positions to arrays.

    I'm making a facility where I can place dummy objects as I desire and then collect all their locations via a For Each loop and replace them with the spawned "instances" of the real objects. An editor within an editor for reasons required to get around the lack of referencing, nesting and attachment/grouping.

    I did this on the basis that I believed this particular behaviour would provide me the means to do this.

    Yet it doesn't work. Or I can't find how to make it work.

  • @Deeeds I know you HATE to share projects, but you wanna this time?
    Also, why are you setting id’s this way? Like I said, look at how I did it in my project.

  • @iTap-Development Again. There are OTHER things I'm doing, that require this functionality.

    This isn't just one problem that needs to be solved. But this makes for a great example to demonstrate the conceptual capability, which in turn, if it works, should provide artistic freedom of some description.

    So, no... not going to share a project.

    Instead, show me that it works.

    I've found so many things that don't work that I'm far beyond doubting myself, and already eliminated any possible user error on my end.
    The only things left are:

    It's broken


    It's counter intuitive and requires additional actions to setup "correctly".

    Show me it works. I don't think it does.

  • @iTap-Development As to "why am I setting IDs this way?

    Can you tell me why your way is better?

    I've explained why I think my way is better.

    1. Easy to comprehend and articulate and do (SIMPLE)
    2. Uses the already available index that's part of spawning
    3. Instant, no need to build in waits for things to be set/found/done

    Your way, in simple words, why is it better?

    You haven't explained how or why you set up things the way you do. And I'm really not fond of waiting ten minutes for my project to "save" just to see something that I might not understand, may not be better and you haven't suggested is better, or why.

    You haven't even made a case for why my way is bad..

  • @iTap-Development

    The last remaining potential problems?

    I was doing the For Each loop on a UI element (a label) and thought this might be a problem, so I put it on a normal object. No change.

    I was searching for tags on complex objects that do a lot of moving. Put tags on simple objects and removed the complex ones.

    But no, that's not it.

    It's the ******* (curse word edited out, use your imagination, add rage... then...) ARRAY modifier of type VALUE!!!

    In the entire rest of the known universe, that's what we're doing. Modifying an Array of Type Value. It's an array that stores VALUES!!!

    Meaning... it's an array of type Value!!!!


    *The decision behind this naming convention was probably focus group tested


    I have read the documentation again, and I still cannot figure out what an Array of Type Value actually is if it isn't an array of type value. Something to do with JSON values, but I'm not sure JSON means what they think it means, or what their intention was with this absolutely ridiculous nomenclature.

  • @Deeeds ok, this is how I did it in my project. Basically, when there is a “request” for a spawned object(in this case the mate wanting a buddy), the wanted ID is added to an array. That array holds all the requests. The array then takes the first index(that would be the oldest request, assuming you append the requests) and spawns the object and then the object sets its ID based on the value in the array, then triggers the array to spawn the next object. But don use the project I gave the link for, because I just realized that it isn’t ALL! I need to fix it.

    I’ll make a loop example.

  • @Deeeds so you want it to loop through objects and add there positions to an array? Right?

  • @Murtaza There was a movement to define and steadily and increasingly make a meaningful and less ambiguous and scattered approach/definition to use of the word "Type" in programming over the last few years.

    The result is this:

    Value Types and Reference Types on the one hand, and the type of objects (lower case) on the other.

    Value Types get copied on assignment. Things like functional programming rely on this, almost in exclusivity, it would seem.

    Reference Types we've already discussed, are those that point to the original... a reference.

    Within reference Types there is the type of object, as defined by its class. Notice I'm using a lower case t for this definition of type.

    I'm generally and genuinely curious.

    What is a Value type of array in hyperPad. I know you say it's a JSON something... then your writing gets lost and I lose any hope of understanding what you're on about.

    JSON arrays are, generally speaking, of only one type of object. Be it ints, strings, whatever... so not altogether dissimilar from any other array in most other languages that are not JavaScript, and those few really dynamic environments where an array can contain a lot of different types. This is, if I remember rightly, one of the only real reasons JavaScript needed JSON arrays, so that it could be sure of what type was in the array, and only that type.

    I don't really get what you've done here. Sometimes your Value type array works as a normal array might. Other times it does things I can't explain, or simply doesn't respond. And I'm sorry, I don't understand the documentation on the matter, at all, thin as it is.


    I'm already confused enough about arrays and spawning and IDs in this clusterfuck of an environment.

    Not having references and instances is doing my head in.

  • @iTap-Development Again, just explain WHY it's better. You've done the hard part, explaining how it works.

  • @iTap-Development and tell me why my way is inferior or suboptimal. Cause my way works. And circumvents the problems I've had with hyperPad so far.

  • @Deeeds I did explain how it works.

  • @iTap-Development explaining how something works, yes. I know. I acknowledged that you did that.

    WHY is your way better?

    Why is my way lesser?

  • @Deeeds simply that your way seems like more hassle, and uses more behaviors than are needed.

  • @iTap-Development On the contrary. My way is far less hassle.

    It's a factory based on the Index. That's the first point I made, that my way is lean, mean and SIMPLE!

    Pump out units, use index as ID by virtue of the position property, no communications required, no array of IDs required, nothing. Just pump them out and stamp them with the index via position.


  • @Deeeds ok! To each there own. Or should I say, for each? Did you check out the project?

Log in to reply