public static void Init(IConfig controlConfig, UUID godID, Control control, IPrimFactory factory) { factory.AddLinkSetRoot(factory.Host.ID); string userFolder = controlConfig.Get("UserFolder", "."); string godName = controlConfig.GetString(GOD_KEY, GOD); string sequenceFolder = controlConfig.Get("SequenceFolder", "."); string sequence = controlConfig.GetString(SEQUENCE_KEY); if (sequence == null) { control.HostPrim.Say("Unable to start sequence control. No sequence file specified."); throw new Exception("Unable to start sequence control. No sequence file specified."); } string location = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.Combine(userFolder, Path.Combine(godName, Path.Combine(sequenceFolder, sequence)))); if (!File.Exists(location)) { control.HostPrim.Say("Unable to start sequence control. Sequence File '" + location + "' does not exist."); throw new Exception("Unable to start sequence control. Sequence File '" + location + "' does not exist."); } IButton PlayButton = control.MakeButton("Play"); IButton PauseButton = control.MakeButton("Pause"); IButton StopButton = control.MakeButton("Stop"); IButton StepButton = control.MakeButton("Step"); IToggle PauseToggle = new Toggle(PauseButton, 1, control.ToggleGlow); foreach (var pause in PauseToggle.Prims) { pause.Colour = Color.White; } PlayButton.OnTouched += (source, args) => { if (!control.Record.PlayingSequence) { control.Clear(godName, godID); control.Record.PlayRecording(godName, godID, sequence); } }; StopButton.OnTouched += (source, args) => { control.Record.StopPlayback(); control.Clear(godName, godID); control.HostPrim.Say("Stopped playback."); }; PauseToggle.OnToggled += (source, args) => { control.Record.Paused = PauseToggle.IsOn; foreach (var prim in PauseToggle.Prims) { prim.Glow = PauseToggle.IsOn ? .1d : 0d; prim.Colour = Color.White; } }; StepButton.OnTouched += (source, args) => { if (!control.Model.Step() && control.Record.PlayingSequence) { control.Record.PlayNextEvent(); } }; }
public static void Init(IConfig controlConfig, UUID godID, Control control, IPrimFactory factory) { factory.AddLinkSetRoot(factory.Host.ID); string userFolder = controlConfig.Get("UserFolder", "."); string godName = controlConfig.GetString(GOD_KEY, GOD); string sequenceFolder = controlConfig.Get("SequenceFolder", "."); string sequence = controlConfig.GetString(SEQUENCE_KEY); if (sequence == null) { control.HostPrim.Say("Unable to start sequence control. No sequence file specified."); throw new Exception("Unable to start sequence control. No sequence file specified."); } string location = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.Combine(userFolder, Path.Combine(godName, Path.Combine(sequenceFolder, sequence)))); if (!File.Exists(location)) { control.HostPrim.Say("Unable to start sequence control. Sequence File '" + location + "' does not exist."); throw new Exception("Unable to start sequence control. Sequence File '" + location + "' does not exist."); } IButton PlayButton = control.MakeButton("Play"); IButton PauseButton = control.MakeButton("Pause"); IButton StopButton = control.MakeButton("Stop"); IButton StepButton = control.MakeButton("Step"); IToggle PauseToggle = new Toggle(PauseButton, 1, control.ToggleGlow); foreach (var pause in PauseToggle.Prims) pause.Colour = Color.White; PlayButton.OnTouched += (source, args) => { if (!control.Record.PlayingSequence) { control.Clear(godName, godID); control.Record.PlayRecording(godName, godID, sequence); } }; StopButton.OnTouched += (source, args) => { control.Record.StopPlayback(); control.Clear(godName, godID); control.HostPrim.Say("Stopped playback."); }; PauseToggle.OnToggled += (source, args) => { control.Record.Paused = PauseToggle.IsOn; foreach (var prim in PauseToggle.Prims) { prim.Glow = PauseToggle.IsOn ? .1d : 0d; prim.Colour = Color.White; } }; StepButton.OnTouched += (source, args) => { if (!control.Model.Step() && control.Record.PlayingSequence) control.Record.PlayNextEvent(); }; }