Same HUD but this time extended for region daycycle replacement. If your avatar is on a standard parcel, parcel replacement is used. If the avatar is on a parcel with
Region in its name then region replacement at ground level is used. However, it is also necessary to use the
World|Parcel details|Environment|Use Region Settings button or nothing will happen. As ever, feel free to ignore/improve; this is very much a learning exercise for yours truly. As previously, you will need appropriate permissions for changes to take effect.
ps If you override region/parcel settings by setting, for example, Midday from the
World|Environment menu, you will also need to enable
Use Shared Environments from the same menu to enable the HUD.
PS Useful thread on the default daycycle
viewtopic.php?f=8&p=30328#p30328
Code: Select all
integer p = 0;
integer count;
integer transition = 3;
default
{
state_entry()
{
p = 0;
count = llGetInventoryNumber(INVENTORY_TEXTURE);
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, p), 0);
}
on_rez(integer n)
{
p = 0;
count = llGetInventoryNumber(INVENTORY_TEXTURE);
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, p), 0);
}
touch_start(integer n)
{
list details = llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_NAME]);
string flag = "";
if (llSubStringIndex(llList2String(details ,0), "Parcel") > -1)
{
flag = "Parcel";
}
else if (llSubStringIndex(llList2String(details ,0), "Region") > -1)
{
flag = "Region";
}
integer face = llDetectedTouchFace(0);
if (face == 4)
{
//next
p++;
if (p == count)
{
p = 0;
}
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, p), 0);
}
else if (face == 2)
{
//prev
p = p-1;
if (p < 0)
{
p = count-1;
}
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, p), 0);
}
else if (face == 0)
{
//replace
if (flag == "Region")
{
llOwnerSay("Changing region daycycle");
osReplaceRegionEnvironment(transition, llGetInventoryName(INVENTORY_SETTING, p), (float)(llGetRegionDayLength()/3600), (float)((llGetRegionDayOffset()/3600)-24.0), 0, 0, 0);
osReplaceRegionEnvironment(transition, llGetInventoryName(INVENTORY_SETTING, p), 4.0, -8.0, 0, 0, 0);
}
else
{
llOwnerSay("Changing parcel daycycle");
osReplaceParcelEnvironment(transition, llGetInventoryName(INVENTORY_SETTING, p));
}
}
}
}