aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/PrimitiveBaseShape.cs55
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs42
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs10
4 files changed, 105 insertions, 5 deletions
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs
index c5eb40b..927415e 100644
--- a/OpenSim/Framework/PrimitiveBaseShape.cs
+++ b/OpenSim/Framework/PrimitiveBaseShape.cs
@@ -802,6 +802,51 @@ namespace OpenSim.Framework
802 } 802 }
803 } 803 }
804 804
805 public bool ProjectionEntry {
806 get {
807 return _projectionEntry;
808 }
809 set {
810 _projectionEntry = value;
811 }
812 }
813
814 public UUID ProjectionTextureUUID {
815 get {
816 return _projectionTextureID;
817 }
818 set {
819 _projectionTextureID = value;
820 }
821 }
822
823 public float ProjectionFOV {
824 get {
825 return _projectionFOV;
826 }
827 set {
828 _projectionFOV = value;
829 }
830 }
831
832 public float ProjectionFocus {
833 get {
834 return _projectionFocus;
835 }
836 set {
837 _projectionFocus = value;
838 }
839 }
840
841 public float ProjectionAmbiance {
842 get {
843 return _projectionAmb;
844 }
845 set {
846 _projectionAmb = value;
847 }
848 }
849
805 public byte[] ExtraParamsToBytes() 850 public byte[] ExtraParamsToBytes()
806 { 851 {
807 ushort FlexiEP = 0x10; 852 ushort FlexiEP = 0x10;
@@ -1175,16 +1220,16 @@ namespace OpenSim.Framework
1175 Array.Copy(data, pos, ProjectionTextureUUID,0, 16); 1220 Array.Copy(data, pos, ProjectionTextureUUID,0, 16);
1176 _projectionTextureID = new UUID(ProjectionTextureUUID, 0); 1221 _projectionTextureID = new UUID(ProjectionTextureUUID, 0);
1177 1222
1178 _projectionFocus = Utils.BytesToFloat(data, pos + 16); 1223 _projectionFOV = Utils.BytesToFloat(data, pos + 16);
1179 _projectionFOV = Utils.BytesToFloat(data, pos + 20); 1224 _projectionFocus = Utils.BytesToFloat(data, pos + 20);
1180 _projectionAmb = Utils.BytesToFloat(data, pos + 24); 1225 _projectionAmb = Utils.BytesToFloat(data, pos + 24);
1181 } 1226 }
1182 else 1227 else
1183 { 1228 {
1184 _projectionEntry = false; 1229 _projectionEntry = false;
1185 _projectionTextureID = UUID.Zero; 1230 _projectionTextureID = UUID.Zero;
1186 _projectionFocus = 0f;
1187 _projectionFOV = 0f; 1231 _projectionFOV = 0f;
1232 _projectionFocus = 0f;
1188 _projectionAmb = 0f; 1233 _projectionAmb = 0f;
1189 } 1234 }
1190 } 1235 }
@@ -1194,8 +1239,8 @@ namespace OpenSim.Framework
1194 byte[] data = new byte[28]; 1239 byte[] data = new byte[28];
1195 1240
1196 _projectionTextureID.GetBytes().CopyTo(data, 0); 1241 _projectionTextureID.GetBytes().CopyTo(data, 0);
1197 Utils.FloatToBytes(_projectionFocus).CopyTo(data, 16); 1242 Utils.FloatToBytes(_projectionFOV).CopyTo(data, 16);
1198 Utils.FloatToBytes(_projectionFOV).CopyTo(data, 20); 1243 Utils.FloatToBytes(_projectionFocus).CopyTo(data, 20);
1199 Utils.FloatToBytes(_projectionAmb).CopyTo(data, 24); 1244 Utils.FloatToBytes(_projectionAmb).CopyTo(data, 24);
1200 1245
1201 return data; 1246 return data;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 477c52d..8a98be7 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2200,6 +2200,48 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2200 2200
2201 m_LSL_Api.SetPrimitiveParamsEx(prim, rules); 2201 m_LSL_Api.SetPrimitiveParamsEx(prim, rules);
2202 } 2202 }
2203
2204 /// <summary>
2205 /// Set parameters for light projection in host prim
2206 /// </summary>
2207 public void osSetProjectionParams(bool projection, LSL_Key texture, double fov, double focus, double amb)
2208 {
2209 CheckThreatLevel(ThreatLevel.High, "osSetProjectionParams");
2210
2211 osSetProjectionParams(UUID.Zero.ToString(), projection, texture, fov, focus, amb);
2212 }
2213
2214 /// <summary>
2215 /// Set parameters for light projection with uuid of target prim
2216 /// </summary>
2217 public void osSetProjectionParams(LSL_Key prim, bool projection, LSL_Key texture, double fov, double focus, double amb)
2218 {
2219 CheckThreatLevel(ThreatLevel.High, "osSetProjectionParams");
2220 m_host.AddScriptLPS(1);
2221
2222 SceneObjectPart obj = null;
2223 if (prim == UUID.Zero.ToString())
2224 {
2225 obj = m_host;
2226 }
2227 else
2228 {
2229 obj = World.GetSceneObjectPart(new UUID(prim));
2230 if (obj == null)
2231 return;
2232 }
2233
2234 obj.Shape.ProjectionEntry = projection;
2235 obj.Shape.ProjectionTextureUUID = new UUID(texture);
2236 obj.Shape.ProjectionFOV = (float)fov;
2237 obj.Shape.ProjectionFocus = (float)focus;
2238 obj.Shape.ProjectionAmbiance = (float)amb;
2239
2240
2241 obj.ParentGroup.HasGroupChanged = true;
2242 obj.ScheduleFullUpdate();
2243
2244 }
2203 2245
2204 /// <summary> 2246 /// <summary>
2205 /// Like osGetAgents but returns enough info for a radar 2247 /// Like osGetAgents but returns enough info for a radar
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index 78ee43c..630821b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -176,6 +176,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
176 void osCauseDamage(string avatar, double damage); 176 void osCauseDamage(string avatar, double damage);
177 LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules); 177 LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules);
178 void osSetPrimitiveParams(LSL_Key prim, LSL_List rules); 178 void osSetPrimitiveParams(LSL_Key prim, LSL_List rules);
179 void osSetProjectionParams(bool projection, LSL_Key texture, double fov, double focus, double amb);
180 void osSetProjectionParams(LSL_Key prim, bool projection, LSL_Key texture, double fov, double focus, double amb);
181
179 LSL_List osGetAvatarList(); 182 LSL_List osGetAvatarList();
180 183
181 } 184 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 6cc5f51..e289554 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -688,6 +688,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
688 m_OSSL_Functions.osSetPrimitiveParams(prim, rules); 688 m_OSSL_Functions.osSetPrimitiveParams(prim, rules);
689 } 689 }
690 690
691 public void osSetProjectionParams(bool projection, LSL_Key texture, double fov, double focus, double amb)
692 {
693 m_OSSL_Functions.osSetProjectionParams(projection, texture, fov, focus, amb);
694 }
695
696 public void osSetProjectionParams(LSL_Key prim, bool projection, LSL_Key texture, double fov, double focus, double amb)
697 {
698 m_OSSL_Functions.osSetProjectionParams(prim, projection, texture, fov, focus, amb);
699 }
700
691 public LSL_List osGetAvatarList() 701 public LSL_List osGetAvatarList()
692 { 702 {
693 return m_OSSL_Functions.osGetAvatarList(); 703 return m_OSSL_Functions.osGetAvatarList();