コード例 #1
0
    private IEnumerator DownloadAvatar(BodyAttachment bodyAttachment, string avatarCode, string haircutIdentity, string hairColor)
    {
        // download head
        var headRequest = avatarProvider.GetHeadMeshAsync(avatarCode, true);

        yield return(Await(headRequest));

        TexturedMesh headTexturedMesh = headRequest.Result;

        // download  haircut
        TexturedMesh haircutTexturedMesh = null;

        if (haircutIdentity != null)
        {
            var haircutRequest = avatarProvider.GetHaircutMeshAsync(avatarCode, haircutIdentity);
            yield return(Await(haircutRequest));

            haircutTexturedMesh = haircutRequest.Result;
        }

        // display head
        DisplayHead(bodyAttachment, headTexturedMesh, haircutTexturedMesh, hairColor);

        // finish!
        FinishAvatar();
    }
コード例 #2
0
    private IEnumerator Initialize(string playerId, string avatarCode, string haircutIdentity, string hairColor)
    {
        yield return(Await(avatarProvider.InitializeAsync(playerId)));

        BodyAttachment bodyAttach = playerObj.transform.Find("body_attachment").GetComponent <BodyAttachment>();

        StartCoroutine(DownloadAvatar(bodyAttach, avatarCode, haircutIdentity, hairColor));
    }
コード例 #3
0
    private void DisplayHead(BodyAttachment bodyAttachment, TexturedMesh headMesh, TexturedMesh haircutMesh, string hairColor)
    {
        var avatarObject = new GameObject("Avatar");

        // create head object in the scene
        SkinnedMeshRenderer headRenderer = null;

        if (headMesh != null)
        {
            var meshObject = new GameObject("HeadObject");
            headRenderer = meshObject.AddComponent <SkinnedMeshRenderer>();

            headRenderer.sharedMesh = headMesh.mesh;
            var material = new Material(Shader.Find("AvatarUnlitShader"));
            material.mainTexture  = headMesh.texture;
            headRenderer.material = material;
            meshObject.transform.SetParent(avatarObject.transform);
        }

        // create haircut object in the scene
        if (haircutMesh != null)
        {
            var meshObject   = new GameObject("HaircutObject");
            var meshRenderer = meshObject.AddComponent <SkinnedMeshRenderer>();

            meshRenderer.sharedMesh = haircutMesh.mesh;
            var material = new Material(Shader.Find("AvatarUnlitHairShader"));
            material.mainTexture  = haircutMesh.texture;
            meshRenderer.material = material;

            if (!ChangeMeshTint(meshRenderer, hairColor))
            {
                Debug.LogError("Error changing hair color!");
            }

            meshObject.transform.SetParent(avatarObject.transform);
        }

        // attach head
        if (bodyAttachment != null)
        {
            bodyAttachment.AttachHeadToBody(avatarObject);
        }

        // change body skin color match head color
        if (bodyAttachment != null && headRenderer != null)
        {
            MatchTwoMeshTint(bodyAttachment.body.GetComponent <SkinnedMeshRenderer>(), headRenderer);
        }
    }