Sha256: f000bd8678ccca70474b146e5cd56a9fc4f5b3235b452858a27bd23f766c68db

Contents?: true

Size: 936 Bytes

Versions: 3

Compression:

Stored size: 936 Bytes

Contents

# frozen_string_literal: true

module Rendering
  module RenderPipeline
    def self.draw
      Engine::GameObject.mesh_renderers.each do |mesh_renderer|
        mesh_renderer.update(0)
      end

      instance_renderers.values.each do |renderer|
        renderer.draw_all
      end
    end

    def self.add_instance(mesh_renderer)
      instance_renderers[[mesh_renderer.mesh, mesh_renderer.material]].add_instance(mesh_renderer)
    end

    def self.remove_instance(mesh_renderer)
      instance_renderers[[mesh_renderer.mesh, mesh_renderer.material]].remove_instance(mesh_renderer)
    end

    def self.update_instance(mesh_renderer)
      instance_renderers[[mesh_renderer.mesh, mesh_renderer.material]].update_instance(mesh_renderer)
    end

    private

    def self.instance_renderers
      @instance_renderers ||= Hash.new do |hash, key|
        hash[key] = InstanceRenderer.new(key[0], key[1])
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruby_rpg-0.0.4 lib/engine/rendering/render_pipeline.rb
ruby_rpg-0.0.3 lib/engine/rendering/render_pipeline.rb
ruby_rpg-0.0.2 lib/engine/rendering/render_pipeline.rb