示例#1
0
        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();
            }
        }