AI Sync initial changes
This commit is contained in:
@@ -17,13 +17,15 @@ using BoneSync.Data;
|
||||
using StressLevelZero.Interaction;
|
||||
using UnhollowerBaseLib;
|
||||
using BoneSync.Patching;
|
||||
using BoneSync.Sync.Components;
|
||||
using Oculus.Platform.Models;
|
||||
|
||||
|
||||
namespace BoneSync.Player
|
||||
{
|
||||
internal class PlayerRig
|
||||
{
|
||||
private const float RIG_SYNC_FPS = 30;
|
||||
private const float RIG_SYNC_FPS = Syncable.SYNC_FPS;
|
||||
|
||||
public static AssetBundle rigBundle;
|
||||
private static float _lastLocalSyncTime = 0;
|
||||
@@ -57,15 +59,18 @@ namespace BoneSync.Player
|
||||
{
|
||||
playerRig.UpdateIK();
|
||||
}
|
||||
|
||||
if (Time.time - _lastLocalSyncTime > 1 / RIG_SYNC_FPS)
|
||||
{
|
||||
SendLocalPlayerSync();
|
||||
_lastLocalSyncTime = Time.time;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void LocalSyncTick()
|
||||
{
|
||||
if (Time.realtimeSinceStartup - _lastLocalSyncTime > 1 / RIG_SYNC_FPS)
|
||||
{
|
||||
SendLocalPlayerSync();
|
||||
_lastLocalSyncTime = Time.realtimeSinceStartup;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetFingerCurl(Handedness handedness, SimpleFingerCurl fingerCurl)
|
||||
{
|
||||
characterAnimationManager.ApplyFingerCurl(handedness, 1f - fingerCurl.thumb, 1f - fingerCurl.index, 1f - fingerCurl.middle, 1f - fingerCurl.ring, 1f - fingerCurl.pinky);
|
||||
@@ -82,6 +87,12 @@ namespace BoneSync.Player
|
||||
|
||||
SetFingerCurl(Handedness.LEFT, playerSyncInfo.leftHandFingerCurl);
|
||||
SetFingerCurl(Handedness.RIGHT, playerSyncInfo.rightHandFingerCurl);
|
||||
|
||||
UpdatePose(Handedness.LEFT, playerSyncInfo.poseIndexLeft);
|
||||
UpdatePose(Handedness.RIGHT, playerSyncInfo.poseIndexRight);
|
||||
|
||||
UpdatePoseRadius(Handedness.LEFT, playerSyncInfo.poseRadiusLeft);
|
||||
UpdatePoseRadius(Handedness.RIGHT, playerSyncInfo.poseRadiusRight);
|
||||
}
|
||||
|
||||
public void UpdatePose(Handedness hand, int index)
|
||||
@@ -97,21 +108,34 @@ namespace BoneSync.Player
|
||||
public void UpdatePoseRadius(Handedness hand, float radius) => characterAnimationManager?.SetCylinderRadius(hand, radius);
|
||||
|
||||
|
||||
private static GameObject localPlayerRig;
|
||||
private static Transform localRigRoot;
|
||||
private static Transform localRigHeadTransform;
|
||||
private static Transform localRigLeftHandTransform;
|
||||
private static Transform localRigRightHandTransform;
|
||||
public static void SetLocalRigReferences()
|
||||
{
|
||||
if (localPlayerRig != null) return;
|
||||
localPlayerRig = GameObject.Find("[RigManager (Default Brett)]/[SkeletonRig (GameWorld Brett)]");
|
||||
localRigRoot = localPlayerRig.transform;
|
||||
|
||||
localRigHeadTransform = localRigRoot.Find("Head");
|
||||
localRigLeftHandTransform = localRigRoot.Find("Hand (left)");
|
||||
localRigRightHandTransform = localRigRoot.Find("Hand (right)");
|
||||
}
|
||||
|
||||
public static PlayerSyncInfo? GetLocalSyncInfo()
|
||||
{
|
||||
GameObject localPlayerRig = GameObject.Find("[RigManager (Default Brett)]/[SkeletonRig (GameWorld Brett)]");
|
||||
SetLocalRigReferences();
|
||||
|
||||
if (localPlayerRig == null)
|
||||
{
|
||||
MelonLogger.Msg("Local player rig not found");
|
||||
return null;
|
||||
}
|
||||
Transform root = localPlayerRig.transform;
|
||||
|
||||
|
||||
Transform localHeadTransform = root.Find("Head");
|
||||
Transform localLeftHandTransform = root.Find("Hand (left)");
|
||||
Transform localRightHandTransform = root.Find("Hand (right)");
|
||||
|
||||
if (localHeadTransform == null || localLeftHandTransform == null || localRightHandTransform == null)
|
||||
if (localRigHeadTransform == null || localRigLeftHandTransform == null || localRigRightHandTransform == null)
|
||||
{
|
||||
MelonLogger.Msg("Local player rig components not found");
|
||||
return null;
|
||||
@@ -119,10 +143,10 @@ namespace BoneSync.Player
|
||||
|
||||
PlayerSyncInfo playerSyncInfo = new PlayerSyncInfo()
|
||||
{
|
||||
rootPos = root.position,
|
||||
headPos = new SimpleSyncTransform(localHeadTransform),
|
||||
leftHandPos = new SimpleSyncTransform(localLeftHandTransform),
|
||||
rightHandPos = new SimpleSyncTransform(localRightHandTransform),
|
||||
rootPos = localRigRoot.position,
|
||||
headPos = new SimpleSyncTransform(localRigHeadTransform),
|
||||
leftHandPos = new SimpleSyncTransform(localRigLeftHandTransform),
|
||||
rightHandPos = new SimpleSyncTransform(localRigRightHandTransform),
|
||||
//leftHandFingerCurl = new SimpleFingerCurl(PlayerScripts.playerLeftHand.fingerCurl),
|
||||
//rightHandFingerCurl = new SimpleFingerCurl(PlayerScripts.playerRightHand.fingerCurl)
|
||||
poseIndexLeft = SkeletonHandPatches.poseIndexLeft,
|
||||
@@ -142,7 +166,7 @@ namespace BoneSync.Player
|
||||
|
||||
private static void SendLocalPlayerSync()
|
||||
{
|
||||
if (!BoneSync.lobby.IsConnected()) return;
|
||||
if (!BoneSync.IsConnected) return;
|
||||
//MelonLogger.Msg("Sending local player sync");
|
||||
PlayerSyncInfo? playerSyncInfo = GetLocalSyncInfo();
|
||||
if (!playerSyncInfo.HasValue) return;
|
||||
|
||||
Reference in New Issue
Block a user