Sha256: 896ae35411b2fded6c2a49c38a830d2aeeb19d53ebfb9eab2e8a5a1b822023b8

Contents?: true

Size: 1.52 KB

Versions: 10

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

# TODO: params shouldn't be merge but they must respect the order
# TODO: Add default value for each methods below
# TODO: Factorise codes below
# TODO we must clarified/unified the usage of presets and sanitizer it is not clear

# additional Atome methods
class Atome
  def atome_common(atome_preset, params)

    basic_params = { renderers: [] }
    # TODO : remove Essentials.default_params[atome_preset] || {} as it is
    # applied twice because preset is now a particle
    preset_params = Essentials.default_params[atome_preset] || {}
    basic_params[:type] = preset_params[:type] || :element
    basic_params[:id] = params[:id] || identity_generator
    basic_params[:renderers] = @renderers || preset_params[:renderers]
    essential_params = basic_params.merge(preset_params)
    reordered_params = essential_params.reject { |key, _| params.has_key?(key) }
    params = reordered_params.merge(params)
    params[:id] = params[:id].to_sym
    # condition to handle color/shadow/paint atomes that shouldn't be attach to view
    if Universe.applicable_atomes.include?(atome_preset)
      unless params[:affect]
        params[:affect] = if @id == :view
                            [:black_matter]
                          else
                            [@id]
                          end
      end
    else
      params[:attach] = params[:attach] || @id || :view
    end
    # we reorder the hash
    reorder_particles(params)
  end

  def preset_common(params, &bloc)
    Atome.new(params, &bloc)
  end

end



Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
atome-0.5.7.6.0 lib/atome/presets/atome.rb
atome-0.5.7.5.9 lib/atome/presets/atome.rb
atome-0.5.7.5.4 lib/atome/presets/atome.rb
atome-0.5.7.5.3 lib/atome/presets/atome.rb
atome-0.5.7.5.1 lib/atome/presets/atome.rb
atome-0.5.7.4.8 lib/atome/presets/atome.rb
atome-0.5.7.4.7 lib/atome/presets/atome.rb
atome-0.5.7.4.6 lib/atome/presets/atome.rb
atome-0.5.7.4.3 lib/atome/presets/atome.rb
atome-0.5.7.4.2 lib/atome/presets/atome.rb