Added methods to control ownership
This commit is contained in:
parent
f49aa9aadb
commit
914c7a2a81
@ -8,7 +8,7 @@ namespace MLAPI
|
||||
[HideInInspector]
|
||||
public uint NetworkId;
|
||||
[HideInInspector]
|
||||
public int OwnerClientId = -1;
|
||||
public int OwnerClientId = -2;
|
||||
[HideInInspector]
|
||||
public int SpawnablePrefabIndex;
|
||||
[HideInInspector]
|
||||
@ -51,6 +51,16 @@ namespace MLAPI
|
||||
SpawnManager.OnSpawnObject(this, clientId);
|
||||
}
|
||||
|
||||
public void RemoveOwnership()
|
||||
{
|
||||
SpawnManager.RemoveOwnership(NetworkId);
|
||||
}
|
||||
|
||||
public void ChangeOwnership(int newOwnerClientId)
|
||||
{
|
||||
SpawnManager.ChangeOwnership(NetworkId, newOwnerClientId);
|
||||
}
|
||||
|
||||
internal void InvokeBehaviourNetworkSpawn()
|
||||
{
|
||||
NetworkedBehaviour[] netBehaviours = GetComponentsInChildren<NetworkedBehaviour>();
|
||||
|
@ -102,6 +102,7 @@ namespace MLAPI
|
||||
MessageManager.messageTypes.Add("MLAPI_SWITCH_SCENE", 5);
|
||||
MessageManager.messageTypes.Add("MLAPI_SPAWN_POOL_OBJECT", 6);
|
||||
MessageManager.messageTypes.Add("MLAPI_DESTROY_POOL_OBJECT", 7);
|
||||
MessageManager.messageTypes.Add("MLAPI_CHANGE_OWNER", 8);
|
||||
NetworkConfig.MessageTypes.Add("MLAPI_OnRecieveTransformFromClient");
|
||||
NetworkConfig.MessageTypes.Add("MLAPI_OnRecieveTransformFromServer");
|
||||
|
||||
@ -628,6 +629,20 @@ namespace MLAPI
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 8: //Change owner
|
||||
if(isClient)
|
||||
{
|
||||
using (MemoryStream messageReadStream = new MemoryStream(incommingData))
|
||||
{
|
||||
using (BinaryReader messageReader = new BinaryReader(messageReadStream))
|
||||
{
|
||||
uint netId = messageReader.ReadUInt32();
|
||||
int ownerClientId = messageReader.ReadInt32();
|
||||
SpawnManager.spawnedObjects[netId].OwnerClientId = ownerClientId;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,35 @@ namespace MLAPI.NetworkingManagerComponents
|
||||
}
|
||||
}
|
||||
|
||||
internal static void RemoveOwnership(uint netId)
|
||||
{
|
||||
NetworkedObject netObject = SpawnManager.spawnedObjects[netId];
|
||||
netObject.OwnerClientId = -2;
|
||||
using (MemoryStream stream = new MemoryStream(8))
|
||||
{
|
||||
using (BinaryWriter writer = new BinaryWriter(stream))
|
||||
{
|
||||
writer.Write(netId);
|
||||
writer.Write(-2);
|
||||
}
|
||||
netManager.Send("MLAPI_CHANGE_OWNER", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer());
|
||||
}
|
||||
}
|
||||
|
||||
internal static void ChangeOwnership(uint netId, int clientId)
|
||||
{
|
||||
NetworkedObject netObject = SpawnManager.spawnedObjects[netId];
|
||||
netObject.OwnerClientId = clientId;
|
||||
using (MemoryStream stream = new MemoryStream(8))
|
||||
{
|
||||
using (BinaryWriter writer = new BinaryWriter(stream))
|
||||
{
|
||||
writer.Write(netId);
|
||||
writer.Write(clientId);
|
||||
}
|
||||
netManager.Send("MLAPI_CHANGE_OWNER", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer());
|
||||
}
|
||||
}
|
||||
|
||||
internal static GameObject SpawnObject(int spawnablePrefabIndex, uint networkId, int ownerId)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user