
#if USING_NETCODE_GO

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

#if USING_XRI
using UnityEngine.XR.Interaction.Toolkit;
#endif
using Unity.Netcode;
using Unity.Netcode.Components;

public class ChangeOwnershipNetworkBehaviour : NetworkBehaviour
{
    [ServerRpc(RequireOwnership = false)]
    public void RequestRemoveOwnershipServerRpc(NetworkObjectReference networkObjectReference)
    {
        //Debug.Log($"1 networkObject.RemoveOwnership(); RequestRemoveOwnershipServerRpc");
        if (networkObjectReference.TryGet(out NetworkObject networkObject))
        {
            Debug.Log($"2 networkObject.RemoveOwnership(); RequestRemoveOwnershipServerRpc");
            networkObject.RemoveOwnership();
            Debug.Log($"3 networkObject ownerID: {networkObject.OwnerClientId}");
        }
    }

    [ServerRpc(RequireOwnership = false)]
    public void RequestOwnershipServerRpc(ulong newOwnerClientId, NetworkObjectReference networkObjectReference)
    {
        //Debug.Log($"1 ChangeOwnershipNetworkObject Got RequestOwnershipServerRpc newOwnerClientId = {newOwnerClientId}");
        if (networkObjectReference.TryGet(out NetworkObject networkObject))
        {
            //Debug.Log($"2 ChangeOwnershipNetworkObject Got RequestOwnershipServerRpc networkObject = {networkObject.name}");
            if (networkObject.OwnerClientId == 0)
            {
                Debug.Log($"3 ChangeOwnershipNetworkObject Got RequestOwnershipServerRpc newOwnerClientId = {newOwnerClientId} & networkObject = {networkObject.name}");
                networkObject.ChangeOwnership(newOwnerClientId);
                Debug.Log($"4 networkObject ownership = {networkObject.OwnerClientId}");
            }
        }
    }
}

#endif