public static GridRotation RotationTo(JointConnectionDirection source, JointConnectionDirection target) { if (source == BasePart.JointConnectionDirection.Any || target == BasePart.JointConnectionDirection.Any || source == BasePart.JointConnectionDirection.None || target == BasePart.JointConnectionDirection.None) { return(BasePart.GridRotation.Deg_0); } if (source == BasePart.JointConnectionDirection.LeftAndRight) { if (target == BasePart.JointConnectionDirection.UpAndDown || target == BasePart.JointConnectionDirection.Up || target == BasePart.JointConnectionDirection.Down) { return(BasePart.GridRotation.Deg_90); } return(BasePart.GridRotation.Deg_0); } else { if (source != BasePart.JointConnectionDirection.UpAndDown) { int num = target - source; return((GridRotation)((num + 4) % 4)); } if (target == BasePart.JointConnectionDirection.LeftAndRight || target == BasePart.JointConnectionDirection.Left || target == BasePart.JointConnectionDirection.Right) { return(BasePart.GridRotation.Deg_90); } return(BasePart.GridRotation.Deg_0); } }
public JointConnectionDirection GlobalJointConnectionDirection(JointConnectionDirection localDirection) { if (localDirection == BasePart.JointConnectionDirection.Any || localDirection == BasePart.JointConnectionDirection.None) { return(localDirection); } JointConnectionDirection jointConnectionDirection = localDirection; if (localDirection == BasePart.JointConnectionDirection.LeftAndRight) { if (this.m_gridRotation == BasePart.GridRotation.Deg_90 || this.m_gridRotation == BasePart.GridRotation.Deg_270) { jointConnectionDirection = BasePart.JointConnectionDirection.UpAndDown; } } else if (localDirection == BasePart.JointConnectionDirection.UpAndDown) { if (this.m_gridRotation == BasePart.GridRotation.Deg_90 || this.m_gridRotation == BasePart.GridRotation.Deg_270) { jointConnectionDirection = BasePart.JointConnectionDirection.LeftAndRight; } } else { jointConnectionDirection = (JointConnectionDirection)(((int)(localDirection - 1) + (int)m_gridRotation) % 4 + 1); } if (this.m_flipped) { if (jointConnectionDirection == BasePart.JointConnectionDirection.Left) { return(BasePart.JointConnectionDirection.Right); } if (jointConnectionDirection == BasePart.JointConnectionDirection.Right) { return(BasePart.JointConnectionDirection.Left); } } return(jointConnectionDirection); }