Beispiel #1
0
    public bool Split(Vector3 collPointWs, Vector3 collNormalWs, Shape2 shapeAbove, Shape2 shapeBelow)
    {
        var P0 = transform.InverseTransformPoint(collPointWs);
        var collNormalLocal = transform.InverseTransformDirection(collNormalWs);

        var n = CalculateSplitPlaneNormal(P0, collNormalLocal);

        shapeAbove.Clear();
        shapeBelow.Clear();

        if (SplitPoints(P0, n, shapeAbove, shapeBelow))
        {
            foreach (var e in Edges)
            {
                e.Split(P0, n, m_NewPointsGetter, shapeAbove, shapeBelow);
            }

            foreach (var f in Faces)
            {
                f.Split(m_NewPointsGetter, shapeAbove, shapeBelow);
            }

            InitNewShape(shapeAbove, -n);
            InitNewShape(shapeBelow, n);

            return(true);
        }
        return(false);
    }