Ejemplo n.º 1
0
    public void SetObjectAuthority(string playerId, string objectId)
    {
        Debug.Log($"Granting authority for {objectId} to {playerId}");
        NeutralNetworkManager objectManager = GetObject(objectId);

        RemoveObjectAuthority(objectId);
        objectManager.NetworkIdentity.AssignClientAuthority(GetPlayer(playerId).connectionToClient);
        objectManager.TouchingPlayer = playerId;
    }
Ejemplo n.º 2
0
//    private void OnCollisionExit2D(Collision2D other)
//    {
//        if (!isServer && hasAuthority && other.gameObject.layer == LayerMask.NameToLayer("Player"))
//        {
//            PlayerNetworkManager playerManager = other.gameObject.GetComponent<PlayerNetworkManager>();
//            if (playerManager.PlayerId == TouchingPlayer)
//            {
//                CmdRemoveObjectAuthority();
//            }
//        }
//    }

    private void OnCollisionEnter(Collision other)
    {
        if (other.gameObject.layer == LayerMask.NameToLayer("SceneProps") && hasAuthority && TouchingPlayer != "")
        {
            NeutralNetworkManager otherProp = other.gameObject.GetComponent <NeutralNetworkManager>();
            if (otherProp.TouchingPlayer != TouchingPlayer)
            {
                CmdRequestObjectAuthority(otherProp.ObjectId);
            }
        }
    }
Ejemplo n.º 3
0
 public void RegisterObject(string id, NeutralNetworkManager manager)
 {
     try
     {
         _objectMap.Add(id, manager);
     }
     catch (ArgumentException)
     {
         Debug.Log($"Object {id} already registered");
     }
 }
Ejemplo n.º 4
0
    public void RemoveObjectAuthority(string objectId)
    {
        NeutralNetworkManager objectManager = GetObject(objectId);

        if (objectManager.TouchingPlayer != "")
        {
            Debug.Log($"Removing Authority for {objectId} from {objectManager.TouchingPlayer}");
            objectManager.NetworkIdentity.RemoveClientAuthority(GetPlayer(objectManager.TouchingPlayer).connectionToClient);
            objectManager.TouchingPlayer = "";
        }
    }
Ejemplo n.º 5
0
 private void OnCollisionEnter(Collision other)
 {
     // Check if we are local and we hit a prop
     if (isLocalPlayer && other.gameObject.layer == LayerMask.NameToLayer("SceneProps"))
     {
         // Make sure we don't already own it
         NeutralNetworkManager objectManager = other.gameObject.GetComponent <NeutralNetworkManager>();
         if (objectManager != null && objectManager.TouchingPlayer != PlayerId)
         {
             // Request box authority
             Debug.Log("Requesting Box authority for local player");
             CmdRequestObjectAuthority(objectManager.ObjectId);
         }
     }
 }