From 36f6ccc251698c37865fb9f832845294c76d3f1c Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 1 Dec 2021 01:10:38 -0800 Subject: [PATCH] started --- QSB/AssetBundles/network | Bin 3780 -> 3948 bytes QSB/AssetBundles/network.manifest | 9 ++- QSB/JellyfishSync/JellyfishManager.cs | 11 +++ QSB/JellyfishSync/Patches/JellyfishPatches.cs | 40 ++++++++++ .../TransformSync/JellyfishTransformSync.cs | 70 ++++++++++++++++++ .../WorldObjects/QSBJellyfish.cs | 40 ++++++++++ QSB/Patches/QSBPatchManager.cs | 10 ++- QSB/QSBCore.cs | 6 +- QSB/QSBNetworkManager.cs | 4 + 9 files changed, 181 insertions(+), 9 deletions(-) create mode 100644 QSB/JellyfishSync/JellyfishManager.cs create mode 100644 QSB/JellyfishSync/Patches/JellyfishPatches.cs create mode 100644 QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs create mode 100644 QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs diff --git a/QSB/AssetBundles/network b/QSB/AssetBundles/network index 8de1b060a42ca0f6d5ef58f6790e7cf7091a8986..6efbc1fcc2c4971a1c6b8b8a12be6f8142567480 100644 GIT binary patch delta 3864 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 MC~Ql4|F@N}k(=8e^Z)<= diff --git a/QSB/AssetBundles/network.manifest b/QSB/AssetBundles/network.manifest index 12010b7b..6e5ee70c 100644 --- a/QSB/AssetBundles/network.manifest +++ b/QSB/AssetBundles/network.manifest @@ -1,12 +1,12 @@ ManifestFileVersion: 0 -CRC: 1923832523 +CRC: 551896829 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 81ec87f15e23d40065c2c9c6a04728d0 + Hash: 0fa5758f55c8803c7ba77a52ab2c9488 TypeTreeHash: serializedVersion: 2 - Hash: 0f787b84b284b04ad8bc62b6e0ef5423 + Hash: 927887737c4cf3ead147733f47326ca9 HashAppended: 0 ClassTypes: - Class: 1 @@ -29,6 +29,8 @@ ClassTypes: Script: {fileID: -1164351254, guid: 27687deae413b90448366870cb0de502, type: 3} - Class: 114 Script: {fileID: -1309757293, guid: 27687deae413b90448366870cb0de502, type: 3} +- Class: 114 + Script: {fileID: 316226861, guid: 27687deae413b90448366870cb0de502, type: 3} - Class: 114 Script: {fileID: 78926581, guid: 27687deae413b90448366870cb0de502, type: 3} - Class: 114 @@ -47,6 +49,7 @@ ClassTypes: Script: {instanceID: 0} SerializeReferenceClassIdentifiers: [] Assets: +- Assets/Prefabs/NetworkJellyfish.prefab - Assets/Prefabs/NetworkProbe.prefab - Assets/Prefabs/NETWORK_Player_Body.prefab - Assets/Prefabs/NetworkOrb.prefab diff --git a/QSB/JellyfishSync/JellyfishManager.cs b/QSB/JellyfishSync/JellyfishManager.cs new file mode 100644 index 00000000..f85fa7cd --- /dev/null +++ b/QSB/JellyfishSync/JellyfishManager.cs @@ -0,0 +1,11 @@ +using QSB.JellyfishSync.WorldObjects; +using QSB.WorldSync; + +namespace QSB.JellyfishSync +{ + public class JellyfishManager : WorldObjectManager + { + protected override void RebuildWorldObjects(OWScene scene) + => QSBWorldSync.Init(); + } +} diff --git a/QSB/JellyfishSync/Patches/JellyfishPatches.cs b/QSB/JellyfishSync/Patches/JellyfishPatches.cs new file mode 100644 index 00000000..c194fcc5 --- /dev/null +++ b/QSB/JellyfishSync/Patches/JellyfishPatches.cs @@ -0,0 +1,40 @@ +using HarmonyLib; +using QSB.Events; +using QSB.JellyfishSync.WorldObjects; +using QSB.Patches; +using QSB.WorldSync; + +namespace QSB.JellyfishSync.Patches +{ + public class JellyfishPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + + [HarmonyPrefix] + [HarmonyPatch(typeof(JellyfishController), nameof(JellyfishController.OnSectorOccupantsUpdated))] + public static bool OnSectorOccupantsUpdated(JellyfishController __instance) + { + if (!QSBCore.WorldObjectsReady) + { + return false; + } + var qsbJellyfish = QSBWorldSync.GetWorldFromUnity(__instance); + + if (!__instance.gameObject.activeSelf && __instance._sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe | DynamicOccupant.Ship)) + { + __instance.gameObject.SetActive(true); + __instance._jellyfishBody.Unsuspend(); + QSBEventManager.FireEvent(EventNames.QSBSuspendChange, qsbJellyfish.TransformSync.NetIdentity, true); + return false; + } + if (__instance.gameObject.activeSelf && !__instance._sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe | DynamicOccupant.Ship)) + { + __instance._jellyfishBody.Suspend(); + __instance.gameObject.SetActive(false); + QSBEventManager.FireEvent(EventNames.QSBSuspendChange, qsbJellyfish.TransformSync.NetIdentity, true); + } + + return false; + } + } +} diff --git a/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs new file mode 100644 index 00000000..5f3a614e --- /dev/null +++ b/QSB/JellyfishSync/TransformSync/JellyfishTransformSync.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; +using QSB.JellyfishSync.WorldObjects; +using QSB.Syncs.Unsectored.Rigidbodies; +using QSB.WorldSync; +using QuantumUNET.Transport; + +namespace QSB.JellyfishSync.TransformSync +{ + public class JellyfishTransformSync : UnsectoredRigidbodySync + { + public override bool IsReady => QSBCore.WorldObjectsReady; + public override bool UseInterpolation => false; + + private QSBJellyfish _qsbJellyfish; + private static readonly List _instances = new(); + + protected override OWRigidbody GetRigidbody() + => _qsbJellyfish.AttachedObject._jellyfishBody; + + private static int _nextId; + private int _id; + + public override void Start() + { + _id = _nextId++; + base.Start(); + } + + protected override void OnDestroy() + { + _nextId--; + base.OnDestroy(); + } + + public override float GetNetworkSendInterval() => 1; + + protected override void Init() + { + _qsbJellyfish = QSBWorldSync.GetWorldFromId(_id); + _qsbJellyfish.TransformSync = this; + + base.Init(); + SetReferenceTransform(_qsbJellyfish.AttachedObject._planetBody.transform); + } + + private bool _shouldUpdate; + + public override void DeserializeTransform(QNetworkReader reader, bool initialState) + { + base.DeserializeTransform(reader, initialState); + _shouldUpdate = true; + } + + protected override bool UpdateTransform() + { + if (HasAuthority) + { + return base.UpdateTransform(); + } + + if (!_shouldUpdate) + { + return false; + } + + _shouldUpdate = false; + return base.UpdateTransform(); + } + } +} diff --git a/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs b/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs new file mode 100644 index 00000000..9641f551 --- /dev/null +++ b/QSB/JellyfishSync/WorldObjects/QSBJellyfish.cs @@ -0,0 +1,40 @@ +using QSB.Events; +using QSB.JellyfishSync.TransformSync; +using QSB.SuspendableSync; +using QSB.WorldSync; +using QuantumUNET; +using UnityEngine; + +namespace QSB.JellyfishSync.WorldObjects +{ + public class QSBJellyfish : WorldObject + { + public JellyfishTransformSync TransformSync; + + public override void Init(JellyfishController attachedObject, int id) + { + ObjectId = id; + AttachedObject = attachedObject; + + if (QSBCore.IsHost) + { + QNetworkServer.Spawn(Object.Instantiate(QSBNetworkManager.Instance.JellyfishPrefab)); + QSBCore.UnityEvents.RunWhen(() => TransformSync, () => + SuspendableManager.Register(TransformSync.NetIdentity)); + } + + // for when you host/connect mid-game + QSBCore.UnityEvents.RunWhen(() => TransformSync, () => + QSBEventManager.FireEvent(EventNames.QSBSuspendChange, TransformSync.NetIdentity, AttachedObject._jellyfishBody.IsSuspended())); + } + + public override void OnRemoval() + { + if (QSBCore.IsHost) + { + SuspendableManager.Unregister(TransformSync.NetIdentity); + QNetworkServer.Destroy(TransformSync.gameObject); + } + } + } +} diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index 8d3745cb..9712fdb5 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -1,4 +1,7 @@ -using HarmonyLib; +using System; +using System.Collections.Generic; +using System.Linq; +using HarmonyLib; using OWML.Common; using QSB.Anglerfish.Patches; using QSB.Animation.NPC.Patches; @@ -11,6 +14,7 @@ using QSB.ElevatorSync.Patches; using QSB.GeyserSync.Patches; using QSB.Inputs.Patches; using QSB.ItemSync.Patches; +using QSB.JellyfishSync.Patches; using QSB.LogSync.Patches; using QSB.MeteorSync.Patches; using QSB.OrbSync.Patches; @@ -27,9 +31,6 @@ using QSB.Tools.SignalscopeTool.FrequencySync.Patches; using QSB.Tools.TranslatorTool.TranslationSync.Patches; using QSB.Utility; using QSB.ZeroGCaveSync.Patches; -using System; -using System.Collections.Generic; -using System.Linq; namespace QSB.Patches { @@ -78,6 +79,7 @@ namespace QSB.Patches new AnglerPatches(), new MeteorClientPatches(), new MeteorServerPatches(), + new JellyfishPatches(), new TravelerControllerPatches(), new ZeroGCavePatches() }; diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index 97e13472..93dd0944 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -1,4 +1,5 @@ -using OWML.Common; +using System.Linq; +using OWML.Common; using OWML.ModHelper; using OWML.ModHelper.Input; using QSB.Anglerfish; @@ -11,6 +12,7 @@ using QSB.ElevatorSync; using QSB.GeyserSync; using QSB.Inputs; using QSB.ItemSync; +using QSB.JellyfishSync; using QSB.Menus; using QSB.MeteorSync; using QSB.OrbSync; @@ -32,7 +34,6 @@ using QSB.WorldSync; using QSB.ZeroGCaveSync; using QuantumUNET; using QuantumUNET.Components; -using System.Linq; using UnityEngine; /* @@ -141,6 +142,7 @@ namespace QSB gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); + gameObject.AddComponent(); gameObject.AddComponent(); DebugBoxManager.Init(); diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 57b5f4d3..a9f5c970 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -35,6 +35,7 @@ namespace QSB public GameObject OrbPrefab { get; private set; } public GameObject ShipPrefab { get; private set; } public GameObject AnglerPrefab { get; private set; } + public GameObject JellyfishPrefab { get; private set; } public string PlayerName { get; private set; } private const int MaxConnections = 128; @@ -66,6 +67,9 @@ namespace QSB AnglerPrefab = _assetBundle.LoadAsset("assets/Prefabs/networkangler.prefab"); spawnPrefabs.Add(AnglerPrefab); + JellyfishPrefab = _assetBundle.LoadAsset("assets/Prefabs/networkjellyfish.prefab"); + spawnPrefabs.Add(JellyfishPrefab); + ConfigureNetworkManager(); }