Class: Vizcore::DSL::TransitionController

Inherits:
Object
  • Object
show all
Defined in:
lib/vizcore/dsl/transition_controller.rb

Overview

Evaluates transition rules and returns scene-change payloads.

Defined Under Namespace

Classes: TriggerContext

Constant Summary collapse

DEFAULT_FRAME_RATE =
60.0

Instance Method Summary collapse

Constructor Details

#initialize(scenes:, transitions:) ⇒ TransitionController

Returns a new instance of TransitionController.

Parameters:

  • scenes (Array<Hash>)
  • transitions (Array<Hash>)


11
12
13
# File 'lib/vizcore/dsl/transition_controller.rb', line 11

def initialize(scenes:, transitions:)
  update(scenes: scenes, transitions: transitions)
end

Instance Method Details

#next_transition(scene_name:, audio:, frame_count: 0) ⇒ Hash?

Returns transition payload when condition matches.

Parameters:

  • scene_name (String, Symbol)
  • audio (Hash)
  • frame_count (Integer) (defaults to: 0)

Returns:

  • (Hash, nil)

    transition payload when condition matches



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/vizcore/dsl/transition_controller.rb', line 27

def next_transition(scene_name:, audio:, frame_count: 0)
  current = scene_name.to_sym
  transition = @transitions.find do |entry|
    entry[:from] == current && trigger_match?(entry[:trigger], audio, frame_count)
  end
  return nil unless transition

  target_scene = @scenes_by_name[transition[:to]]
  return nil unless target_scene

  {
    from: transition[:from],
    to: transition[:to],
    effect: transition[:effect],
    scene: deep_dup(target_scene)
  }
end

#update(scenes:, transitions:) ⇒ void

This method returns an undefined value.

Parameters:

  • scenes (Array<Hash>)
  • transitions (Array<Hash>)


18
19
20
21
# File 'lib/vizcore/dsl/transition_controller.rb', line 18

def update(scenes:, transitions:)
  @scenes_by_name = normalize_scenes(scenes)
  @transitions = normalize_transitions(transitions)
end