Added methods to control ownership
This commit is contained in:
parent
f49aa9aadb
commit
914c7a2a81
@ -8,7 +8,7 @@ namespace MLAPI
|
|||||||
[HideInInspector]
|
[HideInInspector]
|
||||||
public uint NetworkId;
|
public uint NetworkId;
|
||||||
[HideInInspector]
|
[HideInInspector]
|
||||||
public int OwnerClientId = -1;
|
public int OwnerClientId = -2;
|
||||||
[HideInInspector]
|
[HideInInspector]
|
||||||
public int SpawnablePrefabIndex;
|
public int SpawnablePrefabIndex;
|
||||||
[HideInInspector]
|
[HideInInspector]
|
||||||
@ -51,6 +51,16 @@ namespace MLAPI
|
|||||||
SpawnManager.OnSpawnObject(this, clientId);
|
SpawnManager.OnSpawnObject(this, clientId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveOwnership()
|
||||||
|
{
|
||||||
|
SpawnManager.RemoveOwnership(NetworkId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeOwnership(int newOwnerClientId)
|
||||||
|
{
|
||||||
|
SpawnManager.ChangeOwnership(NetworkId, newOwnerClientId);
|
||||||
|
}
|
||||||
|
|
||||||
internal void InvokeBehaviourNetworkSpawn()
|
internal void InvokeBehaviourNetworkSpawn()
|
||||||
{
|
{
|
||||||
NetworkedBehaviour[] netBehaviours = GetComponentsInChildren<NetworkedBehaviour>();
|
NetworkedBehaviour[] netBehaviours = GetComponentsInChildren<NetworkedBehaviour>();
|
||||||
|
@ -102,6 +102,7 @@ namespace MLAPI
|
|||||||
MessageManager.messageTypes.Add("MLAPI_SWITCH_SCENE", 5);
|
MessageManager.messageTypes.Add("MLAPI_SWITCH_SCENE", 5);
|
||||||
MessageManager.messageTypes.Add("MLAPI_SPAWN_POOL_OBJECT", 6);
|
MessageManager.messageTypes.Add("MLAPI_SPAWN_POOL_OBJECT", 6);
|
||||||
MessageManager.messageTypes.Add("MLAPI_DESTROY_POOL_OBJECT", 7);
|
MessageManager.messageTypes.Add("MLAPI_DESTROY_POOL_OBJECT", 7);
|
||||||
|
MessageManager.messageTypes.Add("MLAPI_CHANGE_OWNER", 8);
|
||||||
NetworkConfig.MessageTypes.Add("MLAPI_OnRecieveTransformFromClient");
|
NetworkConfig.MessageTypes.Add("MLAPI_OnRecieveTransformFromClient");
|
||||||
NetworkConfig.MessageTypes.Add("MLAPI_OnRecieveTransformFromServer");
|
NetworkConfig.MessageTypes.Add("MLAPI_OnRecieveTransformFromServer");
|
||||||
|
|
||||||
@ -628,6 +629,20 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
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)
|
internal static GameObject SpawnObject(int spawnablePrefabIndex, uint networkId, int ownerId)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user