- Home /
Holding Vectors
When I run my game it creates 40401 vectors to hold the places of game objects. I need to store 4 vectors, were 2 of the vector's x values are 20 units apart and the other 2 vector's y values are 50 units apart. All my vectors have this relationship in common, so I will need to create groups of vectors until they're all in groups. I will then remove 1 vector from each group that has the same x/y value as another vector in a different group.
How would you recommend that I go about this? I don't need step by step help, just someone to point me in a general direction; like how to store my groups of vectors.
Any help would be greatly appreciated.
Answer by JVene · Oct 04, 2018 at 03:34 AM
Let me restate what I think is the task that results from what you've described, and correct me if my understanding is incorrect.
There is a List of objects (a class) where the class contains 4 Vector2 objects, thus creating a list of vector groups. The objective is to remove any Vector2 from a group which happens to coincide with a Vector2 of any other group.
The class which contains the Vector2 groups could be implemented with a small array in the class, and some unique identifier (maybe a serial number) for the group. In this way, removing a Vector2 from a group is a matter of removing an entry from a small array (sometimes making a list with 4 Vector2, or 3, or maybe even just 2.
These classes, vector groups, may be stored in a List of some 10,000 vector groups.
To find the coincident vectors, I would fashion a list of some struct or class which holds a vector2 and the ID of the group it belongs to. I would sort the source list (of the groups) by group ID, so they're fast to look up using binary search. I would then fashion this proposed list by looping through all the groups, and adding every vector in each group to this proposed list (containing a single vector2 and the group ID it came from). I would then sort this result list by Vector2/group ID (custom sort order of a List). This would cause all coincident Vector2's to appear together. After sorting, I would then loop through this result list, and each time the loop notices the current Vector2 is the same (or very close) to the previous Vector2, that becomes a candidate for removal (process the removal by lookup of the group, then remove within that group). When finished, all coincident Vector2's should have been found and removed.
Your answer
Follow this Question
Related Questions
Lerp problem 1 Answer
Converting script from JS to C# 3 Answers
Read variable from txt to Vector3 1 Answer
My Vector3.Lerp is not working. Please look at my script. 2 Answers