Autor Wątek: Problem z kolekcją List<int>[, ,]  (Przeczytany 1449 razy)

Offline Lavi

  • Użytkownik
    • using namspace <Lavi.h>

# Luty 02, 2009, 12:22:04
Witam to mój pierwszy post więc proszę o wyrozumiałość ;P

Mam taki mały dziwny problem którego jakoś nie umiem rozwiązać.

// Definicja listy drzewa
List<int>[,,] _OctTree = new List<int>[8, 8, 8];

// Tworzenie drzewa
public void OctTree_BuildModelsOctTree()
        {
            int BlockX = Convert.ToInt32(Math.Round((_WorldSizeX / 8f)));
            int BlockY = Convert.ToInt32(Math.Round((_WorldSizeY / 8f)));
            int BlockZ = Convert.ToInt32(Math.Round((_WorldSizeZ / 8f)));

            for (int i = 0; i < _modelsinfo.Count; i++)
            {
                int x = Convert.ToInt32(Math.Round((_modelsinfo[i]._position.X / BlockX)));
                int y = Convert.ToInt32(Math.Round((_modelsinfo[i]._position.Y / BlockY)));
                int z = Convert.ToInt32(Math.Round((_modelsinfo[i]._position.Z / BlockZ)));
                _OctTree[x, y, z].Add(i);   // Problem jest z tym. Kompilator kompiluje program ale zatrzymuje się w tym miejscu i nie wyrzuca żadnego wyjątku
            }
        }

Jedynce co otrzymuje to takie coś: http://img404.imageshack.us/img404/6986/64073131oh8.png

Całkiem możliwe że źle definuję obiekt drzewa już na samym początku. Chcę otrzymać tablicę trójwymiarową list z int'ami.

Z góry dziękuje za pomoc.
« Ostatnia zmiana: Luty 02, 2009, 12:23:54 wysłana przez Lavi »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xion

  • Moderator
    • xion.log

# Luty 02, 2009, 12:26:04
Tworzysz tablicę, ale nie tworzysz list, które są jej elementami. Więc przy próbie odwołania do nich tak naprawdę odwołujesz się do pustej referencji (null). Musisz stworzyć listy:
for (int i = 0; i < 8; ++i)
   for (int j = 0; j < 8; ++j)
      for (int k = 0; k < 8; ++k)
         OctTree[i,j,k] = new List<int>();
« Ostatnia zmiana: Luty 02, 2009, 12:27:39 wysłana przez Xion »

Offline Lavi

  • Użytkownik
    • using namspace <Lavi.h>

# Luty 02, 2009, 12:37:10
Faktycznie tak właśnie to teraz zrobiłem i działa ale teraz mam problem innego rodzaju ;)

Dzięki za szybką odpowiedź. Człowiek siedząc nad kodem po parunastu godzinach myli się przy byle czym :D