Basic object sync
This commit is contained in:
@@ -17,9 +17,8 @@ namespace BoneSync.Player
|
||||
{
|
||||
internal class PlayerRig
|
||||
{
|
||||
public const string RIGMANAGER_SCENE_NAME = "[RigManager (Default Brett)]";
|
||||
//public const string RIGMANAGER_SCENE_NAME = "[RigManager (Default Brett)]";
|
||||
|
||||
private static GameObject _rigPrefabCache = null;
|
||||
private static List<PlayerRig> _playerRigs = new List<PlayerRig>();
|
||||
|
||||
private GameObject playerRig;
|
||||
@@ -29,100 +28,18 @@ namespace BoneSync.Player
|
||||
private Animator repAnimator;
|
||||
|
||||
|
||||
|
||||
public void UpdatePlayerSync(PlayerSyncInfo playerSyncInfo)
|
||||
{
|
||||
playerRig.transform.ApplySimpleTransform(playerSyncInfo.headPos);
|
||||
//playerRig.transform.ApplySimpleTransform(playerSyncInfo.headPos);
|
||||
}
|
||||
|
||||
public static void Tick()
|
||||
public PlayerRig()
|
||||
{
|
||||
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()
|
||||
{
|
||||
return; // disable this for now
|
||||
if (_rigPrefabCache) return;
|
||||
GetPlayerRigPrefab();
|
||||
}
|
||||
public static GameObject GetPlayerRigPrefab()
|
||||
{
|
||||
if (_rigPrefabCache == null)
|
||||
{
|
||||
// find the rig game object in the scene
|
||||
GameObject playerRig = GameObject.Find(RIGMANAGER_SCENE_NAME);
|
||||
if (playerRig == null)
|
||||
{
|
||||
MelonLogger.Error("Failed to find RigManager scene object");
|
||||
return null;
|
||||
}
|
||||
// create a clone of the rig
|
||||
GameObject playerRep = GameObject.Instantiate(playerRig);
|
||||
playerRep.gameObject.SetActive(false);
|
||||
playerRep.name = "[RigManager (Networked)]";
|
||||
|
||||
RigManager repRigManager = playerRep.GetComponent<RigManager>();
|
||||
repRigManager.oculusControllerRig.gameObject.SetActive(false);
|
||||
repRigManager.steamControllerRig.gameObject.SetActive(false);
|
||||
repRigManager.uiRig.gameObject.SetActive(false);
|
||||
repRigManager.enabled = false;
|
||||
|
||||
|
||||
_rigPrefabCache = playerRep;
|
||||
MelonLogger.Msg("Player rig prefab created");
|
||||
}
|
||||
return _rigPrefabCache;
|
||||
}
|
||||
|
||||
public static PlayerRig InstantiatePlayerRigPrefab()
|
||||
{
|
||||
GameObject prefab = GetPlayerRigPrefab();
|
||||
if (prefab == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
GameObject go = GameObject.Instantiate(prefab);
|
||||
go.SetActive(true);
|
||||
PlayerRig playerRig = new PlayerRig(go);
|
||||
|
||||
return playerRig;
|
||||
|
||||
}
|
||||
|
||||
private void UpdateRig()
|
||||
{
|
||||
Vector3 velocity = Vector3.zero;
|
||||
Vector3 acceleration = Vector3.zero;
|
||||
//SkeletonRig skeletonRig = rigManager.gameWorldSkeletonRig;
|
||||
//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);
|
||||
|
||||
Reference in New Issue
Block a user