* Other then the prim update experiments that are going on now, llTakeControls works now along with the 'release controls button'. llReleaseControls() works mostly :D.
parent
b77aa39d64
commit
86669a1664
|
@ -530,6 +530,8 @@ namespace OpenSim.Framework
|
|||
public delegate void ScriptAnswer(IClientAPI remoteClient, LLUUID objectID, LLUUID itemID, int answer);
|
||||
|
||||
public delegate void RequestPayPrice(IClientAPI remoteClient, LLUUID objectID);
|
||||
|
||||
public delegate void ForceReleaseControls(IClientAPI remoteClient, LLUUID agentID);
|
||||
|
||||
//Estate Requests
|
||||
public delegate void DetailedEstateDataRequest(IClientAPI remoteClient, LLUUID invoice);
|
||||
|
@ -702,6 +704,8 @@ namespace OpenSim.Framework
|
|||
|
||||
event AgentSit OnUndo;
|
||||
|
||||
event ForceReleaseControls OnForceReleaseControls;
|
||||
|
||||
event DetailedEstateDataRequest OnDetailedEstateDataRequest;
|
||||
event SetEstateFlagsRequest OnSetEstateFlagsRequest;
|
||||
event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
|
||||
|
|
|
@ -240,6 +240,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
private ObjectDeselect handlerObjectDetach = null;
|
||||
private AgentSit handlerOnUndo = null;
|
||||
|
||||
private ForceReleaseControls handlerForceReleaseControls = null;
|
||||
|
||||
/* Properties */
|
||||
|
||||
public LLUUID SecureSessionId
|
||||
|
@ -802,6 +804,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
public event RequestPayPrice OnRequestPayPrice;
|
||||
public event AgentSit OnUndo;
|
||||
|
||||
public event ForceReleaseControls OnForceReleaseControls;
|
||||
|
||||
public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
|
||||
public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
|
||||
public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
|
||||
|
@ -4004,6 +4008,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
break;
|
||||
|
||||
case PacketType.ForceScriptControlRelease:
|
||||
handlerForceReleaseControls = OnForceReleaseControls;
|
||||
if (handlerForceReleaseControls != null)
|
||||
{
|
||||
handlerForceReleaseControls(this, AgentId);
|
||||
}
|
||||
break;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Objects/m_sceneObjects
|
||||
|
|
|
@ -137,6 +137,10 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
public event ScriptChangedEvent OnScriptChangedEvent;
|
||||
|
||||
public delegate void ScriptControlEvent(uint localID, LLUUID item, LLUUID avatarID, uint held, uint changed);
|
||||
|
||||
public event ScriptControlEvent OnScriptControlEvent;
|
||||
|
||||
public delegate void ScriptAtTargetEvent(uint localID, uint handle, LLVector3 targetpos, LLVector3 atpos);
|
||||
|
||||
public event ScriptAtTargetEvent OnScriptAtTargetEvent;
|
||||
|
@ -274,6 +278,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
private DeregisterCapsEvent handlerDeregisterCaps = null; // OnDeregisterCaps;
|
||||
private NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete = null;
|
||||
private RequestChangeWaterHeight handlerRequestChangeWaterHeight = null; //OnRequestChangeWaterHeight
|
||||
private ScriptControlEvent handlerScriptControlEvent = null;
|
||||
|
||||
private LandBuy handlerLandBuy = null;
|
||||
private LandBuy handlerValidateLandBuy = null;
|
||||
|
@ -603,9 +608,13 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
internal void TriggerControlEvent(uint p, LLUUID scriptUUID, uint p_3, uint p_4)
|
||||
internal void TriggerControlEvent(uint p, LLUUID scriptUUID, LLUUID avatarID, uint held, uint _changed)
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
handlerScriptControlEvent = OnScriptControlEvent;
|
||||
if (handlerScriptControlEvent != null)
|
||||
{
|
||||
handlerScriptControlEvent(p, scriptUUID, avatarID, held, _changed);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -443,6 +443,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun;
|
||||
m_controllingClient.OnStartAnim += HandleStartAnim;
|
||||
m_controllingClient.OnStopAnim += HandleStopAnim;
|
||||
m_controllingClient.OnForceReleaseControls += HandleForceReleaseControls;
|
||||
|
||||
// ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
|
||||
// ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
|
||||
|
@ -2491,6 +2492,15 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
|
||||
}
|
||||
public void HandleForceReleaseControls(IClientAPI remoteClient, LLUUID agentID)
|
||||
{
|
||||
IgnoredControls = ScriptControlled.CONTROL_ZERO;
|
||||
lock (scriptedcontrols)
|
||||
{
|
||||
scriptedcontrols.Clear();
|
||||
}
|
||||
ControllingClient.SendTakeControls(int.MaxValue, false, false);
|
||||
}
|
||||
|
||||
public void UnRegisterControlEventsToScript(uint Obj_localID, LLUUID Script_item_LLUUID)
|
||||
{
|
||||
|
@ -2512,6 +2522,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
|
||||
ScriptControlled allflags = ScriptControlled.CONTROL_ZERO;
|
||||
|
||||
if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0)
|
||||
{
|
||||
allflags |= ScriptControlled.CONTROL_FWD;
|
||||
|
@ -2552,6 +2563,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
allflags |= ScriptControlled.CONTROL_LBUTTON;
|
||||
}
|
||||
|
||||
ScriptControlled held = ScriptControlled.CONTROL_ZERO;
|
||||
ScriptControlled change = ScriptControlled.CONTROL_ZERO;
|
||||
|
||||
|
@ -2584,12 +2596,16 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
ScriptControllers scriptControlData = scriptedcontrols[scriptUUID];
|
||||
ScriptControlled localHeld = held & scriptControlData.eventControls;
|
||||
//if (localHeld != ScriptControlled.CONTROL_ZERO)
|
||||
//{
|
||||
//int i = 1;
|
||||
//}
|
||||
ScriptControlled localChange = change & scriptControlData.eventControls;
|
||||
m_scene.EventManager.TriggerControlEvent(scriptControlData.objID, scriptUUID, (uint)localHeld, (uint)localChange);
|
||||
m_scene.EventManager.TriggerControlEvent(scriptControlData.objID, scriptUUID, UUID, (uint)localHeld, (uint)localChange);
|
||||
}
|
||||
}
|
||||
LastCommands = allflags;
|
||||
//foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags)))
|
||||
|
||||
}
|
||||
internal uint RemoveIgnoredControls(uint flags, ScriptControlled Ignored)
|
||||
{
|
||||
|
|
|
@ -172,6 +172,8 @@ namespace OpenSim.Region.Examples.SimpleModule
|
|||
public event RequestPayPrice OnRequestPayPrice;
|
||||
public event AgentSit OnUndo;
|
||||
|
||||
public event ForceReleaseControls OnForceReleaseControls;
|
||||
|
||||
public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
|
||||
public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
|
||||
public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
|
||||
|
|
|
@ -72,6 +72,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
|||
myScriptEngine.World.EventManager.OnScriptChangedEvent += changed;
|
||||
myScriptEngine.World.EventManager.OnScriptAtTargetEvent += at_target;
|
||||
myScriptEngine.World.EventManager.OnScriptNotAtTargetEvent += not_at_target;
|
||||
myScriptEngine.World.EventManager.OnScriptControlEvent += control;
|
||||
|
||||
// TODO: HOOK ALL EVENTS UP TO SERVER!
|
||||
IMoneyModule money=myScriptEngine.World.RequestModuleInterface<IMoneyModule>();
|
||||
|
|
Loading…
Reference in New Issue