|
@@ -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)
|