Esempio n. 1
0
    public bool Load(int avatarAssetId, bool playDefaultAnim, bool useShadow)
    {
        this.avatarAssetId = avatarAssetId;

        // Save the avatar id.
        this.avatarTypeId = AvatarAssetConfig.ComponentIdToAvatarTypeId(avatarAssetId);

        // Check avatar id.
        if (ConfigDatabase.DefaultCfg.AvatarAssetConfig.GetAvatarById(avatarTypeId) == null)
        {
            Debug.LogError(System.String.Format("Invalid avatar id: {0:X}", avatarTypeId));
            return(false);
        }

        // Save old scale.
        Vector3 oldScale = gameObject.transform.localScale;

        gameObject.transform.localScale = new Vector3(1, 1, 1);

        // Create avatar object.
        if (avatarComponent.UseComponent(avatarAssetId, ""))
        {
            // Create avatar animation
            avatarAnimation.CreateAnimation();

            // Play the default animation.
            if (playDefaultAnim)
            {
                avatarAnimation.PlayDefaultAnim(avatarTypeId);
            }
        }

        // Create shadow.
        if (useShadow)
        {
            GameObject shadowGO = ResourceManager.Instance.InstantiateAsset <GameObject>(GameDefines.avtShadow);
            if (shadowGO != null)
            {
                shadow = shadowGO.transform;
                ObjectUtility.AttachToParentAndKeepLocalTrans(gameObject, shadow.gameObject);
                shadow.gameObject.name = "shadow";
            }
        }

        // Finished loading recover old scale
        gameObject.transform.localScale = oldScale;

        // Process delay used styles.
        avatarComponent.ReuseDelayStyles();

        return(true);
    }