Răsfoiți Sursa

add vector variant of osSlerp; update script syntax

UbitUmarov 3 ani în urmă
părinte
comite
a3b26255dd

+ 10 - 0
OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs

@@ -5647,6 +5647,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             return LSL_Rotation.Slerp(a, b, amount);
         }
 
+        public LSL_Vector osSlerp(LSL_Vector a, LSL_Vector b, LSL_Float amount)
+        {
+            if (amount < 0)
+                amount = 0;
+            else if (amount > 1.0)
+                amount = 1.0;
+
+            return LSL_Vector.Slerp(a, b, amount);
+        }
+
         public void osResetAllScripts(LSL_Integer linkset)
         {
             UUID me = m_item.ItemID;

+ 1 - 0
OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs

@@ -561,6 +561,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
         LSL_Key osGetLastChangedEventKey();
         LSL_Float osGetPSTWallclock();
         LSL_Rotation osSlerp(LSL_Rotation a, LSL_Rotation b, LSL_Float amount);
+        vector osSlerp(vector a, vector b, LSL_Float amount);
 
         void osResetAllScripts(LSL_Integer AllLinkset);
         LSL_Integer osIsNotValidNumber(LSL_Float v);

+ 1 - 1
OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs

@@ -35,7 +35,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
     public partial class ScriptBaseClass
     {
         // SCRIPTS CONSTANTS
-        public static readonly LSLInteger OS_APIVERSION = 15;
+        public static readonly LSLInteger OS_APIVERSION = 16;
 
         public static readonly LSLInteger TRUE = 1;
         public static readonly LSLInteger FALSE = 0;

+ 5 - 0
OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs

@@ -1432,6 +1432,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
             return m_OSSL_Functions.osSlerp(a, b, amount);
         }
 
+        public vector osSlerp(vector a, vector b, LSL_Float amount)
+        {
+            return m_OSSL_Functions.osSlerp(a, b, amount);
+        }
+
         public void osResetAllScripts(LSL_Integer allLinkSet)
         {
             m_OSSL_Functions.osResetAllScripts(allLinkSet);

+ 24 - 0
OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs

@@ -366,6 +366,30 @@ namespace OpenSim.Region.ScriptEngine.Shared
                 return new Vector3(0, 0, 0);
             }
 
+            public static Vector3 Slerp(Vector3 v1, Vector3 v2, double amount)
+            {
+                double angle = (v1.x * v2.x) + (v1.y * v2.y) + (v1.z * v2.z);
+                double scale;
+                double invscale;
+
+                if (angle < 0.999f)
+                {
+                    angle = Math.Acos(angle);
+                    invscale = 1.0f / Math.Sin(angle);
+                    scale = Math.Sin((1.0f - amount) * angle) * invscale;
+                    invscale *= Math.Sin((amount * angle));
+                }
+                else
+                {
+                    scale = 1.0f - amount;
+                    invscale = amount;
+                }
+                return new Vector3(
+                    v1.x * scale + v2.x * invscale,
+                    v1.y * scale + v2.y * invscale,
+                    v1.z * scale + v2.z * invscale
+                );
+            }
             #endregion
         }
 

+ 40 - 31
bin/ScriptSyntax.xml

@@ -1,4 +1,4 @@
-0ca3945b-ad46-5155-6d66-6b6c74370dd2
+cd5e081a-b88a-07b6-21a5-612aab0b3398
 <llsd><map><key>llsd-lsl-syntax-version</key><integer>2</integer>
 <key>controls</key>
 <map>
@@ -1111,6 +1111,10 @@
   <key>type</key><string>integer</string>
   <key>value</key><string>10</string>
  </map>
+ <key>INVENTORY_SETTING</key><map>
+  <key>type</key><string>integer</string>
+  <key>value</key><string>56</string>
+ </map>
  <key>INVENTORY_SOUND</key><map>
   <key>type</key><string>integer</string>
   <key>value</key><string>1</string>
@@ -1577,7 +1581,7 @@
  </map>
  <key>OS_APIVERSION</key><map>
   <key>type</key><string>integer</string>
-  <key>value</key><string>15</string>
+  <key>value</key><string>16</string>
  </map>
  <key>OS_ATTACH_MSG_ALL</key><map>
   <key>type</key><string>integer</string>
