feat: basic online working with relay

This commit is contained in:
Chris
2025-09-03 19:37:27 -04:00
parent 5be9c06cf2
commit a13f10564b
11 changed files with 299 additions and 75 deletions

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using Reset.Core.Tools;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Users;
@@ -12,7 +13,17 @@ namespace Reset{
public static GameObject Input;
public static SessionManager Session;
public static GameObject Player;
private static GameObject player;
public static GameObject Player{
get{ return player; }
set{ player = value; }
}
[RuntimeInitializeOnLoadMethod]
static void Reset(){
player = null;
}
[RuntimeInitializeOnLoadMethod]
static void PopulateSceneReferences(){
@@ -35,6 +46,17 @@ namespace Reset{
playerUser = InputUser.PerformPairingWithDevice(device, playerUser, InputUserPairingOptions.UnpairCurrentDevicesFromUser);
}
public static GameObject FindNewPlayer(){
var allPlayers = GameObject.FindGameObjectsWithTag("Player");
for (int i = 0; i < allPlayers.Length; i++) {
if (allPlayers[i].GetComponent<Player>() && allPlayers[i].GetComponent<NetworkObject>().IsLocalPlayer) {
return allPlayers[i];
}
}
return null;
}
public static void RequestNewController(){
try {
GameObject.Find("Input Selector").GetComponent<InputFinder>().AwaitNewInput();

View File

@@ -6,6 +6,7 @@ using Reset;
using Sirenix.OdinInspector;
using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Serialization;
using UnityEngine.UIElements;
using Vector2 = UnityEngine.Vector2;
@@ -44,8 +45,7 @@ public class LockOnManager : MonoBehaviour{
private Label elementLabelName;
private VisualElement elementRoot;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start(){
private void Awake(){
// Register as singleton
if (Instance == null) {
Instance = this;
@@ -57,11 +57,10 @@ public class LockOnManager : MonoBehaviour{
// References from camera
targetGroup = GameManager.Camera.transform.Find("Target Group").GetComponent<CinemachineTargetGroup>();
lockOnDocument = GameManager.UI.transform.Find("Lock On").GetComponent<UIDocument>();
// Set the camera's target as the player
targetGroup.Targets.Add(new CinemachineTargetGroup.Target{Object = transform, Radius = 3.5f, Weight = 1f});
GameManager.Camera.transform.Find("Cinemachine").GetComponent<CinemachineCamera>().Target.TrackingTarget = transform;
}
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start(){
// Quick check for things in lock-on target that aren't lock-onable
if (mainTarget != null && mainTarget.gameObject.GetComponent<ILockOnTarget>() == null) {
mainTarget.gameObject.AddComponent<GenericLockOnTarget>();
@@ -81,6 +80,18 @@ public class LockOnManager : MonoBehaviour{
}
}
public void AttachCamera(GameObject target){
targetGroup = GameManager.Camera.transform.Find("Target Group").GetComponent<CinemachineTargetGroup>();
Debug.Log($"{GameManager.Camera}");
// Set the camera's target as the player
targetGroup.Targets.Add(new CinemachineTargetGroup.Target{Object = target.transform, Radius = 3.5f, Weight = 1f});
GameManager.Camera.transform.Find("Cinemachine").GetComponent<CinemachineCamera>().Target.TrackingTarget = target.transform;
GameManager.Camera.transform.Find("Cinemachine").GetComponent<CustomInputHandler>().PlayerInput =
GetComponent<PlayerInput>();
GameManager.Camera.transform.Find("Cinemachine").GetComponent<CustomInputHandler>().AddEvents();
}
void Update(){
if (mainTarget != null && mainTarget.gameObject.GetComponent<ILockOnTarget>() == null) {
mainTarget.gameObject.AddComponent<GenericLockOnTarget>();

View File

@@ -13,6 +13,7 @@ using Unity.Services.Core;
public class SessionManager : MonoBehaviour{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start(){
}
// Update is called once per frame