def __init__(self, grass, props):
        GrassAnimation.__init__(self, grass, props)
        self.effects = []

        self.on_time_percent = 0.5
        self.hue = 0.33
        self.pixel_hue = 0.7
        self.brightness = 1.0
        if self.props != None:
            if 'on_time_percent' in self.props:
                self.on_time_percent = self.props['on_time_percent']
            if 'hue_start' in self.props:
                self.hue = self.props['hue_start']
            if 'pixel_hue' in self.props:
                self.pixel_hue = self.props['pixel_hue']
            if 'brightness' in self.props:
                self.brightness = self.props['brightness']

        max_height = 0
        for leaf in self.grass.get_leaves_array():
            max_height = max(max_height, len(leaf[0]))
            max_height = max(max_height, len(leaf[1]))

        for leaf in self.grass.get_leaves_array():
            rand_leaf_color = Colors.hls_to_rgb(
                self.hue, random.uniform(0.6, 1),
                random.uniform(0.2, self.brightness))
            pixel_color = Colors.hls_to_rgb(self.pixel_hue, 1.0, 1.0)
            self.effects.append(
                SinglePixelEffect(leaf[0], rand_leaf_color, pixel_color,
                                  max_height * (1 + self.on_time_percent)))
            self.effects.append(
                SinglePixelEffect(leaf[1][::-1], rand_leaf_color, pixel_color,
                                  max_height * (1 + self.on_time_percent)))
    def create_effects(self):
        self.effects = []
        
        color1 = Colors.hls_to_rgb(self.hue1, 1, 1)
        color2 = Colors.hls_to_rgb(self.hue2, 1, 1)
        self.effects.append(AlternateColorEvery3Effect(self.sheep.body, color1, color2))

        self.effects.append(AlwaysOnEffect(self.sheep.head + self.sheep.legs, color1))
        self.effects.append(AlwaysOnEffect(self.sheep.eyes, color2))
    def create_effects(self):
        self.effects = []

        color1 = Colors.hls_to_rgb(self.hue1, 1, 1)
        color2 = Colors.hls_to_rgb(self.hue2, 1, 1)

        for l in self.grass.get_leaves_array():
            self.effects.append(AlternateColorEvery3Effect(l[0], color1, color2))
            self.effects.append(AlternateColorEvery3Effect(l[1][:], color1, color2))
 def create_effects(self):
     self.effects = []
     hue = random.random()
     for leaf in self.tree.get_leaves_and_stem():
         self.effects.append(
             SinglePixelEffect(leaf[0][::-1], [0, 0, 0],
                               Colors.hls_to_rgb(hue, 1.0, 1.0),
                               len(leaf[0])))
         self.effects.append(
             SinglePixelEffect(leaf[1][::-1], [0, 0, 0],
                               Colors.hls_to_rgb(hue, 1.0, 1.0),
                               len(leaf[1])))
    def next_hue(self):
        self.effects = []

        new_hue = self.hue + self.hue_speed
        if new_hue > 1 : new_hue -= 1
        prev_color = Colors.hls_to_rgb(self.hue, 1.0, 1.0)
        new_color = Colors.hls_to_rgb(new_hue, 1.0, 1.0)
        self.effects.append(GoToColorEffect(self.flower.get_leaves() + self.flower.seeds, prev_color, new_color))
        self.hue = new_hue

        self.effects.append(AlwaysOnEffect(self.flower.line, [50, 200, 0]))
        self.effects.append(AlwaysOnEffect(self.flower.leaves, [0, 200, 0]))
    def create_effects(self):
        self.effects = []

        color1 = Colors.hls_to_rgb(self.hue1, 1, 1)
        color2 = Colors.hls_to_rgb(self.hue2, 1, 1)
        self.effects.append(
            AlternateColorEvery3Effect(self.flower.bottom_parts, color1,
                                       color2))
        self.effects.append(
            AlternateColorEvery3Effect(self.flower.get_leaves(), color1,
                                       color2))

        self.effects.append(AlwaysOnEffect(self.flower.seeds, color1))
