Exemple #1
0
        private IEnumerator AsyncAvatarRoutine(SteamId id)
        {
            Task <Image?> imageTask = SteamFriends.GetLargeAvatarAsync(id);

            while (!imageTask.IsCompleted)
            {
                // WaitForEndOfFrame is broken in MelonLoader, so use WaitForSeconds
                yield return(new WaitForSeconds(0.011f));
            }

            if (imageTask.Result.HasValue)
            {
                GameObject avatar = GameObject.CreatePrimitive(PrimitiveType.Quad);
                UnityEngine.Object.Destroy(avatar.GetComponent <Collider>());
                var avatarMr  = avatar.GetComponent <MeshRenderer>();
                var avatarMat = avatarMr.material;
                avatarMat.shader = Shader.Find("Unlit/Texture");

                var avatarIcon = imageTask.Result.Value;

                Texture2D returnTexture = new Texture2D((int)avatarIcon.Width, (int)avatarIcon.Height, TextureFormat.RGBA32, false, true);
                GCHandle  pinnedArray   = GCHandle.Alloc(avatarIcon.Data, GCHandleType.Pinned);
                IntPtr    pointer       = pinnedArray.AddrOfPinnedObject();
                returnTexture.LoadRawTextureData(pointer, avatarIcon.Data.Length);
                returnTexture.Apply();
                pinnedArray.Free();

                avatarMat.mainTexture = returnTexture;

                avatar.transform.SetParent(namePlate.transform);
                avatar.transform.localScale    = new Vector3(0.25f, -0.25f, 0.25f);
                avatar.transform.localPosition = new Vector3(0.0f, 0.2f, 0.0f);
            }
        }
Exemple #2
0
        private async Task GetSteamImage(SteamId steamId, AvatarSize size)
        {
            Steamworks.Data.Image?image;
            switch (size)
            {
            case AvatarSize.Small:
                image = await SteamFriends.GetSmallAvatarAsync(steamId);

                break;

            case AvatarSize.Medium:
                image = await SteamFriends.GetMediumAvatarAsync(steamId);

                break;

            case AvatarSize.Large:
                image = await SteamFriends.GetLargeAvatarAsync(steamId);

                break;

            default:
                throw new ArgumentException("Unknown Steam Avatar size!");
            }
            if (image.HasValue)
            {
                LoadTextureFromImage(image.Value);
            }
        }
        private async UniTaskVoid LoadSteamAvatarAsync()
        {
            Image?imageTask = await SteamFriends.GetLargeAvatarAsync(UserId).AsUniTask();

            if (!imageTask.HasValue)
            {
                return;
            }

            Image image = imageTask.Value;

            Logger.Debug("Got Steam user profile image of {Height} x {Width}", image.Height, image.Width);

            if (userProfilePicture.width != image.Width || userProfilePicture.height != image.Height)
            {
                userProfilePicture.Reinitialize((int)image.Width, (int)image.Height);
            }

            userProfilePicture.LoadSteamworksImageIntoTexture2D(image);
        }
    public async void GetAvatar()
    {
        var image = await SteamFriends.GetLargeAvatarAsync(SteamClient.SteamId);

        if (!image.HasValue)
        {
            return;
        }


        //  await new WaitForUpdate();

        Texture2D avatarTex = new Texture2D((int)image.Value.Width, (int)image.Value.Height, TextureFormat.RGBA32, false);

        avatarTex.LoadRawTextureData(image.Value.Data);
        avatarTex.Apply();

        //avatarImage.texture = avatarTex;


        //return MakeTextureFromRGBA( image.Data, image.Width, image.Height );
    }