poly-extrude 0.4.0 → 0.5.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.4.0
2
+ * poly-extrude v0.5.0
3
3
  */
4
4
  (function (global, factory) {
5
5
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
@@ -1091,9 +1091,66 @@
1091
1091
  result.lines = lines;
1092
1092
  return result;
1093
1093
  }
1094
+ function extrudeSlopes(lines, options) {
1095
+ options = Object.assign({}, {
1096
+ depth: 2,
1097
+ lineWidth: 1,
1098
+ side: 'left',
1099
+ sideDepth: 0
1100
+ }, options);
1101
+ var _options = options,
1102
+ depth = _options.depth,
1103
+ side = _options.side,
1104
+ sideDepth = _options.sideDepth;
1105
+ var results = lines.map(function (line) {
1106
+ var tempResult = expandLine(line, options);
1107
+ tempResult.line = line;
1108
+ var leftPoints = tempResult.leftPoints,
1109
+ rightPoints = tempResult.rightPoints;
1110
+ var result = {
1111
+ line: line
1112
+ };
1113
+ var depths;
1114
+
1115
+ for (var i = 0, len = line.length; i < len; i++) {
1116
+ line[i][2] = line[i][2] || 0;
1117
+ }
1118
+
1119
+ if (side === 'left') {
1120
+ result.leftPoints = leftPoints;
1121
+ result.rightPoints = line;
1122
+ depths = [sideDepth, depth];
1123
+ } else {
1124
+ result.leftPoints = line;
1125
+ result.rightPoints = rightPoints;
1126
+ depths = [depth, sideDepth];
1127
+ }
1128
+
1129
+ result.depths = depths;
1130
+ generateTopAndBottom(result, options);
1131
+ generateSides(result, options);
1132
+ result.position = new Float32Array(result.points);
1133
+ result.indices = new Uint32Array(result.index);
1134
+ result.uv = new Float32Array(result.uvs);
1135
+ result.normal = generateNormal(result.indices, result.position);
1136
+ return result;
1137
+ });
1138
+ var result = merge(results);
1139
+ result.lines = lines;
1140
+ return result;
1141
+ }
1094
1142
 
1095
1143
  function generateTopAndBottom(result, options) {
1096
1144
  var z = options.depth;
1145
+ var depths = result.depths;
1146
+ var lz = z,
1147
+ rz = z;
1148
+
1149
+ if (depths) {
1150
+ lz = depths[0];
1151
+ rz = depths[1];
1152
+ }
1153
+
1097
1154
  var points = [],
1098
1155
  index = [],
1099
1156
  uvs = [];
@@ -1111,7 +1168,7 @@
1111
1168
  z1 = _leftPoints$i[2];
1112
1169
  points[idx0] = x1;
1113
1170
  points[idx0 + 1] = y1;
1114
- points[idx0 + 2] = z + z1; // top right
1171
+ points[idx0 + 2] = lz + z1; // top right
1115
1172
 
1116
1173
  var _rightPoints$i = rightPoints[i],
1117
1174
  x2 = _rightPoints$i[0],
@@ -1120,7 +1177,7 @@
1120
1177
  var idx1 = len * 3 + idx0;
1121
1178
  points[idx1] = x2;
1122
1179
  points[idx1 + 1] = y2;
1123
- points[idx1 + 2] = z + z2; // bottom left
1180
+ points[idx1 + 2] = rz + z2; // bottom left
1124
1181
 
1125
1182
  var idx2 = len * 2 * 3 + idx0;
1126
1183
  points[idx2] = x1;
@@ -1171,6 +1228,17 @@
1171
1228
  result.index = index;
1172
1229
  result.points = points;
1173
1230
  result.uvs = uvs;
1231
+
1232
+ if (depths) {
1233
+ len = leftPoints.length;
1234
+ i = 0;
1235
+
1236
+ while (i < len) {
1237
+ leftPoints[i].depth = lz;
1238
+ rightPoints[i].depth = rz;
1239
+ i++;
1240
+ }
1241
+ }
1174
1242
  }
1175
1243
 
1176
1244
  function generateSides(result, options) {
@@ -1181,10 +1249,11 @@
1181
1249
  uvs = result.uvs;
1182
1250
  var z = options.depth;
1183
1251
  var rings = [leftPoints, rightPoints];
1252
+ var depthsEnable = result.depths;
1184
1253
 
1185
1254
  function addOneSideIndex(v1, v2) {
1186
1255
  var idx = points.length / 3;
1187
- points.push(v1[0], v1[1], z + v1[2], v2[0], v2[1], z + v2[2], v1[0], v1[1], v1[2], v2[0], v2[1], v2[2]);
1256
+ points.push(v1[0], v1[1], (depthsEnable ? v1.depth : z) + v1[2], v2[0], v2[1], (depthsEnable ? v2.depth : z) + v2[2], v1[0], v1[1], v1[2], v2[0], v2[1], v2[2]);
1188
1257
  var a = idx + 2,
1189
1258
  b = idx + 3,
1190
1259
  c = idx,
@@ -1348,7 +1417,6 @@
1348
1417
  * @returns
1349
1418
  */
1350
1419
 
1351
-
1352
1420
  function translateLine(p1, p2, distance) {
1353
1421
  var dy = p2[1] - p1[1],
1354
1422
  dx = p2[0] - p1[0];
@@ -3507,6 +3575,8 @@
3507
3575
  exports.expandPaths = expandPaths;
3508
3576
  exports.extrudePolygons = extrudePolygons;
3509
3577
  exports.extrudePolylines = extrudePolylines;
3578
+ exports.extrudeSlopes = extrudeSlopes;
3579
+ exports.leftOnLine = leftOnLine;
3510
3580
 
3511
3581
  Object.defineProperty(exports, '__esModule', { value: true });
3512
3582