示例#7
0
def apply_animation(ui_element, num_of_beats, duration, relative_song_time):

	beat_duration = duration/num_of_beats
	beats_played = math.floor(relative_song_time / beat_duration)
	relative_beat_time = relative_song_time - beat_duration * beats_played
	percent_beat_time = relative_beat_time / beat_duration

	if beats_played % 2 == 0:
		color = Colors.hls_to_rgb(hue, 1 ,1)
	else:
		color = Colors.hls_to_rgb(hue + 0.1, 1 ,1)
	
	for i in range(len(ui_element.get_array())/3):
		ui_element.get_array()[i*3 : i*3+3] = color
示例#8
0
    def _start_spike(self):
 
        self.effects = []
        self.last_hue += self.hue_speed
        if self.last_hue > 1:
            self.last_hue -= 1
        rand_color = Colors.hls_to_rgb(self.last_hue, 1.0, 1.0)
        self.effects.append(AlwaysOnEffect(self.lake.waves_arr[self.last_wave], rand_color))

        contour_color = Colors.hls_to_rgb(self.last_hue, 0.5, 0.7)
        self.effects.append(AlwaysOnEffect(self.lake.contour, contour_color))
 
        self.last_wave += 1
        if self.last_wave >= len(self.lake.waves_arr):
            self.last_wave = 0
    def create_bottom_animation(self):
        self.effects = []

        hue = self.previous_hue + 0.1 + random.random() * 0.8
        if hue > 1: hue -= 1
        self.previous_hue = hue

        self.previous_color = self.color
        self.color = Colors.hls_to_rgb(hue, 1, 1)

        self.effects.append(
            AdvanceEffect.initColor(self.flower.line_back, self.previous_color,
                                    self.color))
        self.effects.append(
            AdvanceEffect.initColor(self.flower.line_front,
                                    self.previous_color, self.color))
        self.effects.append(
            AdvanceEffect.initColor(self.flower.leaf_right_front,
                                    self.previous_color, self.color))
        self.effects.append(
            AdvanceEffect.initColor(self.flower.leaf_right_back,
                                    self.previous_color, self.color))
        self.effects.append(
            AdvanceEffect.initColor(self.flower.leaf_left_front,
                                    self.previous_color, self.color))
        self.effects.append(
            AdvanceEffect.initColor(self.flower.leaf_left_back,
                                    self.previous_color, self.color))

        self.effects.append(
            AlwaysOnEffect(self.flower.seeds, self.previous_color))
        self.effects.append(
            AlwaysOnEffect(self.flower.get_leaves(), self.previous_color))
示例#10
0
 def add_effect_for_index(self, index, location_percent):
     start_t = random.uniform(0.0, 0.4)
     dark_time = 1.0 - random.uniform(0.00, 0.4)
     on_tot_time = dark_time - start_t
     on_start_t = start_t + random.uniform(0.1, on_tot_time / 2.0)
     on_end_t = dark_time - random.uniform(0.1, on_tot_time / 2.0)
     rgb_color = Colors.hls_to_rgb(random.random(), random.uniform(0, 0.5), 1.0)
     self.effects.append(
         StarEffect([index], ConstTimedColor(rgb_color), start_t, on_start_t, on_end_t, dark_time, location_percent))
示例#11
0
    def apply(self, parent_array):

        for i in range(len(self.indexes)):
            # color
            hue = (i / float(len(self.indexes)) * self.num_of_rainbows) % 1
            color = Colors.hls_to_rgb(hue, self.max_brightness, 1.0)
        
            index = self.indexes[i]
            parent_array[index * 3:index * 3 + 3] = color
