From 44e566260c9da5ff62c448cfdd67063c7a486126 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Tue, 23 Sep 2008 11:41:34 +0000 Subject: Mantis #2243 Thank you, tyre, for a patch that refactors LSL to use a unified set of method signatures and type names, reorders methods and removes unused and adds new method stubs. --- .../Common/BuiltIn_Commands_BaseClass.cs | 1450 +++++++++--------- .../ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 1600 +++++++++++--------- .../Common/LSL_BuiltIn_Commands_Interface.cs | 963 +++++------- OpenSim/Region/ScriptEngine/Common/LSL_Types.cs | 147 +- .../ScriptEngine/Common/OSSL_BuilIn_Commands.cs | 18 + 5 files changed, 2069 insertions(+), 2109 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Common') diff --git a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs index 528df40..44011de 100644 --- a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs @@ -30,10 +30,14 @@ using System.Runtime.Remoting.Lifetime; using System.Threading; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.ScriptEngine.Common.ScriptEngineBase; -using integer = System.Int32; -using key = System.String; -using vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; -using rotation = OpenSim.Region.ScriptEngine.Common.LSL_Types.Quaternion; + +using LSL_Float = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLFloat; +using LSL_Integer = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLInteger; +using LSL_Key = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; +using LSL_List = OpenSim.Region.ScriptEngine.Common.LSL_Types.list; +using LSL_Rotation = OpenSim.Region.ScriptEngine.Common.LSL_Types.Quaternion; +using LSL_String = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; +using LSL_Vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; namespace OpenSim.Region.ScriptEngine.Common { @@ -160,1724 +164,1714 @@ namespace OpenSim.Region.ScriptEngine.Common return m_LSL_Functions.GetCommander(name); } - public double llSin(double f) + public LSL_Integer llAbs(int i) { - return m_LSL_Functions.llSin(f); + return m_LSL_Functions.llAbs(i); } - public void osSetRegionWaterHeight(double height) + + public LSL_Float llAcos(double val) { - m_LSL_Functions.osSetRegionWaterHeight(height); + return m_LSL_Functions.llAcos(val); } - public double llCos(double f) + + public void llAddToLandBanList(string avatar, double hours) { - return m_LSL_Functions.llCos(f); + m_LSL_Functions.llAddToLandBanList(avatar, hours); } - public double llTan(double f) + public void llAddToLandPassList(string avatar, double hours) { - return m_LSL_Functions.llTan(f); + m_LSL_Functions.llAddToLandPassList(avatar, hours); } - public double llAtan2(double x, double y) + public void llAdjustSoundVolume(double volume) { - return m_LSL_Functions.llAtan2(x, y); + m_LSL_Functions.llAdjustSoundVolume(volume); } - public double llSqrt(double f) + public void llAllowInventoryDrop(int add) { - return m_LSL_Functions.llSqrt(f); + m_LSL_Functions.llAllowInventoryDrop(add); } - public double llPow(double fbase, double fexponent) + public LSL_Float llAngleBetween(LSL_Rotation a, LSL_Rotation b) { - return m_LSL_Functions.llPow(fbase, fexponent); + return m_LSL_Functions.llAngleBetween(a, b); } - public LSL_Types.LSLInteger llAbs(int i) + public void llApplyImpulse(LSL_Vector force, int local) { - return m_LSL_Functions.llAbs(i); + m_LSL_Functions.llApplyImpulse(force, local); } - public double llFabs(double f) + public void llApplyRotationalImpulse(LSL_Vector force, int local) { - return m_LSL_Functions.llFabs(f); + m_LSL_Functions.llApplyRotationalImpulse(force, local); } - public double llFrand(double mag) + public LSL_Float llAsin(double val) { - return m_LSL_Functions.llFrand(mag); + return m_LSL_Functions.llAsin(val); } - public LSL_Types.LSLInteger llFloor(double f) + public LSL_Float llAtan2(double x, double y) { - return m_LSL_Functions.llFloor(f); + return m_LSL_Functions.llAtan2(x, y); } - public LSL_Types.LSLInteger llCeil(double f) + public void llAttachToAvatar(int attachment) { - return m_LSL_Functions.llCeil(f); + m_LSL_Functions.llAttachToAvatar(attachment); } - public LSL_Types.LSLInteger llRound(double f) + public LSL_Key llAvatarOnSitTarget() { - return m_LSL_Functions.llRound(f); + return m_LSL_Functions.llAvatarOnSitTarget(); } - public double llVecMag(vector v) + public LSL_Rotation llAxes2Rot(LSL_Vector fwd, LSL_Vector left, LSL_Vector up) { - return m_LSL_Functions.llVecMag(v); + return m_LSL_Functions.llAxes2Rot(fwd, left, up); } - public vector llVecNorm(vector v) + public LSL_Rotation llAxisAngle2Rot(LSL_Vector axis, double angle) { - return m_LSL_Functions.llVecNorm(v); + return m_LSL_Functions.llAxisAngle2Rot(axis, angle); } - public double llVecDist(vector a, vector b) + public LSL_Integer llBase64ToInteger(string str) { - return m_LSL_Functions.llVecDist(a, b); + return m_LSL_Functions.llBase64ToInteger(str); } - public vector llRot2Euler(rotation r) + public LSL_String llBase64ToString(string str) { - return m_LSL_Functions.llRot2Euler(r); + return m_LSL_Functions.llBase64ToString(str); } - public rotation llEuler2Rot(vector v) + public void llBreakAllLinks() { - return m_LSL_Functions.llEuler2Rot(v); + m_LSL_Functions.llBreakAllLinks(); } - public rotation llAxes2Rot(vector fwd, vector left, vector up) + public void llBreakLink(int linknum) { - return m_LSL_Functions.llAxes2Rot(fwd, left, up); + m_LSL_Functions.llBreakLink(linknum); } - public vector llRot2Fwd(rotation r) + public LSL_Integer llCeil(double f) { - return m_LSL_Functions.llRot2Fwd(r); + return m_LSL_Functions.llCeil(f); } - public vector llRot2Left(rotation r) + public void llClearCameraParams() { - return m_LSL_Functions.llRot2Left(r); + m_LSL_Functions.llClearCameraParams(); } - public vector llRot2Up(rotation r) + public void llCloseRemoteDataChannel(string channel) { - return m_LSL_Functions.llRot2Up(r); + m_LSL_Functions.llCloseRemoteDataChannel(channel); } - public rotation llRotBetween(vector start, vector end) + public LSL_Float llCloud(LSL_Vector offset) { - return m_LSL_Functions.llRotBetween(start, end); + return m_LSL_Functions.llCloud(offset); } - public void llWhisper(int channelID, string text) + public void llCollisionFilter(string name, string id, int accept) { - m_LSL_Functions.llWhisper(channelID, text); + m_LSL_Functions.llCollisionFilter(name, id, accept); } - public void llSay(int channelID, string text) + public void llCollisionSound(string impact_sound, double impact_volume) { - m_LSL_Functions.llSay(channelID, text); + m_LSL_Functions.llCollisionSound(impact_sound, impact_volume); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llShout(int channelID, string text) + public void llCollisionSprite(string impact_sprite) { - m_LSL_Functions.llShout(channelID, text); + m_LSL_Functions.llCollisionSprite(impact_sprite); } - public void llOwnerSay(string msg) + public LSL_Float llCos(double f) { - m_LSL_Functions.llOwnerSay(msg); + return m_LSL_Functions.llCos(f); } - public void llRegionSay(int channelID, string text) + public void llCreateLink(string target, int parent) { - m_LSL_Functions.llRegionSay(channelID, text); + m_LSL_Functions.llCreateLink(target, parent); } - public LSL_Types.LSLInteger llListen(int channelID, string name, string ID, string msg) + public LSL_List llCSV2List(string src) { - return m_LSL_Functions.llListen(channelID, name, ID, msg); + return m_LSL_Functions.llCSV2List(src); } - public void llListenControl(int number, int active) + public LSL_List llDeleteSubList(LSL_List src, int start, int end) { - m_LSL_Functions.llListenControl(number, active); + return m_LSL_Functions.llDeleteSubList(src, start, end); } - public void llListenRemove(int number) + public LSL_String llDeleteSubString(string src, int start, int end) { - m_LSL_Functions.llListenRemove(number); + return m_LSL_Functions.llDeleteSubString(src, start, end); } - public void llSensor(string name, string id, int type, double range, double arc) + public void llDetachFromAvatar() { - m_LSL_Functions.llSensor(name, id, type, range, arc); + m_LSL_Functions.llDetachFromAvatar(); } - public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) + public LSL_Vector llDetectedGrab(int number) { - m_LSL_Functions.llSensorRepeat(name, id, type, range, arc, rate); + return m_LSL_Functions.llDetectedGrab(number); } - public void llSensorRemove() + public LSL_Integer llDetectedGroup(int number) { - m_LSL_Functions.llSensorRemove(); + return m_LSL_Functions.llDetectedGroup(number); } - public string llDetectedName(int number) + public LSL_Key llDetectedKey(int number) { - return m_LSL_Functions.llDetectedName(number); + return m_LSL_Functions.llDetectedKey(number); } - public string llDetectedKey(int number) + public LSL_Integer llDetectedLinkNumber(int number) { - return m_LSL_Functions.llDetectedKey(number); + return m_LSL_Functions.llDetectedLinkNumber(number); } - public string llDetectedOwner(int number) + public LSL_String llDetectedName(int number) { - return m_LSL_Functions.llDetectedOwner(number); + return m_LSL_Functions.llDetectedName(number); } - public LSL_Types.LSLInteger llDetectedType(int number) + public LSL_Key llDetectedOwner(int number) { - return m_LSL_Functions.llDetectedType(number); + return m_LSL_Functions.llDetectedOwner(number); } - public vector llDetectedPos(int number) + public LSL_Vector llDetectedPos(int number) { return m_LSL_Functions.llDetectedPos(number); } - public vector llDetectedVel(int number) + public LSL_Rotation llDetectedRot(int number) { - return m_LSL_Functions.llDetectedVel(number); + return m_LSL_Functions.llDetectedRot(number); } - public vector llDetectedGrab(int number) + public LSL_Integer llDetectedType(int number) { - return m_LSL_Functions.llDetectedGrab(number); + return m_LSL_Functions.llDetectedType(number); } - public rotation llDetectedRot(int number) + public LSL_Vector llDetectedTouchBinormal(int index) { - return m_LSL_Functions.llDetectedRot(number); + return m_LSL_Functions.llDetectedTouchBinormal(index); } - public LSL_Types.LSLInteger llDetectedGroup(int number) + public LSL_Integer llDetectedTouchFace(int index) { - return m_LSL_Functions.llDetectedGroup(number); + return m_LSL_Functions.llDetectedTouchFace(index); } - public LSL_Types.LSLInteger llDetectedLinkNumber(int number) + public LSL_Vector llDetectedTouchNormal(int index) { - return m_LSL_Functions.llDetectedLinkNumber(number); + return m_LSL_Functions.llDetectedTouchNormal(index); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llDie() + public LSL_Vector llDetectedTouchPos(int index) { - m_LSL_Functions.llDie(); + return m_LSL_Functions.llDetectedTouchPos(index); } - public double llGround(vector offset) + public LSL_Vector llDetectedTouchST(int index) { - return m_LSL_Functions.llGround(offset); + return m_LSL_Functions.llDetectedTouchST(index); } - public double llCloud(vector offset) + public LSL_Vector llDetectedTouchUV(int index) { - return m_LSL_Functions.llCloud(offset); + return m_LSL_Functions.llDetectedTouchUV(index); } - public vector llWind(vector offset) + public LSL_Vector llDetectedVel(int number) { - return m_LSL_Functions.llWind(offset); + return m_LSL_Functions.llDetectedVel(number); } - public void llSetStatus(int status, int value) + public void llDialog(string avatar, string message, LSL_List buttons, int chat_channel) { - m_LSL_Functions.llSetStatus(status, value); + m_LSL_Functions.llDialog(avatar, message, buttons, chat_channel); } - public LSL_Types.LSLInteger llGetStatus(int status) + public void llDie() { - return m_LSL_Functions.llGetStatus(status); + m_LSL_Functions.llDie(); } - public void llSetScale(vector scale) + public LSL_String llDumpList2String(LSL_List src, string seperator) { - m_LSL_Functions.llSetScale(scale); + return m_LSL_Functions.llDumpList2String(src, seperator); } - public vector llGetScale() + public LSL_Integer llEdgeOfWorld(LSL_Vector pos, LSL_Vector dir) { - return m_LSL_Functions.llGetScale(); + return m_LSL_Functions.llEdgeOfWorld(pos, dir); } - public void llSetColor(vector color, int face) + public void llEjectFromLand(string pest) { - m_LSL_Functions.llSetColor(color, face); + m_LSL_Functions.llEjectFromLand(pest); } - public double llGetAlpha(int face) + public void llEmail(string address, string subject, string message) { - return m_LSL_Functions.llGetAlpha(face); + m_LSL_Functions.llEmail(address, subject, message); } - public void llSetAlpha(double alpha, int face) + public LSL_String llEscapeURL(string url) { - m_LSL_Functions.llSetAlpha(alpha, face); + return m_LSL_Functions.llEscapeURL(url); } - public vector llGetColor(int face) + public LSL_Rotation llEuler2Rot(LSL_Vector v) { - return m_LSL_Functions.llGetColor(face); + return m_LSL_Functions.llEuler2Rot(v); } - public void llSetTexture(string texture, int face) + public LSL_Float llFabs(double f) { - m_LSL_Functions.llSetTexture(texture, face); + return m_LSL_Functions.llFabs(f); } - public void llScaleTexture(double u, double v, int face) + public LSL_Integer llFloor(double f) { - m_LSL_Functions.llScaleTexture(u, v, face); + return m_LSL_Functions.llFloor(f); } - public void llOffsetTexture(double u, double v, int face) + public void llForceMouselook(int mouselook) { - m_LSL_Functions.llOffsetTexture(u, v, face); + m_LSL_Functions.llForceMouselook(mouselook); } - public void llRotateTexture(double rotation, int face) + public LSL_Float llFrand(double mag) { - m_LSL_Functions.llRotateTexture(rotation, face); + return m_LSL_Functions.llFrand(mag); } - public string llGetTexture(int face) + public LSL_Vector llGetAccel() { - return m_LSL_Functions.llGetTexture(face); + return m_LSL_Functions.llGetAccel(); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llSetPos(vector pos) + public LSL_Integer llGetAgentInfo(string id) { - m_LSL_Functions.llSetPos(pos); + return m_LSL_Functions.llGetAgentInfo(id); } - public vector llGetPos() + public LSL_Vector llGetAgentSize(string id) { - return m_LSL_Functions.llGetPos(); + return m_LSL_Functions.llGetAgentSize(id); } - public vector llGetLocalPos() + public LSL_Float llGetAlpha(int face) { - return m_LSL_Functions.llGetLocalPos(); + return m_LSL_Functions.llGetAlpha(face); } - public void llSetRot(rotation rot) + public LSL_Float llGetAndResetTime() { - m_LSL_Functions.llSetRot(rot); + return m_LSL_Functions.llGetAndResetTime(); } - public rotation llGetRot() + public LSL_String llGetAnimation(string id) { - return m_LSL_Functions.llGetRot(); + return m_LSL_Functions.llGetAnimation(id); } - public rotation llGetLocalRot() + public LSL_List llGetAnimationList(string id) { - return m_LSL_Functions.llGetLocalRot(); + return m_LSL_Functions.llGetAnimationList(id); } - public void llSetForce(vector force, int local) + public LSL_Integer llGetAttached() { - m_LSL_Functions.llSetForce(force, local); + return m_LSL_Functions.llGetAttached(); } - public vector llGetForce() + public LSL_List llGetBoundingBox(string obj) { - return m_LSL_Functions.llGetForce(); + return m_LSL_Functions.llGetBoundingBox(obj); } - public LSL_Types.LSLInteger llTarget(vector position, double range) + public LSL_Vector llGetCameraPos() { - return m_LSL_Functions.llTarget(position, range); + return m_LSL_Functions.llGetCameraPos(); } - public void llTargetRemove(int number) + public LSL_Rotation llGetCameraRot() { - m_LSL_Functions.llTargetRemove(number); + return m_LSL_Functions.llGetCameraRot(); } - public LSL_Types.LSLInteger llRotTarget(rotation rot, double error) + public LSL_Vector llGetCenterOfMass() { - return m_LSL_Functions.llRotTarget(rot, error); + return m_LSL_Functions.llGetCenterOfMass(); } - public void llRotTargetRemove(int number) + public LSL_Vector llGetColor(int face) { - m_LSL_Functions.llRotTargetRemove(number); + return m_LSL_Functions.llGetColor(face); } - public void llMoveToTarget(vector target, double tau) + public LSL_String llGetCreator() { - m_LSL_Functions.llMoveToTarget(target, tau); + return m_LSL_Functions.llGetCreator(); } - public void llStopMoveToTarget() + public LSL_String llGetDate() { - m_LSL_Functions.llStopMoveToTarget(); + return m_LSL_Functions.llGetDate(); } - public void llApplyImpulse(vector force, int local) + public LSL_Float llGetEnergy() { - m_LSL_Functions.llApplyImpulse(force, local); + return m_LSL_Functions.llGetEnergy(); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llApplyRotationalImpulse(vector force, int local) + public LSL_Vector llGetForce() { - m_LSL_Functions.llApplyRotationalImpulse(force, local); + return m_LSL_Functions.llGetForce(); } - public void llSetTorque(vector torque, int local) + public LSL_Integer llGetFreeMemory() { - m_LSL_Functions.llSetTorque(torque, local); + return m_LSL_Functions.llGetFreeMemory(); } - public vector llGetTorque() + public LSL_Vector llGetGeometricCenter() { - return m_LSL_Functions.llGetTorque(); + return m_LSL_Functions.llGetGeometricCenter(); } - public void llSetForceAndTorque(vector force, vector torque, int local) + public LSL_Float llGetGMTclock() { - m_LSL_Functions.llSetForceAndTorque(force, torque, local); + return m_LSL_Functions.llGetGMTclock(); } - public vector llGetVel() + public LSL_Key llGetInventoryCreator(string item) { - return m_LSL_Functions.llGetVel(); + return m_LSL_Functions.llGetInventoryCreator(item); } - public vector llGetAccel() + public LSL_Key llGetInventoryKey(string name) { - return m_LSL_Functions.llGetAccel(); + return m_LSL_Functions.llGetInventoryKey(name); } - public vector llGetOmega() + public LSL_String llGetInventoryName(int type, int number) { - return m_LSL_Functions.llGetOmega(); + return m_LSL_Functions.llGetInventoryName(type, number); } - public double llGetTimeOfDay() + public LSL_Integer llGetInventoryNumber(int type) { - return m_LSL_Functions.llGetTimeOfDay(); + return m_LSL_Functions.llGetInventoryNumber(type); } - public double llGetWallclock() + public LSL_Integer llGetInventoryPermMask(string item, int mask) { - return m_LSL_Functions.llGetWallclock(); + return m_LSL_Functions.llGetInventoryPermMask(item, mask); } - public double llGetTime() + public LSL_Integer llGetInventoryType(string name) { - return m_LSL_Functions.llGetTime(); + return m_LSL_Functions.llGetInventoryType(name); } - public void llResetTime() + public LSL_Key llGetKey() { - m_LSL_Functions.llResetTime(); + return m_LSL_Functions.llGetKey(); } - public double llGetAndResetTime() + public LSL_Key llGetLandOwnerAt(LSL_Vector pos) { - return m_LSL_Functions.llGetAndResetTime(); + return m_LSL_Functions.llGetLandOwnerAt(pos); } - public void llSound() + public LSL_Key llGetLinkKey(int linknum) { - m_LSL_Functions.llSound(); + return m_LSL_Functions.llGetLinkKey(linknum); } - public void llPlaySound(string sound, double volume) + public LSL_String llGetLinkName(int linknum) { - m_LSL_Functions.llPlaySound(sound, volume); + return m_LSL_Functions.llGetLinkName(linknum); } - public void llLoopSound(string sound, double volume) + public LSL_Integer llGetLinkNumber() { - m_LSL_Functions.llLoopSound(sound, volume); + return m_LSL_Functions.llGetLinkNumber(); } - public void llLoopSoundMaster(string sound, double volume) + public LSL_Integer llGetListEntryType(LSL_List src, int index) { - m_LSL_Functions.llLoopSoundMaster(sound, volume); + return m_LSL_Functions.llGetListEntryType(src, index); } - public void llLoopSoundSlave(string sound, double volume) + public LSL_Integer llGetListLength(LSL_List src) { - m_LSL_Functions.llLoopSoundSlave(sound, volume); + return m_LSL_Functions.llGetListLength(src); } - public void llPlaySoundSlave(string sound, double volume) + public LSL_Vector llGetLocalPos() { - m_LSL_Functions.llPlaySoundSlave(sound, volume); + return m_LSL_Functions.llGetLocalPos(); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llTriggerSound(string sound, double volume) + public LSL_Rotation llGetLocalRot() { - m_LSL_Functions.llTriggerSound(sound, volume); + return m_LSL_Functions.llGetLocalRot(); } - public void llStopSound() + public LSL_Float llGetMass() { - m_LSL_Functions.llStopSound(); + return m_LSL_Functions.llGetMass(); } - public void llPreloadSound(string sound) + public void llGetNextEmail(string address, string subject) { - m_LSL_Functions.llPreloadSound(sound); + m_LSL_Functions.llGetNextEmail(address, subject); } - public string llGetSubString(string src, int start, int end) + public LSL_String llGetNotecardLine(string name, int line) { - return m_LSL_Functions.llGetSubString(src, start, end); + return m_LSL_Functions.llGetNotecardLine(name, line); } - public string llDeleteSubString(string src, int start, int end) + public LSL_Key llGetNumberOfNotecardLines(string name) { - return m_LSL_Functions.llDeleteSubString(src, start, end); + return m_LSL_Functions.llGetNumberOfNotecardLines(name); } - public string llInsertString(string dst, int position, string src) + public LSL_Integer llGetNumberOfPrims() { - return m_LSL_Functions.llInsertString(dst, position, src); + return m_LSL_Functions.llGetNumberOfPrims(); } - public string llToUpper(string source) + public LSL_Integer llGetNumberOfSides() { - return m_LSL_Functions.llToUpper(source); + return m_LSL_Functions.llGetNumberOfSides(); } - public string llToLower(string source) + public LSL_String llGetObjectDesc() { - return m_LSL_Functions.llToLower(source); + return m_LSL_Functions.llGetObjectDesc(); } - public LSL_Types.LSLInteger llGiveMoney(string destination, int amount) + public LSL_List llGetObjectDetails(string id, LSL_List args) { - return m_LSL_Functions.llGiveMoney(destination, amount); + return m_LSL_Functions.llGetObjectDetails(id, args); } - public void llMakeExplosion() + public LSL_Float llGetObjectMass(string id) { - m_LSL_Functions.llMakeExplosion(); + return m_LSL_Functions.llGetObjectMass(id); } - public void llMakeFountain() + public LSL_String llGetObjectName() { - m_LSL_Functions.llMakeFountain(); + return m_LSL_Functions.llGetObjectName(); } - public void llMakeSmoke() + public LSL_Integer llGetObjectPermMask(int mask) { - m_LSL_Functions.llMakeSmoke(); + return m_LSL_Functions.llGetObjectPermMask(mask); } - public void llMakeFire() + public LSL_Integer llGetObjectPrimCount(string object_id) { - m_LSL_Functions.llMakeFire(); + return m_LSL_Functions.llGetObjectPrimCount(object_id); } - public void llRezObject(string inventory, vector pos, vector vel, rotation rot, int param) + public LSL_Vector llGetOmega() { - m_LSL_Functions.llRezObject(inventory, pos, vel, rot, param); + return m_LSL_Functions.llGetOmega(); } - public void llLookAt(vector target, double strength, double damping) + public LSL_Key llGetOwner() { - m_LSL_Functions.llLookAt(target, strength, damping); + return m_LSL_Functions.llGetOwner(); } - public void llStopLookAt() + public LSL_Key llGetOwnerKey(string id) { - m_LSL_Functions.llStopLookAt(); + return m_LSL_Functions.llGetOwnerKey(id); } - public void llSetTimerEvent(double sec) + public LSL_List llGetParcelDetails(LSL_Vector pos, LSL_List param) { - m_LSL_Functions.llSetTimerEvent(sec); + return m_LSL_Functions.llGetParcelDetails(pos, param); } - public void llSleep(double sec) + public LSL_Integer llGetParcelFlags(LSL_Vector pos) { - m_LSL_Functions.llSleep(sec); + return m_LSL_Functions.llGetParcelFlags(pos); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public double llGetMass() + public LSL_Integer llGetParcelMaxPrims(LSL_Vector pos, int sim_wide) { - return m_LSL_Functions.llGetMass(); + return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide); } - public void llCollisionFilter(string name, string id, int accept) + public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide) { - m_LSL_Functions.llCollisionFilter(name, id, accept); + return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide); } - public void llTakeControls(int controls, int accept, int pass_on) + public LSL_List llGetParcelPrimOwners(LSL_Vector pos) { - m_LSL_Functions.llTakeControls(controls, accept, pass_on); + return m_LSL_Functions.llGetParcelPrimOwners(pos); } - public void llReleaseControls() + public LSL_Integer llGetPermissions() { - m_LSL_Functions.llReleaseControls(); + return m_LSL_Functions.llGetPermissions(); } - public void llAttachToAvatar(int attachment) + public LSL_Key llGetPermissionsKey() { - m_LSL_Functions.llAttachToAvatar(attachment); + return m_LSL_Functions.llGetPermissionsKey(); } - public void llDetachFromAvatar() + public LSL_Vector llGetPos() { - m_LSL_Functions.llDetachFromAvatar(); + return m_LSL_Functions.llGetPos(); } - public void llTakeCamera(string avatar) + public LSL_List llGetPrimitiveParams(LSL_List rules) { - m_LSL_Functions.llTakeCamera(avatar); + return m_LSL_Functions.llGetPrimitiveParams(rules); } - public void llReleaseCamera(string avatar) + public LSL_Integer llGetRegionAgentCount() { - m_LSL_Functions.llReleaseCamera(avatar); + return m_LSL_Functions.llGetRegionAgentCount(); } - public string llGetOwner() + public LSL_Vector llGetRegionCorner() { - return m_LSL_Functions.llGetOwner(); + return m_LSL_Functions.llGetRegionCorner(); } - public void llInstantMessage(string user, string message) + public LSL_Integer llGetRegionFlags() { - m_LSL_Functions.llInstantMessage(user, message); + return m_LSL_Functions.llGetRegionFlags(); } - public void llEmail(string address, string subject, string message) + public LSL_Float llGetRegionFPS() { - m_LSL_Functions.llEmail(address, subject, message); + return m_LSL_Functions.llGetRegionFPS(); } - public void llGetNextEmail(string address, string subject) + public LSL_String llGetRegionName() { - m_LSL_Functions.llGetNextEmail(address, subject); + return m_LSL_Functions.llGetRegionName(); } - public string llGetKey() + public LSL_Float llGetRegionTimeDilation() { - return m_LSL_Functions.llGetKey(); + return m_LSL_Functions.llGetRegionTimeDilation(); } - public void llSetBuoyancy(double buoyancy) + public LSL_Vector llGetRootPosition() { - m_LSL_Functions.llSetBuoyancy(buoyancy); + return m_LSL_Functions.llGetRootPosition(); } - public void llSetHoverHeight(double height, int water, double tau) + public LSL_Rotation llGetRootRotation() { - m_LSL_Functions.llSetHoverHeight(height, water, tau); + return m_LSL_Functions.llGetRootRotation(); } - public void llStopHover() + public LSL_Rotation llGetRot() { - m_LSL_Functions.llStopHover(); + return m_LSL_Functions.llGetRot(); } - public void llMinEventDelay(double delay) + public LSL_Vector llGetScale() { - m_LSL_Functions.llMinEventDelay(delay); + return m_LSL_Functions.llGetScale(); } - public void llSoundPreload() + public LSL_String llGetScriptName() { - m_LSL_Functions.llSoundPreload(); + return m_LSL_Functions.llGetScriptName(); } - public void llRotLookAt(rotation target, double strength, double damping) + public LSL_Integer llGetScriptState(string name) { - m_LSL_Functions.llRotLookAt(target, strength, damping); + return m_LSL_Functions.llGetScriptState(name); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public LSL_Types.LSLInteger llStringLength(string str) + public LSL_String llGetSimulatorHostname() { - return m_LSL_Functions.llStringLength(str); + return m_LSL_Functions.llGetSimulatorHostname(); } - public void llStartAnimation(string anim) + public LSL_Integer llGetStartParameter() { - m_LSL_Functions.llStartAnimation(anim); + return m_LSL_Functions.llGetStartParameter(); } - public void llStopAnimation(string anim) + public LSL_Integer llGetStatus(int status) { - m_LSL_Functions.llStopAnimation(anim); + return m_LSL_Functions.llGetStatus(status); } - public void llPointAt() + public LSL_String llGetSubString(string src, int start, int end) { - m_LSL_Functions.llPointAt(); + return m_LSL_Functions.llGetSubString(src, start, end); } - public void llStopPointAt() + public LSL_Vector llGetSunDirection() { - m_LSL_Functions.llStopPointAt(); + return m_LSL_Functions.llGetSunDirection(); } - public void llTargetOmega(vector axis, double spinrate, double gain) + public LSL_String llGetTexture(int face) { - m_LSL_Functions.llTargetOmega(axis, spinrate, gain); + return m_LSL_Functions.llGetTexture(face); } - public LSL_Types.LSLInteger llGetStartParameter() + public LSL_Vector llGetTextureOffset(int face) { - return m_StartParam; + return m_LSL_Functions.llGetTextureOffset(face); } - public void llGodLikeRezObject(string inventory, vector pos) + public LSL_Float llGetTextureRot(int side) { - m_LSL_Functions.llGodLikeRezObject(inventory, pos); + return m_LSL_Functions.llGetTextureRot(side); } - public void llRequestPermissions(string agent, int perm) + public LSL_Vector llGetTextureScale(int side) { - m_LSL_Functions.llRequestPermissions(agent, perm); + return m_LSL_Functions.llGetTextureScale(side); } - public string llGetPermissionsKey() + public LSL_Float llGetTime() { - return m_LSL_Functions.llGetPermissionsKey(); + return m_LSL_Functions.llGetTime(); } - public LSL_Types.LSLInteger llGetPermissions() + public LSL_Float llGetTimeOfDay() { - return m_LSL_Functions.llGetPermissions(); + return m_LSL_Functions.llGetTimeOfDay(); } - public LSL_Types.LSLInteger llGetLinkNumber() + public LSL_String llGetTimestamp() { - return m_LSL_Functions.llGetLinkNumber(); + return m_LSL_Functions.llGetTimestamp(); } - public void llSetLinkColor(int linknumber, vector color, int face) + public LSL_Vector llGetTorque() { - m_LSL_Functions.llSetLinkColor(linknumber, color, face); + return m_LSL_Functions.llGetTorque(); } - public void llCreateLink(string target, int parent) + public LSL_Integer llGetUnixTime() { - m_LSL_Functions.llCreateLink(target, parent); + return m_LSL_Functions.llGetUnixTime(); } - public void llBreakLink(int linknum) + public LSL_Vector llGetVel() { - m_LSL_Functions.llBreakLink(linknum); + return m_LSL_Functions.llGetVel(); } - public void llBreakAllLinks() + public LSL_Float llGetWallclock() { - m_LSL_Functions.llBreakAllLinks(); + return m_LSL_Functions.llGetWallclock(); } - public string llGetLinkKey(int linknum) + public void llGiveInventory(string destination, string inventory) { - return m_LSL_Functions.llGetLinkKey(linknum); + m_LSL_Functions.llGiveInventory(destination, inventory); } - public string llGetLinkName(int linknum) + public void llGiveInventoryList(string destination, string category, LSL_List inventory) { - return m_LSL_Functions.llGetLinkName(linknum); + m_LSL_Functions.llGiveInventoryList(destination, category, inventory); } - public LSL_Types.LSLInteger llGetInventoryNumber(int type) + public LSL_Integer llGiveMoney(string destination, int amount) { - return m_LSL_Functions.llGetInventoryNumber(type); + return m_LSL_Functions.llGiveMoney(destination, amount); } - public string llGetInventoryName(int type, int number) + public void llGodLikeRezObject(string inventory, LSL_Vector pos) { - return m_LSL_Functions.llGetInventoryName(type, number); + m_LSL_Functions.llGodLikeRezObject(inventory, pos); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llSetScriptState(string name, int run) + public LSL_Float llGround(LSL_Vector offset) { - m_LSL_Functions.llSetScriptState(name, run); + return m_LSL_Functions.llGround(offset); } - public double llGetEnergy() + public LSL_Vector llGroundContour(LSL_Vector offset) { - return m_LSL_Functions.llGetEnergy(); + return m_LSL_Functions.llGroundContour(offset); } - public void llGiveInventory(string destination, string inventory) + public LSL_Vector llGroundNormal(LSL_Vector offset) { - m_LSL_Functions.llGiveInventory(destination, inventory); + return m_LSL_Functions.llGroundNormal(offset); } - public void llRemoveInventory(string item) + public void llGroundRepel(double height, int water, double tau) { - m_LSL_Functions.llRemoveInventory(item); + m_LSL_Functions.llGroundRepel(height, water, tau); } - public void llSetText(string text, vector color, double alpha) + public LSL_Vector llGroundSlope(LSL_Vector offset) { - m_LSL_Functions.llSetText(text, color, alpha); + return m_LSL_Functions.llGroundSlope(offset); } - public double llWater(vector offset) + public LSL_String llHTTPRequest(string url, LSL_List parameters, string body) { - return m_LSL_Functions.llWater(offset); + return m_LSL_Functions.llHTTPRequest(url, parameters, body); } - public void llPassTouches(int pass) + public LSL_String llInsertString(string dst, int position, string src) { - m_LSL_Functions.llPassTouches(pass); + return m_LSL_Functions.llInsertString(dst, position, src); } - public string llRequestAgentData(string id, int data) + public void llInstantMessage(string user, string message) { - return m_LSL_Functions.llRequestAgentData(id, data); + m_LSL_Functions.llInstantMessage(user, message); } - public string llRequestInventoryData(string name) + public LSL_String llIntegerToBase64(int number) { - return m_LSL_Functions.llRequestInventoryData(name); + return m_LSL_Functions.llIntegerToBase64(number); } - public void llSetDamage(double damage) + public LSL_String llKey2Name(string id) { - m_LSL_Functions.llSetDamage(damage); + return m_LSL_Functions.llKey2Name(id); } - public void llTeleportAgentHome(string agent) + public LSL_String llList2CSV(LSL_List src) { - m_LSL_Functions.llTeleportAgentHome(agent); + return m_LSL_Functions.llList2CSV(src); } - public void llModifyLand(int action, int brush) + public LSL_Float llList2Float(LSL_List src, int index) { - m_LSL_Functions.llModifyLand(action, brush); + return m_LSL_Functions.llList2Float(src, index); } - public void llCollisionSound(string impact_sound, double impact_volume) + public LSL_Integer llList2Integer(LSL_List src, int index) { - m_LSL_Functions.llCollisionSound(impact_sound, impact_volume); + return m_LSL_Functions.llList2Integer(src, index); } - public void llCollisionSprite(string impact_sprite) + public LSL_Key llList2Key(LSL_List src, int index) { - m_LSL_Functions.llCollisionSprite(impact_sprite); + return m_LSL_Functions.llList2Key(src, index); } - public string llGetAnimation(string id) + public LSL_List llList2List(LSL_List src, int start, int end) { - return m_LSL_Functions.llGetAnimation(id); + return m_LSL_Functions.llList2List(src, start, end); } - public void llResetScript() + public LSL_List llList2ListStrided(LSL_List src, int start, int end, int stride) { - m_LSL_Functions.llResetScript(); + return m_LSL_Functions.llList2ListStrided(src, start, end, stride); } - public void llMessageLinked(int linknum, int num, string str, string id) + public LSL_Rotation llList2Rot(LSL_List src, int index) { - m_LSL_Functions.llMessageLinked(linknum, num, str, id); + return m_LSL_Functions.llList2Rot(src, index); } - public void llPushObject(string target, vector impulse, vector ang_impulse, int local) + public LSL_String llList2String(LSL_List src, int index) { - m_LSL_Functions.llPushObject(target, impulse, ang_impulse, local); + return m_LSL_Functions.llList2String(src, index); } - public void llPassCollisions(int pass) + public LSL_Vector llList2Vector(LSL_List src, int index) { - m_LSL_Functions.llPassCollisions(pass); + return m_LSL_Functions.llList2Vector(src, index); } - public string llGetScriptName() + public LSL_Integer llListen(int channelID, string name, string ID, string msg) { - return m_LSL_Functions.llGetScriptName(); + return m_LSL_Functions.llListen(channelID, name, ID, msg); } - public LSL_Types.LSLInteger llGetNumberOfSides() + public void llListenControl(int number, int active) { - return m_LSL_Functions.llGetNumberOfSides(); + m_LSL_Functions.llListenControl(number, active); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public rotation llAxisAngle2Rot(vector axis, double angle) + public void llListenRemove(int number) { - return m_LSL_Functions.llAxisAngle2Rot(axis, angle); + m_LSL_Functions.llListenRemove(number); } - public vector llRot2Axis(rotation rot) + public LSL_Integer llListFindList(LSL_List src, LSL_List test) { - return m_LSL_Functions.llRot2Axis(rot); + return m_LSL_Functions.llListFindList(src, test); } - public double llRot2Angle(rotation rot) + public LSL_List llListInsertList(LSL_List dest, LSL_List src, int start) { - return m_LSL_Functions.llRot2Angle(rot); + return m_LSL_Functions.llListInsertList(dest, src, start); } - public double llAcos(double val) + public LSL_List llListRandomize(LSL_List src, int stride) { - return m_LSL_Functions.llAcos(val); + return m_LSL_Functions.llListRandomize(src, stride); } - public double llAsin(double val) + public LSL_List llListReplaceList(LSL_List dest, LSL_List src, int start, int end) { - return m_LSL_Functions.llAsin(val); + return m_LSL_Functions.llListReplaceList(dest, src, start, end); } - public double llAngleBetween(rotation a, rotation b) + public LSL_List llListSort(LSL_List src, int stride, int ascending) { - return m_LSL_Functions.llAngleBetween(a, b); + return m_LSL_Functions.llListSort(src, stride, ascending); } - public string llGetInventoryKey(string name) + public LSL_Float llListStatistics(int operation, LSL_List src) { - return m_LSL_Functions.llGetInventoryKey(name); + return m_LSL_Functions.llListStatistics(operation, src); } - public void llAllowInventoryDrop(int add) + public void llLoadURL(string avatar_id, string message, string url) { - m_LSL_Functions.llAllowInventoryDrop(add); + m_LSL_Functions.llLoadURL(avatar_id, message, url); } - public vector llGetSunDirection() + public LSL_Float llLog(double val) { - return m_LSL_Functions.llGetSunDirection(); + return m_LSL_Functions.llLog(val); } - public vector llGetTextureOffset(int face) + public LSL_Float llLog10(double val) { - return m_LSL_Functions.llGetTextureOffset(face); + return m_LSL_Functions.llLog10(val); } - public vector llGetTextureScale(int side) + public void llLookAt(LSL_Vector target, double strength, double damping) { - return m_LSL_Functions.llGetTextureScale(side); + m_LSL_Functions.llLookAt(target, strength, damping); } - public double llGetTextureRot(int side) + public void llLoopSound(string sound, double volume) { - return m_LSL_Functions.llGetTextureRot(side); + m_LSL_Functions.llLoopSound(sound, volume); } - public LSL_Types.LSLInteger llSubStringIndex(string source, string pattern) + public void llLoopSoundMaster(string sound, double volume) { - return m_LSL_Functions.llSubStringIndex(source, pattern); + m_LSL_Functions.llLoopSoundMaster(sound, volume); } - public string llGetOwnerKey(string id) + public void llLoopSoundSlave(string sound, double volume) { - return m_LSL_Functions.llGetOwnerKey(id); + m_LSL_Functions.llLoopSoundSlave(sound, volume); } - public vector llGetCenterOfMass() + public void llMakeExplosion() { - return m_LSL_Functions.llGetCenterOfMass(); + m_LSL_Functions.llMakeExplosion(); } - public LSL_Types.list llListSort(LSL_Types.list src, int stride, int ascending) + public void llMakeFire() { - return m_LSL_Functions.llListSort(src, stride, ascending); + m_LSL_Functions.llMakeFire(); } - public LSL_Types.LSLInteger llGetListLength(LSL_Types.list src) + public void llMakeFountain() { - return m_LSL_Functions.llGetListLength(src); + m_LSL_Functions.llMakeFountain(); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public LSL_Types.LSLInteger llList2Integer(LSL_Types.list src, int index) + public void llMakeSmoke() { - return m_LSL_Functions.llList2Integer(src, index); + m_LSL_Functions.llMakeSmoke(); } - public double osList2Double(LSL_Types.list src, int index) + public void llMapDestination(string simname, LSL_Vector pos, LSL_Vector look_at) { - return m_LSL_Functions.osList2Double(src, index); + m_LSL_Functions.llMapDestination(simname, pos, look_at); } - public string llList2String(LSL_Types.list src, int index) + public LSL_String llMD5String(string src, int nonce) { - return m_LSL_Functions.llList2String(src, index); + return m_LSL_Functions.llMD5String(src, nonce); } - public string llList2Key(LSL_Types.list src, int index) + public void llMessageLinked(int linknum, int num, string str, string id) { - return m_LSL_Functions.llList2Key(src, index); + m_LSL_Functions.llMessageLinked(linknum, num, str, id); } - public vector llList2Vector(LSL_Types.list src, int index) + public void llMinEventDelay(double delay) { - return m_LSL_Functions.llList2Vector(src, index); + m_LSL_Functions.llMinEventDelay(delay); } - public rotation llList2Rot(LSL_Types.list src, int index) + public void llModifyLand(int action, int brush) { - return m_LSL_Functions.llList2Rot(src, index); + m_LSL_Functions.llModifyLand(action, brush); } - public LSL_Types.list llList2List(LSL_Types.list src, int start, int end) + public LSL_Integer llModPow(int a, int b, int c) { - return m_LSL_Functions.llList2List(src, start, end); + return m_LSL_Functions.llModPow(a, b, c); } - public LSL_Types.list llDeleteSubList(LSL_Types.list src, int start, int end) + public void llMoveToTarget(LSL_Vector target, double tau) { - return m_LSL_Functions.llDeleteSubList(src, start, end); + m_LSL_Functions.llMoveToTarget(target, tau); } - public LSL_Types.LSLInteger llGetListEntryType(LSL_Types.list src, int index) + public void llOffsetTexture(double u, double v, int face) { - return m_LSL_Functions.llGetListEntryType(src, index); + m_LSL_Functions.llOffsetTexture(u, v, face); } - public string llList2CSV(LSL_Types.list src) + public void llOpenRemoteDataChannel() { - return m_LSL_Functions.llList2CSV(src); + m_LSL_Functions.llOpenRemoteDataChannel(); } - public LSL_Types.list llCSV2List(string src) + public LSL_Integer llOverMyLand(string id) { - return m_LSL_Functions.llCSV2List(src); + return m_LSL_Functions.llOverMyLand(id); } - public LSL_Types.list llListRandomize(LSL_Types.list src, int stride) + public void llOwnerSay(string msg) { - return m_LSL_Functions.llListRandomize(src, stride); + m_LSL_Functions.llOwnerSay(msg); } - public LSL_Types.list llList2ListStrided(LSL_Types.list src, int start, int end, int stride) + public void llParcelMediaCommandList(LSL_List commandList) { - return m_LSL_Functions.llList2ListStrided(src, start, end, stride); + m_LSL_Functions.llParcelMediaCommandList(commandList); } - public vector llGetRegionCorner() + public LSL_List llParcelMediaQuery(LSL_List aList) { - return m_LSL_Functions.llGetRegionCorner(); + return m_LSL_Functions.llParcelMediaQuery(aList); } - public LSL_Types.list llListInsertList(LSL_Types.list dest, LSL_Types.list src, int start) + public LSL_List llParseString2List(string str, LSL_List separators, LSL_List spacers) { - return m_LSL_Functions.llListInsertList(dest, src, start); + return m_LSL_Functions.llParseString2List(str, separators, spacers); } - public LSL_Types.LSLInteger llListFindList(LSL_Types.list src, LSL_Types.list test) + public LSL_List llParseStringKeepNulls(string src, LSL_List seperators, LSL_List spacers) { - return m_LSL_Functions.llListFindList(src, test); + return m_LSL_Functions.llParseStringKeepNulls(src, seperators, spacers); } - public string llGetObjectName() + public void llParticleSystem(LSL_List rules) { - return m_LSL_Functions.llGetObjectName(); + m_LSL_Functions.llParticleSystem(rules); } - public void llSetObjectName(string name) + public void llPassCollisions(int pass) { - m_LSL_Functions.llSetObjectName(name); + m_LSL_Functions.llPassCollisions(pass); } - public string llGetDate() + public void llPassTouches(int pass) { - return m_LSL_Functions.llGetDate(); + m_LSL_Functions.llPassTouches(pass); } - public LSL_Types.LSLInteger llEdgeOfWorld(vector pos, vector dir) + public void llPlaySound(string sound, double volume) { - return m_LSL_Functions.llEdgeOfWorld(pos, dir); + m_LSL_Functions.llPlaySound(sound, volume); } - public LSL_Types.LSLInteger llGetAgentInfo(string id) + public void llPlaySoundSlave(string sound, double volume) { - return m_LSL_Functions.llGetAgentInfo(id); + m_LSL_Functions.llPlaySoundSlave(sound, volume); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llAdjustSoundVolume(double volume) + public void llPointAt() { - m_LSL_Functions.llAdjustSoundVolume(volume); + m_LSL_Functions.llPointAt(); } - public void llSetSoundQueueing(int queue) + public LSL_Float llPow(double fbase, double fexponent) { - m_LSL_Functions.llSetSoundQueueing(queue); + return m_LSL_Functions.llPow(fbase, fexponent); } - public void llSetSoundRadius(double radius) + public void llPreloadSound(string sound) { - m_LSL_Functions.llSetSoundRadius(radius); + m_LSL_Functions.llPreloadSound(sound); } - public string llKey2Name(string id) + public void llPushObject(string target, LSL_Vector impulse, LSL_Vector ang_impulse, int local) { - return m_LSL_Functions.llKey2Name(id); + m_LSL_Functions.llPushObject(target, impulse, ang_impulse, local); } - public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) + public void llRefreshPrimURL() { - m_LSL_Functions.llSetTextureAnim(mode, face, sizex, sizey, start, length, rate); + m_LSL_Functions.llRefreshPrimURL(); } - public void llTriggerSoundLimited(string sound, double volume, vector top_north_east, vector bottom_south_west) + public void llRegionSay(int channelID, string text) { - m_LSL_Functions.llTriggerSoundLimited(sound, volume, top_north_east, bottom_south_west); + m_LSL_Functions.llRegionSay(channelID, text); } - public void llEjectFromLand(string pest) + public void llReleaseCamera(string avatar) { - m_LSL_Functions.llEjectFromLand(pest); + m_LSL_Functions.llReleaseCamera(avatar); } - public LSL_Types.list llParseString2List(string str, LSL_Types.list separators, LSL_Types.list spacers) + public void llReleaseControls() { - return m_LSL_Functions.llParseString2List(str,separators,spacers); + m_LSL_Functions.llReleaseControls(); } - public LSL_Types.LSLInteger llOverMyLand(string id) + public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) { - return m_LSL_Functions.llOverMyLand(id); + m_LSL_Functions.llRemoteDataReply(channel, message_id, sdata, idata); } - public string llGetLandOwnerAt(vector pos) + public void llRemoteDataSetRegion() { - return m_LSL_Functions.llGetLandOwnerAt(pos); + m_LSL_Functions.llRemoteDataSetRegion(); } - public string llGetNotecardLine(string name, int line) + public void llRemoteLoadScript() { - return m_LSL_Functions.llGetNotecardLine(name, line); + m_LSL_Functions.llRemoteLoadScript(); } - public vector llGetAgentSize(string id) + public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) { - return m_LSL_Functions.llGetAgentSize(id); + m_LSL_Functions.llRemoteLoadScriptPin(target, name, pin, running, start_param); } - public LSL_Types.LSLInteger llSameGroup(string agent) + public void llRemoveFromLandBanList(string avatar) { - return m_LSL_Functions.llSameGroup(agent); + m_LSL_Functions.llRemoveFromLandBanList(avatar); } - public void llUnSit(string id) + public void llRemoveFromLandPassList(string avatar) { - m_LSL_Functions.llUnSit(id); + m_LSL_Functions.llRemoveFromLandPassList(avatar); } - public vector llGroundSlope(vector offset) + public void llRemoveInventory(string item) { - return m_LSL_Functions.llGroundSlope(offset); + m_LSL_Functions.llRemoveInventory(item); } - public vector llGroundNormal(vector offset) + public void llRemoveVehicleFlags(int flags) { - return m_LSL_Functions.llGroundNormal(offset); + m_LSL_Functions.llRemoveVehicleFlags(flags); } - public vector llGroundContour(vector offset) + public LSL_Key llRequestAgentData(string id, int data) { - return m_LSL_Functions.llGroundContour(offset); + return m_LSL_Functions.llRequestAgentData(id, data); } - public LSL_Types.LSLInteger llGetAttached() + public LSL_Key llRequestInventoryData(string name) { - return m_LSL_Functions.llGetAttached(); + return m_LSL_Functions.llRequestInventoryData(name); } - public LSL_Types.LSLInteger llGetFreeMemory() + public void llRequestPermissions(string agent, int perm) { - return m_LSL_Functions.llGetFreeMemory(); + m_LSL_Functions.llRequestPermissions(agent, perm); } - public string llGetRegionName() + public LSL_Key llRequestSimulatorData(string simulator, int data) { - return m_LSL_Functions.llGetRegionName(); + return m_LSL_Functions.llRequestSimulatorData(simulator, data); } - public double llGetRegionTimeDilation() + public void llResetLandBanList() { - return m_LSL_Functions.llGetRegionTimeDilation(); + m_LSL_Functions.llResetLandBanList(); } - public double llGetRegionFPS() + public void llResetLandPassList() { - return m_LSL_Functions.llGetRegionFPS(); + m_LSL_Functions.llResetLandPassList(); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llParticleSystem(LSL_Types.list rules) + public void llResetOtherScript(string name) { - m_LSL_Functions.llParticleSystem(rules); + m_LSL_Functions.llResetOtherScript(name); } - public void llGroundRepel(double height, int water, double tau) + public void llResetScript() { - m_LSL_Functions.llGroundRepel(height, water, tau); + m_LSL_Functions.llResetScript(); } - public void llGiveInventoryList(string destination, string category, LSL_Types.list inventory) + public void llResetTime() { - m_LSL_Functions.llGiveInventoryList(destination, category, inventory); + m_LSL_Functions.llResetTime(); } - public void llSetVehicleType(int type) + public void llRezAtRoot(string inventory, LSL_Vector position, LSL_Vector velocity, LSL_Rotation rot, int param) { - m_LSL_Functions.llSetVehicleType(type); + m_LSL_Functions.llRezAtRoot(inventory, position, velocity, rot, param); } - public void llSetVehicledoubleParam(int param, double value) + public void llRezObject(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param) { - m_LSL_Functions.llSetVehicledoubleParam(param, value); + m_LSL_Functions.llRezObject(inventory, pos, vel, rot, param); } - public void llSetVehicleFloatParam(int param, float value) + public LSL_Float llRot2Angle(LSL_Rotation rot) { - m_LSL_Functions.llSetVehicleFloatParam(param, value); + return m_LSL_Functions.llRot2Angle(rot); } - public void llSetVehicleVectorParam(int param, vector vec) + public LSL_Vector llRot2Axis(LSL_Rotation rot) { - m_LSL_Functions.llSetVehicleVectorParam(param, vec); + return m_LSL_Functions.llRot2Axis(rot); } - public void llSetVehicleRotationParam(int param, rotation rot) + public LSL_Vector llRot2Euler(LSL_Rotation r) { - m_LSL_Functions.llSetVehicleRotationParam(param, rot); + return m_LSL_Functions.llRot2Euler(r); } - public void llSetVehicleFlags(int flags) + public LSL_Vector llRot2Fwd(LSL_Rotation r) { - m_LSL_Functions.llSetVehicleFlags(flags); + return m_LSL_Functions.llRot2Fwd(r); } - public void llRemoveVehicleFlags(int flags) + public LSL_Vector llRot2Left(LSL_Rotation r) { - m_LSL_Functions.llRemoveVehicleFlags(flags); + return m_LSL_Functions.llRot2Left(r); } - public void llSitTarget(vector offset, rotation rot) + public LSL_Vector llRot2Up(LSL_Rotation r) { - m_LSL_Functions.llSitTarget(offset, rot); + return m_LSL_Functions.llRot2Up(r); } - public string llAvatarOnSitTarget() + public void llRotateTexture(double rotation, int face) { - return m_LSL_Functions.llAvatarOnSitTarget(); + m_LSL_Functions.llRotateTexture(rotation, face); } - public void llAddToLandPassList(string avatar, double hours) + public LSL_Rotation llRotBetween(LSL_Vector start, LSL_Vector end) { - m_LSL_Functions.llAddToLandPassList(avatar, hours); + return m_LSL_Functions.llRotBetween(start, end); } - public void llSetTouchText(string text) + public void llRotLookAt(LSL_Rotation target, double strength, double damping) { - m_LSL_Functions.llSetTouchText(text); + m_LSL_Functions.llRotLookAt(target, strength, damping); } - public void llSetSitText(string text) + public LSL_Integer llRotTarget(LSL_Rotation rot, double error) { - m_LSL_Functions.llSetSitText(text); + return m_LSL_Functions.llRotTarget(rot, error); } - public void llSetCameraEyeOffset(vector offset) + public void llRotTargetRemove(int number) { - m_LSL_Functions.llSetCameraEyeOffset(offset); + m_LSL_Functions.llRotTargetRemove(number); } - public void llSetCameraAtOffset(vector offset) + public LSL_Integer llRound(double f) { - m_LSL_Functions.llSetCameraAtOffset(offset); + return m_LSL_Functions.llRound(f); } - public string llDumpList2String(LSL_Types.list src, string seperator) + public LSL_Integer llSameGroup(string agent) { - return m_LSL_Functions.llDumpList2String(src, seperator); + return m_LSL_Functions.llSameGroup(agent); + } + + public void llSay(int channelID, string text) + { + m_LSL_Functions.llSay(channelID, text); + } + + public void llScaleTexture(double u, double v, int face) + { + m_LSL_Functions.llScaleTexture(u, v, face); + } + + public LSL_Integer llScriptDanger(LSL_Vector pos) + { + return m_LSL_Functions.llScriptDanger(pos); + } + + public LSL_Key llSendRemoteData(string channel, string dest, int idata, string sdata) + { + return m_LSL_Functions.llSendRemoteData(channel, dest, idata, sdata); + } + + public void llSensor(string name, string id, int type, double range, double arc) + { + m_LSL_Functions.llSensor(name, id, type, range, arc); + } + + public void llSensorRemove() + { + m_LSL_Functions.llSensorRemove(); } - public LSL_Types.LSLInteger llScriptDanger(vector pos) + public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) + { + m_LSL_Functions.llSensorRepeat(name, id, type, range, arc, rate); + } + + public void llSetAlpha(double alpha, int face) { - return m_LSL_Functions.llScriptDanger(pos); + m_LSL_Functions.llSetAlpha(alpha, face); } - public void llDialog(string avatar, string message, LSL_Types.list buttons, int chat_channel) + public void llSetBuoyancy(double buoyancy) { - m_LSL_Functions.llDialog(avatar, message, buttons, chat_channel); + m_LSL_Functions.llSetBuoyancy(buoyancy); } - public void llVolumeDetect(int detect) + public void llSetCameraAtOffset(LSL_Vector offset) { - m_LSL_Functions.llVolumeDetect(detect); + m_LSL_Functions.llSetCameraAtOffset(offset); } - public void llResetOtherScript(string name) + public void llSetCameraEyeOffset(LSL_Vector offset) { - m_LSL_Functions.llResetOtherScript(name); + m_LSL_Functions.llSetCameraEyeOffset(offset); } - public LSL_Types.LSLInteger llGetScriptState(string name) + public void llSetCameraParams(LSL_List rules) { - return m_LSL_Functions.llGetScriptState(name); + m_LSL_Functions.llSetCameraParams(rules); } - public void llRemoteLoadScript() + public void llSetClickAction(int action) { - m_LSL_Functions.llRemoteLoadScript(); + m_LSL_Functions.llSetClickAction(action); } - public void llSetRemoteScriptAccessPin(int pin) + public void llSetColor(LSL_Vector color, int face) { - m_LSL_Functions.llSetRemoteScriptAccessPin(pin); + m_LSL_Functions.llSetColor(color, face); } - public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) + public void llSetDamage(double damage) { - m_LSL_Functions.llRemoteLoadScriptPin(target, name, pin, running, start_param); + m_LSL_Functions.llSetDamage(damage); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public void llOpenRemoteDataChannel() + public void llSetForce(LSL_Vector force, int local) { - m_LSL_Functions.llOpenRemoteDataChannel(); + m_LSL_Functions.llSetForce(force, local); } - public string llSendRemoteData(string channel, string dest, int idata, string sdata) + public void llSetForceAndTorque(LSL_Vector force, LSL_Vector torque, int local) { - return m_LSL_Functions.llSendRemoteData(channel, dest, idata, sdata); + m_LSL_Functions.llSetForceAndTorque(force, torque, local); } - public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) + public void llSetHoverHeight(double height, int water, double tau) { - m_LSL_Functions.llRemoteDataReply(channel, message_id, sdata, idata); + m_LSL_Functions.llSetHoverHeight(height, water, tau); } - public void llCloseRemoteDataChannel(string channel) + public void llSetInventoryPermMask(string item, int mask, int value) { - m_LSL_Functions.llCloseRemoteDataChannel(channel); + m_LSL_Functions.llSetInventoryPermMask(item, mask, value); } - public string llMD5String(string src, int nonce) + public void llSetLinkAlpha(int linknumber, double alpha, int face) { - return m_LSL_Functions.llMD5String(src, nonce); + m_LSL_Functions.llSetLinkAlpha(linknumber, alpha, face); } - public void llSetPrimitiveParams(LSL_Types.list rules) + public void llSetLinkColor(int linknumber, LSL_Vector color, int face) { - m_LSL_Functions.llSetPrimitiveParams(rules); + m_LSL_Functions.llSetLinkColor(linknumber, color, face); } - public void llSetLinkPrimitiveParams(int linknumber, LSL_Types.list rules) + public void llSetLinkPrimitiveParams(int linknumber, LSL_List rules) { m_LSL_Functions.llSetLinkPrimitiveParams(linknumber, rules); } - public string llStringToBase64(string str) + + public void llSetLinkTexture(int linknumber, string texture, int face) { - return m_LSL_Functions.llStringToBase64(str); + m_LSL_Functions.llSetLinkTexture(linknumber, texture, face); } - public string llBase64ToString(string str) + public void llSetLocalRot(LSL_Rotation rot) { - return m_LSL_Functions.llBase64ToString(str); + m_LSL_Functions.llSetLocalRot(rot); } - public void llXorBase64Strings() + public void llSetObjectDesc(string desc) { - m_LSL_Functions.llXorBase64Strings(); + m_LSL_Functions.llSetObjectDesc(desc); } - public void llRemoteDataSetRegion() + public void llSetObjectName(string name) { - m_LSL_Functions.llRemoteDataSetRegion(); + m_LSL_Functions.llSetObjectName(name); } - public double llLog10(double val) + public void llSetObjectPermMask(int mask, int value) { - return m_LSL_Functions.llLog10(val); + m_LSL_Functions.llSetObjectPermMask(mask, value); } - public double llLog(double val) + public void llSetParcelMusicURL(string url) { - return m_LSL_Functions.llLog(val); + m_LSL_Functions.llSetParcelMusicURL(url); } - public LSL_Types.list llGetAnimationList(string id) + public void llSetPayPrice(int price, LSL_List quick_pay_buttons) { - return m_LSL_Functions.llGetAnimationList(id); + m_LSL_Functions.llSetPayPrice(price, quick_pay_buttons); } - public void llSetParcelMusicURL(string url) + public void llSetPos(LSL_Vector pos) { - m_LSL_Functions.llSetParcelMusicURL(url); + m_LSL_Functions.llSetPos(pos); } - public vector llGetRootPosition() + public void llSetPrimitiveParams(LSL_List rules) { - return m_LSL_Functions.llGetRootPosition(); + m_LSL_Functions.llSetPrimitiveParams(rules); } - public rotation llGetRootRotation() + public void llSetPrimURL() { - return m_LSL_Functions.llGetRootRotation(); + m_LSL_Functions.llSetPrimURL(); } - public string llGetObjectDesc() + public void llSetRemoteScriptAccessPin(int pin) { - return m_LSL_Functions.llGetObjectDesc(); + m_LSL_Functions.llSetRemoteScriptAccessPin(pin); } - public void llSetObjectDesc(string desc) + public void llSetRot(LSL_Rotation rot) { - m_LSL_Functions.llSetObjectDesc(desc); + m_LSL_Functions.llSetRot(rot); } - public string llGetCreator() + public void llSetScale(LSL_Vector scale) { - return m_LSL_Functions.llGetCreator(); + m_LSL_Functions.llSetScale(scale); } - public string llGetTimestamp() + public void llSetScriptState(string name, int run) { - return m_LSL_Functions.llGetTimestamp(); + m_LSL_Functions.llSetScriptState(name, run); } - public void llSetLinkAlpha(int linknumber, double alpha, int face) + public void llSetSitText(string text) { - m_LSL_Functions.llSetLinkAlpha(linknumber, alpha, face); + m_LSL_Functions.llSetSitText(text); } - public LSL_Types.LSLInteger llGetNumberOfPrims() + public void llSetSoundQueueing(int queue) { - return m_LSL_Functions.llGetNumberOfPrims(); + m_LSL_Functions.llSetSoundQueueing(queue); } - public string llGetNumberOfNotecardLines(string name) + public void llSetSoundRadius(double radius) { - return m_LSL_Functions.llGetNumberOfNotecardLines(name); + m_LSL_Functions.llSetSoundRadius(radius); } - public LSL_Types.list llGetBoundingBox(string obj) + public void llSetStatus(int status, int value) { - return m_LSL_Functions.llGetBoundingBox(obj); + m_LSL_Functions.llSetStatus(status, value); } - public vector llGetGeometricCenter() + public void llSetText(string text, LSL_Vector color, double alpha) { - return m_LSL_Functions.llGetGeometricCenter(); + m_LSL_Functions.llSetText(text, color, alpha); } - public LSL_Types.list llGetPrimitiveParams(LSL_Types.list rules) + public void llSetTexture(string texture, int face) { - return m_LSL_Functions.llGetPrimitiveParams(rules); + m_LSL_Functions.llSetTexture(texture, face); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public string llIntegerToBase64(int number) + public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) { - return m_LSL_Functions.llIntegerToBase64(number); + m_LSL_Functions.llSetTextureAnim(mode, face, sizex, sizey, start, length, rate); } - public LSL_Types.LSLInteger llBase64ToInteger(string str) + public void llSetTimerEvent(double sec) { - return m_LSL_Functions.llBase64ToInteger(str); + m_LSL_Functions.llSetTimerEvent(sec); } - public double llGetGMTclock() + public void llSetTorque(LSL_Vector torque, int local) { - return m_LSL_Functions.llGetGMTclock(); + m_LSL_Functions.llSetTorque(torque, local); } - public string llGetSimulatorHostname() + public void llSetTouchText(string text) { - return m_LSL_Functions.llGetSimulatorHostname(); + m_LSL_Functions.llSetTouchText(text); } - public void llSetLocalRot(rotation rot) + public void llSetVehicleFlags(int flags) { - m_LSL_Functions.llSetLocalRot(rot); + m_LSL_Functions.llSetVehicleFlags(flags); } - public LSL_Types.list llParseStringKeepNulls(string src, LSL_Types.list seperators, LSL_Types.list spacers) + public void llSetVehicleFloatParam(int param, float value) { - return m_LSL_Functions.llParseStringKeepNulls(src, seperators, spacers); + m_LSL_Functions.llSetVehicleFloatParam(param, value); } - public void llRezAtRoot(string inventory, vector position, vector velocity, rotation rot, int param) + public void llSetVehicleRotationParam(int param, LSL_Rotation rot) { - m_LSL_Functions.llRezAtRoot(inventory, position, velocity, rot, param); + m_LSL_Functions.llSetVehicleRotationParam(param, rot); } - public LSL_Types.LSLInteger llGetObjectPermMask(int mask) + public void llSetVehicleType(int type) { - return m_LSL_Functions.llGetObjectPermMask(mask); + m_LSL_Functions.llSetVehicleType(type); } - public void llSetObjectPermMask(int mask, int value) + public void llSetVehicleVectorParam(int param, LSL_Vector vec) { - m_LSL_Functions.llSetObjectPermMask(mask, value); + m_LSL_Functions.llSetVehicleVectorParam(param, vec); } - public LSL_Types.LSLInteger llGetInventoryPermMask(string item, int mask) + public void llShout(int channelID, string text) { - return m_LSL_Functions.llGetInventoryPermMask(item, mask); + m_LSL_Functions.llShout(channelID, text); } - public void llSetInventoryPermMask(string item, int mask, int value) + public LSL_Float llSin(double f) { - m_LSL_Functions.llSetInventoryPermMask(item, mask, value); + return m_LSL_Functions.llSin(f); } - public string llGetInventoryCreator(string item) + public void llSitTarget(LSL_Vector offset, LSL_Rotation rot) { - return m_LSL_Functions.llGetInventoryCreator(item); + m_LSL_Functions.llSitTarget(offset, rot); } - public string llRequestSimulatorData(string simulator, int data) + public void llSleep(double sec) { - return m_LSL_Functions.llRequestSimulatorData(simulator, data); + m_LSL_Functions.llSleep(sec); } - public void llForceMouselook(int mouselook) + public void llSound() { - m_LSL_Functions.llForceMouselook(mouselook); + m_LSL_Functions.llSound(); } - public double llGetObjectMass(string id) + public void llSoundPreload() { - return m_LSL_Functions.llGetObjectMass(id); + m_LSL_Functions.llSoundPreload(); } - public LSL_Types.list llListReplaceList(LSL_Types.list dest, LSL_Types.list src, int start, int end) + public LSL_Float llSqrt(double f) { - return m_LSL_Functions.llListReplaceList(dest, src, start, end); + return m_LSL_Functions.llSqrt(f); } - public void llLoadURL(string avatar_id, string message, string url) + public void llStartAnimation(string anim) { - m_LSL_Functions.llLoadURL(avatar_id, message, url); + m_LSL_Functions.llStartAnimation(anim); } - public void llParcelMediaCommandList(LSL_Types.list commandList) + public void llStopAnimation(string anim) { - m_LSL_Functions.llParcelMediaCommandList(commandList); + m_LSL_Functions.llStopAnimation(anim); } - public LSL_Types.list llParcelMediaQuery(LSL_Types.list aList) + public void llStopHover() { - return m_LSL_Functions.llParcelMediaQuery(aList); + m_LSL_Functions.llStopHover(); } - public LSL_Types.LSLInteger llModPow(int a, int b, int c) + public void llStopLookAt() { - return m_LSL_Functions.llModPow(a, b, c); + m_LSL_Functions.llStopLookAt(); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public LSL_Types.LSLInteger llGetInventoryType(string name) + public void llStopMoveToTarget() { - return m_LSL_Functions.llGetInventoryType(name); + m_LSL_Functions.llStopMoveToTarget(); } - public void llSetPayPrice(int price, LSL_Types.list quick_pay_buttons) + public void llStopPointAt() { - m_LSL_Functions.llSetPayPrice(price, quick_pay_buttons); + m_LSL_Functions.llStopPointAt(); } - public vector llGetCameraPos() + public void llStopSound() { - return m_LSL_Functions.llGetCameraPos(); + m_LSL_Functions.llStopSound(); } - public rotation llGetCameraRot() + public LSL_Integer llStringLength(string str) { - return m_LSL_Functions.llGetCameraRot(); + return m_LSL_Functions.llStringLength(str); } - public void llSetPrimURL() + public LSL_String llStringToBase64(string str) { - m_LSL_Functions.llSetPrimURL(); + return m_LSL_Functions.llStringToBase64(str); } - public void llRefreshPrimURL() + public LSL_String llStringTrim(string src, int type) { - m_LSL_Functions.llRefreshPrimURL(); + return m_LSL_Functions.llStringTrim(src, type); } - public string llEscapeURL(string url) + public LSL_Integer llSubStringIndex(string source, string pattern) { - return m_LSL_Functions.llEscapeURL(url); + return m_LSL_Functions.llSubStringIndex(source, pattern); } - public string llUnescapeURL(string url) + public void llTakeCamera(string avatar) { - return m_LSL_Functions.llUnescapeURL(url); + m_LSL_Functions.llTakeCamera(avatar); } - public void llMapDestination(string simname, vector pos, vector look_at) + public void llTakeControls(int controls, int accept, int pass_on) { - m_LSL_Functions.llMapDestination(simname, pos, look_at); + m_LSL_Functions.llTakeControls(controls, accept, pass_on); } - public void llAddToLandBanList(string avatar, double hours) + public LSL_Float llTan(double f) { - m_LSL_Functions.llAddToLandBanList(avatar, hours); + return m_LSL_Functions.llTan(f); } - public void llRemoveFromLandPassList(string avatar) + public LSL_Integer llTarget(LSL_Vector position, double range) { - m_LSL_Functions.llRemoveFromLandPassList(avatar); + return m_LSL_Functions.llTarget(position, range); } - public void llRemoveFromLandBanList(string avatar) + public void llTargetOmega(LSL_Vector axis, double spinrate, double gain) { - m_LSL_Functions.llRemoveFromLandBanList(avatar); + m_LSL_Functions.llTargetOmega(axis, spinrate, gain); } - public void llSetCameraParams(LSL_Types.list rules) + public void llTargetRemove(int number) { - m_LSL_Functions.llSetCameraParams(rules); + m_LSL_Functions.llTargetRemove(number); } - public void llClearCameraParams() + public void llTeleportAgentHome(string agent) { - m_LSL_Functions.llClearCameraParams(); + m_LSL_Functions.llTeleportAgentHome(agent); } - public double llListStatistics(int operation, LSL_Types.list src) + public void llTextBox(string avatar, string message, int chat_channel) { - return m_LSL_Functions.llListStatistics(operation, src); + m_LSL_Functions.llTextBox(avatar, message, chat_channel); } - public LSL_Types.LSLInteger llGetUnixTime() + public LSL_String llToLower(string source) { - return m_LSL_Functions.llGetUnixTime(); + return m_LSL_Functions.llToLower(source); } - public LSL_Types.LSLInteger llGetParcelFlags(vector pos) + public LSL_String llToUpper(string source) { - return m_LSL_Functions.llGetParcelFlags(pos); + return m_LSL_Functions.llToUpper(source); } - public LSL_Types.LSLInteger llGetRegionFlags() + public void llTriggerSound(string sound, double volume) { - return m_LSL_Functions.llGetRegionFlags(); + m_LSL_Functions.llTriggerSound(sound, volume); } - public string llXorBase64StringsCorrect(string str1, string str2) + public void llTriggerSoundLimited(string sound, double volume, LSL_Vector top_north_east, LSL_Vector bottom_south_west) { - return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2); + m_LSL_Functions.llTriggerSoundLimited(sound, volume, top_north_east, bottom_south_west); } - public string llHTTPRequest(string url, LSL_Types.list parameters, string body) + public LSL_String llUnescapeURL(string url) { - return m_LSL_Functions.llHTTPRequest(url, parameters, body); + return m_LSL_Functions.llUnescapeURL(url); } - public void llResetLandBanList() + public void llUnSit(string id) { - m_LSL_Functions.llResetLandBanList(); + m_LSL_Functions.llUnSit(id); } - public void llResetLandPassList() + public LSL_Float llVecDist(LSL_Vector a, LSL_Vector b) { - m_LSL_Functions.llResetLandPassList(); + return m_LSL_Functions.llVecDist(a, b); } - public LSL_Types.LSLInteger llGetParcelPrimCount(vector pos, int category, int sim_wide) + public LSL_Float llVecMag(LSL_Vector v) { - return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide); + return m_LSL_Functions.llVecMag(v); } - public LSL_Types.list llGetParcelPrimOwners(vector pos) + public LSL_Vector llVecNorm(LSL_Vector v) { - return m_LSL_Functions.llGetParcelPrimOwners(pos); + return m_LSL_Functions.llVecNorm(v); } - public LSL_Types.LSLInteger llGetObjectPrimCount(string object_id) + public void llVolumeDetect(int detect) { - return m_LSL_Functions.llGetObjectPrimCount(object_id); + m_LSL_Functions.llVolumeDetect(detect); } - // - // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs - // - public LSL_Types.LSLInteger llGetParcelMaxPrims(vector pos, int sim_wide) + public LSL_Float llWater(LSL_Vector offset) { - return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide); + return m_LSL_Functions.llWater(offset); } - public LSL_Types.list llGetParcelDetails(vector pos, LSL_Types.list param) + public void llWhisper(int channelID, string text) { - return m_LSL_Functions.llGetParcelDetails(pos, param); + m_LSL_Functions.llWhisper(channelID, text); } - public void llSetLinkTexture(int linknumber, string texture, int face) + public LSL_Vector llWind(LSL_Vector offset) { - m_LSL_Functions.llSetLinkTexture(linknumber, texture, face); + return m_LSL_Functions.llWind(offset); } - public string llStringTrim(string src, int type) + public void llXorBase64Strings() { - return m_LSL_Functions.llStringTrim(src, type); + m_LSL_Functions.llXorBase64Strings(); } - public LSL_Types.list llGetObjectDetails(string id, LSL_Types.list args) + public LSL_String llXorBase64StringsCorrect(string str1, string str2) { - return m_LSL_Functions.llGetObjectDetails(id, args); + return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2); } // @@ -1944,12 +1938,12 @@ namespace OpenSim.Region.ScriptEngine.Common // Teleport Functions - public void osTeleportAgent(string agent, string regionName, vector position, vector lookat) + public void osTeleportAgent(string agent, string regionName, LSL_Vector position, LSL_Vector lookat) { m_LSL_Functions.osTeleportAgent(agent, regionName, position, lookat); } - public void osTeleportAgent(string agent, vector position, vector lookat) + public void osTeleportAgent(string agent, LSL_Vector position, LSL_Vector lookat) { m_LSL_Functions.osTeleportAgent(agent, position, lookat); } @@ -2039,14 +2033,6 @@ namespace OpenSim.Region.ScriptEngine.Common return m_LSL_Functions.osGetScriptEngineName(); } - // - - public double llList2Float(LSL_Types.list src, int index) - { - return m_LSL_Functions.llList2Float(src, index); - } - - public System.Collections.Hashtable osParseJSON(string JSON) { return m_LSL_Functions.osParseJSON(JSON); @@ -2471,8 +2457,8 @@ namespace OpenSim.Region.ScriptEngine.Common public const int OBJECT_CREATOR = 8; // Can not be public const? - public static readonly vector ZERO_VECTOR = new vector(0.0, 0.0, 0.0); - public static readonly rotation ZERO_ROTATION = new rotation(0.0, 0, 0.0, 1.0); + public static readonly LSL_Vector ZERO_VECTOR = new LSL_Vector(0f, 0f, 0f); + public static readonly LSL_Rotation ZERO_ROTATION = new LSL_Rotation(0f, 0f, 0f, 1f); // constants for llSetCameraParams public const int CAMERA_PITCH = 0; diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 90cd3b1..1017fd8 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -45,7 +45,13 @@ using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Physics.Manager; using OpenSim.Region.ScriptEngine.Common.ScriptEngineBase; -//using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; +using LSL_Float = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLFloat; +using LSL_Integer = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLInteger; +using LSL_Key = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; +using LSL_List = OpenSim.Region.ScriptEngine.Common.LSL_Types.list; +using LSL_Rotation = OpenSim.Region.ScriptEngine.Common.LSL_Types.Quaternion; +using LSL_String = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; +using LSL_Vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; namespace OpenSim.Region.ScriptEngine.Common { @@ -61,6 +67,9 @@ namespace OpenSim.Region.ScriptEngine.Common internal uint m_localID; internal UUID m_itemID; internal bool throwErrorOnNotImplemented = true; + internal float m_delayFactor = 1.0f; + internal float m_distanceFactor = 1.0f; + public LSL_BuiltIn_Commands(ScriptEngineBase.ScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID) { @@ -81,12 +90,9 @@ namespace OpenSim.Region.ScriptEngine.Common } - private DateTime m_timer = DateTime.Now; private string m_state = "default"; + private DateTime m_timer = DateTime.Now; private bool m_waitingForScriptAnswer=false; - private float m_delayFactor = 1.0f; - private float m_distanceFactor = 1.0f; - protected void ScriptSleep(int delay) { @@ -96,6 +102,23 @@ namespace OpenSim.Region.ScriptEngine.Common System.Threading.Thread.Sleep(delay); } + // Object never expires + public override Object InitializeLifetimeService() + { + ILease lease = (ILease)base.InitializeLifetimeService(); + + if (lease.CurrentState == LeaseState.Initial) + { + lease.InitialLeaseTime = TimeSpan.Zero; + } + return lease; + } + + public Scene World + { + get { return m_ScriptEngine.World; } + } + public string State { get { return m_state; } @@ -127,23 +150,6 @@ namespace OpenSim.Region.ScriptEngine.Common } } - // Object never expires - public override Object InitializeLifetimeService() - { - ILease lease = (ILease)base.InitializeLifetimeService(); - - if (lease.CurrentState == LeaseState.Initial) - { - lease.InitialLeaseTime = TimeSpan.Zero; - } - return lease; - } - - public Scene World - { - get { return m_ScriptEngine.World; } - } - // Extension commands use this: public ICommander GetCommander(string name) { @@ -220,68 +226,57 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public void osSetRegionWaterHeight(double height) - { - m_host.AddScriptLPS(1); - //Check to make sure that the script's owner is the estate manager/master - //World.Permissions.GenericEstatePermission( - if (World.ExternalChecks.ExternalChecksCanBeGodLike(m_host.OwnerID)) - { - World.EventManager.TriggerRequestChangeWaterHeight((float)height); - } - } - //These are the implementations of the various ll-functions used by the LSL scripts. //starting out, we use the System.Math library for trig functions. - ckrinke 8-14-07 - public double llSin(double f) + public LSL_Float llSin(double f) { m_host.AddScriptLPS(1); return (double)Math.Sin(f); } - public double llCos(double f) + public LSL_Float llCos(double f) { m_host.AddScriptLPS(1); return (double)Math.Cos(f); } - public double llTan(double f) + public LSL_Float llTan(double f) { m_host.AddScriptLPS(1); return (double)Math.Tan(f); } - public double llAtan2(double x, double y) + public LSL_Float llAtan2(double x, double y) { m_host.AddScriptLPS(1); return (double)Math.Atan2(y, x); } - public double llSqrt(double f) + public LSL_Float llSqrt(double f) { m_host.AddScriptLPS(1); return (double)Math.Sqrt(f); } - public double llPow(double fbase, double fexponent) + public LSL_Float llPow(double fbase, double fexponent) { m_host.AddScriptLPS(1); return (double)Math.Pow(fbase, fexponent); } - public LSL_Types.LSLInteger llAbs(int i) + public LSL_Integer llAbs(int i) { m_host.AddScriptLPS(1); return (int)Math.Abs(i); } - public double llFabs(double f) + public LSL_Float llFabs(double f) { m_host.AddScriptLPS(1); return (double)Math.Abs(f); } - public double llFrand(double mag) + public LSL_Float llFrand(double mag) { m_host.AddScriptLPS(1); lock (Util.RandomClass) @@ -290,44 +285,44 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llFloor(double f) + public LSL_Integer llFloor(double f) { m_host.AddScriptLPS(1); return (int)Math.Floor(f); } - public LSL_Types.LSLInteger llCeil(double f) + public LSL_Integer llCeil(double f) { m_host.AddScriptLPS(1); return (int)Math.Ceiling(f); } // Xantor 01/May/2008 fixed midpointrounding (2.5 becomes 3.0 instead of 2.0, default = ToEven) - public LSL_Types.LSLInteger llRound(double f) + public LSL_Integer llRound(double f) { m_host.AddScriptLPS(1); return (int)Math.Round(f, MidpointRounding.AwayFromZero); } //This next group are vector operations involving squaring and square root. ckrinke - public double llVecMag(LSL_Types.Vector3 v) + public LSL_Float llVecMag(LSL_Vector v) { m_host.AddScriptLPS(1); - return LSL_Types.Vector3.Mag(v); + return LSL_Vector.Mag(v); } - public LSL_Types.Vector3 llVecNorm(LSL_Types.Vector3 v) + public LSL_Vector llVecNorm(LSL_Vector v) { m_host.AddScriptLPS(1); - double mag = LSL_Types.Vector3.Mag(v); - LSL_Types.Vector3 nor = new LSL_Types.Vector3(); + double mag = LSL_Vector.Mag(v); + LSL_Vector nor = new LSL_Vector(); nor.x = v.x / mag; nor.y = v.y / mag; nor.z = v.z / mag; return nor; } - public double llVecDist(LSL_Types.Vector3 a, LSL_Types.Vector3 b) + public LSL_Float llVecDist(LSL_Vector a, LSL_Vector b) { m_host.AddScriptLPS(1); double dx = a.x - b.x; @@ -350,23 +345,23 @@ namespace OpenSim.Region.ScriptEngine.Common // Old implementation of llRot2Euler, now normalized - public LSL_Types.Vector3 llRot2Euler(LSL_Types.Quaternion r) + public LSL_Vector llRot2Euler(LSL_Rotation r) { m_host.AddScriptLPS(1); //This implementation is from http://lslwiki.net/lslwiki/wakka.php?wakka=LibraryRotationFunctions. ckrinke - LSL_Types.Quaternion t = new LSL_Types.Quaternion(r.x * r.x, r.y * r.y, r.z * r.z, r.s * r.s); + LSL_Rotation t = new LSL_Rotation(r.x * r.x, r.y * r.y, r.z * r.z, r.s * r.s); double m = (t.x + t.y + t.z + t.s); - if (m == 0) return new LSL_Types.Vector3(); + if (m == 0) return new LSL_Vector(); double n = 2 * (r.y * r.s + r.x * r.z); double p = m * m - n * n; if (p > 0) - return new LSL_Types.Vector3(NormalizeAngle(Math.Atan2(2.0 * (r.x * r.s - r.y * r.z), (-t.x - t.y + t.z + t.s))), + return new LSL_Vector(NormalizeAngle(Math.Atan2(2.0 * (r.x * r.s - r.y * r.z), (-t.x - t.y + t.z + t.s))), NormalizeAngle(Math.Atan2(n, Math.Sqrt(p))), NormalizeAngle(Math.Atan2(2.0 * (r.z * r.s - r.x * r.y), (t.x - t.y - t.z + t.s)))); else if (n > 0) - return new LSL_Types.Vector3(0.0, Math.PI / 2, NormalizeAngle(Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z))); + return new LSL_Vector(0.0, Math.PI / 2, NormalizeAngle(Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z))); else - return new LSL_Types.Vector3(0.0, -Math.PI / 2, NormalizeAngle(Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z))); + return new LSL_Vector(0.0, -Math.PI / 2, NormalizeAngle(Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z))); } /* From wiki: @@ -414,7 +409,7 @@ namespace OpenSim.Region.ScriptEngine.Common * Apparently in some cases this is better from a numerical precision perspective? */ - public LSL_Types.Quaternion llEuler2Rot(LSL_Types.Vector3 v) + public LSL_Rotation llEuler2Rot(LSL_Vector v) { m_host.AddScriptLPS(1); @@ -432,10 +427,10 @@ namespace OpenSim.Region.ScriptEngine.Common z = s1*s2*c3+c1*c2*s3; s = c1*c2*c3-s1*s2*s3; - return new LSL_Types.Quaternion(x, y, z, s); + return new LSL_Rotation(x, y, z, s); } - public LSL_Types.Quaternion llAxes2Rot(LSL_Types.Vector3 fwd, LSL_Types.Vector3 left, LSL_Types.Vector3 up) + public LSL_Rotation llAxes2Rot(LSL_Vector fwd, LSL_Vector left, LSL_Vector up) { m_host.AddScriptLPS(1); double x, y, z, s; @@ -468,7 +463,7 @@ namespace OpenSim.Region.ScriptEngine.Common if (f == 5) { z = -z; } if (f == 6) { y = -y; } - LSL_Types.Quaternion result = new LSL_Types.Quaternion(x, y, z, s); + LSL_Rotation result = new LSL_Rotation(x, y, z, s); // a hack to correct a few questionable angles :( if (llVecDist(llRot2Fwd(result), fwd) > 0.001 || llVecDist(llRot2Left(result), left) > 0.001) @@ -477,7 +472,7 @@ namespace OpenSim.Region.ScriptEngine.Common return result; } - public LSL_Types.Vector3 llRot2Fwd(LSL_Types.Quaternion r) + public LSL_Vector llRot2Fwd(LSL_Rotation r) { m_host.AddScriptLPS(1); @@ -499,10 +494,10 @@ namespace OpenSim.Region.ScriptEngine.Common x = r.x * r.x - r.y * r.y - r.z * r.z + r.s * r.s; y = 2 * (r.x * r.y + r.z * r.s); z = 2 * (r.x * r.z - r.y * r.s); - return (new LSL_Types.Vector3(x, y, z)); + return (new LSL_Vector(x, y, z)); } - public LSL_Types.Vector3 llRot2Left(LSL_Types.Quaternion r) + public LSL_Vector llRot2Left(LSL_Rotation r) { m_host.AddScriptLPS(1); @@ -524,10 +519,10 @@ namespace OpenSim.Region.ScriptEngine.Common x = 2 * (r.x * r.y - r.z * r.s); y = -r.x * r.x + r.y * r.y - r.z * r.z + r.s * r.s; z = 2 * (r.x * r.s + r.y * r.z); - return (new LSL_Types.Vector3(x, y, z)); + return (new LSL_Vector(x, y, z)); } - public LSL_Types.Vector3 llRot2Up(LSL_Types.Quaternion r) + public LSL_Vector llRot2Up(LSL_Rotation r) { m_host.AddScriptLPS(1); double x, y, z, m; @@ -548,18 +543,18 @@ namespace OpenSim.Region.ScriptEngine.Common x = 2 * (r.x * r.z + r.y * r.s); y = 2 * (-r.x * r.s + r.y * r.z); z = -r.x * r.x - r.y * r.y + r.z * r.z + r.s * r.s; - return (new LSL_Types.Vector3(x, y, z)); + return (new LSL_Vector(x, y, z)); } - public LSL_Types.Quaternion llRotBetween(LSL_Types.Vector3 a, LSL_Types.Vector3 b) + public LSL_Rotation llRotBetween(LSL_Vector a, LSL_Vector b) { //A and B should both be normalized m_host.AddScriptLPS(1); - double dotProduct = LSL_Types.Vector3.Dot(a, b); - LSL_Types.Vector3 crossProduct = LSL_Types.Vector3.Cross(a, b); - double magProduct = LSL_Types.Vector3.Mag(a) * LSL_Types.Vector3.Mag(b); + double dotProduct = LSL_Vector.Dot(a, b); + LSL_Vector crossProduct = LSL_Vector.Cross(a, b); + double magProduct = LSL_Vector.Mag(a) * LSL_Vector.Mag(b); double angle = Math.Acos(dotProduct / magProduct); - LSL_Types.Vector3 axis = LSL_Types.Vector3.Norm(crossProduct); + LSL_Vector axis = LSL_Vector.Norm(crossProduct); double s = Math.Sin(angle / 2); double x = axis.x * s; @@ -568,9 +563,9 @@ namespace OpenSim.Region.ScriptEngine.Common double w = Math.Cos(angle / 2); if (Double.IsNaN(x) || Double.IsNaN(y) || Double.IsNaN(z) || Double.IsNaN(w)) - return new LSL_Types.Quaternion(0.0f, 0.0f, 0.0f, 1.0f); + return new LSL_Rotation(0.0f, 0.0f, 0.0f, 1.0f); - return new LSL_Types.Quaternion((float)x, (float)y, (float)z, (float)w); + return new LSL_Rotation((float)x, (float)y, (float)z, (float)w); } public void llWhisper(int channelID, string text) @@ -632,7 +627,7 @@ namespace OpenSim.Region.ScriptEngine.Common wComm.DeliverMessage(ChatTypeEnum.Region, channelID, m_host.Name, m_host.UUID, text); } - public LSL_Types.LSLInteger llListen(int channelID, string name, string ID, string msg) + public LSL_Integer llListen(int channelID, string name, string ID, string msg) { m_host.AddScriptLPS(1); UUID keyID; @@ -707,10 +702,10 @@ namespace OpenSim.Region.ScriptEngine.Common return SensedObject.Name; } - public string llDetectedName(int number) + public LSL_String llDetectedName(int number) { m_host.AddScriptLPS(1); - LSL_Types.list SenseList = m_ScriptEngine.m_ASYNCLSLCommandManager.m_SensorRepeat.GetSensorList(m_localID, m_itemID); + LSL_List SenseList = m_ScriptEngine.m_ASYNCLSLCommandManager.m_SensorRepeat.GetSensorList(m_localID, m_itemID); if (SenseList != null) { if ((number >= 0) && (number < SenseList.Length)) @@ -750,7 +745,7 @@ namespace OpenSim.Region.ScriptEngine.Common public UUID uuidDetectedKey(int number) { - LSL_Types.list SenseList = m_ScriptEngine.m_ASYNCLSLCommandManager.m_SensorRepeat.GetSensorList(m_localID, m_itemID); + LSL_List SenseList = m_ScriptEngine.m_ASYNCLSLCommandManager.m_SensorRepeat.GetSensorList(m_localID, m_itemID); if (SenseList != null) { if ((number >= 0) && (number < SenseList.Length)) @@ -787,7 +782,7 @@ namespace OpenSim.Region.ScriptEngine.Common public EntityBase entityDetectedKey(int number) { - LSL_Types.list SenseList = m_ScriptEngine.m_ASYNCLSLCommandManager.m_SensorRepeat.GetSensorList(m_localID, m_itemID); + LSL_List SenseList = m_ScriptEngine.m_ASYNCLSLCommandManager.m_SensorRepeat.GetSensorList(m_localID, m_itemID); if (SenseList != null) { if ((number >= 0) && (number < SenseList.Length)) @@ -834,7 +829,7 @@ namespace OpenSim.Region.ScriptEngine.Common return null; } - public string llDetectedKey(int number) + public LSL_String llDetectedKey(int number) { m_host.AddScriptLPS(1); UUID SensedUUID = uuidDetectedKey(number); @@ -843,7 +838,7 @@ namespace OpenSim.Region.ScriptEngine.Common return SensedUUID.ToString(); } - public string llDetectedOwner(int number) + public LSL_String llDetectedOwner(int number) { // returns UUID of owner of object detected m_host.AddScriptLPS(1); @@ -869,7 +864,7 @@ namespace OpenSim.Region.ScriptEngine.Common } - public LSL_Types.LSLInteger llDetectedType(int number) + public LSL_Integer llDetectedType(int number) { m_host.AddScriptLPS(1); EntityBase SensedObject = entityDetectedKey(number); @@ -878,7 +873,7 @@ namespace OpenSim.Region.ScriptEngine.Common int mask = 0; UUID SensedUUID = uuidDetectedKey(number); - LSL_Types.Vector3 ZeroVector = new LSL_Types.Vector3(0, 0, 0); + LSL_Vector ZeroVector = new LSL_Vector(0, 0, 0); if (World.GetScenePresence(SensedUUID) != null) mask |= 0x01; // actor if (SensedObject.Velocity.Equals(ZeroVector)) @@ -889,71 +884,71 @@ namespace OpenSim.Region.ScriptEngine.Common return mask; } - public LSL_Types.Vector3 llDetectedPos(int number) + public LSL_Vector llDetectedPos(int number) { m_host.AddScriptLPS(1); EntityBase SensedObject = entityDetectedKey(number); if (SensedObject == null) - return new LSL_Types.Vector3(0, 0, 0); - return new LSL_Types.Vector3( + return new LSL_Vector(0, 0, 0); + return new LSL_Vector( SensedObject.AbsolutePosition.X, SensedObject.AbsolutePosition.Y, SensedObject.AbsolutePosition.Z); } - public LSL_Types.Vector3 llDetectedVel(int number) + public LSL_Vector llDetectedVel(int number) { m_host.AddScriptLPS(1); EntityBase SensedObject = entityDetectedKey(number); if (SensedObject == null) - return new LSL_Types.Vector3(0, 0, 0); - return new LSL_Types.Vector3( + return new LSL_Vector(0, 0, 0); + return new LSL_Vector( SensedObject.Velocity.X, SensedObject.Velocity.Y, SensedObject.Velocity.Z); } - public LSL_Types.Vector3 llDetectedGrab(int number) + public LSL_Vector llDetectedGrab(int number) { m_host.AddScriptLPS(1); EntityBase SensedObject = entityDetectedKey(number); if (SensedObject == null) - return new LSL_Types.Vector3(0, 0, 0); + return new LSL_Vector(0, 0, 0); - return new LSL_Types.Vector3( + return new LSL_Vector( SensedObject.AbsolutePosition.X, SensedObject.AbsolutePosition.Y, SensedObject.AbsolutePosition.Z); } - public LSL_Types.Quaternion llDetectedRot(int number) + public LSL_Rotation llDetectedRot(int number) { m_host.AddScriptLPS(1); EntityBase SensedObject = entityDetectedKey(number); if (SensedObject == null) - return new LSL_Types.Quaternion(); - return new LSL_Types.Quaternion( + return new LSL_Rotation(); + return new LSL_Rotation( SensedObject.Rotation.X, SensedObject.Rotation.Y, SensedObject.Rotation.Z, SensedObject.Rotation.W); } - public LSL_Types.LSLInteger llDetectedGroup(int number) + public LSL_Integer llDetectedGroup(int number) { m_host.AddScriptLPS(1); UUID SensedUUID = uuidDetectedKey(number); if (SensedUUID == UUID.Zero) - return new LSL_Types.LSLInteger(0); + return new LSL_Integer(0); ScenePresence presence = World.GetScenePresence(SensedUUID); IClientAPI client = presence.ControllingClient; if (m_host.GroupID == client.ActiveGroupId) - return new LSL_Types.LSLInteger(1); + return new LSL_Integer(1); else - return new LSL_Types.LSLInteger(0); + return new LSL_Integer(0); } - public LSL_Types.LSLInteger llDetectedLinkNumber(int number) + public LSL_Integer llDetectedLinkNumber(int number) { m_host.AddScriptLPS(1); EntityBase SensedObject = entityDetectedKey(number); @@ -962,13 +957,55 @@ namespace OpenSim.Region.ScriptEngine.Common return m_host.LinkNum; } + public LSL_Vector llDetectedTouchBinormal(int index) + { + m_host.AddScriptLPS(1); + NotImplemented("llDetectedTouchBinormal"); + return new LSL_Vector(); + } + + public LSL_Integer llDetectedTouchFace(int index) + { + m_host.AddScriptLPS(1); + NotImplemented("llDetectedTouchFace"); + return new LSL_Integer(0); + } + + public LSL_Vector llDetectedTouchNormal(int index) + { + m_host.AddScriptLPS(1); + NotImplemented("llDetectedTouchNormal"); + return new LSL_Vector(); + } + + public LSL_Vector llDetectedTouchPos(int index) + { + m_host.AddScriptLPS(1); + NotImplemented("llDetectedTouchPos"); + return new LSL_Vector(); + } + + public LSL_Vector llDetectedTouchST(int index) + { + m_host.AddScriptLPS(1); + NotImplemented("llDetectedTouchST"); + return new LSL_Vector(); + } + + public LSL_Vector llDetectedTouchUV(int index) + { + m_host.AddScriptLPS(1); + NotImplemented("llDetectedTouchUV"); + return new LSL_Vector(); + } + public void llDie() { m_host.AddScriptLPS(1); World.DeleteSceneObject(m_host.ParentGroup); } - public double llGround(LSL_Types.Vector3 offset) + public LSL_Float llGround(LSL_Vector offset) { m_host.AddScriptLPS(1); int x = (int)(m_host.OffsetPosition.X + offset.x); @@ -976,16 +1013,16 @@ namespace OpenSim.Region.ScriptEngine.Common return World.GetLandHeight(x, y); } - public double llCloud(LSL_Types.Vector3 offset) + public LSL_Float llCloud(LSL_Vector offset) { m_host.AddScriptLPS(1); return 0; } - public LSL_Types.Vector3 llWind(LSL_Types.Vector3 offset) + public LSL_Vector llWind(LSL_Vector offset) { m_host.AddScriptLPS(1); - return new LSL_Types.Vector3(); + return new LSL_Vector(); } public void llSetStatus(int status, int value) @@ -1076,7 +1113,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llGetStatus(int status) + public LSL_Integer llGetStatus(int status) { m_host.AddScriptLPS(1); // Console.WriteLine(m_host.ToString() + " status is " + m_host.GetEffectiveObjectFlags().ToString()); @@ -1136,13 +1173,13 @@ namespace OpenSim.Region.ScriptEngine.Common return 0; } - public void llSetScale(LSL_Types.Vector3 scale) + public void llSetScale(LSL_Vector scale) { m_host.AddScriptLPS(1); SetScale(m_host, scale); } - private void SetScale(SceneObjectPart part, LSL_Types.Vector3 scale) + private void SetScale(SceneObjectPart part, LSL_Vector scale) { // TODO: this needs to trigger a persistance save as well @@ -1172,24 +1209,31 @@ namespace OpenSim.Region.ScriptEngine.Common part.SendFullUpdateToAllClients(); } - public LSL_Types.Vector3 llGetScale() + public LSL_Vector llGetScale() + { + m_host.AddScriptLPS(1); + return new LSL_Vector(m_host.Scale.X, m_host.Scale.Y, m_host.Scale.Z); + } + + public void llSetClickAction(int action) { m_host.AddScriptLPS(1); - return new LSL_Types.Vector3(m_host.Scale.X, m_host.Scale.Y, m_host.Scale.Z); + NotImplemented("llSetClickAction"); + return; } - public void llSetColor(LSL_Types.Vector3 color, int face) + public void llSetColor(LSL_Vector color, int face) { m_host.AddScriptLPS(1); SetColor(m_host, color, face); } - private void SetColor(SceneObjectPart part, LSL_Types.Vector3 color, int face) + private void SetColor(SceneObjectPart part, LSL_Vector color, int face) { Primitive.TextureEntry tex = part.Shape.Textures; Color4 texcolor; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { texcolor = tex.CreateFace((uint)face).RGBA; texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f); @@ -1199,9 +1243,9 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - else if (face == -1) + else if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (uint i = 0; i < 32; i++) + for (uint i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1225,16 +1269,16 @@ namespace OpenSim.Region.ScriptEngine.Common public void SetGlow(SceneObjectPart part, int face, float glow) { Primitive.TextureEntry tex = part.Shape.Textures; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { tex.CreateFace((uint) face); tex.FaceTextures[face].Glow = glow; part.UpdateTexture(tex); return; } - else if (face == -1) + else if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (uint i = 0; i < 32; i++) + for (uint i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1272,7 +1316,7 @@ namespace OpenSim.Region.ScriptEngine.Common } Primitive.TextureEntry tex = part.Shape.Textures; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { tex.CreateFace((uint) face); tex.FaceTextures[face].Shiny = sval; @@ -1280,9 +1324,9 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - else if (face == -1) + else if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (uint i = 0; i < 32; i++) + for (uint i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1300,16 +1344,16 @@ namespace OpenSim.Region.ScriptEngine.Common public void SetFullBright(SceneObjectPart part, int face, bool bright) { Primitive.TextureEntry tex = part.Shape.Textures; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { tex.CreateFace((uint) face); tex.FaceTextures[face].Fullbright = bright; part.UpdateTexture(tex); return; } - else if (face == -1) + else if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (uint i = 0; i < 32; i++) + for (uint i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1322,19 +1366,28 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public double llGetAlpha(int face) + public LSL_Float llGetAlpha(int face) { m_host.AddScriptLPS(1); - Primitive.TextureEntry tex = m_host.Shape.Textures; - if (face == -1) // TMP: Until we can determine number of sides, ALL_SIDES (-1) will return default color + return GetAlpha(m_host, face); + } + + private LSL_Float GetAlpha(SceneObjectPart part, int face) + { + Primitive.TextureEntry tex = part.Shape.Textures; + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - return (double)((tex.DefaultTexture.RGBA.A * 255) / 255); + int i; + double sum = 0.0; + for (i = 0 ; i < GetNumberOfSides(part) ; i++) + sum += (double)tex.GetFace((uint)i).RGBA.A; + return sum; } - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { - return (double)((tex.GetFace((uint)face).RGBA.A * 255) / 255); + return (double)tex.GetFace((uint)face).RGBA.A; } - return 0; + return 0.0; } public void llSetAlpha(double alpha, int face) @@ -1348,7 +1401,7 @@ namespace OpenSim.Region.ScriptEngine.Common { Primitive.TextureEntry tex = part.Shape.Textures; Color4 texcolor; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { texcolor = tex.CreateFace((uint)face).RGBA; texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f); @@ -1356,9 +1409,9 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - else if (face == -1) + else if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (int i = 0; i < 32; i++) + for (int i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1389,7 +1442,7 @@ namespace OpenSim.Region.ScriptEngine.Common /// /// private void SetFlexi(SceneObjectPart part, bool flexi, int softness, float gravity, float friction, - float wind, float tension, LSL_Types.Vector3 Force) + float wind, float tension, LSL_Vector Force) { if (part == null) return; @@ -1447,7 +1500,7 @@ namespace OpenSim.Region.ScriptEngine.Common /// /// /// - private void SetPointLight(SceneObjectPart part, bool light, LSL_Types.Vector3 color, float intensity, float radius, float falloff) + private void SetPointLight(SceneObjectPart part, bool light, LSL_Vector color, float intensity, float radius, float falloff) { if (part == null) return; @@ -1471,31 +1524,46 @@ namespace OpenSim.Region.ScriptEngine.Common part.ScheduleFullUpdate(); } - public LSL_Types.Vector3 llGetColor(int face) + public LSL_Vector llGetColor(int face) { m_host.AddScriptLPS(1); - Primitive.TextureEntry tex = m_host.Shape.Textures; + return GetColor(m_host, face); + } + + private LSL_Vector GetColor(SceneObjectPart part, int face) + { + Primitive.TextureEntry tex = part.Shape.Textures; Color4 texcolor; - LSL_Types.Vector3 rgb; - if (face == -1) // TMP: Until we can determine number of sides, ALL_SIDES (-1) will return default color + LSL_Vector rgb = new LSL_Vector(); + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - texcolor = tex.DefaultTexture.RGBA; - rgb.x = (255 - (texcolor.R * 255)) / 255; - rgb.y = (255 - (texcolor.G * 255)) / 255; - rgb.z = (255 - (texcolor.B * 255)) / 255; + int i; + + for (i = 0 ; i < GetNumberOfSides(part) ; i++) + { + texcolor = tex.GetFace((uint)i).RGBA; + rgb.x += texcolor.R; + rgb.y += texcolor.G; + rgb.z += texcolor.B; + } + + rgb.x /= (float)GetNumberOfSides(part); + rgb.y /= (float)GetNumberOfSides(part); + rgb.z /= (float)GetNumberOfSides(part); + return rgb; } - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { texcolor = tex.GetFace((uint)face).RGBA; - rgb.x = (255 - (texcolor.R * 255)) / 255; - rgb.y = (255 - (texcolor.G * 255)) / 255; - rgb.z = (255 - (texcolor.B * 255)) / 255; + rgb.x = texcolor.R; + rgb.y = texcolor.G; + rgb.z = texcolor.B; return rgb; } else { - return new LSL_Types.Vector3(); + return new LSL_Vector(); } } @@ -1520,7 +1588,7 @@ namespace OpenSim.Region.ScriptEngine.Common Primitive.TextureEntry tex = part.Shape.Textures; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { Primitive.TextureEntryFace texface = tex.CreateFace((uint)face); texface.TextureID = textureID; @@ -1528,9 +1596,9 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - else if (face == -1) + else if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (uint i = 0; i < 32; i++) + for (uint i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1554,7 +1622,7 @@ namespace OpenSim.Region.ScriptEngine.Common private void ScaleTexture(SceneObjectPart part, double u, double v, int face) { Primitive.TextureEntry tex = part.Shape.Textures; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { Primitive.TextureEntryFace texface = tex.CreateFace((uint)face); texface.RepeatU = (float)u; @@ -1563,9 +1631,9 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - if (face == -1) + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (int i = 0; i < 32; i++) + for (int i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1590,7 +1658,7 @@ namespace OpenSim.Region.ScriptEngine.Common private void OffsetTexture(SceneObjectPart part, double u, double v, int face) { Primitive.TextureEntry tex = part.Shape.Textures; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { Primitive.TextureEntryFace texface = tex.CreateFace((uint)face); texface.OffsetU = (float)u; @@ -1599,9 +1667,9 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - if (face == -1) + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (int i = 0; i < 32; i++) + for (int i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1626,7 +1694,7 @@ namespace OpenSim.Region.ScriptEngine.Common private void RotateTexture(SceneObjectPart part, double rotation, int face) { Primitive.TextureEntry tex = part.Shape.Textures; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { Primitive.TextureEntryFace texface = tex.CreateFace((uint)face); texface.Rotation = (float)rotation; @@ -1634,9 +1702,9 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - if (face == -1) + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { - for (int i = 0; i < 32; i++) + for (int i = 0; i < GetNumberOfSides(part); i++) { if (tex.FaceTextures[i] != null) { @@ -1649,15 +1717,20 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public string llGetTexture(int face) + public LSL_String llGetTexture(int face) { m_host.AddScriptLPS(1); - Primitive.TextureEntry tex = m_host.Shape.Textures; - if (face == -1) + return GetTexture(m_host, face); + } + + private LSL_String GetTexture(SceneObjectPart part, int face) + { + Primitive.TextureEntry tex = part.Shape.Textures; + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { face = 0; } - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(part)) { Primitive.TextureEntryFace texface; texface = tex.GetFace((uint)face); @@ -1669,7 +1742,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public void llSetPos(LSL_Types.Vector3 pos) + public void llSetPos(LSL_Vector pos) { m_host.AddScriptLPS(1); @@ -1678,10 +1751,10 @@ namespace OpenSim.Region.ScriptEngine.Common ScriptSleep(200); } - private void SetPos(SceneObjectPart part, LSL_Types.Vector3 targetPos) + private void SetPos(SceneObjectPart part, LSL_Vector targetPos) { // Capped movemment if distance > 10m (http://wiki.secondlife.com/wiki/LlSetPos) - LSL_Types.Vector3 currentPos = llGetLocalPos(); + LSL_Vector currentPos = llGetLocalPos(); if (llVecDist(currentPos, targetPos) > 10.0f * m_distanceFactor) { targetPos = currentPos + m_distanceFactor * 10.0f * llVecNorm(targetPos - currentPos); @@ -1697,32 +1770,32 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.Vector3 llGetPos() + public LSL_Vector llGetPos() { m_host.AddScriptLPS(1); - return new LSL_Types.Vector3(m_host.AbsolutePosition.X, + return new LSL_Vector(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y, m_host.AbsolutePosition.Z); } - public LSL_Types.Vector3 llGetLocalPos() + public LSL_Vector llGetLocalPos() { m_host.AddScriptLPS(1); if (m_host.ParentID != 0) { - return new LSL_Types.Vector3(m_host.OffsetPosition.X, + return new LSL_Vector(m_host.OffsetPosition.X, m_host.OffsetPosition.Y, m_host.OffsetPosition.Z); } else { - return new LSL_Types.Vector3(m_host.AbsolutePosition.X, + return new LSL_Vector(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y, m_host.AbsolutePosition.Z); } } - public void llSetRot(LSL_Types.Quaternion rot) + public void llSetRot(LSL_Rotation rot) { m_host.AddScriptLPS(1); @@ -1731,31 +1804,27 @@ namespace OpenSim.Region.ScriptEngine.Common ScriptSleep(200); } - private void SetRot(SceneObjectPart part, LSL_Types.Quaternion rot) + private void SetRot(SceneObjectPart part, LSL_Rotation rot) { part.UpdateRotation(new Quaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s)); // Update rotation does not move the object in the physics scene if it's a linkset. part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition; } - public LSL_Types.Quaternion llGetRot() + public LSL_Rotation llGetRot() { m_host.AddScriptLPS(1); Quaternion q = m_host.RotationOffset; - return new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W); + return new LSL_Rotation(q.X, q.Y, q.Z, q.W); } - public LSL_Types.Quaternion llGetLocalRot() + public LSL_Rotation llGetLocalRot() { m_host.AddScriptLPS(1); - return new LSL_Types.Quaternion( - m_host.RotationOffset.X, - m_host.RotationOffset.Y, - m_host.RotationOffset.Z, - m_host.RotationOffset.W); + return new LSL_Rotation(m_host.RotationOffset.X, m_host.RotationOffset.Y, m_host.RotationOffset.Z, m_host.RotationOffset.W); } - public void llSetForce(LSL_Types.Vector3 force, int local) + public void llSetForce(LSL_Vector force, int local) { m_host.AddScriptLPS(1); @@ -1771,9 +1840,9 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.Vector3 llGetForce() + public LSL_Vector llGetForce() { - LSL_Types.Vector3 force = new LSL_Types.Vector3(0.0, 0.0, 0.0); + LSL_Vector force = new LSL_Vector(0.0, 0.0, 0.0); m_host.AddScriptLPS(1); @@ -1791,11 +1860,10 @@ namespace OpenSim.Region.ScriptEngine.Common return force; } - public LSL_Types.LSLInteger llTarget(LSL_Types.Vector3 position, double range) + public LSL_Integer llTarget(LSL_Vector position, double range) { m_host.AddScriptLPS(1); return m_host.registerTargetWaypoint(new Vector3((float)position.x, (float)position.y, (float)position.z), (float)range); - } public void llTargetRemove(int number) @@ -1804,7 +1872,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.unregisterTargetWaypoint(number); } - public LSL_Types.LSLInteger llRotTarget(LSL_Types.Quaternion rot, double error) + public LSL_Integer llRotTarget(LSL_Rotation rot, double error) { m_host.AddScriptLPS(1); NotImplemented("llRotTarget"); @@ -1817,7 +1885,7 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llRotTargetRemove"); } - public void llMoveToTarget(LSL_Types.Vector3 target, double tau) + public void llMoveToTarget(LSL_Vector target, double tau) { m_host.AddScriptLPS(1); m_host.MoveToTarget(new Vector3((float)target.x, (float)target.y, (float)target.z), (float)tau); @@ -1829,7 +1897,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.StopMoveToTarget(); } - public void llApplyImpulse(LSL_Types.Vector3 force, int local) + public void llApplyImpulse(LSL_Vector force, int local) { m_host.AddScriptLPS(1); //No energy force yet @@ -1844,62 +1912,62 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.ApplyImpulse(new Vector3((float)force.x, (float)force.y, (float)force.z), local != 0); } - public void llApplyRotationalImpulse(LSL_Types.Vector3 force, int local) + public void llApplyRotationalImpulse(LSL_Vector force, int local) { m_host.AddScriptLPS(1); NotImplemented("llApplyRotationalImpulse"); } - public void llSetTorque(LSL_Types.Vector3 torque, int local) + public void llSetTorque(LSL_Vector torque, int local) { m_host.AddScriptLPS(1); NotImplemented("llSetTorque"); } - public LSL_Types.Vector3 llGetTorque() + public LSL_Vector llGetTorque() { m_host.AddScriptLPS(1); NotImplemented("llGetTorque"); - return new LSL_Types.Vector3(); + return new LSL_Vector(); } - public void llSetForceAndTorque(LSL_Types.Vector3 force, LSL_Types.Vector3 torque, int local) + public void llSetForceAndTorque(LSL_Vector force, LSL_Vector torque, int local) { m_host.AddScriptLPS(1); NotImplemented("llSetForceAndTorque"); } - public LSL_Types.Vector3 llGetVel() + public LSL_Vector llGetVel() { m_host.AddScriptLPS(1); - return new LSL_Types.Vector3(m_host.Velocity.X, m_host.Velocity.Y, m_host.Velocity.Z); + return new LSL_Vector(m_host.Velocity.X, m_host.Velocity.Y, m_host.Velocity.Z); } - public LSL_Types.Vector3 llGetAccel() + public LSL_Vector llGetAccel() { m_host.AddScriptLPS(1); - return new LSL_Types.Vector3(m_host.Acceleration.X, m_host.Acceleration.Y, m_host.Acceleration.Z); + return new LSL_Vector(m_host.Acceleration.X, m_host.Acceleration.Y, m_host.Acceleration.Z); } - public LSL_Types.Vector3 llGetOmega() + public LSL_Vector llGetOmega() { m_host.AddScriptLPS(1); - return new LSL_Types.Vector3(m_host.RotationalVelocity.X, m_host.RotationalVelocity.Y, m_host.RotationalVelocity.Z); + return new LSL_Vector(m_host.RotationalVelocity.X, m_host.RotationalVelocity.Y, m_host.RotationalVelocity.Z); } - public double llGetTimeOfDay() + public LSL_Float llGetTimeOfDay() { m_host.AddScriptLPS(1); return (double)(((DateTime.Now.TimeOfDay.TotalMilliseconds / 1000) % (3600 * 4)) * World.TimeDilation); } - public double llGetWallclock() + public LSL_Float llGetWallclock() { m_host.AddScriptLPS(1); return DateTime.Now.TimeOfDay.TotalSeconds; } - public double llGetTime() + public LSL_Float llGetTime() { m_host.AddScriptLPS(1); TimeSpan ScriptTime = DateTime.Now - m_timer; @@ -1912,7 +1980,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_timer = DateTime.Now; } - public double llGetAndResetTime() + public LSL_Float llGetAndResetTime() { m_host.AddScriptLPS(1); TimeSpan ScriptTime = DateTime.Now - m_timer; @@ -2017,7 +2085,7 @@ namespace OpenSim.Region.ScriptEngine.Common /// this more complicated than it might otherwise seem. /// - public string llGetSubString(string src, int start, int end) + public LSL_String llGetSubString(string src, int start, int end) { m_host.AddScriptLPS(1); @@ -2113,7 +2181,7 @@ namespace OpenSim.Region.ScriptEngine.Common /// i.e. end < start. /// - public string llDeleteSubString(string src, int start, int end) + public LSL_String llDeleteSubString(string src, int start, int end) { m_host.AddScriptLPS(1); @@ -2196,7 +2264,7 @@ namespace OpenSim.Region.ScriptEngine.Common /// string bound, with the result being a concatenation. /// - public string llInsertString(string dest, int index, string src) + public LSL_String llInsertString(string dest, int index, string src) { m_host.AddScriptLPS(1); @@ -2234,19 +2302,19 @@ namespace OpenSim.Region.ScriptEngine.Common } - public string llToUpper(string src) + public LSL_String llToUpper(string src) { m_host.AddScriptLPS(1); return src.ToUpper(); } - public string llToLower(string src) + public LSL_String llToLower(string src) { m_host.AddScriptLPS(1); return src.ToLower(); } - public LSL_Types.LSLInteger llGiveMoney(string destination, int amount) + public LSL_Integer llGiveMoney(string destination, int amount) { UUID invItemID=InventorySelf(); if (invItemID == UUID.Zero) @@ -2315,7 +2383,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(100); } - public void llRezAtRoot(string inventory, LSL_Types.Vector3 pos, LSL_Types.Vector3 vel, LSL_Types.Quaternion rot, int param) + public void llRezAtRoot(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param) { m_host.AddScriptLPS(1); if (Double.IsNaN(rot.x) || Double.IsNaN(rot.y) || Double.IsNaN(rot.z) || Double.IsNaN(rot.s)) @@ -2363,11 +2431,11 @@ namespace OpenSim.Region.ScriptEngine.Common // objects rezzed with this method are die_at_edge by default. new_group.RootPart.SetDieAtEdge(true); - m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(m_localID, m_itemID, "object_rez", EventQueueManager.llDetectNull, new Object[] { new LSL_Types.LSLString(new_group.RootPart.ToString()) }); + m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(m_localID, m_itemID, "object_rez", EventQueueManager.llDetectNull, new Object[] { new LSL_String(new_group.RootPart.ToString()) }); float groupmass = new_group.GetMass(); //Recoil. - llApplyImpulse(new LSL_Types.Vector3(llvel.X * groupmass, llvel.Y * groupmass, llvel.Z * groupmass), 0); + llApplyImpulse(new LSL_Vector(llvel.X * groupmass, llvel.Y * groupmass, llvel.Z * groupmass), 0); found = true; // Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay) ScriptSleep((int)((groupmass * velmag) / 10)); @@ -2379,12 +2447,12 @@ namespace OpenSim.Region.ScriptEngine.Common llSay(0, "Could not find object " + inventory); } - public void llRezObject(string inventory, LSL_Types.Vector3 pos, LSL_Types.Vector3 vel, LSL_Types.Quaternion rot, int param) + public void llRezObject(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param) { llRezAtRoot(inventory, pos, vel, rot, param); } - public void llLookAt(LSL_Types.Vector3 target, double strength, double damping) + public void llLookAt(LSL_Vector target, double strength, double damping) { m_host.AddScriptLPS(1); NotImplemented("llLookAt"); @@ -2409,7 +2477,7 @@ namespace OpenSim.Region.ScriptEngine.Common Thread.Sleep((int)(sec * 1000)); } - public double llGetMass() + public LSL_Float llGetMass() { m_host.AddScriptLPS(1); return m_host.GetMass(); @@ -2495,7 +2563,7 @@ namespace OpenSim.Region.ScriptEngine.Common Deprecated("llReleaseCamera"); } - public string llGetOwner() + public LSL_String llGetOwner() { m_host.AddScriptLPS(1); @@ -2544,6 +2612,7 @@ namespace OpenSim.Region.ScriptEngine.Common msg.RegionID = World.RegionInfo.RegionID.Guid;//RegionID.Guid; msg.binaryBucket = new byte[0];// binaryBucket; World.TriggerGridInstantMessage(msg, InstantMessageReceiver.IMModule); + // ScriptSleep(2000); } public void llEmail(string address, string subject, string message) @@ -2563,7 +2632,7 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llGetNextEmail"); } - public string llGetKey() + public LSL_String llGetKey() { m_host.AddScriptLPS(1); return m_host.UUID.ToString(); @@ -2607,13 +2676,13 @@ namespace OpenSim.Region.ScriptEngine.Common Deprecated("llSoundPreload"); } - public void llRotLookAt(LSL_Types.Quaternion target, double strength, double damping) + public void llRotLookAt(LSL_Rotation target, double strength, double damping) { m_host.AddScriptLPS(1); NotImplemented("llRotLookAt"); } - public LSL_Types.LSLInteger llStringLength(string str) + public LSL_Integer llStringLength(string str) { m_host.AddScriptLPS(1); if (str.Length > 0) @@ -2697,22 +2766,23 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llStopPointAt"); } - public void llTargetOmega(LSL_Types.Vector3 axis, double spinrate, double gain) + public void llTargetOmega(LSL_Vector axis, double spinrate, double gain) { m_host.AddScriptLPS(1); m_host.RotationalVelocity = new Vector3((float)(axis.x * spinrate), (float)(axis.y * spinrate), (float)(axis.z * spinrate)); m_host.AngularVelocity = new Vector3((float)(axis.x * spinrate), (float)(axis.y * spinrate), (float)(axis.z * spinrate)); m_host.ScheduleTerseUpdate(); m_host.SendTerseUpdateToAllClients(); + m_host.ParentGroup.HasGroupChanged = true; } - public LSL_Types.LSLInteger llGetStartParameter() + public LSL_Integer llGetStartParameter() { // This is not handled here return 0; } - public void llGodLikeRezObject(string inventory, LSL_Types.Vector3 pos) + public void llGodLikeRezObject(string inventory, LSL_Vector pos) { m_host.AddScriptLPS(1); NotImplemented("llGodLikeRezObject"); @@ -2732,15 +2802,20 @@ namespace OpenSim.Region.ScriptEngine.Common if (agentID == UUID.Zero || perm == 0) // Releasing permissions { + llReleaseControls(); + m_host.TaskInventory[invItemID].PermsGranter=UUID.Zero; m_host.TaskInventory[invItemID].PermsMask=0; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( - m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Types.LSLInteger(0)}); + m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Integer(0)}); return; } + if ( m_host.TaskInventory[invItemID].PermsGranter != agentID || (perm & BuiltIn_Commands_BaseClass.PERMISSION_TAKE_CONTROLS) == 0) + llReleaseControls(); + m_host.AddScriptLPS(1); if (m_host.ParentGroup.RootPart.IsAttachment && agent == m_host.ParentGroup.RootPart.AttachedAvatar) @@ -2757,7 +2832,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.TaskInventory[invItemID].PermsMask=perm; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( - m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Types.LSLInteger(perm)}); + m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Integer(perm)}); return; } @@ -2775,7 +2850,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.TaskInventory[invItemID].PermsMask=perm; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( - m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Types.LSLInteger(perm)}); + m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Integer(perm)}); return; } @@ -2803,7 +2878,7 @@ namespace OpenSim.Region.ScriptEngine.Common // Requested agent is not in range, refuse perms m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( - m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Types.LSLInteger(0)}); + m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Integer(0)}); } void handleScriptAnswer(IClientAPI client, UUID taskID, UUID itemID, int answer) @@ -2821,10 +2896,10 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.TaskInventory[invItemID].PermsMask=answer; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( - m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Types.LSLInteger(answer)}); + m_localID, m_itemID, "run_time_permissions", EventQueueManager.llDetectNull, new Object[] {new LSL_Integer(answer)}); } - public string llGetPermissionsKey() + public LSL_String llGetPermissionsKey() { m_host.AddScriptLPS(1); @@ -2839,7 +2914,7 @@ namespace OpenSim.Region.ScriptEngine.Common return UUID.Zero.ToString(); } - public LSL_Types.LSLInteger llGetPermissions() + public LSL_Integer llGetPermissions() { m_host.AddScriptLPS(1); @@ -2854,7 +2929,7 @@ namespace OpenSim.Region.ScriptEngine.Common return 0; } - public LSL_Types.LSLInteger llGetLinkNumber() + public LSL_Integer llGetLinkNumber() { m_host.AddScriptLPS(1); @@ -2868,7 +2943,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face) + public void llSetLinkColor(int linknumber, LSL_Vector color, int face) { m_host.AddScriptLPS(1); SceneObjectPart part = m_host.ParentGroup.GetLinkNumPart(linknumber); @@ -2991,6 +3066,8 @@ namespace OpenSim.Region.ScriptEngine.Common } parentPrim.TriggerScriptChangedEvent(Changed.LINK); parentPrim.RootPart.AddFlag(PrimFlags.CreateSelected); + parentPrim.HasGroupChanged = true; + parentPrim.ScheduleGroupForFullUpdate(); parentPrim.GetProperties(client); ScriptSleep(1000); @@ -3067,13 +3144,14 @@ namespace OpenSim.Region.ScriptEngine.Common SceneObjectGroup parentPrim = m_host.ParentGroup; List parts = new List(parentPrim.Children.Values); parts.Remove(parentPrim.RootPart); - foreach (SceneObjectPart part in parts) { + foreach (SceneObjectPart part in parts) + { parentPrim.DelinkFromGroup(part.LocalId, true); parentPrim.TriggerScriptChangedEvent(Changed.LINK); } } - public string llGetLinkKey(int linknum) + public LSL_String llGetLinkKey(int linknum) { m_host.AddScriptLPS(1); SceneObjectPart part = m_host.ParentGroup.GetLinkNumPart(linknum); @@ -3087,7 +3165,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public string llGetLinkName(int linknum) + public LSL_String llGetLinkName(int linknum) { m_host.AddScriptLPS(1); SceneObjectPart part = m_host.ParentGroup.GetLinkNumPart(linknum); @@ -3101,7 +3179,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llGetInventoryNumber(int type) + public LSL_Integer llGetInventoryNumber(int type) { m_host.AddScriptLPS(1); int count = 0; @@ -3115,7 +3193,7 @@ namespace OpenSim.Region.ScriptEngine.Common return count; } - public string llGetInventoryName(int type, int number) + public LSL_String llGetInventoryName(int type, int number) { m_host.AddScriptLPS(1); ArrayList keys = new ArrayList(); @@ -3172,7 +3250,7 @@ namespace OpenSim.Region.ScriptEngine.Common // assume it is not running. } - public double llGetEnergy() + public LSL_Float llGetEnergy() { m_host.AddScriptLPS(1); // TODO: figure out real energy value @@ -3236,16 +3314,17 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public void llSetText(string text, LSL_Types.Vector3 color, double alpha) + public void llSetText(string text, LSL_Vector color, double alpha) { m_host.AddScriptLPS(1); Vector3 av3 = new Vector3(Util.Clip((float)color.x, 0.0f, 1.0f), Util.Clip((float)color.y, 0.0f, 1.0f), Util.Clip((float)color.z, 0.0f, 1.0f)); m_host.SetText(text, av3, Util.Clip((float)alpha, 0.0f, 1.0f)); + m_host.ParentGroup.HasGroupChanged = true; } - public double llWater(LSL_Types.Vector3 offset) + public LSL_Float llWater(LSL_Vector offset) { m_host.AddScriptLPS(1); return World.RegionInfo.RegionSettings.WaterHeight; @@ -3257,7 +3336,7 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llPassTouches"); } - public string llRequestAgentData(string id, int data) + public LSL_String llRequestAgentData(string id, int data) { m_host.AddScriptLPS(1); @@ -3310,7 +3389,7 @@ namespace OpenSim.Region.ScriptEngine.Common return tid.ToString(); } - public string llRequestInventoryData(string name) + public LSL_String llRequestInventoryData(string name) { m_host.AddScriptLPS(1); @@ -3372,6 +3451,12 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(5000); } + public void llTextBox(string avatar, string message, int chat_channel) + { + m_host.AddScriptLPS(1); + NotImplemented("llTextBox"); + } + public void llModifyLand(int action, int brush) { m_host.AddScriptLPS(1); @@ -3390,7 +3475,7 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llCollisionSprite"); } - public string llGetAnimation(string id) + public LSL_String llGetAnimation(string id) { m_host.AddScriptLPS(1); NotImplemented("llGetAnimation"); @@ -3427,7 +3512,7 @@ namespace OpenSim.Region.ScriptEngine.Common object[] resobj = new object[] { - new LSL_Types.LSLInteger(m_host.LinkNum), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) + new LSL_Integer(m_host.LinkNum), new LSL_Integer(num), new LSL_String(msg), new LSL_String(id) }; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( @@ -3451,7 +3536,7 @@ namespace OpenSim.Region.ScriptEngine.Common partItemID = item.ItemID; Object[] resobj = new object[] { - new LSL_Types.LSLInteger(m_host.LinkNum), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) + new LSL_Integer(m_host.LinkNum), new LSL_Integer(num), new LSL_String(msg), new LSL_String(id) }; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( @@ -3479,7 +3564,7 @@ namespace OpenSim.Region.ScriptEngine.Common partItemID = item.ItemID; Object[] resobj = new object[] { - new LSL_Types.LSLInteger(m_host.LinkNum), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) + new LSL_Integer(m_host.LinkNum), new LSL_Integer(num), new LSL_String(msg), new LSL_String(id) }; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( @@ -3509,7 +3594,7 @@ namespace OpenSim.Region.ScriptEngine.Common partItemID = item.ItemID; Object[] resobj = new object[] { - new LSL_Types.LSLInteger(m_host.LinkNum), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) + new LSL_Integer(m_host.LinkNum), new LSL_Integer(num), new LSL_String(msg), new LSL_String(id) }; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( @@ -3533,7 +3618,7 @@ namespace OpenSim.Region.ScriptEngine.Common object[] resobj = new object[] { - new LSL_Types.LSLInteger(m_host.LinkNum), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) + new LSL_Integer(m_host.LinkNum), new LSL_Integer(num), new LSL_String(msg), new LSL_String(id) }; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( @@ -3560,7 +3645,7 @@ namespace OpenSim.Region.ScriptEngine.Common partItemID = item.ItemID; Object[] resObjDef = new object[] { - new LSL_Types.LSLInteger(m_host.LinkNum), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) + new LSL_Integer(m_host.LinkNum), new LSL_Integer(num), new LSL_String(msg), new LSL_String(id) }; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( @@ -3578,7 +3663,7 @@ namespace OpenSim.Region.ScriptEngine.Common } - public void llPushObject(string target, LSL_Types.Vector3 impulse, LSL_Types.Vector3 ang_impulse, int local) + public void llPushObject(string target, LSL_Vector impulse, LSL_Vector ang_impulse, int local) { m_host.AddScriptLPS(1); SceneObjectPart targ = World.GetSceneObjectPart(target); @@ -3593,7 +3678,7 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llPassCollisions"); } - public string llGetScriptName() + public LSL_String llGetScriptName() { string result = String.Empty; @@ -3670,17 +3755,22 @@ namespace OpenSim.Region.ScriptEngine.Common } - public LSL_Types.LSLInteger llGetNumberOfSides() + public LSL_Integer llGetNumberOfSides() { m_host.AddScriptLPS(1); + return GetNumberOfSides(m_host); + } + + private int GetNumberOfSides(SceneObjectPart part) + { int ret = 0; bool hasCut; bool hasHollow; bool hasDimple; bool hasProfileCut; - int primType = getScriptPrimType(m_host.Shape); - hasCutHollowDimpleProfileCut(primType, m_host.Shape, out hasCut, out hasHollow, out hasDimple, out hasProfileCut); + int primType = getScriptPrimType(part.Shape); + hasCutHollowDimpleProfileCut(primType, part.Shape, out hasCut, out hasHollow, out hasDimple, out hasProfileCut); switch (primType) { @@ -3759,7 +3849,7 @@ namespace OpenSim.Region.ScriptEngine.Common // Xantor 29/apr/2008 // Returns rotation described by rotating angle radians about axis. // q = cos(a/2) + i (x * sin(a/2)) + j (y * sin(a/2)) + k (z * sin(a/2)) - public LSL_Types.Quaternion llAxisAngle2Rot(LSL_Types.Vector3 axis, double angle) + public LSL_Rotation llAxisAngle2Rot(LSL_Vector axis, double angle) { m_host.AddScriptLPS(1); @@ -3771,13 +3861,13 @@ namespace OpenSim.Region.ScriptEngine.Common y = axis.y * t; z = axis.z * t; - return new LSL_Types.Quaternion(x,y,z,s); + return new LSL_Rotation(x,y,z,s); } // Xantor 29/apr/2008 // converts a Quaternion to X,Y,Z axis rotations - public LSL_Types.Vector3 llRot2Axis(LSL_Types.Quaternion rot) + public LSL_Vector llRot2Axis(LSL_Rotation rot) { m_host.AddScriptLPS(1); double x,y,z; @@ -3809,13 +3899,13 @@ namespace OpenSim.Region.ScriptEngine.Common } - return new LSL_Types.Vector3(x,y,z); + return new LSL_Vector(x,y,z); } // Returns the angle of a quaternion (see llRot2Axis for the axis) - public double llRot2Angle(LSL_Types.Quaternion rot) + public LSL_Float llRot2Angle(LSL_Rotation rot) { m_host.AddScriptLPS(1); @@ -3837,27 +3927,27 @@ namespace OpenSim.Region.ScriptEngine.Common } - public double llAcos(double val) + public LSL_Float llAcos(double val) { m_host.AddScriptLPS(1); return (double)Math.Acos(val); } - public double llAsin(double val) + public LSL_Float llAsin(double val) { m_host.AddScriptLPS(1); return (double)Math.Asin(val); } // Xantor 30/apr/2008 - public double llAngleBetween(LSL_Types.Quaternion a, LSL_Types.Quaternion b) + public LSL_Float llAngleBetween(LSL_Rotation a, LSL_Rotation b) { m_host.AddScriptLPS(1); return (double) Math.Acos(a.x * b.x + a.y * b.y + a.z * b.z + a.s * b.s) * 2; } - public string llGetInventoryKey(string name) + public LSL_String llGetInventoryKey(string name) { m_host.AddScriptLPS(1); foreach (KeyValuePair inv in m_host.TaskInventory) @@ -3887,15 +3977,15 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.ParentGroup.RootPart.AllowedDrop = false; } - public LSL_Types.Vector3 llGetSunDirection() + public LSL_Vector llGetSunDirection() { m_host.AddScriptLPS(1); - LSL_Types.Vector3 SunDoubleVector3; + LSL_Vector SunDoubleVector3; Vector3 SunFloatVector3; // sunPosition estate setting is set in OpenSim.Region.Environment.Modules.SunModule - // have to convert from Vector3 (float) to LSL_Types.Vector3 (double) + // have to convert from Vector3 (float) to LSL_Vector (double) SunFloatVector3 = World.RegionInfo.RegionSettings.SunVector; SunDoubleVector3.x = (double)SunFloatVector3.X; SunDoubleVector3.y = (double)SunFloatVector3.Y; @@ -3904,26 +3994,38 @@ namespace OpenSim.Region.ScriptEngine.Common return SunDoubleVector3; } - public LSL_Types.Vector3 llGetTextureOffset(int face) + public LSL_Vector llGetTextureOffset(int face) { m_host.AddScriptLPS(1); - Primitive.TextureEntry tex = m_host.Shape.Textures; - LSL_Types.Vector3 offset; - if (face == -1) + return GetTextureOffset(m_host, face); + } + + private LSL_Vector GetTextureOffset(SceneObjectPart part, int face) + { + Primitive.TextureEntry tex = part.Shape.Textures; + LSL_Vector offset = new LSL_Vector(); + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { face = 0; } - offset.x = tex.GetFace((uint)face).OffsetU; - offset.y = tex.GetFace((uint)face).OffsetV; - offset.z = 0.0; - return offset; + if (face >= 0 && face < GetNumberOfSides(part)) + { + offset.x = tex.GetFace((uint)face).OffsetU; + offset.y = tex.GetFace((uint)face).OffsetV; + offset.z = 0.0; + return offset; + } + else + { + return offset; + } } - public LSL_Types.Vector3 llGetTextureScale(int side) + public LSL_Vector llGetTextureScale(int side) { m_host.AddScriptLPS(1); Primitive.TextureEntry tex = m_host.Shape.Textures; - LSL_Types.Vector3 scale; + LSL_Vector scale; if (side == -1) { side = 0; @@ -3934,24 +4036,36 @@ namespace OpenSim.Region.ScriptEngine.Common return scale; } - public double llGetTextureRot(int face) + public LSL_Float llGetTextureRot(int face) { m_host.AddScriptLPS(1); - Primitive.TextureEntry tex = m_host.Shape.Textures; + return GetTextureRot(m_host, face); + } + + private LSL_Float GetTextureRot(SceneObjectPart part, int face) + { + Primitive.TextureEntry tex = part.Shape.Textures; if (face == -1) { face = 0; } - return tex.GetFace((uint)face).Rotation; + if (face >= 0 && face < GetNumberOfSides(part)) + { + return tex.GetFace((uint)face).Rotation; + } + else + { + return 0.0; + } } - public LSL_Types.LSLInteger llSubStringIndex(string source, string pattern) + public LSL_Integer llSubStringIndex(string source, string pattern) { m_host.AddScriptLPS(1); return source.IndexOf(pattern); } - public string llGetOwnerKey(string id) + public LSL_String llGetOwnerKey(string id) { m_host.AddScriptLPS(1); UUID key = new UUID(); @@ -3976,14 +4090,14 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.Vector3 llGetCenterOfMass() + public LSL_Vector llGetCenterOfMass() { m_host.AddScriptLPS(1); NotImplemented("llGetCenterOfMass"); - return new LSL_Types.Vector3(); + return new LSL_Vector(); } - public LSL_Types.list llListSort(LSL_Types.list src, int stride, int ascending) + public LSL_List llListSort(LSL_List src, int stride, int ascending) { m_host.AddScriptLPS(1); @@ -3994,7 +4108,7 @@ namespace OpenSim.Region.ScriptEngine.Common return src.Sort(stride, ascending); } - public LSL_Types.LSLInteger llGetListLength(LSL_Types.list src) + public LSL_Integer llGetListLength(LSL_List src) { m_host.AddScriptLPS(1); @@ -4008,7 +4122,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llList2Integer(LSL_Types.list src, int index) + public LSL_Integer llList2Integer(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4021,12 +4135,12 @@ namespace OpenSim.Region.ScriptEngine.Common } try { - if (src.Data[index] is LSL_Types.LSLInteger) - return Convert.ToInt32(((LSL_Types.LSLInteger) src.Data[index]).value); - else if (src.Data[index] is LSL_Types.LSLFloat) - return Convert.ToInt32(((LSL_Types.LSLFloat) src.Data[index]).value); - else if (src.Data[index] is LSL_Types.LSLString) - return Convert.ToInt32(((LSL_Types.LSLString) src.Data[index]).m_string); + if (src.Data[index] is LSL_Integer) + return Convert.ToInt32(((LSL_Integer) src.Data[index]).value); + else if (src.Data[index] is LSL_Float) + return Convert.ToInt32(((LSL_Float) src.Data[index]).value); + else if (src.Data[index] is LSL_String) + return Convert.ToInt32(((LSL_String) src.Data[index]).m_string); return Convert.ToInt32(src.Data[index]); } catch (FormatException) @@ -4035,7 +4149,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public double osList2Double(LSL_Types.list src, int index) + public double osList2Double(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4046,16 +4160,16 @@ namespace OpenSim.Region.ScriptEngine.Common { return 0.0; } - if (src.Data[index] is LSL_Types.LSLInteger) - return Convert.ToDouble(((LSL_Types.LSLInteger) src.Data[index]).value); - else if (src.Data[index] is LSL_Types.LSLFloat) - return Convert.ToDouble(((LSL_Types.LSLFloat) src.Data[index]).value); - else if (src.Data[index] is LSL_Types.LSLString) - return Convert.ToDouble(((LSL_Types.LSLString) src.Data[index]).m_string); + if (src.Data[index] is LSL_Integer) + return Convert.ToDouble(((LSL_Integer) src.Data[index]).value); + else if (src.Data[index] is LSL_Float) + return Convert.ToDouble(((LSL_Float) src.Data[index]).value); + else if (src.Data[index] is LSL_String) + return Convert.ToDouble(((LSL_String) src.Data[index]).m_string); return Convert.ToDouble(src.Data[index]); } - public double llList2Float(LSL_Types.list src, int index) + public LSL_Float llList2Float(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4068,12 +4182,12 @@ namespace OpenSim.Region.ScriptEngine.Common } try { - if (src.Data[index] is LSL_Types.LSLInteger) - return Convert.ToDouble(((LSL_Types.LSLInteger) src.Data[index]).value); - else if (src.Data[index] is LSL_Types.LSLFloat) - return Convert.ToDouble(((LSL_Types.LSLFloat) src.Data[index]).value); - else if (src.Data[index] is LSL_Types.LSLString) - return Convert.ToDouble(((LSL_Types.LSLString) src.Data[index]).m_string); + if (src.Data[index] is LSL_Integer) + return Convert.ToDouble(((LSL_Integer) src.Data[index]).value); + else if (src.Data[index] is LSL_Float) + return Convert.ToDouble(((LSL_Float) src.Data[index]).value); + else if (src.Data[index] is LSL_String) + return Convert.ToDouble(((LSL_String) src.Data[index]).m_string); return Convert.ToDouble(src.Data[index]); } catch (FormatException) @@ -4082,7 +4196,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public string llList2String(LSL_Types.list src, int index) + public LSL_String llList2String(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4096,7 +4210,7 @@ namespace OpenSim.Region.ScriptEngine.Common return src.Data[index].ToString(); } - public string llList2Key(LSL_Types.list src, int index) + public LSL_String llList2Key(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4110,7 +4224,7 @@ namespace OpenSim.Region.ScriptEngine.Common return src.Data[index].ToString(); } - public LSL_Types.Vector3 llList2Vector(LSL_Types.list src, int index) + public LSL_Vector llList2Vector(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4119,19 +4233,19 @@ namespace OpenSim.Region.ScriptEngine.Common } if (index >= src.Length) { - return new LSL_Types.Vector3(0, 0, 0); + return new LSL_Vector(0, 0, 0); } - if (src.Data[index].GetType() == typeof(LSL_Types.Vector3)) + if (src.Data[index].GetType() == typeof(LSL_Vector)) { - return (LSL_Types.Vector3)src.Data[index]; + return (LSL_Vector)src.Data[index]; } else { - return new LSL_Types.Vector3(src.Data[index].ToString()); + return new LSL_Vector(src.Data[index].ToString()); } } - public LSL_Types.Quaternion llList2Rot(LSL_Types.list src, int index) + public LSL_Rotation llList2Rot(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4140,30 +4254,30 @@ namespace OpenSim.Region.ScriptEngine.Common } if (index >= src.Length) { - return new LSL_Types.Quaternion(0, 0, 0, 1); + return new LSL_Rotation(0, 0, 0, 1); } - if (src.Data[index].GetType() == typeof(LSL_Types.Quaternion)) + if (src.Data[index].GetType() == typeof(LSL_Rotation)) { - return (LSL_Types.Quaternion)src.Data[index]; + return (LSL_Rotation)src.Data[index]; } else { - return new LSL_Types.Quaternion(src.Data[index].ToString()); + return new LSL_Rotation(src.Data[index].ToString()); } } - public LSL_Types.list llList2List(LSL_Types.list src, int start, int end) + public LSL_List llList2List(LSL_List src, int start, int end) { m_host.AddScriptLPS(1); return src.GetSublist(start, end); } - public LSL_Types.list llDeleteSubList(LSL_Types.list src, int start, int end) + public LSL_List llDeleteSubList(LSL_List src, int start, int end) { return src.DeleteSublist(end, start); } - public LSL_Types.LSLInteger llGetListEntryType(LSL_Types.list src, int index) + public LSL_Integer llGetListEntryType(LSL_List src, int index) { m_host.AddScriptLPS(1); if (index < 0) @@ -4175,27 +4289,27 @@ namespace OpenSim.Region.ScriptEngine.Common return 0; } - if (src.Data[index] is Int32) + if (src.Data[index] is LSL_Integer || src.Data[index] is Int32) return 1; - if (src.Data[index] is Double) + if (src.Data[index] is LSL_Float || src.Data[index] is Single || src.Data[index] is Double) return 2; - if (src.Data[index] is String) + if (src.Data[index] is LSL_String || src.Data[index] is String) { UUID tuuid; if (UUID.TryParse(src.Data[index].ToString(), out tuuid)) { - return 3; + return 4; } else { - return 4; + return 3; } } - if (src.Data[index] is LSL_Types.Vector3) + if (src.Data[index] is LSL_Vector) return 5; - if (src.Data[index] is LSL_Types.Quaternion) + if (src.Data[index] is LSL_Rotation) return 6; - if (src.Data[index] is LSL_Types.list) + if (src.Data[index] is LSL_List) return 7; return 0; @@ -4208,7 +4322,7 @@ namespace OpenSim.Region.ScriptEngine.Common /// each comma. /// - public string llList2CSV(LSL_Types.list src) + public LSL_String llList2CSV(LSL_List src) { string ret = String.Empty; @@ -4236,10 +4350,10 @@ namespace OpenSim.Region.ScriptEngine.Common /// before or after an element is trimmed. /// - public LSL_Types.list llCSV2List(string src) + public LSL_List llCSV2List(string src) { - LSL_Types.list result = new LSL_Types.list(); + LSL_List result = new LSL_List(); int parens = 0; int start = 0; int length = 0; @@ -4293,9 +4407,9 @@ namespace OpenSim.Region.ScriptEngine.Common /// sizes. /// - public LSL_Types.list llListRandomize(LSL_Types.list src, int stride) + public LSL_List llListRandomize(LSL_List src, int stride) { - LSL_Types.list result; + LSL_List result; Random rand = new Random(); int chunkk; @@ -4336,7 +4450,7 @@ namespace OpenSim.Region.ScriptEngine.Common // Construct the randomized list - result = new LSL_Types.list(); + result = new LSL_List(); for (int i = 0; i < chunkk; i++) { @@ -4349,7 +4463,7 @@ namespace OpenSim.Region.ScriptEngine.Common else { object[] array = new object[src.Length]; Array.Copy(src.Data, 0, array, 0, src.Length); - result = new LSL_Types.list(array); + result = new LSL_List(array); } return result; @@ -4363,10 +4477,10 @@ namespace OpenSim.Region.ScriptEngine.Common /// range are included in the result. /// - public LSL_Types.list llList2ListStrided(LSL_Types.list src, int start, int end, int stride) + public LSL_List llList2ListStrided(LSL_List src, int start, int end, int stride) { - LSL_Types.list result = new LSL_Types.list(); + LSL_List result = new LSL_List(); int[] si = new int[2]; int[] ei = new int[2]; bool twopass = false; @@ -4443,10 +4557,17 @@ namespace OpenSim.Region.ScriptEngine.Common return result; } - public LSL_Types.Vector3 llGetRegionCorner() + public LSL_Integer llGetRegionAgentCount() { m_host.AddScriptLPS(1); - return new LSL_Types.Vector3(World.RegionInfo.RegionLocX * Constants.RegionSize, World.RegionInfo.RegionLocY * Constants.RegionSize, 0); + NotImplemented("llGetRegionAgentCount"); + return new LSL_Integer(0); + } + + public LSL_Vector llGetRegionCorner() + { + m_host.AddScriptLPS(1); + return new LSL_Vector(World.RegionInfo.RegionLocX * Constants.RegionSize, World.RegionInfo.RegionLocY * Constants.RegionSize, 0); } /// @@ -4455,11 +4576,11 @@ namespace OpenSim.Region.ScriptEngine.Common /// new element has the index specified by /// - public LSL_Types.list llListInsertList(LSL_Types.list dest, LSL_Types.list src, int index) + public LSL_List llListInsertList(LSL_List dest, LSL_List src, int index) { - LSL_Types.list pref = null; - LSL_Types.list suff = null; + LSL_List pref = null; + LSL_List suff = null; m_host.AddScriptLPS(1); @@ -4505,7 +4626,7 @@ namespace OpenSim.Region.ScriptEngine.Common /// in src. /// - public LSL_Types.LSLInteger llListFindList(LSL_Types.list src, LSL_Types.list test) + public LSL_Integer llListFindList(LSL_List src, LSL_List test) { int index = -1; @@ -4519,11 +4640,11 @@ namespace OpenSim.Region.ScriptEngine.Common { for (int i = 0; i < length; i++) { - if (AreEqual(src.Data[i], test.Data[0])) + if (src.Data[i].Equals(test.Data[0])) { int j; for (j = 1; j < test.Length; j++) - if (!AreEqual(src.Data[i+j], test.Data[j])) + if (!src.Data[i+j].Equals(test.Data[j])) break; if (j == test.Length) { @@ -4538,19 +4659,7 @@ namespace OpenSim.Region.ScriptEngine.Common } - private bool AreEqual(object src, object test) - { - if (src.GetType().FullName == "System.String") - { - return src.ToString() == test.ToString(); - } - else - { - return src.Equals(test); - } - } - - public string llGetObjectName() + public LSL_String llGetObjectName() { m_host.AddScriptLPS(1); return m_host.Name!=null?m_host.Name:String.Empty; @@ -4562,7 +4671,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.Name = name!=null?name:String.Empty; } - public string llGetDate() + public LSL_String llGetDate() { m_host.AddScriptLPS(1); DateTime date = DateTime.Now.ToUniversalTime(); @@ -4570,14 +4679,14 @@ namespace OpenSim.Region.ScriptEngine.Common return result; } - public LSL_Types.LSLInteger llEdgeOfWorld(LSL_Types.Vector3 pos, LSL_Types.Vector3 dir) + public LSL_Integer llEdgeOfWorld(LSL_Vector pos, LSL_Vector dir) { m_host.AddScriptLPS(1); NotImplemented("llEdgeOfWorld"); return 0; } - public LSL_Types.LSLInteger llGetAgentInfo(string id) + public LSL_Integer llGetAgentInfo(string id) { m_host.AddScriptLPS(1); NotImplemented("llGetAgentInfo"); @@ -4603,7 +4712,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.SoundRadius = radius; } - public string llKey2Name(string id) + public LSL_String llKey2Name(string id) { m_host.AddScriptLPS(1); UUID key = new UUID(); @@ -4646,10 +4755,11 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.AddTextureAnimation(pTexAnim); m_host.SendFullUpdateToAllClients(); + m_host.ParentGroup.HasGroupChanged = true; } - public void llTriggerSoundLimited(string sound, double volume, LSL_Types.Vector3 top_north_east, - LSL_Types.Vector3 bottom_south_west) + public void llTriggerSoundLimited(string sound, double volume, LSL_Vector top_north_east, + LSL_Vector bottom_south_west) { m_host.AddScriptLPS(1); NotImplemented("llTriggerSoundLimited"); @@ -4672,10 +4782,10 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(5000); } - public LSL_Types.list llParseString2List(string str, LSL_Types.list separators, LSL_Types.list spacers) + public LSL_List llParseString2List(string str, LSL_List separators, LSL_List spacers) { m_host.AddScriptLPS(1); - LSL_Types.list ret = new LSL_Types.list(); + LSL_List ret = new LSL_List(); object[] delimiters = new object[separators.Length + spacers.Length]; separators.Data.CopyTo(delimiters, 0); spacers.Data.CopyTo(delimiters, separators.Length); @@ -4728,7 +4838,7 @@ namespace OpenSim.Region.ScriptEngine.Common return ret; } - public LSL_Types.LSLInteger llOverMyLand(string id) + public LSL_Integer llOverMyLand(string id) { m_host.AddScriptLPS(1); UUID key = new UUID(); @@ -4751,17 +4861,17 @@ namespace OpenSim.Region.ScriptEngine.Common return 0; } - public string llGetLandOwnerAt(LSL_Types.Vector3 pos) + public LSL_String llGetLandOwnerAt(LSL_Vector pos) { m_host.AddScriptLPS(1); return World.GetLandOwner((float)pos.x, (float)pos.y).ToString(); } - public LSL_Types.Vector3 llGetAgentSize(string id) + public LSL_Vector llGetAgentSize(string id) { m_host.AddScriptLPS(1); ScenePresence avatar = World.GetScenePresence(id); - LSL_Types.Vector3 agentSize; + LSL_Vector agentSize; if (avatar == null) { agentSize = BuiltIn_Commands_BaseClass.ZERO_VECTOR; @@ -4769,25 +4879,25 @@ namespace OpenSim.Region.ScriptEngine.Common else { PhysicsVector size = avatar.PhysicsActor.Size; - agentSize = new LSL_Types.Vector3(size.X, size.Y, size.Z); + agentSize = new LSL_Vector(size.X, size.Y, size.Z); } return agentSize; } - public LSL_Types.LSLInteger llSameGroup(string agent) + public LSL_Integer llSameGroup(string agent) { m_host.AddScriptLPS(1); UUID agentId = new UUID(); if (!UUID.TryParse(agent, out agentId)) - return new LSL_Types.LSLInteger(0); + return new LSL_Integer(0); ScenePresence presence = World.GetScenePresence(agentId); if (presence == null) - return new LSL_Types.LSLInteger(0); + return new LSL_Integer(0); IClientAPI client = presence.ControllingClient; if (m_host.GroupID == client.ActiveGroupId) - return new LSL_Types.LSLInteger(1); + return new LSL_Integer(1); else - return new LSL_Types.LSLInteger(0); + return new LSL_Integer(0); } public void llUnSit(string id) @@ -4833,7 +4943,7 @@ namespace OpenSim.Region.ScriptEngine.Common } - public LSL_Types.Vector3 llGroundSlope(LSL_Types.Vector3 offset) + public LSL_Vector llGroundSlope(LSL_Vector offset) { m_host.AddScriptLPS(1); @@ -4843,15 +4953,15 @@ namespace OpenSim.Region.ScriptEngine.Common Vector3 p0 = new Vector3(pos.X, pos.Y, (float)llGround( - new LSL_Types.Vector3(pos.X, pos.Y, pos.Z) + new LSL_Vector(pos.X, pos.Y, pos.Z) )); Vector3 p1 = new Vector3(pos.X + 1, pos.Y, (float)llGround( - new LSL_Types.Vector3(pos.X + 1, pos.Y, pos.Z) + new LSL_Vector(pos.X + 1, pos.Y, pos.Z) )); Vector3 p2 = new Vector3(pos.X, pos.Y + 1, (float)llGround( - new LSL_Types.Vector3(pos.X, pos.Y + 1, pos.Z) + new LSL_Vector(pos.X, pos.Y + 1, pos.Z) )); Vector3 v0 = new Vector3( @@ -4867,50 +4977,50 @@ namespace OpenSim.Region.ScriptEngine.Common tv.Y = (v0.Z * v1.X) - (v0.X * v1.Z); tv.Z = (v0.X * v1.Y) - (v0.Y * v1.X); - return new LSL_Types.Vector3(tv.X, tv.Y, tv.Z); + return new LSL_Vector(tv.X, tv.Y, tv.Z); } - public LSL_Types.Vector3 llGroundNormal(LSL_Types.Vector3 offset) + public LSL_Vector llGroundNormal(LSL_Vector offset) { m_host.AddScriptLPS(1); - LSL_Types.Vector3 x = llGroundSlope(offset); - return new LSL_Types.Vector3(x.x, x.y, 1.0); + LSL_Vector x = llGroundSlope(offset); + return new LSL_Vector(x.x, x.y, 1.0); } - public LSL_Types.Vector3 llGroundContour(LSL_Types.Vector3 offset) + public LSL_Vector llGroundContour(LSL_Vector offset) { m_host.AddScriptLPS(1); - LSL_Types.Vector3 x = llGroundSlope(offset); - return new LSL_Types.Vector3(-x.y, x.x, 0.0); + LSL_Vector x = llGroundSlope(offset); + return new LSL_Vector(-x.y, x.x, 0.0); } - public LSL_Types.LSLInteger llGetAttached() + public LSL_Integer llGetAttached() { m_host.AddScriptLPS(1); NotImplemented("llGetAttached"); return 0; } - public LSL_Types.LSLInteger llGetFreeMemory() + public LSL_Integer llGetFreeMemory() { m_host.AddScriptLPS(1); - NotImplemented("llGetFreeMemory"); - return 0; + // Make scripts designed for LSO happy + return 16384; } - public string llGetRegionName() + public LSL_String llGetRegionName() { m_host.AddScriptLPS(1); return World.RegionInfo.RegionName; } - public double llGetRegionTimeDilation() + public LSL_Float llGetRegionTimeDilation() { m_host.AddScriptLPS(1); return (double)World.TimeDilation; } - public double llGetRegionFPS() + public LSL_Float llGetRegionFPS() { m_host.AddScriptLPS(1); //TODO: return actual FPS @@ -4976,17 +5086,18 @@ namespace OpenSim.Region.ScriptEngine.Common return ps; } - public void llParticleSystem(LSL_Types.list rules) + public void llParticleSystem(LSL_List rules) { m_host.AddScriptLPS(1); if (rules.Length == 0) { m_host.RemoveParticleSystem(); + m_host.ParentGroup.HasGroupChanged = true; } else { Primitive.ParticleSystem prules = getNewParticleSystemWithSLDefaultValues(); - LSL_Types.Vector3 tempv = new LSL_Types.Vector3(); + LSL_Vector tempv = new LSL_Vector(); float tempf = 0; @@ -4999,7 +5110,7 @@ namespace OpenSim.Region.ScriptEngine.Common break; case (int)BuiltIn_Commands_BaseClass.PSYS_PART_START_COLOR: - tempv = (LSL_Types.Vector3)rules.Data[i + 1]; + tempv = (LSL_Vector)rules.Data[i + 1]; prules.PartStartColor.R = (float)tempv.x; prules.PartStartColor.G = (float)tempv.y; prules.PartStartColor.B = (float)tempv.z; @@ -5011,7 +5122,7 @@ namespace OpenSim.Region.ScriptEngine.Common break; case (int)BuiltIn_Commands_BaseClass.PSYS_PART_END_COLOR: - tempv = (LSL_Types.Vector3)rules.Data[i + 1]; + tempv = (LSL_Vector)rules.Data[i + 1]; //prules.PartEndColor = new Color4(tempv.x,tempv.y,tempv.z,1); prules.PartEndColor.R = (float)tempv.x; @@ -5025,13 +5136,13 @@ namespace OpenSim.Region.ScriptEngine.Common break; case (int)BuiltIn_Commands_BaseClass.PSYS_PART_START_SCALE: - tempv = (LSL_Types.Vector3)rules.Data[i + 1]; + tempv = (LSL_Vector)rules.Data[i + 1]; prules.PartStartScaleX = (float)tempv.x; prules.PartStartScaleY = (float)tempv.y; break; case (int)BuiltIn_Commands_BaseClass.PSYS_PART_END_SCALE: - tempv = (LSL_Types.Vector3)rules.Data[i + 1]; + tempv = (LSL_Vector)rules.Data[i + 1]; prules.PartEndScaleX = (float)tempv.x; prules.PartEndScaleY = (float)tempv.y; break; @@ -5042,7 +5153,7 @@ namespace OpenSim.Region.ScriptEngine.Common break; case (int)BuiltIn_Commands_BaseClass.PSYS_SRC_ACCEL: - tempv = (LSL_Types.Vector3)rules.Data[i + 1]; + tempv = (LSL_Vector)rules.Data[i + 1]; prules.PartAcceleration.X = (float)tempv.x; prules.PartAcceleration.Y = (float)tempv.y; prules.PartAcceleration.Z = (float)tempv.z; @@ -5104,20 +5215,19 @@ namespace OpenSim.Region.ScriptEngine.Common case (int)BuiltIn_Commands_BaseClass.PSYS_SRC_OMEGA: // AL: This is an assumption, since it is the only thing that would match. - tempv = (LSL_Types.Vector3)rules.Data[i + 1]; + tempv = rules.GetVector3Item(i + 1); prules.AngularVelocity.X = (float)tempv.x; prules.AngularVelocity.Y = (float)tempv.y; prules.AngularVelocity.Z = (float)tempv.z; - //cast?? prules.MaxAge = (float)rules[i + 1]; break; case (int)BuiltIn_Commands_BaseClass.PSYS_SRC_ANGLE_BEGIN: - tempf = Convert.ToSingle(rules.Data[i + 1].ToString()); + tempf = (float)rules.GetLSLFloatItem(i + 1); prules.InnerAngle = (float)tempf; break; case (int)BuiltIn_Commands_BaseClass.PSYS_SRC_ANGLE_END: - tempf = Convert.ToSingle(rules.Data[i + 1].ToString()); + tempf = (float)rules.GetLSLFloatItem(i + 1); prules.OuterAngle = (float)tempf; break; } @@ -5126,6 +5236,7 @@ namespace OpenSim.Region.ScriptEngine.Common prules.CRC = 1; m_host.AddNewParticleSystem(prules); + m_host.ParentGroup.HasGroupChanged = true; } m_host.SendFullUpdateToAllClients(); } @@ -5146,7 +5257,7 @@ namespace OpenSim.Region.ScriptEngine.Common return UUID.Zero; } - public void llGiveInventoryList(string destination, string category, LSL_Types.list inventory) + public void llGiveInventoryList(string destination, string category, LSL_List inventory) { m_host.AddScriptLPS(1); @@ -5195,13 +5306,13 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llSetVehicleFloatParam"); } - public void llSetVehicleVectorParam(int param, LSL_Types.Vector3 vec) + public void llSetVehicleVectorParam(int param, LSL_Vector vec) { m_host.AddScriptLPS(1); NotImplemented("llSetVehicleVectorParam"); } - public void llSetVehicleRotationParam(int param, LSL_Types.Quaternion rot) + public void llSetVehicleRotationParam(int param, LSL_Rotation rot) { m_host.AddScriptLPS(1); NotImplemented("llSetVehicleRotationParam"); @@ -5219,7 +5330,7 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llRemoveVehicleFlags"); } - public void llSitTarget(LSL_Types.Vector3 offset, LSL_Types.Quaternion rot) + public void llSitTarget(LSL_Vector offset, LSL_Rotation rot) { m_host.AddScriptLPS(1); // LSL quaternions can normalize to 0, normal Quaternions can't. @@ -5230,7 +5341,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.SitTargetOrientation = new Quaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s); } - public string llAvatarOnSitTarget() + public LSL_String llAvatarOnSitTarget() { m_host.AddScriptLPS(1); return m_host.GetAvatarOnSitTarget().ToString(); @@ -5267,19 +5378,19 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.SitName = text; } - public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) + public void llSetCameraEyeOffset(LSL_Vector offset) { m_host.AddScriptLPS(1); m_host.SetCameraEyeOffset(new Vector3((float)offset.x, (float)offset.y, (float)offset.z)); } - public void llSetCameraAtOffset(LSL_Types.Vector3 offset) + public void llSetCameraAtOffset(LSL_Vector offset) { m_host.AddScriptLPS(1); m_host.SetCameraAtOffset(new Vector3((float)offset.x, (float)offset.y, (float)offset.z)); } - public string llDumpList2String(LSL_Types.list src, string seperator) + public LSL_String llDumpList2String(LSL_List src, string seperator) { m_host.AddScriptLPS(1); if (src.Length == 0) @@ -5295,7 +5406,7 @@ namespace OpenSim.Region.ScriptEngine.Common return ret; } - public LSL_Types.LSLInteger llScriptDanger(LSL_Types.Vector3 pos) + public LSL_Integer llScriptDanger(LSL_Vector pos) { m_host.AddScriptLPS(1); bool result = World.scriptDanger(m_host.LocalId, new Vector3((float)pos.x, (float)pos.y, (float)pos.z)); @@ -5310,7 +5421,7 @@ namespace OpenSim.Region.ScriptEngine.Common } - public void llDialog(string avatar, string message, LSL_Types.list buttons, int chat_channel) + public void llDialog(string avatar, string message, LSL_List buttons, int chat_channel) { m_host.AddScriptLPS(1); UUID av = new UUID(); @@ -5378,7 +5489,7 @@ namespace OpenSim.Region.ScriptEngine.Common // assume it is not running. } - public LSL_Types.LSLInteger llGetScriptState(string name) + public LSL_Integer llGetScriptState(string name) { UUID item; ScriptManager sm; @@ -5477,13 +5588,13 @@ namespace OpenSim.Region.ScriptEngine.Common if (xmlrpcMod.IsEnabled()) { UUID channelID = xmlrpcMod.OpenXMLRPCChannel(m_localID, m_itemID, UUID.Zero); - object[] resobj = new object[] { new LSL_Types.LSLInteger(1), new LSL_Types.LSLString(channelID.ToString()), new LSL_Types.LSLString(UUID.Zero.ToString()), new LSL_Types.LSLString(String.Empty), new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(String.Empty) }; + object[] resobj = new object[] { new LSL_Integer(1), new LSL_String(channelID.ToString()), new LSL_String(UUID.Zero.ToString()), new LSL_String(String.Empty), new LSL_Integer(0), new LSL_String(String.Empty) }; m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(m_localID, m_itemID, "remote_data", EventQueueManager.llDetectNull, resobj); } // ScriptSleep(1000); } - public string llSendRemoteData(string channel, string dest, int idata, string sdata) + public LSL_String llSendRemoteData(string channel, string dest, int idata, string sdata) { m_host.AddScriptLPS(1); IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface(); @@ -5507,13 +5618,13 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(1000); } - public string llMD5String(string src, int nonce) + public LSL_String llMD5String(string src, int nonce) { m_host.AddScriptLPS(1); return Util.Md5Hash(src + ":" + nonce.ToString()); } - private ObjectShapePacket.ObjectDataBlock SetPrimitiveBlockShapeParams(SceneObjectPart part, int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist) + private ObjectShapePacket.ObjectDataBlock SetPrimitiveBlockShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist) { ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock(); @@ -5583,7 +5694,7 @@ namespace OpenSim.Region.ScriptEngine.Common return shapeBlock; } - private void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist, LSL_Types.Vector3 taper_b, LSL_Types.Vector3 topshear, byte fudge) + private void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector taper_b, LSL_Vector topshear, byte fudge) { ObjectShapePacket.ObjectDataBlock shapeBlock; @@ -5631,7 +5742,7 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateShape(shapeBlock); } - private void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist, LSL_Types.Vector3 dimple, byte fudge) + private void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector dimple, byte fudge) { ObjectShapePacket.ObjectDataBlock shapeBlock; @@ -5672,7 +5783,7 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateShape(shapeBlock); } - private void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist, LSL_Types.Vector3 holesize, LSL_Types.Vector3 topshear, LSL_Types.Vector3 profilecut, LSL_Types.Vector3 taper_a, float revolutions, float radiusoffset, float skew, byte fudge) + private void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector holesize, LSL_Vector topshear, LSL_Vector profilecut, LSL_Vector taper_a, float revolutions, float radiusoffset, float skew, byte fudge) { ObjectShapePacket.ObjectDataBlock shapeBlock; @@ -5824,12 +5935,12 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateShape(shapeBlock); } - public void llSetPrimitiveParams(LSL_Types.list rules) + public void llSetPrimitiveParams(LSL_List rules) { llSetLinkPrimitiveParams(m_host.LinkNum, rules); } - public void llSetLinkPrimitiveParams(int linknumber, LSL_Types.list rules) + public void llSetLinkPrimitiveParams(int linknumber, LSL_List rules) { m_host.AddScriptLPS(1); @@ -5850,7 +5961,7 @@ namespace OpenSim.Region.ScriptEngine.Common int remain = rules.Length - idx; int face; - LSL_Types.Vector3 v; + LSL_Vector v; switch (code) { @@ -5858,7 +5969,7 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return; - v=new LSL_Types.Vector3(rules.Data[idx++].ToString()); + v=new LSL_Vector(rules.Data[idx++].ToString()); SetPos(part, v); break; @@ -5866,7 +5977,7 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return; - v=new LSL_Types.Vector3(rules.Data[idx++].ToString()); + v=new LSL_Vector(rules.Data[idx++].ToString()); SetScale(part, v); break; @@ -5874,7 +5985,7 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return; - LSL_Types.Quaternion q = new LSL_Types.Quaternion(rules.Data[idx++].ToString()); + LSL_Rotation q = new LSL_Rotation(rules.Data[idx++].ToString()); SetRot(part, q); break; @@ -5887,14 +5998,14 @@ namespace OpenSim.Region.ScriptEngine.Common remain = rules.Length - idx; float hollow; - LSL_Types.Vector3 twist; - LSL_Types.Vector3 taper_b; - LSL_Types.Vector3 topshear; + LSL_Vector twist; + LSL_Vector taper_b; + LSL_Vector topshear; float revolutions; float radiusoffset; float skew; - LSL_Types.Vector3 holesize; - LSL_Types.Vector3 profilecut; + LSL_Vector holesize; + LSL_Vector profilecut; switch (code) { @@ -5902,12 +6013,12 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 6) return; - face = Convert.ToInt32(rules.Data[idx++]); // holeshape - v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // cut - hollow = (float)Convert.ToDouble(rules.Data[idx++]); - twist = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString()); + face = (int)rules.GetLSLIntegerItem(idx++); + v = rules.GetVector3Item(idx++); // cut + hollow = (float)rules.GetLSLFloatItem(idx++); + twist = rules.GetVector3Item(idx++); + taper_b = rules.GetVector3Item(idx++); + topshear = rules.GetVector3Item(idx++); part.Shape.PathCurve = (byte)Extrusion.Straight; SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear, 1); break; @@ -5916,12 +6027,12 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 6) return; - face = Convert.ToInt32(rules.Data[idx++]); // holeshape - v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // cut - hollow = (float)Convert.ToDouble(rules.Data[idx++]); - twist = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString()); + face = (int)rules.GetLSLIntegerItem(idx++); // holeshape + v = rules.GetVector3Item(idx++); // cut + hollow = (float)rules.GetLSLFloatItem(idx++); + twist = rules.GetVector3Item(idx++); + taper_b = rules.GetVector3Item(idx++); + topshear = rules.GetVector3Item(idx++); part.Shape.ProfileShape = ProfileShape.Circle; part.Shape.PathCurve = (byte)Extrusion.Straight; SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear, 0); @@ -5931,12 +6042,12 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 6) return; - face = Convert.ToInt32(rules.Data[idx++]); // holeshape - v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut - hollow = (float)Convert.ToDouble(rules.Data[idx++]); - twist = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString()); + face = (int)rules.GetLSLIntegerItem(idx++); // holeshape + v = rules.GetVector3Item(idx++); //cut + hollow = (float)rules.GetLSLFloatItem(idx++); + twist = rules.GetVector3Item(idx++); + taper_b = rules.GetVector3Item(idx++); + topshear = rules.GetVector3Item(idx++); part.Shape.PathCurve = (byte)Extrusion.Straight; SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear, 3); break; @@ -5945,11 +6056,11 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 5) return; - face = Convert.ToInt32(rules.Data[idx++]); // holeshape - v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // cut - hollow = (float)Convert.ToDouble(rules.Data[idx++]); - twist = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // dimple + face = (int)rules.GetLSLIntegerItem(idx++); // holeshape + v = rules.GetVector3Item(idx++); // cut + hollow = (float)rules.GetLSLFloatItem(idx++); + twist = rules.GetVector3Item(idx++); + taper_b = rules.GetVector3Item(idx++); // dimple part.Shape.PathCurve = (byte)Extrusion.Curve1; SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, 5); break; @@ -5958,17 +6069,17 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 11) return; - face = Convert.ToInt32(rules.Data[idx++]); // holeshape - v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut - hollow = (float)Convert.ToDouble(rules.Data[idx++]); - twist = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - holesize = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - profilecut = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // taper_a - revolutions = (float)Convert.ToDouble(rules.Data[idx++]); - radiusoffset = (float)Convert.ToDouble(rules.Data[idx++]); - skew = (float)Convert.ToDouble(rules.Data[idx++]); + face = (int)rules.GetLSLIntegerItem(idx++); // holeshape + v = rules.GetVector3Item(idx++); //cut + hollow = (float)rules.GetLSLFloatItem(idx++); + twist = rules.GetVector3Item(idx++); + holesize = rules.GetVector3Item(idx++); + topshear = rules.GetVector3Item(idx++); + profilecut = rules.GetVector3Item(idx++); + taper_b = rules.GetVector3Item(idx++); // taper_a + revolutions = (float)rules.GetLSLFloatItem(idx++); + radiusoffset = (float)rules.GetLSLFloatItem(idx++); + skew = (float)rules.GetLSLFloatItem(idx++); part.Shape.PathCurve = (byte)Extrusion.Curve1; SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 0); break; @@ -5977,17 +6088,17 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 11) return; - face = Convert.ToInt32(rules.Data[idx++]); // holeshape - v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut - hollow = (float)Convert.ToDouble(rules.Data[idx++]); - twist = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - holesize = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - profilecut = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // taper_a - revolutions = (float)Convert.ToDouble(rules.Data[idx++]); - radiusoffset = (float)Convert.ToDouble(rules.Data[idx++]); - skew = (float)Convert.ToDouble(rules.Data[idx++]); + face = (int)rules.GetLSLIntegerItem(idx++); // holeshape + v = rules.GetVector3Item(idx++); //cut + hollow = (float)rules.GetLSLFloatItem(idx++); + twist = rules.GetVector3Item(idx++); + holesize = rules.GetVector3Item(idx++); + topshear = rules.GetVector3Item(idx++); + profilecut = rules.GetVector3Item(idx++); + taper_b = rules.GetVector3Item(idx++); // taper_a + revolutions = (float)rules.GetLSLFloatItem(idx++); + radiusoffset = (float)rules.GetLSLFloatItem(idx++); + skew = (float)rules.GetLSLFloatItem(idx++); part.Shape.PathCurve = (byte)Extrusion.Curve1; SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 1); break; @@ -5996,17 +6107,17 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 11) return; - face = Convert.ToInt32(rules.Data[idx++]); // holeshape - v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut - hollow = (float)Convert.ToDouble(rules.Data[idx++]); - twist = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - holesize = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - profilecut = new LSL_Types.Vector3(rules.Data[idx++].ToString()); - taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // taper_a - revolutions = (float)Convert.ToDouble(rules.Data[idx++]); - radiusoffset = (float)Convert.ToDouble(rules.Data[idx++]); - skew = (float)Convert.ToDouble(rules.Data[idx++]); + face = (int)rules.GetLSLIntegerItem(idx++); // holeshape + v = rules.GetVector3Item(idx++); //cut + hollow = (float)rules.GetLSLFloatItem(idx++); + twist = rules.GetVector3Item(idx++); + holesize = rules.GetVector3Item(idx++); + topshear = rules.GetVector3Item(idx++); + profilecut = rules.GetVector3Item(idx++); + taper_b = rules.GetVector3Item(idx++); // taper_a + revolutions = (float)rules.GetLSLFloatItem(idx++); + radiusoffset = (float)rules.GetLSLFloatItem(idx++); + skew = (float)rules.GetLSLFloatItem(idx++); part.Shape.PathCurve = (byte)Extrusion.Curve1; SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 3); break; @@ -6016,7 +6127,7 @@ namespace OpenSim.Region.ScriptEngine.Common return; string map = rules.Data[idx++].ToString(); - face = Convert.ToInt32(rules.Data[idx++]); // type + face = (int)rules.GetLSLIntegerItem(idx++); // type part.Shape.PathCurve = (byte)Extrusion.Curve1; SetPrimitiveShapeParams(part, map, face); break; @@ -6028,11 +6139,11 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 5) return; - face=Convert.ToInt32(rules.Data[idx++]); + face=(int)rules.GetLSLIntegerItem(idx++); string tex=rules.Data[idx++].ToString(); - LSL_Types.Vector3 repeats=new LSL_Types.Vector3(rules.Data[idx++].ToString()); - LSL_Types.Vector3 offsets=new LSL_Types.Vector3(rules.Data[idx++].ToString()); - double rotation=Convert.ToDouble(rules.Data[idx++]); + LSL_Vector repeats=rules.GetVector3Item(idx++); + LSL_Vector offsets=rules.GetVector3Item(idx++); + double rotation=(double)rules.GetLSLFloatItem(idx++); SetTexture(part, tex, face); ScaleTexture(part, repeats.x, repeats.y, face); @@ -6045,9 +6156,9 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 3) return; - face=Convert.ToInt32(rules.Data[idx++]); - LSL_Types.Vector3 color=new LSL_Types.Vector3(rules.Data[idx++].ToString()); - double alpha=Convert.ToDouble(rules.Data[idx++]); + face=(int)rules.GetLSLIntegerItem(idx++); + LSL_Vector color=rules.GetVector3Item(idx++); + double alpha=(double)rules.GetLSLFloatItem(idx++); SetColor(part, color, face); SetAlpha(part, alpha, face); @@ -6057,34 +6168,34 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 7) return; - int flexi = Convert.ToInt32(rules.Data[idx++]); - int softness = Convert.ToInt32(rules.Data[idx++]); - float gravity = (float)Convert.ToDouble(rules.Data[idx++]); - float friction = (float)Convert.ToDouble(rules.Data[idx++]); - float wind = (float)Convert.ToDouble(rules.Data[idx++]); - float tension = (float)Convert.ToDouble(rules.Data[idx++]); - LSL_Types.Vector3 force =new LSL_Types.Vector3(rules.Data[idx++].ToString()); + 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_Vector force = rules.GetVector3Item(idx++); - SetFlexi(part, (flexi == 1), softness, gravity, friction, wind, tension, force); + SetFlexi(part, flexi, softness, gravity, friction, wind, tension, force); break; case (int)BuiltIn_Commands_BaseClass.PRIM_POINT_LIGHT: if (remain < 5) return; - int light = Convert.ToInt32(rules.Data[idx++]); - LSL_Types.Vector3 lightcolor =new LSL_Types.Vector3(rules.Data[idx++].ToString()); - float intensity = (float)Convert.ToDouble(rules.Data[idx++]); - float radius = (float)Convert.ToDouble(rules.Data[idx++]); - float falloff = (float)Convert.ToDouble(rules.Data[idx++]); + bool light = rules.GetLSLIntegerItem(idx++); + LSL_Vector lightcolor = rules.GetVector3Item(idx++); + float intensity = (float)rules.GetLSLFloatItem(idx++); + float radius = (float)rules.GetLSLFloatItem(idx++); + float falloff = (float)rules.GetLSLFloatItem(idx++); - SetPointLight(part, (light == 1), lightcolor, intensity, radius, falloff); + SetPointLight(part, light, lightcolor, intensity, radius, falloff); break; case (int)BuiltIn_Commands_BaseClass.PRIM_GLOW: if (remain < 2) return; - face = Convert.ToInt32(rules.Data[idx++]); - float glow = (float)Convert.ToDouble(rules.Data[idx++]); + face = rules.GetLSLIntegerItem(idx++); + float glow = (float)rules.GetLSLFloatItem(idx++); SetGlow(part, face, glow); @@ -6092,9 +6203,9 @@ namespace OpenSim.Region.ScriptEngine.Common case (int)BuiltIn_Commands_BaseClass.PRIM_BUMP_SHINY: if (remain < 3) return; - face = Convert.ToInt32(rules.Data[idx++]); - int shiny = Convert.ToInt32(rules.Data[idx++]); - Bumpiness bump = (Bumpiness)Convert.ToByte(rules.Data[idx++]); + face = (int)rules.GetLSLIntegerItem(idx++); + int shiny = (int)rules.GetLSLIntegerItem(idx++); + Bumpiness bump = (Bumpiness)Convert.ToByte((int)rules.GetLSLIntegerItem(idx++)); SetShiny(part, face, shiny, bump); @@ -6102,14 +6213,8 @@ namespace OpenSim.Region.ScriptEngine.Common case (int)BuiltIn_Commands_BaseClass.PRIM_FULLBRIGHT: if (remain < 2) return; - face = Convert.ToInt32(rules.Data[idx++]); - string bv = rules.Data[idx++].ToString(); - bool st; - if (bv.Equals("1")) - st = true; - else - st = false; - + face = rules.GetLSLIntegerItem(idx++); + bool st = rules.GetLSLIntegerItem(idx++); SetFullBright(part, face , st); break; case (int)BuiltIn_Commands_BaseClass.PRIM_MATERIAL: @@ -6119,7 +6224,7 @@ namespace OpenSim.Region.ScriptEngine.Common { /* Unhandled at this time - sends "Unhandled" message will enable when available - byte material = (byte)Convert.ToByte( rules.Data[idx++]); + byte material = Convert.ToByte((int)rules.GetLSLIntegerItem(idx++)); part.Material = material; */ return; @@ -6158,7 +6263,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public string llStringToBase64(string str) + public LSL_String llStringToBase64(string str) { m_host.AddScriptLPS(1); try @@ -6174,7 +6279,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public string llBase64ToString(string str) + public LSL_String llBase64ToString(string str) { m_host.AddScriptLPS(1); UTF8Encoding encoder = new UTF8Encoding(); @@ -6207,23 +6312,23 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llRemoteDataSetRegion"); } - public double llLog10(double val) + public LSL_Float llLog10(double val) { m_host.AddScriptLPS(1); return (double)Math.Log10(val); } - public double llLog(double val) + public LSL_Float llLog(double val) { m_host.AddScriptLPS(1); return (double)Math.Log(val); } - public LSL_Types.list llGetAnimationList( string id ) + public LSL_List llGetAnimationList( string id ) { m_host.AddScriptLPS(1); - LSL_Types.list l = new LSL_Types.list(); + LSL_List l = new LSL_List(); ScenePresence av = World.GetScenePresence(id); if (av == null) return l; @@ -6250,44 +6355,19 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(2000); } - public void osSetParcelMediaURL(string url) + public LSL_Vector llGetRootPosition() { m_host.AddScriptLPS(1); - UUID landowner = World.GetLandOwner(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); - - if (landowner == UUID.Zero) - { - return; - } - - if (landowner != m_host.ObjectOwner) - { - return; - } - - World.SetLandMediaURL(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y, url); - } - - public LSL_Types.Vector3 llGetRootPosition() - { - m_host.AddScriptLPS(1); - return new LSL_Types.Vector3( - m_host.ParentGroup.AbsolutePosition.X, - m_host.ParentGroup.AbsolutePosition.Y, - m_host.ParentGroup.AbsolutePosition.Z); + return new LSL_Vector(m_host.ParentGroup.AbsolutePosition.X, m_host.ParentGroup.AbsolutePosition.Y, m_host.ParentGroup.AbsolutePosition.Z); } - public LSL_Types.Quaternion llGetRootRotation() + public LSL_Rotation llGetRootRotation() { m_host.AddScriptLPS(1); - return new LSL_Types.Quaternion( - m_host.ParentGroup.GroupRotation.X, - m_host.ParentGroup.GroupRotation.Y, - m_host.ParentGroup.GroupRotation.Z, - m_host.ParentGroup.GroupRotation.W); + return new LSL_Rotation(m_host.ParentGroup.GroupRotation.X, m_host.ParentGroup.GroupRotation.Y, m_host.ParentGroup.GroupRotation.Z, m_host.ParentGroup.GroupRotation.W); } - public string llGetObjectDesc() + public LSL_String llGetObjectDesc() { return m_host.Description!=null?m_host.Description:String.Empty; } @@ -6298,13 +6378,13 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.Description = desc!=null?desc:String.Empty; } - public string llGetCreator() + public LSL_String llGetCreator() { m_host.AddScriptLPS(1); return m_host.ObjectCreator.ToString(); } - public string llGetTimestamp() + public LSL_String llGetTimestamp() { m_host.AddScriptLPS(1); return DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); @@ -6318,7 +6398,7 @@ namespace OpenSim.Region.ScriptEngine.Common { Primitive.TextureEntry tex = part.Shape.Textures; Color4 texcolor; - if (face > -1) + if (face >= 0 && face < GetNumberOfSides(m_host)) { texcolor = tex.CreateFace((uint)face).RGBA; texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f); @@ -6326,12 +6406,12 @@ namespace OpenSim.Region.ScriptEngine.Common part.UpdateTexture(tex); return; } - else if (face == -1) + else if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) { texcolor = tex.DefaultTexture.RGBA; texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f); tex.DefaultTexture.RGBA = texcolor; - for (uint i = 0; i < 32; i++) + for (uint i = 0; i < GetNumberOfSides(m_host); i++) { if (tex.FaceTextures[i] != null) { @@ -6388,77 +6468,76 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llGetNumberOfPrims() + public LSL_Integer llGetNumberOfPrims() { m_host.AddScriptLPS(1); return m_host.ParentGroup.PrimCount; } - public LSL_Types.list llGetBoundingBox(string obj) + public LSL_List llGetBoundingBox(string obj) { m_host.AddScriptLPS(1); NotImplemented("llGetBoundingBox"); - return new LSL_Types.list(); + return new LSL_List(); } - public LSL_Types.Vector3 llGetGeometricCenter() + public LSL_Vector llGetGeometricCenter() { - return new LSL_Types.Vector3( - m_host.GetGeometricCenter().X, m_host.GetGeometricCenter().Y, m_host.GetGeometricCenter().Z); + return new LSL_Vector(m_host.GetGeometricCenter().X, m_host.GetGeometricCenter().Y, m_host.GetGeometricCenter().Z); } - public LSL_Types.list llGetPrimitiveParams(LSL_Types.list rules) + public LSL_List llGetPrimitiveParams(LSL_List rules) { m_host.AddScriptLPS(1); - LSL_Types.list res = new LSL_Types.list(); + LSL_List res = new LSL_List(); int idx=0; while (idx < rules.Length) { - int code=Convert.ToInt32(rules.Data[idx++]); + int code=(int)rules.GetLSLIntegerItem(idx++); int remain=rules.Length-idx; switch (code) { case (int)BuiltIn_Commands_BaseClass.PRIM_MATERIAL: - res.Add(new LSL_Types.LSLInteger(m_host.Material)); + res.Add(new LSL_Integer(m_host.Material)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_PHYSICS: if ((m_host.GetEffectiveObjectFlags() & (uint)PrimFlags.Physics) != 0) - res.Add(new LSL_Types.LSLInteger(1)); + res.Add(new LSL_Integer(1)); else - res.Add(new LSL_Types.LSLInteger(0)); + res.Add(new LSL_Integer(0)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_TEMP_ON_REZ: if ((m_host.GetEffectiveObjectFlags() & (uint)PrimFlags.TemporaryOnRez) != 0) - res.Add(new LSL_Types.LSLInteger(1)); + res.Add(new LSL_Integer(1)); else - res.Add(new LSL_Types.LSLInteger(0)); + res.Add(new LSL_Integer(0)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_PHANTOM: if ((m_host.GetEffectiveObjectFlags() & (uint)PrimFlags.Phantom) != 0) - res.Add(new LSL_Types.LSLInteger(1)); + res.Add(new LSL_Integer(1)); else - res.Add(new LSL_Types.LSLInteger(0)); + res.Add(new LSL_Integer(0)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_POSITION: - res.Add(new LSL_Types.Vector3(m_host.AbsolutePosition.X, + res.Add(new LSL_Vector(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y, m_host.AbsolutePosition.Z)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_SIZE: - res.Add(new LSL_Types.Vector3(m_host.Scale.X, + res.Add(new LSL_Vector(m_host.Scale.X, m_host.Scale.Y, m_host.Scale.Z)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_ROTATION: - res.Add(new LSL_Types.Quaternion(m_host.RotationOffset.X, + res.Add(new LSL_Rotation(m_host.RotationOffset.X, m_host.RotationOffset.Y, m_host.RotationOffset.Z, m_host.RotationOffset.W)); @@ -6468,69 +6547,69 @@ namespace OpenSim.Region.ScriptEngine.Common // implementing box PrimitiveBaseShape Shape = m_host.Shape; int primType = getScriptPrimType(m_host.Shape); - res.Add(new LSL_Types.LSLInteger(primType)); + res.Add(new LSL_Integer(primType)); switch (primType) { case BuiltIn_Commands_BaseClass.PRIM_TYPE_BOX: case BuiltIn_Commands_BaseClass.PRIM_TYPE_CYLINDER: case BuiltIn_Commands_BaseClass.PRIM_TYPE_PRISM: - res.Add(new LSL_Types.LSLInteger(Shape.ProfileCurve)); - res.Add(new LSL_Types.Vector3(Shape.ProfileBegin / 50000.0, 1 - Shape.ProfileEnd / 50000.0, 0)); - res.Add(new LSL_Types.LSLFloat(Shape.ProfileHollow / 50000.0)); - res.Add(new LSL_Types.Vector3(Shape.PathTwistBegin / 100.0, Shape.PathTwist / 100.0, 0)); - res.Add(new LSL_Types.Vector3(1 - (Shape.PathScaleX / 100.0 - 1), 1 - (Shape.PathScaleY / 100.0 - 1), 0)); - res.Add(new LSL_Types.Vector3(Shape.PathShearX / 100.0, Shape.PathShearY / 100.0, 0)); + res.Add(new LSL_Integer(Shape.ProfileCurve)); + res.Add(new LSL_Vector(Shape.ProfileBegin / 50000.0, 1 - Shape.ProfileEnd / 50000.0, 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(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)); break; case BuiltIn_Commands_BaseClass.PRIM_TYPE_SPHERE: - res.Add(new LSL_Types.LSLInteger(Shape.ProfileCurve)); - res.Add(new LSL_Types.Vector3(Shape.PathBegin / 50000.0, 1 - Shape.PathEnd / 50000.0, 0)); - res.Add(new LSL_Types.LSLFloat(Shape.ProfileHollow / 50000.0)); - res.Add(new LSL_Types.Vector3(Shape.PathTwistBegin / 100.0, Shape.PathTwist / 100.0, 0)); - res.Add(new LSL_Types.Vector3(Shape.ProfileBegin / 50000.0, 1 - Shape.ProfileEnd / 50000.0, 0)); + res.Add(new LSL_Integer(Shape.ProfileCurve)); + res.Add(new LSL_Vector(Shape.PathBegin / 50000.0, 1 - Shape.PathEnd / 50000.0, 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.ProfileBegin / 50000.0, 1 - Shape.ProfileEnd / 50000.0, 0)); break; case BuiltIn_Commands_BaseClass.PRIM_TYPE_SCULPT: res.Add(Shape.SculptTexture.ToString()); - res.Add(new LSL_Types.LSLInteger(Shape.SculptType)); + res.Add(new LSL_Integer(Shape.SculptType)); break; case BuiltIn_Commands_BaseClass.PRIM_TYPE_RING: case BuiltIn_Commands_BaseClass.PRIM_TYPE_TUBE: case BuiltIn_Commands_BaseClass.PRIM_TYPE_TORUS: // holeshape - res.Add(new LSL_Types.LSLInteger(Shape.ProfileCurve)); + res.Add(new LSL_Integer(Shape.ProfileCurve)); // cut - res.Add(new LSL_Types.Vector3(Shape.PathBegin / 50000.0, 1 - Shape.PathEnd / 50000.0, 0)); + res.Add(new LSL_Vector(Shape.PathBegin / 50000.0, 1 - Shape.PathEnd / 50000.0, 0)); // hollow - res.Add(new LSL_Types.LSLFloat(Shape.ProfileHollow / 50000.0)); + res.Add(new LSL_Float(Shape.ProfileHollow / 50000.0)); // twist - res.Add(new LSL_Types.Vector3(Shape.PathTwistBegin / 100.0, Shape.PathTwist / 100.0, 0)); + res.Add(new LSL_Vector(Shape.PathTwistBegin / 100.0, Shape.PathTwist / 100.0, 0)); // vector holesize - res.Add(new LSL_Types.Vector3(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 - res.Add(new LSL_Types.Vector3(Shape.PathShearX / 100.0, Shape.PathShearY / 100.0, 0)); + res.Add(new LSL_Vector(Shape.PathShearX / 100.0, Shape.PathShearY / 100.0, 0)); // vector profilecut - res.Add(new LSL_Types.Vector3(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)); // vector tapera - res.Add(new LSL_Types.Vector3(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, - res.Add(new LSL_Types.LSLFloat(Shape.PathRevolutions / 50.0)); // needs fixing :( + res.Add(new LSL_Float(Shape.PathRevolutions / 50.0)); // needs fixing :( // float radiusoffset, - res.Add(new LSL_Types.LSLFloat(Shape.PathRadiusOffset / 100.0)); + res.Add(new LSL_Float(Shape.PathRadiusOffset / 100.0)); // float skew - res.Add(new LSL_Types.LSLFloat(Shape.PathSkew / 100.0)); + res.Add(new LSL_Float(Shape.PathSkew / 100.0)); break; } @@ -6540,39 +6619,69 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return res; - int face = Convert.ToInt32("" + rules.Data[idx++]); - if (face == -1) - face = 0; - + int face = (int)rules.GetLSLIntegerItem(idx++); Primitive.TextureEntry tex = m_host.Shape.Textures; - Primitive.TextureEntryFace texface = tex.GetFace((uint)face); - - res.Add(new LSL_Types.LSLString(texface.TextureID.ToString())); - res.Add(new LSL_Types.Vector3(texface.RepeatU, - texface.RepeatV, - 0)); - res.Add(new LSL_Types.Vector3(texface.OffsetU, - texface.OffsetV, - 0)); - res.Add(new LSL_Types.LSLFloat(texface.Rotation)); + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) + { + for (face = 0 ; face < GetNumberOfSides(m_host) ; face++) + { + Primitive.TextureEntryFace texface = tex.GetFace((uint)face); + + res.Add(new LSL_String(texface.TextureID.ToString())); + res.Add(new LSL_Vector(texface.RepeatU, + texface.RepeatV, + 0)); + res.Add(new LSL_Vector(texface.OffsetU, + texface.OffsetV, + 0)); + res.Add(new LSL_Float(texface.Rotation)); + } + } + else + { + if (face >= 0 && face < GetNumberOfSides(m_host)) + { + Primitive.TextureEntryFace texface = tex.GetFace((uint)face); + + res.Add(new LSL_String(texface.TextureID.ToString())); + res.Add(new LSL_Vector(texface.RepeatU, + texface.RepeatV, + 0)); + res.Add(new LSL_Vector(texface.OffsetU, + texface.OffsetV, + 0)); + res.Add(new LSL_Float(texface.Rotation)); + } + } break; case (int)BuiltIn_Commands_BaseClass.PRIM_COLOR: if (remain < 1) return res; - face=Convert.ToInt32("" + rules.Data[idx++]); + face=(int)rules.GetLSLIntegerItem(idx++); tex = m_host.Shape.Textures; Color4 texcolor; - if (face == -1) // TMP: Until we can determine number of sides, ALL_SIDES (-1) will return default color - texcolor = tex.DefaultTexture.RGBA; + if (face == BuiltIn_Commands_BaseClass.ALL_SIDES) + { + for (face = 0 ; face < GetNumberOfSides(m_host) ; face++) + { + texcolor = tex.GetFace((uint)face).RGBA; + res.Add(new LSL_Vector(texcolor.R, + texcolor.G, + texcolor.B)); + res.Add(new LSL_Float(texcolor.A)); + } + } else + { texcolor = tex.GetFace((uint)face).RGBA; - res.Add(new LSL_Types.Vector3((255 - (texcolor.R * 255)) / 255, - (255 - (texcolor.G * 255)) / 255, - (255 - (texcolor.B * 255)) / 255)); - res.Add(new LSL_Types.LSLFloat((texcolor.A * 255) / 255)); + res.Add(new LSL_Vector(texcolor.R, + texcolor.G, + texcolor.B)); + res.Add(new LSL_Float(texcolor.A)); + } break; case (int)BuiltIn_Commands_BaseClass.PRIM_BUMP_SHINY: @@ -6580,10 +6689,10 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return res; - face=Convert.ToInt32(rules.Data[idx++]); + face=(int)rules.GetLSLIntegerItem(idx++); - res.Add(new LSL_Types.LSLInteger(0)); - res.Add(new LSL_Types.LSLInteger(0)); + res.Add(new LSL_Integer(0)); + res.Add(new LSL_Integer(0)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_FULLBRIGHT: @@ -6591,24 +6700,24 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return res; - face=Convert.ToInt32(rules.Data[idx++]); + face=(int)rules.GetLSLIntegerItem(idx++); - res.Add(new LSL_Types.LSLInteger(0)); + res.Add(new LSL_Integer(0)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_FLEXIBLE: PrimitiveBaseShape shape = m_host.Shape; if (shape.FlexiEntry) - res.Add(new LSL_Types.LSLInteger(1)); // active + res.Add(new LSL_Integer(1)); // active else - res.Add(new LSL_Types.LSLInteger(0)); - res.Add(new LSL_Types.LSLInteger(shape.FlexiSoftness));// softness - res.Add(new LSL_Types.LSLFloat(shape.FlexiGravity)); // gravity - res.Add(new LSL_Types.LSLFloat(shape.FlexiDrag)); // friction - res.Add(new LSL_Types.LSLFloat(shape.FlexiWind)); // wind - res.Add(new LSL_Types.LSLFloat(shape.FlexiTension)); // tension - res.Add(new LSL_Types.Vector3(shape.FlexiForceX, // force + res.Add(new LSL_Integer(0)); + res.Add(new LSL_Integer(shape.FlexiSoftness));// softness + res.Add(new LSL_Float(shape.FlexiGravity)); // gravity + res.Add(new LSL_Float(shape.FlexiDrag)); // friction + res.Add(new LSL_Float(shape.FlexiWind)); // wind + res.Add(new LSL_Float(shape.FlexiTension)); // tension + res.Add(new LSL_Vector(shape.FlexiForceX, // force shape.FlexiForceY, shape.FlexiForceZ)); break; @@ -6619,24 +6728,24 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return res; - face=Convert.ToInt32(rules.Data[idx++]); + face=(int)rules.GetLSLIntegerItem(idx++); - res.Add(new LSL_Types.LSLInteger(0)); + res.Add(new LSL_Integer(0)); break; case (int)BuiltIn_Commands_BaseClass.PRIM_POINT_LIGHT: shape = m_host.Shape; if (shape.LightEntry) - res.Add(new LSL_Types.LSLInteger(1)); // active + res.Add(new LSL_Integer(1)); // active else - res.Add(new LSL_Types.LSLInteger(0)); - res.Add(new LSL_Types.Vector3(shape.LightColorR, // color + res.Add(new LSL_Integer(0)); + res.Add(new LSL_Vector(shape.LightColorR, // color shape.LightColorG, shape.LightColorB)); - res.Add(new LSL_Types.LSLFloat(shape.LightIntensity)); // intensity - res.Add(new LSL_Types.LSLFloat(shape.LightRadius)); // radius - res.Add(new LSL_Types.LSLFloat(shape.LightFalloff)); // falloff + res.Add(new LSL_Float(shape.LightIntensity)); // intensity + res.Add(new LSL_Float(shape.LightRadius)); // radius + res.Add(new LSL_Float(shape.LightFalloff)); // falloff break; case (int)BuiltIn_Commands_BaseClass.PRIM_GLOW: @@ -6644,9 +6753,9 @@ namespace OpenSim.Region.ScriptEngine.Common if (remain < 1) return res; - face=Convert.ToInt32(rules.Data[idx++]); + face=(int)rules.GetLSLIntegerItem(idx++); - res.Add(new LSL_Types.LSLFloat(0)); + res.Add(new LSL_Float(0)); break; } } @@ -6780,7 +6889,7 @@ namespace OpenSim.Region.ScriptEngine.Common // characters are padded with "=". // - public string llIntegerToBase64(int number) + public LSL_String llIntegerToBase64(int number) { // uninitialized string @@ -6843,7 +6952,7 @@ namespace OpenSim.Region.ScriptEngine.Common // // - public LSL_Types.LSLInteger llBase64ToInteger(string str) + public LSL_Integer llBase64ToInteger(string str) { int number = 0; int digit; @@ -6903,19 +7012,19 @@ namespace OpenSim.Region.ScriptEngine.Common return number; } - public double llGetGMTclock() + public LSL_Float llGetGMTclock() { m_host.AddScriptLPS(1); return DateTime.UtcNow.TimeOfDay.TotalSeconds; } - public string llGetSimulatorHostname() + public LSL_String llGetSimulatorHostname() { m_host.AddScriptLPS(1); return System.Environment.MachineName; } - public void llSetLocalRot(LSL_Types.Quaternion rot) + public void llSetLocalRot(LSL_Rotation rot) { m_host.AddScriptLPS(1); m_host.RotationOffset = new Quaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s); @@ -6970,7 +7079,7 @@ namespace OpenSim.Region.ScriptEngine.Common // of arrays or other objects. // - public LSL_Types.list llParseStringKeepNulls(string src, LSL_Types.list separators, LSL_Types.list spacers) + public LSL_List llParseStringKeepNulls(string src, LSL_List separators, LSL_List spacers) { int beginning = 0; int srclen = src.Length; @@ -6988,7 +7097,7 @@ namespace OpenSim.Region.ScriptEngine.Common // Initial capacity reduces resize cost - LSL_Types.list tokens = new LSL_Types.list(); + LSL_List tokens = new LSL_List(); m_host.AddScriptLPS(1); @@ -7098,7 +7207,7 @@ namespace OpenSim.Region.ScriptEngine.Common return tokens; } - public LSL_Types.LSLInteger llGetObjectPermMask(int mask) + public LSL_Integer llGetObjectPermMask(int mask) { m_host.AddScriptLPS(1); @@ -7171,7 +7280,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llGetInventoryPermMask(string item, int mask) + public LSL_Integer llGetInventoryPermMask(string item, int mask) { m_host.AddScriptLPS(1); foreach (KeyValuePair inv in m_host.TaskInventory) @@ -7202,7 +7311,7 @@ namespace OpenSim.Region.ScriptEngine.Common NotImplemented("llSetInventoryPermMask"); } - public string llGetInventoryCreator(string item) + public LSL_String llGetInventoryCreator(string item) { m_host.AddScriptLPS(1); foreach (KeyValuePair inv in m_host.TaskInventory) @@ -7225,7 +7334,7 @@ namespace OpenSim.Region.ScriptEngine.Common // wComm.DeliverMessage(ChatTypeEnum.Owner, 0, m_host.Name, m_host.UUID, msg); } - public string llRequestSimulatorData(string simulator, int data) + public LSL_String llRequestSimulatorData(string simulator, int data) { try { @@ -7243,7 +7352,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(1000); return UUID.Zero.ToString(); } - reply = new LSL_Types.Vector3( + reply = new LSL_Vector( info.RegionLocX * Constants.RegionSize, info.RegionLocY * Constants.RegionSize, 0).ToString(); @@ -7299,7 +7408,7 @@ namespace OpenSim.Region.ScriptEngine.Common m_host.SetForceMouselook(mouselook != 0); } - public double llGetObjectMass(string id) + public LSL_Float llGetObjectMass(string id) { m_host.AddScriptLPS(1); UUID key = new UUID(); @@ -7322,9 +7431,9 @@ namespace OpenSim.Region.ScriptEngine.Common /// and the source list is added as a suffix. /// - public LSL_Types.list llListReplaceList(LSL_Types.list dest, LSL_Types.list src, int start, int end) + public LSL_List llListReplaceList(LSL_List dest, LSL_List src, int start, int end) { - LSL_Types.list pref = null; + LSL_List pref = null; m_host.AddScriptLPS(1); @@ -7401,7 +7510,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(10000); } - public void llParcelMediaCommandList(LSL_Types.list commandList) + public void llParcelMediaCommandList(LSL_List commandList) { //TO DO: Implement the missing commands //PARCEL_MEDIA_COMMAND_STOP Stop the media stream and go back to the first frame. @@ -7459,8 +7568,19 @@ namespace OpenSim.Region.ScriptEngine.Common { if (commandList.Data[i + 1] is string) { - //Set the new media URL only if the user is the owner of the land - osSetParcelMediaURL(commandList.Data[i + 1].ToString()); + UUID landowner = World.GetLandOwner(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); + + if (landowner == UUID.Zero) + { + return; + } + + if (landowner != m_host.ObjectOwner) + { + return; + } + + World.SetLandMediaURL(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y, (string)commandList.GetLSLStringItem(i + 1)); List scenePresenceList = World.GetScenePresences(); LandData landData = World.GetLandData(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); @@ -7485,12 +7605,13 @@ namespace OpenSim.Region.ScriptEngine.Common }//end switch } + // ScriptSleep(2000); } - public LSL_Types.list llParcelMediaQuery(LSL_Types.list aList) + public LSL_List llParcelMediaQuery(LSL_List aList) { m_host.AddScriptLPS(1); - LSL_Types.list list = new LSL_Types.list(); + LSL_List list = new LSL_List(); //TO DO: make the implementation for the missing commands //PARCEL_MEDIA_COMMAND_TEXTURE key uuid Use this to get or set the parcel's media texture. //PARCEL_MEDIA_COMMAND_URL string url Used to get or set the parcel's media url. @@ -7506,13 +7627,13 @@ namespace OpenSim.Region.ScriptEngine.Common switch ((ParcelMediaCommandEnum) aList.Data[i]) { case ParcelMediaCommandEnum.Url: - list.Add(World.GetLandData(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).MediaURL); + list.Add(new LSL_String(World.GetLandData(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).MediaURL)); break; case ParcelMediaCommandEnum.Desc: - list.Add(World.GetLandData(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).Description); + list.Add(new LSL_String(World.GetLandData(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).Description)); break; case ParcelMediaCommandEnum.Texture: - list.Add(World.GetLandData(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).MediaID); + list.Add(new LSL_String(World.GetLandData(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).MediaID.ToString())); break; default: ParcelMediaCommandEnum mediaCommandEnum = ParcelMediaCommandEnum.Url; @@ -7526,7 +7647,7 @@ namespace OpenSim.Region.ScriptEngine.Common return list; } - public LSL_Types.LSLInteger llModPow(int a, int b, int c) + public LSL_Integer llModPow(int a, int b, int c) { m_host.AddScriptLPS(1); Int64 tmp = 0; @@ -7535,7 +7656,7 @@ namespace OpenSim.Region.ScriptEngine.Common return Convert.ToInt32(tmp); } - public LSL_Types.LSLInteger llGetInventoryType(string name) + public LSL_Integer llGetInventoryType(string name) { m_host.AddScriptLPS(1); foreach (KeyValuePair inv in m_host.TaskInventory) @@ -7548,7 +7669,7 @@ namespace OpenSim.Region.ScriptEngine.Common return -1; } - public void llSetPayPrice(int price, LSL_Types.list quick_pay_buttons) + public void llSetPayPrice(int price, LSL_List quick_pay_buttons) { m_host.AddScriptLPS(1); @@ -7558,42 +7679,41 @@ namespace OpenSim.Region.ScriptEngine.Common return; } m_host.ParentGroup.RootPart.PayPrice[0]=price; - m_host.ParentGroup.RootPart.PayPrice[1]=(int)quick_pay_buttons.Data[0]; - m_host.ParentGroup.RootPart.PayPrice[2]=(int)quick_pay_buttons.Data[1]; - m_host.ParentGroup.RootPart.PayPrice[3]=(int)quick_pay_buttons.Data[2]; - m_host.ParentGroup.RootPart.PayPrice[4]=(int)quick_pay_buttons.Data[3]; + + m_host.ParentGroup.RootPart.PayPrice[1]=(LSL_Integer)quick_pay_buttons.Data[0]; + m_host.ParentGroup.RootPart.PayPrice[2]=(LSL_Integer)quick_pay_buttons.Data[1]; + m_host.ParentGroup.RootPart.PayPrice[3]=(LSL_Integer)quick_pay_buttons.Data[2]; + m_host.ParentGroup.RootPart.PayPrice[4]=(LSL_Integer)quick_pay_buttons.Data[3]; + m_host.ParentGroup.HasGroupChanged = true; } - public LSL_Types.Vector3 llGetCameraPos() + public LSL_Vector llGetCameraPos() { m_host.AddScriptLPS(1); UUID invItemID=InventorySelf(); if (invItemID == UUID.Zero) - return new LSL_Types.Vector3(); + return new LSL_Vector(); if (m_host.TaskInventory[invItemID].PermsGranter == UUID.Zero) - return new LSL_Types.Vector3(); + return new LSL_Vector(); if ((m_host.TaskInventory[invItemID].PermsMask & BuiltIn_Commands_BaseClass.PERMISSION_TRACK_CAMERA) == 0) { ShoutError("No permissions to track the camera"); - return new LSL_Types.Vector3(); + return new LSL_Vector(); } ScenePresence presence = World.GetScenePresence(m_host.OwnerID); if (presence != null) { - LSL_Types.Vector3 pos = new LSL_Types.Vector3( - presence.CameraPosition.X, - presence.CameraPosition.Y, - presence.CameraPosition.Z); + LSL_Vector pos = new LSL_Vector(presence.CameraPosition.X, presence.CameraPosition.Y, presence.CameraPosition.Z); return pos; } - return new LSL_Types.Vector3(); + return new LSL_Vector(); } - public LSL_Types.Quaternion llGetCameraRot() + public LSL_Rotation llGetCameraRot() { m_host.AddScriptLPS(1); NotImplemented("llGetCameraRot"); - return new LSL_Types.Quaternion(); + return new LSL_Rotation(); } public void llSetPrimURL() @@ -7610,7 +7730,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(20000); } - public string llEscapeURL(string url) + public LSL_String llEscapeURL(string url) { m_host.AddScriptLPS(1); try @@ -7623,7 +7743,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public string llUnescapeURL(string url) + public LSL_String llUnescapeURL(string url) { m_host.AddScriptLPS(1); try @@ -7636,7 +7756,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public void llMapDestination(string simname, LSL_Types.Vector3 pos, LSL_Types.Vector3 look_at) + public void llMapDestination(string simname, LSL_Vector pos, LSL_Vector look_at) { m_host.AddScriptLPS(1); NotImplemented("llMapDestination"); @@ -7706,7 +7826,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(100); } - public void llSetCameraParams(LSL_Types.list rules) + public void llSetCameraParams(LSL_List rules) { m_host.AddScriptLPS(1); @@ -7731,7 +7851,7 @@ namespace OpenSim.Region.ScriptEngine.Common SortedDictionary parameters = new SortedDictionary(); object[] data = rules.Data; for (int i = 0; i < data.Length; ++i) { - int type = Convert.ToInt32(data[i++]); + int type = Convert.ToInt32(data[i++].ToString()); if (i >= data.Length) break; // odd number of entries => ignore the last // some special cases: Vector parameters are split into 3 float parameters (with type+1, type+2, type+3) @@ -7739,17 +7859,17 @@ namespace OpenSim.Region.ScriptEngine.Common case BuiltIn_Commands_BaseClass.CAMERA_FOCUS: case BuiltIn_Commands_BaseClass.CAMERA_FOCUS_OFFSET: case BuiltIn_Commands_BaseClass.CAMERA_POSITION: - LSL_Types.Vector3 v = (LSL_Types.Vector3)data[i]; + LSL_Vector v = (LSL_Vector)data[i]; parameters.Add(type + 1, (float)v.x); parameters.Add(type + 2, (float)v.y); parameters.Add(type + 3, (float)v.z); break; default: // TODO: clean that up as soon as the implicit casts are in - if (data[i] is LSL_Types.LSLFloat) - parameters.Add(type, (float)((LSL_Types.LSLFloat)data[i]).value); - else if (data[i] is LSL_Types.LSLInteger) - parameters.Add(type, (float)((LSL_Types.LSLInteger)data[i]).value); + if (data[i] is LSL_Float) + parameters.Add(type, (float)((LSL_Float)data[i]).value); + else if (data[i] is LSL_Integer) + parameters.Add(type, (float)((LSL_Integer)data[i]).value); else parameters.Add(type, Convert.ToSingle(data[i])); break; } @@ -7782,10 +7902,10 @@ namespace OpenSim.Region.ScriptEngine.Common presence.ControllingClient.SendClearFollowCamProperties(objectID); } - public double llListStatistics(int operation, LSL_Types.list src) + public LSL_Float llListStatistics(int operation, LSL_List src) { m_host.AddScriptLPS(1); - LSL_Types.list nums = LSL_Types.list.ToDoubleList(src); + LSL_List nums = LSL_List.ToDoubleList(src); switch (operation) { case BuiltIn_Commands_BaseClass.LIST_STAT_RANGE: @@ -7815,19 +7935,19 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llGetUnixTime() + public LSL_Integer llGetUnixTime() { m_host.AddScriptLPS(1); return Util.UnixTimeSinceEpoch(); } - public LSL_Types.LSLInteger llGetParcelFlags(LSL_Types.Vector3 pos) + public LSL_Integer llGetParcelFlags(LSL_Vector pos) { m_host.AddScriptLPS(1); return (int)World.LandChannel.GetLandObject((float)pos.x, (float)pos.y).landData.Flags; } - public LSL_Types.LSLInteger llGetRegionFlags() + public LSL_Integer llGetRegionFlags() { m_host.AddScriptLPS(1); IEstateModule estate = World.RequestModuleInterface(); @@ -7836,7 +7956,7 @@ namespace OpenSim.Region.ScriptEngine.Common return (int)estate.GetRegionFlags(); } - public string llXorBase64StringsCorrect(string str1, string str2) + public LSL_String llXorBase64StringsCorrect(string str1, string str2) { m_host.AddScriptLPS(1); string ret = String.Empty; @@ -7854,7 +7974,7 @@ namespace OpenSim.Region.ScriptEngine.Common return llStringToBase64(ret); } - public string llHTTPRequest(string url, LSL_Types.list parameters, string body) + public LSL_String llHTTPRequest(string url, LSL_List parameters, string body) { // Partial implementation: support for parameter flags needed // see http://wiki.secondlife.com/wiki/LlHTTPRequest @@ -7931,7 +8051,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(100); } - public LSL_Types.LSLInteger llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide) + public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide) { m_host.AddScriptLPS(1); @@ -7994,11 +8114,11 @@ namespace OpenSim.Region.ScriptEngine.Common return 0; } - public LSL_Types.list llGetParcelPrimOwners(LSL_Types.Vector3 pos) + public LSL_List llGetParcelPrimOwners(LSL_Vector pos) { m_host.AddScriptLPS(1); LandObject land = (LandObject)World.LandChannel.GetLandObject((float)pos.x, (float)pos.y); - LSL_Types.list ret = new LSL_Types.list(); + LSL_List ret = new LSL_List(); if (land != null) { foreach (KeyValuePair d in land.getLandObjectOwners()) @@ -8011,7 +8131,7 @@ namespace OpenSim.Region.ScriptEngine.Common return ret; } - public LSL_Types.LSLInteger llGetObjectPrimCount(string object_id) + public LSL_Integer llGetObjectPrimCount(string object_id) { m_host.AddScriptLPS(1); SceneObjectPart part = World.GetSceneObjectPart(new UUID(object_id)); @@ -8025,7 +8145,7 @@ namespace OpenSim.Region.ScriptEngine.Common } } - public LSL_Types.LSLInteger llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide) + public LSL_Integer llGetParcelMaxPrims(LSL_Vector pos, int sim_wide) { m_host.AddScriptLPS(1); // Alondria: This currently just is utilizing the normal grid's 0.22 prims/m2 calculation @@ -8055,36 +8175,36 @@ namespace OpenSim.Region.ScriptEngine.Common } - public LSL_Types.list llGetParcelDetails(LSL_Types.Vector3 pos, LSL_Types.list param) + public LSL_List llGetParcelDetails(LSL_Vector pos, LSL_List param) { m_host.AddScriptLPS(1); LandData land = World.GetLandData((float)pos.x, (float)pos.y); if (land == null) { - return new LSL_Types.list(0); + return new LSL_List(0); } - LSL_Types.list ret = new LSL_Types.list(); + LSL_List ret = new LSL_List(); foreach (object o in param.Data) { switch (o.ToString()) { case "0": - ret = ret + new LSL_Types.list(land.Name); + ret = ret + new LSL_List(land.Name); break; case "1": - ret = ret + new LSL_Types.list(land.Description); + ret = ret + new LSL_List(land.Description); break; case "2": - ret = ret + new LSL_Types.list(land.OwnerID.ToString()); + ret = ret + new LSL_List(land.OwnerID.ToString()); break; case "3": - ret = ret + new LSL_Types.list(land.GroupID.ToString()); + ret = ret + new LSL_List(land.GroupID.ToString()); break; case "4": - ret = ret + new LSL_Types.list(land.Area); + ret = ret + new LSL_List(land.Area); break; default: - ret = ret + new LSL_Types.list(0); + ret = ret + new LSL_List(0); break; } } @@ -8107,7 +8227,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(200); } - public string llStringTrim(string src, int type) + public LSL_String llStringTrim(string src, int type) { m_host.AddScriptLPS(1); if (type == (int)BuiltIn_Commands_BaseClass.STRING_TRIM_HEAD) { return src.TrimStart(); } @@ -8116,10 +8236,10 @@ namespace OpenSim.Region.ScriptEngine.Common return src; } - public LSL_Types.list llGetObjectDetails(string id, LSL_Types.list args) + public LSL_List llGetObjectDetails(string id, LSL_List args) { m_host.AddScriptLPS(1); - LSL_Types.list ret = new LSL_Types.list(); + LSL_List ret = new LSL_List(); UUID key = new UUID(); if (UUID.TryParse(id, out key)) { @@ -8138,13 +8258,13 @@ namespace OpenSim.Region.ScriptEngine.Common ret.Add(""); break; case "3": - ret.Add(new LSL_Types.Vector3((double)av.AbsolutePosition.X, (double)av.AbsolutePosition.Y, (double)av.AbsolutePosition.Z)); + ret.Add(new LSL_Vector((double)av.AbsolutePosition.X, (double)av.AbsolutePosition.Y, (double)av.AbsolutePosition.Z)); break; case "4": - ret.Add(new LSL_Types.Quaternion((double)av.Rotation.X, (double)av.Rotation.Y, (double)av.Rotation.Z, (double)av.Rotation.W)); + ret.Add(new LSL_Rotation((double)av.Rotation.X, (double)av.Rotation.Y, (double)av.Rotation.Z, (double)av.Rotation.W)); break; case "5": - ret.Add(new LSL_Types.Vector3(av.Velocity.X, av.Velocity.Y, av.Velocity.Z)); + ret.Add(new LSL_Vector(av.Velocity.X, av.Velocity.Y, av.Velocity.Z)); break; case "6": ret.Add(id); @@ -8173,13 +8293,13 @@ namespace OpenSim.Region.ScriptEngine.Common ret.Add(obj.Description); break; case "3": - ret.Add(new LSL_Types.Vector3(obj.AbsolutePosition.X, obj.AbsolutePosition.Y, obj.AbsolutePosition.Z)); + ret.Add(new LSL_Vector(obj.AbsolutePosition.X, obj.AbsolutePosition.Y, obj.AbsolutePosition.Z)); break; case "4": - ret.Add(new LSL_Types.Quaternion(obj.RotationOffset.X, obj.RotationOffset.Y, obj.RotationOffset.Z, obj.RotationOffset.W)); + ret.Add(new LSL_Rotation(obj.RotationOffset.X, obj.RotationOffset.Y, obj.RotationOffset.Z, obj.RotationOffset.W)); break; case "5": - ret.Add(new LSL_Types.Vector3(obj.Velocity.X, obj.Velocity.Y, obj.Velocity.Z)); + ret.Add(new LSL_Vector(obj.Velocity.X, obj.Velocity.Y, obj.Velocity.Z)); break; case "6": ret.Add(obj.OwnerID.ToString()); @@ -8195,7 +8315,7 @@ namespace OpenSim.Region.ScriptEngine.Common return ret; } } - return new LSL_Types.list(); + return new LSL_List(); } @@ -8232,7 +8352,7 @@ namespace OpenSim.Region.ScriptEngine.Common throw new Exception("LSL Runtime Error: " + msg); } - public string llGetNumberOfNotecardLines(string name) + public LSL_String llGetNumberOfNotecardLines(string name) { m_host.AddScriptLPS(1); @@ -8255,7 +8375,7 @@ namespace OpenSim.Region.ScriptEngine.Common // ScriptSleep(100); } - public string llGetNotecardLine(string name, int line) + public LSL_String llGetNotecardLine(string name, int line) { m_host.AddScriptLPS(1); diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs index d4cf3f5..fa468bd 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs @@ -27,6 +27,14 @@ using OpenSim.Region.Environment.Interfaces; +using LSL_Float = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLFloat; +using LSL_Integer = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLInteger; +using LSL_Key = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; +using LSL_List = OpenSim.Region.ScriptEngine.Common.LSL_Types.list; +using LSL_Rotation = OpenSim.Region.ScriptEngine.Common.LSL_Types.Quaternion; +using LSL_String = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; +using LSL_Vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; + namespace OpenSim.Region.ScriptEngine.Common { public interface LSL_BuiltIn_Commands_Interface @@ -37,618 +45,347 @@ namespace OpenSim.Region.ScriptEngine.Common ICommander GetCommander(string name); - double llSin(double f); - double llCos(double f); - double llTan(double f); - double llAtan2(double x, double y); - double llSqrt(double f); - double llPow(double fbase, double fexponent); - LSL_Types.LSLInteger llAbs(int i); - double llFabs(double f); - double llFrand(double mag); - LSL_Types.LSLInteger llFloor(double f); - LSL_Types.LSLInteger llCeil(double f); - LSL_Types.LSLInteger llRound(double f); - double llVecMag(LSL_Types.Vector3 v); - LSL_Types.Vector3 llVecNorm(LSL_Types.Vector3 v); - double llVecDist(LSL_Types.Vector3 a, LSL_Types.Vector3 b); - LSL_Types.Vector3 llRot2Euler(LSL_Types.Quaternion r); - LSL_Types.Quaternion llEuler2Rot(LSL_Types.Vector3 v); - LSL_Types.Quaternion llAxes2Rot(LSL_Types.Vector3 fwd, LSL_Types.Vector3 left, LSL_Types.Vector3 up); - LSL_Types.Vector3 llRot2Fwd(LSL_Types.Quaternion r); - LSL_Types.Vector3 llRot2Left(LSL_Types.Quaternion r); - LSL_Types.Vector3 llRot2Up(LSL_Types.Quaternion r); - LSL_Types.Quaternion llRotBetween(LSL_Types.Vector3 start, LSL_Types.Vector3 end); - void llWhisper(int channelID, string text); - //void llSay(int channelID, string text); - void llSay(int channelID, string text); - void llShout(int channelID, string text); - void llRegionSay(int channelID, string text); - LSL_Types.LSLInteger llListen(int channelID, string name, string ID, string msg); - void llListenControl(int number, int active); - void llListenRemove(int number); - void llSensor(string name, string id, int type, double range, double arc); - void llSensorRepeat(string name, string id, int type, double range, double arc, double rate); - void llSensorRemove(); - string llDetectedName(int number); - string llDetectedKey(int number); - string llDetectedOwner(int number); - LSL_Types.LSLInteger llDetectedType(int number); - LSL_Types.Vector3 llDetectedPos(int number); - LSL_Types.Vector3 llDetectedVel(int number); - LSL_Types.Vector3 llDetectedGrab(int number); - LSL_Types.Quaternion llDetectedRot(int number); - LSL_Types.LSLInteger llDetectedGroup(int number); - LSL_Types.LSLInteger llDetectedLinkNumber(int number); - void llDie(); - double llGround(LSL_Types.Vector3 offset); - double llCloud(LSL_Types.Vector3 offset); - LSL_Types.Vector3 llWind(LSL_Types.Vector3 offset); - void llSetStatus(int status, int value); - LSL_Types.LSLInteger llGetStatus(int status); - void llSetScale(LSL_Types.Vector3 scale); - LSL_Types.Vector3 llGetScale(); - void llSetColor(LSL_Types.Vector3 color, int face); - double llGetAlpha(int face); - void llSetAlpha(double alpha, int face); - LSL_Types.Vector3 llGetColor(int face); - void llSetTexture(string texture, int face); - void llScaleTexture(double u, double v, int face); - void llOffsetTexture(double u, double v, int face); - void llRotateTexture(double rotation, int face); - string llGetTexture(int face); - void llSetPos(LSL_Types.Vector3 pos); - - //wiki: vector llGetPos() - LSL_Types.Vector3 llGetPos(); - //wiki: vector llGetLocalPos() - LSL_Types.Vector3 llGetLocalPos(); - //wiki: llSetRot(rotation rot) - void llSetRot(LSL_Types.Quaternion rot); - //wiki: rotation llGetRot() - LSL_Types.Quaternion llGetRot(); - //wiki: rotation llGetLocalRot() - LSL_Types.Quaternion llGetLocalRot(); - //wiki: llSetForce(vector force, integer local) - void llSetForce(LSL_Types.Vector3 force, int local); - //wiki: vector llGetForce() - LSL_Types.Vector3 llGetForce(); - //wiki: integer llTarget(vector position, double range) - LSL_Types.LSLInteger llTarget(LSL_Types.Vector3 position, double range); - //wiki: llTargetRemove(integer number) - void llTargetRemove(int number); - //wiki: integer llRotTarget(rotation rot, double error) - LSL_Types.LSLInteger llRotTarget(LSL_Types.Quaternion rot, double error); - //wiki: integer llRotTargetRemove(integer number) - void llRotTargetRemove(int number); - //wiki: llMoveToTarget(vector target, double tau) - void llMoveToTarget(LSL_Types.Vector3 target, double tau); - //wiki: llStopMoveToTarget() - void llStopMoveToTarget(); - //wiki: llApplyImpulse(vector force, integer local) - void llApplyImpulse(LSL_Types.Vector3 force, int local); - //wiki: llapplyRotationalImpulse(vector force, integer local) - void llApplyRotationalImpulse(LSL_Types.Vector3 force, int local); - //wiki: llSetTorque(vector torque, integer local) - void llSetTorque(LSL_Types.Vector3 torque, int local); - //wiki: vector llGetTorque() - LSL_Types.Vector3 llGetTorque(); - //wiki: llSeForceAndTorque(vector force, vector torque, integer local) - void llSetForceAndTorque(LSL_Types.Vector3 force, LSL_Types.Vector3 torque, int local); - //wiki: vector llGetVel() - LSL_Types.Vector3 llGetVel(); - //wiki: vector llGetAccel() - LSL_Types.Vector3 llGetAccel(); - //wiki: vector llGetOmega() - LSL_Types.Vector3 llGetOmega(); - //wiki: double llGetTimeOfDay() - double llGetTimeOfDay(); - //wiki: double llGetWallclock() - double llGetWallclock(); - //wiki: double llGetTime() - double llGetTime(); - //wiki: llResetTime() - void llResetTime(); - //wiki: double llGetAndResetTime() - double llGetAndResetTime(); - //wiki (deprecated) llSound(string sound, double volume, integer queue, integer loop) - void llSound(); - //wiki: llPlaySound(string sound, double volume) - void llPlaySound(string sound, double volume); - //wiki: llLoopSound(string sound, double volume) - void llLoopSound(string sound, double volume); - //wiki: llLoopSoundMaster(string sound, double volume) - void llLoopSoundMaster(string sound, double volume); - //wiki: llLoopSoundSlave(string sound, double volume) - void llLoopSoundSlave(string sound, double volume); - //wiki llPlaySoundSlave(string sound, double volume) - void llPlaySoundSlave(string sound, double volume); - //wiki: llTriggerSound(string sound, double volume) - void llTriggerSound(string sound, double volume); - //wiki: llStopSound() - void llStopSound(); - //wiki: llPreloadSound(string sound) - void llPreloadSound(string sound); - //wiki: string llGetSubString(string src, integer start, integer end) - string llGetSubString(string src, int start, int end); - //wiki: string llDeleteSubString(string src, integer start, integer end) - string llDeleteSubString(string src, int start, int end); - //wiki string llInsertString(string dst, integer position, string src) - string llInsertString(string dst, int position, string src); - //wiki: string llToUpper(string source) - string llToUpper(string source); - //wiki: string llToLower(string source) - string llToLower(string source); - //wiki: integer llGiveMoney(key destination, integer amount) - LSL_Types.LSLInteger llGiveMoney(string destination, int amount); - //wiki: (deprecated) - void llMakeExplosion(); - //wiki: (deprecated) - void llMakeFountain(); - //wiki: (deprecated) - void llMakeSmoke(); - //wiki: (deprecated) - void llMakeFire(); - //wiki: llRezObject(string inventory, vector pos, vector rel, rotation rot, integer param) - void llRezObject(string inventory, LSL_Types.Vector3 pos, LSL_Types.Vector3 vel, LSL_Types.Quaternion rot, int param); - //wiki: llLookAt(vector target, double strength, double damping) - void llLookAt(LSL_Types.Vector3 target, double strength, double damping); - //wiki: llStopLookAt() - void llStopLookAt(); - //wiki: llSetTimerEvent(double sec) - void llSetTimerEvent(double sec); - //wiki: llSleep(double sec) - void llSleep(double sec); - //wiki: double llGetMass() - double llGetMass(); - //wiki: llCollisionFilter(string name, key id, integer accept) - void llCollisionFilter(string name, string id, int accept); - //wiki: llTakeControls(integer controls, integer accept, integer pass_on) - void llTakeControls(int controls, int accept, int pass_on); - //wiki: llReleaseControls() - void llReleaseControls(); - //wiki: llAttachToAvatar(integer attachment) - void llAttachToAvatar(int attachment); - //wiki: llDetachFromAvatar() - void llDetachFromAvatar(); - //wiki: (deprecated) llTakeCamera(key avatar) - void llTakeCamera(string avatar); - //wiki: (deprecated) llReleaseCamera(key avatar) - void llReleaseCamera(string avatar); - //wiki: key llGetOwner() - string llGetOwner(); - //wiki: llInstantMessage(key user, string message) - void llInstantMessage(string user, string message); - //wiki: llEmail(string address, string subject, string message) - void llEmail(string address, string subject, string message); - //wiki: llGetNextEmail(string address, string subject) - void llGetNextEmail(string address, string subject); - //wiki: key llGetKey() - string llGetKey(); - //wiki: llSetBuoyancy(double buoyancy) - void llSetBuoyancy(double buoyancy); - //wiki: llSetHoverHeight(double height, integer water, double tau) - void llSetHoverHeight(double height, int water, double tau); - //wiki: llStopHover - void llStopHover(); - //wiki: llMinEventDelay(double delay) - void llMinEventDelay(double delay); - //wiki: (deprecated) llSoundPreload() - void llSoundPreload(); - //wiki: llRotLookAt(rotation target, double strength, double damping) - void llRotLookAt(LSL_Types.Quaternion target, double strength, double damping); - //wiki: integer llStringLength(string str) - LSL_Types.LSLInteger llStringLength(string str); - //wiki: llStartAnimation(string anim) - void llStartAnimation(string anim); - //wiki: llStopAnimation(string anim) - void llStopAnimation(string anim); - //wiki: (deprecated) llPointAt - void llPointAt(); - //wiki: (deprecated) llStopPointAt - void llStopPointAt(); - //wiki: llTargetOmega(vector axis, double spinrate, double gain) - void llTargetOmega(LSL_Types.Vector3 axis, double spinrate, double gain); - //wiki: integer llGetStartParameter() - LSL_Types.LSLInteger llGetStartParameter(); - //wiki: llGodLikeRezObject(key inventory, vector pos) - void llGodLikeRezObject(string inventory, LSL_Types.Vector3 pos); - //wiki: llRequestPermissions(key agent, integer perm) - void llRequestPermissions(string agent, int perm); - //wiki: key llGetPermissionsKey() - string llGetPermissionsKey(); - //wiki: integer llGetPermissions() - LSL_Types.LSLInteger llGetPermissions(); - //wiki integer llGetLinkNumber() - LSL_Types.LSLInteger llGetLinkNumber(); - //wiki: llSetLinkColor(integer linknumber, vector color, integer face) - void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face); - //wiki: llCreateLink(key target, integer parent) - void llCreateLink(string target, int parent); - //wiki: llBreakLink(integer linknum) - void llBreakLink(int linknum); - //wiki: llBreakAllLinks() - void llBreakAllLinks(); - //wiki: key llGetLinkKey(integer linknum) - string llGetLinkKey(int linknum); - //wiki: llGetLinkName(integer linknum) - string llGetLinkName(int linknum); - //wiki: integer llGetInventoryNumber(integer type) - LSL_Types.LSLInteger llGetInventoryNumber(int type); - //wiki: string llGetInventoryName(integer type, integer number) - string llGetInventoryName(int type, int number); - //wiki: llSetScriptState(string name, integer run) - void llSetScriptState(string name, int run); - //wiki: double llGetEnergy() - double llGetEnergy(); - //wiki: llGiveInventory(key destination, string inventory) - void llGiveInventory(string destination, string inventory); - //wiki: llRemoveInventory(string item) - void llRemoveInventory(string item); - //wiki: llSetText(string text, vector color, double alpha) - void llSetText(string text, LSL_Types.Vector3 color, double alpha); - //wiki: double llWater(vector offset) - double llWater(LSL_Types.Vector3 offset); - //wiki: llPassTouches(integer pass) - void llPassTouches(int pass); - //wiki: key llRequestAgentData(key id, integer data) - string llRequestAgentData(string id, int data); - //wiki: key llRequestInventoryData(string name) - string llRequestInventoryData(string name); - //wiki: llSetDamage(double damage) - void llSetDamage(double damage); - //wiki: llTeleportAgentHome(key agent) - void llTeleportAgentHome(string agent); - //wiki: llModifyLand(integer action, integer brush) - void llModifyLand(int action, int brush); - //wiki: llCollisionSound(string impact_sound, double impact_volume) - void llCollisionSound(string impact_sound, double impact_volume); - //wiki: llCollisionSprite(string impact_sprite) - void llCollisionSprite(string impact_sprite); - //wiki: string llGetAnimation(key id) - string llGetAnimation(string id); - //wiki: llResetScript() - void llResetScript(); - //wiki: llMessageLinked(integer linknum, integer num, string str, key id) - void llMessageLinked(int linknum, int num, string str, string id); - //wiki: llPushObject(key target, vector impulse, vector ang_impulse, integer local) - void llPushObject(string target, LSL_Types.Vector3 impulse, LSL_Types.Vector3 ang_impulse, int local); - //wiki: llPassCollisions(integer pass) - void llPassCollisions(int pass); - //wiki: string llGetScriptName() - string llGetScriptName(); - //wiki: integer llGetNumberOfSides() - LSL_Types.LSLInteger llGetNumberOfSides(); - //wiki: rotation llAxisAngle2Rot(vector axis, double angle) - LSL_Types.Quaternion llAxisAngle2Rot(LSL_Types.Vector3 axis, double angle); - //wiki: vector llRot2Axis(rotation rot) - LSL_Types.Vector3 llRot2Axis(LSL_Types.Quaternion rot); - //wiki: double llRot2Angle(rotation rot); - double llRot2Angle(LSL_Types.Quaternion rot); - //wiki: double llAcos(double val) - double llAcos(double val); - //wiki: double llAsin(double val) - double llAsin(double val); - //wiki: double llAngleBetween(rotation a, rotation b) - double llAngleBetween(LSL_Types.Quaternion a, LSL_Types.Quaternion b); - //wiki: string llGetInventoryKey(string name) - string llGetInventoryKey(string name); - //wiki: llAllowInventoryDrop(integer add) - void llAllowInventoryDrop(int add); - //wiki: vector llGetSunDirection() - LSL_Types.Vector3 llGetSunDirection(); - //wiki: vector llGetTextureOffset(integer face) - LSL_Types.Vector3 llGetTextureOffset(int face); - //wiki: vector llGetTextureScale(integer side) - LSL_Types.Vector3 llGetTextureScale(int side); - //wiki: double llGetTextureRot(integer side) - double llGetTextureRot(int side); - //wiki: integer llSubStringIndex(string source, string pattern) - LSL_Types.LSLInteger llSubStringIndex(string source, string pattern); - //wiki: key llGetOwnerKey(key id) - string llGetOwnerKey(string id); - //wiki: vector llGetCenterOfMass() - LSL_Types.Vector3 llGetCenterOfMass(); - //wiki: list llListSort(list src, integer stride, integer ascending) - LSL_Types.list llListSort(LSL_Types.list src, int stride, int ascending); - //integer llGetListLength(list src) - LSL_Types.LSLInteger llGetListLength(LSL_Types.list src); - //wiki: integer llList2Integer(list src, integer index) - LSL_Types.LSLInteger llList2Integer(LSL_Types.list src, int index); - //wiki: double llList2double(list src, integer index) - double llList2Float(LSL_Types.list src, int index); - double osList2Double(LSL_Types.list src, int index); - //wiki: string llList2String(list src, integer index) - string llList2String(LSL_Types.list src, int index); - //wiki: key llList2Key(list src, integer index) - string llList2Key(LSL_Types.list src, int index); - //wiki: vector llList2Vector(list src, integer index) - LSL_Types.Vector3 llList2Vector(LSL_Types.list src, int index); - //wiki rotation llList2Rot(list src, integer index) - LSL_Types.Quaternion llList2Rot(LSL_Types.list src, int index); - //wiki: list llList2List(list src, integer start, integer end) - LSL_Types.list llList2List(LSL_Types.list src, int start, int end); - //wiki: llDeleteSubList(list src, integer start, integer end) - LSL_Types.list llDeleteSubList(LSL_Types.list src, int start, int end); - //wiki: integer llGetListEntryType(list src, integer index) - LSL_Types.LSLInteger llGetListEntryType(LSL_Types.list src, int index); - //wiki: string llList2CSV(list src) - string llList2CSV(LSL_Types.list src); - //wiki: list llCSV2List(string src) - LSL_Types.list llCSV2List(string src); - //wiki: list llListRandomize(list src, integer stride) - LSL_Types.list llListRandomize(LSL_Types.list src, int stride); - //wiki: list llList2ListStrided(list src, integer start, integer end, integer stride) - LSL_Types.list llList2ListStrided(LSL_Types.list src, int start, int end, int stride); - //wiki: vector llGetRegionCorner() - LSL_Types.Vector3 llGetRegionCorner(); - //wiki: list llListInsertList(list dest, list src, integer start) - LSL_Types.list llListInsertList(LSL_Types.list dest, LSL_Types.list src, int start); - //wiki: integer llListFindList(list src, list test) - LSL_Types.LSLInteger llListFindList(LSL_Types.list src, LSL_Types.list test); - //wiki: string llGetObjectName() - string llGetObjectName(); - //wiki: llSetObjectName(string name) - void llSetObjectName(string name); - //wiki: string llGetDate() - string llGetDate(); - //wiki: integer llEdgeOfWorld(vector pos, vector dir) - LSL_Types.LSLInteger llEdgeOfWorld(LSL_Types.Vector3 pos, LSL_Types.Vector3 dir); - //wiki: integer llGetAgentInfo(key id) - LSL_Types.LSLInteger llGetAgentInfo(string id); - //wiki: llAdjustSoundVolume(double volume) - void llAdjustSoundVolume(double volume); - //wiki: llSetSoundQueueing(integer queue) - void llSetSoundQueueing(int queue); - //wiki: llSetSoundRadius(double radius) - void llSetSoundRadius(double radius); - //wiki: string llKey2Name(key id) - string llKey2Name(string id); - //wiki: llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, double start, double length, double rate) - void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate); - //wiki: llTriggerSoundLimited(string sound, double volume, vector top_north_east, vector bottom_south_west) - void llTriggerSoundLimited(string sound, double volume, LSL_Types.Vector3 top_north_east, - LSL_Types.Vector3 bottom_south_west); - - //wiki: llEjectFromLand(key pest) - void llEjectFromLand(string pest); - LSL_Types.list llParseString2List(string str, LSL_Types.list separators, LSL_Types.list spacers); - //wiki: integer llOverMyLand(key id) - LSL_Types.LSLInteger llOverMyLand(string id); - //wiki: key llGetLandOwnerAt(vector pos) - string llGetLandOwnerAt(LSL_Types.Vector3 pos); - //wiki: key llGetNotecardLine(string name, integer line) - string llGetNotecardLine(string name, int line); - //wiki: vector llGetAgentSize(key id) - LSL_Types.Vector3 llGetAgentSize(string id); - //wiki: integer llSameGroup(key agent) - LSL_Types.LSLInteger llSameGroup(string agent); - //wiki: llUnSit(key id) - void llUnSit(string id); - //wiki: vector llGroundSlope(vector offset) - LSL_Types.Vector3 llGroundSlope(LSL_Types.Vector3 offset); - //wiki: vector llGroundNormal(vector offset) - LSL_Types.Vector3 llGroundNormal(LSL_Types.Vector3 offset); - //wiki: vector llGroundContour(vector offset) - LSL_Types.Vector3 llGroundContour(LSL_Types.Vector3 offset); - //wiki: integer llGetAttached() - LSL_Types.LSLInteger llGetAttached(); - //wiki: integer llGetFreeMemory() - LSL_Types.LSLInteger llGetFreeMemory(); - //wiki: string llGetRegionName() - string llGetRegionName(); - //wiki: double llGetRegionTimeDilation() - double llGetRegionTimeDilation(); - //wiki: double llGetRegionFPS() - double llGetRegionFPS(); - //wiki: llParticleSystem(List rules - void llParticleSystem(LSL_Types.list rules); - //wiki: llGroundRepel(double height, integer water, double tau) - void llGroundRepel(double height, int water, double tau); - //wiki: llGiveInventoryList(string destination, string category, LSL_Types.list inventory) - void llGiveInventoryList(string destination, string category, LSL_Types.list inventory); - //wiki: llSetVehicleType(integer type) - void llSetVehicleType(int type); - //wiki: llSetVehicledoubleParam(integer param, double value) - void llSetVehicledoubleParam(int param, double value); - // wiki: llSetVehicleFloatParam(integer param, float value) - void llSetVehicleFloatParam(int param, float value); - //wiki: llSetVehicleVectorParam(integer param, vector vec) - void llSetVehicleVectorParam(int param, LSL_Types.Vector3 vec); - //wiki: llSetVehicleRotationParam(integer param, rotation rot) - void llSetVehicleRotationParam(int param, LSL_Types.Quaternion rot); - //wiki: llSetVehicleFlags(integer flags) - void llSetVehicleFlags(int flags); - //wiki: llRemoveVehicleFlags(integer flags) - void llRemoveVehicleFlags(int flags); - //wiki: llSitTarget(vector offset, rotation rot) - void llSitTarget(LSL_Types.Vector3 offset, LSL_Types.Quaternion rot); - //wiki key llAvatarOnSitTarget() - string llAvatarOnSitTarget(); - //wiki: llAddToLandPassList(key avatar, double hours) - void llAddToLandPassList(string avatar, double hours); - //wiki: llSetTouchText(string text) - void llSetTouchText(string text); - //wiki: llSetSitText(string text) - void llSetSitText(string text); - //wiki: llSetCameraEyeOffset(vector offset) - void llSetCameraEyeOffset(LSL_Types.Vector3 offset); - //wiki: llSeteCameraAtOffset(vector offset) - void llSetCameraAtOffset(LSL_Types.Vector3 offset); - // - string llDumpList2String(LSL_Types.list src, string seperator); - //wiki: integer llScriptDanger(vector pos) - LSL_Types.LSLInteger llScriptDanger(LSL_Types.Vector3 pos); - //wiki: llDialog(key avatar, string message, list buttons, integer chat_channel) - void llDialog(string avatar, string message, LSL_Types.list buttons, int chat_channel); - //wiki: llVolumeDetect(integer detect) - void llVolumeDetect(int detect); - //wiki: llResetOtherScript(string name) - void llResetOtherScript(string name); - //wiki: integer llGetScriptState(string name) - LSL_Types.LSLInteger llGetScriptState(string name); - //wiki: (deprecated) - void llRemoteLoadScript(); - //wiki: llSetRemoteScriptAccessPin(integer pin) - void llSetRemoteScriptAccessPin(int pin); - //wiki: llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param) - void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param); - //wiki: llOpenRemoteDataChannel() - void llOpenRemoteDataChannel(); - //wiki: key llSendRemoteData(key channel, string dest, integer idata, string sdata) - string llSendRemoteData(string channel, string dest, int idata, string sdata); - //wiki: llRemoteDataReply(key channel, key message_id, string sdata, integer idata) - void llRemoteDataReply(string channel, string message_id, string sdata, int idata); - //wiki: llCloseRemoteDataChannel(key channel) - void llCloseRemoteDataChannel(string channel); - //wiki: string llMD5String(string src, integer nonce) - string llMD5String(string src, int nonce); - //wiki: llSetPrimitiveParams(list rules) - void llSetPrimitiveParams(LSL_Types.list rules); - //wiki: llSetLinkPrimitiveParams(integer linknumber, list rules) - void llSetLinkPrimitiveParams(int linknumber, LSL_Types.list rules); - //wiki: string llStringToBase64(string str) - string llStringToBase64(string str); - //wiki: string llBase64ToString(string str) - string llBase64ToString(string str); - //wiki: (deprecated) - void llXorBase64Strings(); - //wiki: llRemoteDataSetRegion() - void llRemoteDataSetRegion(); - //wiki: double llLog10(double val) - double llLog10(double val); - //wiki: double llLog(double val) - double llLog(double val); - //wiki: list llGetAnimationList(key id) - LSL_Types.list llGetAnimationList(string id); - //wiki: llSetParcelMusicURL(string url) - void llSetParcelMusicURL(string url); - //wiki: vector llGetRootPosition() - LSL_Types.Vector3 llGetRootPosition(); - //wiki: rotation llGetRootRotation() - LSL_Types.Quaternion llGetRootRotation(); - //wiki: string llGetObjectDesc() - string llGetObjectDesc(); - //wiki: llSetObjectDesc(string desc) - void llSetObjectDesc(string desc); - //wiki: key llGetCreator() - string llGetCreator(); - //wiki: string llGetTimestamp() - string llGetTimestamp(); - //wiki: llSetLinkAlpha(integer linknumber, double alpha, integer face) - void llSetLinkAlpha(int linknumber, double alpha, int face); - //wiki: integer llGetNumberOfPrims() - LSL_Types.LSLInteger llGetNumberOfPrims(); - //wiki: key llGetNumberOfNotecardLines(string name) - string llGetNumberOfNotecardLines(string name); - //wiki: list llGetBoundingBox(key object) - LSL_Types.list llGetBoundingBox(string obj); - //wiki: vector llGetGeometricCenter() - LSL_Types.Vector3 llGetGeometricCenter(); - //wiki: list llGetPrimitiveParams(list rules) - LSL_Types.list llGetPrimitiveParams(LSL_Types.list rules); - //wiki: string llIntegerToBase64(integer number) - string llIntegerToBase64(int number); - //wiki integer llBase64ToInteger(string str) - LSL_Types.LSLInteger llBase64ToInteger(string str); - //wiki: double llGetGMTclock() - double llGetGMTclock(); - //wiki: string llGetSimulatorHostname() - string llGetSimulatorHostname(); - //llSetLocalRot(rotation rot) - void llSetLocalRot(LSL_Types.Quaternion rot); - //wiki: list llParseStringKeepNulls(string src, list separators, list spacers) - LSL_Types.list llParseStringKeepNulls(string src, LSL_Types.list seperators, LSL_Types.list spacers); - //wiki: llRezAtRoot(string inventory, vector position, vector velocity, rotation rot, integer param) - void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity, - LSL_Types.Quaternion rot, int param); - - //wiki: integer llGetObjectPermMask(integer mask) - LSL_Types.LSLInteger llGetObjectPermMask(int mask); - //wiki: llSetObjectPermMask(integer mask, integer value) - void llSetObjectPermMask(int mask, int value); - //wiki integer llGetInventoryPermMask(string item, integer mask) - LSL_Types.LSLInteger llGetInventoryPermMask(string item, int mask); - //wiki: llSetInventoryPermMask(string item, integer mask, integer value) - void llSetInventoryPermMask(string item, int mask, int value); - //wiki: key llGetInventoryCreator(string item) - string llGetInventoryCreator(string item); - //wiki: llOwnerSay(string msg) - void llOwnerSay(string msg); - //wiki: key llRequestSimulatorData(string simulator, integer data) - string llRequestSimulatorData(string simulator, int data); - //wiki: llForceMouselook(integer mouselook) - void llForceMouselook(int mouselook); - //wiki: double llGetObjectMass(key id) - double llGetObjectMass(string id); - LSL_Types.list llListReplaceList(LSL_Types.list dest, LSL_Types.list src, int start, int end); - //wiki: llLoadURL(key avatar_id, string message, string url) - void llLoadURL(string avatar_id, string message, string url); - //wiki: llParcelMediaCommandList(list commandList) - void llParcelMediaCommandList(LSL_Types.list commandList); - LSL_Types.list llParcelMediaQuery(LSL_Types.list aList); - //wiki integer llModPow(integer a, integer b, integer c) - LSL_Types.LSLInteger llModPow(int a, int b, int c); - //wiki: integer llGetInventoryType(string name) - LSL_Types.LSLInteger llGetInventoryType(string name); - //wiki: llSetPayPrice(integer price, list quick_pay_buttons) - void llSetPayPrice(int price, LSL_Types.list quick_pay_buttons); - //wiki: vector llGetCameraPos() - LSL_Types.Vector3 llGetCameraPos(); - //wiki rotation llGetCameraRot() - LSL_Types.Quaternion llGetCameraRot(); - //wiki: (deprecated) - void llSetPrimURL(); - //wiki: (deprecated) - void llRefreshPrimURL(); - //wiki: string llEscapeURL(string url) - string llEscapeURL(string url); - //wiki: string llUnescapeURL(string url) - string llUnescapeURL(string url); - //wiki: llMapDestination(string simname, vector pos, vector look_at) - void llMapDestination(string simname, LSL_Types.Vector3 pos, LSL_Types.Vector3 look_at); - //wiki: llAddToLandBanList(key avatar, double hours) - void llAddToLandBanList(string avatar, double hours); - //wiki: llRemoveFromLandPassList(key avatar) - void llRemoveFromLandPassList(string avatar); - //wiki: llRemoveFromLandBanList(key avatar) - void llRemoveFromLandBanList(string avatar); - //wiki: llSetCameraParams(list rules) - void llSetCameraParams(LSL_Types.list rules); - //wiki: llClearCameraParams() - void llClearCameraParams(); - //wiki: double llListStatistics(integer operation, list src) - double llListStatistics(int operation, LSL_Types.list src); - //wiki: integer llGetUnixTime() - LSL_Types.LSLInteger llGetUnixTime(); - //wiki: integer llGetParcelFlags(vector pos) - LSL_Types.LSLInteger llGetParcelFlags(LSL_Types.Vector3 pos); - //wiki: integer llGetRegionFlags() - LSL_Types.LSLInteger llGetRegionFlags(); - //wiki: string llXorBase64StringsCorrect(string str1, string str2) - string llXorBase64StringsCorrect(string str1, string str2); - string llHTTPRequest(string url, LSL_Types.list parameters, string body); - //wiki: llResetLandBanList() - void llResetLandBanList(); - //wiki: llResetLandPassList() - void llResetLandPassList(); - //wiki: integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide) - LSL_Types.LSLInteger llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide); - //wiki: list llGetParcelPrimOwners(vector pos) - LSL_Types.list llGetParcelPrimOwners(LSL_Types.Vector3 pos); - //wiki: integer llGetObjectPrimCount(key object_id) - LSL_Types.LSLInteger llGetObjectPrimCount(string object_id); - //wiki: integer llGetParcelMaxPrims(vector pos, integer sim_wide) - LSL_Types.LSLInteger llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide); - //wiki: llGetParcelDetails(vector pos, list params) - LSL_Types.list llGetParcelDetails(LSL_Types.Vector3 pos, LSL_Types.list param); - //wiki: llSetLinkTexture(integer linknumber, string texture, integer face) - void llSetLinkTexture(int linknumber, string texture, int face); - //wiki: string llStringTrim(string src, int type) - string llStringTrim(string src, int type); - //wiki: LSL_Types.list llGetObjectDetails(string id, LSL_Types.list args) - LSL_Types.list llGetObjectDetails(string id, LSL_Types.list args); - - void osSetRegionWaterHeight(double height); + LSL_Integer llAbs(int i); + LSL_Float llAcos(double val); + void llAddToLandBanList(string avatar, double hours); + void llAddToLandPassList(string avatar, double hours); + void llAdjustSoundVolume(double volume); + void llAllowInventoryDrop(int add); + LSL_Float llAngleBetween(LSL_Rotation a, LSL_Rotation b); + void llApplyImpulse(LSL_Vector force, int local); + void llApplyRotationalImpulse(LSL_Vector force, int local); + LSL_Float llAsin(double val); + LSL_Float llAtan2(double x, double y); + void llAttachToAvatar(int attachment); + LSL_Key llAvatarOnSitTarget(); + LSL_Rotation llAxes2Rot(LSL_Vector fwd, LSL_Vector left, LSL_Vector up); + LSL_Rotation llAxisAngle2Rot(LSL_Vector axis, double angle); + LSL_Integer llBase64ToInteger(string str); + LSL_String llBase64ToString(string str); + void llBreakAllLinks(); + void llBreakLink(int linknum); + LSL_Integer llCeil(double f); + void llClearCameraParams(); + void llCloseRemoteDataChannel(string channel); + LSL_Float llCloud(LSL_Vector offset); + void llCollisionFilter(string name, string id, int accept); + void llCollisionSound(string impact_sound, double impact_volume); + void llCollisionSprite(string impact_sprite); + LSL_Float llCos(double f); + void llCreateLink(string target, int parent); + LSL_List llCSV2List(string src); + LSL_List llDeleteSubList(LSL_List src, int start, int end); + LSL_String llDeleteSubString(string src, int start, int end); + void llDetachFromAvatar(); + LSL_Vector llDetectedGrab(int number); + LSL_Integer llDetectedGroup(int number); + LSL_Key llDetectedKey(int number); + LSL_Integer llDetectedLinkNumber(int number); + LSL_String llDetectedName(int number); + LSL_Key llDetectedOwner(int number); + LSL_Vector llDetectedPos(int number); + LSL_Rotation llDetectedRot(int number); + LSL_Integer llDetectedType(int number); + LSL_Vector llDetectedTouchBinormal(int index); + LSL_Integer llDetectedTouchFace(int index); + LSL_Vector llDetectedTouchNormal(int index); + LSL_Vector llDetectedTouchPos(int index); + LSL_Vector llDetectedTouchST(int index); + LSL_Vector llDetectedTouchUV(int index); + LSL_Vector llDetectedVel(int number); + void llDialog(string avatar, string message, LSL_List buttons, int chat_channel); + void llDie(); + LSL_String llDumpList2String(LSL_List src, string seperator); + LSL_Integer llEdgeOfWorld(LSL_Vector pos, LSL_Vector dir); + void llEjectFromLand(string pest); + void llEmail(string address, string subject, string message); + LSL_String llEscapeURL(string url); + LSL_Rotation llEuler2Rot(LSL_Vector v); + LSL_Float llFabs(double f); + LSL_Integer llFloor(double f); + void llForceMouselook(int mouselook); + LSL_Float llFrand(double mag); + LSL_Vector llGetAccel(); + LSL_Integer llGetAgentInfo(string id); + LSL_Vector llGetAgentSize(string id); + LSL_Float llGetAlpha(int face); + LSL_Float llGetAndResetTime(); + LSL_String llGetAnimation(string id); + LSL_List llGetAnimationList(string id); + LSL_Integer llGetAttached(); + LSL_List llGetBoundingBox(string obj); + LSL_Vector llGetCameraPos(); + LSL_Rotation llGetCameraRot(); + LSL_Vector llGetCenterOfMass(); + LSL_Vector llGetColor(int face); + LSL_String llGetCreator(); + LSL_String llGetDate(); + LSL_Float llGetEnergy(); + LSL_Vector llGetForce(); + LSL_Integer llGetFreeMemory(); + LSL_Vector llGetGeometricCenter(); + LSL_Float llGetGMTclock(); + LSL_Key llGetInventoryCreator(string item); + LSL_Key llGetInventoryKey(string name); + LSL_String llGetInventoryName(int type, int number); + LSL_Integer llGetInventoryNumber(int type); + LSL_Integer llGetInventoryPermMask(string item, int mask); + LSL_Integer llGetInventoryType(string name); + LSL_Key llGetKey(); + LSL_Key llGetLandOwnerAt(LSL_Vector pos); + LSL_Key llGetLinkKey(int linknum); + LSL_String llGetLinkName(int linknum); + LSL_Integer llGetLinkNumber(); + LSL_Integer llGetListEntryType(LSL_List src, int index); + LSL_Integer llGetListLength(LSL_List src); + LSL_Vector llGetLocalPos(); + LSL_Rotation llGetLocalRot(); + LSL_Float llGetMass(); + void llGetNextEmail(string address, string subject); + LSL_String llGetNotecardLine(string name, int line); + LSL_Key llGetNumberOfNotecardLines(string name); + LSL_Integer llGetNumberOfPrims(); + LSL_Integer llGetNumberOfSides(); + LSL_String llGetObjectDesc(); + LSL_List llGetObjectDetails(string id, LSL_List args); + LSL_Float llGetObjectMass(string id); + LSL_String llGetObjectName(); + LSL_Integer llGetObjectPermMask(int mask); + LSL_Integer llGetObjectPrimCount(string object_id); + LSL_Vector llGetOmega(); + LSL_Key llGetOwner(); + LSL_Key llGetOwnerKey(string id); + LSL_List llGetParcelDetails(LSL_Vector pos, LSL_List param); + LSL_Integer llGetParcelFlags(LSL_Vector pos); + LSL_Integer llGetParcelMaxPrims(LSL_Vector pos, int sim_wide); + LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide); + LSL_List llGetParcelPrimOwners(LSL_Vector pos); + LSL_Integer llGetPermissions(); + LSL_Key llGetPermissionsKey(); + LSL_Vector llGetPos(); + LSL_List llGetPrimitiveParams(LSL_List rules); + LSL_Integer llGetRegionAgentCount(); + LSL_Vector llGetRegionCorner(); + LSL_Integer llGetRegionFlags(); + LSL_Float llGetRegionFPS(); + LSL_String llGetRegionName(); + LSL_Float llGetRegionTimeDilation(); + LSL_Vector llGetRootPosition(); + LSL_Rotation llGetRootRotation(); + LSL_Rotation llGetRot(); + LSL_Vector llGetScale(); + LSL_String llGetScriptName(); + LSL_Integer llGetScriptState(string name); + LSL_String llGetSimulatorHostname(); + LSL_Integer llGetStartParameter(); + LSL_Integer llGetStatus(int status); + LSL_String llGetSubString(string src, int start, int end); + LSL_Vector llGetSunDirection(); + LSL_String llGetTexture(int face); + LSL_Vector llGetTextureOffset(int face); + LSL_Float llGetTextureRot(int side); + LSL_Vector llGetTextureScale(int side); + LSL_Float llGetTime(); + LSL_Float llGetTimeOfDay(); + LSL_String llGetTimestamp(); + LSL_Vector llGetTorque(); + LSL_Integer llGetUnixTime(); + LSL_Vector llGetVel(); + LSL_Float llGetWallclock(); + void llGiveInventory(string destination, string inventory); + void llGiveInventoryList(string destination, string category, LSL_List inventory); + LSL_Integer llGiveMoney(string destination, int amount); + void llGodLikeRezObject(string inventory, LSL_Vector pos); + LSL_Float llGround(LSL_Vector offset); + LSL_Vector llGroundContour(LSL_Vector offset); + LSL_Vector llGroundNormal(LSL_Vector offset); + void llGroundRepel(double height, int water, double tau); + LSL_Vector llGroundSlope(LSL_Vector offset); + LSL_String llHTTPRequest(string url, LSL_List parameters, string body); + LSL_String llInsertString(string dst, int position, string src); + void llInstantMessage(string user, string message); + LSL_String llIntegerToBase64(int number); + LSL_String llKey2Name(string id); + LSL_String llList2CSV(LSL_List src); + LSL_Float llList2Float(LSL_List src, int index); + LSL_Integer llList2Integer(LSL_List src, int index); + LSL_Key llList2Key(LSL_List src, int index); + LSL_List llList2List(LSL_List src, int start, int end); + LSL_List llList2ListStrided(LSL_List src, int start, int end, int stride); + LSL_Rotation llList2Rot(LSL_List src, int index); + LSL_String llList2String(LSL_List src, int index); + LSL_Vector llList2Vector(LSL_List src, int index); + LSL_Integer llListen(int channelID, string name, string ID, string msg); + void llListenControl(int number, int active); + void llListenRemove(int number); + LSL_Integer llListFindList(LSL_List src, LSL_List test); + LSL_List llListInsertList(LSL_List dest, LSL_List src, int start); + LSL_List llListRandomize(LSL_List src, int stride); + LSL_List llListReplaceList(LSL_List dest, LSL_List src, int start, int end); + LSL_List llListSort(LSL_List src, int stride, int ascending); + LSL_Float llListStatistics(int operation, LSL_List src); + void llLoadURL(string avatar_id, string message, string url); + LSL_Float llLog(double val); + LSL_Float llLog10(double val); + void llLookAt(LSL_Vector target, double strength, double damping); + void llLoopSound(string sound, double volume); + void llLoopSoundMaster(string sound, double volume); + void llLoopSoundSlave(string sound, double volume); + void llMakeExplosion(); + void llMakeFire(); + void llMakeFountain(); + void llMakeSmoke(); + void llMapDestination(string simname, LSL_Vector pos, LSL_Vector look_at); + LSL_String llMD5String(string src, int nonce); + void llMessageLinked(int linknum, int num, string str, string id); + void llMinEventDelay(double delay); + void llModifyLand(int action, int brush); + LSL_Integer llModPow(int a, int b, int c); + void llMoveToTarget(LSL_Vector target, double tau); + void llOffsetTexture(double u, double v, int face); + void llOpenRemoteDataChannel(); + LSL_Integer llOverMyLand(string id); + void llOwnerSay(string msg); + void llParcelMediaCommandList(LSL_List commandList); + LSL_List llParcelMediaQuery(LSL_List aList); + LSL_List llParseString2List(string str, LSL_List separators, LSL_List spacers); + LSL_List llParseStringKeepNulls(string src, LSL_List seperators, LSL_List spacers); + void llParticleSystem(LSL_List rules); + void llPassCollisions(int pass); + void llPassTouches(int pass); + void llPlaySound(string sound, double volume); + void llPlaySoundSlave(string sound, double volume); + void llPointAt(); + LSL_Float llPow(double fbase, double fexponent); + void llPreloadSound(string sound); + void llPushObject(string target, LSL_Vector impulse, LSL_Vector ang_impulse, int local); + void llRefreshPrimURL(); + void llRegionSay(int channelID, string text); + void llReleaseCamera(string avatar); + void llReleaseControls(); + void llRemoteDataReply(string channel, string message_id, string sdata, int idata); + void llRemoteDataSetRegion(); + void llRemoteLoadScript(); + void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param); + void llRemoveFromLandBanList(string avatar); + void llRemoveFromLandPassList(string avatar); + void llRemoveInventory(string item); + void llRemoveVehicleFlags(int flags); + LSL_Key llRequestAgentData(string id, int data); + LSL_Key llRequestInventoryData(string name); + void llRequestPermissions(string agent, int perm); + LSL_Key llRequestSimulatorData(string simulator, int data); + void llResetLandBanList(); + void llResetLandPassList(); + void llResetOtherScript(string name); + void llResetScript(); + void llResetTime(); + void llRezAtRoot(string inventory, LSL_Vector position, LSL_Vector velocity, LSL_Rotation rot, int param); + void llRezObject(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param); + LSL_Float llRot2Angle(LSL_Rotation rot); + LSL_Vector llRot2Axis(LSL_Rotation rot); + LSL_Vector llRot2Euler(LSL_Rotation r); + LSL_Vector llRot2Fwd(LSL_Rotation r); + LSL_Vector llRot2Left(LSL_Rotation r); + LSL_Vector llRot2Up(LSL_Rotation r); + void llRotateTexture(double rotation, int face); + LSL_Rotation llRotBetween(LSL_Vector start, LSL_Vector end); + void llRotLookAt(LSL_Rotation target, double strength, double damping); + LSL_Integer llRotTarget(LSL_Rotation rot, double error); + void llRotTargetRemove(int number); + LSL_Integer llRound(double f); + LSL_Integer llSameGroup(string agent); + void llSay(int channelID, string text); + void llScaleTexture(double u, double v, int face); + LSL_Integer llScriptDanger(LSL_Vector pos); + LSL_Key llSendRemoteData(string channel, string dest, int idata, string sdata); + void llSensor(string name, string id, int type, double range, double arc); + void llSensorRemove(); + void llSensorRepeat(string name, string id, int type, double range, double arc, double rate); + void llSetAlpha(double alpha, int face); + void llSetBuoyancy(double buoyancy); + void llSetCameraAtOffset(LSL_Vector offset); + void llSetCameraEyeOffset(LSL_Vector offset); + void llSetCameraParams(LSL_List rules); + void llSetClickAction(int action); + void llSetColor(LSL_Vector color, int face); + void llSetDamage(double damage); + void llSetForce(LSL_Vector force, int local); + void llSetForceAndTorque(LSL_Vector force, LSL_Vector torque, int local); + void llSetHoverHeight(double height, int water, double tau); + void llSetInventoryPermMask(string item, int mask, int value); + void llSetLinkAlpha(int linknumber, double alpha, int face); + void llSetLinkColor(int linknumber, LSL_Vector color, int face); + void llSetLinkPrimitiveParams(int linknumber, LSL_List rules); + void llSetLinkTexture(int linknumber, string texture, int face); + void llSetLocalRot(LSL_Rotation rot); + void llSetObjectDesc(string desc); + void llSetObjectName(string name); + void llSetObjectPermMask(int mask, int value); + void llSetParcelMusicURL(string url); + void llSetPayPrice(int price, LSL_List quick_pay_buttons); + void llSetPos(LSL_Vector pos); + void llSetPrimitiveParams(LSL_List rules); + void llSetPrimURL(); + void llSetRemoteScriptAccessPin(int pin); + void llSetRot(LSL_Rotation rot); + void llSetScale(LSL_Vector scale); + void llSetScriptState(string name, int run); + void llSetSitText(string text); + void llSetSoundQueueing(int queue); + void llSetSoundRadius(double radius); + void llSetStatus(int status, int value); + void llSetText(string text, LSL_Vector color, double alpha); + void llSetTexture(string texture, int face); + void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate); + void llSetTimerEvent(double sec); + void llSetTorque(LSL_Vector torque, int local); + void llSetTouchText(string text); + void llSetVehicleFlags(int flags); + void llSetVehicleFloatParam(int param, float value); + void llSetVehicleRotationParam(int param, LSL_Rotation rot); + void llSetVehicleType(int type); + void llSetVehicleVectorParam(int param, LSL_Vector vec); + void llShout(int channelID, string text); + LSL_Float llSin(double f); + void llSitTarget(LSL_Vector offset, LSL_Rotation rot); + void llSleep(double sec); + void llSound(); + void llSoundPreload(); + LSL_Float llSqrt(double f); + void llStartAnimation(string anim); + void llStopAnimation(string anim); + void llStopHover(); + void llStopLookAt(); + void llStopMoveToTarget(); + void llStopPointAt(); + void llStopSound(); + LSL_Integer llStringLength(string str); + LSL_String llStringToBase64(string str); + LSL_String llStringTrim(string src, int type); + LSL_Integer llSubStringIndex(string source, string pattern); + void llTakeCamera(string avatar); + void llTakeControls(int controls, int accept, int pass_on); + LSL_Float llTan(double f); + LSL_Integer llTarget(LSL_Vector position, double range); + void llTargetOmega(LSL_Vector axis, double spinrate, double gain); + void llTargetRemove(int number); + void llTeleportAgentHome(string agent); + void llTextBox(string avatar, string message, int chat_channel); + LSL_String llToLower(string source); + LSL_String llToUpper(string source); + void llTriggerSound(string sound, double volume); + void llTriggerSoundLimited(string sound, double volume, LSL_Vector top_north_east, LSL_Vector bottom_south_west); + LSL_String llUnescapeURL(string url); + void llUnSit(string id); + LSL_Float llVecDist(LSL_Vector a, LSL_Vector b); + LSL_Float llVecMag(LSL_Vector v); + LSL_Vector llVecNorm(LSL_Vector v); + void llVolumeDetect(int detect); + LSL_Float llWater(LSL_Vector offset); + void llWhisper(int channelID, string text); + LSL_Vector llWind(LSL_Vector offset); + void llXorBase64Strings(); + LSL_String llXorBase64StringsCorrect(string str1, string str2); } } diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs index bff2101..21646ea 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs @@ -123,7 +123,7 @@ namespace OpenSim.Region.ScriptEngine.Common Vector3 vector = (Vector3)o; - return (x == vector.x && y == vector.y && z == vector.y); + return (x == vector.x && y == vector.y && z == vector.z); } public static Vector3 operator -(Vector3 vector) @@ -419,6 +419,80 @@ namespace OpenSim.Region.ScriptEngine.Common m_data=new Object[0]; return m_data; } + + set {m_data = value; } + } + + // Member functions to obtain item as specific types. + // For cases where implicit conversions would apply if items + // were not in a list (e.g. integer to float, but not float + // to integer) functions check for alternate types so as to + // down-cast from Object to the correct type. + // Note: no checks for item index being valid are performed + + public LSL_Types.LSLFloat GetLSLFloatItem( int itemIndex ) + { + if (m_data[itemIndex] is LSL_Types.LSLInteger) + { + return (LSL_Types.LSLInteger)m_data[itemIndex]; + } + else if (m_data[itemIndex] is Int32) + { + return new LSL_Types.LSLFloat((int)m_data[itemIndex]); + } + else if (m_data[itemIndex] is float) + { + return new LSL_Types.LSLFloat((float)m_data[itemIndex]); + } + else if (m_data[itemIndex] is Double) + { + return new LSL_Types.LSLFloat((Double)m_data[itemIndex]); + } + else + { + return (LSL_Types.LSLFloat)m_data[itemIndex]; + } + } + + public LSL_Types.LSLString GetLSLStringItem(int itemIndex) + { + if (m_data[itemIndex] is LSL_Types.key) + { + return (LSL_Types.key)m_data[itemIndex]; + } + else if (m_data[itemIndex] is String) + { + return new LSL_Types.LSLString((string)m_data[itemIndex]); + } + else + { + return (LSL_Types.LSLString)m_data[itemIndex]; + } + } + + public LSL_Types.LSLInteger GetLSLIntegerItem(int itemIndex) + { + if (m_data[itemIndex] is LSL_Types.LSLInteger) + return (LSL_Types.LSLInteger)m_data[itemIndex]; + else if (m_data[itemIndex] is Int32) + return new LSLInteger((int)m_data[itemIndex]); + else + throw new InvalidCastException(); + } + + public LSL_Types.Vector3 GetVector3Item(int itemIndex) + { + return (LSL_Types.Vector3)m_data[itemIndex]; + } + + public LSL_Types.Quaternion GetQuaternionItem(int itemIndex) + { + return (LSL_Types.Quaternion)m_data[itemIndex]; + } + + public LSL_Types.key GetKeyItem(int itemIndex) + { + return (LSL_Types.key)m_data[itemIndex]; } public static list operator +(list a, list b) @@ -436,19 +510,19 @@ namespace OpenSim.Region.ScriptEngine.Common m_data.SetValue(o, Length - 1); } - public static list operator +(list a, string s) + public static list operator +(list a, LSLString s) { a.ExtendAndAdd(s); return a; } - public static list operator +(list a, int i) + public static list operator +(list a, LSLInteger i) { a.ExtendAndAdd(i); return a; } - public static list operator +(list a, double d) + public static list operator +(list a, LSLFloat d) { a.ExtendAndAdd(d); return a; @@ -1167,6 +1241,11 @@ namespace OpenSim.Region.ScriptEngine.Common return k.value; } + static public implicit operator LSLString(key k) + { + return k.value; + } + public static bool operator ==(key k1, key k2) { return k1.value == k2.value; @@ -1190,6 +1269,11 @@ namespace OpenSim.Region.ScriptEngine.Common return value.GetHashCode(); } + public override string ToString() + { + return value; + } + #endregion } @@ -1476,25 +1560,25 @@ namespace OpenSim.Region.ScriptEngine.Common return new LSLInteger(i1.value / i2); } - static public LSLFloat operator +(LSLInteger i1, double f) - { - return new LSLFloat((double)i1.value + f); - } - - static public LSLFloat operator -(LSLInteger i1, double f) - { - return new LSLFloat((double)i1.value - f); - } - - static public LSLFloat operator *(LSLInteger i1, double f) - { - return new LSLFloat((double)i1.value * f); - } - - static public LSLFloat operator /(LSLInteger i1, double f) - { - return new LSLFloat((double)i1.value / f); - } +// static public LSLFloat operator +(LSLInteger i1, double f) +// { +// return new LSLFloat((double)i1.value + f); +// } +// +// static public LSLFloat operator -(LSLInteger i1, double f) +// { +// return new LSLFloat((double)i1.value - f); +// } +// +// static public LSLFloat operator *(LSLInteger i1, double f) +// { +// return new LSLFloat((double)i1.value * f); +// } +// +// static public LSLFloat operator /(LSLInteger i1, double f) +// { +// return new LSLFloat((double)i1.value / f); +// } static public LSLInteger operator -(LSLInteger i) { @@ -1585,6 +1669,11 @@ namespace OpenSim.Region.ScriptEngine.Common #region Operators + static public explicit operator float(LSLFloat f) + { + return (float)f.value; + } + static public explicit operator int(LSLFloat f) { return (int)f.value; @@ -1619,7 +1708,17 @@ namespace OpenSim.Region.ScriptEngine.Common static public explicit operator LSLFloat(string s) { - return new LSLFloat(double.Parse(s)); + Regex r = new Regex("^[ ]*-?[0-9]*\\.?[0-9]*[eE]?-?[0-9]*"); + Match m = r.Match(s); + string v = m.Groups[0].Value; + + while (v.Length > 0 && v.Substring(0, 1) == " ") + v = v.Substring(1); + + if (v == String.Empty) + v = "0"; + + return new LSLFloat(double.Parse(v)); } static public implicit operator LSLFloat(double d) diff --git a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs index 264a586..c9551ae 100644 --- a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs @@ -580,6 +580,24 @@ namespace OpenSim.Region.ScriptEngine.Common } } + public void osSetParcelMediaURL(string url) + { + m_host.AddScriptLPS(1); + UUID landowner = World.GetLandOwner(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); + + if (landowner == UUID.Zero) + { + return; + } + + if (landowner != m_host.ObjectOwner) + { + return; + } + + World.SetLandMediaURL(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y, url); + } + public string osGetScriptEngineName() { m_host.AddScriptLPS(1); -- cgit v1.1