std::shared_ptr AddAttributeToPrimitive()

in src/gltf/GltfModel.hpp [102:123]


  std::shared_ptr<AccessorData> AddAttributeToPrimitive(
      BufferData& buffer,
      const RawModel& surfaceModel,
      PrimitiveData& primitive,
      const AttributeDefinition<T>& attrDef) {
    // copy attribute data into vector
    std::vector<T> attribArr;
    surfaceModel.GetAttributeArray<T>(attribArr, attrDef.rawAttributeIx);

    std::shared_ptr<AccessorData> accessor;
    if (attrDef.dracoComponentType != draco::DT_INVALID && primitive.dracoMesh != nullptr) {
      primitive.AddDracoAttrib(attrDef, attribArr);

      accessor = accessors.hold(new AccessorData(attrDef.glType));
      accessor->count = to_uint32(attribArr.size());
    } else {
      auto bufferView = GetAlignedBufferView(buffer, BufferViewData::GL_ARRAY_BUFFER);
      accessor = AddAccessorWithView(*bufferView, attrDef.glType, attribArr, std::string(""));
    }
    primitive.AddAttrib(attrDef.gltfName, *accessor);
    return accessor;
  };