示例#12
0
    def next_hue(self):
        self.effects = []

        new_hue = self.hue + self.hue_speed
        if new_hue > 1: new_hue -= 1

        if self.full_color == True:
            prev_color = Colors.hls_to_rgb(self.hue, 1.0, 1.0)
            new_color = Colors.hls_to_rgb(new_hue, 1.0, 1.0)
        else:
            prev_color = Colors.hls_to_rgb(self.hue, 0.5, 0.7)
            new_color = Colors.hls_to_rgb(new_hue, 0.5, 0.7)

        if self.animated == True:
            self.effects.append(
                GoToColorEffect(self.sign.whole_sign, prev_color, new_color))
        else:
            self.effects.append(AlwaysOnEffect(self.sign.whole_sign,
                                               new_color))

        self.hue = new_hue
示例#13
0
    def apply(self, is_change, parent_array):
        
        # change hue
        if (is_change):
            self.current_hue = (self.current_hue + self.diff) % 1

        # color
        color = Colors.hls_to_rgb(self.current_hue, self.max_brightness, 1.0)

        # apply
        for i in self.indexes:
            parent_array[i * 3:i * 3 + 3] = color
示例#14
0
    def apply(self, time_percent, parent_array):

        if time_percent < self.last_time_percent:
            self.eq_start = random.uniform(0.2, 0.7)
        self.last_time_percent = time_percent

        percent = (self.eq_start + random.uniform(-0.00, 0.00)) + (
            (self._global_value(time_percent) - 0.2) * 0.5)
        percent = max(percent, 0.0)
        percent = min(percent, 1.0)
        self.curr_pos = self.curr_pos + min(
            (percent - self.curr_pos) * 0.4, int(len(self.indexes) * 0.03))
        v = int(len(self.indexes) * self.curr_pos)
        """ fade to black """
        for i in range(0, v):
            obj_pixel = self.indexes[i]
            parent_array[3 * obj_pixel:3 * obj_pixel + 3] = Colors.hls_to_rgb(
                self.hue1, 1.0, self.brightness)
        for i in range(v, len(self.indexes)):
            obj_pixel = self.indexes[i]
            parent_array[3 * obj_pixel:3 * obj_pixel + 3] = Colors.hls_to_rgb(
                self.hue2, 1.0, self.brightness)
示例#15
0
    def apply(self, time_percent):

        if time_percent < 0.5:
            c = time_percent * 0.25
        else:
            c = (1.0 - time_percent) * 0.25
        c = c + 0.01
        c = math.pow(c, 0.5)

        for letter_index in range(0, len(self.sign.get_letters())):
            letter = self.sign.get_letters()[letter_index]
            hue = self.hues[letter_index]
            for i in letter:
                self.sign.get_array()[i * 3:i * 3 + 3] = Colors.hls_to_rgb(
                    hue, 1.0, c)
示例#16
0
    def _start_spike(self):

        self.effects = []
        self.last_hue += self.hue_speed
        if self.last_hue > 1:
            self.last_hue -= 1
        rand_color = Colors.hls_to_rgb(self.last_hue, 1.0, 1.0)
        new_animation = AlwaysOnEffect(
            self.grass.get_leaves_array()[self.last_leaf][0] +
            self.grass.get_leaves_array()[self.last_leaf][1], rand_color)
        self.effects.append(new_animation)

        self.last_leaf += 1
        if self.last_leaf >= len(self.grass.get_leaves_array()):
            self.last_leaf = 0
