Skip to content

Commit 18da9a5

Browse files
committed
Added owned objects
1 parent f83d50a commit 18da9a5

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

MLAPI/Data/NetworkedClient.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
using UnityEngine;
1+
using System.Collections.Generic;
2+
using UnityEngine;
23

34
namespace MLAPI
45
{
56
public class NetworkedClient
67
{
78
public int ClientId;
89
public GameObject PlayerObject;
10+
public List<NetworkedObject> OwnedObjects;
911
}
1012
}

MLAPI/MonoBehaviours/Core/NetworkedObject.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,21 @@ public class NetworkedObject : MonoBehaviour
1111
[HideInInspector]
1212
public int SpawnablePrefabIndex;
1313
[HideInInspector]
14-
public bool IsPlayerObject = false;
14+
public bool isPlayerObject = false;
1515
public bool ServerOnly = false;
1616
public bool isLocalPlayer
1717
{
1818
get
1919
{
20-
return IsPlayerObject && (OwnerClientId == NetworkingManager.singleton.MyClientId || (OwnerClientId == -1 && NetworkingManager.singleton.isHost));
20+
return isPlayerObject && (OwnerClientId == NetworkingManager.singleton.MyClientId || (OwnerClientId == -1 && NetworkingManager.singleton.isHost));
21+
}
22+
}
23+
24+
public bool IsOwner
25+
{
26+
get
27+
{
28+
return !isPlayerObject && (OwnerClientId == NetworkingManager.singleton.MyClientId || (OwnerClientId == -1 && NetworkingManager.singleton.isHost));
2129
}
2230
}
2331

@@ -27,9 +35,15 @@ private void OnDestroy()
2735
}
2836

2937
internal bool isSpawned = false;
38+
3039
public void Spawn()
3140
{
3241
NetworkingManager.singleton.OnSpawnObject(this);
3342
}
43+
44+
public void SpawnWithOwnership(int clientId)
45+
{
46+
NetworkingManager.singleton.OnSpawnObject(this, clientId);
47+
}
3448
}
3549
}

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ internal GameObject SpawnPlayerObject(int clientId, uint networkId)
122122
{
123123
netObject.NetworkId = networkId;
124124
}
125-
netObject.IsPlayerObject = true;
125+
netObject.isPlayerObject = true;
126126
connectedClients[clientId].PlayerObject = go;
127127
singleton.spawnedObjects.Add(netObject.NetworkId, netObject);
128128
return go;
@@ -834,6 +834,10 @@ private void OnClientDisconnect(int clientId)
834834
if(NetworkConfig.HandleObjectSpawning)
835835
{
836836
Destroy(connectedClients[clientId].PlayerObject);
837+
for (int i = 0; i < connectedClients[clientId].OwnedObjects.Count; i++)
838+
{
839+
Destroy(connectedClients[clientId].OwnedObjects[i].gameObject);
840+
}
837841
}
838842
connectedClients.Remove(clientId);
839843
}
@@ -904,7 +908,7 @@ private void HandleApproval(int clientId, bool approved)
904908

905909
if (pair.Value.ServerOnly)
906910
continue;
907-
writer.Write(pair.Value.IsPlayerObject);
911+
writer.Write(pair.Value.isPlayerObject);
908912
writer.Write(pair.Value.NetworkId);
909913
writer.Write(pair.Value.OwnerClientId);
910914
writer.Write(pair.Value.SpawnablePrefabIndex);

0 commit comments

Comments
 (0)