change assetid to int

This commit is contained in:
Mister_Nebula 2021-10-13 18:09:16 +01:00
parent 49d94e7aaa
commit bf14f089b2
6 changed files with 27 additions and 27 deletions

View File

@ -17,7 +17,7 @@ namespace QuantumUNET.Components
public NetworkInstanceId NetId { get; private set; } public NetworkInstanceId NetId { get; private set; }
public NetworkSceneId SceneId => m_SceneId; public NetworkSceneId SceneId => m_SceneId;
public QNetworkConnection ClientAuthorityOwner { get; private set; } public QNetworkConnection ClientAuthorityOwner { get; private set; }
public NetworkHash128 AssetId => m_AssetId; public int AssetId => m_AssetId;
public bool IsLocalPlayer { get; private set; } public bool IsLocalPlayer { get; private set; }
public short PlayerControllerId { get; private set; } = -1; public short PlayerControllerId { get; private set; } = -1;
public QNetworkConnection ConnectionToServer { get; private set; } public QNetworkConnection ConnectionToServer { get; private set; }
@ -57,9 +57,9 @@ namespace QuantumUNET.Components
internal void RemoveSubIdentity(QNetworkIdentity identityToRemove) internal void RemoveSubIdentity(QNetworkIdentity identityToRemove)
=> SubIdentities.Remove(identityToRemove); => SubIdentities.Remove(identityToRemove);
internal void SetDynamicAssetId(NetworkHash128 newAssetId) internal void SetDynamicAssetId(int newAssetId)
{ {
if (!m_AssetId.IsValid() || m_AssetId.Equals(newAssetId)) if (m_AssetId == 0 || m_AssetId.Equals(newAssetId))
{ {
m_AssetId = newAssetId; m_AssetId = newAssetId;
} }
@ -821,7 +821,7 @@ namespace QuantumUNET.Components
private NetworkSceneId m_SceneId; private NetworkSceneId m_SceneId;
[SerializeField] [SerializeField]
private NetworkHash128 m_AssetId; private int m_AssetId;
[SerializeField] [SerializeField]
private bool m_ServerOnly; private bool m_ServerOnly;

View File

@ -7,7 +7,7 @@ namespace QuantumUNET.Messages
internal class QObjectSpawnMessage : QMessageBase internal class QObjectSpawnMessage : QMessageBase
{ {
public NetworkInstanceId NetId; public NetworkInstanceId NetId;
public NetworkHash128 assetId; public int assetId;
public Vector3 Position; public Vector3 Position;
public byte[] Payload; public byte[] Payload;
public Quaternion Rotation; public Quaternion Rotation;
@ -24,7 +24,7 @@ namespace QuantumUNET.Messages
public override void Deserialize(QNetworkReader reader) public override void Deserialize(QNetworkReader reader)
{ {
NetId = reader.ReadNetworkId(); NetId = reader.ReadNetworkId();
assetId = reader.ReadNetworkHash128(); assetId = reader.ReadInt32();
Position = reader.ReadVector3(); Position = reader.ReadVector3();
Payload = reader.ReadBytesAndSize(); Payload = reader.ReadBytesAndSize();
if (reader.Length - reader.Position >= 16U) if (reader.Length - reader.Position >= 16U)

View File

@ -3,5 +3,5 @@ using UnityEngine.Networking;
namespace QuantumUNET namespace QuantumUNET
{ {
public delegate GameObject QSpawnDelegate(Vector3 position, NetworkHash128 assetId); public delegate GameObject QSpawnDelegate(Vector3 position, int assetId);
} }

View File

@ -21,7 +21,7 @@ namespace QuantumUNET
public static Dictionary<NetworkInstanceId, QNetworkIdentity> Objects => s_NetworkScene.localObjects; public static Dictionary<NetworkInstanceId, QNetworkIdentity> Objects => s_NetworkScene.localObjects;
public static Dictionary<NetworkHash128, GameObject> Prefabs => QNetworkScene.guidToPrefab; public static Dictionary<int, GameObject> Prefabs => QNetworkScene.guidToPrefab;
public static Dictionary<NetworkSceneId, QNetworkIdentity> SpawnableObjects { get; private set; } public static Dictionary<NetworkSceneId, QNetworkIdentity> SpawnableObjects { get; private set; }
@ -305,7 +305,7 @@ namespace QuantumUNET
client.RegisterHandlerSafe(QMsgType.AnimationTrigger, QNetworkAnimator.OnAnimationTriggerClientMessage); client.RegisterHandlerSafe(QMsgType.AnimationTrigger, QNetworkAnimator.OnAnimationTriggerClientMessage);
} }
internal static string GetStringForAssetId(NetworkHash128 assetId) internal static string GetStringForAssetId(int assetId)
{ {
if (QNetworkScene.GetPrefab(assetId, out var gameObject)) if (QNetworkScene.GetPrefab(assetId, out var gameObject))
{ {
@ -317,7 +317,7 @@ namespace QuantumUNET
: "unknown"; : "unknown";
} }
public static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) => QNetworkScene.RegisterPrefab(prefab, newAssetId); public static void RegisterPrefab(GameObject prefab, int newAssetId) => QNetworkScene.RegisterPrefab(prefab, newAssetId);
public static void RegisterPrefab(GameObject prefab) => QNetworkScene.RegisterPrefab(prefab); public static void RegisterPrefab(GameObject prefab) => QNetworkScene.RegisterPrefab(prefab);
@ -325,9 +325,9 @@ namespace QuantumUNET
public static void UnregisterPrefab(GameObject prefab) => QNetworkScene.UnregisterPrefab(prefab); public static void UnregisterPrefab(GameObject prefab) => QNetworkScene.UnregisterPrefab(prefab);
public static void RegisterSpawnHandler(NetworkHash128 assetId, QSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); public static void RegisterSpawnHandler(int assetId, QSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler);
public static void UnregisterSpawnHandler(NetworkHash128 assetId) => QNetworkScene.UnregisterSpawnHandler(assetId); public static void UnregisterSpawnHandler(int assetId) => QNetworkScene.UnregisterSpawnHandler(assetId);
public static void ClearSpawners() => QNetworkScene.ClearSpawners(); public static void ClearSpawners() => QNetworkScene.ClearSpawners();
@ -367,7 +367,7 @@ namespace QuantumUNET
private static void OnObjectSpawn(QNetworkMessage netMsg) private static void OnObjectSpawn(QNetworkMessage netMsg)
{ {
netMsg.ReadMessage(s_ObjectSpawnMessage); netMsg.ReadMessage(s_ObjectSpawnMessage);
if (!s_ObjectSpawnMessage.assetId.IsValid()) if (s_ObjectSpawnMessage.assetId == 0)
{ {
Debug.LogError($"OnObjSpawn netId: {s_ObjectSpawnMessage.NetId} has invalid asset Id. {s_ObjectSpawnMessage.assetId}"); Debug.LogError($"OnObjSpawn netId: {s_ObjectSpawnMessage.NetId} has invalid asset Id. {s_ObjectSpawnMessage.assetId}");
} }

View File

@ -7,9 +7,9 @@ namespace QuantumUNET
{ {
internal class QNetworkScene internal class QNetworkScene
{ {
internal static Dictionary<NetworkHash128, GameObject> guidToPrefab { get; } = new Dictionary<NetworkHash128, GameObject>(); internal static Dictionary<int, GameObject> guidToPrefab { get; } = new Dictionary<int, GameObject>();
internal static Dictionary<NetworkHash128, QSpawnDelegate> spawnHandlers { get; } = new Dictionary<NetworkHash128, QSpawnDelegate>(); internal static Dictionary<int, QSpawnDelegate> spawnHandlers { get; } = new Dictionary<int, QSpawnDelegate>();
internal static Dictionary<NetworkHash128, UnSpawnDelegate> unspawnHandlers { get; } = new Dictionary<NetworkHash128, UnSpawnDelegate>(); internal static Dictionary<int, UnSpawnDelegate> unspawnHandlers { get; } = new Dictionary<int, UnSpawnDelegate>();
internal Dictionary<NetworkInstanceId, QNetworkIdentity> localObjects { get; } = new Dictionary<NetworkInstanceId, QNetworkIdentity>(); internal Dictionary<NetworkInstanceId, QNetworkIdentity> localObjects { get; } = new Dictionary<NetworkInstanceId, QNetworkIdentity>();
internal void Shutdown() internal void Shutdown()
@ -96,7 +96,7 @@ namespace QuantumUNET
internal void ClearLocalObjects() internal void ClearLocalObjects()
=> localObjects.Clear(); => localObjects.Clear();
internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) internal static void RegisterPrefab(GameObject prefab, int newAssetId)
{ {
var component = prefab.GetComponent<QNetworkIdentity>(); var component = prefab.GetComponent<QNetworkIdentity>();
if (component) if (component)
@ -129,10 +129,10 @@ namespace QuantumUNET
} }
} }
internal static bool GetPrefab(NetworkHash128 assetId, out GameObject prefab) internal static bool GetPrefab(int assetId, out GameObject prefab)
{ {
bool result; bool result;
if (!assetId.IsValid()) if (assetId == 0)
{ {
prefab = null; prefab = null;
result = false; result = false;
@ -158,13 +158,13 @@ namespace QuantumUNET
unspawnHandlers.Clear(); unspawnHandlers.Clear();
} }
public static void UnregisterSpawnHandler(NetworkHash128 assetId) public static void UnregisterSpawnHandler(int assetId)
{ {
spawnHandlers.Remove(assetId); spawnHandlers.Remove(assetId);
unspawnHandlers.Remove(assetId); unspawnHandlers.Remove(assetId);
} }
internal static void RegisterSpawnHandler(NetworkHash128 assetId, QSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) internal static void RegisterSpawnHandler(int assetId, QSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler)
{ {
if (spawnHandler == null || unspawnHandler == null) if (spawnHandler == null || unspawnHandler == null)
{ {
@ -202,7 +202,7 @@ namespace QuantumUNET
{ {
Debug.LogError($"RegisterPrefab custom spawn function null for {component.AssetId}"); Debug.LogError($"RegisterPrefab custom spawn function null for {component.AssetId}");
} }
else if (!component.AssetId.IsValid()) else if (component.AssetId == 0)
{ {
Debug.LogError($"RegisterPrefab game object {prefab.name} has no prefab. Use RegisterSpawnHandler() instead?"); Debug.LogError($"RegisterPrefab game object {prefab.name} has no prefab. Use RegisterSpawnHandler() instead?");
} }
@ -213,7 +213,7 @@ namespace QuantumUNET
} }
} }
internal static bool GetSpawnHandler(NetworkHash128 assetId, out QSpawnDelegate handler) internal static bool GetSpawnHandler(int assetId, out QSpawnDelegate handler)
{ {
bool result; bool result;
if (spawnHandlers.ContainsKey(assetId)) if (spawnHandlers.ContainsKey(assetId))
@ -230,7 +230,7 @@ namespace QuantumUNET
return result; return result;
} }
internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj) internal static bool InvokeUnSpawnHandler(int assetId, GameObject obj)
{ {
bool result; bool result;
if (unspawnHandlers.ContainsKey(assetId) && unspawnHandlers[assetId] != null) if (unspawnHandlers.ContainsKey(assetId) && unspawnHandlers[assetId] != null)

View File

@ -1018,7 +1018,7 @@ namespace QuantumUNET
if (conn != null) if (conn != null)
{ {
conn.Send(3, objectSpawnMessage); conn.Send(QMsgType.ObjectSpawn, objectSpawnMessage);
} }
else else
{ {
@ -1209,14 +1209,14 @@ namespace QuantumUNET
return result; return result;
} }
public static bool SpawnWithClientAuthority(GameObject obj, NetworkHash128 assetId, QNetworkConnection conn) public static bool SpawnWithClientAuthority(GameObject obj, int assetId, QNetworkConnection conn)
{ {
Spawn(obj, assetId); Spawn(obj, assetId);
var component = obj.GetComponent<QNetworkIdentity>(); var component = obj.GetComponent<QNetworkIdentity>();
return !(component == null) && component.IsServer && component.AssignClientAuthority(conn); return !(component == null) && component.IsServer && component.AssignClientAuthority(conn);
} }
public static void Spawn(GameObject obj, NetworkHash128 assetId) public static void Spawn(GameObject obj, int assetId)
{ {
if (VerifyCanSpawn(obj)) if (VerifyCanSpawn(obj))
{ {