public void SetPrimParams(IEntity part, LSL_List rules, bool allowOpenSimParams) { int idx = 0; while (idx < rules.Length) { int code = rules.GetLSLIntegerItem(idx++); int remain = rules.Length - idx; int face; LSL_Vector v; if (code == (int) ScriptBaseClass.PRIM_NAME) { if (remain < 1) return; string name = rules.Data[idx++].ToString(); if (part is ISceneChildEntity) (part as ISceneChildEntity).Name = name; } else if (code == (int) ScriptBaseClass.PRIM_DESC) { if (remain < 1) return; string desc = rules.Data[idx++].ToString(); if (part is ISceneChildEntity) (part as ISceneChildEntity).Description = desc; } else if (code == (int) ScriptBaseClass.PRIM_ROT_LOCAL) { if (remain < 1) return; LSL_Rotation lr = rules.GetQuaternionItem(idx++); if (part is ISceneChildEntity) SetRot((part as ISceneChildEntity), Rot2Quaternion(lr)); } else if (code == (int) ScriptBaseClass.PRIM_POSITION) { if (remain < 1) return; v = rules.GetVector3Item(idx++); if (part is ISceneChildEntity) SetPos(part as ISceneChildEntity, GetPartLocalPos(part as ISceneChildEntity) + v, true); else if (part is IScenePresence) { (part as IScenePresence).OffsetPosition = new Vector3((float) v.x, (float) v.y, (float) v.z); (part as IScenePresence).SendTerseUpdateToAllClients(); } } else if (code == (int) ScriptBaseClass.PRIM_POS_LOCAL) { if (remain < 1) return; v = rules.GetVector3Item(idx++); if (part is ISceneChildEntity) { if (((ISceneChildEntity) part).ParentID != 0) ((ISceneChildEntity) part).OffsetPosition = new Vector3((float) v.x, (float) v.y, (float) v.z); else part.AbsolutePosition = new Vector3((float) v.x, (float) v.y, (float) v.z); } else if (part is IScenePresence) { (part as IScenePresence).OffsetPosition = new Vector3((float) v.x, (float) v.y, (float) v.z); (part as IScenePresence).SendTerseUpdateToAllClients(); } } else if (code == (int) ScriptBaseClass.PRIM_SIZE) { if (remain < 1) return; v = rules.GetVector3Item(idx++); if (part is ISceneChildEntity) SetScale(part as ISceneChildEntity, v); } else if (code == (int) ScriptBaseClass.PRIM_ROTATION) { if (remain < 1) return; LSL_Rotation q = rules.GetQuaternionItem(idx++); if (part is ISceneChildEntity) { // try to let this work as in SL... if ((part as ISceneChildEntity).ParentID == 0) { // special case: If we are root, rotate complete SOG to new rotation SetRot(part as ISceneChildEntity, Rot2Quaternion(q)); } else { // we are a child. The rotation values will be set to the one of root modified by rot, as in SL. Don't ask. ISceneEntity group = (part as ISceneChildEntity).ParentEntity; if (group != null) // a bit paranoid, maybe { ISceneChildEntity rootPart = group.RootChild; if (rootPart != null) // again, better safe than sorry { SetRot((part as ISceneChildEntity), rootPart.GetRotationOffset()*Rot2Quaternion(q)); } } } } else if (part is IScenePresence) { IScenePresence sp = (IScenePresence) part; ISceneChildEntity childObj = sp.Scene.GetSceneObjectPart(sp.SittingOnUUID); if (childObj != null) { sp.Rotation = childObj.ParentEntity.GroupRotation*Rot2Quaternion(q); sp.SendTerseUpdateToAllClients(); } } } else if (code == (int) ScriptBaseClass.PRIM_TYPE) { if (remain < 3) return; if (part is ISceneChildEntity) { } else return; code = rules.GetLSLIntegerItem(idx++); remain = rules.Length - idx; float hollow; LSL_Vector twist; LSL_Vector taper_b; LSL_Vector topshear; float revolutions; float radiusoffset; float skew; LSL_Vector holesize; LSL_Vector profilecut; if (code == (int) ScriptBaseClass.PRIM_TYPE_BOX) { if (remain < 6) return; face = rules.GetLSLIntegerItem(idx++); v = rules.GetVector3Item(idx++); // cut hollow = (float) rules.GetLSLFloatItem(idx++); twist = rules.GetVector3Item(idx++); taper_b = rules.GetVector3Item(idx++); topshear = rules.GetVector3Item(idx++); (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Straight; SetPrimitiveShapeParams((part as ISceneChildEntity), face, v, hollow, twist, taper_b, topshear, 1); } else if (code == (int) ScriptBaseClass.PRIM_TYPE_CYLINDER) { if (remain < 6) return; face = rules.GetLSLIntegerItem(idx++); // holeshape v = rules.GetVector3Item(idx++); // cut hollow = (float) rules.GetLSLFloatItem(idx++); twist = rules.GetVector3Item(idx++); taper_b = rules.GetVector3Item(idx++); topshear = rules.GetVector3Item(idx++); (part as ISceneChildEntity).Shape.ProfileShape = ProfileShape.Circle; (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Straight; SetPrimitiveShapeParams((part as ISceneChildEntity), face, v, hollow, twist, taper_b, topshear, 0); } else if (code == (int) ScriptBaseClass.PRIM_TYPE_PRISM) { if (remain < 6) return; face = rules.GetLSLIntegerItem(idx++); // holeshape v = rules.GetVector3Item(idx++); //cut hollow = (float) rules.GetLSLFloatItem(idx++); twist = rules.GetVector3Item(idx++); taper_b = rules.GetVector3Item(idx++); topshear = rules.GetVector3Item(idx++); (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Straight; SetPrimitiveShapeParams((part as ISceneChildEntity), face, v, hollow, twist, taper_b, topshear, 3); } else if (code == (int) ScriptBaseClass.PRIM_TYPE_SPHERE) { if (remain < 5) return; face = rules.GetLSLIntegerItem(idx++); // holeshape v = rules.GetVector3Item(idx++); // cut hollow = (float) rules.GetLSLFloatItem(idx++); twist = rules.GetVector3Item(idx++); taper_b = rules.GetVector3Item(idx++); // dimple (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Curve1; SetPrimitiveShapeParams((part as ISceneChildEntity), face, v, hollow, twist, taper_b, 5); } else if (code == (int) ScriptBaseClass.PRIM_TYPE_TORUS) { if (remain < 11) return; face = rules.GetLSLIntegerItem(idx++); // holeshape v = rules.GetVector3Item(idx++); //cut hollow = (float) rules.GetLSLFloatItem(idx++); twist = rules.GetVector3Item(idx++); holesize = rules.GetVector3Item(idx++); topshear = rules.GetVector3Item(idx++); profilecut = rules.GetVector3Item(idx++); taper_b = rules.GetVector3Item(idx++); // taper_a revolutions = (float) rules.GetLSLFloatItem(idx++); radiusoffset = (float) rules.GetLSLFloatItem(idx++); skew = (float) rules.GetLSLFloatItem(idx++); (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Curve1; SetPrimitiveShapeParams((part as ISceneChildEntity), face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 0); } else if (code == (int) ScriptBaseClass.PRIM_TYPE_TUBE) { if (remain < 11) return; face = rules.GetLSLIntegerItem(idx++); // holeshape v = rules.GetVector3Item(idx++); //cut hollow = (float) rules.GetLSLFloatItem(idx++); twist = rules.GetVector3Item(idx++); holesize = rules.GetVector3Item(idx++); topshear = rules.GetVector3Item(idx++); profilecut = rules.GetVector3Item(idx++); taper_b = rules.GetVector3Item(idx++); // taper_a revolutions = (float) rules.GetLSLFloatItem(idx++); radiusoffset = (float) rules.GetLSLFloatItem(idx++); skew = (float) rules.GetLSLFloatItem(idx++); (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Curve1; SetPrimitiveShapeParams((part as ISceneChildEntity), face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 1); } else if (code == (int) ScriptBaseClass.PRIM_TYPE_RING) { if (remain < 11) return; face = rules.GetLSLIntegerItem(idx++); // holeshape v = rules.GetVector3Item(idx++); //cut hollow = (float) rules.GetLSLFloatItem(idx++); twist = rules.GetVector3Item(idx++); holesize = rules.GetVector3Item(idx++); topshear = rules.GetVector3Item(idx++); profilecut = rules.GetVector3Item(idx++); taper_b = rules.GetVector3Item(idx++); // taper_a revolutions = (float) rules.GetLSLFloatItem(idx++); radiusoffset = (float) rules.GetLSLFloatItem(idx++); skew = (float) rules.GetLSLFloatItem(idx++); (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Curve1; SetPrimitiveShapeParams((part as ISceneChildEntity), face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 3); } else if (code == (int) ScriptBaseClass.PRIM_TYPE_SCULPT) { if (remain < 2) return; string map = rules.Data[idx++].ToString(); face = rules.GetLSLIntegerItem(idx++); // type (part as ISceneChildEntity).Shape.PathCurve = (byte) Extrusion.Curve1; SetPrimitiveShapeParams((part as ISceneChildEntity), map, face); } } else if (code == (int) ScriptBaseClass.PRIM_TEXTURE) { if (remain < 5) return; if (part is ISceneChildEntity) { } else return; face = rules.GetLSLIntegerItem(idx++); string tex = rules.Data[idx++].ToString(); LSL_Vector repeats = rules.GetVector3Item(idx++); LSL_Vector offsets = rules.GetVector3Item(idx++); double rotation = rules.GetLSLFloatItem(idx++); SetTexture((part as ISceneChildEntity), tex, face); ScaleTexture((part as ISceneChildEntity), repeats.x, repeats.y, face); OffsetTexture((part as ISceneChildEntity), offsets.x, offsets.y, face); RotateTexture((part as ISceneChildEntity), rotation, face); } else if (code == (int) ScriptBaseClass.PRIM_COLOR) { if (remain < 3) return; if (part is ISceneChildEntity) { } else return; face = rules.GetLSLIntegerItem(idx++); LSL_Vector color = rules.GetVector3Item(idx++); double alpha = rules.GetLSLFloatItem(idx++); (part as ISceneChildEntity).SetFaceColor( new Vector3((float) color.x, (float) color.y, (float) color.z), face); SetAlpha((part as ISceneChildEntity), alpha, face); } else if (code == (int) ScriptBaseClass.PRIM_FLEXIBLE) { if (remain < 7) return; if (!(part is ISceneChildEntity)) return; bool flexi = rules.GetLSLIntegerItem(idx++); int softness = rules.GetLSLIntegerItem(idx++); float gravity = (float) rules.GetLSLFloatItem(idx++); float friction = (float) rules.GetLSLFloatItem(idx++); float wind = (float) rules.GetLSLFloatItem(idx++); float tension = (float) rules.GetLSLFloatItem(idx++); LSL_Vector force = rules.GetVector3Item(idx++); SetFlexi((part as ISceneChildEntity), flexi, softness, gravity, friction, wind, tension, force); } else if (code == (int) ScriptBaseClass.PRIM_POINT_LIGHT) { if (remain < 5) return; if (!(part is ISceneChildEntity)) return; bool light = rules.GetLSLIntegerItem(idx++); LSL_Vector lightcolor = rules.GetVector3Item(idx++); float intensity = (float) rules.GetLSLFloatItem(idx++); float radius = (float) rules.GetLSLFloatItem(idx++); float falloff = (float) rules.GetLSLFloatItem(idx++); SetPointLight((part as ISceneChildEntity), light, lightcolor, intensity, radius, falloff); } else if (code == (int) ScriptBaseClass.PRIM_GLOW) { if (remain < 2) return; if (!(part is ISceneChildEntity)) return; face = rules.GetLSLIntegerItem(idx++); float glow = (float) rules.GetLSLFloatItem(idx++); SetGlow((part as ISceneChildEntity), face, glow); } else if (code == (int) ScriptBaseClass.PRIM_BUMP_SHINY) { if (remain < 3) return; if (!(part is ISceneChildEntity)) return; face = rules.GetLSLIntegerItem(idx++); int shiny = rules.GetLSLIntegerItem(idx++); Bumpiness bump = (Bumpiness) Convert.ToByte((int) rules.GetLSLIntegerItem(idx++)); SetShiny(part as ISceneChildEntity, face, shiny, bump); } else if (code == (int) ScriptBaseClass.PRIM_FULLBRIGHT) { if (remain < 2) return; if (!(part is ISceneChildEntity)) return; face = rules.GetLSLIntegerItem(idx++); bool st = rules.GetLSLIntegerItem(idx++); SetFullBright(part as ISceneChildEntity, face, st); } else if (code == (int) ScriptBaseClass.PRIM_MATERIAL) { if (remain < 1) return; if (!(part is ISceneChildEntity)) return; int mat = rules.GetLSLIntegerItem(idx++); if (mat < 0 || mat > 7) return; (part as ISceneChildEntity).UpdateMaterial(mat); } else if (code == (int) ScriptBaseClass.PRIM_PHANTOM) { if (remain < 1) return; if (!(part is ISceneChildEntity)) return; string ph = rules.Data[idx++].ToString(); bool phantom = ph.Equals("1"); (part as ISceneChildEntity).ScriptSetPhantomStatus(phantom); } else if (code == (int) ScriptBaseClass.PRIM_PHYSICS) { if (remain < 1) return; if (!(part is ISceneChildEntity)) return; string phy = rules.Data[idx++].ToString(); m_host.ParentEntity.ScriptSetPhysicsStatus(phy.Equals("1")); } else if (code == (int) ScriptBaseClass.PRIM_TEMP_ON_REZ) { if (remain < 1) return; if (!(part is ISceneChildEntity)) return; string temp = rules.Data[idx++].ToString(); bool tempOnRez = temp.Equals("1"); (part as ISceneChildEntity).ScriptSetTemporaryStatus(tempOnRez); } else if (code == (int) ScriptBaseClass.PRIM_TEXGEN) { if (remain < 2) return; if (!(part is ISceneChildEntity)) return; //face,type face = rules.GetLSLIntegerItem(idx++); int style = rules.GetLSLIntegerItem(idx++); SetTexGen((part as ISceneChildEntity), face, style); } else if (code == (int) ScriptBaseClass.PRIM_TEXT) { if (remain < 3) return; if (!(part is ISceneChildEntity)) return; string primText = rules.GetLSLStringItem(idx++); LSL_Vector primTextColor = rules.GetVector3Item(idx++); LSL_Float primTextAlpha = rules.GetLSLFloatItem(idx++); Vector3 av3 = new Vector3(Util.Clip((float) primTextColor.x, 0.0f, 1.0f), Util.Clip((float) primTextColor.y, 0.0f, 1.0f), Util.Clip((float) primTextColor.z, 0.0f, 1.0f)); (part as ISceneChildEntity).SetText(primText, av3, Util.Clip((float) primTextAlpha, 0.0f, 1.0f)); } else if (code == (int) ScriptBaseClass.PRIM_OMEGA) { if (remain < 3) return; LSL_Vector direction = rules.GetVector3Item(idx++); LSL_Float spinrate = rules.GetLSLFloatItem(idx++); LSL_Float gain = rules.GetLSLFloatItem(idx++); if (part is ISceneChildEntity) llTargetOmega(direction, spinrate, gain); } else if (code == (int) ScriptBaseClass.PRIM_PHYSICS_SHAPE_TYPE) { bool UsePhysics = ((m_host.Flags & PrimFlags.Physics) != 0); bool IsTemporary = ((m_host.Flags & PrimFlags.TemporaryOnRez) != 0); bool IsPhantom = ((m_host.Flags & PrimFlags.Phantom) != 0); bool IsVolumeDetect = m_host.VolumeDetectActive; ObjectFlagUpdatePacket.ExtraPhysicsBlock[] blocks = new ObjectFlagUpdatePacket.ExtraPhysicsBlock[1]; blocks[0] = new ObjectFlagUpdatePacket.ExtraPhysicsBlock { Density = m_host.Density, Friction = m_host.Friction, GravityMultiplier = m_host.GravityMultiplier }; LSL_Integer shapeType = rules.GetLSLIntegerItem(idx++); if (shapeType == ScriptBaseClass.PRIM_PHYSICS_SHAPE_PRIM) blocks[0].PhysicsShapeType = (byte) shapeType.value; else if (shapeType == ScriptBaseClass.PRIM_PHYSICS_SHAPE_NONE) blocks[0].PhysicsShapeType = (byte) shapeType.value; else //if(shapeType == ScriptBaseClass.PRIM_PHYSICS_SHAPE_CONVEX) blocks[0].PhysicsShapeType = (byte) shapeType.value; blocks[0].Restitution = m_host.Restitution; if (part is ISceneChildEntity) if ((part as ISceneChildEntity).UpdatePrimFlags(UsePhysics, IsTemporary, IsPhantom, IsVolumeDetect, blocks)) (part as ISceneChildEntity).ParentEntity.RebuildPhysicalRepresentation(true, null); } else if (code == (int) ScriptBaseClass.PRIM_LINK_TARGET) { if (remain < 1) return; LSL_Integer nextLink = rules.GetLSLIntegerItem(idx++); List<IEntity> entities = GetLinkPartsAndEntities(nextLink); if (entities.Count > 0) part = entities[0]; } else if (code == (int)ScriptBaseClass.OS_PRIM_PROJECTION) { if (remain < 5 || !allowOpenSimParams) return; bool projection = rules.GetLSLIntegerItem(idx++) != 0; string texture = rules.GetLSLStringItem(idx++); UUID textureKey; UUID.TryParse(texture, out textureKey); float fov = (float)rules.GetLSLFloatItem(idx++); float focus = (float)rules.GetLSLFloatItem(idx++); float ambiance = (float)rules.GetLSLFloatItem(idx++); if (part is ISceneChildEntity) { (part as ISceneChildEntity).Shape.ProjectionEntry = projection; (part as ISceneChildEntity).Shape.ProjectionTextureUUID = textureKey; (part as ISceneChildEntity).Shape.ProjectionFOV = fov; (part as ISceneChildEntity).Shape.ProjectionFocus = focus; (part as ISceneChildEntity).Shape.ProjectionAmbiance = ambiance; (part as ISceneChildEntity).ScheduleUpdate(PrimUpdateFlags.FullUpdate); } } else if (code == (int)ScriptBaseClass.OS_PRIM_VELOCITY) { if (remain < 1 || !allowOpenSimParams) return; LSL_Vector velocity = rules.GetVector3Item(idx++); (part as ISceneChildEntity).Velocity = velocity.ToVector3(); (part as ISceneChildEntity).ScheduleTerseUpdate(); } else if (code == (int)ScriptBaseClass.OS_PRIM_ACCELERATION) { if (remain < 1 || !allowOpenSimParams) return; LSL_Vector accel = rules.GetVector3Item(idx++); (part as ISceneChildEntity).Acceleration = accel.ToVector3(); (part as ISceneChildEntity).ScheduleTerseUpdate(); } } }
public void llSetKeyframedMotion(LSL_List keyframes, LSL_List options) { if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) return; if (!m_host.IsRoot) { ShoutError("Must be used in the root object!"); return; } KeyframeAnimation.Data dataType = KeyframeAnimation.Data.Both; KeyframeAnimation.Modes currentMode = KeyframeAnimation.Modes.Forward; for (int i = 0; i < options.Length; i += 2) { LSL_Integer option = options.GetLSLIntegerItem(i); LSL_Integer value = options.GetLSLIntegerItem(i + 1); if (option == ScriptBaseClass.KFM_COMMAND) { m_host.ParentEntity.AddKeyframedMotion(null, (KeyframeAnimation.Commands) value.value); break; //Its supposed to be the only option in the list } if (option == ScriptBaseClass.KFM_MODE) { currentMode = (KeyframeAnimation.Modes) value.value; } else if (option == ScriptBaseClass.KFM_DATA) { dataType = (KeyframeAnimation.Data) value.value; } } List<Vector3> positions = new List<Vector3>(); List<Quaternion> rotations = new List<Quaternion>(); List<float> times = new List<float>(); for (int i = 0; i < keyframes.Length; i += (dataType == KeyframeAnimation.Data.Both ? 3 : 2)) { if (dataType == KeyframeAnimation.Data.Both || dataType == KeyframeAnimation.Data.Translation) { LSL_Vector pos = keyframes.GetVector3Item(i); positions.Add(pos.ToVector3()); } if (dataType == KeyframeAnimation.Data.Both || dataType == KeyframeAnimation.Data.Rotation) { LSL_Rotation rot = keyframes.GetQuaternionItem(i + (dataType == KeyframeAnimation.Data.Both ? 1 : 0)); Quaternion quat = rot.ToQuaternion(); quat.Normalize(); rotations.Add(quat); } LSL_Float time = keyframes.GetLSLFloatItem(i + (dataType == KeyframeAnimation.Data.Both ? 2 : 1)); times.Add((float)time); } KeyframeAnimation animation = new KeyframeAnimation { CurrentMode = currentMode, PositionList = positions.ToArray(), RotationList = rotations.ToArray(), TimeList = times.ToArray(), CurrentAnimationPosition = 0, InitialPosition = m_host.AbsolutePosition, InitialRotation = m_host.GetRotationOffset() }; m_host.ParentEntity.AddKeyframedMotion(animation, KeyframeAnimation.Commands.Play); }
private void ConvertLSLToWindlight(ref WindlightDayCycle cycle, int preset, LSL_List list) { var skyDatas = cycle.Cycle.DataSettings.Values.ToList(); var skyData = skyDatas[preset]; for (int i = 0; i < list.Data.Length; i += 2) { int key = list.GetLSLIntegerItem(i); switch (key) { case ScriptBaseClass.WL_AMBIENT: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.ambient = rot.ToVector4(); break; } case ScriptBaseClass.WL_CLOUD_COLOR: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.cloud_color = rot.ToVector4(); break; } case ScriptBaseClass.WL_CLOUD_POS_DENSITY1: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.cloud_pos_density1 = rot.ToVector4(); break; } case ScriptBaseClass.WL_CLOUD_POS_DENSITY2: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.cloud_pos_density2 = rot.ToVector4(); break; } case ScriptBaseClass.WL_CLOUD_SCALE: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.cloud_scale = rot.ToVector4(); break; } case ScriptBaseClass.WL_CLOUD_SCROLL_X: { LSL_Integer integer = list.GetLSLIntegerItem(i + 1); skyData.cloud_scroll_rate.X = integer; break; } case ScriptBaseClass.WL_CLOUD_SCROLL_Y: { LSL_Integer integer = list.GetLSLIntegerItem(i + 1); skyData.cloud_scroll_rate.Y = integer; break; } case ScriptBaseClass.WL_CLOUD_SCROLL_X_LOCK: { LSL_Integer integer = list.GetLSLIntegerItem(i + 1); skyData.enable_cloud_scroll.X = integer; break; } case ScriptBaseClass.WL_CLOUD_SCROLL_Y_LOCK: { LSL_Integer integer = list.GetLSLIntegerItem(i + 1); skyData.enable_cloud_scroll.Y = integer; break; } case ScriptBaseClass.WL_CLOUD_SHADOW: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.cloud_shadow = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_BLUE_DENSITY: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.blue_density = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_BLUR_HORIZON: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.blue_horizon = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_DENSITY_MULTIPLIER: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.density_multiplier = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_DISTANCE_MULTIPLIER: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.distance_multiplier = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_GAMMA: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.gamma = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_GLOW: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.glow = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_HAZE_DENSITY: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.haze_density = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_HAZE_HORIZON: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.haze_horizon = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_LIGHT_NORMALS: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.lightnorm = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_MAX_ALTITUDE: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.max_y = rot.ToVector4(); break; } case ScriptBaseClass.WL_SKY_STAR_BRIGHTNESS: { LSL_Float f = list.GetLSLFloatItem(i + 1); skyData.star_brightness = (float) f.value; break; } case ScriptBaseClass.WL_SKY_SUNLIGHT_COLOR: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); skyData.sunlight_color = rot.ToVector4(); break; } case ScriptBaseClass.WL_WATER_BIG_WAVE_DIRECTION: { var rot = list.GetVector3Item(i + 1); cycle.Water.wave1Dir = new Vector2((float) rot.x.value, (float) rot.y.value); break; } case ScriptBaseClass.WL_WATER_BLUR_MULTIPLIER: { var f = list.GetLSLFloatItem(i + 1); cycle.Water.blurMultiplier = (float) f.value; break; } case ScriptBaseClass.WL_WATER_FOG_COLOR: { LSL_Rotation rot = list.GetQuaternionItem(i + 1); cycle.Water.waterFogColor = rot.ToVector4(); break; } case ScriptBaseClass.WL_WATER_FOG_DENSITY: { var f = list.GetLSLFloatItem(i + 1); cycle.Water.waterFogDensity = (float) f.value; break; } case ScriptBaseClass.WL_WATER_FRESNEL_OFFSET: { var f = list.GetLSLFloatItem(i + 1); cycle.Water.fresnelOffset = (float) f.value; break; } case ScriptBaseClass.WL_WATER_FRESNEL_SCALE: { var f = list.GetLSLFloatItem(i + 1); cycle.Water.fresnelScale = (float) f.value; break; } case ScriptBaseClass.WL_WATER_LITTLE_WAVE_DIRECTION: { var rot = list.GetVector3Item(i + 1); cycle.Water.wave2Dir = new Vector2((float) rot.x.value, (float) rot.y.value); break; } case ScriptBaseClass.WL_WATER_NORMAL_MAP: { var f = list.GetLSLStringItem(i + 1); cycle.Water.normalMap = UUID.Parse(f.m_string); break; } case ScriptBaseClass.WL_WATER_NORMAL_SCALE: { LSL_Vector rot = list.GetVector3Item(i + 1); cycle.Water.normScale = rot.ToVector3(); break; } case ScriptBaseClass.WL_WATER_SCALE_ABOVE: { var f = list.GetLSLFloatItem(i + 1); cycle.Water.scaleAbove = (float) f.value; break; } case ScriptBaseClass.WL_WATER_SCALE_BELOW: { var f = list.GetLSLFloatItem(i + 1); cycle.Water.scaleBelow = (float) f.value; break; } case ScriptBaseClass.WL_WATER_UNDERWATER_FOG_MODIFIER: { var f = list.GetLSLFloatItem(i + 1); cycle.Water.underWaterFogMod = (float) f.value; break; } } } }