示例#17
0
    def __init__(self, lake, props):
        LakeAnimation.__init__(self, lake, props)
        self.effects = []

        self.brightness = 0.2
        self.hue1 = 0.7
        self.hue2 = 0.8

        if self.props != None:
            if 'hue1' in self.props:
                self.hue1 = self.props['hue1']
            if 'hue2' in self.props:
                self.hue2 = self.props['hue2']
            if 'brightness' in self.props:
                self.brightness = self.props['brightness']

        for i in range(0, len(self.lake.waves_arr)):
            w = self.lake.waves_arr[i]
            self.effects.append(
                EqEffect(w,
                         brightness=self.brightness,
                         hue1=self.hue1,
                         hue2=self.hue2))

        #the lake segments between the waves
        for i in range(1, len(self.lake.waves_arr)):
            high_start = self.lake.conn_arr[i][0]
            high_end = self.lake.conn_arr[i - 1][0]
            if high_start < high_end:
                high_indexes = range(high_start, high_end)
            else:
                high_indexes = range(
                    high_start, self.lake.contour[-1]) + range(0, high_end)
            low_indexes = range(self.lake.conn_arr[i - 1][1],
                                self.lake.conn_arr[i][1])
            self.effects.append(
                AlwaysOnEffect(
                    high_indexes,
                    Colors.hls_to_rgb(self.hue1, 1.0, self.brightness)))
            self.effects.append(
                AlwaysOnEffect(
                    low_indexes,
                    Colors.hls_to_rgb(self.hue2, 1.0, self.brightness)))

        #make nice transitions in the corners
        self.effects.append(
            GradientEffect(
                range(self.lake.conn_arr[0][0], self.lake.conn_arr[0][1]),
                Colors.hls_to_rgb(self.hue1, 1.0, self.brightness),
                Colors.hls_to_rgb(self.hue2, 1.0, self.brightness)))
        self.effects.append(
            GradientEffect(
                range(self.lake.conn_arr[12][1], self.lake.conn_arr[12][0]),
                Colors.hls_to_rgb(self.hue2, 1.0, self.brightness),
                Colors.hls_to_rgb(self.hue1, 1.0, self.brightness)))
示例#18
0
    def _restart(self):

        self.effects = []
        self.effects.append(AlwaysOnEffect(self.tree.get_stem(),
                                           [133, 87, 35]))
        self.last_hue += self.hue_speed
        if self.last_hue > 1:
            self.last_hue -= 1
        rand_color = Colors.hls_to_rgb(self.last_hue, 1.0, 1.0)
        arr = self.tree.get_leaves_array()
        self.effects.append(AlwaysOnEffect(arr[self.last_leaf][0], rand_color))
        self.effects.append(AlwaysOnEffect(arr[self.last_leaf][1], rand_color))

        self.last_leaf += 1
        if self.last_leaf >= len(arr):
            self.last_leaf = 0
示例#19
0
    def __init__(self, lake, props):
        LakeAnimation.__init__(self, lake, props)
        self.effects = []
        self.previous_time = 1

        self.hue = 0.67
        if self.props != None:
            if 'hue_start' in self.props:
                self.hue = self.props['hue_start']       
        

        self.base_effect = AlwaysOnEffect(self.lake.whole_lake, Colors.hls_to_rgb(self.hue, 1, 1))

        self.start_times = []
        self.speeds = []
        self.create_effects()
示例#20
0
    def apply(self, time_percent):

        if (time_percent < self.previous_time):
            self.effects = []

            if self.frame_counter % 2 == 0:
                hue = self.previous_hue + 0.1 + random.random() * 0.8
                if hue > 1: hue -= 1
                self.previous_hue = hue
                self.previous_color = self.color
                self.color = Colors.hls_to_rgb(hue, 1, 1)

                self.effects.append(
                    AdvanceEffect.initColor(self.tree.get_right_stem(),
                                            self.previous_color, self.color))
                self.effects.append(
                    AdvanceEffect.initColor(self.tree.get_left_stem(),
                                            self.previous_color, self.color))

                for leaf in self.tree.get_leaves_array():
                    self.effects.append(
                        AlwaysOnEffect(leaf[0], self.previous_color))
                    self.effects.append(
                        AlwaysOnEffect(leaf[1], self.previous_color))

            if self.frame_counter % 2 == 1:
                self.effects.append(
                    AlwaysOnEffect(self.tree.get_right_stem(), self.color))
                self.effects.append(
                    AlwaysOnEffect(self.tree.get_left_stem(), self.color))

                for leaf in self.tree.get_leaves_array():
                    self.effects.append(
                        AdvanceEffect.initColor(leaf[0][::-1],
                                                self.previous_color,
                                                self.color))
                    self.effects.append(
                        AdvanceEffect.initColor(leaf[1][::-1],
                                                self.previous_color,
                                                self.color))

            self.frame_counter += 1

        for effect in self.effects:
            effect.apply(time_percent, self.tree.get_array())

        self.previous_time = time_percent
