From 6d10c6535847a65f3bc56398a609916174684729 Mon Sep 17 00:00:00 2001
From: Tedd Hansen
Date: Sat, 18 Aug 2007 18:53:03 +0000
Subject: Moved LSL_BuiltIn_Commands_Interface.cs to a separate library
(OpenSim.Region.ScriptEngine.Common). Fixed last compile error (forgot to
include LSL_BuiltIn_Commands.cs).
---
.../Compiler/Server_API/LSL_BuiltIn_Commands.cs | 472 +++++++++++++++++++++
1 file changed, 472 insertions(+)
create mode 100644 OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
(limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs')
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
new file mode 100644
index 0000000..8c2e799
--- /dev/null
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
@@ -0,0 +1,472 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife;
+using OpenSim.Region.Environment.Scenes;
+using OpenSim.Region.Environment.Scenes.Scripting;
+using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler;
+using OpenSim.Region.ScriptEngine.Common;
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
+{
+
+ ///
+ /// Contains all LSL ll-functions. This class will be in Default AppDomain.
+ ///
+ [Serializable]
+ public class LSL_BuiltIn_Commands: LSL_BuiltIn_Commands_Interface
+ {
+ private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
+ private ScriptManager m_manager;
+ private IScriptHost m_host;
+
+ public LSL_BuiltIn_Commands(ScriptManager manager, IScriptHost host)
+ {
+ m_manager = manager;
+ m_host = host;
+
+ MainLog.Instance.Notice("ScriptEngine", "LSL_BaseClass.Start() called. Hosted by [" + m_host.Name + ":" + m_host.UUID + "@" + m_host.AbsolutePosition + "]");
+ }
+
+
+ public string State = "default";
+
+ public Scene World
+ {
+ get { return m_manager.World; }
+ }
+
+ //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. - CFK 8-14-07
+ public double llSin(double f) { return (double)Math.Sin(f); }
+ public double llCos(double f) { return (double)Math.Cos(f); }
+ public double llTan(double f) { return (double)Math.Tan(f); }
+ public double llAtan2(double x, double y) { return (double)Math.Atan2(y, x); }
+ public double llSqrt(double f) { return (double)Math.Sqrt(f); }
+ public double llPow(double fbase, double fexponent) { return (double)Math.Pow(fbase, fexponent); }
+ public int llAbs(int i) { return (int)Math.Abs(i); }
+ public double llFabs(double f) { return (double)Math.Abs(f); }
+
+ public double llFrand(double mag)
+ {
+ lock (OpenSim.Framework.Utilities.Util.RandomClass)
+ {
+ return OpenSim.Framework.Utilities.Util.RandomClass.Next((int)mag);
+ }
+ }
+ public int llFloor(double f) { return (int)Math.Floor(f); }
+ public int llCeil(double f) { return (int)Math.Ceiling(f); }
+ public int llRound(double f) { return (int)Math.Round(f, 1); }
+ public double llVecMag(Axiom.Math.Vector3 v) { return 0; }
+ public Axiom.Math.Vector3 llVecNorm(Axiom.Math.Vector3 v) { return new Axiom.Math.Vector3(); }
+ public double llVecDist(Axiom.Math.Vector3 a, Axiom.Math.Vector3 b) { return 0; }
+ public Axiom.Math.Vector3 llRot2Euler(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Quaternion llEuler2Rot(Axiom.Math.Vector3 v) { return new Axiom.Math.Quaternion(); }
+ public Axiom.Math.Quaternion llAxes2Rot(Axiom.Math.Vector3 fwd, Axiom.Math.Vector3 left, Axiom.Math.Vector3 up) { return new Axiom.Math.Quaternion(); }
+ public Axiom.Math.Vector3 llRot2Fwd(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return new Axiom.Math.Quaternion(); }
+
+ public void llWhisper(int channelID, string text)
+ {
+ //Common.SendToDebug("INTERNAL FUNCTION llWhisper(" + channelID + ", \"" + text + "\");");
+ Console.WriteLine("llWhisper Channel " + channelID + ", Text: \"" + text + "\"");
+ //type for whisper is 0
+ World.SimChat(Helpers.StringToField(text),
+ 0, m_host.AbsolutePosition, m_host.Name, m_host.UUID);
+
+
+ }
+ //public void llSay(int channelID, string text)
+ public void llSay(int channelID, string text)
+ {
+ //TODO: DO SOMETHING USEFUL HERE
+ //Common.SendToDebug("INTERNAL FUNCTION llSay(" + (int)channelID + ", \"" + (string)text + "\");");
+ Console.WriteLine("llSay Channel " + channelID + ", Text: \"" + text + "\"");
+ //type for say is 1
+
+ World.SimChat(Helpers.StringToField(text),
+ 1, m_host.AbsolutePosition, m_host.Name, m_host.UUID);
+ }
+
+ public void llShout(int channelID, string text)
+ {
+ Console.WriteLine("llShout Channel " + channelID + ", Text: \"" + text + "\"");
+ //type for shout is 2
+ World.SimChat(Helpers.StringToField(text),
+ 2, m_host.AbsolutePosition, m_host.Name, m_host.UUID);
+
+ }
+
+ public int llListen(int channelID, string name, string ID, string msg) { return 0; }
+ public void llListenControl(int number, int active) { return; }
+ public void llListenRemove(int number) { return; }
+ public void llSensor(string name, string id, int type, double range, double arc) { return; }
+ public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) { return; }
+ public void llSensorRemove() { return; }
+ public string llDetectedName(int number) { return ""; }
+ public string llDetectedKey(int number) { return ""; }
+ public string llDetectedOwner(int number) { return ""; }
+ public int llDetectedType(int number) { return 0; }
+ public Axiom.Math.Vector3 llDetectedPos(int number) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llDetectedVel(int number) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llDetectedGrab(int number) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Quaternion llDetectedRot(int number) { return new Axiom.Math.Quaternion(); }
+ public int llDetectedGroup(int number) { return 0; }
+ public int llDetectedLinkNumber(int number) { return 0; }
+ public void llDie() { return; }
+ public double llGround(Axiom.Math.Vector3 offset) { return 0; }
+ public double llCloud(Axiom.Math.Vector3 offset) { return 0; }
+ public Axiom.Math.Vector3 llWind(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
+ public void llSetStatus(int status, int value) { return; }
+ public int llGetStatus(int status) { return 0; }
+ public void llSetScale(Axiom.Math.Vector3 scale) { return; }
+ public Axiom.Math.Vector3 llGetScale() { return new Axiom.Math.Vector3(); }
+ public void llSetColor(Axiom.Math.Vector3 color, int face) { return; }
+ public double llGetAlpha(int face) { return 0; }
+ public void llSetAlpha(double alpha, int face) { return; }
+ public Axiom.Math.Vector3 llGetColor(int face) { return new Axiom.Math.Vector3(); }
+ public void llSetTexture(string texture, int face) { return; }
+ public void llScaleTexture(double u, double v, int face) { return; }
+ public void llOffsetTexture(double u, double v, int face) { return; }
+ public void llRotateTexture(double rotation, int face) { return; }
+ public string llGetTexture(int face) { return ""; }
+ public void llSetPos(Axiom.Math.Vector3 pos) { return; }
+
+ public Axiom.Math.Vector3 llGetPos()
+ {
+ throw new NotImplementedException("llGetPos");
+ // return m_host.AbsolutePosition;
+ }
+
+ public Axiom.Math.Vector3 llGetLocalPos() { return new Axiom.Math.Vector3(); }
+ public void llSetRot(Axiom.Math.Quaternion rot) { }
+ public Axiom.Math.Quaternion llGetRot() { return new Axiom.Math.Quaternion(); }
+ public Axiom.Math.Quaternion llGetLocalRot() { return new Axiom.Math.Quaternion(); }
+ public void llSetForce(Axiom.Math.Vector3 force, int local) { }
+ public Axiom.Math.Vector3 llGetForce() { return new Axiom.Math.Vector3(); }
+ public int llTarget(Axiom.Math.Vector3 position, double range) { return 0; }
+ public void llTargetRemove(int number) { }
+ public int llRotTarget(Axiom.Math.Quaternion rot, double error) { return 0; }
+ public void llRotTargetRemove(int number) { }
+ public void llMoveToTarget(Axiom.Math.Vector3 target, double tau) { }
+ public void llStopMoveToTarget() { }
+ public void llApplyImpulse(Axiom.Math.Vector3 force, int local) { }
+ public void llApplyRotationalImpulse(Axiom.Math.Vector3 force, int local) { }
+ public void llSetTorque(Axiom.Math.Vector3 torque, int local) { }
+ public Axiom.Math.Vector3 llGetTorque() { return new Axiom.Math.Vector3(); }
+ public void llSetForceAndTorque(Axiom.Math.Vector3 force, Axiom.Math.Vector3 torque, int local) { }
+ public Axiom.Math.Vector3 llGetVel() { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llGetAccel() { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llGetOmega() { return new Axiom.Math.Vector3(); }
+ public double llGetTimeOfDay() { return 0; }
+ public double llGetWallclock() { return 0; }
+ public double llGetTime() { return 0; }
+ public void llResetTime() { }
+ public double llGetAndResetTime() { return 0; }
+ public void llSound() { }
+ public void llPlaySound(string sound, double volume) { }
+ public void llLoopSound(string sound, double volume) { }
+ public void llLoopSoundMaster(string sound, double volume) { }
+ public void llLoopSoundSlave(string sound, double volume) { }
+ public void llPlaySoundSlave(string sound, double volume) { }
+ public void llTriggerSound(string sound, double volume) { }
+ public void llStopSound() { }
+ public void llPreloadSound(string sound) { }
+ public string llGetSubString(string src, int start, int end) { return src.Substring(start, end); }
+ public string llDeleteSubString(string src, int start, int end) { return ""; }
+ public string llInsertString(string dst, int position, string src) { return ""; }
+ public string llToUpper(string src) { return src.ToUpper(); }
+ public string llToLower(string src) { return src.ToLower(); }
+ public int llGiveMoney(string destination, int amount) { return 0; }
+ public void llMakeExplosion() { }
+ public void llMakeFountain() { }
+ public void llMakeSmoke() { }
+ public void llMakeFire() { }
+ public void llRezObject(string inventory, Axiom.Math.Vector3 pos, Axiom.Math.Quaternion rot, int param) { }
+ public void llLookAt(Axiom.Math.Vector3 target, double strength, double damping) { }
+ public void llStopLookAt() { }
+ public void llSetTimerEvent(double sec) { }
+ public void llSleep(double sec) { System.Threading.Thread.Sleep((int)(sec * 1000)); }
+ public double llGetMass() { return 0; }
+ public void llCollisionFilter(string name, string id, int accept) { }
+ public void llTakeControls(int controls, int accept, int pass_on) { }
+ public void llReleaseControls() { }
+ public void llAttachToAvatar(int attachment) { }
+ public void llDetachFromAvatar() { }
+ public void llTakeCamera() { }
+ public void llReleaseCamera() { }
+ public string llGetOwner() { return ""; }
+ public void llInstantMessage(string user, string message) { }
+ public void llEmail(string address, string subject, string message) { }
+ public void llGetNextEmail(string address, string subject) { }
+ public string llGetKey() { return ""; }
+ public void llSetBuoyancy(double buoyancy) { }
+ public void llSetHoverHeight(double height, int water, double tau) { }
+ public void llStopHover() { }
+ public void llMinEventDelay(double delay) { }
+ public void llSoundPreload() { }
+ public void llRotLookAt(Axiom.Math.Quaternion target, double strength, double damping) { }
+
+ public int llStringLength(string str)
+ {
+ if (str.Length > 0)
+ {
+ return str.Length;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public void llStartAnimation(string anim) { }
+ public void llStopAnimation(string anim) { }
+ public void llPointAt() { }
+ public void llStopPointAt() { }
+ public void llTargetOmega(Axiom.Math.Vector3 axis, double spinrate, double gain) { }
+ public int llGetStartParameter() { return 0; }
+ public void llGodLikeRezObject(string inventory, Axiom.Math.Vector3 pos) { }
+ public void llRequestPermissions(string agent, int perm) { }
+ public string llGetPermissionsKey() { return ""; }
+ public int llGetPermissions() { return 0; }
+ public int llGetLinkNumber() { return 0; }
+ public void llSetLinkColor(int linknumber, Axiom.Math.Vector3 color, int face) { }
+ public void llCreateLink(string target, int parent) { }
+ public void llBreakLink(int linknum) { }
+ public void llBreakAllLinks() { }
+ public string llGetLinkKey(int linknum) { return ""; }
+ public void llGetLinkName(int linknum) { }
+ public int llGetInventoryNumber(int type) { return 0; }
+ public string llGetInventoryName(int type, int number) { return ""; }
+ public void llSetScriptState(string name, int run) { }
+ public double llGetEnergy() { return 1.0f; }
+ public void llGiveInventory(string destination, string inventory) { }
+ public void llRemoveInventory(string item) { }
+
+ public void llSetText(string text, Axiom.Math.Vector3 color, double alpha)
+ {
+ m_host.SetText(text, color, alpha);
+ }
+
+ public double llWater(Axiom.Math.Vector3 offset) { return 0; }
+ public void llPassTouches(int pass) { }
+ public string llRequestAgentData(string id, int data) { return ""; }
+ public string llRequestInventoryData(string name) { return ""; }
+ public void llSetDamage(double damage) { }
+ public void llTeleportAgentHome(string agent) { }
+ public void llModifyLand(int action, int brush) { }
+ public void llCollisionSound(string impact_sound, double impact_volume) { }
+ public void llCollisionSprite(string impact_sprite) { }
+ public string llGetAnimation(string id) { return ""; }
+ public void llResetScript() { }
+ public void llMessageLinked(int linknum, int num, string str, string id) { }
+ public void llPushObject(string target, Axiom.Math.Vector3 impulse, Axiom.Math.Vector3 ang_impulse, int local) { }
+ public void llPassCollisions(int pass) { }
+ public string llGetScriptName() { return ""; }
+ public int llGetNumberOfSides() { return 0; }
+ public Axiom.Math.Quaternion llAxisAngle2Rot(Axiom.Math.Vector3 axis, double angle) { return new Axiom.Math.Quaternion(); }
+ public Axiom.Math.Vector3 llRot2Axis(Axiom.Math.Quaternion rot) { return new Axiom.Math.Vector3(); }
+ public void llRot2Angle() { }
+ public double llAcos(double val) { return (double)Math.Acos(val); }
+ public double llAsin(double val) { return (double)Math.Asin(val); }
+ public double llAngleBetween(Axiom.Math.Quaternion a, Axiom.Math.Quaternion b) { return 0; }
+ public string llGetInventoryKey(string name) { return ""; }
+ public void llAllowInventoryDrop(int add) { }
+ public Axiom.Math.Vector3 llGetSunDirection() { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llGetTextureOffset(int face) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llGetTextureScale(int side) { return new Axiom.Math.Vector3(); }
+ public double llGetTextureRot(int side) { return 0; }
+ public int llSubStringIndex(string source, string pattern) { return 0; }
+ public string llGetOwnerKey(string id) { return ""; }
+ public Axiom.Math.Vector3 llGetCenterOfMass() { return new Axiom.Math.Vector3(); }
+ public List llListSort(List src, int stride, int ascending)
+ { return new List(); }
+ public int llGetListLength(List src) { return 0; }
+ public int llList2Integer(List src, int index) { return 0; }
+ public double llList2double(List src, int index) { return 0; }
+ public string llList2String(List src, int index) { return ""; }
+ public string llList2Key(List src, int index) { return ""; }
+ public Axiom.Math.Vector3 llList2Vector(List src, int index)
+ { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Quaternion llList2Rot(List src, int index)
+ { return new Axiom.Math.Quaternion(); }
+ public List llList2List(List src, int start, int end)
+ { return new List(); }
+ public List llDeleteSubList(List src, int start, int end)
+ { return new List(); }
+ public int llGetListEntryType(List src, int index) { return 0; }
+ public string llList2CSV(List src) { return ""; }
+ public List llCSV2List(string src)
+ { return new List(); }
+ public List llListRandomize(List src, int stride)
+ { return new List(); }
+ public List llList2ListStrided(List src, int start, int end, int stride)
+ { return new List(); }
+ public Axiom.Math.Vector3 llGetRegionCorner()
+ { return new Axiom.Math.Vector3(World.RegionInfo.RegionLocX * 256, World.RegionInfo.RegionLocY * 256, 0); }
+ public List llListInsertList(List dest, List src, int start)
+ { return new List(); }
+ public int llListFindList(List src, List test) { return 0; }
+ public string llGetObjectName() { return ""; }
+ public void llSetObjectName(string name) { }
+ public string llGetDate() { return ""; }
+ public int llEdgeOfWorld(Axiom.Math.Vector3 pos, Axiom.Math.Vector3 dir) { return 0; }
+ public int llGetAgentInfo(string id) { return 0; }
+ public void llAdjustSoundVolume(double volume) { }
+ public void llSetSoundQueueing(int queue) { }
+ public void llSetSoundRadius(double radius) { }
+ public string llKey2Name(string id) { return ""; }
+ public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) { }
+ public void llTriggerSoundLimited(string sound, double volume, Axiom.Math.Vector3 top_north_east, Axiom.Math.Vector3 bottom_south_west) { }
+ public void llEjectFromLand(string pest) { }
+ public void llParseString2List() { }
+ public int llOverMyLand(string id) { return 0; }
+ public string llGetLandOwnerAt(Axiom.Math.Vector3 pos) { return ""; }
+ public string llGetNotecardLine(string name, int line) { return ""; }
+ public Axiom.Math.Vector3 llGetAgentSize(string id) { return new Axiom.Math.Vector3(); }
+ public int llSameGroup(string agent) { return 0; }
+ public void llUnSit(string id) { }
+ public Axiom.Math.Vector3 llGroundSlope(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llGroundNormal(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
+ public Axiom.Math.Vector3 llGroundContour(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
+ public int llGetAttached() { return 0; }
+ public int llGetFreeMemory() { return 0; }
+ public string llGetRegionName() { return m_manager.RegionName; }
+ public double llGetRegionTimeDilation() { return 1.0f; }
+ public double llGetRegionFPS() { return 10.0f; }
+ public void llParticleSystem(List