internal override void UndoRedoPerformed(List <GameObject> modified) { modifiedMeshes = new HashSet <PolyMesh>(modifiedMeshes.Where(x => x != null)); #if PROBUILDER_4_0_OR_NEWER if (ProBuilderBridge.ProBuilderExists()) { // delete & undo causes cases where object is not null but the reference to it's pb_Object is HashSet <GameObject> remove = new HashSet <GameObject>(); foreach (GameObject pb in modifiedPbMeshes) { try { ProBuilderBridge.ToMesh(pb); ProBuilderBridge.Refresh(pb); ProBuilderBridge.Optimize(pb); } catch { remove.Add(pb); } } if (remove.Count() > 0) { modifiedPbMeshes.SymmetricExceptWith(remove); } } #endif foreach (PolyMesh m in modifiedMeshes) { m.UpdateMeshFromData(); } base.UndoRedoPerformed(modified); }