MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / removeMeshFromObject

Method removeMeshFromObject

Engine/source/ts/tsShapeEdit.cpp:723–822  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

721}
722
723void TSShape::removeMeshFromObject(S32 objIndex, S32 meshIndex)
724{
725 TSShape::Object& obj = objects[objIndex];
726
727 // Remove the mesh, but do not destroy it (this must be done by the caller)
728 meshes[obj.startMeshIndex + meshIndex] = NULL;
729
730 // Check if there are any objects remaining that have a valid mesh at this
731 // detail size
732 bool removeDetail = true;
733 for (S32 i = 0; i < objects.size(); i++)
734 {
735 if ((meshIndex < objects[i].numMeshes) && meshes[objects[i].startMeshIndex + meshIndex])
736 {
737 removeDetail = false;
738 break;
739 }
740 }
741
742 // Remove detail level if possible
743 if (removeDetail)
744 {
745 for (S32 i = 0; i < objects.size(); i++)
746 {
747 if (meshIndex < objects[i].numMeshes)
748 {
749 U32 idxToRemove = objects[i].startMeshIndex + meshIndex;
750 meshes.erase(idxToRemove);
751 objects[i].numMeshes--;
752
753 // Clear invalid parent
754 for (U32 k = 0; k < meshes.size(); k++)
755 {
756 if (meshes[k] == NULL)
757 continue;
758
759 if (meshes[k]->parentMesh == idxToRemove)
760 {
761 meshes[k]->parentMesh = -1;
762 }
763 else if (meshes[k]->parentMesh > idxToRemove)
764 {
765 meshes[k]->parentMesh--;
766 }
767 }
768
769 for (S32 j = 0; j < objects.size(); j++)
770 {
771 if (objects[j].startMeshIndex > objects[i].startMeshIndex)
772 objects[j].startMeshIndex--;
773 }
774 }
775 }
776
777 Vector<S32> validDetails;
778 getSubShapeDetails(getSubShapeForObject(objIndex), validDetails);
779
780 for (S32 i = 0; i < validDetails.size(); i++)

Callers 1

installMethod · 0.80

Calls 2

sizeMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected