Module: OpenUSD::Format::Usda::PropertyMerger

Defined in:
lib/openusd/format/usda/property_merger.rb

Overview

Combines fields from repeated USDA declarations into one property spec.

Class Method Summary collapse

Class Method Details

.merge(prim, property) ⇒ AttributeSpec, RelationshipSpec

Merge a parsed property into its owning prim.



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/openusd/format/usda/property_merger.rb', line 12

def merge(prim, property)
  existing = prim.property_named(property.name)
  return prim.add_property(property) unless existing

  unless existing.instance_of?(property.class)
    raise OpenUSD::TypeError, "property #{property.name} is declared with conflicting kinds"
  end

  existing.is_a?(AttributeSpec) ? merge_attribute(existing, property) : merge_relationship(existing, property)
  existing
end