Hallo Ich arbeite an einem 2d Map Loader, der Chunks verwendet.Schnelle Möglichkeit, Arrays mit zwei Identifikatoren zu vergleichen (rowIndex, colIndex)
ich diese Methode bin mit der Position des Chunks zu berechnen, die mit den Rastergrenzen werden schneiden.
// left bottom
rect.x = x - x % chunkSize;
if (x < 0) rect.x -= chunkSize
rect.colIndex = (int) (rect.x/chunkSize);
rect.y = y - y % chunkSize;
if (y < 0) rect.y -= chunkSize;
rect.rowIndex = (int) (rect.y/chunkSize);
// right top
float x2 = x + width, y2 = y + height;
float rectX = x2 - x2 % chunkSize;
if (x2 < 0) rectX -= chunkSize;
int colIndex = (int) (rectX/chunkSize);
float rectY = y2 - y2 % chunkSize;
if (y2 < 0) rectY -= chunkSize;
int rowIndex = (int) (rectY/chunkSize);
rect.rows = rowIndex - rect.rowIndex + 1;
rect.cols = colIndex - rect.colIndex + 1;
for (int i = 0; i < rect.rows; i++) {
for (int j = 0; j < rect.cols; j++) {
Chunk chunk = chunkPool.obtain();
chunk.x = rect.x + chunkSize * j;
chunk.y = rect.y + chunkSize * i;
chunk.rowIndex = rect.rowIndex + i;
chunk.colIndex = rect.colIndex + j;
}
}
Info:
Wenn ein Chunk hinzugefügt wird, hat Daten zu laden, wenn sie das Chunk-Daten haben entfernt werden entladen.
Diese Methode wird jedes Mal aufgerufen, wenn der Bildschirm
x/y/size
ändert.
Meine Frage ist: Ich muss wissen, was Chunks aus dem letzten Array entfernt/hinzugefügt wird. Wie kann ich das machen. Zur Identifikation würde ich die rowIndex/colIndex
verwenden. Es sollte schnell sein, weil es häufig aufgerufen wird. Könnte eine HashTable eine Option sein?
Wissen Sie, ob negative Indexwerte sind erlaubt? –
Ja Jeder Index ist gültig, solange er dem Typ Ihres Indexschlüssels entspricht – maxTrialfire