This commit is contained in:
Pascal Serrarens 2024-04-19 10:56:26 +02:00
parent 54fb579556
commit 76fe0a60f4
12 changed files with 55 additions and 205 deletions

View File

@ -47,20 +47,6 @@ namespace Passer.Humanoid {
[CustomEditor(typeof(HumanoidPlayer))]
public class HumanoidPlayer_Editor : HumanoidNetworking_Editor {
#if hNW_UNET
public override void OnInspectorGUI() {
serializedObject.Update();
SendRateInspector();
DebugLevelInspector();
SmoothingInspector();
SyncFingerSwingInspector();
CreateLocalRemotesInspector();
SyncTrackingInspector();
serializedObject.ApplyModifiedProperties();
}
#endif
public static Stack<GameObject> prefabsToSave = new Stack<GameObject>();
public static Stack<string> prefabPaths = new Stack<string>();

View File

@ -19,7 +19,7 @@ namespace Passer.Humanoid {
Unity.Netcode.NetworkConfig nwConfig = nwManager.NetworkConfig;
if (nwConfig.NetworkTransport == null) {
Unity.Netcode.Transports.UTP.UnityTransport unityTransport = new();
Unity.Netcode.Transports.UTP.UnityTransport unityTransport = nwManager.gameObject.AddComponent<Unity.Netcode.Transports.UTP.UnityTransport>();
nwConfig.NetworkTransport = unityTransport;
}
if (nwConfig.PlayerPrefab == null)

View File

@ -10,7 +10,8 @@
"PhotonRealtime",
"PhotonVoice.API",
"SteamVR",
"Unity.Netcode.Runtime"
"Unity.Netcode.Runtime",
"Unity.Netcode.Components"
],
"includePlatforms": [
"Editor"

View File

@ -20,7 +20,7 @@ namespace Passer {
public static void CheckForNetworkTransform(GameObject gameObject) {
CheckNetworkTransformNone(gameObject);
CheckNetworkTransformUnet(gameObject);
CheckNetworkTransformNetcode(gameObject);
CheckNetworkTransformPun(gameObject);
CheckNetworkTransformBolt(gameObject);
CheckNetworkTransformMirror(gameObject);
@ -29,8 +29,8 @@ namespace Passer {
#region None
protected static void CheckNetworkTransformNone(GameObject gameObject) {
#if !hNW_UNET && !hNW_PHOTON && !hNW_MIRROR
CleanupNetworkTransformUnet(gameObject);
#if !hNW_NETCODE && !hNW_PHOTON && !hNW_MIRROR
CleanupNetworkTransformNetcode(gameObject);
CleanupNetworkTransformPun(gameObject);
CleanupNetworkTransformMirror(gameObject);
#endif
@ -38,40 +38,37 @@ namespace Passer {
#endregion
#region Unet
#region Netcode
protected static void CheckNetworkTransformUnet(GameObject gameObject) {
#if hNW_UNET && !UNITY_2019_1_OR_NEWER
#pragma warning disable 0618
UnityEngine.Networking.NetworkIdentity networkIdentity = gameObject.GetComponent<UnityEngine.Networking.NetworkIdentity>();
protected static void CheckNetworkTransformNetcode(GameObject gameObject) {
#if hNETCODE
Unity.Netcode.NetworkObject networkIdentity = gameObject.GetComponent<Unity.Netcode.NetworkObject>();
if (networkIdentity == null)
networkIdentity = gameObject.AddComponent<UnityEngine.Networking.NetworkIdentity>();
networkIdentity = gameObject.AddComponent<Unity.Netcode.NetworkObject>();
UnityEngine.Networking.NetworkTransform networkTransform = gameObject.GetComponent<UnityEngine.Networking.NetworkTransform>();
Unity.Netcode.Components.NetworkTransform networkTransform = gameObject.GetComponent<Unity.Netcode.Components.NetworkTransform>();
if (networkTransform == null)
networkTransform = gameObject.AddComponent<UnityEngine.Networking.NetworkTransform>();
networkTransform = gameObject.AddComponent<Unity.Netcode.Components.NetworkTransform>();
CleanupNetworkTransformPun(gameObject);
CleanupNetworkTransformMirror(gameObject);
#pragma warning restore 0618
#endif
}
protected static void CleanupNetworkTransformUnet(GameObject gameObject) {
#if !UNITY_2019_1_OR_NEWER
#pragma warning disable 0618
UnityEngine.Networking.NetworkTransform networkTransform = gameObject.GetComponent<UnityEngine.Networking.NetworkTransform>();
protected static void CleanupNetworkTransformNetcode(GameObject gameObject) {
#if !hNETCODE
Unity.Netcode.Components.NetworkTransform networkTransform = gameObject.GetComponent<Unity.Netcode.Components.NetworkTransform>();
if (networkTransform != null)
DestroyComponent(networkTransform);
UnityEngine.Networking.NetworkIdentity networkIdentity = gameObject.GetComponent<UnityEngine.Networking.NetworkIdentity>();
Unity.Netcode.NetworkObject networkIdentity = gameObject.GetComponent<Unity.Netcode.NetworkObject>();
if (networkIdentity != null)
DestroyComponent(networkIdentity);
#pragma warning restore 0618
#endif
}
#endregion
#endregion Netcode
#region Photon PUN
@ -92,7 +89,7 @@ namespace Passer {
photonView.ObservedComponents.Add(transformView);
}
CleanupNetworkTransformUnet(gameObject);
CleanupNetworkTransformNetcode(gameObject);
CleanupNetworkTransformMirror(gameObject);
#elif hPHOTON2
Photon.Pun.PhotonView photonView = gameObject.GetComponent<Photon.Pun.PhotonView>();
@ -111,7 +108,7 @@ namespace Passer {
photonView.ObservedComponents.Add(transformView);
}
CleanupNetworkTransformUnet(gameObject);
CleanupNetworkTransformNetcode(gameObject);
CleanupNetworkTransformMirror(gameObject);
#endif
#endif
@ -143,7 +140,7 @@ namespace Passer {
protected static void CheckNetworkTransformBolt(GameObject gameObject) {
#if hNW_BOLT && hBOLT
CleanupNetworkTransformUnet(gameObject);
CleanupNetworkTransformNetcode(gameObject);
CleanupNetworkTransformPun(gameObject);
CleanupNetworkTransformMirror(gameObject);
#endif
@ -163,7 +160,7 @@ namespace Passer {
if (networkTransform == null)
networkTransform = gameObject.AddComponent<Mirror.NetworkTransform>();
CleanupNetworkTransformUnet(gameObject);
CleanupNetworkTransformNetcode(gameObject);
CleanupNetworkTransformPun(gameObject);
#endif
}

View File

@ -87,12 +87,14 @@ namespace Passer.Humanoid {
}
private void ServerTypeInspector() {
#if !hNETCODE
SerializedProperty serverTypeProp = serializedObject.FindProperty("serverType");
#if !hNETCODE
serverTypeProp.intValue = (int)(NetworkingStarter.ServerType)EditorGUILayout.EnumPopup("Server Type", (NetworkingStarter.ServerType)serverTypeProp.intValue);
if ((NetworkingStarter.ServerType)serverTypeProp.intValue == NetworkingStarter.ServerType.CloudServer)
CloudServerInspector();
else
#else
serverTypeProp.intValue = (int)NetworkingStarter.ServerType.OwnServer;
#endif
OwnServerInspector();
}

View File

@ -69,6 +69,7 @@ MonoBehaviour:
_syncFingerSwing: 0
_syncFace: 0
_syncTracking: 0
_debug: 0
_debug: 1
_sendRate: 25
_createLocalRemotes: 0
_createLocalRemotes: 1
_localRemotePosition: {x: 0, y: 0, z: 1}

View File

@ -1739,7 +1739,7 @@ namespace Passer.Humanoid {
}
public static void DisableNetworkSync(GameObject obj) {
#if hNW_UNET || hNW_PHOTON || hNW_BOLT || hNW_MIRROR
#if hNETCODE || hNW_PHOTON || hNW_BOLT || hNW_MIRROR
HumanoidPlayer.DisableNetworkSync(obj);
#endif
}

View File

@ -92,7 +92,7 @@ namespace Passer.Humanoid {
get { return _createLocalRemotes; }
set { _createLocalRemotes = value; }
}
protected Vector3 _localRemotePosition = new(0, 0, -1);
public Vector3 _localRemotePosition = new(0, 0, -1);
public Vector3 localRemotePosition { get { return _localRemotePosition; } }
@ -373,7 +373,7 @@ namespace Passer.Humanoid {
ReceiveDestroyHumanoidRpc(data);
}
[Rpc(SendTo.NotServer)]
[Rpc(SendTo.NotOwner)]
private void ReceiveDestroyHumanoidRpc(byte[] data) {
this.ReceiveDestroy(data);
}
@ -423,7 +423,7 @@ namespace Passer.Humanoid {
ulong objIdentity = GetObjectIdentity(obj);
if (objIdentity == 0) {
if (debug <= HumanoidNetworking.DebugLevel.Error)
Debug.LogError("Grabbed object " + obj + " does not have a network identity");
Debug.LogError("Grabbed object " + obj + " does not have a NetworkObject");
return;
}
@ -483,7 +483,7 @@ namespace Passer.Humanoid {
ReceiveChangeAvatarRpc(data);
}
[Rpc(SendTo.NotServer)]
[Rpc(SendTo.NotOwner)]
protected virtual void ReceiveChangeAvatarRpc(byte[] data) {
this.ReceiveChangeAvatar(data);
}
@ -529,6 +529,9 @@ namespace Passer.Humanoid {
if (networkTransform != null) {
networkTransform.enabled = true;
}
if (obj.TryGetComponent(out Unity.Netcode.NetworkObject networkObject))
networkObject.enabled = true;
//obj.AddComponent<Unity.Netcode.NetworkObject>();
}
public static void DisableNetworkSync(GameObject obj) {
@ -536,6 +539,9 @@ namespace Passer.Humanoid {
if (networkTransform != null) {
networkTransform.enabled = false;
}
if (obj.TryGetComponent(out Unity.Netcode.NetworkObject networkObject))
//DestroyImmediate(networkObject, true);
networkObject.enabled = false;
}
#endregion Network Sync

View File

@ -6,15 +6,8 @@ using Unity.Netcode.Transports.UTP;
namespace Passer {
public class NetcodeStarter : INetworkingStarter {
private string roomName;
private int gameVersion;
public ushort serverPort;
bool matchCreated;
private NetworkManager networkManager;
//private NetworkMatch networkMatch;
GameObject INetworkingStarter.GetHumanoidPrefab() {
GameObject humanoidPrefab = Resources.Load<GameObject>("HumanoidPlayer");
return humanoidPrefab;
@ -28,100 +21,32 @@ namespace Passer {
return;
}
//networkManager.StartHost();
NetworkManager.Singleton.StartHost();
}
void INetworkingStarter.StartClient(NetworkingStarter nwStarter) {
Debug.Log("start Netcode Client");
//NetworkManager networkManager = nwStarter.GetComponent<NetworkManager>();
NetworkManager.Singleton.GetComponent<UnityTransport>().SetConnectionData(
nwStarter.serverIpAddress,
nwStarter.serverPort
);
//NetworkClient nwClient =
NetworkManager.Singleton.StartClient();
}
public static void StartClient(string serverIpAddress, ushort serverPort) {
Debug.Log("start Netcode Client");
//NetworkManager networkManager = Object.FindObjectOfType<NetworkManager>();
//NetworkClient nwClient =
NetworkManager.Singleton.StartClient();
NetworkManager.Singleton.GetComponent<UnityTransport>().SetConnectionData(
serverIpAddress,
serverPort
);
}
void INetworkingStarter.StartClient(NetworkingStarter networking, string _roomName, int _gameVersion) {
roomName = _roomName;
gameVersion = _gameVersion;
//networkMatch = networking.gameObject.AddComponent<NetworkMatch>();
//networkManager = networking.GetComponent<NetworkManager>();
//networkMatch.ListMatches(0, 10, "", true, 0, gameVersion, OnMatchList);
}
public void StopClient() {; }
#region Events
/*
public void OnMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matches) {
if (success && matches != null) {
int foundRoom = -1;
for (int i = 0; i < matches.Count; i++) {
if (matches[i].name == roomName)
foundRoom = i;
}
if (foundRoom == -1) {
networkMatch.CreateMatch(roomName, 1000, true, "", "", "", 0, gameVersion, OnMatchCreated);
}
else {
networkMatch.JoinMatch(matches[foundRoom].networkId, "", "", "", 0, 0, OnMatchJoined);
}
}
else if (!success) {
Debug.LogError("List match failed: " + extendedInfo);
}
}
public void OnMatchCreated(bool success, string extendedInfo, MatchInfo matchInfo) {
if (success) {
matchCreated = true;
networkManager.StartHost(matchInfo);
}
else {
Debug.LogError("Create match failed: " + extendedInfo);
}
}
//bool joined;
public void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) {
if (success) {
if (matchCreated) {
Debug.LogWarning("Match already set up, aborting...");
return;
}
//joined = true;
NetworkClient nwClient = networkManager.StartClient(matchInfo);
#if UNITY_WSA_10_0 && !UNITY_EDITOR
//nwClient.Connect(matchInfo); not supported on WSA...
#else
nwClient.Connect(matchInfo);
#endif
}
else {
Debug.LogError("Join match failed " + extendedInfo);
}
}
*/
#endregion
}
}
#pragma warning restore 0618
#endif

View File

@ -208,9 +208,10 @@ namespace Passer.Humanoid {
if (thisRigidbody != null)
MassRedistribution(thisRigidbody, objRigidbody);
HumanoidNetworking.DisableNetworkSync(attachedTransform.gameObject);
RigidbodyDisabled.ParentRigidbody(this.transform, objRigidbody);
HumanoidNetworking.DisableNetworkSync(attachedTransform.gameObject);
if (!handTarget.humanoid.isRemote) {
//Debug.Log("Take Ownership");
HumanoidNetworking.TakeOwnership(attachedTransform.gameObject);

View File

@ -25,7 +25,6 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7892756138826494427}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
@ -33,6 +32,7 @@ Transform:
m_Children:
- {fileID: 973431165103374093}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!54 &7892756138826494428
Rigidbody:
@ -41,21 +41,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7892756138826494427}
serializedVersion: 4
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 0
m_IsKinematic: 0
m_Interpolate: 0
@ -74,7 +63,6 @@ HingeJoint:
m_Axis: {x: 0, y: 1, z: 0}
m_AutoConfigureConnectedAnchor: 1
m_ConnectedAnchor: {x: 0, y: 0, z: 0}
serializedVersion: 2
m_UseSpring: 1
m_Spring:
spring: 1
@ -86,8 +74,6 @@ HingeJoint:
force: 0
freeSpin: 0
m_UseLimits: 1
m_ExtendedLimits: 0
m_UseAcceleration: 0
m_Limits:
min: 0
max: 90
@ -105,7 +91,6 @@ PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 7892756138826494426}
m_Modifications:
- target: {fileID: 100000, guid: 1dfbc40e43d24cf48b6be677c0d37af3, type: 3}
@ -157,12 +142,6 @@ PrefabInstance:
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 100008, guid: 1dfbc40e43d24cf48b6be677c0d37af3, type: 3}
insertIndex: -1
addedObject: {fileID: 3866825236529853122}
m_SourcePrefab: {fileID: 100100000, guid: 1dfbc40e43d24cf48b6be677c0d37af3, type: 3}
--- !u!1 &973431165102875429 stripped
GameObject:
@ -177,18 +156,10 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 973431165102875429}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1.3, y: 2.9, z: 0.03}
serializedVersion: 2
m_Size: {x: 1.3, y: 2.9, z: 0.04}
m_Center: {x: -0.6417, y: 1.4585041, z: -0.015}
--- !u!4 &973431165103374093 stripped
Transform:

View File

@ -31,7 +31,6 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637081267702634}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
@ -40,6 +39,7 @@ Transform:
- {fileID: 1327642859812167675}
- {fileID: 1825897792794241923}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!54 &54046747442775926
Rigidbody:
@ -48,21 +48,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637081267702634}
serializedVersion: 4
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 1
@ -185,19 +174,11 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637081267702634}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.05, y: 0.02, z: 0.54}
m_Center: {x: 0, y: 0, z: 0.39}
serializedVersion: 2
m_Size: {x: 0.04, y: 0.02, z: 0.54}
m_Center: {x: 0, y: 0, z: 0.38}
--- !u!65 &65239915906408070
BoxCollider:
m_ObjectHideFlags: 0
@ -206,18 +187,10 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637081267702634}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.1799081, y: 0.04, z: 0.04}
serializedVersion: 2
m_Size: {x: 0.18, y: 0.04, z: 0.02}
m_Center: {x: 0, y: 0, z: 0.1}
--- !u!136 &136455234883199966
CapsuleCollider:
@ -227,17 +200,8 @@ CapsuleCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637081267702634}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.02
m_Height: 0.15
m_Direction: 2
@ -315,13 +279,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4775405205646088714}
serializedVersion: 2
m_LocalRotation: {x: 0.5, y: -0.5, z: -0.5, w: 0.5}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4776878667147238}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: -90, z: -90}
--- !u!114 &3673428933149702084
MonoBehaviour:
@ -548,7 +512,6 @@ PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4776878667147238}
m_Modifications:
- target: {fileID: 100008, guid: d2b6307262acf2143b2c42bd655c4e4f, type: 3}
@ -600,9 +563,6 @@ PrefabInstance:
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d2b6307262acf2143b2c42bd655c4e4f, type: 3}
--- !u!4 &1327642859812167675 stripped
Transform: