poly-extrude 0.10.0 → 0.12.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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * poly-extrude v0.10.0
2
+ * poly-extrude v0.12.0
3
3
  */
4
4
  (function (global, factory) {
5
5
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
@@ -1218,8 +1218,9 @@
1218
1218
  _proto._onChange = function _onChange(callback) {
1219
1219
  this._onChangeCallback = callback;
1220
1220
  return this;
1221
- } // _onChangeCallback() { }
1222
- // * [Symbol.iterator]() {
1221
+ };
1222
+
1223
+ _proto._onChangeCallback = function _onChangeCallback() {} // * [Symbol.iterator]() {
1223
1224
  // yield this._x;
1224
1225
  // yield this._y;
1225
1226
  // yield this._z;
@@ -1992,6 +1993,35 @@
1992
1993
 
1993
1994
  return points;
1994
1995
  }
1996
+ function calLineDistance(line) {
1997
+ var distance = 0;
1998
+
1999
+ for (var i = 0, len = line.length; i < len; i++) {
2000
+ var p1 = line[i],
2001
+ p2 = line[i + 1];
2002
+
2003
+ if (i === 0) {
2004
+ p1.distance = 0;
2005
+ }
2006
+
2007
+ if (p1 && p2) {
2008
+ var x1 = p1[0],
2009
+ y1 = p1[1],
2010
+ z1 = p1[2];
2011
+ var x2 = p2[0],
2012
+ y2 = p2[1],
2013
+ z2 = p2[2];
2014
+ var dx = x1 - x2,
2015
+ dy = y1 - y2,
2016
+ dz = (z1 || 0) - (z2 || 0);
2017
+ var dis = Math.sqrt(dx * dx + dy * dy + dz * dz);
2018
+ distance += dis;
2019
+ p2.distance = distance;
2020
+ }
2021
+ }
2022
+
2023
+ return distance;
2024
+ }
1995
2025
 
