public bool AttemptToHitch(RidableHorse horse, HitchSpot hitch = null) { if (horse == null) { return(false); } if (hitch == null) { hitch = GetClosest(horse.transform.position); } if (hitch != null) { object obj = Interface.CallHook("OnHorseHitch", horse, hitch); if (obj is bool) { return((bool)obj); } hitch.SetOccupiedBy(horse); horse.SetHitch(this); horse.transform.SetPositionAndRotation(hitch.spot.position, hitch.spot.rotation); horse.DismountAllPlayers(); return(true); } return(false); }
public HitchSpot GetClosest(Vector3 testPos, bool includeOccupied = false, float maxRadius = -1f) { float num = 10000f; HitchSpot result = null; for (int i = 0; i < hitchSpots.Length; i++) { float num2 = Vector3.Distance(testPos, hitchSpots[i].spot.position); if (num2 < num && (maxRadius == -1f || num2 <= maxRadius) && (includeOccupied || !hitchSpots[i].IsOccupied())) { num = num2; result = hitchSpots[i]; } } return(result); }