Thomas Buck 10 роки тому
джерело
коміт
c27e093bec
2 змінених файлів з 24 додано та 37 видалено
  1. 1
    1
      src/Game.cpp
  2. 23
    36
      src/World.cpp

+ 1
- 1
src/Game.cpp Переглянути файл

82
     mLoaded = false;
82
     mLoaded = false;
83
     mRender->setMode(Render::modeDisabled);
83
     mRender->setMode(Render::modeDisabled);
84
 
84
 
85
-    mRender->ClearWorld();
86
     mWorld.destroy();
85
     mWorld.destroy();
86
+    mRender->ClearWorld();
87
     gOpenRaider->mSound->clear(); // Remove all previously loaded sounds
87
     gOpenRaider->mSound->clear(); // Remove all previously loaded sounds
88
 }
88
 }
89
 
89
 

+ 23
- 36
src/World.cpp Переглянути файл

323
     // Add some locking to check use state first
323
     // Add some locking to check use state first
324
     if (!mClearLock)
324
     if (!mClearLock)
325
     {
325
     {
326
-        //! \fixme Causes "freeing already freed pointer" exceptions or EXEC_BAD_ACCESS
327
-        //clear();
326
+        clear();
328
     }
327
     }
329
 }
328
 }
330
 
329
 
600
 // Private Mutators
599
 // Private Mutators
601
 ////////////////////////////////////////////////////////////
600
 ////////////////////////////////////////////////////////////
602
 
601
 