1996
2026
  function extrudePolygons(polygons, options) {
1997
2027
  options = Object.assign({}, {
@@ -2215,7 +2245,8 @@
2215
2245
  options = Object.assign({}, {
2216
2246
  depth: 2,
2217
2247
  lineWidth: 1,
2218
- bottomStickGround: false
2248
+ bottomStickGround: false,
2249
+ pathUV: false
2219
2250
  }, options);
2220
2251
  checkOptions(options);
2221
2252
  var results = lines.map(function (line) {
@@ -2239,7 +2270,9 @@
2239
2270
  lineWidth: 1,
2240
2271
  side: 'left',
2241
2272
  sideDepth: 0,
2242
- bottomStickGround: false
2273
+ bottomStickGround: false,
2274
+ pathUV: false,
2275
+ isSlope: true
2243
2276
  }, options);
2244
2277
  checkOptions(options);
2245
2278
  var _options = options,
@@ -2296,13 +2329,24 @@
2296
2329
  rz = depths[1];
2297
2330
  }
2298
2331
 
2299
- var points = [],
2300
- indices = [],
2301
- uv = [];
2302
2332
  var leftPoints = result.leftPoints,
2303
2333
  rightPoints = result.rightPoints;
2334
+ var line = result.line;
2335
+ var pathUV = options.pathUV;
2336
+
2337
+ if (pathUV) {
2338
+ calLineDistance(line);
2339
+
2340
+ for (var _i = 0, _len = line.length; _i < _len; _i++) {
2341
+ leftPoints[_i].distance = rightPoints[_i].distance = line[_i].distance;
2342
+ }
2343
+ }
2344
+
2304
2345
  var i = 0,
2305
2346
  len = leftPoints.length;
2347
+ var points = [],
2348
+ indices = [],
2349
+ uv = [];
2306
2350
 
2307
2351
  while (i < len) {
2308
2352
  // top left
@@ -2341,22 +2385,42 @@
2341
2385
 
2342
2386
  if (bottomStickGround) {
2343
2387
  points[idx3 + 2] = 0;
2388
+ } // generate path uv
2389
+
2390
+
2391
+ if (pathUV) {
2392
+ var p = line[i];
2393
+ var uvx = p.distance;
2394
+ var uIndex0 = i * 2;
2395
+ uv[uIndex0] = uvx;
2396
+ uv[uIndex0 + 1] = 1;
2397
+ var uIndex1 = len * 2 + uIndex0;
2398
+ uv[uIndex1] = uvx;
2399
+ uv[uIndex1 + 1] = 0;
2400
+ var uIndex2 = len * 2 * 2 + uIndex0;
2401
+ uv[uIndex2] = uvx;
2402
+ uv[uIndex2 + 1] = 1;
2403
+ var uIndex3 = len * 2 * 2 + len * 2 + uIndex0;
2404
+ uv[uIndex3] = uvx;
2405
+ uv[uIndex3 + 1] = 0;
2344
2406
  }
2345
2407
 
2346
2408
  i++;
2347
2409
  }
2348
2410
 
2349
- i = 0;
2350
- len = points.length;
2351
- var uIndex = uv.length - 1;
2411
+ if (!pathUV) {
2412
+ i = 0;
2413
+ len = points.length;
2414
+ var uIndex = uv.length - 1;
2352
2415
 
2353
- while (i < len) {
2354
- var x = points[i],
2355
- y = points[i + 1];
2356
- uv[++uIndex] = x;
2357
- uv[++uIndex] = y; // uvs.push(x, y);
2416
+ while (i < len) {
2417
+ var x = points[i],
2418
+ y = points[i + 1];
2419
+ uv[++uIndex] = x;
2420
+ uv[++uIndex] = y; // uvs.push(x, y);
2358
2421
 
2359
- i += 3;
2422
+ i += 3;
2423
+ }
2360
2424
  }
2361
2425
 
2362
2426
  i = 0;
@@ -2422,19 +2486,24 @@
2422
2486
  var bottomStickGround = options.bottomStickGround;
2423
2487
  var rings = [leftPoints, rightPoints];
2424
2488
  var depthsEnable = result.depths;
2489
+ var pathUV = options.pathUV;
2490
+ var lineWidth = options.lineWidth;
2425
2491
  var pIndex = points.length - 1;
2426
2492
  var iIndex = indices.length - 1;
2493
+ var uIndex = uv.length - 1;
2427
2494
 
2428
2495
  function addOneSideIndex(v1, v2) {
2429
2496
  var idx = points.length / 3; // let pIndex = points.length - 1;
2430
- // top
2497
+
2498
+ var v1Depth = depthsEnable ? v1.depth : z;
2499
+ var v2Depth = depthsEnable ? v2.depth : z; // top
2431
2500
 
2432
2501
  points[++pIndex] = v1[0];
2433
2502
  points[++pIndex] = v1[1];
2434
- points[++pIndex] = (depthsEnable ? v1.depth : z) + v1[2];
2503
+ points[++pIndex] = v1Depth + v1[2];
2435
2504
  points[++pIndex] = v2[0];
2436
2505
  points[++pIndex] = v2[1];
2437
- points[++pIndex] = (depthsEnable ? v2.depth : z) + v2[2]; // points.push(v1[0], v1[1], (depthsEnable ? v1.depth : z) + v1[2], v2[0], v2[1], (depthsEnable ? v2.depth : z) + v2[2]);
2506
+ points[++pIndex] = v2Depth + v2[2]; // points.push(v1[0], v1[1], (depthsEnable ? v1.depth : z) + v1[2], v2[0], v2[1], (depthsEnable ? v2.depth : z) + v2[2]);
2438
2507
  // bottom
2439
2508
 
2440
2509
  points[++pIndex] = v1[0];
@@ -2455,10 +2524,21 @@
2455
2524
  indices[++iIndex] = d;
2456
2525
  indices[++iIndex] = b; // index.push(a, c, b, c, d, b);
2457
2526
 
2458
- generateSideWallUV(uv, points, a, b, c, d);
2527
+ if (!pathUV) {
2528
+ generateSideWallUV(uv, points, a, b, c, d);
2529
+ } else {
2530
+ uv[++uIndex] = v1.distance;
2531
+ uv[++uIndex] = v1Depth / lineWidth;
2532
+ uv[++uIndex] = v2.distance;
2533
+ uv[++uIndex] = v2Depth / lineWidth;
2534
+ uv[++uIndex] = v1.distance;
2535
+ uv[++uIndex] = 0;
2536
+ uv[++uIndex] = v2.distance;
2537
+ uv[++uIndex] = 0;
2538
+ }
2459
2539
  }
2460
2540
 
2461
- for (var i = 0, _len = rings.length; i < _len; i++) {
2541
+ for (var i = 0, _len2 = rings.length; i < _len2; i++) {
2462
2542
  var ring = rings[i];
2463
2543
 
2464
2544
  if (i > 0) {
@@ -2482,9 +2562,9 @@
2482
2562
  var len = leftPoints.length;
2483
2563
  var vs = [rightPoints[0], leftPoints[0], leftPoints[len - 1], rightPoints[len - 1]];
2484
2564
 
2485
- for (var _i = 0; _i < vs.length; _i += 2) {
2486
- var _v = vs[_i],
2487
- _v2 = vs[_i + 1];
2565
+ for (var _i2 = 0; _i2 < vs.length; _i2 += 2) {
2566
+ var _v = vs[_i2],
2567
+ _v2 = vs[_i2 + 1];
2488
2568
  addOneSideIndex(_v, _v2);
2489
2569
  }
2490
2570
  }
@@ -2500,6 +2580,11 @@
2500
2580
  function expandLine(line, options) {
2501
2581
  // let preAngle = 0;
2502
2582
  var radius = options.lineWidth / 2;
2583
+
2584
+ if (options.isSlope) {
2585
+ radius *= 2;
2586
+ }
2587
+
2503
2588
  var points = [],
2504
2589
  leftPoints = [],
2505
2590
  rightPoints = [];
@@ -2581,7 +2666,8 @@
2581
2666
  return {
2582
2667
  offsetPoints: points,
2583
2668
  leftPoints: leftPoints,
2584
- rightPoints: rightPoints
2669
+ rightPoints: rightPoints,
2670
+ line: line
2585
2671
  };
2586
2672
  } // eslint-disable-next-line no-unused-vars
2587
2673
 
@@ -4585,4 +4671,3 @@
4585
4671
  Object.defineProperty(exports, '__esModule', { value: true });
4586
4672
 
4587
4673
  }));
4588
- //# sourceMappingURL=poly-extrude.js.map