From e2848fc6332c58a11f4b2aa231c138f59f8ed5bf Mon Sep 17 00:00:00 2001 From: ipodtouch0218 Date: Mon, 15 Jan 2024 00:24:54 -0500 Subject: [PATCH] nightly v1.8.0.0 (1/14) --- .../Resources/NetworkProjectConfig.fusion | 6 ++-- .../Prefabs/Static/GlobalController.prefab | 3 +- Assets/Scripts/BuildInfo.cs | 2 +- Assets/Scripts/Camera/CameraController.cs | 11 ++++++-- Assets/Scripts/DiscordController.cs | 2 ++ Assets/Scripts/Entity/Enemy/Koopa.cs | 8 ++++-- Assets/Scripts/Entity/EntityMover.cs | 25 ++++++++++++----- .../Scripts/Entity/Player/PlayerController.cs | 21 ++++++++------ .../Entity/World Elements/FrozenCube.cs | 5 ++++ Assets/Scripts/GameManager.cs | 2 +- .../Networking/Fusion/PlayerNetworkInput.cs | 1 + .../Scripts/UI/Menu/Loading/LoadingCanvas.cs | 13 ++++++--- .../UI/Menu/Loading/LoadingWaitingOn.cs | 28 +++++++++++-------- ProjectSettings/ProjectSettings.asset | 3 +- 14 files changed, 85 insertions(+), 45 deletions(-) diff --git a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion b/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion index 1f0a5595dd..954df74bcc 100644 --- a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion +++ b/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion @@ -4,8 +4,8 @@ "PeerMode": 0, "LagCompensation": { "Enabled": true, - "HitboxBufferLengthInMs": 200, - "HitboxDefaultCapacity": 512, + "HitboxBufferLengthInMs": 400, + "HitboxDefaultCapacity": 256, "CachedStaticCollidersSize": 64 }, "EnqueueIncompleteSynchronousSpawns": true, @@ -50,7 +50,7 @@ }, "Heap": { "PageShift": 14, - "PageCount": 128, + "PageCount": 256, "GlobalsSize": 0 }, "AssembliesToWeave": [ diff --git a/Assets/Resources/Prefabs/Static/GlobalController.prefab b/Assets/Resources/Prefabs/Static/GlobalController.prefab index bcde57d76a..c8d558a8ca 100644 --- a/Assets/Resources/Prefabs/Static/GlobalController.prefab +++ b/Assets/Resources/Prefabs/Static/GlobalController.prefab @@ -687,7 +687,7 @@ MonoBehaviour: m_fontSizeMin: 0 m_fontSizeMax: 28 m_fontStyle: 0 - m_HorizontalAlignment: 1 + m_HorizontalAlignment: 2 m_VerticalAlignment: 256 m_textAlignment: 65535 m_characterSpacing: 0 @@ -44733,6 +44733,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: playerList: {fileID: 1394624252273630683} + statusText: {fileID: 3626728888328854889} --- !u!1 &8962770090848600293 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/BuildInfo.cs b/Assets/Scripts/BuildInfo.cs index da0df9676f..b303c92639 100644 --- a/Assets/Scripts/BuildInfo.cs +++ b/Assets/Scripts/BuildInfo.cs @@ -1 +1 @@ -public static class BuildInfo{public static string BUILD_TIME = "1/14/2024 4:27:53 AM";} +public static class BuildInfo{public static string BUILD_TIME = "1/15/2024 1:46:53 AM";} diff --git a/Assets/Scripts/Camera/CameraController.cs b/Assets/Scripts/Camera/CameraController.cs index 43117d8119..8433768d53 100644 --- a/Assets/Scripts/Camera/CameraController.cs +++ b/Assets/Scripts/Camera/CameraController.cs @@ -88,11 +88,16 @@ public override void Render() { (fromVector, toVector) = currentPositionReader.Read(from, to); } + Vector2 dest; Utils.UnwrapLocations(fromVector, toVector, out var fromVectorRelative, out var toVectorRelative); - Vector2 lerped = Vector2.Lerp(fromVectorRelative, toVectorRelative, alpha); - Utils.WrapWorldLocation(ref lerped); + if (Vector2.Distance(fromVectorRelative, toVectorRelative) > 1f) { + dest = toVectorRelative; + } else { + dest = Vector2.Lerp(fromVectorRelative, toVectorRelative, alpha); + } + Utils.WrapWorldLocation(ref dest); - newPosition = lerped; + newPosition = dest; newPosition.z = CurrentPosition.z; } else { newPosition = CurrentPosition; diff --git a/Assets/Scripts/DiscordController.cs b/Assets/Scripts/DiscordController.cs index 7f6fa29aa7..9ea8d950bf 100644 --- a/Assets/Scripts/DiscordController.cs +++ b/Assets/Scripts/DiscordController.cs @@ -8,6 +8,7 @@ using NSMB.Translation; public class DiscordController : MonoBehaviour { +#pragma warning disable IDE0079 #pragma warning disable CS0162 //---Static Variables @@ -164,4 +165,5 @@ public void AskToJoin(ref User user) { //}); } #pragma warning restore CS0162 +#pragma warning restore IDE0079 } diff --git a/Assets/Scripts/Entity/Enemy/Koopa.cs b/Assets/Scripts/Entity/Enemy/Koopa.cs index 6730159a7c..7cecdf4053 100644 --- a/Assets/Scripts/Entity/Enemy/Koopa.cs +++ b/Assets/Scripts/Entity/Enemy/Koopa.cs @@ -204,9 +204,11 @@ public void BlueBecomeItem(PlayerController player) { BlueShellCollector = player; powerupCollect.OnPowerupCollect(player, Enums.GetPowerupScriptable(Enums.PowerupState.BlueShell)); } else { - Runner.Spawn(PrefabList.Instance.Powerup_BlueShell, transform.position + Vector3.down * 0.15f, onBeforeSpawned: (runner, obj) => { - obj.GetComponent().OnBeforeSpawned(0.1f); - }); + if (Runner.IsServer) { + Runner.Spawn(PrefabList.Instance.Powerup_BlueShell, transform.position + Vector3.down * 0.15f, onBeforeSpawned: (runner, obj) => { + obj.GetComponent().OnBeforeSpawned(0.1f); + }); + } } DespawnEntity(); } diff --git a/Assets/Scripts/Entity/EntityMover.cs b/Assets/Scripts/Entity/EntityMover.cs index e5a7ae4b60..1b2ad25464 100644 --- a/Assets/Scripts/Entity/EntityMover.cs +++ b/Assets/Scripts/Entity/EntityMover.cs @@ -4,6 +4,7 @@ using Fusion; using NSMB.Tiles; using NSMB.Utils; +using NSMB.Entities.Player; [SimulationBehaviour] public class EntityMover : NetworkBehaviour, IBeforeTick, IAfterTick, IAfterAllTicks, IRemotePrefabCreated { @@ -215,6 +216,8 @@ private Vector2 CollideAndSlide(Vector2 raycastPos, Vector2 raycastVel, bool gra } } + Vector2 alignedDirection; + bool isTilemap = hit.collider is CompositeCollider2D; if (Mathf.Abs(angle) < maxFloorAngle) { // Floor @@ -232,6 +235,8 @@ private Vector2 CollideAndSlide(Vector2 raycastPos, Vector2 raycastVel, bool gra AddTileContacts(lowerBound, upperBound, y, InteractionDirection.Down); } + alignedDirection = Vector2.up; + } else if (Mathf.Abs(angle) > 180 - maxFloorAngle) { // Roof Data.HitRoof = true; @@ -246,16 +251,20 @@ private Vector2 CollideAndSlide(Vector2 raycastPos, Vector2 raycastVel, bool gra AddTileContacts(lowerBound, upperBound, y, InteractionDirection.Up); } + alignedDirection = Vector2.down; + } else { InteractionDirection interactionDirection; if (angle > 0) { // Left Data.HitLeft = true; interactionDirection = InteractionDirection.Left; + alignedDirection = Vector2.left; } else { // Right Data.HitRight = true; interactionDirection = InteractionDirection.Right; + alignedDirection = Vector2.right; } if (hit.collider.GetComponentInParent() is NetworkObject no) { @@ -269,7 +278,11 @@ private Vector2 CollideAndSlide(Vector2 raycastPos, Vector2 raycastVel, bool gra } } - Vector2 positionToSurfacePoint = (direction * hit.distance) + (hit.normal * Skin); + Vector2 positionToSurfacePoint = (direction * hit.distance) + (alignedDirection * Skin); + + if (TryGetComponent(out PlayerController _)) { + Debug.DrawRay(positionToSurfacePoint, hit.normal, Color.red); + } // Started inside an object if (hit.distance <= 0) { @@ -305,12 +318,10 @@ private Vector2 CollideAndSlide(Vector2 raycastPos, Vector2 raycastVel, bool gra offset.y = 0; } - if (offset.sqrMagnitude >= Skin) { - Position += offset; - raycastPos += offset; - direction = ((Vector2) Vector3.ProjectOnPlane(direction, hit.normal)).normalized; - positionToSurfacePoint = direction * hit.distance; - } + Position += offset; + raycastPos += offset; + direction = ((Vector2) Vector3.ProjectOnPlane(direction, hit.normal)).normalized; + positionToSurfacePoint = direction * hit.distance; } if (Data.OnGround && gravityPass) { diff --git a/Assets/Scripts/Entity/Player/PlayerController.cs b/Assets/Scripts/Entity/Player/PlayerController.cs index fd1a155081..530166d6e7 100644 --- a/Assets/Scripts/Entity/Player/PlayerController.cs +++ b/Assets/Scripts/Entity/Player/PlayerController.cs @@ -523,7 +523,7 @@ public override void FixedUpdateNetwork() { } CheckForPowerupActions(input, PreviousInputs); - HandleMovement(heldButtons, pressedButtons); + HandleMovement(heldButtons, pressedButtons, input); } PreviousTickIsOnGround = IsOnGround; @@ -653,7 +653,7 @@ private void CheckForEntityCollision() { Quaternion.identity, Object.InputAuthority, LagCompensatedBuffer, - options: HitOptions.IgnoreInputAuthority | HitOptions.IncludeBox2D, + options: HitOptions.IgnoreInputAuthority | HitOptions.IncludeBox2D | HitOptions.SubtickAccuracy, clearHits: false); } @@ -974,6 +974,7 @@ public void OnInput(NetworkRunner runner, NetworkInput input) { } + Vector2 joystick = ControlSystem.controls.Player.Movement.ReadValue(); bool jump = ControlSystem.controls.Player.Jump.ReadValue() >= 0.5f; bool powerup = ControlSystem.controls.Player.PowerupAction.ReadValue() >= 0.5f; @@ -994,7 +995,7 @@ public void OnInput(NetworkRunner runner, NetworkInput input) { newInput.buttons.Set(PlayerControls.Sprint, sprint ^ Settings.Instance.controlsAutoSprint); newInput.buttons.Set(PlayerControls.PowerupAction, powerup); - // Powerup action counter avoids dropped inputs + // Powerup action counter to avoid dropped inputs NetworkButtons pressed = newInput.buttons.GetPressed(onInputPreviousInputs.buttons); if (pressed.IsSet(PlayerControls.PowerupAction) || (pressed.IsSet(PlayerControls.Sprint) && Settings.Instance.controlsFireballSprint && (State == Enums.PowerupState.FireFlower || State == Enums.PowerupState.IceFlower)) @@ -1003,6 +1004,11 @@ public void OnInput(NetworkRunner runner, NetworkInput input) { newInput.powerupActionCounter++; } + // Jump tick to avoid dropped inputs + if (pressed.IsSet(PlayerControls.Jump)) { + newInput.lastJumpPressTick = Runner.Tick; + } + input.Set(newInput); onInputPreviousInputs = newInput; } @@ -2552,7 +2558,7 @@ public void HandleBlockSnapping() { body.Position = newPosition; } - private void HandleMovement(NetworkButtons heldButtons, NetworkButtons pressedButtons) { + private void HandleMovement(NetworkButtons heldButtons, NetworkButtons pressedButtons, PlayerNetworkInput input) { float delta = Runner.DeltaTime; IsFunctionallyRunning = heldButtons.IsSet(PlayerControls.Sprint) || State == Enums.PowerupState.MegaMushroom || IsPropellerFlying; @@ -2645,7 +2651,7 @@ private void HandleMovement(NetworkButtons heldButtons, NetworkButtons pressedBu IsInShell = false; body.Velocity -= body.Velocity * (delta * 2f); - float timeStunned = (Runner.Tick - KnockbackTick) * Runner.DeltaTime; + float timeStunned = (Runner.Tick - KnockbackTick) * delta; if ((IsSwimming && timeStunned > 1.5f) || (!IsSwimming && IsOnGround && Mathf.Abs(body.Velocity.x) < 0.35f && timeStunned > 0.5f)) { ResetKnockback(); @@ -2663,10 +2669,7 @@ private void HandleMovement(NetworkButtons heldButtons, NetworkButtons pressedBu bool powerupAction = heldButtons.IsSet(PlayerControls.PowerupAction); // Jump Buffering - if (pressedButtons.IsSet(PlayerControls.Jump) && !IsOnGround) { - // 0.15s buffer time - JumpBufferTime = Runner.SimulationTime + 0.15f; - } + JumpBufferTime = (input.lastJumpPressTick * delta) + 0.15f; bool jumpPressed = pressedButtons.IsSet(PlayerControls.Jump); bool canJump = jumpPressed || (Runner.SimulationTime <= JumpBufferTime && (IsOnGround || WallSliding)); diff --git a/Assets/Scripts/Entity/World Elements/FrozenCube.cs b/Assets/Scripts/Entity/World Elements/FrozenCube.cs index 6a806fc67f..32ab336b7a 100644 --- a/Assets/Scripts/Entity/World Elements/FrozenCube.cs +++ b/Assets/Scripts/Entity/World Elements/FrozenCube.cs @@ -97,6 +97,11 @@ public override void FixedUpdateNetwork() { return; } + if (GameManager.Instance.GameEnded) { + body.Velocity = Vector2.zero; + return; + } + base.FixedUpdateNetwork(); if (!Object || IsDead) { diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index c035ef5a42..feb4dfea91 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -916,7 +916,7 @@ private IEnumerator CallLoadingComplete(float seconds) { } private IEnumerator CallAllPlayersLoaded() { - yield return new WaitForSeconds(1f); + yield return new WaitForSeconds(2f); if (!calledAllPlayersLoaded) { OnAllPlayersLoaded?.Invoke(); } diff --git a/Assets/Scripts/Networking/Fusion/PlayerNetworkInput.cs b/Assets/Scripts/Networking/Fusion/PlayerNetworkInput.cs index c1319efaaa..e2743f79c3 100644 --- a/Assets/Scripts/Networking/Fusion/PlayerNetworkInput.cs +++ b/Assets/Scripts/Networking/Fusion/PlayerNetworkInput.cs @@ -3,6 +3,7 @@ public struct PlayerNetworkInput : INetworkInput { public NetworkButtons buttons; + public int lastJumpPressTick; public byte powerupActionCounter; } diff --git a/Assets/Scripts/UI/Menu/Loading/LoadingCanvas.cs b/Assets/Scripts/UI/Menu/Loading/LoadingCanvas.cs index e7fcee9376..6c267a0e03 100644 --- a/Assets/Scripts/UI/Menu/Loading/LoadingCanvas.cs +++ b/Assets/Scripts/UI/Menu/Loading/LoadingCanvas.cs @@ -29,8 +29,9 @@ public void OnDestroy() { } public void Initialize() { - if (initialized) + if (initialized) { return; + } initialized = true; @@ -46,8 +47,10 @@ public void Initialize() { audioSource.volume = 0; audioSource.Play(); - if (fadeCoroutine != null) + if (fadeCoroutine != null) { StopCoroutine(fadeCoroutine); + } + fadeCoroutine = StartCoroutine(FadeVolume(0.1f, true)); //audioListener.enabled = true; @@ -60,8 +63,9 @@ public void EndLoading() { initialized = false; - if (fadeCoroutine != null) + if (fadeCoroutine != null) { StopCoroutine(fadeCoroutine); + } fadeCoroutine = StartCoroutine(FadeVolume(0.1f, false)); //audioListener.enabled = false; @@ -88,8 +92,9 @@ private IEnumerator FadeVolume(float fadeTime, bool fadeIn) { yield return null; } - if (!fadeIn) + if (!fadeIn) { audioSource.Stop(); + } } } } diff --git a/Assets/Scripts/UI/Menu/Loading/LoadingWaitingOn.cs b/Assets/Scripts/UI/Menu/Loading/LoadingWaitingOn.cs index 8056567769..0fa3cd9def 100644 --- a/Assets/Scripts/UI/Menu/Loading/LoadingWaitingOn.cs +++ b/Assets/Scripts/UI/Menu/Loading/LoadingWaitingOn.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Text; using UnityEngine; using TMPro; @@ -14,15 +14,18 @@ public class LoadingWaitingOn : MonoBehaviour { //---Serialized Variables [SerializeField] private TMP_Text playerList; + [SerializeField] private TMP_Text statusText; //---Private Variables - private TMP_Text text; private GameObject playerListParent; + public void OnValidate() { + this.SetIfNull(ref statusText); + } + public void Awake() { - text = GetComponent(); playerListParent = playerList.transform.parent.gameObject; - text.text = GlobalController.Instance.translationManager.GetTranslation("ui.loading.loading"); + statusText.text = GlobalController.Instance.translationManager.GetTranslation("ui.loading.loading"); } public void OnEnable() { @@ -36,26 +39,28 @@ public void Update() { // Loading (as spectator) if (!ourData || ourData.IsCurrentlySpectating) { - text.text = tm.GetTranslation("ui.loading.spectator"); + statusText.text = tm.GetTranslation("ui.loading.spectator"); playerListParent.SetActive(false); return; } // Still loading if (!GameManager.Instance || !GameManager.Instance.Object) { - text.text = tm.GetTranslation("ui.loading.loading"); + statusText.text = tm.GetTranslation("ui.loading.loading"); playerListParent.SetActive(false); return; } // Game starting if (GameManager.Instance.gameObject.activeSelf && GameManager.Instance.GameStartTimer.IsRunning) { - text.text = tm.GetTranslation("ui.loading.starting"); + statusText.text = tm.GetTranslation("ui.loading.starting"); playerListParent.SetActive(false); return; } - HashSet waitingFor = new(); + // Waiting for others + StringBuilder waitingOnPlayers = new(); + NetworkRunner runner = GameManager.Instance.Runner; foreach (PlayerRef player in runner.ActivePlayers) { PlayerData data = player.GetPlayerData(runner); @@ -64,14 +69,13 @@ public void Update() { } if (!data.IsLoaded) { - waitingFor.Add(data.GetNickname()); + waitingOnPlayers.AppendLine(data.GetNickname()); } } - // Waiting for others - text.text = tm.GetTranslation("ui.loading.waiting"); + statusText.text = tm.GetTranslation("ui.loading.waiting"); playerListParent.SetActive(true); - playerList.text = waitingFor.Count == 0 ? "" : "\n- " + string.Join("\n- ", waitingFor); + playerList.text = waitingOnPlayers.ToString(); } } } diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 5268bddf2e..0053b0308f 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -137,7 +137,8 @@ PlayerSettings: vulkanEnableCommandBufferRecycling: 1 loadStoreDebugModeEnabled: 0 bundleVersion: 1.8.0.0 - preloadedAssets: [] + preloadedAssets: + - {fileID: 11400000, guid: 49335f30d253220488d2d332ade6e901, type: 2} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1