Sha256: 48e325bd5c9b768e9cdd7f8d8524921274d448bf32df3e7bbbd5540e608352d6

Contents?: true

Size: 785 Bytes

Versions: 2

Compression:

Stored size: 785 Bytes

Contents

module Floorplanner
  class AreaBuilder < Geom::TriangleMesh

    attr_reader :ceiling_z

    def initialize(&block)
      super()
      @meshes = {}
      block.call(self)
    end

    def each(&block)
      @meshes.each_value{|a| block.call(a)}
    end

    def vertex(p)
      if existing = @vertices.index(p)
        @vertices[existing]
      else
        @vertices << p; p
      end
    end

    def area(vertices, params=nil)
      a_id = vertices.hash.abs.to_s + "_" + params[:type].to_s
      params[:color] = Floorplanner.read_color params[:color]
      @meshes[a_id] = Geom::Polygon.new(vertices, nil, params.merge({:id => a_id}))
    end

    def update(ceiling_z)
      @ceiling_z = ceiling_z
      @meshes.each do |id,mesh|
        mesh.update
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fml-0.2.5 lib/floorplanner/area_builder.rb
fml-0.2.4 lib/floorplanner/area_builder.rb