aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTeravus Ovares2008-06-06 22:28:52 +0000
committerTeravus Ovares2008-06-06 22:28:52 +0000
commit8c507b633b50dbcaae7062f4394fdaba6b060716 (patch)
tree9ca3a698358fec38d11c69411c4bf95b02079e2d
parent* Added a configuration option for allowing god script lsl methods.. such as... (diff)
downloadopensim-SC-8c507b633b50dbcaae7062f4394fdaba6b060716.zip
opensim-SC-8c507b633b50dbcaae7062f4394fdaba6b060716.tar.gz
opensim-SC-8c507b633b50dbcaae7062f4394fdaba6b060716.tar.bz2
opensim-SC-8c507b633b50dbcaae7062f4394fdaba6b060716.tar.xz
* Added Light control from script in LLSetPrimitiveParams.
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs16
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs59
2 files changed, 73 insertions, 2 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index 0948d69..c000047 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -950,6 +950,22 @@ namespace OpenSim.Region.Environment.Scenes
950 } 950 }
951 } 951 }
952 } 952 }
953 public void FakeDeleteGroup()
954 {
955 foreach (SceneObjectPart part in m_parts.Values)
956 {
957 List<ScenePresence> avatars = Scene.GetScenePresences();
958 for (int i = 0; i < avatars.Count; i++)
959 {
960 if (avatars[i].ParentID == LocalId)
961 {
962 avatars[i].StandUp();
963 }
964
965 avatars[i].ControllingClient.SendKillObject(m_regionHandle, part.LocalId);
966 }
967 }
968 }
953 969
954 /// <summary> 970 /// <summary>
955 /// Delete all the parts in this group. 971 /// Delete all the parts in this group.
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
index 68b87fd..796b065 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
@@ -1049,8 +1049,13 @@ namespace OpenSim.Region.ScriptEngine.Common
1049 if (part == null) 1049 if (part == null)
1050 return; 1050 return;
1051 1051
1052 bool needs_fakedelete = false;
1052 if (flexi) 1053 if (flexi)
1053 { 1054 {
1055 if (!part.Shape.FlexiEntry)
1056 {
1057 needs_fakedelete = true;
1058 }
1054 part.Shape.FlexiEntry = true; // this setting flexi true isn't working, but the below parameters do 1059 part.Shape.FlexiEntry = true; // this setting flexi true isn't working, but the below parameters do
1055 // work once the prim is already flexi 1060 // work once the prim is already flexi
1056 part.Shape.FlexiSoftness = softness; 1061 part.Shape.FlexiSoftness = softness;
@@ -1065,11 +1070,50 @@ namespace OpenSim.Region.ScriptEngine.Common
1065 } 1070 }
1066 else 1071 else
1067 { 1072 {
1073 if (part.Shape.FlexiEntry)
1074 {
1075 needs_fakedelete = true;
1076 }
1068 part.Shape.FlexiEntry = false; 1077 part.Shape.FlexiEntry = false;
1069 } 1078 }
1070 part.SendFullUpdateToAllClients(); 1079
1080 needs_fakedelete = false;
1081 if (needs_fakedelete)
1082 {
1083 if (part.ParentGroup != null)
1084 {
1085 part.ParentGroup.FakeDeleteGroup();
1086 }
1087 }
1088
1089 part.ScheduleFullUpdate();
1090 }
1091
1092 private void SetPointLight(SceneObjectPart part, bool light, LSL_Types.Vector3 color, float intensity, float radius, float falloff)
1093 {
1094 if (part == null)
1095 return;
1096
1097 if (light)
1098 {
1099 part.Shape.LightEntry = true;
1100 part.Shape.LightColorR = (float)color.x;
1101 part.Shape.LightColorG = (float)color.y;
1102 part.Shape.LightColorB = (float)color.z;
1103 part.Shape.LightIntensity = intensity;
1104 part.Shape.LightRadius = radius;
1105 part.Shape.LightFalloff = falloff;
1106 }
1107 else
1108 {
1109 part.Shape.LightEntry = false;
1110 }
1111
1112 part.ScheduleFullUpdate();
1071 } 1113 }
1072 1114
1115
1116
1073 public LSL_Types.Vector3 llGetColor(int face) 1117 public LSL_Types.Vector3 llGetColor(int face)
1074 { 1118 {
1075 m_host.AddScriptLPS(1); 1119 m_host.AddScriptLPS(1);
@@ -4701,7 +4745,18 @@ namespace OpenSim.Region.ScriptEngine.Common
4701 SetFlexi(part, (flexi == 1), softness, gravity, friction, wind, tension, force); 4745 SetFlexi(part, (flexi == 1), softness, gravity, friction, wind, tension, force);
4702 4746
4703 break; 4747 break;
4704 4748 case 23: // PRIM_POINT_LIGHT
4749 if (remain < 5)
4750 return;
4751 int light = Convert.ToInt32(rules.Data[idx++]);
4752 LSL_Types.Vector3 lightcolor =new LSL_Types.Vector3(rules.Data[idx++].ToString());
4753 float intensity = (float)Convert.ToDouble(rules.Data[idx++]);
4754 float radius = (float)Convert.ToDouble(rules.Data[idx++]);
4755 float falloff = (float)Convert.ToDouble(rules.Data[idx++]);
4756
4757 SetPointLight(part, (light == 1), lightcolor, intensity, radius, falloff);
4758
4759 break;
4705 } 4760 }
4706 } 4761 }
4707 } 4762 }