mirror of
https://github.com/opensim/opensim.git
synced 2026-08-11 11:57:03 +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();
|
return new LSL_List();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!stexID.IsZero())
|
if(stexID.IsNotZero())
|
||||||
{
|
{
|
||||||
part.Shape.ProjectionEntry = true;
|
part.Shape.ProjectionEntry = true;
|
||||||
part.Shape.ProjectionTextureUUID = stexID;
|
part.Shape.ProjectionTextureUUID = stexID;
|
||||||
@@ -10575,10 +10575,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||||||
else if(part.Shape.ProjectionEntry)
|
else if(part.Shape.ProjectionEntry)
|
||||||
{
|
{
|
||||||
part.Shape.ProjectionEntry = false;
|
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.ParentGroup.HasGroupChanged = true;
|
||||||
part.ScheduleFullUpdate();
|
part.ScheduleFullUpdate();
|
||||||
|
|||||||
@@ -3995,31 +3995,43 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void osSetProjectionParams(LSL_Key prim, LSL_Integer llprojection, LSL_Key texture, LSL_Float fov, LSL_Float focus, LSL_Float amb)
|
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(UUID.TryParse(prim, out UUID pID) && pID.IsNotZero())
|
||||||
if (prim == ScriptBaseClass.NULL_KEY)
|
|
||||||
{
|
{
|
||||||
obj = m_host;
|
SceneObjectPart obj = World.GetSceneObjectPart(pID);
|
||||||
|
SetProjectionParams(obj, llprojection, texture, fov, focus, amb);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
SetProjectionParams(m_host, llprojection, texture, fov, focus, amb);
|
||||||
obj = World.GetSceneObjectPart(new UUID(prim));
|
|
||||||
if (obj == null)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
SetProjectionParams(obj, 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)
|
private void SetProjectionParams(SceneObjectPart obj, LSL_Integer llprojection, LSL_Key texture, LSL_Float fov, LSL_Float focus, LSL_Float amb)
|
||||||
{
|
{
|
||||||
bool projection = llprojection != 0;
|
if(obj == null || obj.IsDeleted || obj.Shape == null)
|
||||||
obj.Shape.ProjectionEntry = projection;
|
return;
|
||||||
obj.Shape.ProjectionTextureUUID = new UUID(texture);
|
|
||||||
obj.Shape.ProjectionFOV = (float)fov;
|
|
||||||
obj.Shape.ProjectionFocus = (float)focus;
|
|
||||||
obj.Shape.ProjectionAmbiance = (float)amb;
|
|
||||||
|
|
||||||
obj.ParentGroup.HasGroupChanged = true;
|
if(llprojection != 0)
|
||||||
obj.ScheduleFullUpdate();
|
{
|
||||||
|
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>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user