void SortConstraintsHorizontalRoot(SPCRJointDynamicsController controller, UpdateJointConnectionType Type)
    {
        switch (Type)
        {
        case UpdateJointConnectionType.Default:
        {
        }
        break;

        case UpdateJointConnectionType.SortNearPointXYZ:
        {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            var EdgeA        = controller._RootPointTbl[0];
            for (int i = 1; i < controller._RootPointTbl.Length; ++i)
            {
                SourcePoints.Add(controller._RootPointTbl[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint>();
            SortedPoints.Add(EdgeA);
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(GetNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     ref SourcePoints,
                                     false));
            }
            controller._RootPointTbl = SortedPoints.ToArray();
        }
        break;

        case UpdateJointConnectionType.SortNearPointXZ:
        {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            var EdgeA        = controller._RootPointTbl[0];
            for (int i = 1; i < controller._RootPointTbl.Length; ++i)
            {
                SourcePoints.Add(controller._RootPointTbl[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint>();
            SortedPoints.Add(EdgeA);
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(GetNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     ref SourcePoints,
                                     true));
            }
            controller._RootPointTbl = SortedPoints.ToArray();
        }
        break;

        case UpdateJointConnectionType.SortNearPointXYZ_FixedBeginEnd:
        {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            var EdgeA        = controller._RootPointTbl[0];
            var EdgeB        = controller._RootPointTbl[controller._RootPointTbl.Length - 1];
            for (int i = 1; i < controller._RootPointTbl.Length - 1; ++i)
            {
                SourcePoints.Add(controller._RootPointTbl[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint>();
            SortedPoints.Add(EdgeA);
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(GetNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     ref SourcePoints,
                                     false));
            }
            SortedPoints.Add(EdgeB);
            controller._RootPointTbl = SortedPoints.ToArray();
        }
        break;

        case UpdateJointConnectionType.SortNearPointXZ_FixedBeginEnd:
        {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            var EdgeA        = controller._RootPointTbl[0];
            var EdgeB        = controller._RootPointTbl[controller._RootPointTbl.Length - 1];
            for (int i = 1; i < controller._RootPointTbl.Length - 1; ++i)
            {
                SourcePoints.Add(controller._RootPointTbl[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint>();
            SortedPoints.Add(EdgeA);
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(GetNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     ref SourcePoints,
                                     true));
            }
            SortedPoints.Add(EdgeB);
            controller._RootPointTbl = SortedPoints.ToArray();
        }
        break;
        }
    }
Esempio n. 2
0
    private static void SortConstraintsHorizontalRoot(SPCRJointDynamicsController controller, UpdateJointConnectionType Type)
    {
        switch (Type)
        {
        case UpdateJointConnectionType.Default: {
        }
        break;

        case UpdateJointConnectionType.SortNearPointXYZ: {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            for (int i = 1; i < controller._RootPointTable.Length; ++i)
            {
                SourcePoints.Add(controller._RootPointTable[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint> {
                controller._RootPointTable[0]
            };
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(PopNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     SourcePoints,
                                     false));
            }
            controller._RootPointTable = SortedPoints.ToArray();
        }
        break;

        case UpdateJointConnectionType.SortNearPointXZ: {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            for (int i = 1; i < controller._RootPointTable.Length; ++i)
            {
                SourcePoints.Add(controller._RootPointTable[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint> {
                controller._RootPointTable[0]
            };
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(PopNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     SourcePoints,
                                     true));
            }
            controller._RootPointTable = SortedPoints.ToArray();
        }
        break;

        case UpdateJointConnectionType.SortNearPointXYZ_FixedBothEnds: {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            var EdgeB        = controller._RootPointTable[controller._RootPointTable.Length - 1];
            for (int i = 1; i < controller._RootPointTable.Length - 1; ++i)
            {
                SourcePoints.Add(controller._RootPointTable[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint> {
                controller._RootPointTable[0]
            };
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(PopNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     SourcePoints,
                                     false));
            }
            SortedPoints.Add(EdgeB);
            controller._RootPointTable = SortedPoints.ToArray();
        }
        break;

        case UpdateJointConnectionType.SortNearPointXZ_FixedBothEnds: {
            var SourcePoints = new List <SPCRJointDynamicsPoint>();
            var EdgeB        = controller._RootPointTable[controller._RootPointTable.Length - 1];
            for (int i = 1; i < controller._RootPointTable.Length - 1; ++i)
            {
                SourcePoints.Add(controller._RootPointTable[i]);
            }
            var SortedPoints = new List <SPCRJointDynamicsPoint> {
                controller._RootPointTable[0]
            };
            while (SourcePoints.Count > 0)
            {
                SortedPoints.Add(PopNearestPoint(
                                     SortedPoints[SortedPoints.Count - 1].transform.position,
                                     SourcePoints,
                                     true));
            }
            SortedPoints.Add(EdgeB);
            controller._RootPointTable = SortedPoints.ToArray();
        }
        break;
        }
    }