public SliceResult Slice() { if (_sliced) { throw new InvalidOperationException("Object already sliced"); } _sliced = true; if (Configuration == null) { return(SliceMesh(_defaultSliceMaterial)); } switch (Configuration.SliceType) { case SliceType.Slice: return(SliceMesh(Configuration.SliceMaterial ?? _defaultSliceMaterial)); case SliceType.KeepOne: return(_plane.GetSide(_adapter.GetObjectCenterInWorldSpace()) ? SliceResult.Pos : SliceResult.Neg); case SliceType.Duplicate: return(SliceResult.Duplicate); default: throw new NotSupportedException(); } }