示例#1
0
    public void LoadAvatar(string avatarID, string worldId = "")
    {
        //todo: Disable ui?
        //todo: cancel button
        try
        {
            UIManager.instance.SetMainTitle("Loading avatar", "Getting avatar info...");
            StartCoroutine(VRCAPIHandler.GetAvatarInfo(avatarID, (avatarInfo) =>
            {
                if (avatarInfo.releaseStatus != "public")
                {
                    UIManager.instance.SetMainTitle(null, "This avatar is not public and cannot be viewed.");
                    return;
                }

                UIManager.instance.SetMainTitle(avatarInfo.name, "By: " + avatarInfo.authorName);
                StartCoroutine(DownloadAvatar(VRCAPIHandler.CheckProxyUrl(avatarInfo.assetUrl), () =>
                {
                    StartCoroutine(InstantiateAvatar(() =>
                    {
                        StartCoroutine(GetInformation(avatarInfo, instantiatedAvatar));
                        UIManager.instance.SetMainTitle(avatarInfo.name, "By: " + avatarInfo.authorName);
                        UIManager.instance.SetLoadedAvatarId(avatarInfo.id);

                        GameObject mouseOrbitFollow = new GameObject("MouseOrbitFollow");
                        //mouseOrbitFollow.transform.position = instantiatedAvatar.GetComponentInChildren<Renderer>().bounds.center;
                        var boundsCenter = instantiatedAvatar.GetComponentInChildren <Renderer>().bounds.center;

                        mouseOrbitFollow.transform.position = new Vector3(0f, boundsCenter.y, 0f);

                        mouseOrbit.target = mouseOrbitFollow.transform;
                        if (avatarInfo.name == null)
                        {
                            avatarInfo.name = "";
                        }
                        if (avatarInfo.authorName == null)
                        {
                            avatarInfo.authorName = "?";
                        }

                        StartCoroutine(ResetAvatarPosition());
                        WebpageUtilities.SetURLParameters(avatarInfo.id);
                        if (!string.IsNullOrEmpty(worldId))
                        {
                            Debug.Log("Getting world info...");
                            StartCoroutine(VRCAPIHandler.GetWorldInfo(worldId, (info) =>
                            {
                                Debug.Log("From world " + info.name);
                                //avatarInfo.authorName += "\r\n" + "From world: " + info.name;
                                UIManager.instance.SetMainTitle(avatarInfo.name, "By: " + avatarInfo.authorName + "\r\n" + "From world: " + info.name);
                            }));
                        }
                        //todo: enable UI
                    }));
                }));
            }, (error) =>
            {
                UIManager.instance.SetMainTitle(null, "Error");
            }));
        }
        catch (Exception e)
        {
            Debug.Log(e.ToString());
        }
    }