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:, error_reporter: nil) ⇒ TransitionController

Returns a new instance of TransitionController.

Parameters:

  • scenes (Array<Hash>)
  • transitions (Array<Hash>)
  • error_reporter (#call, nil) (defaults to: nil)


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

def initialize(scenes:, transitions:, error_reporter: nil)
  @error_reporter = error_reporter || ->(_message) {}
  update(scenes: scenes, transitions: transitions)
end

Instance Method Details

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

Returns transition payload when condition matches.

Parameters:

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

Returns:

  • (Hash, nil)

    transition payload when condition matches



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

def next_transition(scene_name:, audio:, frame_count: 0, elapsed_seconds: nil)
  current = scene_name.to_sym
  transition = @transitions.find do |entry|
    entry[:from] == current && trigger_match?(entry, audio, frame_count, elapsed_seconds)
  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>)


20
21
22
23
# File 'lib/vizcore/dsl/transition_controller.rb', line 20

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