@@ -6225,6 +6229,14 @@
    <map><key>offset</key><map><key>type</key><string>vector</string></map></map>
   </array>
  </map>
+ <key>llXorBase64</key>
+ <map>
+  <key>return</key><string>string</string>
+  <key>arguments</key><array>
+   <map><key>str1</key><map><key>type</key><string>string</string></map></map>
+   <map><key>str2</key><map><key>type</key><string>string</string></map></map>
+  </array>
+ </map>
  <key>llXorBase64Strings</key>
  <map>
   <key>return</key><string>string</string>
@@ -7143,6 +7155,7 @@
    <map><key>name</key><map><key>type</key><string>string</string></map></map>
    <map><key>position</key><map><key>type</key><string>vector</string></map></map>
    <map><key>notecard</key><map><key>type</key><string>string</string></map></map>
+   <map><key>options</key><map><key>type</key><string>integer</string></map></map>
   </array>
  </map>
  <key>osNpcCreate</key>
@@ -7153,7 +7166,6 @@
    <map><key>name</key><map><key>type</key><string>string</string></map></map>
    <map><key>position</key><map><key>type</key><string>vector</string></map></map>
    <map><key>notecard</key><map><key>type</key><string>string</string></map></map>
-   <map><key>options</key><map><key>type</key><string>integer</string></map></map>
   </array>
  </map>
  <key>osNpcGetOwner</key>
@@ -7330,7 +7342,6 @@
   <key>return</key><string>key</string>
   <key>arguments</key><array>
    <map><key>notecard</key><map><key>type</key><string>string</string></map></map>
-   <map><key>includeHuds</key><map><key>type</key><string>integer</string></map></map>
   </array>
  </map>
  <key>osOwnerSaveAppearance</key>
@@ -7338,6 +7349,7 @@
   <key>return</key><string>key</string>
   <key>arguments</key><array>
    <map><key>notecard</key><map><key>type</key><string>string</string></map></map>
+   <map><key>includeHuds</key><map><key>type</key><string>integer</string></map></map>
   </array>
  </map>
  <key>osParcelJoin</key>
@@ -7410,6 +7422,7 @@
   <key>return</key><string>integer</string>
   <key>arguments</key><array>
    <map><key>seconds</key><map><key>type</key><string>float</string></map></map>
+   <map><key>msg</key><map><key>type</key><string>string</string></map></map>
   </array>
  </map>
  <key>osRegionRestart</key>
@@ -7417,7 +7430,6 @@
   <key>return</key><string>integer</string>
   <key>arguments</key><array>
    <map><key>seconds</key><map><key>type</key><string>float</string></map></map>
-   <map><key>msg</key><map><key>type</key><string>string</string></map></map>
   </array>
  </map>
  <key>osReplaceAgentEnvironment</key>
@@ -7437,19 +7449,6 @@
    <map><key>daycycle</key><map><key>type</key><string>string</string></map></map>
   </array>
  </map>
- <key>osReplaceRegionEnvironment</key>
- <map>
-  <key>return</key><string>integer</string>
-  <key>arguments</key><array>
-   <map><key>transition</key><map><key>type</key><string>integer</string></map></map>
-   <map><key>daycycle</key><map><key>type</key><string>string</string></map></map>
-   <map><key>daylen</key><map><key>type</key><string>float</string></map></map>
-   <map><key>dayoffset</key><map><key>type</key><string>float</string></map></map>
-   <map><key>altitude1</key><map><key>type</key><string>float</string></map></map>
-   <map><key>altitude2</key><map><key>type</key><string>float</string></map></map>
-   <map><key>altitude3</key><map><key>type</key><string>float</string></map></map>
-  </array>
- </map>
  <key>osReplaceString</key>
  <map>
   <key>return</key><string>string</string>
@@ -7705,6 +7704,7 @@
  <key>osSetProjectionParams</key>
  <map>
   <key>arguments</key><array>
+   <map><key>prim</key><map><key>type</key><string>key</string></map></map>
    <map><key>projection</key><map><key>type</key><string>integer</string></map></map>
    <map><key>texture</key><map><key>type</key><string>key</string></map></map>
    <map><key>fov</key><map><key>type</key><string>float</string></map></map>
@@ -7715,7 +7715,6 @@
  <key>osSetProjectionParams</key>
  <map>
   <key>arguments</key><array>
