Thomas Buck 10 yıl önce
ebeveyn
işleme
c27e093bec
2 değiştirilmiş dosya ile 24 ekleme ve 37 silme
  1. 1
    1
      src/Game.cpp
  2. 23
    36
      src/World.cpp

+ 1
- 1
src/Game.cpp Dosyayı Görüntüle

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

+ 23
- 36
src/World.cpp Dosyayı Görüntüle

@@ -323,8 +323,7 @@ void World::destroy()
323 323
     // Add some locking to check use state first
324 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,8 +599,7 @@ void World::moveEntity(entity_t *e, char movement)
600 599
 // Private Mutators
601 600
 ////////////////////////////////////////////////////////////
602 601
 
603
-void World::clear()
604
-{
602
+void World::clear() {
605 603
     room_mesh_t *room;
606 604
     model_mesh_t *mesh;
607 605
     sprite_seq_t *sprite;
@@ -621,24 +619,26 @@ void World::clear()
621 619
         room = mRooms[i];
622 620
 
623 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 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 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 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 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 642
             room->boxes.clear();
643 643
 
644 644
             delete room;
@@ -651,26 +651,22 @@ void World::clear()
651 651
         if (!mesh)
652 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 655
             if (mesh->texturedTriangles[j])
657 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 660
             if (mesh->coloredTriangles[j])
663 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 665
             if (mesh->texturedRectangles[j])
669 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 670
             if (mesh->coloredRectangles[j])
675 671
                 delete mesh->coloredRectangles[j];
676 672
         }
@@ -689,8 +685,7 @@ void World::clear()
689 685
 
690 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 689
         sprite = mSprites[i];
695 690
 
696 691
         if (!sprite)
@@ -704,8 +699,7 @@ void World::clear()
704 699
 
705 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 703
         model = mModels[i];
710 704
 
711 705
         if (!model)
@@ -721,30 +715,23 @@ void World::clear()
721 715
         }
722 716
 
723 717
         if (!found)
724
-        {
725 718
             cache.push_back(model);
726
-        }
727 719
         else
728
-        {
729 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 723
             animation  = model->animation[j];
735 724
 
736 725
             if (!animation)
737 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 729
                 boneframe = animation->frame[k];
742 730
 
743 731
                 if (!boneframe)
744 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 735
                     tag = boneframe->tag[l];
749 736
 
750 737
                     if (!tag)

Loading…
İptal
Kaydet