online fix

This commit is contained in:
2025-10-27 13:54:38 +01:00
parent 3ff9819d78
commit 8ea4b173a3
2 changed files with 28 additions and 9 deletions

View File

@@ -69,7 +69,6 @@ namespace MegaKoop.Game.Enemy
private void Awake()
{
EnsureIdentity();
spawnPosition = transform.position;
baseMoveSpeed = moveSpeed;
@@ -134,14 +133,22 @@ namespace MegaKoop.Game.Enemy
return;
}
if (identity.NetworkId == 0)
if (identity.NetworkId != 0)
{
identity.SetNetworkId(nextEnemyNetworkId++);
return;
}
if (!ShouldAssignLocalNetworkId())
{
return;
}
identity.SetNetworkId(nextEnemyNetworkId++);
}
private void OnEnable()
{
EnsureIdentity();
networkManager = SteamCoopNetworkManager.Instance;
pooledInstance ??= GetComponent<PooledInstance>();
pendingDespawn = false;
@@ -232,6 +239,22 @@ namespace MegaKoop.Game.Enemy
return networkManager.IsHost;
}
private bool ShouldAssignLocalNetworkId()
{
var manager = SteamCoopNetworkManager.Instance;
if (manager == null)
{
return true;
}
if (!manager.IsConnected)
{
return true;
}
return manager.IsHost;
}
private void SyncNavMeshAgentState(bool simulate)
{
if (navMeshAgent == null)

View File

@@ -14,13 +14,10 @@ namespace MegaKoop.Game.Networking
{
// Note: Auto-increment removed in favor of deterministic ID generation
// IDs should be assigned via SetNetworkId() before or during Awake
if (assignOnAwake && networkId == 0)
if (networkId != 0)
{
Debug.LogWarning($"[NetworkIdentity] {name} has assignOnAwake=true but no ID assigned. " +
"Use DeterministicIdGenerator or manually call SetNetworkId().");
Register();
}
Register();
}
private void OnDestroy()
@@ -32,7 +29,6 @@ namespace MegaKoop.Game.Networking
{
if (networkId == 0)
{
Debug.LogWarning($"[NetworkIdentity] {name} has no network id and won't be tracked.");
return;
}