File: //var/www/aspa/three/extras/core/Shape.js
import { Path } from './Path.js';
import * as MathUtils from '../../math/MathUtils.js';
class Shape extends Path {
	constructor( points ) {
		super( points );
		this.uuid = MathUtils.generateUUID();
		this.type = 'Shape';
		this.holes = [];
	}
	getPointsHoles( divisions ) {
		const holesPts = [];
		for ( let i = 0, l = this.holes.length; i < l; i ++ ) {
			holesPts[ i ] = this.holes[ i ].getPoints( divisions );
		}
		return holesPts;
	}
	// get points of shape and holes (keypoints based on segments parameter)
	extractPoints( divisions ) {
		return {
			shape: this.getPoints( divisions ),
			holes: this.getPointsHoles( divisions )
		};
	}
	copy( source ) {
		super.copy( source );
		this.holes = [];
		for ( let i = 0, l = source.holes.length; i < l; i ++ ) {
			const hole = source.holes[ i ];
			this.holes.push( hole.clone() );
		}
		return this;
	}
	toJSON() {
		const data = super.toJSON();
		data.uuid = this.uuid;
		data.holes = [];
		for ( let i = 0, l = this.holes.length; i < l; i ++ ) {
			const hole = this.holes[ i ];
			data.holes.push( hole.toJSON() );
		}
		return data;
	}
	fromJSON( json ) {
		super.fromJSON( json );
		this.uuid = json.uuid;
		this.holes = [];
		for ( let i = 0, l = json.holes.length; i < l; i ++ ) {
			const hole = json.holes[ i ];
			this.holes.push( new Path().fromJSON( hole ) );
		}
		return this;
	}
}
export { Shape };