poly-extrude 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/polygon.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { PolygonType, ResultType } from './type';
2
2
  type PolygonsOptions = {
3
3
  depth?: number;
4
+ top?: boolean;
4
5
  };
5
6
  type PolygonsResult = ResultType & {
6
7
  polygons: Array<PolygonType>;
package/dist/polygon.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import earcut from 'earcut';
2
2
  import { generateNormal, generateSideWallUV, isClockwise, merge } from './util';
3
3
  export function extrudePolygons(polygons, options) {
4
- options = Object.assign({}, { depth: 2 }, options);
4
+ options = Object.assign({}, { depth: 2, top: true }, options);
5
5
  const results = polygons.map(polygon => {
6
6
  for (let i = 0, len = polygon.length; i < len; i++) {
7
7
  const ring = polygon[i];
@@ -21,7 +21,7 @@ export function extrudePolygons(polygons, options) {
21
21
  const result = flatVertices(polygon, options);
22
22
  result.polygon = polygon;
23
23
  const triangles = earcut(result.flatVertices, result.holes, 2);
24
- generateTopAndBottom(result, triangles);
24
+ generateTopAndBottom(result, triangles, options);
25
25
  generateSides(result, options);
26
26
  result.position = new Float32Array(result.points);
27
27
  result.indices = new Uint32Array(result.indices);
@@ -33,18 +33,24 @@ export function extrudePolygons(polygons, options) {
33
33
  result.polygons = polygons;
34
34
  return result;
35
35
  }
36
- function generateTopAndBottom(result, triangles) {
36
+ function generateTopAndBottom(result, triangles, options) {
37
37
  const indices = [];
38
38
  const { count } = result;
39
+ const top = options.top;
39
40
  for (let i = 0, len = triangles.length; i < len; i += 3) {
40
41
  // top
41
42
  const a = triangles[i], b = triangles[i + 1], c = triangles[i + 2];
42
- indices[i] = a;
43
- indices[i + 1] = b;
44
- indices[i + 2] = c;
43
+ if (top) {
44
+ indices[i] = a;
45
+ indices[i + 1] = b;
46
+ indices[i + 2] = c;
47
+ }
45
48
  // bottom
46
- const idx = len + i;
49
+ let idx = len + i;
47
50
  const a1 = count + a, b1 = count + b, c1 = count + c;
51
+ if (!top) {
52
+ idx = i;
53
+ }
48
54
  indices[idx] = a1;
49
55
  indices[idx + 1] = b1;
50
56
  indices[idx + 2] = c1;
@@ -1 +1 @@
1
- {"version":3,"file":"polygon.js","sourceRoot":"","sources":["../src/polygon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polygon.js","sourceRoot":"","sources":["../src/polygon.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poly-extrude",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "extrude polyline/polygon etc",
5
5
  "main": "dist/poly-extrude.js",
6
6
  "module": "dist/poly-extrude.mjs",
@@ -43,7 +43,7 @@
43
43
  "tslib": "^2.8.1"
44
44
  },
45
45
  "dependencies": {
46
- "earcut": "^2.2.4"
46
+ "earcut": "^3.0.1"
47
47
  },
48
48
  "files": [
49
49
  "dist/",
package/readme.md CHANGED
@@ -111,6 +111,7 @@ npm i poly-extrude
111
111
 
112
112
  * `polygons`
113
113
  * `options.depth`
114
+ * `options.top` Whether to display the top
114
115
 
115
116
  ```js
116
117
  const result = extrudePolygons(polygons, {
@@ -216,7 +217,6 @@ const {
216
217
  * `options.bottomStickGround` Is the bottom attached to the ground
217
218
  * `options.pathUV` generate Path UV
218
219
 
219
-
220
220
  [extrudeSlopes pathUV demo](https://deyihu.github.io/poly-extrude/test/slope-pathuv.html)
221
221
 
222
222
  ```js
package/src/polygon.ts CHANGED
@@ -4,7 +4,8 @@ import { generateNormal, generateSideWallUV, isClockwise, merge } from './util';
4
4
  import { PolylineType, PolygonType, ResultType } from './type';
5
5
 
6
6
  type PolygonsOptions = {
7
- depth?: number
7
+ depth?: number,
8
+ top?: boolean
8
9
  }
9
10
 
10
11
  type PolygonsResult = ResultType & {
@@ -13,7 +14,7 @@ type PolygonsResult = ResultType & {
13
14
 
14
15
 
15
16
  export function extrudePolygons(polygons: Array<PolygonType>, options?: PolygonsOptions): PolygonsResult {
16
- options = Object.assign({}, { depth: 2 }, options);
17
+ options = Object.assign({}, { depth: 2, top: true }, options);
17
18
  const results = polygons.map(polygon => {
18
19
  for (let i = 0, len = polygon.length; i < len; i++) {
19
20
  const ring = polygon[i];
@@ -32,7 +33,7 @@ export function extrudePolygons(polygons: Array<PolygonType>, options?: Polygons
32
33
  const result = flatVertices(polygon, options) as Record<string, any>;
33
34
  result.polygon = polygon;
34
35
  const triangles = earcut(result.flatVertices, result.holes, 2);
35
- generateTopAndBottom(result, triangles);
36
+ generateTopAndBottom(result, triangles, options);
36
37
  generateSides(result, options);
37
38
  result.position = new Float32Array(result.points);
38
39
  result.indices = new Uint32Array(result.indices);
@@ -46,18 +47,24 @@ export function extrudePolygons(polygons: Array<PolygonType>, options?: Polygons
46
47
 
47
48
  }
48
49
 
49
- function generateTopAndBottom(result, triangles) {
50
+ function generateTopAndBottom(result, triangles, options: PolygonsOptions) {
50
51
  const indices: number[] = [];
51
52
  const { count } = result;
53
+ const top = options.top;
52
54
  for (let i = 0, len = triangles.length; i < len; i += 3) {
53
55
  // top
54
56
  const a = triangles[i], b = triangles[i + 1], c = triangles[i + 2];
55
- indices[i] = a;
56
- indices[i + 1] = b;
57
- indices[i + 2] = c;
57
+ if (top) {
58
+ indices[i] = a;
59
+ indices[i + 1] = b;
60
+ indices[i + 2] = c;
61
+ }
58
62
  // bottom
59
- const idx = len + i;
63
+ let idx = len + i;
60
64
  const a1 = count + a, b1 = count + b, c1 = count + c;
65
+ if (!top) {
66
+ idx = i;
67
+ }
61
68
  indices[idx] = a1;
62
69
  indices[idx + 1] = b1;
63
70
  indices[idx + 2] = c1;