Class: Vizcore::DSL::MappingTransformBuilder

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

Overview

Collects block-style mapping transform options.

Constant Summary collapse

TRIGGER_MODES =
%i[continuous trigger].freeze

Instance Method Summary collapse

Constructor Details

#initialize(initial = {}) ⇒ MappingTransformBuilder

Returns a new instance of MappingTransformBuilder.

Parameters:

  • initial (Hash) (defaults to: {})


10
11
12
13
14
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 10

def initialize(initial = {})
  @values = initial.each_with_object({}) do |(key, value), output|
    output[key.to_sym] = value
  end
end

Instance Method Details

#as(mode) ⇒ Symbol

Parameters:

  • mode (Symbol, String)

Returns:

  • (Symbol)


105
106
107
108
109
110
111
112
113
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 105

def as(mode)
  normalized = mode.to_sym
  unless TRIGGER_MODES.include?(normalized)
    raise ArgumentError, "mapping as must be :continuous or :trigger"
  end

  @values[:as] = normalized
  normalized
end

#cooldown(seconds) ⇒ Numeric

Parameters:

  • seconds (Numeric)

Returns:

  • (Numeric)


84
85
86
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 84

def cooldown(seconds)
  @values[:cooldown] = seconds
end

#curve(value) ⇒ Symbol, String

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, String)


48
49
50
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 48

def curve(value)
  @values[:curve] = value
end

#deadzone(value) ⇒ Numeric

Parameters:

  • value (Numeric)

Returns:

  • (Numeric)


54
55
56
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 54

def deadzone(value)
  @values[:deadzone] = value
end

#decay(value) ⇒ Numeric

Parameters:

  • value (Numeric)

    per-frame decay multiplier

Returns:

  • (Numeric)


78
79
80
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 78

def decay(value)
  @values[:decay] = value
end

#evaluate(&block) ⇒ Vizcore::DSL::MappingTransformBuilder



17
18
19
20
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 17

def evaluate(&block)
  instance_eval(&block) if block
  self
end

#gain(value) ⇒ Numeric

Parameters:

  • value (Numeric)

Returns:

  • (Numeric)


24
25
26
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 24

def gain(value)
  @values[:gain] = value
end

#hold(value) ⇒ Numeric

Parameters:

  • value (Numeric)

    hold duration in seconds at the runtime frame cadence

Returns:

  • (Numeric)


72
73
74
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 72

def hold(value)
  @values[:hold] = value
end

#hysteresis(value) ⇒ Numeric

Parameters:

  • value (Numeric)

Returns:

  • (Numeric)


66
67
68
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 66

def hysteresis(value)
  @values[:hysteresis] = value
end

#max(value) ⇒ Numeric

Parameters:

  • value (Numeric)

Returns:

  • (Numeric)


42
43
44
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 42

def max(value)
  @values[:max] = value
end

#min(value) ⇒ Numeric

Parameters:

  • value (Numeric)

Returns:

  • (Numeric)


36
37
38
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 36

def min(value)
  @values[:min] = value
end

#one_shot(enabled = true) ⇒ Boolean

Parameters:

  • enabled (Boolean, nil) (defaults to: true)

Returns:

  • (Boolean)


90
91
92
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 90

def one_shot(enabled = true)
  @values[:one_shot] = !!enabled
end

#range(value) ⇒ Range, Array

Parameters:

  • value (Range, Array)

Returns:

  • (Range, Array)


30
31
32
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 30

def range(value)
  @values[:range] = value
end

#smooth(attack: nil, release: nil) ⇒ Hash

Parameters:

  • attack (Numeric, nil) (defaults to: nil)
  • release (Numeric, nil) (defaults to: nil)

Returns:

  • (Hash)


97
98
99
100
101
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 97

def smooth(attack: nil, release: nil)
  @values[:attack] = attack unless attack.nil?
  @values[:release] = release unless release.nil?
  @values
end

#threshold(value) ⇒ Numeric

Parameters:

  • value (Numeric)

Returns:

  • (Numeric)


60
61
62
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 60

def threshold(value)
  @values[:threshold] = value
end

#to_hHash

Returns:

  • (Hash)


116
117
118
# File 'lib/vizcore/dsl/mapping_transform_builder.rb', line 116

def to_h
  @values.dup
end