Warum der Artikel mit Ace Combat nicht weitergeht? Wegen dem scheiß Win32-Tree View.
Ich habe die Levels schön extrahiert, aber halt mit einem Objekt für jede Kachel der Landschaft. Macht fast 100.000 Objekte pro Level. Mein Tool lädt alles in einen Win32-Tree View (wie jedes Modeling-Tool, das es gibt), und der ist … langsam.
1. Hinzufügen: Dauert für 100.000 Items ungefähr 40 Minuten. Der Trick ist, ihn von hinten nach vorn zu befüllen. (Warum?
Raymond Chen erklärt.) Dann ist man nach zwei Sekunden fertig. Tolles Design!
2. Löschen: Dauert für 100.000 Items ebenfalls ungefähr 40 Minuten. Aber:
Es gibt keinen Trick. Was ich schon vergeblich ausprobiert habe:
- TreeView_DeleteAllItems()
- TreeView_DeleteItem(TVI_ROOT)
- TreeView_DeleteItem(NULL)
- TreeView_DeleteItem() von vorn nach hinten
- TreeView_DeleteItem() von hinten nach vorn
- TreeView_DeleteItem() von innen nach außen
- LockWindowUpdate()
- vor dem Löschen unsichtbar schalten, danach wieder sichtbar
Aber nein, es ist alles gleich langsam. Guess what? Wenn’s meiner gewesen wäre, wären da eh keine 100.000 einzelnen Allokationen, sondern nur ein großer Pool, den ich wegschmeißen könnte, und die Sache wäre sofort erledigt.
Jedenfalls muss ich jetzt jedes Mal, wenn ich in den Levels arbeite, meine Tools via Task Manager killen, damit sie nicht 45 Minuten weiterlaufen. Sowas macht mir die Motivation kaputt und nun habe ich eben keinen Bock mehr. Wenn ich mein eigenes OS geschrieben habe, nehme ich die Sache wieder auf.