I dont know what i am doing
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user