Class: Vizcore::DSL::TransitionController
- Inherits:
-
Object
- Object
- Vizcore::DSL::TransitionController
- 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
-
#initialize(scenes:, transitions:) ⇒ TransitionController
constructor
A new instance of TransitionController.
-
#next_transition(scene_name:, audio:, frame_count: 0) ⇒ Hash?
Transition payload when condition matches.
- #update(scenes:, transitions:) ⇒ void
Constructor Details
#initialize(scenes:, transitions:) ⇒ TransitionController
Returns a new instance of TransitionController.
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.
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.
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 |