I dont know what i am doing

This commit is contained in:
2025-02-26 13:53:46 +02:00
parent c1c879c80c
commit b721e2d25e
5 changed files with 124 additions and 19 deletions

View File

@@ -88,6 +88,10 @@
<Reference Include="UnityEngine"> <Reference Include="UnityEngine">
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\BONEWORKS\BONEWORKS\MelonLoader\Managed\UnityEngine.dll</HintPath> <HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\BONEWORKS\BONEWORKS\MelonLoader\Managed\UnityEngine.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEngine.AnimationModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\BONEWORKS\BONEWORKS\MelonLoader\Managed\UnityEngine.AnimationModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CoreModule"> <Reference Include="UnityEngine.CoreModule">
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\BONEWORKS\BONEWORKS\MelonLoader\Managed\UnityEngine.CoreModule.dll</HintPath> <HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\BONEWORKS\BONEWORKS\MelonLoader\Managed\UnityEngine.CoreModule.dll</HintPath>
</Reference> </Reference>

View File

@@ -3,15 +3,17 @@ using BoneSync.Networking.LobbyManager;
using BoneSync.Networking.Transport; using BoneSync.Networking.Transport;
using MelonLoader; using MelonLoader;
using HarmonyLib; using HarmonyLib;
using UnityEngine;
using BoneSync.PlayerRigs;
namespace BoneSync namespace BoneSync
{ {
public static class BuildInfo public static class BuildInfo
{ {
public const string Name = "BoneSync"; // Name of the Mod. (MUST BE SET) public const string Name = "BoneSync"; // Name of the Mod. (MUST BE SET)
public const string Author = null; // Author of the Mod. (Set as null if none) public const string Author = "aarov"; // Author of the Mod. (Set as null if none)
public const string Company = null; // Company that made the Mod. (Set as null if none) public const string Company = null; // Company that made the Mod. (Set as null if none)
public const string Version = "1.0.0"; // Version of the Mod. (MUST BE SET) public const string Version = "0.0.1"; // Version of the Mod. (MUST BE SET)
public const string DownloadLink = null; // Download Link for the Mod. (Set as null if none) public const string DownloadLink = null; // Download Link for the Mod. (Set as null if none)
} }
@@ -32,7 +34,7 @@ namespace BoneSync
public static void PatchAll() public static void PatchAll()
{ {
HarmonyLib.Harmony harmony = new HarmonyLib.Harmony("com.bonesync"); HarmonyLib.Harmony harmony = new HarmonyLib.Harmony("com.aarov.bonesync");
harmony.PatchAll(); harmony.PatchAll();
} }
@@ -54,6 +56,22 @@ namespace BoneSync
public override void OnUpdate() public override void OnUpdate()
{ {
transport.Tick(); transport.Tick();
PlayerRig.Tick();
if (Input.GetKeyDown(KeyCode.P))
{
MelonLogger.Msg("P key pressed");
PlayerRig playerRig = PlayerRig.InstantiatePlayerRigPrefab();
if (playerRig == null)
{
MelonLogger.Error("Failed to instantiate player rig prefab");
return;
}
else
{
MelonLogger.Msg("Player rig instantiated");
}
}
} }
public override void OnFixedUpdate() public override void OnFixedUpdate()

View File

@@ -18,12 +18,34 @@ namespace BoneSync.Networking.Transport
{ {
SteamNetworking.OnP2PSessionRequest += OnP2PSessionRequest; SteamNetworking.OnP2PSessionRequest += OnP2PSessionRequest;
} }
private List<SteamId> OpenP2PConnections = new List<SteamId>();
private void OnP2PSessionRequest(SteamId steamId) private void OnP2PSessionRequest(SteamId steamId)
{ {
MelonLogger.Msg("P2P Request from " + steamId); MelonLogger.Msg("P2P Request from " + steamId);
if (BoneSync.lobby.GetPeers().Contains(steamId)) if (BoneSync.lobby.GetPeers().Contains(steamId))
{
SteamNetworking.AcceptP2PSessionWithUser(steamId); SteamNetworking.AcceptP2PSessionWithUser(steamId);
if (!OpenP2PConnections.Contains(steamId))
{
OpenP2PConnections.Add(steamId);
}
}
}
private void CleanUp()
{
ulong[] peers = BoneSync.lobby.GetPeers();
for (int i = 0; i < OpenP2PConnections.Count; i++)
{
SteamId peer = OpenP2PConnections[i];
if (!peers.Contains(peer))
{
OpenP2PConnections.RemoveAt(i);
i--;
}
}
} }
private void ProcessPacket(P2Packet steamPacket) private void ProcessPacket(P2Packet steamPacket)
@@ -35,8 +57,10 @@ namespace BoneSync.Networking.Transport
Packet.OnPacketReceived(packet); Packet.OnPacketReceived(packet);
} }
} }
public override bool Tick() public override bool Tick()
{ {
if (!SteamClient.IsValid) return false;
int processed = 0; int processed = 0;
while (SteamNetworking.IsP2PPacketAvailable()) while (SteamNetworking.IsP2PPacketAvailable())
{ {

View File

@@ -8,6 +8,7 @@ using UnityEngine;
using StressLevelZero; using StressLevelZero;
using StressLevelZero.Rig; using StressLevelZero.Rig;
using StressLevelZero.Player; using StressLevelZero.Player;
using StressLevelZero.VRMK;
namespace BoneSync.PlayerRigs namespace BoneSync.PlayerRigs
@@ -16,14 +17,44 @@ namespace BoneSync.PlayerRigs
{ {
private const string RIGMANAGER_SCENE_NAME = "[RigManager (Default Brett)]"; private const string RIGMANAGER_SCENE_NAME = "[RigManager (Default Brett)]";
private static GameObject _rigPrefabCache = null; private static GameObject _rigPrefabCache = null;
private static List<PlayerRig> _playerRigs = new List<PlayerRig>();
private Rig[] rigs;
private GameObject playerRig; private GameObject playerRig;
private RigManager rigManager;
private SLZ_Body body;
private CharacterAnimationManager characterAnimationManager;
private Animator repAnimator;
public static void Tick()
{
TryRegisterRigPrefab();
foreach (PlayerRig playerRig in _playerRigs)
{
try
{
playerRig.UpdateRig();
} catch (Exception e)
{
MelonLogger.Error(e.Message);
//MelonLogger.Error("Failed to update player rig");
}
}
}
public static void TryRegisterRigPrefab()
{
if (_rigPrefabCache) return;
GetPlayerRigPrefab();
}
public static GameObject GetPlayerRigPrefab() public static GameObject GetPlayerRigPrefab()
{ {
if (_rigPrefabCache == null) if (_rigPrefabCache == null)
{ {
// find the rig game object in the scene
GameObject playerRig = GameObject.Find(RIGMANAGER_SCENE_NAME); GameObject playerRig = GameObject.Find(RIGMANAGER_SCENE_NAME);
if (playerRig == null) if (playerRig == null)
{ {
@@ -32,35 +63,62 @@ namespace BoneSync.PlayerRigs
} }
// create a clone of the rig // create a clone of the rig
GameObject playerRep = GameObject.Instantiate(playerRig); GameObject playerRep = GameObject.Instantiate(playerRig);
playerRep.gameObject.SetActive(false);
playerRep.name = "[RigManager (Networked)]"; playerRep.name = "[RigManager (Networked)]";
GameObject.DestroyImmediate(playerRep.transform.Find("[ControllerRig (SteamVR)]")); RigManager repRigManager = playerRep.GetComponent<RigManager>();
GameObject.DestroyImmediate(playerRep.transform.Find("OVRCameraRig")); repRigManager.oculusControllerRig.gameObject.SetActive(false);
GameObject.DestroyImmediate(playerRep.transform.Find("[UIRig]")); repRigManager.steamControllerRig.gameObject.SetActive(false);
GameObject.DestroyImmediate(playerRep.transform.Find("AirParticles")); repRigManager.uiRig.gameObject.SetActive(false);
GameObject.DestroyImmediate(playerRep.transform.Find("Vignetter")); repRigManager.enabled = false;
_rigPrefabCache = playerRep;
MelonLogger.Msg("Player rig prefab created");
} }
return _rigPrefabCache; return _rigPrefabCache;
} }
public static PlayerRig InstantiatePlayerRigPrefab() public static PlayerRig InstantiatePlayerRigPrefab()
{ {
GameObject playerRig = GetPlayerRigPrefab(); GameObject prefab = GetPlayerRigPrefab();
if (playerRig == null) if (prefab == null)
{ {
return null; return null;
} }
return new PlayerRig(playerRig); GameObject go = GameObject.Instantiate(prefab);
go.SetActive(true);
PlayerRig playerRig = new PlayerRig(go);
return playerRig;
} }
private void UpdateRig()
private PlayerRig(GameObject playerRig)
{ {
this.playerRig = playerRig; Vector3 velocity = Vector3.zero;
rigs = playerRig.GetComponentsInChildren<Rig>(); Vector3 acceleration = Vector3.zero;
Rig rig = rigs[0]; //SkeletonRig skeletonRig = rigManager.gameWorldSkeletonRig;
rig.DisableBallLoco(); //skeletonRig.OnLateUpdate();
rigManager.ControllerRig.gameObject.SetActive(false);
characterAnimationManager.OnLateUpdate();
body.FullBodyUpdate(velocity, acceleration);
body.ArtToBlender.UpdateBlender();
repAnimator.Update(Time.deltaTime);
}
private PlayerRig(GameObject go)
{
playerRig = go;
rigManager = playerRig.GetComponent<RigManager>();
rigManager.enabled = true;
UpdateRig();
_playerRigs.Add(this);
}
public void Destroy()
{
_playerRigs.Remove(this);
GameObject.Destroy(playerRig);
} }
} }
} }

View File

@@ -16,6 +16,7 @@ using MelonLoader;
[assembly: AssemblyVersion(BoneSync.BuildInfo.Version)] [assembly: AssemblyVersion(BoneSync.BuildInfo.Version)]
[assembly: AssemblyFileVersion(BoneSync.BuildInfo.Version)] [assembly: AssemblyFileVersion(BoneSync.BuildInfo.Version)]
[assembly: NeutralResourcesLanguage("en")] [assembly: NeutralResourcesLanguage("en")]
[assembly: MelonOptionalDependencies("xunit.assert", "xunit.core")] // users don't need to install xunit.assert and xunit.core to use this mod
[assembly: MelonInfo(typeof(BoneSync.BoneSync), BoneSync.BuildInfo.Name, BoneSync.BuildInfo.Version, BoneSync.BuildInfo.Author, BoneSync.BuildInfo.DownloadLink)] [assembly: MelonInfo(typeof(BoneSync.BoneSync), BoneSync.BuildInfo.Name, BoneSync.BuildInfo.Version, BoneSync.BuildInfo.Author, BoneSync.BuildInfo.DownloadLink)]