こんにちは私はチャンクを使用する2dマップローダーで作業しています。2つの識別子(rowIndex、colIndex)を使用して配列を比較する高速方法
私はスクリーン境界と交差しているチャンクの位置を計算するためにこのメソッドを使用しています。
// 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;
}
}
情報:
チャンクが追加される場合、その除去チャンクデータHASTをアンロードする場合には、データをロードしなければなりません。
このメソッドは、画面
x/y/size
が変更されるたびに呼び出されます。
私の質問は:私はチャンクが最後の配列から/削除追加されたかを知る必要があり。どうやってやるの。私を識別するためにはrowIndex/colIndex
を使用します。それは頻繁に呼び出されるので速くなければなりません。 HashTableをオプションにできますか?
負のインデックス値が許可されているかどうか知っていますか? –
はいどのインデックスも、インデックスキーのタイプに一致する限り有効です。 – maxTrialfire