class Assimp::AnimMesh

Public Instance Methods

colors() click to toggle source
# File lib/assimp/mesh.rb, line 103
def colors
  cs = self[:colors].to_a
  cs.collect { |c_ptr|
    if c_ptr.null?
      nil
    else
      s = Color4D.size
      num_vertices.times.collect { |i|
        Color4D::new(c_ptr+i*s)
      }
    end
  }
end
set_colors(index, colors) click to toggle source
# File lib/assimp/mesh.rb, line 117
def set_colors(index, colors)
  @colors = [nil]*MAX_NUMBER_OF_COLOR_SETS unless @colors
  raise "Invalid colors index #{index}!" if index < 0 || index >= MAX_NUMBER_OF_COLOR_SETS
  unless colors && colors.length > 0
    @colors[index] = nil
    return self
  end
  raise "Invalid colors count: #{colors.length}!" if num_vertices != colors.length
  ptr = FFI::MemoryPointer::new(Assimp::Color4D, num_vertices)
  s = Assimp::Color4D.size
  colors.each_with_index { |v, i|
    ptr.put_array_of_uint8(i*s, v.pointer.read_array_of_uint8(s))
  }
  @colors[index] = ptr
  self
end
set_texture_coords(index, uvs) click to toggle source
# File lib/assimp/mesh.rb, line 148
def set_texture_coords(index, uvs)
  @texture_coords = [nil]*MAX_NUMBER_OF_TEXTURECOORDS unless @texture_coords
  raise "Invalid texture_coords index #{index}!" if index < 0 || index >= MAX_NUMBER_OF_TEXTURECOORDS
  unless uvs && uvs.length > 0
    @texture_coords[index] = nil
    return self
  end
  raise "Invalid texture_coords count: #{uvs.length}!" if num_vertices != uvs.length
  ptr = FFI::MemoryPointer::new(Assimp::Vector3D, num_vertices)
  s = Assimp::Vector3D.size
  uvs.each_with_index { |v, i|
    ptr.put_array_of_uint8(i*s, v.pointer.read_array_of_uint8(s))
  }
  @texture_coords[index] = ptr
  self
end
texture_coords() click to toggle source
# File lib/assimp/mesh.rb, line 134
def texture_coords
  tcs = self[:texture_coords].to_a
  tcs.collect { |tc_ptr|
    if tc_ptr.null?
      nil
    else
      s = Vector3D.size
      num_vertices.times.collect { |i|
        Vector3D::new(tc_ptr+i*s)
      }
    end
  }
end