System Unit Indexer

Cookiemaster

New Member
Reaction score
36
I've been wondering, how does the indexing (Node/Nodestack) you use work?

I'm hooking up all these arrays in this hit detection I'm making and I have a feeling I can do it all a lot easier.
 

Jesus4Lyf

Good Idea™
Reaction score
397
Copy/paste the layer #1 from one of my systems and just use alloc/dealloc... it's like creating/destroying an empty struct in vJass. They're just unique integers for their set. :)

Basically, I'm reconstructing vJass concepts in SC2 GUI.

Of course, now I've indexed "timers" and units, and created Event, so there's probably not too much more you'd need...
 

Cookiemaster

New Member
Reaction score
36
Copy/paste the layer #1 from one of my systems and just use alloc/dealloc... it's like creating/destroying an empty struct in vJass. They're just unique integers for their set. :)

Basically, I'm reconstructing vJass concepts in SC2 GUI.

Of course, now I've indexed "timers" and units, and created Event, so there's probably not too much more you'd need...

I know I could just copypaste the allocation/deallocation and just add the required fields to my objects.

I see it indexes by defining which was the previous object and which is the next object. (And linking the last up to the first)

But when I look at it I keep wondering:

Where is IndexStack[2048] for? You're only using IndexStack[0], and then you only set it to "index" in DeAllocIndex and return it in IndexStack, so why the 2048 extra array fields?
 

Jesus4Lyf

Good Idea™
Reaction score
397
Where is IndexStack[2048] for? You're only using IndexStack[0], and then you only set it to "index" in DeAllocIndex and return it in IndexStack, so why the 2048 extra array fields?
My bad. Something was critically wrong. Seems the copy/paste in the editor is not always reliable.

Download new version from first post. :)

Just taking:
IndexMax = 0 <Integer>
IndexStack = 0 <Integer[2048]>
IndexStackMax = 0 <Integer>
AllocIndex
DeallocIndex

should do the trick. :)
You may not need 2048 possible indexes, depending on what you're indexing. The size of that array is the number of indexes that can be freed at once.

Edit: Actually, this whole thing can be very slightly optimised, by removing the if from inside the allocate, but I think it's lame and don't feel like implementing that. In theory, you could allocate all the indexes at map init time into the stack array. *Shrugs*
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top