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); } }
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 ); }