Sha256: 56373683ab260e1294bc3e8cdd78780a343bb662ebd9dd1daa0395f6d6de3c43

Contents?: true

Size: 921 Bytes

Versions: 1

Compression:

Stored size: 921 Bytes

Contents

module Mittsu
  class OpenGLLightRenderer
    attr_accessor :lights_need_update, :cache

    LIGHT_CLASSES = [
      OpenGLAmbientLight,
      OpenGLDirectionalLight,
      OpenGLPointLight,
      OpenGLSpotLight,
      OpenGLHemisphereLight
    ]
    LIGHT_TYPES = LIGHT_CLASSES.map { |klass| klass::TYPE }

    def initialize(renderer)
      @renderer = renderer
      @lights_need_update = true
      @cache = {}
      LIGHT_CLASSES.each { |klass|
        @cache[klass::TYPE] = klass::Cache.new
      }
    end

    def setup(lights)
      @cache.values.each(&:reset)

      lights.each do |light|
        next if light.only_shadow
        light.implementation(self).setup
      end

      LIGHT_CLASSES.each do |klass|
        cache = @cache[klass::TYPE]
        klass.null_remaining_lights(cache)
      end

      @lights_need_update = false
    end

    def reset
      @lights_need_update = true
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mittsu-0.1.2 lib/mittsu/renderers/opengl/opengl_light_renderer.rb