steamworks.newTexture()

Type Function
Return value TextureResourceExternal
Revision Release 2024.3703
Keywords steam, steamworks, newTexture
See also steamworks.getAchievementImageInfo()
steamworks.getUserImageInfo()
steamworks.newImageRect()
steamworks.*

Overview

Loads a Steam image to a texture by its unique imageHandle that was retrieved by the steamworks.getAchievementImageInfo() or steamworks.getUserImageInfo() functions.

The returned texture can be shown by the display.newImage() and display.newImageRect() functions. The texture can also be applied to an existing ShapeObject via its fill property.

Gotchas

This function will return nil in the following cases:

Syntax

steamworks.newTexture( imageHandle )
imageHandle (required)

Number. Unique identifier of the Steam image to load as a texture. This identifier is provided by an ImageInfo object's imageHandle property.

Example

local steamworks = require( "plugin.steamworks" )

-- Create a rectangle which we'll later fill with the avatar image
local defaultAvatarWidth = 184 * display.contentScaleX
local defaultAvatarHeight = 184 * display.contentScaleY
local avatarImage = display.newRect(
    display.contentCenterX, display.contentCenterY,
    defaultAvatarWidth, defaultAvatarHeight )

-- Updates the above display object's "fill" to show the newest large avatar image
local function updateAvatar()
    -- Attempt to fetch info about the user's large avatar image
    local imageInfo = steamworks.getUserImageInfo( "largeAvatar" )
    if ( imageInfo == nil ) then
        return
    end

    -- Load the avatar image into a new texture resource object
    local newTexture = steamworks.newTexture( imageInfo.imageHandle )
    if ( newTexture == nil ) then
        return
    end
    
    -- Update the display object to show the avatar image
    avatarImage.fill =
    {
        type = "image",
        filename = newTexture.filename,
        baseDir = newTexture.baseDir
    }

    -- Release the texture reference
    newTexture:releaseSelf()
end


-- Attempt to update the display object with Steam's current image, if available
-- If not currently available, this function call will trigger Steam to download it
-- In this case, it dispatches a "userInfoUpdate" event to be received below
updateAvatar()

-- Set up a listener to be called when a user's info has changed
local function onUserInfoUpdated( event )
    -- Update display object only when the current user's avatar changes
    if ( steamworks.userSteamId == event.userSteamId ) then
        if ( event.largeAvatarChanged ) then
            updateAvatar()
        end
    end
end
steamworks.addEventListener( "userInfoUpdate", onUserInfoUpdated )