示例#1
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:
        case CsgOperation.EPolySide.PolySide_CoPlanar_Inside:
            break;

        case CsgOperation.EPolySide.PolySide_Inside:
        case CsgOperation.EPolySide.PolySide_Planar_Inside:
            // add to deferred faces
            inOperation.AddDeferredFace(inFace);
            break;
        }
    }
示例#2
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:
        case CsgOperation.EPolySide.PolySide_CoPlanar_Outside:
        case CsgOperation.EPolySide.PolySide_CoPlanar_Inside:
            break;

        case CsgOperation.EPolySide.PolySide_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;
        }
    }