Merge branch 'master' into careminster-presence-refactor
commit
aa2f5bdd77
|
@ -221,8 +221,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
|
|
||||||
client.OnGrantUserRights += OnGrantUserRights;
|
client.OnGrantUserRights += OnGrantUserRights;
|
||||||
|
|
||||||
client.OnLogout += OnLogout;
|
|
||||||
|
|
||||||
lock (m_Friends)
|
lock (m_Friends)
|
||||||
{
|
{
|
||||||
if (m_Friends.ContainsKey(client.AgentId))
|
if (m_Friends.ContainsKey(client.AgentId))
|
||||||
|
@ -241,11 +239,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
m_Friends.Add(client.AgentId, newFriends);
|
m_Friends.Add(client.AgentId, newFriends);
|
||||||
}
|
}
|
||||||
|
|
||||||
//StatusChange(client.AgentId, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnClientClosed(UUID agentID, Scene scene)
|
private void OnClientClosed(UUID agentID, Scene scene)
|
||||||
{
|
{
|
||||||
|
ScenePresence sp = scene.GetScenePresence(agentID);
|
||||||
|
if (sp != null && !sp.IsChildAgent)
|
||||||
|
// do this for root agents closing out
|
||||||
|
StatusChange(agentID, false);
|
||||||
|
|
||||||
lock (m_Friends)
|
lock (m_Friends)
|
||||||
if (m_Friends.ContainsKey(agentID))
|
if (m_Friends.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
|
@ -256,23 +258,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnLogout(IClientAPI client)
|
|
||||||
{
|
|
||||||
StatusChange(client.AgentId, false);
|
|
||||||
m_Friends.Remove(client.AgentId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnMakeRootAgent(ScenePresence sp)
|
private void OnMakeRootAgent(ScenePresence sp)
|
||||||
{
|
{
|
||||||
UUID agentID = sp.ControllingClient.AgentId;
|
UUID agentID = sp.ControllingClient.AgentId;
|
||||||
|
|
||||||
if (m_Friends.ContainsKey(agentID))
|
if (m_Friends.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
if (m_Friends[agentID].RegionID == UUID.Zero)
|
// This is probably an overkill, but just
|
||||||
{
|
// to make sure we have the latest and greatest
|
||||||
m_Friends[agentID].Friends =
|
// friends list -- always pull OnMakeRoot
|
||||||
|
m_Friends[agentID].Friends =
|
||||||
m_FriendsService.GetFriends(agentID);
|
m_FriendsService.GetFriends(agentID);
|
||||||
}
|
|
||||||
m_Friends[agentID].RegionID =
|
m_Friends[agentID].RegionID =
|
||||||
sp.ControllingClient.Scene.RegionInfo.RegionID;
|
sp.ControllingClient.Scene.RegionInfo.RegionID;
|
||||||
}
|
}
|
||||||
|
@ -438,56 +435,29 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
/// <param name="online"></param>
|
/// <param name="online"></param>
|
||||||
private void StatusChange(UUID agentID, bool online)
|
private void StatusChange(UUID agentID, bool online)
|
||||||
{
|
{
|
||||||
|
//m_log.DebugFormat("[FRIENDS]: StatusChange {0}", online);
|
||||||
if (m_Friends.ContainsKey(agentID))
|
if (m_Friends.ContainsKey(agentID))
|
||||||
{
|
{
|
||||||
|
//m_log.DebugFormat("[FRIENDS]: # of friends: {0}", m_Friends[agentID].Friends.Length);
|
||||||
List<FriendInfo> friendList = new List<FriendInfo>();
|
List<FriendInfo> friendList = new List<FriendInfo>();
|
||||||
foreach (FriendInfo fi in m_Friends[agentID].Friends)
|
foreach (FriendInfo fi in m_Friends[agentID].Friends)
|
||||||
{
|
{
|
||||||
if (((fi.MyFlags & 1) != 0) && (fi.TheirFlags != -1))
|
if (((fi.MyFlags & 1) != 0) && (fi.TheirFlags != -1))
|
||||||
friendList.Add(fi);
|
friendList.Add(fi);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
foreach (FriendInfo fi in friendList)
|
|
||||||
{
|
|
||||||
// Notify about this user status
|
|
||||||
StatusNotify(fi, agentID, online);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
StatusNotifyMass(friendList, agentID, online);
|
Util.FireAndForget(delegate
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StatusNotifyMass(List<FriendInfo> friendList, UUID userID, bool online)
|
|
||||||
{
|
|
||||||
int fct = friendList.Count;
|
|
||||||
string[] friendIDs = new string[fct];
|
|
||||||
int notlocal = 0;
|
|
||||||
for (int x = 0 ; x < fct ; x++)
|
|
||||||
{
|
|
||||||
UUID friendID = UUID.Zero;
|
|
||||||
if (UUID.TryParse(friendList[x].Friend, out friendID))
|
|
||||||
{
|
{
|
||||||
if (!LocalStatusNotification(userID, friendID, online))
|
foreach (FriendInfo fi in friendList)
|
||||||
{
|
{
|
||||||
friendIDs[notlocal++] = friendID.ToString();
|
//m_log.DebugFormat("[FRIENDS]: Notifying {0}", fi.PrincipalID);
|
||||||
|
// Notify about this user status
|
||||||
|
StatusNotify(fi, agentID, online);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
|
||||||
|
|
||||||
PresenceInfo[] friendSessions = PresenceService.GetAgents(friendIDs);
|
|
||||||
|
|
||||||
for (int x = 0; x < friendSessions.GetLength(0); x++)
|
|
||||||
{
|
|
||||||
if (friendIDs.Length <= x)
|
|
||||||
continue;
|
|
||||||
PresenceInfo friendSession = friendSessions[x];
|
|
||||||
if (friendSession != null)
|
|
||||||
{
|
|
||||||
GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
|
|
||||||
m_FriendsSimConnector.StatusNotify(region, userID, new UUID(friendIDs[x]), online);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
m_log.WarnFormat("[FRIENDS]: {0} not found in cache", agentID);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void StatusNotify(FriendInfo friend, UUID userID, bool online)
|
private void StatusNotify(FriendInfo friend, UUID userID, bool online)
|
||||||
|
@ -504,16 +474,26 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() });
|
PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() });
|
||||||
if (friendSessions != null && friendSessions.Length > 0)
|
if (friendSessions != null && friendSessions.Length > 0)
|
||||||
{
|
{
|
||||||
PresenceInfo friendSession = friendSessions[0];
|
PresenceInfo friendSession = null;
|
||||||
|
foreach (PresenceInfo pinfo in friendSessions)
|
||||||
|
if (pinfo.RegionID != UUID.Zero) // let's guard against sessions-gone-bad
|
||||||
|
{
|
||||||
|
friendSession = pinfo;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (friendSession != null)
|
if (friendSession != null)
|
||||||
{
|
{
|
||||||
GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
|
GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
|
||||||
|
//m_log.DebugFormat("[FRIENDS]: Remote Notify to region {0}", region.RegionName);
|
||||||
m_FriendsSimConnector.StatusNotify(region, userID, friendID, online);
|
m_FriendsSimConnector.StatusNotify(region, userID, friendID, online);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Friend is not online. Ignore.
|
// Friend is not online. Ignore.
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
m_log.WarnFormat("[FRIENDS]: Error parsing friend ID {0}", friend.Friend);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnInstantMessage(IClientAPI client, GridInstantMessage im)
|
private void OnInstantMessage(IClientAPI client, GridInstantMessage im)
|
||||||
|
@ -800,7 +780,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
IClientAPI friendClient = LocateClientObject(friendID);
|
IClientAPI friendClient = LocateClientObject(friendID);
|
||||||
if (friendClient != null)
|
if (friendClient != null)
|
||||||
{
|
{
|
||||||
//m_log.DebugFormat("[FRIENDS]: Notify {0} that user {1} is {2}", friend.Friend, userID, online);
|
//m_log.DebugFormat("[FRIENDS]: Local Status Notify {0} that user {1} is {2}", friendID, userID, online);
|
||||||
// the friend in this sim as root agent
|
// the friend in this sim as root agent
|
||||||
if (online)
|
if (online)
|
||||||
friendClient.SendAgentOnline(new UUID[] { userID });
|
friendClient.SendAgentOnline(new UUID[] { userID });
|
||||||
|
|
|
@ -3485,11 +3485,27 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
agent.AgentID, agent.circuitcode, teleportFlags);
|
agent.AgentID, agent.circuitcode, teleportFlags);
|
||||||
|
|
||||||
reason = String.Empty;
|
reason = String.Empty;
|
||||||
if (!VerifyUserPresence(agent, out reason))
|
try
|
||||||
|
{
|
||||||
|
if (!VerifyUserPresence(agent, out reason))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[CONNECTION BEGIN]: Exception verifying presence {0}", e.Message);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!AuthorizeUser(agent, out reason))
|
try
|
||||||
|
{
|
||||||
|
if (!AuthorizeUser(agent, out reason))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[CONNECTION BEGIN]: Exception authorizing user {0}", e.Message);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[CONNECTION BEGIN]: Region {0} authenticated and authorized incoming {1} agent {2} {3} {4} (circuit code {5})",
|
"[CONNECTION BEGIN]: Region {0} authenticated and authorized incoming {1} agent {2} {3} {4} (circuit code {5})",
|
||||||
|
@ -3699,14 +3715,19 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_regInfo.EstateSettings.IsBanned(agent.AgentID))
|
if (m_regInfo.EstateSettings != null)
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user is on the banlist",
|
if (m_regInfo.EstateSettings.IsBanned(agent.AgentID))
|
||||||
agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName);
|
{
|
||||||
reason = String.Format("Denied access to region {0}: You have been banned from that region.",
|
m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user is on the banlist",
|
||||||
RegionInfo.RegionName);
|
agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName);
|
||||||
return false;
|
reason = String.Format("Denied access to region {0}: You have been banned from that region.",
|
||||||
|
RegionInfo.RegionName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
m_log.ErrorFormat("[CONNECTION BEGIN]: Estate Settings is null!");
|
||||||
|
|
||||||
IGroupsModule groupsModule =
|
IGroupsModule groupsModule =
|
||||||
RequestModuleInterface<IGroupsModule>();
|
RequestModuleInterface<IGroupsModule>();
|
||||||
|
@ -3718,21 +3739,31 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
GroupMembershipData[] GroupMembership =
|
GroupMembershipData[] GroupMembership =
|
||||||
groupsModule.GetMembershipData(agent.AgentID);
|
groupsModule.GetMembershipData(agent.AgentID);
|
||||||
|
|
||||||
for (int i = 0; i < GroupMembership.Length; i++)
|
if (GroupMembership != null)
|
||||||
agentGroups.Add(GroupMembership[i].GroupID);
|
{
|
||||||
|
for (int i = 0; i < GroupMembership.Length; i++)
|
||||||
|
agentGroups.Add(GroupMembership[i].GroupID);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_log.ErrorFormat("[CONNECTION BEGIN]: GroupMembership is null!");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool groupAccess = false;
|
bool groupAccess = false;
|
||||||
UUID[] estateGroups = m_regInfo.EstateSettings.EstateGroups;
|
UUID[] estateGroups = m_regInfo.EstateSettings.EstateGroups;
|
||||||
|
|
||||||
foreach (UUID group in estateGroups)
|
if (estateGroups != null)
|
||||||
{
|
{
|
||||||
if (agentGroups.Contains(group))
|
foreach (UUID group in estateGroups)
|
||||||
{
|
{
|
||||||
groupAccess = true;
|
if (agentGroups.Contains(group))
|
||||||
break;
|
{
|
||||||
|
groupAccess = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
m_log.ErrorFormat("[CONNECTION BEGIN]: EstateGroups is null!");
|
||||||
|
|
||||||
if (!m_regInfo.EstateSettings.PublicAccess &&
|
if (!m_regInfo.EstateSettings.PublicAccess &&
|
||||||
!m_regInfo.EstateSettings.HasAccess(agent.AgentID) &&
|
!m_regInfo.EstateSettings.HasAccess(agent.AgentID) &&
|
||||||
|
|
|
@ -54,13 +54,13 @@ using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared.Api
|
namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class CM_Api : MarshalByRefObject, ICM_Api, IScriptApi
|
public class LS_Api : MarshalByRefObject, ILS_Api, IScriptApi
|
||||||
{
|
{
|
||||||
internal IScriptEngine m_ScriptEngine;
|
internal IScriptEngine m_ScriptEngine;
|
||||||
internal SceneObjectPart m_host;
|
internal SceneObjectPart m_host;
|
||||||
internal uint m_localID;
|
internal uint m_localID;
|
||||||
internal UUID m_itemID;
|
internal UUID m_itemID;
|
||||||
internal bool m_CMFunctionsEnabled = false;
|
internal bool m_LSFunctionsEnabled = false;
|
||||||
internal IScriptModuleComms m_comms = null;
|
internal IScriptModuleComms m_comms = null;
|
||||||
|
|
||||||
public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
|
public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
|
||||||
|
@ -70,12 +70,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_localID = localID;
|
m_localID = localID;
|
||||||
m_itemID = itemID;
|
m_itemID = itemID;
|
||||||
|
|
||||||
if (m_ScriptEngine.Config.GetBoolean("AllowCareminsterFunctions", false))
|
if (m_ScriptEngine.Config.GetBoolean("AllowLightShareFunctions", false))
|
||||||
m_CMFunctionsEnabled = true;
|
m_LSFunctionsEnabled = true;
|
||||||
|
|
||||||
m_comms = m_ScriptEngine.World.RequestModuleInterface<IScriptModuleComms>();
|
m_comms = m_ScriptEngine.World.RequestModuleInterface<IScriptModuleComms>();
|
||||||
if (m_comms == null)
|
if (m_comms == null)
|
||||||
m_CMFunctionsEnabled = false;
|
m_LSFunctionsEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Object InitializeLifetimeService()
|
public override Object InitializeLifetimeService()
|
||||||
|
@ -100,7 +100,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
//Dumps an error message on the debug console.
|
//Dumps an error message on the debug console.
|
||||||
//
|
//
|
||||||
|
|
||||||
internal void CMShoutError(string message)
|
internal void LSShoutError(string message)
|
||||||
{
|
{
|
||||||
if (message.Length > 1023)
|
if (message.Length > 1023)
|
||||||
message = message.Substring(0, 1023);
|
message = message.Substring(0, 1023);
|
||||||
|
@ -116,11 +116,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
/// Get the current Windlight scene
|
/// Get the current Windlight scene
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>List of windlight parameters</returns>
|
/// <returns>List of windlight parameters</returns>
|
||||||
public LSL_List cmGetWindlightScene(LSL_List rules)
|
public LSL_List lsGetWindlightScene(LSL_List rules)
|
||||||
{
|
{
|
||||||
if (!m_CMFunctionsEnabled)
|
if (!m_LSFunctionsEnabled)
|
||||||
{
|
{
|
||||||
CMShoutError("Careminster functions are not enabled.");
|
LSShoutError("LightShare functions are not enabled.");
|
||||||
return new LSL_List();
|
return new LSL_List();
|
||||||
}
|
}
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
@ -440,16 +440,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="rules"></param>
|
/// <param name="rules"></param>
|
||||||
/// <returns>success: true or false</returns>
|
/// <returns>success: true or false</returns>
|
||||||
public int cmSetWindlightScene(LSL_List rules)
|
public int lsSetWindlightScene(LSL_List rules)
|
||||||
{
|
{
|
||||||
if (!m_CMFunctionsEnabled)
|
if (!m_LSFunctionsEnabled)
|
||||||
{
|
{
|
||||||
CMShoutError("Careminster functions are not enabled.");
|
LSShoutError("LightShare functions are not enabled.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!World.RegionInfo.EstateSettings.IsEstateManager(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
|
if (!World.RegionInfo.EstateSettings.IsEstateManager(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
|
||||||
{
|
{
|
||||||
CMShoutError("cmSetWindlightScene can only be used by estate managers or owners.");
|
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int success = 0;
|
int success = 0;
|
||||||
|
@ -462,7 +462,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CMShoutError("Windlight module is disabled");
|
LSShoutError("Windlight module is disabled");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
|
@ -472,16 +472,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="rules"></param>
|
/// <param name="rules"></param>
|
||||||
/// <returns>success: true or false</returns>
|
/// <returns>success: true or false</returns>
|
||||||
public int cmSetWindlightSceneTargeted(LSL_List rules, LSL_Key target)
|
public int lsSetWindlightSceneTargeted(LSL_List rules, LSL_Key target)
|
||||||
{
|
{
|
||||||
if (!m_CMFunctionsEnabled)
|
if (!m_LSFunctionsEnabled)
|
||||||
{
|
{
|
||||||
CMShoutError("Careminster functions are not enabled.");
|
LSShoutError("LightShare functions are not enabled.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!World.RegionInfo.EstateSettings.IsEstateManager(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
|
if (!World.RegionInfo.EstateSettings.IsEstateManager(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
|
||||||
{
|
{
|
||||||
CMShoutError("cmSetWindlightSceneTargeted can only be used by estate managers or owners.");
|
LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int success = 0;
|
int success = 0;
|
||||||
|
@ -494,7 +494,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CMShoutError("Windlight module is disabled");
|
LSShoutError("Windlight module is disabled");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
|
@ -38,11 +38,11 @@ using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat;
|
||||||
|
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
{
|
{
|
||||||
public interface ICM_Api
|
public interface ILS_Api
|
||||||
{
|
{
|
||||||
// Windlight Functions
|
// Windlight Functions
|
||||||
LSL_List cmGetWindlightScene(LSL_List rules);
|
LSL_List lsGetWindlightScene(LSL_List rules);
|
||||||
int cmSetWindlightScene(LSL_List rules);
|
int lsSetWindlightScene(LSL_List rules);
|
||||||
int cmSetWindlightSceneTargeted(LSL_List rules, key target);
|
int lsSetWindlightSceneTargeted(LSL_List rules, key target);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -48,29 +48,44 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
{
|
{
|
||||||
public partial class ScriptBaseClass : MarshalByRefObject
|
public partial class ScriptBaseClass : MarshalByRefObject
|
||||||
{
|
{
|
||||||
public ICM_Api m_CM_Functions;
|
public ILS_Api m_LS_Functions;
|
||||||
|
|
||||||
public void ApiTypeCM(IScriptApi api)
|
public void ApiTypeLS(IScriptApi api)
|
||||||
{
|
{
|
||||||
if (!(api is ICM_Api))
|
if (!(api is ILS_Api))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_CM_Functions = (ICM_Api)api;
|
m_LS_Functions = (ILS_Api)api;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LSL_List lsGetWindlightScene(LSL_List rules)
|
||||||
|
{
|
||||||
|
return m_LS_Functions.lsGetWindlightScene(rules);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int lsSetWindlightScene(LSL_List rules)
|
||||||
|
{
|
||||||
|
return m_LS_Functions.lsSetWindlightScene(rules);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int lsSetWindlightSceneTargeted(LSL_List rules, key target)
|
||||||
|
{
|
||||||
|
return m_LS_Functions.lsSetWindlightSceneTargeted(rules, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_List cmGetWindlightScene(LSL_List rules)
|
public LSL_List cmGetWindlightScene(LSL_List rules)
|
||||||
{
|
{
|
||||||
return m_CM_Functions.cmGetWindlightScene(rules);
|
return m_LS_Functions.lsGetWindlightScene(rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int cmSetWindlightScene(LSL_List rules)
|
public int cmSetWindlightScene(LSL_List rules)
|
||||||
{
|
{
|
||||||
return m_CM_Functions.cmSetWindlightScene(rules);
|
return m_LS_Functions.lsSetWindlightScene(rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int cmSetWindlightSceneTargeted(LSL_List rules, key target)
|
public int cmSetWindlightSceneTargeted(LSL_List rules, key target)
|
||||||
{
|
{
|
||||||
return m_CM_Functions.cmSetWindlightSceneTargeted(rules, target);
|
return m_LS_Functions.lsSetWindlightSceneTargeted(rules, target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue