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 NetworkSceneId SceneId => m_SceneId;
public QNetworkConnection ClientAuthorityOwner { get; private set; }
public NetworkHash128 AssetId => m_AssetId;
public int AssetId => m_AssetId;
public bool IsLocalPlayer { get; private set; }
public short PlayerControllerId { get; private set; } = -1;
public QNetworkConnection ConnectionToServer { get; private set; }
@ -57,9 +57,9 @@ namespace QuantumUNET.Components
internal void RemoveSubIdentity(QNetworkIdentity 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;
}
@ -821,7 +821,7 @@ namespace QuantumUNET.Components
private NetworkSceneId m_SceneId;
[SerializeField]
private NetworkHash128 m_AssetId;
private int m_AssetId;
[SerializeField]
private bool m_ServerOnly;

View File

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

View File

@ -3,5 +3,5 @@ using UnityEngine.Networking;
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<NetworkHash128, GameObject> Prefabs => QNetworkScene.guidToPrefab;
public static Dictionary<int, GameObject> Prefabs => QNetworkScene.guidToPrefab;
public static Dictionary<NetworkSceneId, QNetworkIdentity> SpawnableObjects { get; private set; }
@ -305,7 +305,7 @@ namespace QuantumUNET
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))
{
@ -317,7 +317,7 @@ namespace QuantumUNET
: "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);
@ -325,9 +325,9 @@ namespace QuantumUNET
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();
@ -367,7 +367,7 @@ namespace QuantumUNET
private static void OnObjectSpawn(QNetworkMessage netMsg)
{
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}");
}

View File

@ -7,9 +7,9 @@ namespace QuantumUNET
{
internal class QNetworkScene
{
internal static Dictionary<NetworkHash128, GameObject> guidToPrefab { get; } = new Dictionary<NetworkHash128, GameObject>();
internal static Dictionary<NetworkHash128, QSpawnDelegate> spawnHandlers { get; } = new Dictionary<NetworkHash128, QSpawnDelegate>();
internal static Dictionary<NetworkHash128, UnSpawnDelegate> unspawnHandlers { get; } = new Dictionary<NetworkHash128, UnSpawnDelegate>();
internal static Dictionary<int, GameObject> guidToPrefab { get; } = new Dictionary<int, GameObject>();
internal static Dictionary<int, QSpawnDelegate> spawnHandlers { get; } = new Dictionary<int, QSpawnDelegate>();
internal static Dictionary<int, UnSpawnDelegate> unspawnHandlers { get; } = new Dictionary<int, UnSpawnDelegate>();
internal Dictionary<NetworkInstanceId, QNetworkIdentity> localObjects { get; } = new Dictionary<NetworkInstanceId, QNetworkIdentity>();
internal void Shutdown()
@ -96,7 +96,7 @@ namespace QuantumUNET
internal void ClearLocalObjects()
=> localObjects.Clear();
internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId)
internal static void RegisterPrefab(GameObject prefab, int newAssetId)
{
var component = prefab.GetComponent<QNetworkIdentity>();
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;
if (!assetId.IsValid())
if (assetId == 0)
{
prefab = null;
result = false;
@ -158,13 +158,13 @@ namespace QuantumUNET
unspawnHandlers.Clear();
}
public static void UnregisterSpawnHandler(NetworkHash128 assetId)
public static void UnregisterSpawnHandler(int assetId)
{
spawnHandlers.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)
{
@ -202,7 +202,7 @@ namespace QuantumUNET
{
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?");
}
@ -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;
if (spawnHandlers.ContainsKey(assetId))
@ -230,7 +230,7 @@ namespace QuantumUNET
return result;
}
internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj)
internal static bool InvokeUnSpawnHandler(int assetId, GameObject obj)
{
bool result;
if (unspawnHandlers.ContainsKey(assetId) && unspawnHandlers[assetId] != null)

View File

@ -1018,7 +1018,7 @@ namespace QuantumUNET
if (conn != null)
{
conn.Send(3, objectSpawnMessage);
conn.Send(QMsgType.ObjectSpawn, objectSpawnMessage);
}
else
{
@ -1209,14 +1209,14 @@ namespace QuantumUNET
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);
var component = obj.GetComponent<QNetworkIdentity>();
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))
{