/// <summary> /// Construct a new instance of the ScriptControlEventArgs class /// </summary> /// <param name="controls">The controls the script is attempting to take or release to the agent</param> /// <param name="pass">True if the script is passing controls back to the agent</param> /// <param name="take">True if the script is requesting controls be released to the script</param> public ScriptControlEventArgs(ScriptControlChange controls, bool pass, bool take) { m_Controls = controls; m_Pass = pass; m_Take = take; }
public ScriptControlData this[ScriptInstance instance] { get { ScriptControlData data; lock (m_ScriptControls) { if (m_ScriptControls.TryGetValue(instance, out data)) { return(new ScriptControlData(data)); } } throw new KeyNotFoundException(); } set { lock (m_ScriptControls) { if (value != null) { m_ScriptControls[instance] = new ScriptControlData(value); } else { m_ScriptControls.Remove(instance); } ControlFlags takenControls = ControlFlags.None; ControlFlags ignoredControls = ControlFlags.None; foreach (var sc in m_ScriptControls.Values) { takenControls |= sc.Taken; ignoredControls |= sc.Ignored; } TakenControls = takenControls; IgnoredControls = ignoredControls; } ControlFlags taken = TakenControls; ControlFlags ignored = IgnoredControls; var msg = new ScriptControlChange(); if (taken != ignored) { msg.Data.Add(new ScriptControlChange.DataEntry { Controls = taken & ~ignored, PassToAgent = true, TakeControls = true }); msg.Data.Add(new ScriptControlChange.DataEntry { Controls = ignored, PassToAgent = false, TakeControls = true }); } else if (taken != ControlFlags.None) { msg.Data.Add(new ScriptControlChange.DataEntry { Controls = taken, PassToAgent = ignored == ControlFlags.None, TakeControls = true }); } else { msg.Data.Add(new ScriptControlChange.DataEntry { Controls = ControlFlags.None, PassToAgent = true, TakeControls = false }); } SendMessageAlways(msg, SceneID); } }