From b04ee6885b5e0293b927b46e1c6c0f8b955ec99b Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 31 May 2024 21:13:32 -0700 Subject: [PATCH] dont spam recenter on spawn --- NewHorizons/Handlers/PlayerSpawnHandler.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/NewHorizons/Handlers/PlayerSpawnHandler.cs b/NewHorizons/Handlers/PlayerSpawnHandler.cs index 40670ad8..01c572dd 100644 --- a/NewHorizons/Handlers/PlayerSpawnHandler.cs +++ b/NewHorizons/Handlers/PlayerSpawnHandler.cs @@ -137,30 +137,39 @@ namespace NewHorizons.Handlers private static IEnumerator SpawnCoroutine(int length) { + FixPlayerVelocity(true); for(int i = 0; i < length; i++) { - FixPlayerVelocity(); + FixPlayerVelocity(false); yield return new WaitForEndOfFrame(); } + FixPlayerVelocity(true); InvulnerabilityHandler.MakeInvulnerable(false); } - private static void FixPlayerVelocity() + private static void FixPlayerVelocity(bool recenter) { var playerBody = SearchUtilities.Find("Player_Body").GetAttachedOWRigidbody(); var resources = playerBody.GetComponent(); - SpawnBody(playerBody, GetDefaultSpawn()); + SpawnBody(playerBody, GetDefaultSpawn(), recenter: recenter); resources._currentHealth = 100f; } - public static void SpawnBody(OWRigidbody body, SpawnPoint spawn, Vector3? positionOverride = null) + public static void SpawnBody(OWRigidbody body, SpawnPoint spawn, Vector3? positionOverride = null, bool recenter = false) { var pos = positionOverride ?? spawn.transform.position; - body.WarpToPositionRotation(pos, spawn.transform.rotation); + if (recenter) + { + body.WarpToPositionRotation(pos, spawn.transform.rotation); + } + else + { + body.transform.SetPositionAndRotation(pos, spawn.transform.rotation); + } var spawnVelocity = spawn._attachedBody.GetVelocity(); var spawnAngularVelocity = spawn._attachedBody.GetPointTangentialVelocity(pos);