Mantis#2126. Thank you kindly, Ralphos for a patch that addresses:

Types extracted from a LSL_Types.list have to be down-cast initially 
to the exact type of value type object that the Object actually is.
This would make for very cumbersome, ugly code when extracting list 
parameter items in ll functions where a few implicit conversions 
should be applied such as key -> LSLString and LSLInteger -> LSLFloat 
(but not LSLFloat -> LSLInteger). This patch adds a set of GetXXXItem 
member functions to the LLS_Type.list class, where XXX is the name 
of the LSL_Type to be extracted: LSLFLoat, LSLInteger etc. All take 
a single, int parameter that is the item number to be extracted.
This commit is contained in:
Charles Krinke
2008-09-05 23:26:35 +00:00
parent 271bbb2557
commit 947242f476
3 changed files with 169 additions and 8 deletions

View File

@@ -5726,13 +5726,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (remain < 7)
return;
bool flexi = (LSL_Types.LSLInteger)rules.Data[idx++];
int softness = (LSL_Types.LSLInteger)rules.Data[idx++];
float gravity = (float)(LSL_Types.LSLFloat)rules.Data[idx++];
float friction = (float)(LSL_Types.LSLFloat)rules.Data[idx++];
float wind = (float)(LSL_Types.LSLFloat)rules.Data[idx++];
float tension = (float)(LSL_Types.LSLFloat)rules.Data[idx++];
LSL_Types.Vector3 force = (LSL_Types.Vector3)rules.Data[idx++];
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_Types.Vector3 force = rules.GetVector3Item(idx++);
SetFlexi(part, flexi, softness, gravity, friction, wind, tension, force);