﻿using UnityEngine;
using ReadyPlayerMe;

public class LoadRPMAvatar : MonoBehaviour
{
    [SerializeField] private string avatarUrl;

    [Space]
    [SerializeField] private string avatarName = "MyAvatar";
    [SerializeField] private Transform characterController;
    
    void Start()
    {
        LoadAvatar();
    }

    private void LoadAvatar()
    {       
        //don't run if url empty
        if (string.IsNullOrEmpty(avatarUrl))
        {
            Debug.LogWarning("URL Not set");
            return;
        }
        
        AvatarLoader avatarLoader = new AvatarLoader();
        avatarLoader.LoadAvatar(avatarUrl);
        avatarLoader.OnCompleted += AvatarLoadComplete;
    }

    private void AvatarLoadComplete(object sender, CompletionEventArgs args)
    {
        args.Avatar.name = avatarName;
        OnAvatarInstantiated(args.Avatar);
    }

    protected virtual void OnAvatarInstantiated(GameObject avatar)
    {
        if (characterController != null)
        {
            avatar.transform.position = characterController.position + Vector3.down; // OVRPlayerController's pivot is 1 unit above ground, avatar needs to be at ground level
            avatar.transform.rotation = characterController.rotation;
        }
    }
}
