123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import { Path } from './Path.js';
- import { 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 };
|