protected void SetScale(ISceneChildEntity part, LSL_Vector scale)
{
if (part == null || part.ParentEntity == null || part.ParentEntity.IsDeleted)
return;
IOpenRegionSettingsModule WSModule = m_host.ParentEntity.Scene.RequestModuleInterface<IOpenRegionSettingsModule>();
if (WSModule != null)
{
if (WSModule.MinimumPrimScale != -1)
{
if (scale.x < WSModule.MinimumPrimScale)
scale.x = WSModule.MinimumPrimScale;
if (scale.y < WSModule.MinimumPrimScale)
scale.y = WSModule.MinimumPrimScale;
if (scale.z < WSModule.MinimumPrimScale)
scale.z = WSModule.MinimumPrimScale;
}
if (part.ParentEntity.RootChild.PhysActor != null && part.ParentEntity.RootChild.PhysActor.IsPhysical &&
WSModule.MaximumPhysPrimScale != -1)
{
if (scale.x > WSModule.MaximumPhysPrimScale)
scale.x = WSModule.MaximumPhysPrimScale;
if (scale.y > WSModule.MaximumPhysPrimScale)
scale.y = WSModule.MaximumPhysPrimScale;
if (scale.z > WSModule.MaximumPhysPrimScale)
scale.z = WSModule.MaximumPhysPrimScale;
}
if (WSModule.MaximumPrimScale != -1)
{
if (scale.x > WSModule.MaximumPrimScale)
scale.x = WSModule.MaximumPrimScale;
if (scale.y > WSModule.MaximumPrimScale)
scale.y = WSModule.MaximumPrimScale;
if (scale.z > WSModule.MaximumPrimScale)
scale.z = WSModule.MaximumPrimScale;
}
}
Vector3 tmp = part.Scale;
tmp.X = (float)scale.x;
tmp.Y = (float)scale.y;
tmp.Z = (float)scale.z;
part.Scale = tmp;
part.ScheduleUpdate(PrimUpdateFlags.FindBest);
}