llSetAgentEnvironment

From Second Life Wiki
Revision as of 03:56, 19 October 2023 by Jenna Huntsman (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Summary

Function: llSetAgentEnvironment( key agent_id, float transition, list params );

This function sets environment values for an individual agent in an experience. The changes to the environment persist until the agent moves to a new region or llSetAgentEnvironment is called for an agent with an empty list. Passing an empty list in params will strip all environmental settings applied to this agent as part of the experience

• key agent_id The key for an agent in the region. The agent must be in the region and must be participating in the experience.
• float transition The number of seconds over which to transition to the new settings.
• list params A list of parameters to retrieve from the current environment. See table below for details.

Return Values
Value Constant Description
1 The agent has been instructed to change their environment.
ENV_NOT_EXPERIENCE -1 The script is not running as part of an experience with a valid experience key.
ENV_NO_EXPERIENCE_PERMISSION -2 The agent has not granted permission.
ENV_NO_ENVIRONMENT -3 The environment inventory object could not be found.
ENV_INVALID_AGENT -4 Unable to find specified agent.
ENV_INVALID_RULE -5 There was an issue with one of the rules.
ENV_VALIDATION_FAIL -6 Unable to validate values passed.
ENV_NO_EXPERIENCE_LAND -7 The experience has not been enabled or can not run on the land.
ENV_THROTTLE -8 The scripts have exceeded the throttle. Wait and retry the request.

Parameters

parameter integer value values to set description
SKY_CLOUDS 2 vector color, float coverage, float scale, float variance, vector scroll, vector density, vector detail Environmental cloud information:
  • color: The color used for the clouds.
    range = [<0,0,0>, <1,1,1>]
  • coverage: The coverage percentage.
    range = [0, 1]
  • scale: The scaling applied to the cloud textures.
    range = (0 - 3]
  • variance: A randomizing factor applied to the main cloud layer.
    range = [0, 1]
  • scroll: The scroll speed of the clouds. X is east/west, Y is north/south, and Z is unused.
    range = [<-50,-50>, <50,50>]
  • density: The X/Y and D parameter used to generate cloud density.
    range = [<0,0,0>, <1,1,3>]
  • detail: The X/Y and D parameter used to generate cloud details.
    range = [<0,0,0>, <1,1,1>]
SKY_CLOUD_TEXTURE 19 string texture_ident Name of item in inventory or UUID for texture to be used for the clouds.
SKY_DOME 4 float offset, float radius, float max_altitude Sky dome information.
  • offset: offset applied to the sky dome.
    range = [0,1]
  • radius: radius of the sky dome.
    range = [1000,2000]
  • max_altitude: altitude of the sky dome.
    range = [0,10000]
SKY_GAMMA 5 float gamma The gamma value applied to the scene.
range = [0,20]
SKY_GLOW 6 float glow_size, float glow_focus Glow applied to the sun and moon.
  • glow_size: size of glow effect.
    range = [0.2, 40]
  • glow_focus: focus of glow effect.
    Range [-10, 10]
SKY_MOON 9 rotation rot, float scale, float brightness Detailed moon information:
  • rot: The current rotation applied to the moon.
    Normalized rotation.
  • scale: The current scale applied to the moon's texture.
    range = [0.25, 20]
  • brightness: The moon's brightness.
    range = [0,1]
SKY_MOON_TEXTURE 20 string texture_ident Name of texture in inventory or UUID for texture to be used for the moon.
SKY_STAR_BRIGHTNESS 13 float brightness Brightness value applied to stars.
range = [0,500]
SKY_SUN 14 rotation rot, float scale, vector sun_color Detailed sun information:
  • rot: The current rotation applied to the sun.
    Normalized rotation.
  • scale: The current scale applied to the sun's texture.
    range = [0.25, 20]
  • sun_color: The sun's color.
    range = [<0,0,0>, <1,1,1>]
SKY_SUN_TEXTURE 21 string texture_ident Name of texture in inventory or UUID for texture to be used for the sun.
SKY_PLANET 10 float planet_radius, float sky_bottom_radius, float sky_top_radius Planet information used in rendering the sky.
  • planet_radius: range = [1000, 32768]
  • sky_bottom_radius: range = [1000, 32768]
  • sky_top_radius: range = [1000, 32768]
SKY_REFRACTION 11 float moisture_level, float droplet_radius, float ice_level Sky refraction parameters for rainbows and optical effects.
  • moisture_level: range = [0, 1]
  • droplet_radius: range = [5, 1000]
  • ice_level: range = [0, 1]
WATER_BLUR_MULTIPLIER 100 float multiplier Multiplier applied to blur the scene when under water.

range = [-0.5, 0.5]

WATER_FOG 101 vector color, float density, fload modulation Fog parameters applied when underwater:
  • color: The color of the underwater fog.
    range = [<0,0,0>, <1,1,1>]
  • density: Density exponent applied to the fog.
    range = [-10, 10]
  • modulation:
    range = [0, 20]
WATER_FRESNEL 102 float offset, float scale Fresnel scattering applied to the surface of the water.
  • offset: range = [0,1]

scale: range = [0,1]

WATER_NORMAL_TEXTURE 107 string texture_ident Name of texture in inventory or UUID of texture to be used for the water normal.
WATER_NORMAL_SCALE 104 vector scale Scaling applied to the water normal map.

range = [<0,0,0>, <10,10,10>]

WATER_REFRACTION 105 float scale_above, float scale_below Refraction factors when looking through the surface of the water.
  • scale_above: range = [0, 3]
  • scale_below: range = [0, 3]
WATER_WAVE_DIRECTION 106 vector large_wave, vector small_wave Vector for the directions of the waves Y represents north/south and X represents movement east/west.
  • large_wave: Large wave speed and direction.
    range = [<-20, -20>, <20, 20>]
  • small_wave: Small wave speed and direction.
    range = [<-20, -20>, <20, 20>]
SKY_AMBIENT 0 vector color Ambient color used in the scene.
SKY_BLUE 22 vector blue_density, vector blue_horizon Change the colors used to calculate blue density and blue horizon in the environment.
SKY_HAZE 23 float density, float horizon, float density_multiplier, float distance_multiplier Values used to calculate the impact of blue_density and blue_horizon on the scene lighting.
SKY_REFLECTION_PROBE_AMBIANCE 24 float ambiance Minimum ambiance value for all reflection probes.

range = [0.0, 10.0]

Caveat: This feature will be supported in the upcoming GLTF Materials project. Currently it will only work in supported testing areas with a supported test viewer.

Caveats

  • The list of valid parameters differs from those available for llGetEnvironment.
  • The agent's viewer may choose to ignore this command.
  • An environment set locally on the viewer will override any environment set from this function.

Examples

float gTransitionTime = 3.0;
list gListEnvironmentParams = [
    SKY_CLOUD_TEXTURE, TEXTURE_PLYWOOD,
    SKY_GAMMA, 10.0,
    WATER_NORMAL_SCALE, <5.0, 5.0, 5.0>
];

default
{
    touch_start(integer total_number)
    {
        key person = llDetectedKey(0);
        if (llGetAgentSize(person) != ZERO_VECTOR)
        {
            llRequestExperiencePermissions(person, "");
        }
        else
        {
            llInstantMessage(person, "You need to be in the same region to change environment");
        }
    }

    experience_permissions(key agent_id)
    {
        integer envTest = llSetAgentEnvironment(agent_id, gTransitionTime, gListEnvironmentParams);
        if (envTest == 1)
        {
            llRegionSayTo(agent_id, 0, "Applying environment for " + (string)agent_id);
        }
        else
        {
            llRegionSayTo(agent_id, 0, "Cannot apply environment for " + (string)agent_id + " due to reason id: " + (string)envTest);
        }
    }

    experience_permissions_denied(key agent_id, integer reason)
    {
        llRegionSayTo(agent_id, 0, "Denied experience permissions for " + (string)agent_id + " due to reason id: " + (string)reason);
    }
}

See Also

Deep Notes

Signature

function void llSetAgentEnvironment( key agent_id, float transition, list params );