Merge branch 'master' of ssh://diva@opensimulator.org/var/git/opensim
commit
dcafb1dfcd
|
@ -5801,7 +5801,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
return World.SimulatorFPS;
|
return World.SimulatorFPS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* particle system rules should be coming into this routine as doubles, that is
|
/* particle system rules should be coming into this routine as doubles, that is
|
||||||
rule[0] should be an integer from this list and rule[1] should be the arg
|
rule[0] should be an integer from this list and rule[1] should be the arg
|
||||||
|
@ -7401,9 +7401,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_POSITION:
|
case (int)ScriptBaseClass.PRIM_POSITION:
|
||||||
res.Add(new LSL_Vector(part.AbsolutePosition.X,
|
LSL_Vector v = new LSL_Vector(part.AbsolutePosition.X,
|
||||||
part.AbsolutePosition.Y,
|
part.AbsolutePosition.Y,
|
||||||
part.AbsolutePosition.Z));
|
part.AbsolutePosition.Z);
|
||||||
|
// For some reason, the part.AbsolutePosition.* values do not change if the
|
||||||
|
// linkset is rotated; they always reflect the child prim's world position
|
||||||
|
// as though the linkset is unrotated. This is incompatible behavior with SL's
|
||||||
|
// implementation, so will break scripts imported from there (not to mention it
|
||||||
|
// makes it more difficult to determine a child prim's actual inworld position).
|
||||||
|
if (part.ParentID != 0)
|
||||||
|
v = ((v - llGetRootPosition()) * llGetRootRotation()) + llGetRootPosition();
|
||||||
|
res.Add( v );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_SIZE:
|
case (int)ScriptBaseClass.PRIM_SIZE:
|
||||||
|
@ -7421,6 +7429,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
PrimitiveBaseShape Shape = part.Shape;
|
PrimitiveBaseShape Shape = part.Shape;
|
||||||
int primType = getScriptPrimType(part.Shape);
|
int primType = getScriptPrimType(part.Shape);
|
||||||
res.Add(new LSL_Integer(primType));
|
res.Add(new LSL_Integer(primType));
|
||||||
|
double topshearx = (double)(sbyte)Shape.PathShearX / 100.0; // Fix negative values for PathShearX
|
||||||
|
double topsheary = (double)(sbyte)Shape.PathShearY / 100.0; // and PathShearY.
|
||||||
switch (primType)
|
switch (primType)
|
||||||
{
|
{
|
||||||
case ScriptBaseClass.PRIM_TYPE_BOX:
|
case ScriptBaseClass.PRIM_TYPE_BOX:
|
||||||
|
@ -7431,7 +7441,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
res.Add(new LSL_Float(Shape.ProfileHollow / 50000.0));
|
res.Add(new LSL_Float(Shape.ProfileHollow / 50000.0));
|
||||||
res.Add(new LSL_Vector(Shape.PathTwistBegin / 100.0, Shape.PathTwist / 100.0, 0));
|
res.Add(new LSL_Vector(Shape.PathTwistBegin / 100.0, Shape.PathTwist / 100.0, 0));
|
||||||
res.Add(new LSL_Vector(1 - (Shape.PathScaleX / 100.0 - 1), 1 - (Shape.PathScaleY / 100.0 - 1), 0));
|
res.Add(new LSL_Vector(1 - (Shape.PathScaleX / 100.0 - 1), 1 - (Shape.PathScaleY / 100.0 - 1), 0));
|
||||||
res.Add(new LSL_Vector(Shape.PathShearX / 100.0, Shape.PathShearY / 100.0, 0));
|
res.Add(new LSL_Vector(topshearx, topsheary, 0));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ScriptBaseClass.PRIM_TYPE_SPHERE:
|
case ScriptBaseClass.PRIM_TYPE_SPHERE:
|
||||||
|
@ -7466,7 +7476,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
res.Add(new LSL_Vector(1 - (Shape.PathScaleX / 100.0 - 1), 1 - (Shape.PathScaleY / 100.0 - 1), 0));
|
res.Add(new LSL_Vector(1 - (Shape.PathScaleX / 100.0 - 1), 1 - (Shape.PathScaleY / 100.0 - 1), 0));
|
||||||
|
|
||||||
// vector topshear
|
// vector topshear
|
||||||
res.Add(new LSL_Vector(Shape.PathShearX / 100.0, Shape.PathShearY / 100.0, 0));
|
res.Add(new LSL_Vector(topshearx, topsheary, 0));
|
||||||
|
|
||||||
// vector profilecut
|
// vector profilecut
|
||||||
res.Add(new LSL_Vector(Shape.ProfileBegin / 50000.0, 1 - Shape.ProfileEnd / 50000.0, 0));
|
res.Add(new LSL_Vector(Shape.ProfileBegin / 50000.0, 1 - Shape.ProfileEnd / 50000.0, 0));
|
||||||
|
@ -7475,8 +7485,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
res.Add(new LSL_Vector(Shape.PathTaperX / 100.0, Shape.PathTaperY / 100.0, 0));
|
res.Add(new LSL_Vector(Shape.PathTaperX / 100.0, Shape.PathTaperY / 100.0, 0));
|
||||||
|
|
||||||
// float revolutions
|
// float revolutions
|
||||||
res.Add(new LSL_Float(Shape.PathRevolutions / 50.0)); // needs fixing :(
|
res.Add(new LSL_Float((Shape.PathRevolutions * 0.015) + 1.0)); // Slightly inaccurate, because an unsigned
|
||||||
|
// byte is being used to represent the entire
|
||||||
|
// range of floating-point values from 1.0
|
||||||
|
// through 4.0 (which is how SL does it).
|
||||||
|
|
||||||
// float radiusoffset
|
// float radiusoffset
|
||||||
res.Add(new LSL_Float(Shape.PathRadiusOffset / 100.0));
|
res.Add(new LSL_Float(Shape.PathRadiusOffset / 100.0));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue