Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type FireEffect struct {
- r *rand.Rand
- lamp lampbase.StripeLamp
- borders []borderpair
- stdDev float64
- config FireConfig
- ch chan interface{}
- t tomb.Tomb
- m sync.RWMutex
- }
- func (f *FireEffect) Config() interface{} {
- f.m.RLock()
- conf := f.config
- f.m.RUnlock()
- return &conf
- }
- func (f *FireEffect) ConfigChan() chan interface{} {
- return f.ch
- }
- func (f *FireEffect) Tomb() *tomb.Tomb {
- return &f.t
- }
- func (f *FireEffect) Apply() {
- defer f.t.Done()
- for {
- select {
- case <-f.t.Dying():
- close(f.ch)
- return
- case confRecv := <-f.ch:
- newConf, ok := confRecv.(*FireConfig)
- if !ok {
- close(f.ch)
- f.t.Killf("Received config that wasn't *FireConfig", confRecv)
- return
- }
- f.m.Lock()
- f.config = *newConf
- f.m.Unlock()
- default:
- }
- f.colorizeLamp()
- time.Sleep(30 * time.Millisecond)
- }
- }
Advertisement
RAW Paste Data
Copied
Advertisement