mirror of
https://github.com/opensim/opensim.git
synced 2026-05-15 03:15:41 +08:00
change again, on disable leave parameters as they where; add values check to osSetProjectionParams
This commit is contained in:
@@ -10561,7 +10561,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
return new LSL_List();
|
||||
}
|
||||
|
||||
if(!stexID.IsZero())
|
||||
if(stexID.IsNotZero())
|
||||
{
|
||||
part.Shape.ProjectionEntry = true;
|
||||
part.Shape.ProjectionTextureUUID = stexID;
|
||||
@@ -10575,10 +10575,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
else if(part.Shape.ProjectionEntry)
|
||||
{
|
||||
part.Shape.ProjectionEntry = false;
|
||||
part.Shape.ProjectionTextureUUID = UUID.Zero;
|
||||
part.Shape.ProjectionFOV = 0f;
|
||||
part.Shape.ProjectionFocus = 0f;
|
||||
part.Shape.ProjectionAmbiance = 0f;
|
||||
|
||||
part.ParentGroup.HasGroupChanged = true;
|
||||
part.ScheduleFullUpdate();
|
||||
|
||||
@@ -3995,31 +3995,43 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
/// </summary>
|
||||
public void osSetProjectionParams(LSL_Key prim, LSL_Integer llprojection, LSL_Key texture, LSL_Float fov, LSL_Float focus, LSL_Float amb)
|
||||
{
|
||||
SceneObjectPart obj = null;
|
||||
if (prim == ScriptBaseClass.NULL_KEY)
|
||||
if(UUID.TryParse(prim, out UUID pID) && pID.IsNotZero())
|
||||
{
|
||||
obj = m_host;
|
||||
SceneObjectPart obj = World.GetSceneObjectPart(pID);
|
||||
SetProjectionParams(obj, llprojection, texture, fov, focus, amb);
|
||||
}
|
||||
else
|
||||
{
|
||||
obj = World.GetSceneObjectPart(new UUID(prim));
|
||||
if (obj == null)
|
||||
return;
|
||||
}
|
||||
SetProjectionParams(obj, llprojection, texture, fov, focus, amb);
|
||||
SetProjectionParams(m_host, llprojection, texture, fov, focus, amb);
|
||||
}
|
||||
|
||||
private void SetProjectionParams(SceneObjectPart obj, LSL_Integer llprojection, LSL_Key texture, LSL_Float fov, LSL_Float focus, LSL_Float amb)
|
||||
{
|
||||
bool projection = llprojection != 0;
|
||||
obj.Shape.ProjectionEntry = projection;
|
||||
obj.Shape.ProjectionTextureUUID = new UUID(texture);
|
||||
obj.Shape.ProjectionFOV = (float)fov;
|
||||
obj.Shape.ProjectionFocus = (float)focus;
|
||||
obj.Shape.ProjectionAmbiance = (float)amb;
|
||||
if(obj == null || obj.IsDeleted || obj.Shape == null)
|
||||
return;
|
||||
|
||||
obj.ParentGroup.HasGroupChanged = true;
|
||||
obj.ScheduleFullUpdate();
|
||||
if(llprojection != 0)
|
||||
{
|
||||
if (!UUID.TryParse(texture, out UUID texID))
|
||||
return;
|
||||
|
||||
obj.Shape.ProjectionEntry = true;
|
||||
obj.Shape.ProjectionTextureUUID = texID;
|
||||
obj.Shape.ProjectionFOV = Util.Clamp((float)fov, 0, 3.0f);
|
||||
obj.Shape.ProjectionFocus = Util.Clamp((float)focus, 0, 20.0f);
|
||||
obj.Shape.ProjectionAmbiance = Util.Clamp((float)amb, 0, 1.0f);
|
||||
|
||||
obj.ParentGroup.HasGroupChanged = true;
|
||||
obj.ScheduleFullUpdate();
|
||||
return;
|
||||
}
|
||||
|
||||
if(obj.Shape.ProjectionEntry)
|
||||
{
|
||||
obj.Shape.ProjectionEntry = false;
|
||||
|
||||
obj.ParentGroup.HasGroupChanged = true;
|
||||
obj.ScheduleFullUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user