User:Athlon Maurer
From OpenSimulator
OSSL NEW OWN IMPLEMENTED
Author: Athlon Maurer (SecondLife, OpenLife, OpenSimulator Localhost)
Date : 15. June 2010
INSERT INTO: OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
# region by Athlon Maurer, 15. June 2010
// BEGIN OF OSSL NEW OWN IMPLEMENTED
LSL_Integer osDerezObject(key objectID);
LSL_String osHex(LSL_Integer value, LSL_Integer count);
LSL_String osBin(LSL_Integer value);
LSL_Integer osAsc(LSL_String value);
LSL_String osChr(LSL_Integer value);
key osGetAgentProfileImage(key agentID);
void osWhisperAsOwner(LSL_Integer channel, LSL_String text);
void osSayAsOwner(LSL_Integer channel, LSL_String text);
void osShoutAsOwner(LSL_Integer channel, LSL_String text);
LSL_List osGetAgentAttachments(key agentID);
void osMessageAgentAttachment(LSL_Integer apoint, key agentID, LSL_String message);
LSL_List osGetRegionAvatars();
LSL_Integer osGetAgentAttachmentPoint(key aID, key agentID);
key osGetAgentAttachmentKey(LSL_Integer apoint, key agentID);
LSL_Integer osGetAgentOnlineStatus(key agentID);
LSL_Integer osRenameObject(key objectID, LSL_String objectNAME);
LSL_String osReversedText(LSL_String text);
LSL_String osGetParcelMusicURL();
LSL_Integer osGetLinkNumberOfSides(LSL_Integer linknum);
LSL_Integer osRescaleObject(key objectID, vector objectSCALE);
LSL_String osRgb(vector color);
// END OF OSSL NEW OWN IMPLEMENTED
# endregion
INSERT INTO: OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
# region by Athlon Maurer, 15. June 2010
// BEGIN OF OSSL NEW OWN IMPLEMENTED
/// <summary>
/// Delete objectID from World
/// </summary>
/// <returns>TRUE if successful, FALSE otherwise</returns>
public LSL_Integer osDerezObject(LSL_Key objectID)
{
CheckThreatLevel(ThreatLevel.Moderate, "osDerezObject");
m_host.AddScriptLPS(1);
string s = (string)objectID;
UUID id = new UUID();
if (UUID.TryParse(s, out id))
{
SceneObjectPart sceneOP = World.GetSceneObjectPart(id);
if (sceneOP != null)
{
SceneObjectGroup sceneOG = sceneOP.ParentGroup;
if (sceneOG != null)
{
if (sceneOG.OwnerID == m_host.OwnerID)
{
World.DeleteSceneObject(sceneOG, false);
return new LSL_Integer(1);
}
if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID))
{
World.DeleteSceneObject(sceneOG, false);
return new LSL_Integer(1);
}
}
}
}
return new LSL_Integer(0);
}
/// <summary>
/// Convert value into hex with count
/// </summary>
/// <returns>String</returns>
public LSL_String osHex(LSL_Integer value, LSL_Integer count)
{
CheckThreatLevel(ThreatLevel.None, "osHex");
int i = (int)value;
int d = (int)count;
if (!(d < 1) && !(d > 8))
{
if (d == 1)
{
return new LSL_String(String.Format("{0:X1}", i));
}
else if (d == 2)
{
return new LSL_String(String.Format("{0:X2}", i));
}
else if (d == 3)
{
return new LSL_String(String.Format("{0:X3}", i));
}
else if (d == 4)
{
return new LSL_String(String.Format("{0:X4}", i));
}
else if (d == 5)
{
return new LSL_String(String.Format("{0:X5}", i));
}
else if (d == 6)
{
return new LSL_String(String.Format("{0:X6}", i));
}
else if (d == 7)
{
return new LSL_String(String.Format("{0:X7}", i));
}
else if (d == 8)
{
return new LSL_String(String.Format("{0:X8}", i));
}
}
return new LSL_String("");
}
/// <summary>
/// Convert value into bin
/// </summary>
/// <returns>String</returns>
public LSL_String osBin(LSL_Integer value)
{
CheckThreatLevel(ThreatLevel.None, "osBin");
int i = (int)value;
// quick bounds check
if (i < 0) i = 0;
if (i > 255) i = 255;
// build the returnvalue
string s = "";
if (((i & 128) == 128) == true) { s += "1"; } else { s += "0"; }
if (((i & 64) == 64) == true) { s += "1"; } else { s += "0"; }
if (((i & 32) == 32) == true) { s += "1"; } else { s += "0"; }
if (((i & 16) == 16) == true) { s += "1"; } else { s += "0"; }
if (((i & 8) == 8) == true) { s += "1"; } else { s += "0"; }
if (((i & 4) == 4) == true) { s += "1"; } else { s += "0"; }
if (((i & 2) == 2) == true) { s += "1"; } else { s += "0"; }
if (((i & 1) == 1) == true) { s += "1"; } else { s += "0"; }
return new LSL_String(s);
}
/// <summary>
/// Asc/Char table for osAsc and osChr
/// </summary>
protected static readonly char[] asctable =
{
'\0', '☺', '☻', '♥', '♦', '♣', '♠', '•', '◘', '○', '◙', '♂', '♀', '♪', '♫', '☼',
'►', '◄', '↕', '‼', '¶', '§', '▬', '↨', '↑', '↓', '→', '←', '∟', '↔', '▲', '▼',
' ', '!', '\"', '#', '$', '%', '&', '\, '(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', '⌂',
'Ç', 'ü', 'é', 'â', 'ä', 'à', 'å', 'ç', 'ê', 'ë', 'è', 'ï', 'î', 'ì', 'Ä', 'Å',
'É', 'æ', 'Æ', 'ô', 'ö', 'ò', 'û', 'ù', 'ÿ', 'Ö', 'Ü', 'ø', '£', 'Ø', '×', 'ƒ',
'á', 'í', 'ó', 'ú', 'ñ', 'Ñ', 'ª', 'º', '¿', '®', '¬', '½', '¼', '¡', '«', '»',
'░', '▒', '▓', '│', '┤', 'Á', 'Â', 'À', '©', '╣', '║', '╗', '╝', '¢', '¥', '┐',
'└', '┴', '┬', '├', '─', '┼', 'ã', 'Ã', '╚', '╔', '╩', '╦', '╠', '═', '╬', '¤',
'ð', 'Ð', 'Ê', 'Ë', 'È', 'ı', 'Í', 'Î', 'Ï', '┘', '┌', '█', '▄', '¦', 'Ì', '▀',
'Ó', 'ß', 'Ô', 'Ò', 'õ', 'Õ', 'µ', 'þ', 'Þ', 'Ú', 'Û', 'Ù', 'ý', 'Ý', '¯', '´',
'', '±', '‗', '¾', '¶', '§', '÷', '¸', '°', '¨', '·', '¹', '³', '²', '■', ' '
};
/// <summary>
/// Convert value into asc
/// </summary>
/// <returns>Integer</returns>
public LSL_Integer osAsc(LSL_String value)
{
CheckThreatLevel(ThreatLevel.None, "osAsc");
string text = (string)value;
if (text != "")
{
char wanted = text[0];
for (int i = 0; i < 256; i++)
{
if (wanted == asctable[i])
{
return new LSL_Integer(i);
}
}
}
return new LSL_Integer(-1);
}
/// <summary>
/// Convert value into char (unicode)
/// </summary>
/// <returns>String</returns>
public LSL_String osChr(LSL_Integer value)
{
CheckThreatLevel(ThreatLevel.None, "osChr");
int i = (int)value;
if (!(i < 0) && !(i > 255))
{
char wanted = asctable[i];
return new LSL_String(wanted.ToString());
}
return new LSL_String("");
}
/// <summary>
/// Get the Image UUID from agentID
/// </summary>
/// <returns>String</returns>
public LSL_Key osGetAgentProfileImage(LSL_Key agentID)
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetAgentProfileImage");
m_host.AddScriptLPS(1);
UUID id = new UUID();
if (UUID.TryParse((string)agentID, out id))
{
CachedUserInfo cachedata = World.CommsManager.UserProfileCacheService.GetUserDetails(id);
if (cachedata != null)
{
return new LSL_Key(cachedata.UserProfile.Image.ToString());
}
UserProfileData userdata = World.CommsManager.UserService.GetUserProfile(id);
if (userdata.CurrentAgent != null)
{
return new LSL_Key(userdata.Image.ToString());
}
}
return new LSL_Key(UUID.Zero.ToString());
}
/// <summary>
/// Owner of script whispers text on channel
/// </summary>
/// <returns></returns>
public void osWhisperAsOwner(LSL_Integer channel, LSL_String text)
{
CheckThreatLevel(ThreatLevel.Moderate, "osWhisperAsOwner");
m_host.AddScriptLPS(1);
string message = (string)text;
if (message.Length > 1023)
{
message = message.Substring(0, 1023);
}
CachedUserInfo userinfo = World.CommsManager.UserProfileCacheService.GetUserDetails(m_host.OwnerID);
if (userinfo != null)
{
ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
if (presence != null)
{
World.SimChat(Utils.StringToBytes(message), ChatTypeEnum.Whisper, (int)channel, presence.AbsolutePosition, userinfo.UserProfile.Name, m_host.OwnerID, false);
IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
if (wComm != null)
{
wComm.DeliverMessage(ChatTypeEnum.Whisper, (int)channel, userinfo.UserProfile.Name, m_host.OwnerID, message);
}
}
}
}
/// <summary>
/// Owner of script says text on channel
/// </summary>
/// <returns></returns>
public void osSayAsOwner(LSL_Integer channel, LSL_String text)
{
CheckThreatLevel(ThreatLevel.Moderate, "osSayAsOwner");
m_host.AddScriptLPS(1);
string message = (string)text;
if (message.Length > 1023)
{
message = message.Substring(0, 1023);
}
CachedUserInfo userinfo = World.CommsManager.UserProfileCacheService.GetUserDetails(m_host.OwnerID);
if (userinfo != null)
{
ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
if (presence != null)
{
World.SimChat(Utils.StringToBytes(message), ChatTypeEnum.Say, (int)channel, presence.AbsolutePosition, userinfo.UserProfile.Name, m_host.OwnerID, false);
IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
if (wComm != null)
{
wComm.DeliverMessage(ChatTypeEnum.Say, (int)channel, userinfo.UserProfile.Name, m_host.OwnerID, message);
}
}
}
}
/// <summary>
/// Owner of script shouts text on channel
/// </summary>
/// <returns></returns>
public void osShoutAsOwner(LSL_Integer channel, LSL_String text)
{
CheckThreatLevel(ThreatLevel.Moderate, "osShoutAsOwner");
m_host.AddScriptLPS(1);
string message = (string)text;
if (message.Length > 1023)
{
message = message.Substring(0, 1023);
}
CachedUserInfo userinfo = World.CommsManager.UserProfileCacheService.GetUserDetails(m_host.OwnerID);
if (userinfo != null)
{
ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
if (presence != null)
{
World.SimChat(Utils.StringToBytes(message), ChatTypeEnum.Shout, (int)channel, presence.AbsolutePosition, userinfo.UserProfile.Name, m_host.OwnerID, false);
IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
if (wComm != null)
{
wComm.DeliverMessage(ChatTypeEnum.Shout, (int)channel, userinfo.UserProfile.Name, m_host.OwnerID, message);
}
}
}
}
/// <summary>
/// Get the keys from all attachments from an agent
/// </summary>
/// <returns>List of Keys</returns>
public LSL_List osGetAgentAttachments(LSL_Key agentID)
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetAgentAttachments");
m_host.AddScriptLPS(1);
UUID id = new UUID();
LSL_List result = new LSL_List();
if (UUID.TryParse((string)agentID, out id))
{
ScenePresence avatar = World.GetScenePresence(id);
if (avatar != null)
{
List<SceneObjectGroup> atts = avatar.Attachments;
foreach (SceneObjectGroup grp in atts)
{
result.Add(new LSL_Key(new UUID(grp.UUID).ToString()));
}
}
}
return result;
}
/// <summary>
/// Sents a message to an attachment identified by apoint attached to agentID
/// a script in the attachment must implement the dataserver event
/// the dataserver event is passed the UUID of the calling script and a message
/// </summary>
/// <returns></returns>
public void osMessageAgentAttachment(LSL_Integer apoint, LSL_Key agentID, LSL_String message)
{
CheckThreatLevel(ThreatLevel.Moderate, "osMessageAgentAttachment");
m_host.AddScriptLPS(1);
UUID id = new UUID();
if (UUID.TryParse((string)agentID, out id))
{
ScenePresence avatar = World.GetScenePresence(id);
if (avatar != null)
{
List<SceneObjectGroup> atts = avatar.Attachments;
foreach (SceneObjectGroup grp in atts)
{
byte attachedTo = grp.GetAttachmentPoint();
byte wanted = (byte)((int)apoint);
if (attachedTo == wanted)
{
object[] resobj = new object[] { new LSL_Types.LSLString(m_host.UUID.ToString()), message };
SceneObjectPart part = World.GetSceneObjectPart(new UUID(grp.UUID.ToString()));
m_ScriptEngine.PostObjectEvent(part.LocalId, new EventParams("dataserver", resobj, new DetectParams[0]));
return;
}
}
}
}
}
/// <summary>
/// Get the keys from all avatars in the region
/// </summary>
/// <returns>List of Keys</returns>
public LSL_List osGetRegionAvatars()
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetRegionAvatars");
// same as osGetAgents() just returning keys instead of names
LSL_List result = new LSL_List();
foreach (ScenePresence avatarSP in World.GetAvatars())
{
result.Add(avatarSP.UUID);
}
return result;
}
/// <summary>
/// Get the attachment point for an attachment specified by aID attached to agentID
/// </summary>
/// <returns>Integer</returns>
public LSL_Integer osGetAgentAttachmentPoint(LSL_Key aID, LSL_Key agentID)
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetAgentAttachmentPoint");
m_host.AddScriptLPS(1);
UUID id = new UUID();
if (UUID.TryParse((string)agentID, out id))
{
ScenePresence avatar = World.GetScenePresence(id);
if (avatar != null)
{
List<SceneObjectGroup> atts = avatar.Attachments;
foreach (SceneObjectGroup grp in atts)
{
string attachedTo = grp.UUID.ToString();
string wanted = (string)aID;
if (attachedTo == wanted)
{
return new LSL_Integer((int)grp.GetAttachmentPoint());
}
}
}
}
return new LSL_Integer(-1);
}
/// <summary>
/// Get the attachment UUID for an attachment specified by apoint attached to agentID
/// </summary>
/// <returns>Key</returns>
public LSL_Key osGetAgentAttachmentKey(LSL_Integer apoint, LSL_Key agentID)
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetAgentAttachmentKey");
m_host.AddScriptLPS(1);
UUID id = new UUID();
if (UUID.TryParse((string)agentID, out id))
{
ScenePresence avatar = World.GetScenePresence(id);
if (avatar != null)
{
List<SceneObjectGroup> atts = avatar.Attachments;
foreach (SceneObjectGroup grp in atts)
{
byte attachedTo = grp.GetAttachmentPoint();
byte wanted = (byte)((int)apoint);
if (attachedTo == wanted)
{
return new LSL_Key(grp.UUID.ToString());
}
}
}
}
return new LSL_Key(UUID.Zero.ToString());
}
/// <summary>
/// Get the online status for agentID
/// </summary>
/// <returns>Integer</returns>
public LSL_Integer osGetAgentOnlineStatus(LSL_Key agentID)
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetAgentOnlineStatus");
m_host.AddScriptLPS(1);
int online = 0;
UUID id = new UUID();
if (UUID.TryParse((string)agentID, out id))
{
UserProfileData userProfile = World.CommsManager.UserService.GetUserProfile(id);
if ((userProfile.CurrentAgent != null) && (userProfile.CurrentAgent.AgentOnline == true))
{
online = 1;
}
}
return new LSL_Integer(online);
}
/// <summary>
/// Rename objectID
/// </summary>
/// <returns>TRUE if successful, FALSE otherwise</returns>
public LSL_Integer osRenameObject(LSL_Key objectID, LSL_String objectNAME)
{
CheckThreatLevel(ThreatLevel.Moderate, "osRenameObject");
m_host.AddScriptLPS(1);
string sobj = (string)objectID;
string sname = (string)objectNAME;
UUID id = new UUID();
if (UUID.TryParse(sobj, out id))
{
SceneObjectPart sceneOP = World.GetSceneObjectPart(id);
if (sceneOP != null)
{
SceneObjectGroup sceneOG = sceneOP.ParentGroup;
if (sceneOG != null)
{
if (sceneOG.OwnerID == m_host.OwnerID)
{
sceneOG.Name = sname;
return new LSL_Integer(1);
}
}
}
}
return new LSL_Integer(0);
}
/// <summary>
/// Get reversed text
/// </summary>
/// <returns>String</returns>
public LSL_String osReversedText(LSL_String text)
{
CheckThreatLevel(ThreatLevel.None, "osReversedText");
string in_ = (string)text;
string out_ = "";
for (int i = 0; i < in_.Length; i++)
{
out_ += in_[in_.Length - i - 1];
}
return new LSL_String(out_);
}
/// <summary>
/// Get music url from owned parcel
/// </summary>
/// <returns>String</returns>
public LSL_String osGetParcelMusicURL()
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetParcelMusicURL");
m_host.AddScriptLPS(1);
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y);
if (m_host.OwnerID == land.LandData.OwnerID)
{
return new LSL_String(land.LandData.MusicURL);
}
return new LSL_String("");
}
/// <summary>
/// Get the numer of sides/faces for the given link prim
/// constants LINK_* are allowed and will return the sum of faces
/// </summary>
/// <returns>Integer</returns>
public LSL_Integer osGetLinkNumberOfSides(LSL_Integer linknum)
{
CheckThreatLevel(ThreatLevel.None, "osGetLinkNumberOfSides");
m_host.AddScriptLPS(1);
int link = (int)linknum;
int sides = 0;
if (m_host.ParentGroup != null)
{
if (link < 0)
{
switch (link)
{
case -1: // LINK_SET
foreach (SceneObjectPart setpart in m_host.ParentGroup.Children.Values)
{
sides += setpart.GetNumberOfSides();
}
return new LSL_Integer(sides);
case -2: // LINK_ALL_OTHERS
foreach (SceneObjectPart otherpart in m_host.ParentGroup.Children.Values)
{
sides += otherpart.GetNumberOfSides();
}
sides -= m_host.GetNumberOfSides();
return new LSL_Integer(sides);
case -3: // LINK_ALL_CHILDREN
foreach (SceneObjectPart childrenpart in m_host.ParentGroup.Children.Values)
{
sides += childrenpart.GetNumberOfSides();
}
sides -= m_host.ParentGroup.RootPart.GetNumberOfSides();
return new LSL_Integer(sides);
case -4: // LINK_THIS
sides += m_host.GetNumberOfSides();
return new LSL_Integer(sides);
default:
sides += m_host.GetNumberOfSides();
return new LSL_Integer(sides);
}
}
else
{
SceneObjectPart singlepart = m_host.ParentGroup.GetLinkNumPart(link);
if (singlepart != null)
{
sides += singlepart.GetNumberOfSides();
return new LSL_Integer(sides);
}
else
{
sides += m_host.GetNumberOfSides();
return new LSL_Integer(sides);
}
}
}
return new LSL_Integer(0);
}
/// <summary>
/// Rescale objectID with objectSCALE
/// </summary>
/// <returns>TRUE if successful, FALSE otherwise</returns>
public LSL_Integer osRescaleObject(LSL_Key objectID, LSL_Vector objectSCALE)
{
CheckThreatLevel(ThreatLevel.Moderate, "osRescaleObject");
m_host.AddScriptLPS(1);
Vector3 scale = new Vector3((float)objectSCALE.x, (float)objectSCALE.y, (float)objectSCALE.z);
string sobj = (string)objectID;
UUID id = new UUID();
if (UUID.TryParse(sobj, out id))
{
SceneObjectPart sceneOP = World.GetSceneObjectPart(id);
if (sceneOP != null)
{
SceneObjectGroup sceneOG = sceneOP.ParentGroup;
if (sceneOG != null)
{
if (sceneOG.OwnerID == m_host.OwnerID)
{
sceneOG.GroupResize(scale, sceneOG.LocalId);
return new LSL_Integer(1);
}
}
}
}
return new LSL_Integer(0);
}
/// <summary>
/// Convert color into rgb (<1.0, 1.0, 1.0> == "#FFFFFF")
/// </summary>
/// <returns>String</returns>
public LSL_String osRgb(LSL_Vector color)
{
CheckThreatLevel(ThreatLevel.None, "osRgb");
float min = 0.0f;
float max = 1.0f;
float ff = 255.0f;
float r = (float)color.x;
float g = (float)color.y;
float b = (float)color.z;
// quick bounds check
if (r < min) r = min;
if (r > max) r = max;
if (g < min) g = min;
if (g > max) g = max;
if (b < min) b = min;
if (b > max) b = max;
int red = ((int)((r / max) * ff)) * 65536;
int green = ((int)((g / max) * ff)) * 256;
int blue = ((int)((b / max) * ff));
int c = red + green + blue;
return new LSL_String("#" + String.Format("{0:X6}", c));
}
// END OF OSSL NEW OWN IMPLEMENTED
# endregion
INSERT INTO: OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
# region by Athlon Maurer, 15. June 2010
// BEGIN OF OSSL NEW OWN IMPLEMENTED
public LSL_Integer osDerezObject(key objectID)
{
return m_OSSL_Functions.osDerezObject(objectID);
}
public LSL_String osHex(LSL_Integer value, LSL_Integer count)
{
return m_OSSL_Functions.osHex(value, count);
}
public LSL_String osBin(LSL_Integer value)
{
return m_OSSL_Functions.osBin(value);
}
public LSL_Integer osAsc(LSL_String value)
{
return m_OSSL_Functions.osAsc(value);
}
public LSL_String osChr(LSL_Integer value)
{
return m_OSSL_Functions.osChr(value);
}
public key osGetAgentProfileImage(key agentID)
{
return m_OSSL_Functions.osGetAgentProfileImage(agentID);
}
public void osWhisperAsOwner(LSL_Integer channel, LSL_String text)
{
m_OSSL_Functions.osWhisperAsOwner(channel, text);
}
public void osSayAsOwner(LSL_Integer channel, LSL_String text)
{
m_OSSL_Functions.osSayAsOwner(channel, text);
}
public void osShoutAsOwner(LSL_Integer channel, LSL_String text)
{
m_OSSL_Functions.osShoutAsOwner(channel, text);
}
public LSL_List osGetAgentAttachments(key agentID)
{
return m_OSSL_Functions.osGetAgentAttachments(agentID);
}
public void osMessageAgentAttachment(LSL_Integer apoint, key agentID, LSL_String message)
{
m_OSSL_Functions.osMessageAgentAttachment(apoint, agentID, message);
}
public LSL_List osGetRegionAvatars()
{
return m_OSSL_Functions.osGetRegionAvatars();
}
public LSL_Integer osGetAgentAttachmentPoint(key aID, key agentID)
{
return m_OSSL_Functions.osGetAgentAttachmentPoint(aID, agentID);
}
public key osGetAgentAttachmentKey(LSL_Integer apoint, key agentID)
{
return m_OSSL_Functions.osGetAgentAttachmentKey(apoint, agentID);
}
public LSL_Integer osGetAgentOnlineStatus(key agentID)
{
return m_OSSL_Functions.osGetAgentOnlineStatus(agentID);
}
public LSL_Integer osRenameObject(key objectID, LSL_String objectNAME)
{
return m_OSSL_Functions.osRenameObject(objectID, objectNAME);
}
public LSL_String osReversedText(LSL_String text)
{
return m_OSSL_Functions.osReversedText(text);
}
public LSL_String osGetParcelMusicURL()
{
return m_OSSL_Functions.osGetParcelMusicURL();
}
public LSL_Integer osGetLinkNumberOfSides(LSL_Integer linknum)
{
return m_OSSL_Functions.osGetLinkNumberOfSides(linknum);
}
public LSL_Integer osRescaleObject(key objectID, vector objectSCALE)
{
return m_OSSL_Functions.osRescaleObject(objectID, objectSCALE);
}
public LSL_String osRgb(vector color)
{
return m_OSSL_Functions.osRgb(color);
}
// END OF OSSL NEW OWN IMPLEMENTED
# endregion
END OF OSSL NEW OWN IMPLEMENTED