-   <map><key>linknumber</key><map><key>type</key><string>integer</string></map></map>
    <map><key>projection</key><map><key>type</key><string>integer</string></map></map>
    <map><key>texture</key><map><key>type</key><string>key</string></map></map>
    <map><key>fov</key><map><key>type</key><string>float</string></map></map>
@@ -7726,7 +7725,7 @@
  <key>osSetProjectionParams</key>
  <map>
   <key>arguments</key><array>
-   <map><key>prim</key><map><key>type</key><string>key</string></map></map>
+   <map><key>linknumber</key><map><key>type</key><string>integer</string></map></map>
    <map><key>projection</key><map><key>type</key><string>integer</string></map></map>
    <map><key>texture</key><map><key>type</key><string>key</string></map></map>
    <map><key>fov</key><map><key>type</key><string>float</string></map></map>
@@ -7774,12 +7773,6 @@
    <map><key>v</key><map><key>type</key><string>vector</string></map></map>
   </array>
  </map>
- <key>osSetStateEvents</key>
- <map>
-  <key>arguments</key><array>
-   <map><key>events</key><map><key>type</key><string>integer</string></map></map>
-  </array>
- </map>
  <key>osSetSunParam</key>
  <map>
   <key>arguments</key><array>
@@ -7819,6 +7812,22 @@
    <map><key>value</key><map><key>type</key><string>float</string></map></map>
   </array>
  </map>
+ <key>osSHA256</key>
+ <map>
+  <key>return</key><string>string</string>
+  <key>arguments</key><array>
+   <map><key>input</key><map><key>type</key><string>string</string></map></map>
+  </array>
+ </map>
+ <key>osSlerp</key>
+ <map>
+  <key>return</key><string>vector</string>
+  <key>arguments</key><array>
+   <map><key>a</key><map><key>type</key><string>vector</string></map></map>
+   <map><key>b</key><map><key>type</key><string>vector</string></map></map>
+   <map><key>amount</key><map><key>type</key><string>float</string></map></map>
+  </array>
+ </map>
  <key>osSlerp</key>
  <map>
   <key>return</key><string>rotation</string>
@@ -7953,8 +7962,7 @@
  <map>
   <key>arguments</key><array>
    <map><key>agent</key><map><key>type</key><string>string</string></map></map>
-   <map><key>regionX</key><map><key>type</key><string>integer</string></map></map>
-   <map><key>regionY</key><map><key>type</key><string>integer</string></map></map>
+   <map><key>regionName</key><map><key>type</key><string>string</string></map></map>
    <map><key>position</key><map><key>type</key><string>vector</string></map></map>
    <map><key>lookat</key><map><key>type</key><string>vector</string></map></map>
   </array>
@@ -7963,7 +7971,8 @@
  <map>
   <key>arguments</key><array>
    <map><key>agent</key><map><key>type</key><string>string</string></map></map>
-   <map><key>regionName</key><map><key>type</key><string>string</string></map></map>
+   <map><key>regionX</key><map><key>type</key><string>integer</string></map></map>
+   <map><key>regionY</key><map><key>type</key><string>integer</string></map></map>
    <map><key>position</key><map><key>type</key><string>vector</string></map></map>
    <map><key>lookat</key><map><key>type</key><string>vector</string></map></map>
   </array>
@@ -7981,8 +7990,6 @@
  <key>osTeleportOwner</key>
  <map>
   <key>arguments</key><array>
-   <map><key>regionX</key><map><key>type</key><string>integer</string></map></map>
-   <map><key>regionY</key><map><key>type</key><string>integer</string></map></map>
    <map><key>position</key><map><key>type</key><string>vector</string></map></map>
    <map><key>lookat</key><map><key>type</key><string>vector</string></map></map>
   </array>
@@ -7990,6 +7997,8 @@
  <key>osTeleportOwner</key>
  <map>
   <key>arguments</key><array>
+   <map><key>regionX</key><map><key>type</key><string>integer</string></map></map>
+   <map><key>regionY</key><map><key>type</key><string>integer</string></map></map>
    <map><key>position</key><map><key>type</key><string>vector</string></map></map>
    <map><key>lookat</key><map><key>type</key><string>vector</string></map></map>
   </array>