示例#21
0
    def _start_spike(self):

        self.effects = []
        self.last_hue += self.hue_speed
        if self.last_hue > 1:
            self.last_hue -= 1
        rand_color = Colors.hls_to_rgb(self.last_hue, 1.0, 1.0)
        self.effects.append(
            AlwaysOnEffect(self.flower.get_leaves_array()[self.last_leaf],
                           rand_color))
        self.effects.append(AlwaysOnEffect(self.flower.seeds, rand_color))
        self.effects.append(
            AlwaysOnEffect(self.flower.bottom_parts, rand_color))

        self.last_leaf += 1
        if self.last_leaf >= len(self.flower.get_leaves_array()):
            self.last_leaf = 0
示例#22
0
    def apply_animation(self, song_time):
        if self.time_stamps and song_time > self.time_stamps[0][0]:
            sheep.clear()
            flower.clear()
            label = self.time_stamps[0][1]
            if label == "H":
                self.s_effects = [
                    AlwaysOnEffect(
                        sheep.get_head_indexes() + sheep.get_ears_indexes(),
                        Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.f_effects = [
                    AlwaysOnEffect(self.flower.get_seeds(),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
            elif label == "BP":
                self.s_effects = [
                    AlwaysOnEffect(sheep.get_body_part_indexes(self.body_part),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.f_effects = [
                    AlwaysOnEffect(self.flower.get_leaves_array()[self.leaf],
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.body_part = (self.body_part + self.body_part_dir)
                if self.body_part == self.sheep.get_num_of_body_parts() - 1:
                    self.body_part_dir = -1
                elif self.body_part == 0:
                    self.body_part_dir = 1
                self.leaf = (self.leaf + 1) % len(
                    self.flower.get_leaves_array())
            elif label == "L1":
                self.s_effects = [
                    AlwaysOnEffect(sheep.get_leg12_indexes(),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.f_effects = [
                    AlwaysOnEffect(self.flower.get_left_leaf(),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                #self.f_effects = [
                #    AlwaysOnEffect(self.flower.get_left_leaf(), Colors.hls_to_rgb(0.0, 1.0, 1.0))
                #]
                self.hue = (self.hue + 0.3) % 1
            elif label == "L2":
                self.s_effects = [
                    AlwaysOnEffect(sheep.get_leg34_indexes(),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.f_effects = [
                    AlwaysOnEffect(self.flower.get_right_leaf(),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.hue = (self.hue + 0.3) % 1
            elif label == "W":
                self.s_effects = [
                    AlwaysOnEffect(sheep.get_all_indexes(),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.f_effects = [
                    AlwaysOnEffect(self.flower.get_all_indexes(),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
            else:
                print "unknown label: " + label
                self.s_effects = [
                    AlwaysOnEffect(sheep.get_body_part_indexes(self.body_part),
                                   Colors.hls_to_rgb(self.hue, 1.0, 1.0))
                ]
                self.body_part = (self.body_part +
                                  1) % self.sheep.get_num_of_body_parts()
            self.hue = (self.hue + 0.05) % 1
            self.curr_effect_start = self.time_stamps[0][0]
            del self.time_stamps[0]
            self.curr_effect_time = (
                self.time_stamps[0][0] -
                self.curr_effect_start) if len(self.time_stamps) > 0 else 1

        time_percent = (song_time -
                        self.curr_effect_start) / self.curr_effect_time
        for e in self.s_effects:
            e.apply(time_percent, sheep.get_array())
        for e in self.f_effects:
            e.apply(time_percent, flower.get_array())
示例#23
0
    def create_effects(self):
        self.effects = []

        color1 = Colors.hls_to_rgb(self.hue1, 1, 1)
        color2 = Colors.hls_to_rgb(self.hue2, 1, 1)
        self.effects.append(AlternateColorEvery3Effect(self.tree.get_all_indexes(), color1, color2))
    def createEffects(self):

        one = self.flower.l1 + self.flower.l3 + self.flower.l5 + self.flower.l7 + self.flower.l9
        two = self.flower.l8 + self.flower.l10 + self.flower.l2 + self.flower.l4 + self.flower.l6
        self.effects = []
        self.effects.append(RainbowEffect(one[::-1]))
        self.effects.append(RainbowEffect(two))

        seeds_order = self.flower.seeds[:]
        random.shuffle(seeds_order)
        self.effects.append(RainbowEffect(seeds_order))

        if self.frame_counter % 2 == 0:
            self.hue = random.random()
        color = Colors.hls_to_rgb(self.hue, 1, 1)
        light_color = [x * 0.2 for x in color]

        gradient1_front = Colors.gradient_array(light_color, color,
                                                len(self.flower.line_front), 4)
        gradient2_front = Colors.gradient_array([30, 30, 30], [100, 100, 100],
                                                len(self.flower.line_front), 4)
        gradient1_back = Colors.gradient_array(light_color, color,
                                               len(self.flower.line_back), 4)
        gradient2_back = Colors.gradient_array([30, 30, 30], [100, 100, 100],
                                               len(self.flower.line_back), 4)

        if self.frame_counter % 2 == 0:
            self.effects.append(
                GoToColorsEffect(self.flower.line_front, gradient2_front,
                                 gradient1_front))
            self.effects.append(
                GoToColorsEffect(self.flower.line_back, gradient2_back,
                                 gradient1_back))
        else:
            self.effects.append(
                GoToColorsEffect(self.flower.line_front, gradient1_front,
                                 gradient2_front))
            self.effects.append(
                GoToColorsEffect(self.flower.line_back, gradient1_back,
                                 gradient2_back))

        gradient1_leaf1 = Colors.gradient_array(
            light_color, color,
            len(self.flower.leaf_right_front + self.flower.leaf_right_back), 4)
        gradient2_leaf1 = Colors.gradient_array(
            [30, 30, 30], [100, 100, 100],
            len(self.flower.leaf_right_front + self.flower.leaf_right_back), 4)
        gradient1_leaf2 = Colors.gradient_array(
            light_color, color,
            len(self.flower.leaf_left_front + self.flower.leaf_left_back), 4)
        gradient2_leaf2 = Colors.gradient_array(
            [30, 30, 30], [100, 100, 100],
            len(self.flower.leaf_left_front + self.flower.leaf_left_back), 4)

        if self.frame_counter % 2 == 0:
            self.effects.append(
                GoToColorsEffect(
                    self.flower.leaf_right_front + self.flower.leaf_right_back,
                    gradient2_leaf1, gradient1_leaf1))
            self.effects.append(
                GoToColorsEffect(
                    self.flower.leaf_left_front + self.flower.leaf_left_back,
                    gradient2_leaf2, gradient1_leaf2))
        else:
            self.effects.append(
                GoToColorsEffect(
                    self.flower.leaf_right_front + self.flower.leaf_right_back,
                    gradient1_leaf1, gradient2_leaf1))
            self.effects.append(
                GoToColorsEffect(
                    self.flower.leaf_left_front + self.flower.leaf_left_back,
                    gradient1_leaf2, gradient2_leaf2))