コード例 #1
0
        public void ProcessSlave(CsgOperation inOperation, Face inFace, CsgOperation.EPolySide inSide,
                                 CsgOperation.OperationInfo info)
        {
            switch (inSide)
            {
            case CsgOperation.EPolySide.PolySide_Outside:
            case CsgOperation.EPolySide.PolySide_Planar_Outside:
                // add to deferred faces
                inOperation.AddDeferredFace(inFace);
                break;

            case CsgOperation.EPolySide.PolySide_Inside:
            case CsgOperation.EPolySide.PolySide_CoPlanar_Inside:
            case CsgOperation.EPolySide.PolySide_Planar_Inside:
            case CsgOperation.EPolySide.PolySide_CoPlanar_Outside:
                break;
            }
        }
コード例 #2
0
        // TODO

        public void ProcessMaster(CsgOperation inOperation, Face inFace, CsgOperation.EPolySide inSide,
                                  CsgOperation.OperationInfo info)
        {
            switch (inSide)
            {
            case CsgOperation.EPolySide.PolySide_Outside:
            case CsgOperation.EPolySide.PolySide_Planar_Outside:
            case CsgOperation.EPolySide.PolySide_CoPlanar_Outside:
                break;

            case CsgOperation.EPolySide.PolySide_Inside:
            case CsgOperation.EPolySide.PolySide_CoPlanar_Inside:
            case CsgOperation.EPolySide.PolySide_Planar_Inside:
                // clone face
                Face newFace = (Face)inFace.Clone();
                newFace.Reverse();
                // add to deferred faces
                inOperation.AddDeferredFace(newFace);
                break;
            }
        }
コード例 #3
0
        public void ProcessMaster(CsgOperation inOperation, Face inFace, CsgOperation.EPolySide inSide,
                                  CsgOperation.OperationInfo info)
        {
            switch (inSide)
            {
            case CsgOperation.EPolySide.PolySide_Outside:
            case CsgOperation.EPolySide.PolySide_Planar_Outside:
            case CsgOperation.EPolySide.PolySide_CoPlanar_Inside:
                // add cutted polygons
                if ((inFace.flags & Face.FaceFlags_WasCutted) != 0)
                {
                    inOperation.AddPlanarFace(inFace);
                }
                break;

            case CsgOperation.EPolySide.PolySide_Inside:
            case CsgOperation.EPolySide.PolySide_Planar_Inside:
            case CsgOperation.EPolySide.PolySide_CoPlanar_Outside:
                // discard node
                inOperation.MarkNodeAsDestroyed();
                break;
            }
        }