File: //var/www/aspa/three/addons/renderers/common/Attributes.js
import DataMap from './DataMap.js';
import { AttributeType } from './Constants.js';
import { DynamicDrawUsage } from 'three';
class Attributes extends DataMap {
	constructor( backend ) {
		super();
		this.backend = backend;
	}
	delete( attribute ) {
		const attributeData = super.delete( attribute );
		if ( attributeData !== undefined ) {
			this.backend.destroyAttribute( attribute );
		}
	}
	update( attribute, type ) {
		const data = this.get( attribute );
		if ( data.version === undefined ) {
			if ( type === AttributeType.VERTEX ) {
				this.backend.createAttribute( attribute );
			} else if ( type === AttributeType.INDEX ) {
				this.backend.createIndexAttribute( attribute );
			} else if ( type === AttributeType.STORAGE ) {
				this.backend.createStorageAttribute( attribute );
			}
			data.version = this._getBufferAttribute( attribute ).version;
		} else {
			const bufferAttribute = this._getBufferAttribute( attribute );
			if ( data.version < bufferAttribute.version || bufferAttribute.usage === DynamicDrawUsage ) {
				this.backend.updateAttribute( attribute );
				data.version = bufferAttribute.version;
			}
		}
	}
	_getBufferAttribute( attribute ) {
		if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
		return attribute;
	}
}
export default Attributes;