603
-void World::clear()
604
-{
602
+void World::clear() {
605
     room_mesh_t *room;
603
     room_mesh_t *room;
606
     model_mesh_t *mesh;
604
     model_mesh_t *mesh;
607
     sprite_seq_t *sprite;
605
     sprite_seq_t *sprite;
621
         room = mRooms[i];
619
         room = mRooms[i];
622
 
620
 
623
         if (room) {
621
         if (room) {
624
-            for (std::vector<int>::size_type j = 0; j != room->portals.size(); j++)
625
-                delete room->portals[i];
622
+            //! \fixme Causes "freeing already freed pointer" exceptions or EXEC_BAD_ACCESS
623
+
624
+            //for (std::vector<int>::size_type j = 0; j != room->portals.size(); j++)
625
+            //    delete room->portals[i];
626
             room->portals.clear();
626
             room->portals.clear();
627
 
627
 
628
-            for (std::vector<int>::size_type j = 0; j != room->models.size(); j++)
629
-                delete room->models[i];
628
+            //for (std::vector<int>::size_type j = 0; j != room->models.size(); j++)
629
+            //    delete room->models[i];
630
             room->models.clear();
630
             room->models.clear();
631
 
631
 
632
-            for (std::vector<int>::size_type j = 0; j != room->sprites.size(); j++)
633
-                delete room->sprites[i];
632
+            //for (std::vector<int>::size_type j = 0; j != room->sprites.size(); j++)
633
+            //    delete room->sprites[i];
634
             room->sprites.clear();
634
             room->sprites.clear();
635
 
635
 
636
-            for (std::vector<int>::size_type j = 0; j != room->sectors.size(); j++)
637
-                delete room->sectors[i];
636
+            //for (std::vector<int>::size_type j = 0; j != room->sectors.size(); j++)
637
+            //    delete room->sectors[i];
638
             room->sectors.clear();
638
             room->sectors.clear();
639
 
639
 
640
-            for (std::vector<int>::size_type j = 0; j != room->boxes.size(); j++)
641
-                delete room->boxes[i];
640
+            //for (std::vector<int>::size_type j = 0; j != room->boxes.size(); j++)
641
+            //    delete room->boxes[i];
642
             room->boxes.clear();
642
             room->boxes.clear();
643
 
643
 
644
             delete room;
644
             delete room;
651
         if (!mesh)
651
         if (!mesh)
652
             continue;
652
             continue;
653
 
653
 
654
-        for (std::vector<int>::size_type j = 0; j != mesh->texturedTriangles.size(); j++)
655
-        {
654
+        for (std::vector<int>::size_type j = 0; j != mesh->texturedTriangles.size(); j++) {
656
             if (mesh->texturedTriangles[j])
655
             if (mesh->texturedTriangles[j])
657
                 delete mesh->texturedTriangles[j];
656
                 delete mesh->texturedTriangles[j];
658
         }
657
         }
659
 
658
 
660
-        for (std::vector<int>::size_type j = 0; j != mesh->coloredTriangles.size(); j++)
661
-        {
659
+        for (std::vector<int>::size_type j = 0; j != mesh->coloredTriangles.size(); j++) {
662
             if (mesh->coloredTriangles[j])
660
             if (mesh->coloredTriangles[j])
663
                 delete mesh->coloredTriangles[j];
661
                 delete mesh->coloredTriangles[j];
664
         }
662
         }
665
 
663
 
666
-        for (std::vector<int>::size_type j = 0; j != mesh->texturedRectangles.size(); j++)
667
-        {
664
+        for (std::vector<int>::size_type j = 0; j != mesh->texturedRectangles.size(); j++) {
668
             if (mesh->texturedRectangles[j])
665
             if (mesh->texturedRectangles[j])
669
                 delete mesh->texturedRectangles[j];
666
                 delete mesh->texturedRectangles[j];
670
         }
667
         }
671
 
668
 
672
-        for (std::vector<int>::size_type j = 0; j != mesh->coloredRectangles.size(); j++)
673
-        {
669
+        for (std::vector<int>::size_type j = 0; j != mesh->coloredRectangles.size(); j++) {
674
             if (mesh->coloredRectangles[j])
670
             if (mesh->coloredRectangles[j])
675
                 delete mesh->coloredRectangles[j];
671
                 delete mesh->coloredRectangles[j];
676
         }
672
         }
689
 
685
 
690
     mMeshes.clear();
686
     mMeshes.clear();
691
 
687
 
692
-    for (std::vector<int>::size_type i = 0; i != mSprites.size(); i++)
693
-    {
688
+    for (std::vector<int>::size_type i = 0; i != mSprites.size(); i++) {
694
         sprite = mSprites[i];
689
         sprite = mSprites[i];
695
 
690
 
696
         if (!sprite)
691
         if (!sprite)
704
 
699
 
705
     mSprites.clear();
700
     mSprites.clear();
706
 
701
 
707
-    for (std::vector<int>::size_type i = 0; i != mModels.size(); i++)
708
-    {
702
+    for (std::vector<int>::size_type i = 0; i != mModels.size(); i++) {
709
         model = mModels[i];
703
         model = mModels[i];
710
 
704
 
711
         if (!model)
705
         if (!model)
721
         }
715
         }
722
 
716
 
723
         if (!found)
717
         if (!found)
724
-        {
725
             cache.push_back(model);
718
             cache.push_back(model);
726
-        }
727
         else
719
         else
728
-        {
729
             continue;
720
             continue;
730
-        }
731
 
721
 
732
-        for (std::vector<int>::size_type j = 0; j != model->animation.size(); j++)
733
-        {
722
+        for (std::vector<int>::size_type j = 0; j != model->animation.size(); j++) {
734
             animation  = model->animation[j];
723
             animation  = model->animation[j];
735
 
724
 
736
             if (!animation)
725
             if (!animation)
737
                 continue;
726
                 continue;
738
 
727
 
739
-            for (std::vector<int>::size_type k = 0; k != animation->frame.size(); k++)
740
-            {
728
+            for (std::vector<int>::size_type k = 0; k != animation->frame.size(); k++) {
741
                 boneframe = animation->frame[k];
729
                 boneframe = animation->frame[k];
742
 
730
 
743
                 if (!boneframe)
731
                 if (!boneframe)
744
                     continue;
732
                     continue;
745
 
733
 
746
-                for (std::vector<int>::size_type l = 0; l != boneframe->tag.size(); l++)
747
-                {
734
+                for (std::vector<int>::size_type l = 0; l != boneframe->tag.size(); l++) {
748
                     tag = boneframe->tag[l];
735
                     tag = boneframe->tag[l];
749
 
736
 
750
                     if (!tag)
737
                     if (!tag)

Завантаження…
Відмінити
Зберегти