@galacean/effects-plugin-editor-gizmo 2.0.0-alpha.12 → 2.0.0-alpha.13
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/gizmo-component.d.ts +27 -8
- package/dist/gizmo-loader.d.ts +2 -3
- package/dist/gizmo-vfx-item.d.ts +3 -27
- package/dist/index.d.ts +2 -2
- package/dist/index.js +481 -502
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +481 -501
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player editor gizmo plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 茂安,旻诺
|
|
6
|
-
* Version: v2.0.0-alpha.
|
|
6
|
+
* Version: v2.0.0-alpha.13
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -61,12 +61,6 @@ function _inherits(subClass, superClass) {
|
|
|
61
61
|
if (superClass) _set_prototype_of(subClass, superClass);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
function _instanceof1(left, right) {
|
|
65
|
-
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
66
|
-
return !!right[Symbol.hasInstance](left);
|
|
67
|
-
} else return _instanceof1(left, right);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
64
|
function _array_like_to_array(arr, len) {
|
|
71
65
|
if (len == null || len > arr.length) len = arr.length;
|
|
72
66
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
@@ -102,6 +96,18 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
102
96
|
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
103
97
|
}
|
|
104
98
|
|
|
99
|
+
function _instanceof1(left, right) {
|
|
100
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
101
|
+
return !!right[Symbol.hasInstance](left);
|
|
102
|
+
} else return _instanceof1(left, right);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function __decorate(decorators, target, key, desc) {
|
|
106
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
107
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
108
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
109
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
110
|
+
}
|
|
105
111
|
function __generator(thisArg, body) {
|
|
106
112
|
var _ = {
|
|
107
113
|
label: 0,
|
|
@@ -202,21 +208,6 @@ typeof SuppressedError === "function" ? SuppressedError : function _SuppressedEr
|
|
|
202
208
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
203
209
|
};
|
|
204
210
|
|
|
205
|
-
function _defineProperties(target, props) {
|
|
206
|
-
for(var i = 0; i < props.length; i++){
|
|
207
|
-
var descriptor = props[i];
|
|
208
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
209
|
-
descriptor.configurable = true;
|
|
210
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
211
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
215
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
216
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
217
|
-
return Constructor;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
211
|
var GizmoVFXItemType = "gizmo";
|
|
221
212
|
exports.GizmoSubType = void 0;
|
|
222
213
|
(function(GizmoSubType) {
|
|
@@ -444,75 +435,35 @@ function createGizmoShader(marcos, shader, shaderType, level) {
|
|
|
444
435
|
return effects.createShaderWithMarcos(marcos, newShader, shaderType, level);
|
|
445
436
|
}
|
|
446
437
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
isInLine = true;
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
function projectionOfPointAndLine(point, line) {
|
|
477
|
-
var AC = new Vector2$2();
|
|
478
|
-
var BC = new Vector2$2();
|
|
479
|
-
var AB = new Vector2$2();
|
|
480
|
-
var line0 = line[0].toVector2();
|
|
481
|
-
var line1 = line[1].toVector2();
|
|
482
|
-
AC.subtractVectors(point, line0);
|
|
483
|
-
BC.subtractVectors(point, line1);
|
|
484
|
-
AB.subtractVectors(line1, line0);
|
|
485
|
-
var lengthAC = AC.length();
|
|
486
|
-
var lengthBC = BC.length();
|
|
487
|
-
var lengthAB = AB.length();
|
|
488
|
-
//利用海伦公式计算三角形面积
|
|
489
|
-
//周长的一半
|
|
490
|
-
var P = (lengthAC + lengthBC + lengthAB) / 2;
|
|
491
|
-
var allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));
|
|
492
|
-
//普通公式计算三角形面积反推点到线的垂直距离
|
|
493
|
-
var distance = 2 * allArea / lengthAB;
|
|
494
|
-
var l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));
|
|
495
|
-
var l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));
|
|
496
|
-
var worldAB = line[1].clone().subtract(line[0]);
|
|
497
|
-
var worldAP = worldAB.clone().multiply(l1 / (l1 + l2));
|
|
498
|
-
var worldP = line[0].clone().add(worldAP);
|
|
499
|
-
return worldP;
|
|
500
|
-
}
|
|
501
|
-
function computeOrthographicOffCenter(left, right, bottom, top, near, far) {
|
|
502
|
-
var a = 1.0 / (right - left);
|
|
503
|
-
var b = 1.0 / (top - bottom);
|
|
504
|
-
var c = 1.0 / (far - near);
|
|
505
|
-
var tx = -(right + left) * a;
|
|
506
|
-
var ty = -(top + bottom) * b;
|
|
507
|
-
var tz = -(far + near) * c;
|
|
508
|
-
a *= 2.0;
|
|
509
|
-
b *= 2.0;
|
|
510
|
-
c *= -2.0;
|
|
511
|
-
return new Matrix4$5(a, 0.0, 0.0, 0.0, //
|
|
512
|
-
0.0, b, 0.0, 0.0, //
|
|
513
|
-
0.0, 0.0, c, 0.0, //
|
|
514
|
-
tx, ty, tz, 1.0);
|
|
515
|
-
}
|
|
438
|
+
// 坐标轴默认颜色
|
|
439
|
+
var color = {
|
|
440
|
+
xAxisColor: [
|
|
441
|
+
216 / 255,
|
|
442
|
+
178 / 255,
|
|
443
|
+
76 / 255
|
|
444
|
+
],
|
|
445
|
+
yAxisColor: [
|
|
446
|
+
38 / 255,
|
|
447
|
+
149 / 255,
|
|
448
|
+
235 / 255
|
|
449
|
+
],
|
|
450
|
+
zAxisColor: [
|
|
451
|
+
134 / 255,
|
|
452
|
+
74 / 255,
|
|
453
|
+
245 / 255
|
|
454
|
+
]
|
|
455
|
+
};
|
|
456
|
+
var renderMode = effects.glContext.TRIANGLES;
|
|
457
|
+
// 坐标轴默认图标
|
|
458
|
+
var axisIconMap = new Map();
|
|
459
|
+
axisIconMap.set("light", "data:image/png;base64,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");
|
|
460
|
+
axisIconMap.set("camera", "data:image/png;base64,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");
|
|
461
|
+
axisIconMap.set("posX", "data:image/png;base64,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\n RK5CYII=");
|
|
462
|
+
axisIconMap.set("posY", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAABgCAYAAAGRapeTAAABYWlDQ1BrQ0dDb2xvcl\n NwYWNlRGlzcGxheVAzAAAokWNgYFJJLCjIYWFgYMjNKykKcndSiIiMUmB/yMAOhLwMYgwKicnFBY4BAT5AJQwwGhV8u8bACKI\n v64LMOiU1tUm1XsDXYqbw1YuvRJsw1aMArpTU4mQg/QeIU5MLikoYGBhTgGzl8pICELsDyBYpAjoKyJ4DYqdD2BtA7CQI+whY\n TUiQM5B9A8hWSM5IBJrB+API1klCEk9HYkPtBQFul8zigpzESoUAYwKuJQOUpFaUgGjn/ILKosz0jBIFR2AopSp45iXr6SgYG\n RiaMzCAwhyi+nMgOCwZxc4gxJrvMzDY7v////9uhJjXfgaGjUCdXDsRYhoWDAyC3AwMJ3YWJBYlgoWYgZgpLY2B4dNyBgbeSA\n YG4QtAPdHFacZGYHlGHicGBtZ7//9/VmNgYJ/MwPB3wv//vxf9//93MVDzHQaGA3kAFSFl7jXH0fsAAAA4ZVhJZk1NACoAAAA\n IAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAAGKgAwAEAAAAAQAAAGAAAAAAXsftswAAE3FJREFUeAHtPQl0HMWVVd0z\n 0ugytjVCQbABDNZItjEE7wsJsGBzOJgjy+nEEBviDciWIJANu9lwLGYTEkgeJMBKskm4jMHEJtzBAQOGQEiAcNvoAGMwiy+NJ\n GMdM5qje/9vqVrV53T39IxG4HpPqqpf/6zfXVVTV1NiEupaew+S5fS7hJJrOpaGb9OjUB5Q29wl83k+3dlUpeKqCTsCRswIBQ\n TwBOL2dxiOGtNEv5JmeAqRWgqJ0nU/4bOk4q5TiFxUroEZiPoW/1lBRCwkwDwfIi3R5xWbmFi+UOjfSehAF0lXz+DBStogiWG\n UrbnQlIAQ4WZLIkasjzubKq9UiARKr9IX2uW9+wm5ouMg3G0lgTnWqhycHX0m0tzVYYagqoaFZtWOcJD+QEdj+AIljf8wWCEP\n lw7/R9WUGmPIwfY/8eVKWg8TIs3R1xlWsu409ZFBWPnqBQRhLCBjQSbyPzMAxnJZWM3SWK+aZgnK1GEAjPGBxKB/KBFmSoAFV\n kGAcK5VoRnc8rE3Q1arNaPrkZoKP1YinpNZBWA5z1DzaPDEmJ6+oueryVT6Ez3ckKck3tlYVWKAjwAMQmatkIN9qWjCisAJnL\n cC8TVCrEx3wtiAQ+mznY3hkzVCzASUPzCf0Pge04eLMbV7ABEHrVIsMRPAmGCMjGLzbiKp/Q7nwcPwk68nqX86SgPnM4dXhQO\n OhCARr3Hp45cRMfqBrYW8IMdCkKjsjz8gwuf/p9CbvZ88Yz7tqokfOOf3rgWgTxQh+keO1yKbNDS9q5A+Z49wzbRw8IU5NGUQ\n wrTO9LQxPLOYivTMjiXhx/gyjSV8AUtHWrp+I8vkCpY3izNVd0YhjGmkNfpDIslN0MftB0L/LgjiJe1LJ33Myq1iWwG1LV0xI\n pOQFTGDBwPigZsaJm9leT42FQADpPtkWf4ej+gkbVZdBgHZOBqVCFaFizfNp2rLrXn5smWOApJd0SGMWVAFQLU8zYDZxryiqg\n Co87k8Yxyy6IctfDlLW+ExIYoAlmFEGOMQJ/TK7aR81Tk8WJMOfrBeweGHQxoEyKgW6AswHzvhGkITA2ZFCiz00s1ELplkWQ5\n jyjeEZbJsKSR10LEKMesneE4M1r9gNQ/WpOFH0JHC6pbuZzRQXYb1B2UPX6KWCCODXVamFpgkcPR4oglcA4qdciMRdm9VYWVP\n XE6k8mo1b5cI2BWyslTNEUqSVQtmBubfy4ptY8v611Px1cGn9Xj6PPzeEX6tB/qZFzoaK//TT4Z6Xo6rSE/oJA+1M39YAKUrn\n RC4xYHaWasIgLHmhW6JM+FTQq9BHLU/mL1BDmx7P5rMROi0nHU+qg9wuAF19iOnDOzwGHPEUS1gBHXNXWdIhDzO8m5jnjnSGg\n QwhmZNOCszjSm9F3x5kb7MUgBDzCSICvRWmF6yHDtlFMAE2cUwZvqtLMmX2+FYlcHTdltHU9gTLePp2ojZd8uhbbFor5MxGRP\n iMh6qKQ1PfOH7NO6UzrERTgeTTgU7wsvwq53xsDVi3lNy8eYtUcc1wpjmIgbvlFh5x9KI2pZoisiymAuFvPOkUmdT2KCTwYgZ\n v+uvTiRiO7wLyj2lGCitaWso284kaYyILO8+RU5L61ihVRzcvIGEXrxJLXYzsFGJRhLl951FaDKm5OTiCtJ/wVo9imleFMXT2\n pZMfgoLVSNqV+wJk9RQlymFBZAf/sXn/JQkDz7eAtMczNPH5lxFUgcfZ45oAQ0Joep3l1bsUvtqtwYgX/SAXDpZERHa8EtS/q\n Ayc2whchQsfvqaOqWEUOTj1gCki0vxnRgrnqhriV4mybJhwQURnATx01dJ6frrVFS7x6vsocVE2LNNwZVLK0n/d+9X6bwkKBG\n uUIyAlkiClkh9tLwwQxr+8Rg4s4VIk6doWPHlg9/6BUnvf6Sm3Gtm2AibVS23jMvWXkSEvuHGLV09nQyedrMyQYgThSzYeYrh\n uIl9NwKFizs2ktKnrjToIU3Ynwyce6cBni1AebFhUtF0Mcgr8/RXZhjmfQdO/21ODIAp8A+GW6dgYJ5XhZ3SSfvWOUV1hRcUg\n /MUIzounrgFvOHbby1XWmSBDMP41MaGiZuHPQGMYHmwKAt+Y0IKv0OCKFg1AjP633wIK9TA66oxAhVWCimFObQCDaAbbwBqad\n nB1S/vPjmdlmwnAvNtpkCEb7U3VRp0sjSCKVjbGv0vWHP4JcuPRQxTele3N4Z/YSU7oxGMENZrS2G91noWmSH6GIcqwuXvLqI\n ZZTo2gtcNJ7RXt0bfgtWgmTw82zQ0me8taKw8YhmlMCflPHgywop9XWtXAxj2Y/ibaoWDcOxlIbqlo7FquR2e0zJfjYDVGFq/\n vGcuTNx/G0bFRxEZ1u4oqaZE3gUKbQPtX4Xafhx+kT0DnatvLWDWRtS1dM0CbZ6A2t/Pac0xPBC+A7xyentj1RsM5iX2bATsI\n rodttZc6kWoGQ20QM3QAnni59oImAleBm/d6M84M42ygAmU/A94xhV/x0ZMXyOXw9pnXxb6uSKlITKh49+qHMkzDDvMJMFzf0\n k+DUAd5DjZAzsJlpjpo4dl9AQsMN8Prc75esK85Sl5EHZRLbCTZ2sEGLABDJhtxyBPZX+BQd/xVrIsH6dIc/fyAjEAdT8OFmL\n usDLC1BPQ886WJLLBimis4LBidCKsGD2vl2/wBNQ+LUQDUHFYjXoOx216IwyegIm03TBk2EePWDh5ugem9zX6aYxw8hjRwW4S\n 2Pp31Sa7DSIqkk0i2Am7ayRlh5iC5YSf/rHSbIJw8hjh/CnugGEh+MlfCU5JeglC/y4Sevk3Kmn/dx9Q03YJfKygXHWA+nzVL\n +91PK/Ob3ARP3uTCIM9djIty8rWLFLLUgceo86wq0CbBD41rFg1QpLSzzJgphi3AaUO/hcVrexB931hyXM/U+kxETvxWk0+U0\n aW6HqGoxoBrZIyh8MKMsWxOVdrUEIv3KjJ22VwA28AHkMW+s9fw5KOY/jNor4KihHKBkTH5KOIvPDgRy8QYrORa5QKNtDDTmQ\n WkofMIXJoAsu6iiMt3couA8UIWSLXu6IeQUbhyUNHd19V2Gx3Y/z5RgFh8eN/wopcx+CNZUg08jjJE11zGCGIH/cfGtLiV1do\n 8ppMakizebD/e3/UFLvOjPRn6jvhmgFH0McpU7TpEULSSa50NFkBK6UsJGvx7E8Zy2YVCzNXytlzAmWSkdHVgYr7zjQoVfTmf\n ThuUOHxYy03zag4ThKRO7sqhHR8t+30ihNGiBM/5vJRVClNit75w2gelC9++341378QvOVTEFLBqYIkyTU+8SO8csVv3A01Ly\n usK1aOeiZRfwaRgyV+iQTnSjUC9A++cUTlktP+VVUQdwsUtT8J70hChQ19s0lN+5FA/QUYgWzzgxnjEf/GUmWKD/M0FSfFr/w\n vKyJ9izS79VV4VglKtwk0IPhqBCrUt/BRg16JGecQEig2wLMGgP5C2w8mfZI1Iz0DUDZx2HmjUDhRMvT1i0fzPqZwvdGXfsJM\n J3yBWUiHfWkAGTtDnDMjDJJyCFCMgBlqaA/HYYA9rKi1YoQsFuV0/3auqqcsVKwM3BQjOhsmRHMlKJd831pcoWwyU98JnFrPp\n UC/ecMr0Mp4qkZ4XRtgjPIdww6IRiZTNQIBMH3g/nci45THGJbMHuLFaYzoaKr6Dl9YqGnY08H1pOovu1F1wRsnjOYKMCXSk/\n Ragc7GAIsbL8Mo+hhjydhC4GV+Bd4Fg16mRqCqsDaRcDuNk0sTwYCk1XYmSyNQoUyHM3KptJ63fmcNX25rBCIWgiF2BqCOmtY\n JAfqADGDBfFAPz1M+lskA1COjEYgEezBgRoTeg+m8BTyg1FRV6kRexseJZ/K1u/qqBuJDO2ECwBUdzyNjGvZ8wMCumo2LMuID\n gidlapu7oVOUHnQiwA2OKIgL2pZOds3XkxFMsWmtvV9LSal1kK9mMNcxJbtE2Nva1jDxTde0IwRZGcELrV/++VQpnfg5OPdsf\n tqdx8E07mWFCamHabD42vZLJnTqy73kfTPCi3AzmhnN0foEVYY+J4Bys6HDHT6gYYbsEgbNbA+MRF4UBPK8SOnzm5ZUvu+SRc\n 7Qx8wReP4qmYxfBPOci6Cxm5YzC50yprQNHvWVwVDonk3fL9/hlMwvvLw54rCW3VMScupqMHZhIQ0rrSoSh5tQtqqIBH7+XuP\n Ej6zw/ILn1BG1LT3zYD78djhpe4hfCo8ZH0o+gp74Mnawz289fHdEpKUHdixLa+Cpj/itbKHwg0rrDIiB+ZuWTHrHL518cQRU\n Oq1rjd4CHaE/C4l+WZcHPjCCuq29sfIKaMqGl/U8yszKEbhwPNTf/TA4Yq5H+V8gMro+WFV5NlzH1O/FKE+OWKYcnOjG5gdW4\n PYGbQ3QRw6vqjxv7Xya1sLtc64dAcedr4LjzjfYs91bCk3VtTDJBz8OnQXHjpjZ2rfvkBx/G/oB12c8nKnyxcOCyt0RLCo5Yu\n PF5TszWedoygwP/eMtAHudkKk6teXQe38FLw2B3fbcxiMtDstlfCPgGt9VMO9yASPYG3uugdUwF2u54dbWEbBK9A94C2Z5Fj1\n CiLeilP1hIdwXaBxQyIEQGTx7heML8bLVRU9f1PYEKf6b+Yp36qvfILGTlulJvOcpeQtO4phei2HpCLgo8SV4tY71LtVIGXr2\n ehLc+jdjAUBwLyNuysxnKHn6ahL4zPxoYgy26KZgr7HfATpx50uNsMz4GAxNv+23EsgvuOVFgjfdmIXUgd+Ere7XmRX5CqNwr\n gDvwDR7Q6XiCWTwnDtgs/dEX2VqmFHyJLwZo1vAoNDwRmR7G49GoEWGxj8frgiI9UEO7UMGzsaK2Edf5Es+sOUlUrLBfPSdhL\n uY4nAnUz4C3hzU0VR5K5OlcQT0CRHoE9pZYa7jkhdvIoHNG0zFxE62v4/clCgDMPSXX5Pgh3hyxxhiJ/43SR14tLEgh5AiQqd\n tbAq3oQjt8FWmN+VQroE1tsNWTVHJ+utI6K/qA2OgdQVIDJJyGCyYOUEqmaxcq5ZvJ6D+SUrU+lbfCDyUL8nkH64M9AkZ2+pS\n aLPNzoTJFfuR/rNaYS9zyJM0cfu78JUW812ZyUNPIvHjrvTE1z8i+nU46vi6+kbIlC72j7k7TvjpmgE4FZicapw7pH3bCR53E\n bvct5jFr91h6YTY3J8VgBOgk6ZEqXf1jYCbHj6FBfED3FWh/9g4nMRhpVlIHL6ADM260KxIA6NwbrX0sUuJ0PuxBo4ZqayKDJ\n wFB7WKHO1zMdD7DYBp9G2wf3F/xREzVuw+JJFKfui3EK/88Adg6SMNBM/S6kO68lAyeAb0HYKoL1LyYu8WUvLopYTKxsnPZN2\n pJH70D03pxhIoikW1StMkpaWasVRELxtPIQ3MX0kS3FeQGI7Y/aHSVLFvpTA4xkXvPQQOXGrqhEH4WkwhOgH1Vo5xYSIl+3ce\n Dfn5FYaOvowMnvorIzs4Fob3UQbff0wtK/3TlaT49d+reZaQsLNf9ChJ6z7Zw8oLIhbkGqVpqmvunisRCS4FKNAAR9rKHm1Ur\n 2LltUzvW6/0BeyWX74sMf0sMnRUAw8qyDQVheHbI+GSBd+P1PlqMQxdB869iyhH8nSMxV2wHQn6FE3A/bqn3zIunKDoLdFtyh\n uBn0zY3tY9CPNLQY1BBZjBYWzpk/+ODaupdul9DiCDcDcwEYtMywsNiNs3ywOVpUpnjZ+WAAXXFZqSZvqkq+rIwHl3mxWRdLg\n WJuygnxgnTkAjZCr/+Y0GmlQcgQB4m/07ko4Mcxhk41zlsDQwYrwF+LaKUu+qI9qXhu+BufKPx5sh41lfqO+tHUsr70IbVEeM\n GOTu3pvxXAsFoDt830utb40jYPvHKvDS4wWg4xdfBVgcamsKr2SGahyBwCkHVc4HZ/QyhL1xDmqA0s9rSjKcj113KoXriQKzh\n k/F5ECJLztLStPFJHCk/mtEhjcC6wmv64D7wg6DsZT5YP3LXple7YeNykGBzjQ7b2HqCJTT2RBuF4vFKfgj1avcvXSaGogJVJ\n xidVzM0hHIAi/iCYTDk6CZcr8qo9Hhy52BXzed8OHeiXbfPLZ1BFYffvUXFi7q4aKqG7/c1enNepjH+xVcsBHhv55sxsnVT9G\n Zv+s+YCghvw1bMCvNmO2FjdYAjDx7gjI9YmNTJax8Zg6uHMHYwUaD8yUCn3PP5dF3Jmy8xdAhQ6Uuwt9kblT35AgmAC6DvgGc\n kZ8dWUxoAcfYfLc3hX/qRcWsHMEERlq7F8MUOmzPK7SPbjINcxjD7wJ4Bxpg196d2UjxxRFMgenLu6clJXktOGTsD7AzpXIVw\n wF5Eb7kDRdvbPRDhK+O4BWCz0cthHOWt8KbMomHj+c0Tv1Ahf0ILn271287cuYIXtFIaw9cyZ5ugX21cAZ7fAX4DfWeHBAaOx\n smv5xLzfPiCN4AeENofUv0dBh1wS4y+FBUoQVKX4OPVt0A6zNPwBsg50u9vDvCzDBcM9/Z0Ts3LUnfgesiTgAHHWCG5yuM0s+\n A33MiEdZU1096emS52FcRbpgVhCMyKQxf+Av2ke5D4PmM0LQ8VaJ0MjisAlZMK4C2Ap7gElg+xa0cfQDvA3gf3LvdI4v0AxjU\n d1SQys24LpxJzliW/z8DvSpHwYmCbwAAAABJRU5ErkJggg==");
|
|
463
|
+
axisIconMap.set("posZ", "data:image/png;base64,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");
|
|
464
|
+
axisIconMap.set("negX", "data:image/png;base64,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\n 5ErkJggg==");
|
|
465
|
+
axisIconMap.set("negY", "data:image/png;base64,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\n 5ErkJggg==");
|
|
466
|
+
axisIconMap.set("negZ", "data:image/png;base64,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");
|
|
516
467
|
|
|
517
468
|
/**
|
|
518
469
|
* 下载图片
|
|
@@ -638,7 +589,7 @@ function _createImage() {
|
|
|
638
589
|
return GeometryData;
|
|
639
590
|
}();
|
|
640
591
|
|
|
641
|
-
var Vector3$
|
|
592
|
+
var Vector3$7 = effects.math.Vector3;
|
|
642
593
|
/**
|
|
643
594
|
*
|
|
644
595
|
*/ var SphereGeometryData = /*#__PURE__*/ function(GeometryData) {
|
|
@@ -677,7 +628,7 @@ var Vector3$8 = effects.math.Vector3;
|
|
|
677
628
|
var z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);
|
|
678
629
|
_this.points.push(x, y, z);
|
|
679
630
|
// normal
|
|
680
|
-
var normal = new Vector3$
|
|
631
|
+
var normal = new Vector3$7(x, y, z).normalize();
|
|
681
632
|
(_this_normals = _this.normals).push.apply(_this_normals, [].concat(normal.toArray()));
|
|
682
633
|
// uv
|
|
683
634
|
_this.uvs.push(u + uOffset, 1 - v);
|
|
@@ -766,7 +717,7 @@ var BoxGeometryData = /*#__PURE__*/ function(GeometryData) {
|
|
|
766
717
|
return BoxGeometryData;
|
|
767
718
|
}(GeometryData);
|
|
768
719
|
|
|
769
|
-
var Vector3$
|
|
720
|
+
var Vector3$6 = effects.math.Vector3;
|
|
770
721
|
/**
|
|
771
722
|
*
|
|
772
723
|
*/ var CylinderGeometryData = /*#__PURE__*/ function(GeometryData) {
|
|
@@ -798,7 +749,7 @@ var Vector3$7 = effects.math.Vector3;
|
|
|
798
749
|
var py = -v * height + halfHeight;
|
|
799
750
|
var pz = radius * cosTheta;
|
|
800
751
|
points.push(px, py, pz);
|
|
801
|
-
var normal = new Vector3$
|
|
752
|
+
var normal = new Vector3$6(sinTheta, slope, cosTheta).normalize();
|
|
802
753
|
(_normals = normals).push.apply(_normals, [].concat(normal.toArray()));
|
|
803
754
|
uvs.push(u, 1 - v);
|
|
804
755
|
indexRow.push(index++);
|
|
@@ -889,7 +840,7 @@ var Vector3$7 = effects.math.Vector3;
|
|
|
889
840
|
return ConeGeometryData;
|
|
890
841
|
}(CylinderGeometryData);
|
|
891
842
|
|
|
892
|
-
var Vector3$
|
|
843
|
+
var Vector3$5 = effects.math.Vector3;
|
|
893
844
|
/**
|
|
894
845
|
*
|
|
895
846
|
*/ var TorusGeometryData = /*#__PURE__*/ function(GeometryData) {
|
|
@@ -915,8 +866,8 @@ var Vector3$6 = effects.math.Vector3;
|
|
|
915
866
|
_this.points.push(px, py, pz);
|
|
916
867
|
var cx = radius * Math.cos(u);
|
|
917
868
|
var cy = radius * Math.sin(u);
|
|
918
|
-
var p = new Vector3$
|
|
919
|
-
var c = new Vector3$
|
|
869
|
+
var p = new Vector3$5(px, py, pz);
|
|
870
|
+
var c = new Vector3$5(cx, cy, 0);
|
|
920
871
|
var normal = p.subtract(c).normalize();
|
|
921
872
|
(_this_normals = _this.normals).push.apply(_this_normals, [].concat(normal.toArray()));
|
|
922
873
|
_this.uvs.push(i / tubularSegments);
|
|
@@ -982,7 +933,7 @@ var Vector3$6 = effects.math.Vector3;
|
|
|
982
933
|
return PlaneGeometryData;
|
|
983
934
|
}(GeometryData);
|
|
984
935
|
|
|
985
|
-
var Euler$1 = effects.math.Euler, Vector3$
|
|
936
|
+
var Euler$1 = effects.math.Euler, Vector3$4 = effects.math.Vector3, Matrix4$5 = effects.math.Matrix4;
|
|
986
937
|
/**
|
|
987
938
|
*
|
|
988
939
|
*/ var FrustumGeometryData = /*#__PURE__*/ function(GeometryData) {
|
|
@@ -995,11 +946,11 @@ var Euler$1 = effects.math.Euler, Vector3$5 = effects.math.Vector3, Matrix4$4 =
|
|
|
995
946
|
var ratio = aspect;
|
|
996
947
|
var halfY = far * Math.tan(fovY / 2);
|
|
997
948
|
var halfX = halfY * ratio;
|
|
998
|
-
var point1 = new Vector3$
|
|
999
|
-
var point2 = new Vector3$
|
|
1000
|
-
var point3 = new Vector3$
|
|
1001
|
-
var point4 = new Vector3$
|
|
1002
|
-
var matrix = Euler$1.fromArray(rotation).toMatrix4(new Matrix4$
|
|
949
|
+
var point1 = new Vector3$4(halfX, halfY, far);
|
|
950
|
+
var point2 = new Vector3$4(-halfX, halfY, far);
|
|
951
|
+
var point3 = new Vector3$4(-halfX, -halfY, far);
|
|
952
|
+
var point4 = new Vector3$4(halfX, -halfY, far);
|
|
953
|
+
var matrix = Euler$1.fromArray(rotation).toMatrix4(new Matrix4$5());
|
|
1003
954
|
var result1 = matrix.transformPoint(point1).add(position);
|
|
1004
955
|
var result2 = matrix.transformPoint(point2).add(position);
|
|
1005
956
|
var result3 = matrix.transformPoint(point3).add(position);
|
|
@@ -1222,37 +1173,86 @@ exports.GeometryType = void 0;
|
|
|
1222
1173
|
return result;
|
|
1223
1174
|
}
|
|
1224
1175
|
|
|
1225
|
-
|
|
1226
|
-
var
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
]
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
]
|
|
1242
|
-
|
|
1243
|
-
var
|
|
1244
|
-
|
|
1245
|
-
var
|
|
1246
|
-
|
|
1247
|
-
axisIconMap.set("camera", "data:image/png;base64,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");
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1176
|
+
effects.math.Vector3; effects.math.Ray;
|
|
1177
|
+
var BoundingType;
|
|
1178
|
+
(function(BoundingType) {
|
|
1179
|
+
BoundingType[BoundingType["box"] = 0] = "box";
|
|
1180
|
+
BoundingType[BoundingType["sphere"] = 1] = "sphere";
|
|
1181
|
+
BoundingType[BoundingType["triangle"] = 2] = "triangle";
|
|
1182
|
+
BoundingType[BoundingType["line"] = 3] = "line";
|
|
1183
|
+
})(BoundingType || (BoundingType = {}));
|
|
1184
|
+
|
|
1185
|
+
var Matrix4$4 = effects.math.Matrix4, Vector2$2 = effects.math.Vector2;
|
|
1186
|
+
function distanceOfPointAndLine(point, line) {
|
|
1187
|
+
//三角形三个边长
|
|
1188
|
+
var AC = new Vector2$2();
|
|
1189
|
+
var BC = new Vector2$2();
|
|
1190
|
+
var AB = new Vector2$2();
|
|
1191
|
+
AC.subtractVectors(point, line[0]);
|
|
1192
|
+
BC.subtractVectors(point, line[1]);
|
|
1193
|
+
AB.subtractVectors(line[1], line[0]);
|
|
1194
|
+
var lengthAC = AC.length();
|
|
1195
|
+
var lengthBC = BC.length();
|
|
1196
|
+
var lengthAB = AB.length();
|
|
1197
|
+
//利用海伦公式计算三角形面积
|
|
1198
|
+
//周长的一半
|
|
1199
|
+
var P = (lengthAC + lengthBC + lengthAB) / 2;
|
|
1200
|
+
var allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));
|
|
1201
|
+
//普通公式计算三角形面积反推点到线的垂直距离
|
|
1202
|
+
var distance = 2 * allArea / lengthAB;
|
|
1203
|
+
var l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));
|
|
1204
|
+
var l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));
|
|
1205
|
+
var isInLine = false;
|
|
1206
|
+
if (l1 <= lengthAB && l2 <= lengthAB) {
|
|
1207
|
+
isInLine = true;
|
|
1208
|
+
}
|
|
1209
|
+
return {
|
|
1210
|
+
distance: distance,
|
|
1211
|
+
isInLine: isInLine
|
|
1212
|
+
};
|
|
1213
|
+
}
|
|
1214
|
+
function projectionOfPointAndLine(point, line) {
|
|
1215
|
+
var AC = new Vector2$2();
|
|
1216
|
+
var BC = new Vector2$2();
|
|
1217
|
+
var AB = new Vector2$2();
|
|
1218
|
+
var line0 = line[0].toVector2();
|
|
1219
|
+
var line1 = line[1].toVector2();
|
|
1220
|
+
AC.subtractVectors(point, line0);
|
|
1221
|
+
BC.subtractVectors(point, line1);
|
|
1222
|
+
AB.subtractVectors(line1, line0);
|
|
1223
|
+
var lengthAC = AC.length();
|
|
1224
|
+
var lengthBC = BC.length();
|
|
1225
|
+
var lengthAB = AB.length();
|
|
1226
|
+
//利用海伦公式计算三角形面积
|
|
1227
|
+
//周长的一半
|
|
1228
|
+
var P = (lengthAC + lengthBC + lengthAB) / 2;
|
|
1229
|
+
var allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));
|
|
1230
|
+
//普通公式计算三角形面积反推点到线的垂直距离
|
|
1231
|
+
var distance = 2 * allArea / lengthAB;
|
|
1232
|
+
var l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));
|
|
1233
|
+
var l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));
|
|
1234
|
+
var worldAB = line[1].clone().subtract(line[0]);
|
|
1235
|
+
var worldAP = worldAB.clone().multiply(l1 / (l1 + l2));
|
|
1236
|
+
var worldP = line[0].clone().add(worldAP);
|
|
1237
|
+
return worldP;
|
|
1238
|
+
}
|
|
1239
|
+
function computeOrthographicOffCenter(left, right, bottom, top, near, far) {
|
|
1240
|
+
var a = 1.0 / (right - left);
|
|
1241
|
+
var b = 1.0 / (top - bottom);
|
|
1242
|
+
var c = 1.0 / (far - near);
|
|
1243
|
+
var tx = -(right + left) * a;
|
|
1244
|
+
var ty = -(top + bottom) * b;
|
|
1245
|
+
var tz = -(far + near) * c;
|
|
1246
|
+
a *= 2.0;
|
|
1247
|
+
b *= 2.0;
|
|
1248
|
+
c *= -2.0;
|
|
1249
|
+
return new Matrix4$4(a, 0.0, 0.0, 0.0, //
|
|
1250
|
+
0.0, b, 0.0, 0.0, //
|
|
1251
|
+
0.0, 0.0, c, 0.0, //
|
|
1252
|
+
tx, ty, tz, 1.0);
|
|
1253
|
+
}
|
|
1254
1254
|
|
|
1255
|
-
var Vector2$1 = effects.math.Vector2, Vector3$
|
|
1255
|
+
var Vector2$1 = effects.math.Vector2, Vector3$3 = effects.math.Vector3, Matrix4$3 = effects.math.Matrix4;
|
|
1256
1256
|
/**
|
|
1257
1257
|
* 根据 gizmoSubType 类型创建几何体 Mesh
|
|
1258
1258
|
* @param subType - gizmoSubType 类型
|
|
@@ -1412,9 +1412,9 @@ var Vector2$1 = effects.math.Vector2, Vector3$4 = effects.math.Vector3, Matrix4$
|
|
|
1412
1412
|
var i0 = indices[i] * 3;
|
|
1413
1413
|
var i1 = indices[i + 1] * 3;
|
|
1414
1414
|
var i2 = indices[i + 2] * 3;
|
|
1415
|
-
var p0 = new Vector3$
|
|
1416
|
-
var p1 = new Vector3$
|
|
1417
|
-
var p2 = new Vector3$
|
|
1415
|
+
var p0 = new Vector3$3(points[i0], points[i0 + 1], points[i0 + 2]);
|
|
1416
|
+
var p1 = new Vector3$3(points[i1], points[i1 + 1], points[i1 + 2]);
|
|
1417
|
+
var p2 = new Vector3$3(points[i2], points[i2 + 1], points[i2 + 2]);
|
|
1418
1418
|
result.push({
|
|
1419
1419
|
p0: mat4.projectPoint(p0),
|
|
1420
1420
|
p1: mat4.projectPoint(p1),
|
|
@@ -1639,7 +1639,7 @@ var Vector2$1 = effects.math.Vector2, Vector3$4 = effects.math.Vector3, Matrix4$
|
|
|
1639
1639
|
}, boundingMap);
|
|
1640
1640
|
boundingMap.set("center", {
|
|
1641
1641
|
type: BoundingType.sphere,
|
|
1642
|
-
center: new Vector3$
|
|
1642
|
+
center: new Vector3$3(),
|
|
1643
1643
|
radius: Math.pow(Math.pow(centerBoxSize.width, 2) + Math.pow(centerBoxSize.height, 2) + Math.pow(centerBoxSize.depth, 2), 0.5) / 2
|
|
1644
1644
|
});
|
|
1645
1645
|
return result;
|
|
@@ -1916,7 +1916,7 @@ var Vector2$1 = effects.math.Vector2, Vector3$4 = effects.math.Vector3, Matrix4$
|
|
|
1916
1916
|
* @param depthTest
|
|
1917
1917
|
* @returns 纯色材质,无光照,无透明
|
|
1918
1918
|
*/ function createMaterial(engine, color, depthTest) {
|
|
1919
|
-
var myColor = color ? Vector3$
|
|
1919
|
+
var myColor = color ? Vector3$3.fromArray(color) : new Vector3$3(255, 255, 255);
|
|
1920
1920
|
var myDepthTest = depthTest ? depthTest : false;
|
|
1921
1921
|
var material = effects.Material.create(engine, {
|
|
1922
1922
|
uniformValues: {
|
|
@@ -1967,7 +1967,7 @@ var Vector2$1 = effects.math.Vector2, Vector3$4 = effects.math.Vector3, Matrix4$
|
|
|
1967
1967
|
* @param depthTest
|
|
1968
1968
|
* @returns
|
|
1969
1969
|
*/ function createHideBackMaterial(engine, color, depthTest) {
|
|
1970
|
-
var myColor = color ? Vector3$
|
|
1970
|
+
var myColor = color ? Vector3$3.fromArray(color) : new Vector3$3(255, 255, 255);
|
|
1971
1971
|
var myDepthTest = depthTest ? depthTest : false;
|
|
1972
1972
|
var material = effects.Material.create(engine, {
|
|
1973
1973
|
uniformValues: {
|
|
@@ -2015,8 +2015,8 @@ var Vector2$1 = effects.math.Vector2, Vector3$4 = effects.math.Vector3, Matrix4$
|
|
|
2015
2015
|
});
|
|
2016
2016
|
material.setVector3("u_color", myColor);
|
|
2017
2017
|
material.setMatrix("u_model", Matrix4$3.IDENTITY);
|
|
2018
|
-
material.setVector3("u_cameraPos", Vector3$
|
|
2019
|
-
material.setVector3("u_center", Vector3$
|
|
2018
|
+
material.setVector3("u_cameraPos", Vector3$3.ZERO);
|
|
2019
|
+
material.setVector3("u_center", Vector3$3.ZERO);
|
|
2020
2020
|
material.depthTest = myDepthTest;
|
|
2021
2021
|
material.stencilTest = false;
|
|
2022
2022
|
material.blending = false;
|
|
@@ -2031,7 +2031,7 @@ var Vector2$1 = effects.math.Vector2, Vector3$4 = effects.math.Vector3, Matrix4$
|
|
|
2031
2031
|
* @param alpha
|
|
2032
2032
|
* @returns
|
|
2033
2033
|
*/ function createBlendMaterial(engine, color, depthTest, alpha) {
|
|
2034
|
-
var myColor = color ? Vector3$
|
|
2034
|
+
var myColor = color ? Vector3$3.fromArray(color) : new Vector3$3(255, 255, 255);
|
|
2035
2035
|
var myDepthTest = depthTest ? depthTest : false;
|
|
2036
2036
|
var myAlpha = alpha ? alpha : 1;
|
|
2037
2037
|
var material = effects.Material.create(engine, {
|
|
@@ -2139,9 +2139,9 @@ function createSpriteMaterial(engine, data, depthTest) {
|
|
|
2139
2139
|
} else {
|
|
2140
2140
|
var color;
|
|
2141
2141
|
if (data === undefined) {
|
|
2142
|
-
color = new Vector3$
|
|
2142
|
+
color = new Vector3$3(255, 255, 255);
|
|
2143
2143
|
} else {
|
|
2144
|
-
color = Vector3$
|
|
2144
|
+
color = Vector3$3.fromArray(data);
|
|
2145
2145
|
}
|
|
2146
2146
|
material.setVector3("u_color", color);
|
|
2147
2147
|
// uniformValues.u_color = new Float32Array(color);
|
|
@@ -2170,30 +2170,68 @@ function createSpriteMaterial(engine, data, depthTest) {
|
|
|
2170
2170
|
boundingMap.set("xAxis", {
|
|
2171
2171
|
type: BoundingType.line,
|
|
2172
2172
|
points: [
|
|
2173
|
-
new Vector3$
|
|
2174
|
-
new Vector3$
|
|
2173
|
+
new Vector3$3(0, 0, 0),
|
|
2174
|
+
new Vector3$3(size.length, 0, 0)
|
|
2175
2175
|
],
|
|
2176
2176
|
width: size.width
|
|
2177
2177
|
});
|
|
2178
2178
|
boundingMap.set("yAxis", {
|
|
2179
2179
|
type: BoundingType.line,
|
|
2180
2180
|
points: [
|
|
2181
|
-
new Vector3$
|
|
2182
|
-
new Vector3$
|
|
2181
|
+
new Vector3$3(0, 0, 0),
|
|
2182
|
+
new Vector3$3(0, size.length, 0)
|
|
2183
2183
|
],
|
|
2184
2184
|
width: size.width
|
|
2185
2185
|
});
|
|
2186
2186
|
boundingMap.set("zAxis", {
|
|
2187
2187
|
type: BoundingType.line,
|
|
2188
2188
|
points: [
|
|
2189
|
-
new Vector3$
|
|
2190
|
-
new Vector3$
|
|
2189
|
+
new Vector3$3(0, 0, 0),
|
|
2190
|
+
new Vector3$3(0, 0, size.length)
|
|
2191
2191
|
],
|
|
2192
2192
|
width: size.width
|
|
2193
2193
|
});
|
|
2194
2194
|
}
|
|
2195
2195
|
|
|
2196
|
-
var
|
|
2196
|
+
var Matrix4$2 = effects.math.Matrix4; effects.math.Vector2; var Vector3$2 = effects.math.Vector3;
|
|
2197
|
+
/**
|
|
2198
|
+
* 线条包围盒射线检测算法
|
|
2199
|
+
* @param out - 射线与包围盒交点位置
|
|
2200
|
+
* @param pointInCanvas - 归一化的画布交互点坐标
|
|
2201
|
+
* @param points - 线条包围盒两端点位置
|
|
2202
|
+
* @param radius - 线条包围盒辐射半径
|
|
2203
|
+
* @param camera - 相机对象
|
|
2204
|
+
* @returns 射线与包围盒交点位置 | undefined
|
|
2205
|
+
*/ function intersectRayLine(out, pointInCanvas, points, radius, worldMat4, camera) {
|
|
2206
|
+
// 构造一个辐射半径边缘的点 radiusPoint
|
|
2207
|
+
var up = new Vector3$2(worldMat4.elements[1], worldMat4.elements[5], worldMat4.elements[9]).normalize();
|
|
2208
|
+
var radiusPoint = up.clone().multiply(radius);
|
|
2209
|
+
radiusPoint.add(points[0]);
|
|
2210
|
+
// 计算 start、end、radius 在屏幕空间上的投影
|
|
2211
|
+
var mvpMat4 = camera.getModelViewProjection(new Matrix4$2(), worldMat4);
|
|
2212
|
+
var screenStart = mvpMat4.projectPoint(points[0], new Vector3$2());
|
|
2213
|
+
var screenEnd = mvpMat4.projectPoint(points[1], new Vector3$2());
|
|
2214
|
+
var screenRadiusPoint = mvpMat4.projectPoint(radiusPoint, new Vector3$2());
|
|
2215
|
+
var screenRadiusVector = screenRadiusPoint.clone().subtract(screenStart);
|
|
2216
|
+
var screenRadius = screenRadiusVector.length();
|
|
2217
|
+
// 计算屏幕交互点与线条的距离
|
|
2218
|
+
var _distanceOfPointAndLine = distanceOfPointAndLine(pointInCanvas, [
|
|
2219
|
+
screenStart.toVector2(),
|
|
2220
|
+
screenEnd.toVector2()
|
|
2221
|
+
]), distance = _distanceOfPointAndLine.distance, isInLine = _distanceOfPointAndLine.isInLine;
|
|
2222
|
+
if (distance <= screenRadius && isInLine) {
|
|
2223
|
+
// 计算交互点在线条上的投影并转换为世界坐标
|
|
2224
|
+
var screenPosition = projectionOfPointAndLine(pointInCanvas, [
|
|
2225
|
+
screenStart,
|
|
2226
|
+
screenEnd
|
|
2227
|
+
]);
|
|
2228
|
+
var inverseViewProjection = camera.getInverseViewProjectionMatrix();
|
|
2229
|
+
inverseViewProjection.projectPoint(screenPosition, out);
|
|
2230
|
+
return out;
|
|
2231
|
+
}
|
|
2232
|
+
}
|
|
2233
|
+
|
|
2234
|
+
var Euler = effects.math.Euler, Vector3$1 = effects.math.Vector3, Matrix4$1 = effects.math.Matrix4;
|
|
2197
2235
|
var rectSize = 0.04;
|
|
2198
2236
|
var DEG2RAD = Math.PI / 180;
|
|
2199
2237
|
function arcPath(radius, arc, options) {
|
|
@@ -2207,7 +2245,7 @@ function arcPath(radius, arc, options) {
|
|
|
2207
2245
|
0,
|
|
2208
2246
|
0
|
|
2209
2247
|
] : _options_rotate;
|
|
2210
|
-
var rotMat4 = Euler.fromArray(rotate).negate().toMatrix4(new Matrix4$
|
|
2248
|
+
var rotMat4 = Euler.fromArray(rotate).negate().toMatrix4(new Matrix4$1());
|
|
2211
2249
|
var points = [];
|
|
2212
2250
|
var indices = [];
|
|
2213
2251
|
addPoint(radius, 0);
|
|
@@ -2222,7 +2260,7 @@ function arcPath(radius, arc, options) {
|
|
|
2222
2260
|
indices: indices
|
|
2223
2261
|
};
|
|
2224
2262
|
function addPoint(cos, sin) {
|
|
2225
|
-
var point = new Vector3$
|
|
2263
|
+
var point = new Vector3$1();
|
|
2226
2264
|
if (plane === "xz") {
|
|
2227
2265
|
point.set(cos, 0, sin);
|
|
2228
2266
|
} else if (plane === "yz") {
|
|
@@ -2237,8 +2275,8 @@ function arcPath(radius, arc, options) {
|
|
|
2237
2275
|
function line(p0, p1) {
|
|
2238
2276
|
return {
|
|
2239
2277
|
points: [
|
|
2240
|
-
Vector3$
|
|
2241
|
-
Vector3$
|
|
2278
|
+
Vector3$1.fromArray(p0),
|
|
2279
|
+
Vector3$1.fromArray(p1)
|
|
2242
2280
|
],
|
|
2243
2281
|
indices: [
|
|
2244
2282
|
0,
|
|
@@ -2297,7 +2335,7 @@ function box(width, height, depth, center) {
|
|
|
2297
2335
|
d
|
|
2298
2336
|
]
|
|
2299
2337
|
].map(function(item) {
|
|
2300
|
-
return new Vector3$
|
|
2338
|
+
return new Vector3$1(item[0] + myCenter[0], item[1] + myCenter[1], item[2] + myCenter[2]);
|
|
2301
2339
|
});
|
|
2302
2340
|
return {
|
|
2303
2341
|
points: points,
|
|
@@ -2333,10 +2371,10 @@ function rect(width, height, pos) {
|
|
|
2333
2371
|
var w = width / 2;
|
|
2334
2372
|
var h = height / 2;
|
|
2335
2373
|
var points = [
|
|
2336
|
-
new Vector3$
|
|
2337
|
-
new Vector3$
|
|
2338
|
-
new Vector3$
|
|
2339
|
-
new Vector3$
|
|
2374
|
+
new Vector3$1(-w, h, 0),
|
|
2375
|
+
new Vector3$1(w, h, 0),
|
|
2376
|
+
new Vector3$1(w, -h, 0),
|
|
2377
|
+
new Vector3$1(-w, -h, 0)
|
|
2340
2378
|
];
|
|
2341
2379
|
if (pos) {
|
|
2342
2380
|
points.forEach(function(vec) {
|
|
@@ -2737,8 +2775,8 @@ function createMesh(engine, points, indices, color, depthTest, name) {
|
|
|
2737
2775
|
vertex: "precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixVP;\n uniform vec4 uEditorTransform;\n void main(){\n gl_Position = effects_MatrixVP * u_model * vec4(a_Position,1.0);\n gl_Position = vec4(gl_Position.xy * uEditorTransform.xy + uEditorTransform.zw * gl_Position.w,gl_Position.zw);\n }"
|
|
2738
2776
|
}
|
|
2739
2777
|
});
|
|
2740
|
-
material.setVector3("u_color", Vector3$
|
|
2741
|
-
material.setMatrix("u_model", Matrix4$
|
|
2778
|
+
material.setVector3("u_color", Vector3$1.fromArray(color));
|
|
2779
|
+
material.setMatrix("u_model", Matrix4$1.IDENTITY);
|
|
2742
2780
|
material.depthTest = depthTest;
|
|
2743
2781
|
material.stencilTest = false;
|
|
2744
2782
|
material.blending = false;
|
|
@@ -2764,22 +2802,220 @@ function createMesh(engine, points, indices, color, depthTest, name) {
|
|
|
2764
2802
|
});
|
|
2765
2803
|
}
|
|
2766
2804
|
|
|
2767
|
-
var Vector2 = effects.math.Vector2, Vector3
|
|
2805
|
+
var Vector2 = effects.math.Vector2, Vector3 = effects.math.Vector3, Matrix4 = effects.math.Matrix4, Quaternion = effects.math.Quaternion;
|
|
2768
2806
|
var constants = effects.glContext;
|
|
2769
|
-
|
|
2807
|
+
exports.GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
2770
2808
|
_inherits(GizmoComponent, ItemBehaviour);
|
|
2771
2809
|
function GizmoComponent() {
|
|
2772
2810
|
var _this;
|
|
2773
2811
|
_this = ItemBehaviour.apply(this, arguments) || this;
|
|
2774
|
-
_this.
|
|
2812
|
+
_this.boundingMap = new Map();
|
|
2813
|
+
_this.mat = Matrix4.fromIdentity();
|
|
2775
2814
|
_this.wireframeMeshes = [];
|
|
2815
|
+
/**
|
|
2816
|
+
* 射线检测算法
|
|
2817
|
+
* @returns 包含射线检测算法回调方法的参数
|
|
2818
|
+
*/ _this.getHitTestParams = function() {
|
|
2819
|
+
var item = _this.item;
|
|
2820
|
+
var boundingMap = _this.boundingMap;
|
|
2821
|
+
if (boundingMap.size > 0) {
|
|
2822
|
+
var boundingKeys = boundingMap.keys();
|
|
2823
|
+
var worldMat4;
|
|
2824
|
+
worldMat4 = _this.transform.getWorldMatrix();
|
|
2825
|
+
var targetItem = _this.targetItem;
|
|
2826
|
+
if (targetItem) {
|
|
2827
|
+
var _item_getComponent;
|
|
2828
|
+
//const targetTransform = this.targetItem.transform.clone();
|
|
2829
|
+
var worldPos = new Vector3();
|
|
2830
|
+
var worldQuat = new Quaternion();
|
|
2831
|
+
var worldSca = new Vector3(1, 1, 1);
|
|
2832
|
+
targetItem.transform.assignWorldTRS(worldPos, worldQuat);
|
|
2833
|
+
var targetTransform = new effects.Transform({
|
|
2834
|
+
position: worldPos,
|
|
2835
|
+
quat: worldQuat,
|
|
2836
|
+
scale: worldSca,
|
|
2837
|
+
valid: true
|
|
2838
|
+
});
|
|
2839
|
+
var gizmoSubType = (_item_getComponent = item.getComponent(GizmoComponent)) == null ? void 0 : _item_getComponent.subType;
|
|
2840
|
+
// 移动\旋转\缩放gizmo去除近大远小
|
|
2841
|
+
if (gizmoSubType === exports.GizmoSubType.rotation || gizmoSubType === exports.GizmoSubType.scale || gizmoSubType === exports.GizmoSubType.translation || gizmoSubType === exports.GizmoSubType.camera || gizmoSubType === exports.GizmoSubType.light) {
|
|
2842
|
+
var camera = item.composition.camera;
|
|
2843
|
+
var cameraPos = camera.position || [
|
|
2844
|
+
0,
|
|
2845
|
+
0,
|
|
2846
|
+
0
|
|
2847
|
+
];
|
|
2848
|
+
var itemPos = targetTransform.position;
|
|
2849
|
+
var newPos = moveToPointWidthFixDistance(cameraPos, itemPos);
|
|
2850
|
+
targetTransform.setPosition(newPos.x, newPos.y, newPos.z);
|
|
2851
|
+
worldMat4 = targetTransform.getWorldMatrix();
|
|
2852
|
+
} else {
|
|
2853
|
+
worldMat4 = targetTransform.getWorldMatrix();
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
2857
|
+
var self = item;
|
|
2858
|
+
return {
|
|
2859
|
+
type: effects.HitTestType.custom,
|
|
2860
|
+
/**
|
|
2861
|
+
* 自定义射线检测算法
|
|
2862
|
+
* @param ray 射线参数
|
|
2863
|
+
* @param pointInCanvas 屏幕坐标
|
|
2864
|
+
* @returns
|
|
2865
|
+
*/ collect: function collect(ray, pointInCanvas) {
|
|
2866
|
+
var _loop = function() {
|
|
2867
|
+
var key = _step.value;
|
|
2868
|
+
var bounding = boundingMap.get(key);
|
|
2869
|
+
var center = new Vector3();
|
|
2870
|
+
var worldCenter = new Vector3();
|
|
2871
|
+
if ((bounding == null ? void 0 : bounding.type) === BoundingType.box || (bounding == null ? void 0 : bounding.type) === BoundingType.sphere) {
|
|
2872
|
+
if (bounding == null ? void 0 : bounding.center) {
|
|
2873
|
+
center.copyFrom(bounding == null ? void 0 : bounding.center);
|
|
2874
|
+
}
|
|
2875
|
+
worldMat4.projectPoint(center, worldCenter);
|
|
2876
|
+
}
|
|
2877
|
+
var position = void 0;
|
|
2878
|
+
switch(bounding == null ? void 0 : bounding.type){
|
|
2879
|
+
case BoundingType.box:
|
|
2880
|
+
{
|
|
2881
|
+
var boxHalfSize = bounding.size.clone().multiply(0.5);
|
|
2882
|
+
var boxMax = center.clone().add(boxHalfSize);
|
|
2883
|
+
var boxMin = center.clone().subtract(boxHalfSize);
|
|
2884
|
+
position = ray.intersectBox({
|
|
2885
|
+
min: boxMin,
|
|
2886
|
+
max: boxMax
|
|
2887
|
+
}, new Vector3());
|
|
2888
|
+
}
|
|
2889
|
+
break;
|
|
2890
|
+
case BoundingType.sphere:
|
|
2891
|
+
// viewHelper 使用了正交投影,使用屏幕投影点计算
|
|
2892
|
+
if (gizmoComponent.subType === exports.GizmoSubType.viewHelper) {
|
|
2893
|
+
// 计算正交投影矩阵
|
|
2894
|
+
var viewMat4 = self.composition.camera.getViewMatrix();
|
|
2895
|
+
var fov = 30; // 指定fov角度
|
|
2896
|
+
var screenWidth = self.composition.renderer.getWidth();
|
|
2897
|
+
var screenHeight = self.composition.renderer.getHeight();
|
|
2898
|
+
var distance = 16; // 指定物体与相机的距离
|
|
2899
|
+
var width = 2 * Math.tan(fov * Math.PI / 360) * distance;
|
|
2900
|
+
var aspect = screenWidth / screenHeight;
|
|
2901
|
+
var height = width / aspect;
|
|
2902
|
+
var proMat4 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);
|
|
2903
|
+
// 将包围盒挂到相机的 transform 上
|
|
2904
|
+
var cameraModelMat4 = self.composition.camera.getInverseViewMatrix();
|
|
2905
|
+
var localTransform = new effects.Transform({
|
|
2906
|
+
valid: true
|
|
2907
|
+
});
|
|
2908
|
+
localTransform.cloneFromMatrix(worldMat4);
|
|
2909
|
+
var pos = localTransform.position;
|
|
2910
|
+
var padding = gizmoComponent.size.padding || 1; // 指定viewHelper与屏幕右上角的边距
|
|
2911
|
+
localTransform.setPosition(pos.x + width / 2 - padding, pos.y + height / 2 - padding, pos.z);
|
|
2912
|
+
var localMat4 = localTransform.getWorldMatrix();
|
|
2913
|
+
var modelMat4 = cameraModelMat4.clone().multiply(localMat4);
|
|
2914
|
+
modelMat4.projectPoint(center, worldCenter);
|
|
2915
|
+
// 包围球中心点正交投影到屏幕上
|
|
2916
|
+
var vpMat4 = proMat4.clone().multiply(viewMat4);
|
|
2917
|
+
var mvpMat4 = vpMat4.clone().multiply(modelMat4);
|
|
2918
|
+
var screenCenter = mvpMat4.projectPoint(center, new Vector3());
|
|
2919
|
+
// const screenCenterX = screenCenter.x;
|
|
2920
|
+
// const screenCenterY = screenCenter.y;
|
|
2921
|
+
// 包围球上的点正交投影到屏幕上
|
|
2922
|
+
var radius = bounding.radius;
|
|
2923
|
+
var up = new Vector3(localMat4.elements[1], localMat4.elements[5], localMat4.elements[9]).normalize();
|
|
2924
|
+
var point = up.clone().multiply(radius);
|
|
2925
|
+
point.add(center);
|
|
2926
|
+
var screenPoint = mvpMat4.projectPoint(point, new Vector3());
|
|
2927
|
+
// const screenPointX = screenPoint.x;
|
|
2928
|
+
// const screenPointY = screenPoint.y;
|
|
2929
|
+
// 计算正交投影到屏幕上的包围球的半径
|
|
2930
|
+
var screenCenter2 = screenCenter.toVector2();
|
|
2931
|
+
var screenPoint2 = screenPoint.toVector2();
|
|
2932
|
+
var screenRadius = screenCenter2.distance(screenPoint2);
|
|
2933
|
+
if (pointInCanvas.distance(screenCenter2) < screenRadius * 1.2) {
|
|
2934
|
+
position = worldCenter;
|
|
2935
|
+
}
|
|
2936
|
+
} else {
|
|
2937
|
+
position = ray.intersectSphere({
|
|
2938
|
+
center: worldCenter,
|
|
2939
|
+
radius: bounding.radius
|
|
2940
|
+
}, new Vector3());
|
|
2941
|
+
}
|
|
2942
|
+
break;
|
|
2943
|
+
case BoundingType.triangle:
|
|
2944
|
+
{
|
|
2945
|
+
var triangles = bounding.triangles, backfaceCulling = bounding.backfaceCulling;
|
|
2946
|
+
var tmpPositions = [];
|
|
2947
|
+
var tmpPosition = void 0;
|
|
2948
|
+
for(var j = 0; j < triangles.length; j++){
|
|
2949
|
+
var triangle = triangles[j];
|
|
2950
|
+
var worldTriangle = {
|
|
2951
|
+
p0: worldMat4.projectPoint(triangle.p0, new Vector3()),
|
|
2952
|
+
p1: worldMat4.projectPoint(triangle.p1, new Vector3()),
|
|
2953
|
+
p2: worldMat4.projectPoint(triangle.p2, new Vector3())
|
|
2954
|
+
};
|
|
2955
|
+
tmpPosition = ray.intersectTriangle(worldTriangle, new Vector3(), backfaceCulling);
|
|
2956
|
+
if (tmpPosition) {
|
|
2957
|
+
tmpPositions.push(tmpPosition);
|
|
2958
|
+
}
|
|
2959
|
+
}
|
|
2960
|
+
// 仅保存距离相机最近的点
|
|
2961
|
+
if (tmpPositions.length > 0) {
|
|
2962
|
+
var lastDistance = void 0;
|
|
2963
|
+
tmpPositions.forEach(function(item) {
|
|
2964
|
+
var distance = ray.origin.distanceSquared(item);
|
|
2965
|
+
if (!lastDistance || distance < lastDistance) {
|
|
2966
|
+
lastDistance = distance;
|
|
2967
|
+
position = item;
|
|
2968
|
+
}
|
|
2969
|
+
});
|
|
2970
|
+
}
|
|
2971
|
+
break;
|
|
2972
|
+
}
|
|
2973
|
+
case BoundingType.line:
|
|
2974
|
+
{
|
|
2975
|
+
var points = bounding.points, width1 = bounding.width;
|
|
2976
|
+
position = intersectRayLine(new Vector3(), pointInCanvas, points, width1 / 2, worldMat4, self.composition.camera);
|
|
2977
|
+
break;
|
|
2978
|
+
}
|
|
2979
|
+
}
|
|
2980
|
+
if (position) {
|
|
2981
|
+
hitPositions.push(position);
|
|
2982
|
+
// 缓存距离相机最近的 BoundingKey
|
|
2983
|
+
if (gizmoComponent.hitBounding) {
|
|
2984
|
+
var distance1 = ray.origin.distanceSquared(position);
|
|
2985
|
+
var lastDistance1 = ray.origin.distanceSquared(gizmoComponent.hitBounding.position);
|
|
2986
|
+
if (distance1 < lastDistance1) {
|
|
2987
|
+
gizmoComponent.hitBounding.key = key;
|
|
2988
|
+
gizmoComponent.hitBounding.position = position;
|
|
2989
|
+
}
|
|
2990
|
+
} else {
|
|
2991
|
+
gizmoComponent.hitBounding = {
|
|
2992
|
+
key: key,
|
|
2993
|
+
position: position
|
|
2994
|
+
};
|
|
2995
|
+
}
|
|
2996
|
+
}
|
|
2997
|
+
};
|
|
2998
|
+
var hitPositions = [];
|
|
2999
|
+
var gizmoComponent = self.getComponent(GizmoComponent);
|
|
3000
|
+
gizmoComponent.hitBounding = undefined;
|
|
3001
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(boundingKeys), _step; !(_step = _iterator()).done;)_loop();
|
|
3002
|
+
if (hitPositions.length === 0) {
|
|
3003
|
+
gizmoComponent.hitBounding = undefined;
|
|
3004
|
+
}
|
|
3005
|
+
return hitPositions;
|
|
3006
|
+
},
|
|
3007
|
+
behavior: effects.spec.InteractBehavior.NOTIFY
|
|
3008
|
+
};
|
|
3009
|
+
}
|
|
3010
|
+
};
|
|
2776
3011
|
return _this;
|
|
2777
3012
|
}
|
|
2778
3013
|
var _proto = GizmoComponent.prototype;
|
|
2779
3014
|
_proto.start = function start() {
|
|
3015
|
+
this.item.getHitTestParams = this.getHitTestParams;
|
|
2780
3016
|
for(var _iterator = _create_for_of_iterator_helper_loose(this.item.composition.items), _step; !(_step = _iterator()).done;){
|
|
2781
3017
|
var item = _step.value;
|
|
2782
|
-
if (item.id === this.
|
|
3018
|
+
if (item.id === this.target) {
|
|
2783
3019
|
this.targetItem = item;
|
|
2784
3020
|
}
|
|
2785
3021
|
}
|
|
@@ -2803,7 +3039,8 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2803
3039
|
if (gizmoVFXItemList && gizmoVFXItemList.length > 0) {
|
|
2804
3040
|
for(var _iterator2 = _create_for_of_iterator_helper_loose(gizmoVFXItemList), _step2; !(_step2 = _iterator2()).done;){
|
|
2805
3041
|
var gizmoVFXItem = _step2.value;
|
|
2806
|
-
|
|
3042
|
+
var gizmoSubType = gizmoVFXItem.getComponent(GizmoComponent).subType;
|
|
3043
|
+
switch(gizmoSubType){
|
|
2807
3044
|
case exports.GizmoSubType.particleEmitter:
|
|
2808
3045
|
this.createParticleContent(targetItem, gizmoPlugin.meshToAdd);
|
|
2809
3046
|
break;
|
|
@@ -2821,19 +3058,19 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2821
3058
|
case exports.GizmoSubType.pointLight:
|
|
2822
3059
|
case exports.GizmoSubType.spotLight:
|
|
2823
3060
|
case exports.GizmoSubType.floorGrid:
|
|
2824
|
-
this.createBasicContent(targetItem, gizmoPlugin.meshToAdd,
|
|
3061
|
+
this.createBasicContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType);
|
|
2825
3062
|
break;
|
|
2826
3063
|
case exports.GizmoSubType.camera:
|
|
2827
3064
|
case exports.GizmoSubType.light:
|
|
2828
|
-
this.createBasicContent(targetItem, gizmoPlugin.meshToAdd,
|
|
3065
|
+
this.createBasicContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType, iconTextures);
|
|
2829
3066
|
break;
|
|
2830
3067
|
case exports.GizmoSubType.rotation:
|
|
2831
3068
|
case exports.GizmoSubType.scale:
|
|
2832
3069
|
case exports.GizmoSubType.translation:
|
|
2833
|
-
this.createCombinationContent(targetItem, gizmoPlugin.meshToAdd,
|
|
3070
|
+
this.createCombinationContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType);
|
|
2834
3071
|
break;
|
|
2835
3072
|
case exports.GizmoSubType.viewHelper:
|
|
2836
|
-
this.createCombinationContent(targetItem, gizmoPlugin.meshToAdd,
|
|
3073
|
+
this.createCombinationContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType, iconTextures);
|
|
2837
3074
|
break;
|
|
2838
3075
|
case exports.GizmoSubType.boundingBox:
|
|
2839
3076
|
this.createBoundingBoxContent(targetItem, gizmoPlugin.meshToAdd);
|
|
@@ -2854,22 +3091,24 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2854
3091
|
};
|
|
2855
3092
|
_proto.updateRenderData = function updateRenderData() {
|
|
2856
3093
|
var item = this.item;
|
|
2857
|
-
|
|
3094
|
+
var gizmoSubType = this.subType;
|
|
3095
|
+
if (gizmoSubType === exports.GizmoSubType.particleEmitter) {
|
|
2858
3096
|
if (this.targetItem && item.content) {
|
|
2859
3097
|
this.mat = this.targetItem.transform.getWorldMatrix();
|
|
3098
|
+
//@ts-expect-error
|
|
2860
3099
|
item.content.material.setMatrix("u_model", this.mat);
|
|
2861
3100
|
}
|
|
2862
|
-
if (
|
|
2863
|
-
var particle = this.targetItem.
|
|
3101
|
+
if (this.wireframeMesh && this.targetItem) {
|
|
3102
|
+
var particle = this.targetItem.getComponent(effects.ParticleSystemRenderer);
|
|
2864
3103
|
if (particle) {
|
|
2865
|
-
updateWireframeMesh(particle.particleMesh.mesh,
|
|
2866
|
-
|
|
3104
|
+
updateWireframeMesh(particle.particleMesh.mesh, this.wireframeMesh, WireframeGeometryType.quad);
|
|
3105
|
+
this.wireframeMesh.worldMatrix = particle.particleMesh.mesh.worldMatrix;
|
|
2867
3106
|
}
|
|
2868
3107
|
}
|
|
2869
|
-
} else if (
|
|
2870
|
-
if (
|
|
3108
|
+
} else if (gizmoSubType === exports.GizmoSubType.modelWireframe) {
|
|
3109
|
+
if (this.wireframeMesh && this.targetItem) {
|
|
2871
3110
|
var _this_targetItem_getComponent;
|
|
2872
|
-
|
|
3111
|
+
//@ts-expect-error
|
|
2873
3112
|
var meshes = (_this_targetItem_getComponent = this.targetItem.getComponent(effects.RendererComponent)) == null ? void 0 : _this_targetItem_getComponent.content.mriMeshs;
|
|
2874
3113
|
var wireframeMeshes = this.wireframeMeshes;
|
|
2875
3114
|
if ((meshes == null ? void 0 : meshes.length) > 0) {
|
|
@@ -2880,11 +3119,11 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2880
3119
|
}
|
|
2881
3120
|
} else {
|
|
2882
3121
|
if (this.targetItem) {
|
|
2883
|
-
if (
|
|
3122
|
+
if (this.contents) {
|
|
2884
3123
|
// const targetTransform = this.targetItem.transform.clone();
|
|
2885
|
-
var worldPos = new Vector3
|
|
2886
|
-
var worldQuat = new Quaternion
|
|
2887
|
-
var worldScale = new Vector3
|
|
3124
|
+
var worldPos = new Vector3();
|
|
3125
|
+
var worldQuat = new Quaternion();
|
|
3126
|
+
var worldScale = new Vector3(1, 1, 1);
|
|
2888
3127
|
this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);
|
|
2889
3128
|
var targetTransform = new effects.Transform({
|
|
2890
3129
|
position: worldPos,
|
|
@@ -2893,29 +3132,29 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2893
3132
|
valid: true
|
|
2894
3133
|
});
|
|
2895
3134
|
// 移动\旋转\缩放gizmo去除近大远小
|
|
2896
|
-
if (
|
|
3135
|
+
if (gizmoSubType === exports.GizmoSubType.rotation || gizmoSubType === exports.GizmoSubType.scale || gizmoSubType === exports.GizmoSubType.translation) {
|
|
2897
3136
|
var camera = item.composition.camera;
|
|
2898
|
-
var cameraPos = camera.position || new Vector3
|
|
3137
|
+
var cameraPos = camera.position || new Vector3();
|
|
2899
3138
|
var itemPos = targetTransform.position;
|
|
2900
3139
|
var newPos = moveToPointWidthFixDistance(cameraPos, itemPos);
|
|
2901
3140
|
targetTransform.setPosition(newPos.x, newPos.y, newPos.z);
|
|
2902
3141
|
}
|
|
2903
3142
|
this.mat = targetTransform.getWorldMatrix();
|
|
2904
3143
|
var center = targetTransform.position;
|
|
2905
|
-
for(var _iterator = _create_for_of_iterator_helper_loose(
|
|
3144
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(this.contents), _step; !(_step = _iterator()).done;){
|
|
2906
3145
|
var _step_value = _step.value, mesh = _step_value[0], transform = _step_value[1];
|
|
2907
3146
|
var worldMat4 = void 0;
|
|
2908
3147
|
transform.parentTransform = targetTransform;
|
|
2909
|
-
var position = new Vector3
|
|
3148
|
+
var position = new Vector3();
|
|
2910
3149
|
transform.assignWorldTRS(position);
|
|
2911
3150
|
// 物体和中心点在屏幕空间上投影的距离
|
|
2912
3151
|
var distanceToCneter = 100;
|
|
2913
3152
|
var theta = 1;
|
|
2914
|
-
if (
|
|
3153
|
+
if (gizmoSubType === exports.GizmoSubType.viewHelper) {
|
|
2915
3154
|
// 正交投影只需要计算物体在XY平面上的投影与中心点的距离
|
|
2916
3155
|
if (mesh.name === "sprite") {
|
|
2917
3156
|
distanceToCneter = position.toVector2().distance(center.toVector2());
|
|
2918
|
-
theta =
|
|
3157
|
+
theta = this.boundingMap.get("posX").radius;
|
|
2919
3158
|
}
|
|
2920
3159
|
// 将物体挂到相机的transform上
|
|
2921
3160
|
var fov = 30; // 指定fov角度
|
|
@@ -2926,7 +3165,7 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2926
3165
|
var aspect = screenWidth / screenHeight;
|
|
2927
3166
|
var height = width / aspect;
|
|
2928
3167
|
var cameraModelMat4 = item.composition.camera.getInverseViewMatrix();
|
|
2929
|
-
var padding =
|
|
3168
|
+
var padding = this.size.padding || 1; // 指定viewHelper与屏幕右上角的边距
|
|
2930
3169
|
var localMat = void 0;
|
|
2931
3170
|
localMat = transform.getWorldMatrix();
|
|
2932
3171
|
var worldTransform = new effects.Transform({
|
|
@@ -2940,7 +3179,7 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2940
3179
|
var proMat5 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);
|
|
2941
3180
|
mesh.material.setMatrix("_MatrixP", proMat5);
|
|
2942
3181
|
} else {
|
|
2943
|
-
if (
|
|
3182
|
+
if (gizmoSubType === exports.GizmoSubType.rotation) {
|
|
2944
3183
|
var cameraPos1 = item.composition.camera.position || [
|
|
2945
3184
|
0,
|
|
2946
3185
|
0,
|
|
@@ -2964,9 +3203,9 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2964
3203
|
}
|
|
2965
3204
|
}
|
|
2966
3205
|
if (item.content) {
|
|
2967
|
-
var worldPos1 = new Vector3
|
|
2968
|
-
var worldQuat1 = new Quaternion
|
|
2969
|
-
var worldSca = new Vector3
|
|
3206
|
+
var worldPos1 = new Vector3();
|
|
3207
|
+
var worldQuat1 = new Quaternion();
|
|
3208
|
+
var worldSca = new Vector3(1, 1, 1);
|
|
2970
3209
|
this.targetItem.transform.assignWorldTRS(worldPos1, worldQuat1);
|
|
2971
3210
|
var targetTransform1 = new effects.Transform({
|
|
2972
3211
|
position: worldPos1,
|
|
@@ -2974,14 +3213,15 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2974
3213
|
scale: worldSca,
|
|
2975
3214
|
valid: true
|
|
2976
3215
|
});
|
|
2977
|
-
if (
|
|
3216
|
+
if (gizmoSubType === exports.GizmoSubType.light || gizmoSubType === exports.GizmoSubType.camera) {
|
|
2978
3217
|
var camera1 = item.composition.camera;
|
|
2979
|
-
var cameraPos2 = camera1.position || new Vector3
|
|
3218
|
+
var cameraPos2 = camera1.position || new Vector3(0, 0, 0);
|
|
2980
3219
|
var itemPos1 = targetTransform1.position;
|
|
2981
3220
|
var newPos1 = moveToPointWidthFixDistance(cameraPos2, itemPos1);
|
|
2982
3221
|
targetTransform1.setPosition(newPos1.x, newPos1.y, newPos1.z);
|
|
2983
3222
|
}
|
|
2984
3223
|
this.mat = targetTransform1.getWorldMatrix();
|
|
3224
|
+
//@ts-expect-error
|
|
2985
3225
|
item.content.material.setMatrix("u_model", targetTransform1.getWorldMatrix());
|
|
2986
3226
|
}
|
|
2987
3227
|
}
|
|
@@ -2992,8 +3232,8 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
2992
3232
|
* @returns 绘制模式常量
|
|
2993
3233
|
*/ _proto.getDefaultRenderMode = function getDefaultRenderMode() {
|
|
2994
3234
|
var result;
|
|
2995
|
-
var
|
|
2996
|
-
switch(
|
|
3235
|
+
var gizmoSubType = this.subType;
|
|
3236
|
+
switch(gizmoSubType){
|
|
2997
3237
|
case exports.GizmoSubType.particleEmitter:
|
|
2998
3238
|
case exports.GizmoSubType.modelWireframe:
|
|
2999
3239
|
case exports.GizmoSubType.frustum:
|
|
@@ -3014,8 +3254,8 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3014
3254
|
* @returns 几何体尺寸
|
|
3015
3255
|
*/ _proto.getDefaultSize = function getDefaultSize() {
|
|
3016
3256
|
var result = {};
|
|
3017
|
-
var
|
|
3018
|
-
switch(
|
|
3257
|
+
var gizmoSubType = this.subType;
|
|
3258
|
+
switch(gizmoSubType){
|
|
3019
3259
|
case exports.GizmoSubType.box:
|
|
3020
3260
|
result = {
|
|
3021
3261
|
width: 1,
|
|
@@ -3050,7 +3290,7 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3050
3290
|
var _this = this;
|
|
3051
3291
|
var _item_composition;
|
|
3052
3292
|
var modelComponent = item.getComponent(effects.RendererComponent);
|
|
3053
|
-
|
|
3293
|
+
//@ts-expect-error
|
|
3054
3294
|
var ms = modelComponent.content.mriMeshs;
|
|
3055
3295
|
var engine = (_item_composition = item.composition) == null ? void 0 : _item_composition.renderer.engine;
|
|
3056
3296
|
effects.assertExist(engine);
|
|
@@ -3058,7 +3298,7 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3058
3298
|
this.targetItem = item;
|
|
3059
3299
|
this.wireframeMeshes = [];
|
|
3060
3300
|
ms.forEach(function(m) {
|
|
3061
|
-
var mesh = _this.
|
|
3301
|
+
var mesh = _this.wireframeMesh = createModeWireframe(engine, m, _this.color);
|
|
3062
3302
|
_this.wireframeMeshes.push(mesh);
|
|
3063
3303
|
meshesToAdd.push(mesh);
|
|
3064
3304
|
});
|
|
@@ -3086,10 +3326,10 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3086
3326
|
var gizmoItem = this.item;
|
|
3087
3327
|
var shape = {
|
|
3088
3328
|
shape: "Box",
|
|
3089
|
-
width:
|
|
3090
|
-
height:
|
|
3091
|
-
depth:
|
|
3092
|
-
center:
|
|
3329
|
+
width: this.size.width,
|
|
3330
|
+
height: this.size.height,
|
|
3331
|
+
depth: this.size.depth,
|
|
3332
|
+
center: this.size.center
|
|
3093
3333
|
};
|
|
3094
3334
|
var engine = (_gizmoItem_composition = gizmoItem.composition) == null ? void 0 : _gizmoItem_composition.renderer.engine;
|
|
3095
3335
|
effects.assertExist(engine);
|
|
@@ -3111,14 +3351,14 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3111
3351
|
var _gizmoItem_composition;
|
|
3112
3352
|
var gizmoItem = this.item;
|
|
3113
3353
|
var options = {
|
|
3114
|
-
size:
|
|
3354
|
+
size: this.size,
|
|
3115
3355
|
color: this.color,
|
|
3116
3356
|
renderMode: this.renderMode,
|
|
3117
3357
|
depthTest: this.depthTest
|
|
3118
3358
|
};
|
|
3119
3359
|
var engine = (_gizmoItem_composition = gizmoItem.composition) == null ? void 0 : _gizmoItem_composition.renderer.engine;
|
|
3120
3360
|
effects.assertExist(engine);
|
|
3121
|
-
var mesh = gizmoItem._content = createMeshFromSubType(engine, subType,
|
|
3361
|
+
var mesh = gizmoItem._content = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options);
|
|
3122
3362
|
this.targetItem = item;
|
|
3123
3363
|
meshesToAdd.push(mesh);
|
|
3124
3364
|
};
|
|
@@ -3132,13 +3372,13 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3132
3372
|
var _gizmoItem_composition;
|
|
3133
3373
|
var gizmoItem = this.item;
|
|
3134
3374
|
var options = {
|
|
3135
|
-
size:
|
|
3375
|
+
size: this.size,
|
|
3136
3376
|
renderMode: this.renderMode
|
|
3137
3377
|
};
|
|
3138
3378
|
var engine = (_gizmoItem_composition = gizmoItem.composition) == null ? void 0 : _gizmoItem_composition.renderer.engine;
|
|
3139
3379
|
effects.assertExist(engine);
|
|
3140
|
-
|
|
3141
|
-
for(var _iterator = _create_for_of_iterator_helper_loose(
|
|
3380
|
+
this.contents = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options);
|
|
3381
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(this.contents.keys()), _step; !(_step = _iterator()).done;){
|
|
3142
3382
|
var mesh = _step.value;
|
|
3143
3383
|
meshesToAdd.push(mesh);
|
|
3144
3384
|
}
|
|
@@ -3147,13 +3387,12 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3147
3387
|
_proto.fromData = function fromData(data) {
|
|
3148
3388
|
ItemBehaviour.prototype.fromData.call(this, data);
|
|
3149
3389
|
var item = this.item;
|
|
3150
|
-
var options = data;
|
|
3151
3390
|
item.duration = 999;
|
|
3152
|
-
var opt =
|
|
3153
|
-
|
|
3154
|
-
|
|
3391
|
+
var opt = data.options;
|
|
3392
|
+
this.target = opt.target;
|
|
3393
|
+
this.subType = opt.subType;
|
|
3155
3394
|
this.renderMode = opt.renderMode || this.getDefaultRenderMode();
|
|
3156
|
-
|
|
3395
|
+
this.size = opt.size || this.getDefaultSize();
|
|
3157
3396
|
this.depthTest = opt.depthTest;
|
|
3158
3397
|
var c = opt.color || [
|
|
3159
3398
|
255,
|
|
@@ -3165,279 +3404,15 @@ var GizmoComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
3165
3404
|
c[1] / 255,
|
|
3166
3405
|
c[2] / 255
|
|
3167
3406
|
];
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
item.transform = new effects.Transform(options.content.transform);
|
|
3407
|
+
if (data) {
|
|
3408
|
+
item.transform = new effects.Transform(data.transform);
|
|
3171
3409
|
}
|
|
3172
3410
|
};
|
|
3173
3411
|
return GizmoComponent;
|
|
3174
3412
|
}(effects.ItemBehaviour);
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
* 线条包围盒射线检测算法
|
|
3179
|
-
* @param out - 射线与包围盒交点位置
|
|
3180
|
-
* @param pointInCanvas - 归一化的画布交互点坐标
|
|
3181
|
-
* @param points - 线条包围盒两端点位置
|
|
3182
|
-
* @param radius - 线条包围盒辐射半径
|
|
3183
|
-
* @param camera - 相机对象
|
|
3184
|
-
* @returns 射线与包围盒交点位置 | undefined
|
|
3185
|
-
*/ function intersectRayLine(out, pointInCanvas, points, radius, worldMat4, camera) {
|
|
3186
|
-
// 构造一个辐射半径边缘的点 radiusPoint
|
|
3187
|
-
var up = new Vector3$1(worldMat4.elements[1], worldMat4.elements[5], worldMat4.elements[9]).normalize();
|
|
3188
|
-
var radiusPoint = up.clone().multiply(radius);
|
|
3189
|
-
radiusPoint.add(points[0]);
|
|
3190
|
-
// 计算 start、end、radius 在屏幕空间上的投影
|
|
3191
|
-
var mvpMat4 = camera.getModelViewProjection(new Matrix4(), worldMat4);
|
|
3192
|
-
var screenStart = mvpMat4.projectPoint(points[0], new Vector3$1());
|
|
3193
|
-
var screenEnd = mvpMat4.projectPoint(points[1], new Vector3$1());
|
|
3194
|
-
var screenRadiusPoint = mvpMat4.projectPoint(radiusPoint, new Vector3$1());
|
|
3195
|
-
var screenRadiusVector = screenRadiusPoint.clone().subtract(screenStart);
|
|
3196
|
-
var screenRadius = screenRadiusVector.length();
|
|
3197
|
-
// 计算屏幕交互点与线条的距离
|
|
3198
|
-
var _distanceOfPointAndLine = distanceOfPointAndLine(pointInCanvas, [
|
|
3199
|
-
screenStart.toVector2(),
|
|
3200
|
-
screenEnd.toVector2()
|
|
3201
|
-
]), distance = _distanceOfPointAndLine.distance, isInLine = _distanceOfPointAndLine.isInLine;
|
|
3202
|
-
if (distance <= screenRadius && isInLine) {
|
|
3203
|
-
// 计算交互点在线条上的投影并转换为世界坐标
|
|
3204
|
-
var screenPosition = projectionOfPointAndLine(pointInCanvas, [
|
|
3205
|
-
screenStart,
|
|
3206
|
-
screenEnd
|
|
3207
|
-
]);
|
|
3208
|
-
var inverseViewProjection = camera.getInverseViewProjectionMatrix();
|
|
3209
|
-
inverseViewProjection.projectPoint(screenPosition, out);
|
|
3210
|
-
return out;
|
|
3211
|
-
}
|
|
3212
|
-
}
|
|
3213
|
-
|
|
3214
|
-
effects.math.Vector2; var Vector3 = effects.math.Vector3; effects.math.Matrix4; effects.math.Ray; var Quaternion = effects.math.Quaternion;
|
|
3215
|
-
var BoundingType;
|
|
3216
|
-
(function(BoundingType) {
|
|
3217
|
-
BoundingType[BoundingType["box"] = 0] = "box";
|
|
3218
|
-
BoundingType[BoundingType["sphere"] = 1] = "sphere";
|
|
3219
|
-
BoundingType[BoundingType["triangle"] = 2] = "triangle";
|
|
3220
|
-
BoundingType[BoundingType["line"] = 3] = "line";
|
|
3221
|
-
})(BoundingType || (BoundingType = {}));
|
|
3222
|
-
/**
|
|
3223
|
-
*
|
|
3224
|
-
*/ var GizmoVFXItem = /*#__PURE__*/ function(VFXItem) {
|
|
3225
|
-
_inherits(GizmoVFXItem, VFXItem);
|
|
3226
|
-
function GizmoVFXItem(engine, props) {
|
|
3227
|
-
var _this;
|
|
3228
|
-
_this = VFXItem.call(this, engine, props) || this;
|
|
3229
|
-
_this.boundingMap = new Map();
|
|
3230
|
-
var gizmoComponent = _this.addComponent(GizmoComponent);
|
|
3231
|
-
if (props) {
|
|
3232
|
-
gizmoComponent.fromData(props);
|
|
3233
|
-
}
|
|
3234
|
-
return _this;
|
|
3235
|
-
}
|
|
3236
|
-
var _proto = GizmoVFXItem.prototype;
|
|
3237
|
-
/**
|
|
3238
|
-
* 射线检测算法
|
|
3239
|
-
* @returns 包含射线检测算法回调方法的参数
|
|
3240
|
-
*/ _proto.getHitTestParams = function getHitTestParams() {
|
|
3241
|
-
var boundingMap = this.boundingMap;
|
|
3242
|
-
if (boundingMap.size > 0) {
|
|
3243
|
-
var _this_getComponent;
|
|
3244
|
-
var boundingKeys = boundingMap.keys();
|
|
3245
|
-
var worldMat4;
|
|
3246
|
-
worldMat4 = this.transform.getWorldMatrix();
|
|
3247
|
-
var targetItem = (_this_getComponent = this.getComponent(GizmoComponent)) == null ? void 0 : _this_getComponent.targetItem;
|
|
3248
|
-
if (targetItem) {
|
|
3249
|
-
//const targetTransform = this.targetItem.transform.clone();
|
|
3250
|
-
var worldPos = new Vector3();
|
|
3251
|
-
var worldQuat = new Quaternion();
|
|
3252
|
-
var worldSca = new Vector3(1, 1, 1);
|
|
3253
|
-
targetItem.transform.assignWorldTRS(worldPos, worldQuat);
|
|
3254
|
-
var targetTransform = new effects.Transform({
|
|
3255
|
-
position: worldPos,
|
|
3256
|
-
quat: worldQuat,
|
|
3257
|
-
scale: worldSca,
|
|
3258
|
-
valid: true
|
|
3259
|
-
});
|
|
3260
|
-
// 移动\旋转\缩放gizmo去除近大远小
|
|
3261
|
-
if (this.subType === exports.GizmoSubType.rotation || this.subType === exports.GizmoSubType.scale || this.subType === exports.GizmoSubType.translation || this.subType === exports.GizmoSubType.camera || this.subType === exports.GizmoSubType.light) {
|
|
3262
|
-
var camera = this.composition.camera;
|
|
3263
|
-
var cameraPos = camera.position || [
|
|
3264
|
-
0,
|
|
3265
|
-
0,
|
|
3266
|
-
0
|
|
3267
|
-
];
|
|
3268
|
-
var itemPos = targetTransform.position;
|
|
3269
|
-
var newPos = moveToPointWidthFixDistance(cameraPos, itemPos);
|
|
3270
|
-
targetTransform.setPosition(newPos.x, newPos.y, newPos.z);
|
|
3271
|
-
worldMat4 = targetTransform.getWorldMatrix();
|
|
3272
|
-
} else {
|
|
3273
|
-
worldMat4 = targetTransform.getWorldMatrix();
|
|
3274
|
-
}
|
|
3275
|
-
}
|
|
3276
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
3277
|
-
var self = this;
|
|
3278
|
-
return {
|
|
3279
|
-
type: effects.HitTestType.custom,
|
|
3280
|
-
/**
|
|
3281
|
-
* 自定义射线检测算法
|
|
3282
|
-
* @param ray 射线参数
|
|
3283
|
-
* @param pointInCanvas 屏幕坐标
|
|
3284
|
-
* @returns
|
|
3285
|
-
*/ collect: function collect(ray, pointInCanvas) {
|
|
3286
|
-
var _loop = function() {
|
|
3287
|
-
var key = _step.value;
|
|
3288
|
-
var bounding = boundingMap.get(key);
|
|
3289
|
-
var center = new Vector3();
|
|
3290
|
-
var worldCenter = new Vector3();
|
|
3291
|
-
if ((bounding == null ? void 0 : bounding.type) === 0 || (bounding == null ? void 0 : bounding.type) === 1) {
|
|
3292
|
-
if (bounding == null ? void 0 : bounding.center) {
|
|
3293
|
-
center.copyFrom(bounding == null ? void 0 : bounding.center);
|
|
3294
|
-
}
|
|
3295
|
-
worldMat4.projectPoint(center, worldCenter);
|
|
3296
|
-
}
|
|
3297
|
-
var position = void 0;
|
|
3298
|
-
switch(bounding == null ? void 0 : bounding.type){
|
|
3299
|
-
case 0:
|
|
3300
|
-
{
|
|
3301
|
-
var boxHalfSize = bounding.size.clone().multiply(0.5);
|
|
3302
|
-
var boxMax = center.clone().add(boxHalfSize);
|
|
3303
|
-
var boxMin = center.clone().subtract(boxHalfSize);
|
|
3304
|
-
position = ray.intersectBox({
|
|
3305
|
-
min: boxMin,
|
|
3306
|
-
max: boxMax
|
|
3307
|
-
}, new Vector3());
|
|
3308
|
-
}
|
|
3309
|
-
break;
|
|
3310
|
-
case 1:
|
|
3311
|
-
// viewHelper 使用了正交投影,使用屏幕投影点计算
|
|
3312
|
-
if (self.subType === exports.GizmoSubType.viewHelper) {
|
|
3313
|
-
// 计算正交投影矩阵
|
|
3314
|
-
var viewMat4 = self.composition.camera.getViewMatrix();
|
|
3315
|
-
var fov = 30; // 指定fov角度
|
|
3316
|
-
var screenWidth = self.composition.renderer.getWidth();
|
|
3317
|
-
var screenHeight = self.composition.renderer.getHeight();
|
|
3318
|
-
var distance = 16; // 指定物体与相机的距离
|
|
3319
|
-
var width = 2 * Math.tan(fov * Math.PI / 360) * distance;
|
|
3320
|
-
var aspect = screenWidth / screenHeight;
|
|
3321
|
-
var height = width / aspect;
|
|
3322
|
-
var proMat4 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);
|
|
3323
|
-
// 将包围盒挂到相机的 transform 上
|
|
3324
|
-
var cameraModelMat4 = self.composition.camera.getInverseViewMatrix();
|
|
3325
|
-
var localTransform = new effects.Transform({
|
|
3326
|
-
valid: true
|
|
3327
|
-
});
|
|
3328
|
-
localTransform.cloneFromMatrix(worldMat4);
|
|
3329
|
-
var pos = localTransform.position;
|
|
3330
|
-
var padding = self.size.padding || 1; // 指定viewHelper与屏幕右上角的边距
|
|
3331
|
-
localTransform.setPosition(pos.x + width / 2 - padding, pos.y + height / 2 - padding, pos.z);
|
|
3332
|
-
var localMat4 = localTransform.getWorldMatrix();
|
|
3333
|
-
var modelMat4 = cameraModelMat4.clone().multiply(localMat4);
|
|
3334
|
-
modelMat4.projectPoint(center, worldCenter);
|
|
3335
|
-
// 包围球中心点正交投影到屏幕上
|
|
3336
|
-
var vpMat4 = proMat4.clone().multiply(viewMat4);
|
|
3337
|
-
var mvpMat4 = vpMat4.clone().multiply(modelMat4);
|
|
3338
|
-
var screenCenter = mvpMat4.projectPoint(center, new Vector3());
|
|
3339
|
-
// const screenCenterX = screenCenter.x;
|
|
3340
|
-
// const screenCenterY = screenCenter.y;
|
|
3341
|
-
// 包围球上的点正交投影到屏幕上
|
|
3342
|
-
var radius = bounding.radius;
|
|
3343
|
-
var up = new Vector3(localMat4.elements[1], localMat4.elements[5], localMat4.elements[9]).normalize();
|
|
3344
|
-
var point = up.clone().multiply(radius);
|
|
3345
|
-
point.add(center);
|
|
3346
|
-
var screenPoint = mvpMat4.projectPoint(point, new Vector3());
|
|
3347
|
-
// const screenPointX = screenPoint.x;
|
|
3348
|
-
// const screenPointY = screenPoint.y;
|
|
3349
|
-
// 计算正交投影到屏幕上的包围球的半径
|
|
3350
|
-
var screenCenter2 = screenCenter.toVector2();
|
|
3351
|
-
var screenPoint2 = screenPoint.toVector2();
|
|
3352
|
-
var screenRadius = screenCenter2.distance(screenPoint2);
|
|
3353
|
-
if (pointInCanvas.distance(screenCenter2) < screenRadius * 1.2) {
|
|
3354
|
-
position = worldCenter;
|
|
3355
|
-
}
|
|
3356
|
-
} else {
|
|
3357
|
-
position = ray.intersectSphere({
|
|
3358
|
-
center: worldCenter,
|
|
3359
|
-
radius: bounding.radius
|
|
3360
|
-
}, new Vector3());
|
|
3361
|
-
}
|
|
3362
|
-
break;
|
|
3363
|
-
case 2:
|
|
3364
|
-
{
|
|
3365
|
-
var triangles = bounding.triangles, backfaceCulling = bounding.backfaceCulling;
|
|
3366
|
-
var tmpPositions = [];
|
|
3367
|
-
var tmpPosition = void 0;
|
|
3368
|
-
for(var j = 0; j < triangles.length; j++){
|
|
3369
|
-
var triangle = triangles[j];
|
|
3370
|
-
var worldTriangle = {
|
|
3371
|
-
p0: worldMat4.projectPoint(triangle.p0, new Vector3()),
|
|
3372
|
-
p1: worldMat4.projectPoint(triangle.p1, new Vector3()),
|
|
3373
|
-
p2: worldMat4.projectPoint(triangle.p2, new Vector3())
|
|
3374
|
-
};
|
|
3375
|
-
tmpPosition = ray.intersectTriangle(worldTriangle, new Vector3(), backfaceCulling);
|
|
3376
|
-
if (tmpPosition) {
|
|
3377
|
-
tmpPositions.push(tmpPosition);
|
|
3378
|
-
}
|
|
3379
|
-
}
|
|
3380
|
-
// 仅保存距离相机最近的点
|
|
3381
|
-
if (tmpPositions.length > 0) {
|
|
3382
|
-
var lastDistance = void 0;
|
|
3383
|
-
tmpPositions.forEach(function(item) {
|
|
3384
|
-
var distance = ray.origin.distanceSquared(item);
|
|
3385
|
-
if (!lastDistance || distance < lastDistance) {
|
|
3386
|
-
lastDistance = distance;
|
|
3387
|
-
position = item;
|
|
3388
|
-
}
|
|
3389
|
-
});
|
|
3390
|
-
}
|
|
3391
|
-
break;
|
|
3392
|
-
}
|
|
3393
|
-
case 3:
|
|
3394
|
-
{
|
|
3395
|
-
var points = bounding.points, width1 = bounding.width;
|
|
3396
|
-
position = intersectRayLine(new Vector3(), pointInCanvas, points, width1 / 2, worldMat4, self.composition.camera);
|
|
3397
|
-
break;
|
|
3398
|
-
}
|
|
3399
|
-
}
|
|
3400
|
-
if (position) {
|
|
3401
|
-
hitPositions.push(position);
|
|
3402
|
-
// 缓存距离相机最近的 BoundingKey
|
|
3403
|
-
if (self.hitBounding) {
|
|
3404
|
-
var distance1 = ray.origin.distanceSquared(position);
|
|
3405
|
-
var lastDistance1 = ray.origin.distanceSquared(self.hitBounding.position);
|
|
3406
|
-
if (distance1 < lastDistance1) {
|
|
3407
|
-
self.hitBounding.key = key;
|
|
3408
|
-
self.hitBounding.position = position;
|
|
3409
|
-
}
|
|
3410
|
-
} else {
|
|
3411
|
-
self.hitBounding = {
|
|
3412
|
-
key: key,
|
|
3413
|
-
position: position
|
|
3414
|
-
};
|
|
3415
|
-
}
|
|
3416
|
-
}
|
|
3417
|
-
};
|
|
3418
|
-
var hitPositions = [];
|
|
3419
|
-
self.hitBounding = undefined;
|
|
3420
|
-
for(var _iterator = _create_for_of_iterator_helper_loose(boundingKeys), _step; !(_step = _iterator()).done;)_loop();
|
|
3421
|
-
if (hitPositions.length === 0) {
|
|
3422
|
-
self.hitBounding = undefined;
|
|
3423
|
-
}
|
|
3424
|
-
return hitPositions;
|
|
3425
|
-
},
|
|
3426
|
-
behavior: effects.spec.InteractBehavior.NOTIFY
|
|
3427
|
-
};
|
|
3428
|
-
}
|
|
3429
|
-
};
|
|
3430
|
-
_create_class(GizmoVFXItem, [
|
|
3431
|
-
{
|
|
3432
|
-
key: "content",
|
|
3433
|
-
get: function get() {
|
|
3434
|
-
return this._content;
|
|
3435
|
-
},
|
|
3436
|
-
set: function set(content) {}
|
|
3437
|
-
}
|
|
3438
|
-
]);
|
|
3439
|
-
return GizmoVFXItem;
|
|
3440
|
-
}(effects.VFXItem);
|
|
3413
|
+
exports.GizmoComponent = __decorate([
|
|
3414
|
+
effects.effectsClass("GizmoComponent")
|
|
3415
|
+
], exports.GizmoComponent);
|
|
3441
3416
|
|
|
3442
3417
|
var editorRenderPassName = "editor-gizmo";
|
|
3443
3418
|
var frontRenderPassName = "front-gizmo";
|
|
@@ -3467,11 +3442,12 @@ var EditorGizmoPlugin = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
3467
3442
|
var targetMap = {};
|
|
3468
3443
|
for(var i = 0; i < items.length; i++){
|
|
3469
3444
|
var item = items[i];
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3445
|
+
var gizmoComponent = item.getComponent(exports.GizmoComponent);
|
|
3446
|
+
if (gizmoComponent) {
|
|
3447
|
+
if (!targetMap[gizmoComponent.target]) {
|
|
3448
|
+
targetMap[gizmoComponent.target] = [];
|
|
3473
3449
|
}
|
|
3474
|
-
targetMap[
|
|
3450
|
+
targetMap[gizmoComponent.target].push(item);
|
|
3475
3451
|
}
|
|
3476
3452
|
}
|
|
3477
3453
|
composition.loaderData.gizmoTarget = targetMap;
|
|
@@ -3543,16 +3519,17 @@ var EditorGizmoPlugin = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
3543
3519
|
};
|
|
3544
3520
|
_proto.removeGizmoItem = function removeGizmoItem(composition, gizmoVFXItem) {
|
|
3545
3521
|
var _this = this;
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3522
|
+
var gizmoMesh = gizmoVFXItem.content;
|
|
3523
|
+
if (gizmoMesh && !gizmoMesh.isDestroyed) {
|
|
3524
|
+
gizmoMesh.dispose();
|
|
3525
|
+
if (gizmoMesh.name === exports.GeometryType.FloorGrid.toString() || gizmoMesh.name === "Box") {
|
|
3526
|
+
this.getFrontRenderPass(composition.renderFrame).removeMesh(gizmoMesh);
|
|
3550
3527
|
} else {
|
|
3551
|
-
this.getEditorRenderPass(composition.renderFrame).removeMesh(
|
|
3528
|
+
this.getEditorRenderPass(composition.renderFrame).removeMesh(gizmoMesh);
|
|
3552
3529
|
}
|
|
3553
3530
|
}
|
|
3554
|
-
if (gizmoVFXItem.contents) {
|
|
3555
|
-
for(var _iterator = _create_for_of_iterator_helper_loose(gizmoVFXItem.contents), _step; !(_step = _iterator()).done;){
|
|
3531
|
+
if (gizmoVFXItem.getComponent(exports.GizmoComponent).contents) {
|
|
3532
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(gizmoVFXItem.getComponent(exports.GizmoComponent).contents), _step; !(_step = _iterator()).done;){
|
|
3556
3533
|
var _step_value = _step.value, mesh = _step_value[0];
|
|
3557
3534
|
if (!mesh.isDestroyed) {
|
|
3558
3535
|
mesh.dispose();
|
|
@@ -3564,7 +3541,7 @@ var EditorGizmoPlugin = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
3564
3541
|
}
|
|
3565
3542
|
}
|
|
3566
3543
|
}
|
|
3567
|
-
var gizmoComponent = gizmoVFXItem.getComponent(GizmoComponent);
|
|
3544
|
+
var gizmoComponent = gizmoVFXItem.getComponent(exports.GizmoComponent);
|
|
3568
3545
|
if (gizmoComponent && gizmoComponent.wireframeMeshes.length > 0) {
|
|
3569
3546
|
gizmoComponent.wireframeMeshes.forEach(function(mesh) {
|
|
3570
3547
|
if (!mesh.isDestroyed) {
|
|
@@ -3573,7 +3550,7 @@ var EditorGizmoPlugin = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
3573
3550
|
}
|
|
3574
3551
|
});
|
|
3575
3552
|
} else {
|
|
3576
|
-
var wireframeMesh = gizmoVFXItem.wireframeMesh;
|
|
3553
|
+
var wireframeMesh = gizmoVFXItem.getComponent(exports.GizmoComponent).wireframeMesh;
|
|
3577
3554
|
if (wireframeMesh && !wireframeMesh.isDestroyed) {
|
|
3578
3555
|
destroyWireframeMesh(wireframeMesh);
|
|
3579
3556
|
this.getEditorRenderPass(composition.renderFrame).removeMesh(wireframeMesh);
|
|
@@ -3703,12 +3680,14 @@ var EditorGizmoPlugin = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
3703
3680
|
return EditorGizmoPlugin;
|
|
3704
3681
|
}(effects.AbstractPlugin);
|
|
3705
3682
|
|
|
3706
|
-
effects.registerPlugin("editor-gizmo", EditorGizmoPlugin,
|
|
3707
|
-
var version = "2.0.0-alpha.
|
|
3683
|
+
effects.registerPlugin("editor-gizmo", EditorGizmoPlugin, effects.VFXItem);
|
|
3684
|
+
var version = "2.0.0-alpha.13";
|
|
3708
3685
|
effects.logger.info("plugin editor gizmo version: " + version);
|
|
3686
|
+
if (version !== effects.version) {
|
|
3687
|
+
console.error("注意:请统一 Editor Gizmo 插件与 Player 版本,不统一的版本混用会有不可预知的后果!", "\nAttention: Please ensure the Editor Gizmo plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!");
|
|
3688
|
+
}
|
|
3709
3689
|
|
|
3710
3690
|
exports.DirectionLightData = DirectionLightData;
|
|
3711
|
-
exports.GizmoVFXItem = GizmoVFXItem;
|
|
3712
3691
|
exports.createGeometry = createGeometry;
|
|
3713
3692
|
exports.version = version;
|
|
3714
3693
|
//# sourceMappingURL=index.js.map
|