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; } }
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; } }