A Cue stack hold a list of cues. A Cue is simply a Scene with some timing attributes to control the fade in and out times.
The Cue stack can work in 2 ways:
This means that if you bring a second scene up that does not explicitly set a value for a channel that already has a value set it will not affect the value of the channel.
This means that when a only the values in the scene count, so if the new scene does not contain a value for an existing channel, that existing channel will have its value removed (i.e. changed to 0). I think this should only be the case for intensity type channels.
In general the cue stack will work with a go button. Each time the go button is pressed the next cue will run. Of course you need to be able to jump to different cue points as well as editing the stack. Its important that whilst jumping to different points in the stack, that if running in tracking mode, the correct set of channel values will be presented upon pressing go (i.e. all the previous scenes need to be loaded so that tracked data is present)
It may also be that the cue stack needs to run in a manual cross fade mode as well as the automated timed mode with the go button.
How our Cue Stack works
This is the class that stores the actual Light Cues. It has standard setters and getters to allow binding of cues for easy display in tables. The attributes it stores are listed in the documantation, so I won't relist them here. This class complies with NSCoding however LOScene currently does not so the cues will not fully save (this will be fixed soon).
This is the class that does the actual fade form one look to the next. It can be assigned a fader number with init: so that you can keep track of which fader is sending a notification (the default number is 1). In order to work the fader must be supplied with the current look on stage via a LOScene as well as the LOLightCue that should be played. This class does have a pause and resume function.
This is designed to allow the implementation of a back feature. If used the cue being played should be sent at the same time the fade starts. When the last cue is requested the class assumes you are stepping back a cue and will erase the current cue.
You play cue 1 so you should call addCue:1.
(the cue history now has cue 1 stored as the most recent cue.)
next you play cue 2 so you call addCue:2.
(the cue history now has two cues in its array starting from index 0 they are 1, 2)
Now you call lastCue. Which causes the cue history to remove cue 2 from its array and return the float 1.0.
the initWithMaxHistory: method allows you to set the max number of cues the history will store to prevent the history form growing out of control. The cue history does not comply with NSCoding so it does not save with the show file.