add osSetTerrainTextures(LSL_List textures, LSL_Integer types) to set terrain textures for legacy viewers it types == 0 or 2; textures for new viewers if types == 1 or 2 or PBR materials if types == 1 (untested :( )

This commit is contained in:
UbitUmarov
2025-05-06 01:29:24 +01:00
parent c9b4d3374f
commit 23ad195e7a
6 changed files with 174 additions and 13 deletions

View File

@@ -996,13 +996,15 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
}
else
{
userdata = new UserData();
userdata.Id = uuid;
userdata.FirstName = "Unknown";
userdata.LastName = uuid.ToString();
userdata.HomeURL = string.Empty;
userdata.IsUnknownUser = true;
userdata.HasGridUserTried = false;
userdata = new UserData
{
Id = uuid,
FirstName = "Unknown",
LastName = uuid.ToString(),
HomeURL = string.Empty,
IsUnknownUser = true,
HasGridUserTried = false
};
}
if (!userdata.HasGridUserTried)

View File

@@ -228,7 +228,104 @@ namespace OpenSim.Region.CoreModules.World.Estate
public void setEstateTerrainBaseTexture(int level, UUID texture)
{
SetEstateTerrainBaseTexture(null, level, texture);
if (texture.IsZero())
return;
switch (level)
{
case 0:
Scene.RegionInfo.RegionSettings.TerrainTexture1 = texture;
break;
case 1:
Scene.RegionInfo.RegionSettings.TerrainTexture2 = texture;
break;
case 2:
Scene.RegionInfo.RegionSettings.TerrainTexture3 = texture;
break;
case 3:
Scene.RegionInfo.RegionSettings.TerrainTexture4 = texture;
break;
default:
return;
}
Scene.RegionInfo.RegionSettings.Save();
TriggerRegionInfoChange();
sendRegionHandshakeToAll();
}
public void SetEstateTerrainTextures(List<UUID> ids, int types)
{
switch(types)
{
case 2:
if (ids[0].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture1 = ids[0];
Scene.RegionInfo.RegionSettings.TerrainPBR1 = ids[0];
}
if (ids[1].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture2 = ids[1];
Scene.RegionInfo.RegionSettings.TerrainPBR2 = ids[1];
}
if (ids[2].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture3 = ids[2];
Scene.RegionInfo.RegionSettings.TerrainPBR3 = ids[2];
}
if (ids[3].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture4 = ids[3];
Scene.RegionInfo.RegionSettings.TerrainPBR4 = ids[3];
}
break;
case 1:
if (ids[0].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainPBR1 = ids[0];
}
if (ids[1].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainPBR2 = ids[1];
}
if (ids[2].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainPBR3 = ids[2];
}
if (ids[3].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainPBR4 = ids[3];
}
break;
case 0:
if (ids[0].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture1 = ids[0];
}
if (ids[1].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture2 = ids[1];
}
if (ids[2].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture3 = ids[2];
}
if (ids[3].IsNotZero())
{
Scene.RegionInfo.RegionSettings.TerrainTexture4 = ids[3];
}
break;
default:
return;
}
Scene.RegionInfo.RegionSettings.Save();
TriggerRegionInfoChange();
sendRegionHandshakeToAll();
}
public void setEstateTerrainTextureHeights(int corner, float lowValue, float highValue)