@galacean/effects-plugin-editor-gizmo 2.0.0-alpha.2 → 2.0.0-alpha.21

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 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/define.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_extends.js","../src/wireframe.ts","../src/constants.ts","../src/util.ts","../src/geometry/geometry.ts","../src/geometry/sphere.ts","../src/geometry/box.ts","../src/geometry/cylinder.ts","../src/geometry/cone.ts","../src/geometry/torus.ts","../src/geometry/plane.ts","../src/geometry/frustum.ts","../src/geometry/direction-light.ts","../src/geometry/point-light.ts","../src/geometry/spot-light.ts","../src/geometry/floor-line-edge.ts","../src/geometry/index.ts","../src/gizmo-vfx-item.ts","../src/math-utils.ts","../src/mesh.ts","../src/raycast.ts","../src/shape.ts","../src/gizmo-component.ts","../src/gizmo-loader.ts","../src/index.ts"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nexport function _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","export function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _array_like_to_array } from \"./_array_like_to_array.js\";\n\nexport function _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nexport function _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","export function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import type { GeometryDrawMode, spec } from '@galacean/effects';\n\nexport interface GizmoVFXItemOptions {\n target: string,\n subType: GizmoSubType,\n renderMode?: GeometryDrawMode,\n type: 'editor-gizmo',\n color: spec.vec3,\n size?: number,\n depthTest?: boolean,\n}\n\nexport const GizmoVFXItemType = 'gizmo' as spec.ItemType;\n\n/**\n * Gizmo 类型\n */\nexport enum GizmoSubType {\n particleEmitter = 1,\n modelWireframe = 2,\n box,\n sphere,\n cylinder,\n cone,\n torus,\n sprite,\n plane,\n rotation,\n translation,\n scale,\n viewHelper,\n camera,\n frustum,\n light,\n directionLight,\n pointLight,\n spotLight,\n boundingBox,\n floorGrid,\n}\n","export function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import type { ShaderMacros, Geometry, GeometryDrawMode, Engine, GLEngine, spec } from '@galacean/effects';\nimport { GLSLVersion, glContext, GLGeometry, DestroyOptions, Material, Mesh, createShaderWithMacros, ShaderType, math } from '@galacean/effects';\n\nconst { Vector4 } = math;\n\nexport function createParticleWireframe (engine: Engine, mesh: Mesh, color: spec.vec3): Mesh {\n const geometry = new SharedGeometry(\n engine,\n {\n geometry: mesh.firstGeometry(),\n mode: glContext.LINES,\n index: {\n data: new Uint16Array(0),\n },\n name: 'testtest',\n });\n\n const { vertex, fragment, macros, name } = mesh.material.props.shader;\n const materialOptions = { ...mesh.material.props };\n const newMacros = [...(macros || [] as ShaderMacros), ['PREVIEW_BORDER', 1]] as ShaderMacros;\n const level = engine.gpuCapability.level;\n\n materialOptions.shader = {\n vertex: createGizmoShader(newMacros, vertex, ShaderType.vertex, level),\n fragment: createGizmoShader(newMacros, fragment, ShaderType.fragment, level),\n shared: true,\n name: name + '_wireframe',\n glslVersion: engine.gpuCapability.level === 2 ? GLSLVersion.GLSL3 : GLSLVersion.GLSL1,\n };\n const material = Material.create(engine, materialOptions);\n\n material.depthTest = mesh.material.depthTest;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh, Mesh.create(\n engine,\n {\n geometry,\n material,\n priority: 3000,\n name: materialOptions.shader.name,\n }), WireframeGeometryType.quad);\n}\n\nexport enum WireframeGeometryType {\n triangle,\n quad,\n}\n\nexport function destroyWireframeMesh (mesh: Mesh) {\n mesh.geometry?.dispose();\n mesh.dispose({ material: { textures: DestroyOptions.keep }, geometries: DestroyOptions.keep });\n}\n\nexport function updateWireframeMesh (originMesh: Mesh, wireframe: Mesh, type: WireframeGeometryType) {\n wireframe.material.cloneUniforms(originMesh.material);\n\n const geometry = originMesh.firstGeometry();\n const wireframeGeometry = wireframe.firstGeometry();\n\n if (type === WireframeGeometryType.triangle) {\n // 线框模式不绘制模型的时候,drawCount 为负数\n const drawCount = Math.abs(geometry.getDrawCount());\n\n if (drawCount !== 0) {\n if (drawCount !== wireframeGeometry.getDrawCount() / 2) {\n const indexData = geometry.getIndexData() as Uint16Array | undefined;\n const data = indexData ? getTriangleIndexData(indexData) : getTriangleIndexDataByCount(drawCount);\n\n wireframeGeometry.setIndexData(data);\n wireframeGeometry.setDrawCount(data.length);\n }\n }\n } else if (type === WireframeGeometryType.quad) {\n if (geometry.getDrawCount() / 6 !== wireframeGeometry.getDrawCount() / 8) {\n const data = getQuadIndexData(geometry.getDrawCount() / 6, geometry.getIndexData() as Uint16Array);\n\n wireframeGeometry.setIndexData(data);\n wireframeGeometry.setDrawCount(data.length);\n }\n }\n\n return wireframe;\n}\n\nfunction getQuadIndexData (faceCount: number, oid: Uint16Array): Uint16Array {\n const indexData = new Uint16Array(faceCount * 8);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 8;\n const base = i * 4;\n\n indexData[idx] = base;\n indexData[idx + 1] = 1 + base;\n indexData[idx + 2] = 1 + base;\n indexData[idx + 3] = 3 + base;\n indexData[idx + 4] = 3 + base;\n indexData[idx + 5] = 2 + base;\n indexData[idx + 6] = 2 + base;\n indexData[idx + 7] = base;\n }\n\n return indexData;\n}\n\nexport function createModeWireframe (engine: Engine, mesh: Mesh, color: spec.vec3): Mesh {\n const level = engine.gpuCapability.level;\n const geometry = new SharedGeometry(\n engine,\n {\n geometry: mesh.firstGeometry(),\n mode: glContext.LINES,\n index: {\n data: new Uint32Array(0),\n },\n });\n const { vertex, fragment, macros } = mesh.material.props.shader;\n const materialOptions = { ...mesh.material.props };\n\n const newMacros = [...(macros || [] as ShaderMacros), ['PREVIEW_BORDER', 1]] as ShaderMacros;\n\n materialOptions.shader = {\n vertex: createGizmoShader(newMacros, vertex, ShaderType.vertex, level),\n fragment: createGizmoShader(newMacros, fragment, ShaderType.fragment, level),\n shared: true,\n name: (mesh.name ?? 'unamedmesh') + '_wireframe',\n glslVersion: engine.gpuCapability.level === 2 ? GLSLVersion.GLSL3 : GLSLVersion.GLSL1,\n };\n\n const material = Material.create(engine, materialOptions);\n\n material.depthTest = mesh.material.depthTest;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh, Mesh.create(\n engine,\n {\n geometry,\n material,\n priority: 3000,\n name: materialOptions.shader.name,\n }), WireframeGeometryType.triangle);\n}\n\nfunction getTriangleIndexDataByCount (drawCount: number): Uint32Array {\n const faceCount = drawCount / 3;\n const indexData = new Uint32Array(faceCount * 6);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 6;\n const p0 = i * 3;\n const p1 = p0 + 1;\n const p2 = p0 + 2;\n\n indexData[idx] = p0;\n indexData[idx + 1] = p1;\n indexData[idx + 2] = p1;\n indexData[idx + 3] = p2;\n indexData[idx + 4] = p2;\n indexData[idx + 5] = p0;\n }\n\n return indexData;\n}\n\nfunction getTriangleIndexData (oid: Uint16Array): Uint32Array {\n const faceCount = oid.length / 3;\n const indexData = new Uint32Array(faceCount * 6);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 6;\n const base = i * 3;\n const p0 = oid[base];\n const p1 = oid[base + 1];\n const p2 = oid[base + 2];\n\n indexData[idx] = p0;\n indexData[idx + 1] = p1;\n indexData[idx + 2] = p1;\n indexData[idx + 3] = p2;\n indexData[idx + 4] = p2;\n indexData[idx + 5] = p0;\n }\n\n return indexData;\n}\n\nexport interface SharedGeometryOptions {\n name?: string,\n drawStart?: number,\n drawCount?: number,\n mode?: GeometryDrawMode,\n index?: { data: Uint8Array | Uint16Array | Uint32Array, releasable?: boolean },\n geometry: Geometry,\n}\n\nexport class SharedGeometry extends GLGeometry {\n private readonly source: GLGeometry;\n\n constructor (engine: Engine, options: SharedGeometryOptions) {\n super(engine, { attributes: {}, ...options });\n let indexData = options.index ? options.index.data : options.geometry.getIndexData();\n\n if (indexData) {\n //@ts-expect-error safe to assign\n indexData = new indexData.constructor(indexData) as Uint16Array;\n }\n this.indices = indexData;\n this.source = options.geometry as GLGeometry;\n this.drawCount = options.drawCount || 0;\n this.drawStart = options.drawStart || 0;\n this.mode = options.mode || 0;\n for (const name in this.source.attributes) {\n this.attributes[name] = { ...this.source.attributes[name] };\n }\n }\n\n override initialize () {\n if (!this.isInitialized) {\n const geometry = this.source;\n\n geometry.initialize();\n //this.indicesBuffer = this._source.indicesBuffer;\n this.buffers = this.source.buffers;\n this.bufferProps = this.source.bufferProps;\n //this.dirtyFlags = this._source.dirtyFlags;\n //this.vaos = this._source.vaos;\n //创建ibo\n if (this.indices) {\n this.indicesBuffer = this.createIndicesBuffer((this.engine as GLEngine).getGLPipelineContext(), this.indices);\n }\n this.flush();\n this.initialized = true;\n }\n }\n\n override getAttributeNames (): string[] {\n return this.source.getAttributeNames();\n }\n\n override flush () {\n this.source.flush();\n\n super.flush();\n }\n\n override dispose () {\n // from source geometry\n this.buffers = {};\n this.bufferProps = {};\n super.dispose();\n // @ts-expect-error\n this.source = null;\n }\n}\n\nfunction createGizmoShader (\n macros: ShaderMacros,\n shader: string,\n shaderType: ShaderType,\n level: number,\n) {\n const versionTag = /#version\\s+\\b\\d{3}\\b\\s*(es)?/;\n const shaderMatch = shader.match(versionTag);\n const newShader = shaderMatch ? shader.substring(shaderMatch[0].length) : shader;\n\n return createShaderWithMacros(macros, newShader, shaderType, level);\n}\n","import { glContext } from '@galacean/effects';\n\n// 坐标轴默认颜色\nexport const color = {\n xAxisColor: [216 / 255, 178 / 255, 76 / 255],\n yAxisColor: [38 / 255, 149 / 255, 235 / 255],\n zAxisColor: [134 / 255, 74 / 255, 245 / 255],\n};\nexport const renderMode = glContext.TRIANGLES;\n// 坐标轴默认图标\nexport const axisIconMap: Map<string, string> = new Map();\n\naxisIconMap.set(\n 'light', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'camera', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'posX', `data:image/png;base64,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\n RK5CYII=`\n);\naxisIconMap.set(\n 'posY', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'posZ', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'negX', `data:image/png;base64,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\n 5ErkJggg==`\n);\naxisIconMap.set(\n 'negY', `data:image/png;base64,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\n 5ErkJggg==`\n);\naxisIconMap.set(\n 'negZ', `data:image/png;base64,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`\n);\n","import { Texture, noop } from '@galacean/effects';\nimport type { Engine, math } from '@galacean/effects';\n\ntype Vector3 = math.Vector3;\n\n/**\n * 下载图片\n * @param imageUrl - 图片url\n * @returns 图片对象\n */\nexport async function createImage (imageUrl: string): Promise<HTMLImageElement> {\n const image = new Image();\n\n image.src = imageUrl;\n\n return new Promise<HTMLImageElement>((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n image.onerror = reject;\n });\n}\n\n/**\n * 创建 Texture 对象\n * @param engine - engine 对象\n * @param image - 图片对象\n * @returns 纹理\n */\nexport function createTexture (engine: Engine, image: HTMLImageElement, hookDestroy?: boolean): Texture {\n\n const texture = Texture.create(engine, { image });\n\n if (hookDestroy) {\n texture.dispose = noop;\n }\n\n return texture;\n}\n\n/**\n * 移动到距离目标点指定距离的位置\n * @param targetPos - 目标点\n * @param currentPos - 当前点\n * @returns 指定点\n */\nexport function moveToPointWidthFixDistance (targetPos: Vector3, currentPos: Vector3): Vector3 {\n const vecCameraItem = currentPos.clone().subtract(targetPos);\n\n const normalVecCameraItem = vecCameraItem.clone().normalize();\n const scalerVecCameraItem = normalVecCameraItem.clone().multiply(20);\n\n const vecScalerItem = vecCameraItem.clone().subtract(scalerVecCameraItem);\n const vecItemScaler = vecScalerItem.clone().multiply(-1);\n\n return currentPos.clone().add(vecItemScaler);\n}\n","/**\n * 基础几何数据[抽象类,不可以直接用来初始化]\n */\nexport abstract class GeometryData {\n points: number[] = [];\n uvs: number[] = [];\n normals: number[] = [];\n indices: number[] = [];\n\n /**\n * 构件 XY 平面圆(圆心为(0, 0, z))\n * @param radius - 圆半径\n * @param z - z 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createXYPlaneCircle (\n radius: number,\n z: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const x = radius * Math.cos(theta);\n const y = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n\n /**\n * 构件 XZ 平面圆(圆心为(0, y, 0))\n * @param radius - 圆半径\n * @param y - y 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createXZPlaneCircle (\n radius: number,\n y: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const x = radius * Math.cos(theta);\n const z = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n\n /**\n * 构件 YZ 平面圆(圆心为(x, 0, 0))\n * @param radius - 圆半径\n * @param x - x 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createYZPlaneCircle (\n radius: number,\n x: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const z = radius * Math.cos(theta);\n const y = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class SphereGeometryData extends GeometryData {\n /**\n *\n * @param radius\n * @param widthSegments\n * @param heightSegments\n * @param phiStart\n * @param phiLength\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radius = 1,\n widthSegments = 8,\n heightSegments = 6,\n phiStart = 0,\n phiLength = Math.PI * 2,\n thetaStart = 0,\n thetaLength = Math.PI,\n ) {\n super();\n\n // 限制至少需要分为六块以保持形状\n widthSegments = Math.max(3, Math.floor(widthSegments));\n heightSegments = Math.max(2, Math.floor(heightSegments));\n\n const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n const grid = [];\n let index = 0;\n\n for (let iy = 0; iy <= heightSegments; iy++) {\n const verticesRow = [];\n const v = iy / heightSegments;\n\n let uOffset = 0;\n\n if (iy == 0 && thetaStart == 0) {\n uOffset = 0.5 / widthSegments;\n } else if (iy == heightSegments && thetaEnd == Math.PI) {\n uOffset = - 0.5 / widthSegments;\n }\n\n for (let ix = 0; ix <= widthSegments; ix++) {\n const u = ix / widthSegments;\n\n // point\n const x = - radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n const y = radius * Math.cos(thetaStart + v * thetaLength);\n const z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n\n this.points.push(x, y, z);\n\n // normal\n const normal = new Vector3(x, y, z).normalize();\n\n this.normals.push(...normal.toArray());\n\n // uv\n this.uvs.push(u + uOffset, 1 - v);\n\n verticesRow.push(index++);\n }\n\n grid.push(verticesRow);\n }\n\n // indices\n for (let iy = 0; iy < heightSegments; iy++) {\n for (let ix = 0; ix < widthSegments; ix++) {\n const a = grid[iy][ix + 1];\n const b = grid[iy][ix];\n const c = grid[iy + 1][ix];\n const d = grid[iy + 1][ix + 1];\n\n if (iy !== 0 || thetaStart > 0) { this.indices.push(a, b, d); }\n if (iy !== heightSegments - 1 || thetaEnd < Math.PI) { this.indices.push(b, c, d); }\n }\n }\n }\n}\n","import type { spec } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\n// 面造型未单独抽离, 整个包围盒只接受一个材质\nexport class BoxGeometryData extends GeometryData {\n /**\n *\n * @param width\n * @param height\n * @param depth\n */\n constructor (width = 1, height = 1, depth = 1) {\n super();\n\n let numberOfVertices = 0;\n\n buildPlane(2, 1, 0, - 1, - 1, depth, height, width, this.points, this.uvs, this.normals, this.indices); // px\n buildPlane(2, 1, 0, 1, - 1, depth, height, - width, this.points, this.uvs, this.normals, this.indices); // nx\n buildPlane(0, 2, 1, 1, 1, width, depth, height, this.points, this.uvs, this.normals, this.indices); // py\n buildPlane(0, 2, 1, 1, - 1, width, depth, - height, this.points, this.uvs, this.normals, this.indices); // ny\n buildPlane(0, 1, 2, 1, - 1, width, height, depth, this.points, this.uvs, this.normals, this.indices); // pz\n buildPlane(0, 1, 2, - 1, - 1, width, height, - depth, this.points, this.uvs, this.normals, this.indices); // nz\n\n function buildPlane (u: number, v: number, w: number, uDir: number,\n vDir: number, width: number, height: number, depth: number,\n points: number[], uvs: number[], normals: number[], indices: number[]) {\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n const depthHalf = depth / 2;\n const point: spec.vec3 = [0, 0, 0];\n let vertexCounter = 0;\n\n for (let iy = 0; iy < 2; iy++) {\n const y = iy * height - heightHalf;\n\n for (let ix = 0; ix < 2; ix++) {\n const x = ix * width - widthHalf;\n\n point[u] = x * uDir;\n point[v] = y * vDir;\n point[w] = depthHalf;\n\n points.push(...point);\n\n point[u] = 0;\n point[v] = 0;\n point[w] = depth > 0 ? 1 : - 1;\n\n normals.push(...point);\n\n uvs.push(ix);\n uvs.push(1 - iy);\n\n vertexCounter += 1;\n }\n }\n\n for (let iy = 0; iy < 1; iy++) {\n for (let ix = 0; ix < 1; ix++) {\n const a = numberOfVertices + ix + 2 * iy;\n const b = numberOfVertices + ix + 2 * (iy + 1);\n const c = numberOfVertices + (ix + 1) + 2 * (iy + 1);\n const d = numberOfVertices + (ix + 1) + 2 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n numberOfVertices += vertexCounter;\n }\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class CylinderGeometryData extends GeometryData {\n /**\n *\n * @param radiusTop\n * @param radiusBottom\n * @param height\n * @param radialSegments\n * @param heightSegments\n * @param openEnded\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radiusTop = 1,\n radiusBottom = 1,\n height = 1,\n radialSegments = 8,\n heightSegments = 1,\n openEnded = false,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n radialSegments = Math.floor(radialSegments);\n heightSegments = Math.floor(heightSegments);\n\n let index = 0;\n const indexArray: number[][] = [];\n const halfHeight = height / 2;\n\n generateTorso(this.points, this.uvs, this.normals, this.indices);\n\n if (openEnded === false) {\n if (radiusTop > 0) { generateCap(true, this.points, this.uvs, this.normals, this.indices); }\n if (radiusBottom > 0) { generateCap(false, this.points, this.uvs, this.normals, this.indices); }\n }\n\n function generateTorso (points: number[], uvs: number[], normals: number[], indices: number[]) {\n // this will be used to calculate the normal\n const slope = (radiusBottom - radiusTop) / height;\n\n for (let y = 0; y <= heightSegments; y++) {\n const indexRow = [];\n const v = y / heightSegments;\n\n const radius = v * (radiusBottom - radiusTop) + radiusTop;\n\n for (let x = 0; x <= radialSegments; x++) {\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n const sinTheta = Math.sin(theta);\n const cosTheta = Math.cos(theta);\n\n const px = radius * sinTheta;\n const py = - v * height + halfHeight;\n const pz = radius * cosTheta;\n\n points.push(px, py, pz);\n\n const normal = new Vector3(sinTheta, slope, cosTheta).normalize();\n\n normals.push(...normal.toArray());\n\n uvs.push(u, 1 - v);\n\n indexRow.push(index++);\n }\n indexArray.push(indexRow);\n }\n\n for (let x = 0; x < radialSegments; x++) {\n for (let y = 0; y < heightSegments; y++) {\n const a = indexArray[y][x];\n const b = indexArray[y + 1][x];\n const c = indexArray[y + 1][x + 1];\n const d = indexArray[y][x + 1];\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n }\n\n function generateCap (top: boolean, points: number[], uvs: number[], normals: number[], indices: number[]) {\n const centerIndexStart = index;\n\n const radius = (top === true) ? radiusTop : radiusBottom;\n const sign = (top === true) ? 1 : - 1;\n\n for (let x = 1; x <= radialSegments; x++) {\n points.push(0, halfHeight * sign, 0);\n normals.push(0, sign, 0);\n uvs.push(0.5, 0.5);\n\n index++;\n }\n\n const centerIndexEnd = index;\n\n for (let x = 0; x <= radialSegments; x++) {\n\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n const px = radius * sinTheta;\n const py = halfHeight * sign;\n const pz = radius * cosTheta;\n\n points.push(px, py, pz);\n\n normals.push(0, sign, 0);\n\n const uvU = (cosTheta * 0.5) + 0.5;\n const uvV = (sinTheta * 0.5 * sign) + 0.5;\n\n uvs.push(uvU, uvV);\n\n index++;\n }\n\n for (let x = 0; x < radialSegments; x++) {\n const c = centerIndexStart + x;\n const i = centerIndexEnd + x;\n\n if (top === true) {\n indices.push(i, i + 1, c);\n } else {\n indices.push(i + 1, i, c);\n }\n }\n }\n }\n}\n","import { CylinderGeometryData } from './cylinder';\n\n/**\n *\n */\nexport class ConeGeometryData extends CylinderGeometryData {\n /**\n *\n * @param radius\n * @param height\n * @param radialSegments\n * @param heightSegments\n * @param openEnded\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radius = 1,\n height = 1,\n radialSegments = 8,\n heightSegments = 1,\n openEnded = false,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class TorusGeometryData extends GeometryData {\n /**\n *\n * @param radius\n * @param tube\n * @param radialSegments\n * @param tubularSegments\n * @param arc\n */\n constructor (\n radius = 1,\n tube = 0.4,\n radialSegments = 64,\n tubularSegments = 64,\n arc = Math.PI * 2,\n ) {\n super();\n\n radialSegments = Math.floor(radialSegments);\n tubularSegments = Math.floor(tubularSegments);\n\n for (let j = 0; j <= radialSegments; j++) {\n for (let i = 0; i <= tubularSegments; i++) {\n\n const u = i / tubularSegments * arc;\n const v = j / radialSegments * Math.PI * 2;\n\n const px = (radius + tube * Math.cos(v)) * Math.cos(u);\n const py = (radius + tube * Math.cos(v)) * Math.sin(u);\n const pz = tube * Math.sin(v);\n\n this.points.push(px, py, pz);\n\n const cx = radius * Math.cos(u);\n const cy = radius * Math.sin(u);\n const p = new Vector3(px, py, pz);\n const c = new Vector3(cx, cy, 0);\n const normal = p.subtract(c).normalize();\n\n this.normals.push(...normal.toArray());\n\n this.uvs.push(i / tubularSegments);\n this.uvs.push(j / radialSegments);\n }\n }\n\n for (let j = 1; j <= radialSegments; j++) {\n for (let i = 1; i <= tubularSegments; i++) {\n const a = (tubularSegments + 1) * j + i - 1;\n const b = (tubularSegments + 1) * (j - 1) + i - 1;\n const c = (tubularSegments + 1) * (j - 1) + i;\n const d = (tubularSegments + 1) * j + i;\n\n this.indices.push(a, b, d);\n this.indices.push(b, c, d);\n }\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n *\n */\nexport class PlaneGeometryData extends GeometryData {\n /**\n *\n * @param width\n * @param height\n * @param widthSegments\n * @param heightSegments\n */\n constructor (\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n ) {\n super();\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n\n this.points.push(x, - y, 0);\n this.normals.push(0, 0, 1);\n this.uvs.push(ix / gridX);\n this.uvs.push(1 - (iy / gridY));\n }\n }\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = (ix + 1) + gridX1 * (iy + 1);\n const d = (ix + 1) + gridX1 * iy;\n\n this.indices.push(a, b, d);\n this.indices.push(b, c, d);\n }\n }\n }\n}\n","import type { spec } from '@galacean/effects';\nimport { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Euler, Vector3, Matrix4 } = math;\n\n/**\n *\n */\nexport class FrustumGeometryData extends GeometryData {\n /**\n *\n * @param position\n * @param rotation\n * @param fov\n * @param aspect\n * @param near\n * @param far\n */\n constructor (\n position: spec.vec3,\n rotation: spec.vec3,\n fov: number,\n aspect: number,\n near: number,\n far: number,\n ) {\n super();\n\n const fovY = fov / 180 * Math.PI;\n const ratio = aspect;\n const halfY = far * Math.tan(fovY / 2);\n const halfX = halfY * ratio;\n const point1 = new Vector3(halfX, halfY, far);\n const point2 = new Vector3(-halfX, halfY, far);\n const point3 = new Vector3(-halfX, -halfY, far);\n const point4 = new Vector3(halfX, -halfY, far);\n const matrix = Euler.fromArray(rotation).toMatrix4(new Matrix4());\n const result1 = matrix.transformPoint(point1).add(position);\n const result2 = matrix.transformPoint(point2).add(position);\n const result3 = matrix.transformPoint(point3).add(position);\n const result4 = matrix.transformPoint(point4).add(position);\n\n this.points.push(\n ...position,\n ...result1.toArray(), ...result2.toArray(),\n ...result3.toArray(), ...result4.toArray()\n );\n this.indices.push(0, 1, 0, 2, 0, 3, 0, 4, 1, 2, 2, 3, 3, 4, 4, 1);\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 方向光造型数据\n * lines\n */\nexport class DirectionLightData extends GeometryData {\n /**\n * 构造函数\n * @param radius - 圆半径\n * @param length - 光线长度\n * @param segments - 圆精度\n * @param linesNumber - 光线数量\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n radius = 1,\n length = 2,\n segments = 64,\n linesNumber = 8,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n\n this.createXYPlaneCircle(radius, 0, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n const start = segments % linesNumber / 2;\n const step = segments / linesNumber;\n\n for (let i = 0; i < linesNumber; i++) {\n const index = start + i * step;\n const x = this.points[3 * index];\n const y = this.points[3 * index + 1];\n const z = -length;\n\n this.points.push(x, y, z);\n this.indices.push(index, segments + i);\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 点光源造型数据\n * lines\n */\nexport class PointLightData extends GeometryData {\n /**\n * 构造函数\n * @param range - 光照范围\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n range = 10,\n segments = 64,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n this.createXYPlaneCircle(range, 0, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n this.createXZPlaneCircle(range, 0, segments, thetaStart, thetaLength, segments, this.points, this.indices);\n this.createYZPlaneCircle(range, 0, segments, thetaStart, thetaLength, 2 * segments, this.points, this.indices);\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 聚光灯造型数据\n * lines\n */\nexport class SpotLightData extends GeometryData {\n /**\n * 构造函数\n * @param range - 光线范围\n * @param spotAngle - 光线范围[角度]\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n range = 10,\n spotAngle = 30,\n segments = 64,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n\n const angle = spotAngle / 2 / 180 * Math.PI;\n const radius = range * Math.tan(angle);\n\n this.createXYPlaneCircle(radius, -range, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n this.points.push(0, 0, 0);\n const step = segments / 4;\n const start = segments % 4 / 2;\n\n for (let i = 0; i < 4; i++) {\n this.indices.push(segments, start + i * step);\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 地板线边框造型数据\n * lines\n */\nexport class FloorLineEdgeGeometryData extends GeometryData {\n /**\n *\n * @param sideLength\n * @param parts\n */\n constructor (sideLength = 12, parts = 6) {\n super();\n\n let index = 0;\n\n const z = 0;\n const end = sideLength / 2;\n const start = -sideLength / 2;\n\n for (let i = 0; i <= parts; i++) {\n const v = start + i * sideLength / parts;\n\n this.points.push(v, start, z, v, end, z, start, v, z, end, v, z);\n this.indices.push(index, index + 1, index + 2, index + 3);\n index += 4;\n }\n }\n}\n","import type { Engine, GeometryDrawMode, spec } from '@galacean/effects';\nimport { Geometry } from '@galacean/effects';\nimport { SphereGeometryData } from './sphere';\nimport { BoxGeometryData } from './box';\nimport type { GeometryData } from './geometry';\nimport { CylinderGeometryData } from './cylinder';\nimport { ConeGeometryData } from './cone';\nimport { TorusGeometryData } from './torus';\nimport { PlaneGeometryData } from './plane';\nimport { FrustumGeometryData } from './frustum';\nimport { DirectionLightData } from './direction-light';\nimport { PointLightData } from './point-light';\nimport { SpotLightData } from './spot-light';\nimport { FloorLineEdgeGeometryData } from './floor-line-edge';\n\n/**\n * 几何体类型\n */\nexport enum GeometryType {\n Box,\n Sphere,\n Cylinder,\n Cone,\n Torus,\n Frustum,\n Sprite,\n Plane,\n DirectionLight,\n SpotLight,\n PointLight,\n FloorGrid,\n}\n\n/**\n * 几何体参数\n */\nexport interface MeshOption {\n size: any,\n color?: spec.vec3,\n renderMode: GeometryDrawMode,\n depthTest?: boolean,\n name?: string,\n alpha?: number,\n}\n\n/**\n * 合并多个几何体数据\n * @param geometries - 几何体数据数组\n * @returns 合并后的几何体数据\n */\n// export function combineGeometries (geometries: GeometryData[]): GeometryData {\n// const points: number[] = [];\n// const indices: number[] = [];\n// const uvs: number[] = [];\n// const normals: number[] = [];\n\n// for (let i = 0, indicesBase = 0; i < geometries.length; i++) {\n// const geometryData = geometries[i];\n// if (geometryData) {\n// points.push(...geometryData.points);\n// uvs.push(...geometryData.uvs);\n// normals.push(...geometryData.normals);\n// geometryData.indices.forEach(index => indices.push(index + indicesBase));\n// indicesBase += geometryData.points.length;\n// }\n// }\n\n// return {\n// points,\n// indices,\n// uvs,\n// normals,\n// };\n// }\n\n/**\n * 创建几何体对象\n * @param type - 几何体类型\n * @param size - 几何体尺寸\n * @param renderMode - 绘制模式:`gl.TRIANGLES`、`gl.LINES`\n * @returns\n */\nexport function createGeometry (engine: Engine, type: GeometryType, size: Record<string, any>, renderMode?: GeometryDrawMode): Geometry {\n let geometryData: GeometryData;\n\n switch (type) {\n case GeometryType.Sphere:\n geometryData = new SphereGeometryData(size.radius, size.widthSegments, size.heightSegments);\n\n break;\n case GeometryType.Cylinder:\n geometryData = new CylinderGeometryData(size.radius, size.radius, size.height);\n\n break;\n case GeometryType.Cone:\n geometryData = new ConeGeometryData(size.radius, size.height);\n\n break;\n case GeometryType.Torus:\n geometryData = new TorusGeometryData(size.radius, size.tube, size.radialSegments, size.tubularSegments, size.arc);\n\n break;\n case GeometryType.Sprite:\n case GeometryType.Plane:\n geometryData = new PlaneGeometryData(size.width, size.height);\n\n break;\n case GeometryType.Frustum:\n geometryData = new FrustumGeometryData(size.position, size.rotation, size.fov, size.aspect, size.near, size.far);\n\n break;\n case GeometryType.DirectionLight:\n geometryData = new DirectionLightData(size.radius, size.length, size.segments4, size.linesNumber, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.PointLight:\n geometryData = new PointLightData(size.range, size.segments, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.SpotLight:\n geometryData = new SpotLightData(size.range, size.spotAngle, size.segments, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.FloorGrid:\n geometryData = new FloorLineEdgeGeometryData(size.sideLength, size.parts);\n\n break;\n default:\n geometryData = new BoxGeometryData(size.width, size.height, size.depth);\n\n break;\n }\n const result = Geometry.create(\n engine,\n {\n attributes: {\n a_Position: {\n size: 3,\n data: new Float32Array(geometryData.points),\n },\n a_Normal: {\n size: 3,\n data: new Float32Array(geometryData.normals),\n },\n a_UV1: {\n size: 2,\n data: new Float32Array(geometryData.uvs),\n },\n },\n indices: {\n data: new Uint16Array(geometryData.indices),\n },\n mode: renderMode,\n drawCount: geometryData.indices.length,\n });\n\n return result;\n}\n","import { math } from '@galacean/effects';\n\nexport type Ray = math.Ray;\nexport type TriangleLike = math.TriangleLike;\ntype Vector3 = math.Vector3;\n\nconst { Vector3, Ray } = math;\n\n/**\n * 包围盒类型\n */\nexport enum BoundingType {\n box,\n sphere,\n triangle,\n line\n}\n\n/**\n * 线条包围盒类型\n */\nexport interface GizmoItemBoundingLine {\n type: BoundingType.line,\n // 线条包围盒两端点\n points: [Vector3, Vector3],\n // 射线与线条距离阈值\n width: number,\n}\n\n/**\n * 立方体包围盒类型\n */\nexport interface GizmoItemBoundingBox {\n type: BoundingType.box,\n //包围形状相对于元素位置的偏移,默认[0,0,0]\n center?: Vector3,\n //包围盒的xyz长度,当type为box时生效\n size: Vector3,\n}\n\n/**\n * 球体包围盒类型\n */\nexport interface GizmoItemBoundingSphere {\n type: BoundingType.sphere,\n //包围形状相对于元素位置的偏移,默认[0,0,0]\n center?: Vector3,\n //包围球的半径,当type为sphere时生效\n radius: number,\n}\n\n/**\n * 三角数组包围盒类型\n */\nexport interface GizmoItemBoundingTriangle {\n type: BoundingType.triangle,\n triangles: TriangleLike[],\n backfaceCulling?: boolean,\n}\n\nexport type GizmoItemBounding =\n | GizmoItemBoundingBox\n | GizmoItemBoundingSphere\n | GizmoItemBoundingTriangle\n | GizmoItemBoundingLine\n ;\n","import { math } from '@galacean/effects';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\n\nconst { Matrix4, Vector2 } = math;\n\nexport function distanceOfPointAndLine (point: Vector2, line: [Vector2, Vector2]): { distance: number, isInLine: boolean } {\n //三角形三个边长\n const AC = new Vector2();\n const BC = new Vector2();\n const AB = new Vector2();\n\n AC.subtractVectors(point, line[0]);\n BC.subtractVectors(point, line[1]);\n AB.subtractVectors(line[1], line[0]);\n const lengthAC = AC.length();\n const lengthBC = BC.length();\n const lengthAB = AB.length();\n\n //利用海伦公式计算三角形面积\n //周长的一半\n const P = (lengthAC + lengthBC + lengthAB) / 2;\n const allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));\n //普通公式计算三角形面积反推点到线的垂直距离\n const distance = (2 * allArea) / lengthAB;\n const l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));\n const l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));\n let isInLine = false;\n\n if (l1 <= lengthAB && l2 <= lengthAB) {\n isInLine = true;\n }\n\n return {\n distance,\n isInLine,\n };\n}\n\nexport function projectionOfPointAndLine (point: Vector2, line: [Vector3, Vector3]): Vector3 {\n const AC = new Vector2();\n const BC = new Vector2();\n const AB = new Vector2();\n const line0 = line[0].toVector2();\n const line1 = line[1].toVector2();\n\n AC.subtractVectors(point, line0);\n BC.subtractVectors(point, line1);\n AB.subtractVectors(line1, line0);\n const lengthAC = AC.length();\n const lengthBC = BC.length();\n const lengthAB = AB.length();\n\n //利用海伦公式计算三角形面积\n //周长的一半\n const P = (lengthAC + lengthBC + lengthAB) / 2;\n const allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));\n //普通公式计算三角形面积反推点到线的垂直距离\n const distance = (2 * allArea) / lengthAB;\n const l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));\n const l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));\n\n const worldAB = line[1].clone().subtract(line[0]);\n\n const worldAP = worldAB.clone().multiply(l1 / (l1 + l2));\n\n const worldP = line[0].clone().add(worldAP);\n\n return worldP;\n}\n\nexport function computeOrthographicOffCenter (\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number,\n far: number\n) {\n let a = 1.0 / (right - left);\n let b = 1.0 / (top - bottom);\n let c = 1.0 / (far - near);\n\n const tx = -(right + left) * a;\n const ty = -(top + bottom) * b;\n const tz = -(far + near) * c;\n\n a *= 2.0;\n b *= 2.0;\n c *= -2.0;\n\n return new Matrix4(\n a,\n 0.0,\n 0.0,\n 0.0,\n //\n 0.0,\n b,\n 0.0,\n 0.0,\n //\n 0.0,\n 0.0,\n c,\n 0.0,\n //\n tx,\n ty,\n tz,\n 1.0,\n );\n}\n","import type { Engine, Geometry, spec } from '@galacean/effects';\nimport { glContext, Material, Mesh, Texture, Transform, math } from '@galacean/effects';\nimport type { MeshOption } from './geometry';\nimport { createGeometry, GeometryType } from './geometry';\nimport { GizmoSubType } from './define';\nimport type { GizmoItemBounding } from './gizmo-vfx-item';\nimport { BoundingType } from './gizmo-vfx-item';\nimport { color, renderMode } from './constants';\n\ntype vec3 = spec.vec3;\ntype Vector3 = math.Vector3;\ntype TriangleLike = math.TriangleLike;\nconst { Vector2, Vector3, Matrix4 } = math;\n\n/**\n * 根据 gizmoSubType 类型创建几何体 Mesh\n * @param subType - gizmoSubType 类型\n * @param boundingMap - 包围盒 Map\n * @param iconTexture - 图标纹理\n * @param options - 几何体参数\n * @returns 基础几何体 Mesh | 组合几何体 Map<Mesh, Transform>\n */\nexport function createMeshFromSubType (\n engine: Engine,\n subType: GizmoSubType,\n boundingMap: Map<string, GizmoItemBounding>,\n iconTexture?: Map<string, Texture>,\n options?: MeshOption\n): Mesh | Map<Mesh, Transform> {\n let result: Mesh | Map<Mesh, Transform>;\n\n if (!options) {\n options = { size: 0, renderMode: WebGLRenderingContext['TRIANGLES'] };\n }\n\n switch (subType) {\n case GizmoSubType.sprite:\n result = createSpriteMesh(engine, options);\n\n break;\n case GizmoSubType.camera:\n result = createSpriteMesh(engine, options, iconTexture ? iconTexture.get('camera') : undefined, boundingMap);\n\n break;\n case GizmoSubType.light:\n result = createSpriteMesh(engine, options, iconTexture ? iconTexture.get('light') : undefined, boundingMap);\n\n break;\n case GizmoSubType.translation:\n result = createTranslationMesh(engine, options, boundingMap);\n\n break;\n case GizmoSubType.scale:\n result = createScaleMesh(engine, options, boundingMap);\n\n break;\n case GizmoSubType.viewHelper:\n result = createViewHelperMesh(engine, options, boundingMap, iconTexture as Map<string, Texture>);\n\n break;\n case GizmoSubType.rotation:\n result = createRotationMesh(engine, options, boundingMap);\n\n break;\n default:\n result = createBasicMesh(engine, subType, options);\n\n break;\n }\n\n return result;\n}\n\n/**\n * 创建旋转组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createRotationMesh (\n engine: Engine,\n options: MeshOption,\n boundingMap: Map<string, GizmoItemBounding>,\n): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const size = {\n radius: 0.8 * scale,\n tube: 0.02 * scale,\n radiusSegments: 10 * scale,\n widthSegments: 20,\n heightSegments: 20,\n };\n const boundSize = { ...size, tube: size.tube * 2 };\n const name = 'rotation';\n const xCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.xAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const yCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.yAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const zCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.zAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const center = createBasicMesh(engine, GizmoSubType.sphere, {\n size, color: [0.3, 0.3, 0.3], alpha: 0.1, renderMode, name,\n }, 'blend');\n const xCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.xAxisColor as vec3,\n renderMode,\n });\n const yCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.yAxisColor as vec3,\n renderMode,\n });\n const zCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.zAxisColor as vec3,\n renderMode,\n });\n\n const xCircleTransform = new Transform({\n valid: true,\n });\n const yCircleTransform = new Transform({\n valid: true,\n });\n const zCircleTransform = new Transform({\n valid: true,\n });\n const centerTransform = new Transform({\n valid: true,\n });\n\n xCircleTransform.setRotation(0, 90, 0);\n yCircleTransform.setRotation(-90, 0, 0);\n zCircleTransform.setRotation(0, 0, 0);\n result.set(center, centerTransform);\n result.set(xCircle, xCircleTransform);\n result.set(yCircle, yCircleTransform);\n result.set(zCircle, zCircleTransform);\n\n boundingMap.set('xAxis', {\n type: BoundingType.triangle,\n triangles: xCircleBounding.firstGeometry() ? getTriangle(xCircleBounding.firstGeometry(), xCircleTransform) : [],\n backfaceCulling: true,\n });\n boundingMap.set('yAxis', {\n type: BoundingType.triangle,\n triangles: yCircleBounding.firstGeometry() ? getTriangle(yCircleBounding.firstGeometry(), yCircleTransform) : [],\n backfaceCulling: true,\n });\n boundingMap.set('zAxis', {\n type: BoundingType.triangle,\n triangles: zCircleBounding.firstGeometry() ? getTriangle(zCircleBounding.firstGeometry(), zCircleTransform) : [],\n backfaceCulling: true,\n });\n\n return result;\n}\n\n/**\n * 获取几何体的三角面数组\n * @internal\n * @param geometry - 几何体\n * @param transform - 变换式\n * @returns 三角面数组\n */\nfunction getTriangle (geometry: Geometry, transform: Transform): TriangleLike[] {\n const result: TriangleLike[] = [];\n const indices = geometry.getIndexData();\n const points = geometry.getAttributeData('a_Position');\n const mat4 = transform.getWorldMatrix();\n\n if (points && indices && indices.length > 0) {\n for (let i = 0; i < indices.length; i += 3) {\n const i0 = indices[i] * 3;\n const i1 = indices[i + 1] * 3;\n const i2 = indices[i + 2] * 3;\n const p0 = new Vector3(points[i0], points[i0 + 1], points[i0 + 2]);\n const p1 = new Vector3(points[i1], points[i1 + 1], points[i1 + 2]);\n const p2 = new Vector3(points[i2], points[i2 + 1], points[i2 + 2]);\n\n result.push({\n p0: mat4.projectPoint(p0),\n p1: mat4.projectPoint(p1),\n p2: mat4.projectPoint(p2),\n });\n\n }\n }\n\n return result;\n}\n\n/**\n * 创建位移组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createTranslationMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const name = 'translation';\n const axisMesh = createAxisMesh(engine, axisSize, false, name);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n\n const arrowSize = {\n radius: 0.05 * scale,\n height: 0.2 * scale,\n };\n const xArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.xAxisColor as vec3,\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const yArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.yAxisColor as vec3,\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const zArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.zAxisColor as vec3,\n renderMode,\n name,\n depthTest: true,\n }, 'blend');\n const xArrowTransform = new Transform({\n valid: true,\n });\n const yArrowTransform = new Transform({\n valid: true,\n });\n const zArrowTransform = new Transform({\n valid: true,\n });\n\n xArrowTransform.setRotation(0, 0, 90);\n yArrowTransform.setRotation(0, 0, 0);\n zArrowTransform.setRotation(-90, 0, 0);\n xArrowTransform.translate(axisSize.width, 0, 0);\n yArrowTransform.translate(0, axisSize.width, 0);\n zArrowTransform.translate(0, 0, axisSize.width);\n\n const planeSize = {\n width: 0.2 * scale,\n height: 0.2 * scale,\n };\n const xyPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const yzPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const zxPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const xyPlaneTransform = new Transform({\n valid: true,\n });\n const yzPlaneTransform = new Transform({\n valid: true,\n });\n const zxPlaneTransform = new Transform({\n valid: true,\n });\n const delta = axisSize.width / 8;\n\n xyPlaneTransform.translate(planeSize.width / 2 + delta, planeSize.height / 2 + delta, 0);\n yzPlaneTransform.setRotation(0, 90, 0);\n yzPlaneTransform.translate(0, planeSize.height / 2 + delta, planeSize.width / 2 + delta);\n zxPlaneTransform.setRotation(-90, 0, 0);\n zxPlaneTransform.translate(planeSize.width / 2 + delta, 0, planeSize.height / 2 + delta);\n\n result.set(xArrow, xArrowTransform);\n result.set(yArrow, yArrowTransform);\n result.set(zArrow, zArrowTransform);\n result.set(xyPlane, xyPlaneTransform);\n result.set(yzPlane, yzPlaneTransform);\n result.set(zxPlane, zxPlaneTransform);\n\n createAxisBounding({ width: arrowSize.radius * 2.4, length: axisSize.width + arrowSize.height / 2 }, boundingMap);\n boundingMap.set('xyPlane', {\n type: BoundingType.triangle,\n triangles: xyPlane.firstGeometry() ? getTriangle(xyPlane.firstGeometry(), xyPlaneTransform) : [],\n backfaceCulling: false,\n });\n\n // FIXME: getTriangle 函数调用 getWorldMatrix 后 worldMatrix被修改\n boundingMap.set('yzPlane', {\n type: BoundingType.triangle,\n triangles: yzPlane.firstGeometry() ? getTriangle(yzPlane.firstGeometry(), yzPlaneTransform) : [],\n backfaceCulling: false,\n });\n boundingMap.set('zxPlane', {\n type: BoundingType.triangle,\n triangles: zxPlane.firstGeometry() ? getTriangle(zxPlane.firstGeometry(), zxPlaneTransform) : [],\n backfaceCulling: false,\n });\n\n return result;\n}\n\n/**\n * 创建缩放组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createScaleMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const name = 'scale';\n const axisMesh = createAxisMesh(engine, axisSize, false, name);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n const boxSize = {\n width: 0.1 * scale,\n height: 0.1 * scale,\n depth: 0.1 * scale,\n };\n const centerBoxSize = {\n width: 0.2 * scale,\n height: 0.2 * scale,\n depth: 0.2 * scale,\n };\n const xCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const yCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const zCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const centerCube = createBasicMesh(engine, GizmoSubType.box, {\n size: centerBoxSize,\n color: [0.8, 0.8, 0.8],\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const xCubeTransform = new Transform({\n valid: true,\n });\n const yCubeTransform = new Transform({\n valid: true,\n });\n const zCubeTransform = new Transform({\n valid: true,\n });\n const centerCubeTransform = new Transform({\n valid: true,\n });\n\n xCubeTransform.translate(axisSize.width, 0, 0);\n yCubeTransform.translate(0, axisSize.width, 0);\n zCubeTransform.translate(0, 0, axisSize.width);\n result.set(centerCube, centerCubeTransform);\n result.set(xCube, xCubeTransform);\n result.set(yCube, yCubeTransform);\n result.set(zCube, zCubeTransform);\n\n createAxisBounding({ width: boxSize.width * 1.2, length: axisSize.width + boxSize.width / 2 }, boundingMap);\n boundingMap.set('center', {\n type: BoundingType.sphere,\n center: new Vector3(),\n radius: Math.pow(Math.pow(centerBoxSize.width, 2) + Math.pow(centerBoxSize.height, 2) + Math.pow(centerBoxSize.depth, 2), 0.5) / 2,\n });\n\n return result;\n}\n\n/**\n * 创建视图辅助组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createViewHelperMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>, texture: Map<string, Texture>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const axisMesh = createAxisMesh(engine, axisSize, true);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n const planeSize = {\n width: 0.14 * scale,\n height: 0.14 * scale,\n };\n const length = (axisSize.width + planeSize.width) / 2;\n const depthTest = true;\n const posXSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posX'));\n const posYSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posY'));\n const posZSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posZ'));\n const posXSphereTransform = new Transform({\n valid: true,\n });\n const posYSphereTransform = new Transform({\n valid: true,\n });\n const posZSphereTransform = new Transform({\n valid: true,\n });\n\n posXSphereTransform.translate(length, 0, 0);\n posYSphereTransform.translate(0, length, 0);\n posZSphereTransform.translate(0, 0, length);\n const negXSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negX'));\n const negYSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negY'));\n const negZSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negZ'));\n const negXSphereTransform = new Transform({\n valid: true,\n });\n const negYSphereTransform = new Transform({\n valid: true,\n });\n const negZSphereTransform = new Transform({\n valid: true,\n });\n\n negXSphereTransform.translate(-length, 0, 0);\n negYSphereTransform.translate(0, -length, 0);\n negZSphereTransform.translate(0, 0, -length);\n\n result.set(posXSphere, posXSphereTransform);\n result.set(posYSphere, posYSphereTransform);\n result.set(posZSphere, posZSphereTransform);\n result.set(negXSphere, negXSphereTransform);\n result.set(negYSphere, negYSphereTransform);\n result.set(negZSphere, negZSphereTransform);\n\n const radius = (planeSize.height / 2) * 1.2;\n\n boundingMap.set('posX', {\n type: BoundingType.sphere,\n center: posXSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('posY', {\n type: BoundingType.sphere,\n center: posYSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('posZ', {\n type: BoundingType.sphere,\n center: posZSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negX', {\n type: BoundingType.sphere,\n center: negXSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negY', {\n type: BoundingType.sphere,\n center: negYSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negZ', {\n type: BoundingType.sphere,\n center: negZSphereTransform.position,\n radius: radius,\n });\n\n return result;\n}\n\n/**\n * 创建坐标轴 Mesh 数组\n * @internal\n * @param axisSize - 坐标轴尺寸\n * @param isCentered - 是否居中,默认 false\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createAxisMesh (engine: Engine, axisSize: { width: number, height: number, depth: number }, isCentered = false, name?: string): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const xAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const yAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const zAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n });\n\n const xAxisTransform = new Transform({\n valid: true,\n });\n const yAxisTransform = new Transform({\n valid: true,\n });\n const zAxisTransform = new Transform({\n valid: true,\n });\n\n yAxisTransform.setRotation(0, 0, 90);\n zAxisTransform.setRotation(0, -90, 0);\n if (!isCentered) {\n xAxisTransform.translate(axisSize.width / 2, 0, 0);\n yAxisTransform.translate(0, axisSize.width / 2, 0);\n zAxisTransform.translate(0, 0, axisSize.width / 2);\n }\n result.set(xAxis, xAxisTransform);\n result.set(yAxis, yAxisTransform);\n result.set(zAxis, zAxisTransform);\n\n return result;\n}\n\n/**\n * 创建基础几何体 Mesh\n * @internal\n * @param subType - gizmoSubType 类型\n * @param options - 几何体参数\n * @returns 几何体 Mesh\n */\nfunction createBasicMesh (engine: Engine, subType: GizmoSubType, options: MeshOption, materialType = 'default'): Mesh {\n const {\n size, color, alpha, renderMode, depthTest, name,\n } = options;\n let geometryType: GeometryType;\n\n switch (subType) {\n case GizmoSubType.sphere:\n geometryType = GeometryType.Sphere;\n\n break;\n case GizmoSubType.cylinder:\n geometryType = GeometryType.Cylinder;\n\n break;\n case GizmoSubType.cone:\n geometryType = GeometryType.Cone;\n\n break;\n case GizmoSubType.torus:\n geometryType = GeometryType.Torus;\n\n break;\n case GizmoSubType.sprite:\n geometryType = GeometryType.Sprite;\n\n break;\n case GizmoSubType.plane:\n geometryType = GeometryType.Plane;\n\n break;\n case GizmoSubType.frustum:\n geometryType = GeometryType.Frustum;\n\n break;\n case GizmoSubType.directionLight:\n geometryType = GeometryType.DirectionLight;\n\n break;\n case GizmoSubType.spotLight:\n geometryType = GeometryType.SpotLight;\n\n break;\n case GizmoSubType.pointLight:\n geometryType = GeometryType.PointLight;\n\n break;\n case GizmoSubType.floorGrid:\n geometryType = GeometryType.FloorGrid;\n\n break;\n default:\n geometryType = GeometryType.Box;\n\n break;\n }\n const geometry = createGeometry(engine, geometryType, size, renderMode);\n let material;\n\n switch (materialType) {\n case 'blend':\n material = createBlendMaterial(engine, color, depthTest, alpha);\n\n break;\n case 'hideBack':\n material = createHideBackMaterial(engine, color, depthTest);\n\n break;\n default:\n material = createMaterial(engine, color, depthTest);\n\n break;\n }\n\n return Mesh.create(\n engine,\n {\n name: name ? name : geometryType.toString(),\n geometry,\n material,\n priority: 3000,\n });\n}\n\n/**\n * @internal\n * @param options\n * @param texture\n * @param boundingMap\n * @returns\n */\nfunction createSpriteMesh (engine: Engine, options: MeshOption, texture?: Texture, boundingMap?: Map<string, GizmoItemBounding>): Mesh {\n const geometry = createGeometry(engine, GeometryType.Sprite, options.size, renderMode);\n let spriteColor;\n\n if (texture) {\n spriteColor = texture;\n } else {\n spriteColor = options.color;\n }\n\n const material = createSpriteMaterial(engine, spriteColor, options.depthTest);\n\n if (boundingMap) {\n boundingMap.set('sprite', {\n type: BoundingType.sphere,\n radius: Math.pow(Math.pow(options.size.width, 2) + Math.pow(options.size.height, 2), 0.5) / 2,\n });\n }\n\n return Mesh.create(\n engine,\n {\n name: options.name || 'sprite',\n geometry,\n material,\n priority: 3000,\n });\n}\n\n/**\n * 创建材质\n * @internal\n * @param color - 颜色\n * @param depthTest\n * @returns 纯色材质,无光照,无透明\n */\nfunction createMaterial (engine: Engine, color?: vec3, depthTest?: boolean): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n uniformSemantics: {\n u_viewinverse: 'VIEWINVERSE',\n u_v: 'VIEW',\n u_p: 'PROJECTION',\n u_et: 'EDITOR_TRANSFORM',\n },\n shader: {\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n void main(){\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n uniform vec4 uEditorTransform;\n\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * 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 }`,\n shared: true,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n\n return material;\n}\n\n/**\n *\n * @internal\n * @param color\n * @param depthTest\n * @returns\n */\nfunction createHideBackMaterial (engine: Engine, color?: vec3, depthTest?: boolean): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n u_cameraPos: new Float32Array([0, 0, 0]),\n u_center: new Float32Array([0, 0, 0]),\n },\n uniformSemantics: {\n u_viewinverse: 'VIEWINVERSE',\n u_v: 'VIEW',\n u_p: 'PROJECTION',\n u_et: 'EDITOR_TRANSFORM',\n },\n shader: {\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n varying float flag;\n\n void main(){\n if(flag > 0.0) {\n discard;\n }\n\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n uniform vec4 uEditorTransform;\n\n uniform vec3 u_cameraPos;\n uniform vec3 u_center;\n\n varying float flag;\n void main(){\n float distance = length(u_cameraPos - u_center);\n vec3 worldPosition = (u_model * vec4(a_Position,1.0)).xyz;\n flag = length(u_cameraPos - worldPosition) - distance;\n gl_Position = _MatrixP * effects_MatrixV * 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 }`,\n shared: true,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.setVector3('u_cameraPos', Vector3.ZERO);\n material.setVector3('u_center', Vector3.ZERO);\n\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n\n return material;\n}\n\n/**\n *\n * @internal\n * @param color\n * @param depthTest\n * @param alpha\n * @returns\n */\nfunction createBlendMaterial (engine: Engine, color?: vec3, depthTest?: boolean, alpha?: number): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n const myAlpha = alpha ? alpha : 1;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_alpha: new Float32Array([myAlpha, 0]),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n uniformSemantics: {\n u_viewinverse: 'VIEWINVERSE',\n u_v: 'VIEW',\n u_p: 'PROJECTION',\n u_et: 'EDITOR_TRANSFORM',\n },\n shader: {\n shared: true,\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n uniform vec2 u_alpha;\n\n void main(){\n gl_FragColor = vec4(u_color,u_alpha);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n uniform vec4 uEditorTransform;\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * 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 }`,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setVector2('u_alpha', new Vector2(myAlpha, 0));\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = true;\n material.blendEquation = [glContext.FUNC_ADD, glContext.FUNC_ADD];\n material.blendFunction = [glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA, glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA];\n material.depthMask = true;\n\n return material;\n}\n\nfunction createSpriteMaterial (engine: Engine, data?: vec3 | Texture, depthTest?: boolean): Material {\n const myDepthTest = depthTest ? depthTest : false;\n const uniformValues = {\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n u_alpha: new Float32Array([1, 0]),\n };\n\n const material = Material.create(\n engine,\n {\n uniformValues,\n uniformSemantics: {\n u_viewinverse: 'VIEWINVERSE',\n u_v: 'VIEW',\n u_p: 'PROJECTION',\n u_et: 'EDITOR_TRANSFORM',\n },\n shader: {\n shared: true,\n fragment: `\n precision highp float;\n\n uniform vec2 u_alpha;\n uniform vec3 u_color;\n uniform sampler2D u_iconTex;\n\n varying vec2 v_uv;\n\n void main(){\n vec4 color = texture2D(u_iconTex, vec2(v_uv.x, 1.0 - v_uv.y));\n if(color.a < 0.001)\n {\n discard;\n }\n gl_FragColor = vec4(color.xyz, color.w * u_alpha.x);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n attribute vec2 a_UV1;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n uniform mat4 effects_MatrixInvV;\n uniform vec4 uEditorTransform;\n varying vec2 v_uv;\n\n void main(){\n v_uv = a_UV1;\n vec4 pos = u_model * vec4(0., 0., 0., 1.0);\n // vec4 pos = u_model * vec4(a_Position,1.0);\n\n pos.xyz += effects_MatrixInvV[0].xyz * a_Position.x + effects_MatrixInvV[1].xyz * a_Position.y;\n gl_Position = _MatrixP * effects_MatrixV * pos;\n gl_Position = vec4(gl_Position.xy * uEditorTransform.xy + uEditorTransform.zw * gl_Position.w,gl_Position.zw);\n }`,\n },\n });\n\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.setVector2('u_alpha', new Vector2(1, 0));\n\n if (data instanceof Texture) {\n material.setTexture('u_iconTex', data);\n // uniformValues.u_iconTex = data;\n } else {\n let color: Vector3;\n\n if (data === undefined) {\n color = new Vector3(255, 255, 255);\n } else {\n color = Vector3.fromArray(data);\n }\n material.setVector3('u_color', color);\n // uniformValues.u_color = new Float32Array(color);\n }\n\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = true;\n material.blendEquation = [glContext.FUNC_ADD, glContext.FUNC_ADD];\n material.blendFunction = [glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA, glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA];\n\n return material;\n}\n\n/**\n * 创建坐标轴包围盒\n * @internal\n * @param size 包围盒尺寸\n * @param boundingMap 包围盒 Map\n */\nfunction createAxisBounding (size: { width: number, length: number }, boundingMap: Map<string, GizmoItemBounding>) {\n boundingMap.set('xAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(size.length, 0, 0)],\n width: size.width,\n });\n boundingMap.set('yAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(0, size.length, 0)],\n width: size.width,\n });\n boundingMap.set('zAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(0, 0, size.length)],\n width: size.width,\n });\n}\n","import type { Camera } from '@galacean/effects';\nimport { math } from '@galacean/effects';\nimport { distanceOfPointAndLine, projectionOfPointAndLine } from './math-utils';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Matrix4, Vector2, Vector3 } = math;\n\n/**\n * 线条包围盒射线检测算法\n * @param out - 射线与包围盒交点位置\n * @param pointInCanvas - 归一化的画布交互点坐标\n * @param points - 线条包围盒两端点位置\n * @param radius - 线条包围盒辐射半径\n * @param camera - 相机对象\n * @returns 射线与包围盒交点位置 | undefined\n */\nexport function intersectRayLine (\n out: Vector3,\n pointInCanvas: Vector2,\n points: [p0: Vector3, p1: Vector3],\n radius: number,\n worldMat4: Matrix4,\n camera: Camera,\n): Vector3 | undefined {\n // 构造一个辐射半径边缘的点 radiusPoint\n const up = new Vector3(\n worldMat4.elements[1],\n worldMat4.elements[5],\n worldMat4.elements[9],\n ).normalize();\n\n const radiusPoint = up.clone().multiply(radius);\n\n radiusPoint.add(points[0]);\n\n // 计算 start、end、radius 在屏幕空间上的投影\n const mvpMat4 = camera.getModelViewProjection(new Matrix4(), worldMat4);\n\n const screenStart = mvpMat4.projectPoint(points[0], new Vector3());\n const screenEnd = mvpMat4.projectPoint(points[1], new Vector3());\n const screenRadiusPoint = mvpMat4.projectPoint(radiusPoint, new Vector3());\n\n const screenRadiusVector = screenRadiusPoint.clone().subtract(screenStart);\n\n const screenRadius = screenRadiusVector.length();\n\n // 计算屏幕交互点与线条的距离\n const { distance, isInLine } = distanceOfPointAndLine(pointInCanvas, [screenStart.toVector2(), screenEnd.toVector2()]);\n\n if (distance <= screenRadius && isInLine) { // 距离小于阈值且交互点在线条上的投影位于线段内\n // 计算交互点在线条上的投影并转换为世界坐标\n const screenPosition = projectionOfPointAndLine(pointInCanvas, [screenStart, screenEnd]);\n const inverseViewProjection = camera.getInverseViewProjectionMatrix();\n\n inverseViewProjection.projectPoint(screenPosition, out);\n\n return out;\n }\n}\n","import type { Engine, spec } from '@galacean/effects';\nimport { Geometry, Material, Mesh, glContext, math } from '@galacean/effects';\n\ntype vec3 = spec.vec3;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Euler, Vector3, Matrix4 } = math;\n\nconst rectSize = 0.04;\nconst DEG2RAD = Math.PI / 180;\n\ninterface GeometryData {\n points: Vector3[],\n indices: number[],\n}\n\ninterface ArcPathOptions {\n plane?: string,\n translate?: vec3,\n rotate?: vec3,\n}\n\nfunction arcPath (radius: number, arc: number, options: ArcPathOptions = {}): GeometryData {\n const { plane, translate = [0, 0, 0], rotate = [0, 0, 0] } = options;\n const rotMat4 = Euler.fromArray(rotate).negate().toMatrix4(new Matrix4());\n const points: Vector3[] = [];\n const indices = [];\n\n addPoint(radius, 0);\n let i = 1;\n\n for (; i <= arc; i++) {\n const angle = i * DEG2RAD;\n\n indices.push(i - 1, i);\n addPoint(Math.cos(angle) * radius, Math.sin(angle) * radius);\n }\n\n return {\n points,\n indices,\n };\n\n function addPoint (cos: number, sin: number) {\n const point = new Vector3();\n\n if (plane === 'xz') {\n point.set(cos, 0, sin);\n } else if (plane === 'yz') {\n point.set(0, cos, sin);\n } else {\n point.set(cos, sin, 0);\n }\n rotMat4.transformNormal(point);\n points.push(point.add(translate));\n }\n}\n\nfunction line (p0: vec3, p1: vec3): GeometryData {\n return {\n points: [\n Vector3.fromArray(p0),\n Vector3.fromArray(p1),\n ],\n indices: [0, 1],\n };\n}\n\nfunction box (width: number, height: number, depth: number, center?: number[]): GeometryData {\n const w = width / 2;\n const h = height / 2;\n const d = depth / 2;\n const myCenter = center ?? [0, 0, 0];\n const points: Vector3[] = [\n [-w, h, -d], [-w, -h, -d], [-w, h, d], [-w, -h, d],\n [w, h, -d], [w, -h, -d], [w, h, d], [w, -h, d],\n ].map(item => {\n return new Vector3(item[0] + myCenter[0], item[1] + myCenter[1], item[2] + myCenter[2]);\n });\n\n return {\n points,\n indices: [\n 0, 1, 1, 3, 3, 2, 2, 0,\n 4, 5, 5, 7, 7, 6, 6, 4,\n 0, 4, 2, 6, 3, 7, 1, 5,\n ],\n };\n}\n\nfunction rect (width: number, height: number, pos?: vec3): GeometryData {\n const w = width / 2;\n const h = height / 2;\n const points: Vector3[] = [\n new Vector3(-w, h, 0),\n new Vector3(w, h, 0),\n new Vector3(w, -h, 0),\n new Vector3(-w, -h, 0),\n ];\n\n if (pos) {\n points.forEach(vec => {\n vec.add(pos);\n });\n }\n\n return {\n points,\n indices: [\n 0, 1, 1, 2, 2, 3, 3, 0,\n ],\n };\n}\n\nfunction combineGeometries (geometries: GeometryData[]) {\n const points: number[] = [];\n const indices: number[] = [];\n\n for (let i = 0, indicesBase = 0; i < geometries.length; i++) {\n const geometry = geometries[i];\n\n if (geometry) {\n geometry.points.forEach(point => {\n points.push(point.x, point.y, point.z);\n });\n geometry.indices.forEach(index => indices.push(index + indicesBase));\n indicesBase += geometry.points.length;\n }\n }\n\n return {\n points: new Float32Array(points),\n indices: new Uint16Array(indices),\n };\n}\n\nconst Shapes: Record<string, (arg: any) => GeometryData[]> = {\n Texture (arg: any) {\n const ret = [];\n\n if (arg.detail) {\n const anchors = arg.detail.anchors;\n const block = arg.detail.block;\n const width = arg.width;\n const height = arg.height;\n\n for (let i = 0; i < anchors.length; i += 2) {\n ret.push(rect(block[0] * width, block[1] * height, [\n width * (anchors[i] - 0.5),\n height * (anchors[i + 1] - 0.5),\n 0,\n ]));\n }\n } else {\n ret.unshift(Shapes.Rectangle(arg)[0]);\n }\n\n return ret;\n },\n Circle (arg: any) {\n const { radius, arc } = arg;\n\n return [\n arcPath(radius, arc),\n arc !== 360 && line([0, 0, 0], [radius, 0, 0]),\n arc !== 360 && line([0, 0, 0], [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0]),\n ] as GeometryData[];\n },\n Box: function (arg: any) {\n const {\n width, height, depth, center,\n } = arg;\n const data = box(width, height, depth, center);\n\n return [data];\n },\n Sphere: function (arg) {\n const { radius, arc } = arg;\n const ret = [\n line([0, 0, -radius], [0, 0, radius]),\n arcPath(radius, arc > 180 ? 360 : 180, { plane: 'xz', rotate: [0, 90, 0] }),\n arcPath(radius, arc, { plane: 'xy' }),\n arcPath(radius, 180, { plane: 'xz', rotate: [0, 90, arc] }),\n ];\n\n if (arc > 90) {\n ret.push(arcPath(radius, arc > 270 ? 360 : 180, { plane: 'yz', rotate: [-90, 0, 0] }));\n }\n\n return ret;\n },\n Hemisphere (arg) {\n const { radius, arc } = arg;\n const ret = [\n line([0, 0, radius], [0, 0, 0]), //z\n line([arc > 180 ? -radius : 0, 0, 0], [radius, 0, 0]), //x\n arg > 90 && line([0, arc > 270 ? -radius : 0, 0], [0, radius, 0]), //y\n arcPath(radius, (arc > 180 ? 360 : 180) / 2, { plane: 'xz' }),\n arcPath(radius, arc, { plane: 'xy' }),\n arcPath(radius, 90, { plane: 'xz', rotate: [0, 0, arc] }),\n line([0, 0, 0], [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0]),\n ] as GeometryData[];\n\n if (arc > 90) {\n ret.push(arcPath(radius, arc > 270 ? 180 : 90, { plane: 'yz' }));\n }\n\n return ret;\n },\n Cone (arg) {\n const { radius, arc } = arg;\n const outerRadius = radius * Math.tan(arg.angle * DEG2RAD) + radius;\n\n return [\n arcPath(outerRadius, arc, { translate: [0, 0, radius] }),\n line([radius, 0, 0], [outerRadius, 0, radius]),\n arc > 90 && line([0, radius, 0], [0, outerRadius, radius]),\n arc > 180 && line([-radius, 0, 0], [-outerRadius, 0, radius]),\n arc > 270 && line([0, -radius, 0], [0, -outerRadius, radius]),\n line([Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0],\n [Math.cos(arc * DEG2RAD) * outerRadius, Math.sin(arc * DEG2RAD) * outerRadius, radius]),\n ].concat(Shapes.Circle(arg)) as GeometryData[];\n },\n Edge (arg) {\n const hw = arg.width / 2;\n\n return [\n line([-hw, 0, 0], [hw, 0, 0]),\n ];\n },\n Rectangle (arg) {\n return [\n rect(arg.width, arg.height),\n ];\n },\n RectangleEdge (arg) {\n return [\n rect(arg.width, arg.height),\n ];\n },\n Donut (arg) {\n const { arc, radius, donutRadius } = arg;\n\n return [\n arcPath(donutRadius, 360, { translate: [radius, 0, 0], rotate: [90, 0, 0] }),\n arcPath(radius - donutRadius, arc),\n arcPath(radius + donutRadius, arc),\n arcPath(radius, arc, { translate: [0, 0, donutRadius] }),\n arcPath(radius, arc, { translate: [0, 0, -donutRadius] }),\n arc % 360 === 0 ? arcPath(donutRadius, 360, {\n translate: [-radius, 0, 0],\n rotate: [90, 0, 0],\n }) : arcPath(donutRadius, 360, {\n translate: [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0],\n rotate: [90, 0, arc],\n }),\n ];\n },\n path (arg) {\n const positions = arg.keys;\n const ret = [];\n\n for (let i = 0; i < positions.length - 1; i++) {\n ret.push(rect(rectSize, rectSize, positions[i]));\n ret.push(line(positions[i], positions[i + 1]));\n }\n ret.push(rect(rectSize, rectSize, positions[positions.length - 1]));\n\n return ret;\n },\n};\n\nShapes['0'] = Shapes.None;\nShapes['1'] = Shapes.Sphere;\nShapes['2'] = Shapes.Cone;\nShapes['3'] = Shapes.Hemisphere;\nShapes['4'] = Shapes.Circle;\nShapes['5'] = Shapes.Donut;\nShapes['6'] = Shapes.Rectangle;\nShapes['7'] = Shapes.RectangleEdge;\nShapes['8'] = Shapes.Edge;\nShapes['9'] = Shapes.Texture;\n\nexport function createMeshFromShape (engine: Engine, args: { shape: string, type?: number }, options: { color?: vec3, depthTest?: boolean }): Mesh {\n const ret = Shapes[args.type || args.shape](args);\n const geo = combineGeometries(ret);\n\n return createMesh(engine, geo.points, geo.indices, options.color || [1, 0, 0], options.depthTest, args.shape);\n}\n\nfunction createMesh (engine: Engine, points: Float32Array, indices: Uint16Array, color: vec3, depthTest = false, name?: string): Mesh {\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(color),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n uniformSemantics: {\n u_vp: 'VIEWPROJECTION',\n u_et: 'EDITOR_TRANSFORM',\n },\n shader: {\n shared: true,\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n void main(){\n gl_FragColor = vec4(u_color,1.0);\n }`,\n 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 }`,\n },\n });\n\n material.setVector3('u_color', Vector3.fromArray(color));\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = depthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n const geometry = Geometry.create(\n engine,\n {\n attributes: {\n a_Position: {\n size: 3,\n data: points,\n },\n },\n indices: {\n data: indices,\n },\n mode: glContext.LINES,\n drawCount: indices.length,\n });\n\n return Mesh.create(\n engine,\n {\n name,\n geometry,\n material,\n priority: 3000,\n });\n}\n","import type { GeometryDrawMode, HitTestCustomParams, Mesh, Texture, VFXItem } from '@galacean/effects';\nimport { HitTestType, ItemBehaviour, ParticleSystemRenderer, RendererComponent, Transform, assertExist, effectsClass, glContext, math, spec } from '@galacean/effects';\nimport type { GizmoVFXItemOptions } from './define';\nimport { GizmoSubType } from './define';\nimport { iconTextures, type EditorGizmoPlugin } from './gizmo-loader';\nimport type { GizmoItemBounding, Ray, TriangleLike } from './gizmo-vfx-item';\nimport { BoundingType, type GizmoItemBoundingSphere } from './gizmo-vfx-item';\nimport { computeOrthographicOffCenter } from './math-utils';\nimport { createMeshFromSubType } from './mesh';\nimport { intersectRayLine } from './raycast';\nimport { createMeshFromShape } from './shape';\nimport { moveToPointWidthFixDistance } from './util';\nimport { WireframeGeometryType, createModeWireframe, updateWireframeMesh } from './wireframe';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Vector2, Vector3, Matrix4, Quaternion } = math;\nconst constants = glContext;\n\n@effectsClass('GizmoComponent')\nexport class GizmoComponent extends ItemBehaviour {\n gizmoPlugin: EditorGizmoPlugin;\n targetItem: VFXItem;\n needCreateModelContent: boolean;\n target: string;\n subType: GizmoSubType;\n size: any;\n contents?: Map<Mesh, Transform>;\n boundingMap: Map<string, GizmoItemBounding> = new Map();\n hitBounding?: { key: string, position: Vector3 };\n wireframeMesh: Mesh;\n\n color: spec.vec3;\n renderMode!: GeometryDrawMode;\n depthTest?: boolean;\n mat = Matrix4.fromIdentity();\n wireframeMeshes: Mesh[] = [];\n\n override start (): void {\n this.item.getHitTestParams = this.getHitTestParams;\n for (const item of this.item.composition!.items) {\n if (item.id === this.target) {\n this.targetItem = item;\n }\n }\n const targetItem = this.targetItem;\n\n if (!targetItem) {\n\n return;\n }\n const composition = this.item.composition!;\n\n for (const plugin of composition.pluginSystem.plugins) {\n if (plugin.name === 'editor-gizmo') {\n this.gizmoPlugin = plugin as EditorGizmoPlugin;\n }\n }\n const gizmoPlugin = this.gizmoPlugin;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (targetItem.type === '7' || !gizmoPlugin) {\n return;\n }\n const gizmoVFXItemList: VFXItem[] = composition.loaderData.gizmoTarget[targetItem.id];\n\n if (gizmoVFXItemList && gizmoVFXItemList.length > 0) {\n for (const gizmoVFXItem of gizmoVFXItemList) {\n const gizmoSubType = gizmoVFXItem.getComponent(GizmoComponent).subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.particleEmitter:\n this.createParticleContent(targetItem, gizmoPlugin.meshToAdd);\n\n break;\n case GizmoSubType.modelWireframe:\n this.needCreateModelContent = true;\n // gizmoVFXItem.createModelContent(targetItem, gizmoPlugin.meshToAdd);\n\n break;\n case GizmoSubType.box:\n case GizmoSubType.sphere:\n case GizmoSubType.cylinder:\n case GizmoSubType.cone:\n case GizmoSubType.torus:\n case GizmoSubType.sprite:\n case GizmoSubType.frustum:\n case GizmoSubType.directionLight:\n case GizmoSubType.pointLight:\n case GizmoSubType.spotLight:\n case GizmoSubType.floorGrid:\n this.createBasicContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType);\n\n break;\n case GizmoSubType.camera:\n case GizmoSubType.light:\n this.createBasicContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.rotation:\n case GizmoSubType.scale:\n case GizmoSubType.translation:\n this.createCombinationContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType);\n\n break;\n case GizmoSubType.viewHelper:\n this.createCombinationContent(targetItem, gizmoPlugin.meshToAdd, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.boundingBox:\n this.createBoundingBoxContent(targetItem, gizmoPlugin.meshToAdd);\n\n break;\n default:\n break;\n }\n }\n }\n composition.loaderData.gizmoItems.push(this.item);\n }\n\n override update (dt: number): void {\n this.updateRenderData();\n }\n\n override lateUpdate (dt: number): void {\n if (this.needCreateModelContent) {\n this.createModelContent(this.targetItem, this.gizmoPlugin.meshToAdd);\n this.needCreateModelContent = false;\n }\n }\n\n updateRenderData () {\n const item = this.item;\n const gizmoSubType = this.subType;\n\n if (gizmoSubType === GizmoSubType.particleEmitter) { // 粒子发射器\n if (this.targetItem && item.content) {\n this.mat = this.targetItem.transform.getWorldMatrix();\n //@ts-expect-error\n item.content.material.setMatrix('u_model', this.mat);\n }\n if (this.wireframeMesh && this.targetItem) {\n const particle = this.targetItem.getComponent(ParticleSystemRenderer);\n\n if (particle) {\n updateWireframeMesh(particle.particleMesh.mesh, this.wireframeMesh, WireframeGeometryType.quad);\n this.wireframeMesh.worldMatrix = particle.particleMesh.mesh.worldMatrix;\n }\n }\n } else if (gizmoSubType === GizmoSubType.modelWireframe) { // 模型线框\n if (this.wireframeMesh && this.targetItem) {\n //@ts-expect-error\n const meshes = this.targetItem.getComponent(RendererComponent)?.content.mriMeshs as Mesh[];\n const wireframeMeshes = this.wireframeMeshes;\n\n if (meshes?.length > 0) {\n for (let i = 0; i < meshes.length; i++) {\n updateWireframeMesh(meshes[i], wireframeMeshes[i], WireframeGeometryType.triangle);\n }\n }\n }\n } else { // 几何体模型\n if (this.targetItem) {\n if (this.contents) { // 组合几何体\n // const targetTransform = this.targetItem.transform.clone();\n\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldScale = new Vector3(1, 1, 1);\n\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldScale,\n valid: true,\n });\n\n // 移动\\旋转\\缩放gizmo去除近大远小\n if (gizmoSubType === GizmoSubType.rotation || gizmoSubType === GizmoSubType.scale || gizmoSubType === GizmoSubType.translation) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || new Vector3();\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n }\n\n this.mat = targetTransform.getWorldMatrix();\n const center = targetTransform.position;\n\n for (const [mesh, transform] of this.contents) {\n let worldMat4: Matrix4;\n\n transform.parentTransform = targetTransform;\n const position = new Vector3();\n\n transform.assignWorldTRS(position);\n // 物体和中心点在屏幕空间上投影的距离\n let distanceToCneter = 100;\n let theta = 1;\n\n if (gizmoSubType === GizmoSubType.viewHelper) {\n // 正交投影只需要计算物体在XY平面上的投影与中心点的距离\n if (mesh.name === 'sprite') {\n distanceToCneter = position.toVector2().distance(center.toVector2());\n theta = (this.boundingMap.get('posX') as GizmoItemBoundingSphere).radius;\n }\n // 将物体挂到相机的transform上\n const fov = 30; // 指定fov角度\n const screenWidth = item.composition!.renderer.getWidth();\n const screenHeight = item.composition!.renderer.getHeight();\n const distance = 16; // 指定物体与相机的距离\n const width = 2 * Math.tan(fov * Math.PI / 360) * distance;\n const aspect = screenWidth / screenHeight;\n const height = width / aspect;\n const cameraModelMat4 = item.composition!.camera.getInverseViewMatrix();\n const padding = this.size.padding || 1; // 指定viewHelper与屏幕右上角的边距\n let localMat: Matrix4;\n\n localMat = transform.getWorldMatrix();\n const worldTransform: Transform = new Transform({\n valid: true,\n });\n\n worldTransform.cloneFromMatrix(localMat);\n worldTransform.setPosition((position.x + width / 2) - padding, (position.y + height / 2) - padding, position.z);\n localMat = worldTransform.getWorldMatrix();\n worldMat4 = cameraModelMat4.clone().multiply(localMat);\n // 正交投影到屏幕上\n const proMat5 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);\n\n mesh.material.setMatrix('_MatrixP', proMat5);\n } else {\n if (gizmoSubType === GizmoSubType.rotation) {\n const cameraPos = item.composition!.camera.position || [0, 0, 0];\n\n mesh.material.setVector3('u_cameraPos', cameraPos);\n mesh.material.setVector3('u_center', center);\n }\n worldMat4 = transform.getWorldMatrix();\n // TODO 计算物体和中心点在屏幕空间上投影的距离 distanceToCneter\n }\n mesh.material.setMatrix('u_model', worldMat4);\n\n // 使用distanceToCneter处理坐标轴旋转到中心点附近时的遮挡问题\n if (distanceToCneter < theta) {\n if (distanceToCneter < theta * 0.5) {\n mesh.material.setVector2('u_alpha', new Vector2(0, 0));\n } else {\n mesh.material.setVector2('u_alpha', new Vector2((2 / theta) * distanceToCneter - 1, 0));\n }\n }\n }\n }\n if (item.content) { // 基础几何体\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldSca = new Vector3(1, 1, 1);\n\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\n\n if (gizmoSubType === GizmoSubType.light || gizmoSubType === GizmoSubType.camera) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || new Vector3(0, 0, 0);\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n }\n\n this.mat = targetTransform.getWorldMatrix();\n\n //@ts-expect-error\n item.content.material.setMatrix('u_model', targetTransform.getWorldMatrix());\n }\n }\n }\n }\n\n /**\n * 获取默认绘制模式\n * @returns 绘制模式常量\n */\n getDefaultRenderMode (): GeometryDrawMode {\n let result: GeometryDrawMode;\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.particleEmitter:\n case GizmoSubType.modelWireframe:\n case GizmoSubType.frustum:\n case GizmoSubType.directionLight:\n case GizmoSubType.spotLight:\n case GizmoSubType.pointLight:\n case GizmoSubType.floorGrid:\n result = constants.LINES;\n\n break;\n default:\n result = constants.TRIANGLES;\n\n break;\n }\n\n return result;\n }\n\n /**\n * 获取默认尺寸\n * @returns 几何体尺寸\n */\n getDefaultSize () {\n let result = {};\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.box:\n result = { width: 1, height: 1, depth: 1 };\n\n break;\n case GizmoSubType.sphere:\n result = { radius: 1 };\n\n break;\n case GizmoSubType.cylinder:\n result = { radius: 1, height: 1 };\n\n break;\n case GizmoSubType.cone:\n result = { radius: 1, height: 1 };\n\n break;\n default:\n result = {};\n\n break;\n }\n\n return result;\n }\n\n createModelContent (item: VFXItem, meshesToAdd: Mesh[]) {\n const modelComponent = item.getComponent(RendererComponent);\n //@ts-expect-error\n const ms = modelComponent.content.mriMeshs as Mesh[];\n const engine = item.composition?.renderer.engine;\n\n assertExist(engine);\n\n if (ms) {\n this.targetItem = item;\n this.wireframeMeshes = [];\n ms.forEach(m => {\n const mesh = this.wireframeMesh = createModeWireframe(engine, m, this.color);\n\n this.wireframeMeshes.push(mesh);\n meshesToAdd.push(mesh);\n });\n }\n }\n\n createParticleContent (item: VFXItem, meshesToAdd: Mesh[]) {\n const shape = (item as any).props.content.shape;\n const engine = this.item.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.targetItem = item;\n if (shape && shape.type) {\n const mesh = this.item._content = createMeshFromShape(engine, shape, { color: this.color });\n\n meshesToAdd.push(mesh);\n }\n }\n\n /**\n * 创建 BoundingBox 几何体模型\n * @param item - VFXItem\n * @param meshesToAdd - 插件缓存的 Mesh 数组\n */\n createBoundingBoxContent (item: VFXItem, meshesToAdd: Mesh[]) {\n const gizmoItem = this.item;\n const shape = {\n shape: 'Box',\n width: this.size.width,\n height: this.size.height,\n depth: this.size.depth,\n center: this.size.center,\n };\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.targetItem = item;\n if (shape) {\n const mesh = gizmoItem._content = createMeshFromShape(engine, shape, { color: this.color, depthTest: this.depthTest });\n\n meshesToAdd.push(mesh);\n }\n }\n\n /**\n * 创建基础几何体模型\n * @param item - VFXItem\n * @param meshesToAdd - 插件缓存的 Mesh 数组\n * @param subType - GizmoSubType 类型\n */\n createBasicContent (item: VFXItem, meshesToAdd: Mesh[], subType: GizmoSubType, iconTextures?: Map<string, Texture>) {\n const gizmoItem = this.item;\n const options = {\n size: this.size,\n color: this.color,\n renderMode: this.renderMode,\n depthTest: this.depthTest,\n };\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n const mesh = gizmoItem._content = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options) as Mesh;\n\n this.targetItem = item;\n meshesToAdd.push(mesh);\n }\n\n /**\n * 创建组合几何体模型\n * @param item - VFXItem\n * @param meshesToAdd - 插件缓存的 Mesh 数组\n * @param subType - GizmoSubType 类型\n * @param iconTextures - XYZ 图标纹理(viewHelper 专用)\n */\n createCombinationContent (item: VFXItem, meshesToAdd: Mesh[], subType: GizmoSubType, iconTextures?: Map<string, Texture>) {\n const gizmoItem = this.item;\n const options = {\n size: this.size,\n renderMode: this.renderMode,\n };\n\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.contents = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options) as Map<Mesh, Transform>;\n for (const mesh of this.contents.keys()) {\n meshesToAdd.push(mesh);\n }\n this.targetItem = item;\n }\n\n override fromData (data: any): void {\n super.fromData(data);\n const item = this.item;\n\n item.duration = 999;\n const {\n target, subType, renderMode, size, depthTest,\n color = [255, 255, 255],\n } = data.options as GizmoVFXItemOptions;\n\n this.target = target;\n this.subType = subType;\n this.renderMode = renderMode || this.getDefaultRenderMode();\n this.size = size || this.getDefaultSize();\n this.depthTest = depthTest;\n\n const [r, g, b] = color;\n\n this.color = [r / 255, g / 255, b / 255];\n if (data) {\n item.transform = new Transform(data.transform);\n }\n }\n\n /**\n * 射线检测算法\n * @returns 包含射线检测算法回调方法的参数\n */\n private getHitTestParams = (): void | HitTestCustomParams => {\n const item = this.item;\n const boundingMap = this.boundingMap;\n\n if (boundingMap.size > 0) {\n const boundingKeys = boundingMap.keys();\n let worldMat4: Matrix4;\n\n worldMat4 = this.transform.getWorldMatrix();\n const targetItem = this.targetItem;\n\n if (targetItem) {\n //const targetTransform = this.targetItem.transform.clone();\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldSca = new Vector3(1, 1, 1);\n\n targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\n\n const gizmoSubType = item.getComponent(GizmoComponent)?.subType;\n\n // 移动\\旋转\\缩放gizmo去除近大远小\n if (\n gizmoSubType === GizmoSubType.rotation ||\n gizmoSubType === GizmoSubType.scale ||\n gizmoSubType === GizmoSubType.translation ||\n gizmoSubType === GizmoSubType.camera ||\n gizmoSubType === GizmoSubType.light\n ) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || [0, 0, 0];\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n worldMat4 = targetTransform.getWorldMatrix();\n } else {\n worldMat4 = targetTransform.getWorldMatrix();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = item;\n\n return {\n type: HitTestType.custom,\n /**\n * 自定义射线检测算法\n * @param ray 射线参数\n * @param pointInCanvas 屏幕坐标\n * @returns\n */\n collect (ray: Ray, pointInCanvas: Vector2): Vector3[] | void {\n const hitPositions = [];\n const gizmoComponent = self.getComponent(GizmoComponent);\n\n gizmoComponent.hitBounding = undefined;\n for (const key of boundingKeys) {\n const bounding = boundingMap.get(key);\n const center = new Vector3();\n const worldCenter = new Vector3();\n\n if (bounding?.type === BoundingType.box || bounding?.type === BoundingType.sphere) {\n if (bounding?.center) {\n center.copyFrom(bounding?.center);\n }\n worldMat4.projectPoint(center, worldCenter);\n }\n let position: Vector3 | undefined;\n\n switch (bounding?.type) {\n case BoundingType.box: // 立方体包围盒\n {\n const boxHalfSize = bounding.size.clone().multiply(0.5);\n const boxMax = center.clone().add(boxHalfSize);\n const boxMin = center.clone().subtract(boxHalfSize);\n\n position = ray.intersectBox({ min: boxMin, max: boxMax }, new Vector3());\n }\n\n break;\n case BoundingType.sphere: // 球体包围盒\n\n // viewHelper 使用了正交投影,使用屏幕投影点计算\n if (gizmoComponent.subType === GizmoSubType.viewHelper) {\n // 计算正交投影矩阵\n const viewMat4 = self.composition!.camera.getViewMatrix();\n const fov = 30; // 指定fov角度\n const screenWidth = self.composition!.renderer.getWidth();\n const screenHeight = self.composition!.renderer.getHeight();\n const distance = 16; // 指定物体与相机的距离\n const width = 2 * Math.tan(fov * Math.PI / 360) * distance;\n const aspect = screenWidth / screenHeight;\n const height = width / aspect;\n const proMat4 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);\n\n // 将包围盒挂到相机的 transform 上\n const cameraModelMat4 = self.composition!.camera.getInverseViewMatrix();\n const localTransform = new Transform({\n valid: true,\n });\n\n localTransform.cloneFromMatrix(worldMat4);\n const pos = localTransform.position;\n const padding = gizmoComponent.size.padding || 1; // 指定viewHelper与屏幕右上角的边距\n\n localTransform.setPosition((pos.x + width / 2) - padding, (pos.y + height / 2) - padding, pos.z);\n const localMat4 = localTransform.getWorldMatrix();\n const modelMat4 = cameraModelMat4.clone().multiply(localMat4);\n\n modelMat4.projectPoint(center, worldCenter);\n\n // 包围球中心点正交投影到屏幕上\n const vpMat4 = proMat4.clone().multiply(viewMat4);\n const mvpMat4 = vpMat4.clone().multiply(modelMat4);\n const screenCenter = mvpMat4.projectPoint(center, new Vector3());\n // const screenCenterX = screenCenter.x;\n // const screenCenterY = screenCenter.y;\n\n // 包围球上的点正交投影到屏幕上\n const radius = bounding.radius;\n const up = new Vector3(\n localMat4.elements[1],\n localMat4.elements[5],\n localMat4.elements[9],\n ).normalize();\n\n const point = up.clone().multiply(radius);\n\n point.add(center);\n\n const screenPoint = mvpMat4.projectPoint(point, new Vector3());\n // const screenPointX = screenPoint.x;\n // const screenPointY = screenPoint.y;\n\n // 计算正交投影到屏幕上的包围球的半径\n const screenCenter2 = screenCenter.toVector2();\n const screenPoint2 = screenPoint.toVector2();\n const screenRadius = screenCenter2.distance(screenPoint2);\n\n if (pointInCanvas.distance(screenCenter2) < screenRadius * 1.2) {\n position = worldCenter;\n }\n } else {\n position = ray.intersectSphere({ center: worldCenter, radius: bounding.radius }, new Vector3());\n }\n\n break;\n case BoundingType.triangle: {// 三角数组包围盒\n const { triangles, backfaceCulling } = bounding;\n const tmpPositions: Vector3[] = [];\n let tmpPosition;\n\n for (let j = 0; j < triangles.length; j++) {\n const triangle = triangles[j];\n const worldTriangle: TriangleLike = {\n p0: worldMat4.projectPoint(triangle.p0 as Vector3, new Vector3()),\n p1: worldMat4.projectPoint(triangle.p1 as Vector3, new Vector3()),\n p2: worldMat4.projectPoint(triangle.p2 as Vector3, new Vector3()),\n };\n\n tmpPosition = ray.intersectTriangle(worldTriangle, new Vector3(), backfaceCulling);\n if (tmpPosition) {\n tmpPositions.push(tmpPosition);\n }\n }\n // 仅保存距离相机最近的点\n if (tmpPositions.length > 0) {\n let lastDistance: number;\n\n tmpPositions.forEach(item => {\n const distance = ray.origin.distanceSquared(item);\n\n if (!lastDistance || distance < lastDistance) {\n lastDistance = distance;\n position = item;\n }\n });\n }\n\n break;\n }\n case BoundingType.line: {// 线条包围盒,将线条转换到屏幕空间,计算线条与屏幕交互点的距离,小于阈值判定为点中\n const { points, width } = bounding;\n\n position = intersectRayLine(new Vector3(), pointInCanvas, points, width / 2, worldMat4, self.composition!.camera);\n\n break;\n }\n default:\n break;\n }\n if (position) {\n hitPositions.push(position);\n // 缓存距离相机最近的 BoundingKey\n if (gizmoComponent.hitBounding) {\n const distance = ray.origin.distanceSquared(position);\n const lastDistance = ray.origin.distanceSquared(gizmoComponent.hitBounding.position);\n\n if (distance < lastDistance) {\n gizmoComponent.hitBounding.key = key;\n gizmoComponent.hitBounding.position = position;\n }\n } else {\n gizmoComponent.hitBounding = {\n key,\n position,\n };\n }\n }\n }\n if (hitPositions.length === 0) {\n gizmoComponent.hitBounding = undefined;\n }\n\n return hitPositions;\n },\n behavior: spec.InteractBehavior.NOTIFY,\n };\n }\n };\n}\n","import type { Composition, Mesh, RenderFrame, Scene, Texture, VFXItem } from '@galacean/effects';\nimport { AbstractPlugin, RenderPass, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, TextureLoadAction, removeItem } from '@galacean/effects';\nimport { GizmoVFXItemType } from './define';\nimport { destroyWireframeMesh } from './wireframe';\nimport { axisIconMap } from './constants';\nimport { createImage, createTexture } from './util';\nimport { GeometryType } from './geometry';\nimport { GizmoComponent } from './gizmo-component';\n\nconst editorRenderPassName = 'editor-gizmo';\nconst frontRenderPassName = 'front-gizmo';\nconst behindRenderPassName = 'behind-gizmo';\nconst iconImages: Map<string, HTMLImageElement> = new Map();\n\nexport const iconTextures: Map<string, Texture> = new Map();\n\nexport class EditorGizmoPlugin extends AbstractPlugin {\n meshToAdd: Mesh[] = [];\n meshToRemove: Mesh[] = [];\n override order = 1001;\n\n static override async prepareResource (scene: Scene): Promise<any> {\n if (iconImages.size !== axisIconMap.size) {\n for (const [name, data] of axisIconMap) {\n iconImages.set(name, await createImage(data));\n }\n }\n\n return true;\n }\n\n static onPlayerDestroy (): void {\n iconTextures.clear();\n }\n\n override onCompositionConstructed (composition: Composition, scene: Scene) {\n const engine = composition.renderer.engine;\n\n iconImages.forEach((image, name) => {\n iconTextures.set(name, createTexture(engine, image));\n });\n iconImages.clear();\n }\n\n override onCompositionReset (composition: Composition) {\n const items = composition.items;\n const targetMap: { [key: string]: VFXItem[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const gizmoComponent = item.getComponent(GizmoComponent);\n\n if (gizmoComponent) {\n if (!targetMap[gizmoComponent.target]) {\n targetMap[gizmoComponent.target] = [];\n }\n targetMap[gizmoComponent.target].push(item);\n }\n }\n composition.loaderData.gizmoTarget = targetMap;\n composition.loaderData.gizmoItems = [];\n }\n\n // override onCompositionItemLifeBegin (composition: Composition, item: VFXItem<any>) {\n // if (item.type === '7') {\n // return;\n // }\n // const gizmoVFXItemList: GizmoVFXItem[] = composition.loaderData.gizmoTarget[item.id];\n\n // if (gizmoVFXItemList && gizmoVFXItemList.length > 0) {\n // for (const gizmoVFXItem of gizmoVFXItemList) {\n // switch (gizmoVFXItem.subType) {\n // case GizmoSubType.particleEmitter:\n // gizmoVFXItem.createParticleContent(item, this.meshToAdd);\n\n // break;\n // case GizmoSubType.modelWireframe:\n // gizmoVFXItem.createModelContent(item, this.meshToAdd);\n\n // break;\n // case GizmoSubType.box:\n // case GizmoSubType.sphere:\n // case GizmoSubType.cylinder:\n // case GizmoSubType.cone:\n // case GizmoSubType.torus:\n // case GizmoSubType.sprite:\n // case GizmoSubType.frustum:\n // case GizmoSubType.directionLight:\n // case GizmoSubType.pointLight:\n // case GizmoSubType.spotLight:\n // case GizmoSubType.floorGrid:\n // gizmoVFXItem.createBasicContent(item, this.meshToAdd, gizmoVFXItem.subType);\n\n // break;\n // case GizmoSubType.camera:\n // case GizmoSubType.light:\n // gizmoVFXItem.createBasicContent(item, this.meshToAdd, gizmoVFXItem.subType, iconTextures);\n\n // break;\n // case GizmoSubType.rotation:\n // case GizmoSubType.scale:\n // case GizmoSubType.translation:\n // gizmoVFXItem.createCombinationContent(item, this.meshToAdd, gizmoVFXItem.subType);\n\n // break;\n // case GizmoSubType.viewHelper:\n // gizmoVFXItem.createCombinationContent(item, this.meshToAdd, gizmoVFXItem.subType, iconTextures);\n\n // break;\n // case GizmoSubType.boundingBox:\n // gizmoVFXItem.createBoundingBoxContent(item, this.meshToAdd);\n\n // break;\n // default:\n // break;\n // }\n // }\n // }\n // if (item.type === GizmoVFXItemType) {\n // composition.loaderData.gizmoItems.push(item);\n // }\n // }\n\n override onCompositionItemRemoved (composition: Composition, item: VFXItem) {\n if (item.type === GizmoVFXItemType) {\n this.removeGizmoItem(composition, item);\n } else {\n const gizmoVFXItemList: VFXItem[] = composition.loaderData.gizmoTarget[item.id];\n\n if (gizmoVFXItemList && gizmoVFXItemList.length > 0) {\n gizmoVFXItemList.forEach(gizmoVFXItem => {\n this.removeGizmoItem(composition, gizmoVFXItem);\n });\n }\n }\n }\n\n removeGizmoItem (composition: Composition, gizmoVFXItem: VFXItem) {\n const gizmoMesh = gizmoVFXItem.content as Mesh;\n\n if (gizmoMesh && !gizmoMesh.isDestroyed) {\n gizmoMesh.dispose();\n\n if (gizmoMesh.name === GeometryType.FloorGrid.toString() || gizmoMesh.name === 'Box') {\n this.getFrontRenderPass(composition.renderFrame).removeMesh(gizmoMesh);\n } else {\n this.getEditorRenderPass(composition.renderFrame).removeMesh(gizmoMesh);\n }\n }\n if (gizmoVFXItem.getComponent(GizmoComponent).contents) {\n for (const [mesh] of gizmoVFXItem.getComponent(GizmoComponent).contents!) {\n if (!mesh.isDestroyed) {\n mesh.dispose();\n if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(composition.renderFrame).removeMesh(mesh);\n } else {\n this.getEditorRenderPass(composition.renderFrame).removeMesh(mesh);\n }\n }\n }\n }\n\n const gizmoComponent = gizmoVFXItem.getComponent(GizmoComponent);\n\n if (gizmoComponent && gizmoComponent.wireframeMeshes.length > 0) {\n gizmoComponent.wireframeMeshes.forEach(mesh => {\n if (!mesh.isDestroyed) {\n destroyWireframeMesh(mesh);\n this.getEditorRenderPass(composition.renderFrame).removeMesh(mesh);\n }\n });\n } else {\n const wireframeMesh = gizmoVFXItem.getComponent(GizmoComponent).wireframeMesh;\n\n if (wireframeMesh && !wireframeMesh.isDestroyed) {\n destroyWireframeMesh(wireframeMesh);\n this.getEditorRenderPass(composition.renderFrame).removeMesh(wireframeMesh);\n }\n }\n\n const arr: VFXItem[] = composition.loaderData.gizmoItems;\n const index = arr.indexOf(gizmoVFXItem);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n }\n\n override prepareRenderFrame (composition: Composition, renderFrame: RenderFrame): boolean {\n this.meshToAdd.forEach(mesh => {\n if (mesh.name === GeometryType.FloorGrid.toString() || mesh.name === 'Box') {\n this.getFrontRenderPass(renderFrame).addMesh(mesh);\n } else if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(renderFrame).addMesh(mesh);\n } else {\n this.getEditorRenderPass(renderFrame).addMesh(mesh);\n }\n });\n this.meshToRemove.forEach(mesh => {\n if (mesh.name === GeometryType.FloorGrid.toString() || mesh.name === 'Box') {\n this.getFrontRenderPass(renderFrame).removeMesh(mesh);\n } else if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(renderFrame).removeMesh(mesh);\n } else {\n this.getEditorRenderPass(renderFrame).removeMesh(mesh);\n }\n removeItem(this.meshToAdd, mesh);\n });\n this.meshToRemove.length = 0;\n // composition.loaderData.gizmoItems.forEach((item: GizmoVFXItem) => item.updateRenderData());\n\n return false;\n }\n\n getBehindRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === behindRenderPassName);\n\n if (!rp) {\n rp = new RenderPass(pipeline.renderer, {\n name: behindRenderPassName,\n priority: RenderPassPriorityPostprocess + RenderPassPriorityPostprocess,\n clearAction: {\n depthAction: TextureLoadAction.clear,\n },\n });\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n getEditorRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === editorRenderPassName);\n\n if (!rp) {\n rp = new RenderPass(pipeline.renderer, {\n name: editorRenderPassName,\n priority: RenderPassPriorityPostprocess + 2,\n });\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n getFrontRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === frontRenderPassName);\n\n if (!rp) {\n rp = new RenderPass(pipeline.renderer, {\n name: frontRenderPassName,\n priority: RenderPassPriorityPrepare + 2,\n });\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n}\n","import * as EFFECTS from '@galacean/effects';\nimport { VFXItem, logger, registerPlugin } from '@galacean/effects';\nimport { EditorGizmoPlugin } from './gizmo-loader';\nimport { GizmoSubType } from './define';\nimport { GeometryType, createGeometry } from './geometry';\nimport { GizmoComponent } from './gizmo-component';\n\nregisterPlugin('editor-gizmo', EditorGizmoPlugin, VFXItem);\n\nexport { DirectionLightData } from './geometry/direction-light';\nexport {\n GizmoSubType,\n GeometryType,\n GizmoComponent,\n createGeometry,\n};\n\nexport const version = __VERSION__;\n\nlogger.info(`Plugin editor gizmo version: ${version}.`);\n\nif (version !== EFFECTS.version) {\n console.error(\n '注意:请统一 Editor Gizmo 插件与 Player 版本,不统一的版本混用会有不可预知的后果!',\n '\\nAttention: Please ensure the Editor Gizmo plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!'\n );\n}\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","args","arguments","apply","err","undefined","_set_prototype_of","o","p","Object","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","writable","configurable","_array_like_to_array","arr","len","length","i","arr2","Array","_unsupported_iterable_to_array","minLen","n","toString","call","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","Symbol","iterator","next","bind","isArray","_instanceof","left","right","hasInstance","__decorate","decorators","target","desc","c","r","getOwnPropertyDescriptor","d","Reflect","decorate","defineProperty","__generator","thisArg","body","_","label","sent","t","trys","ops","f","y","g","verb","v","step","op","pop","push","e","SuppressedError","suppressed","message","Error","GizmoVFXItemType","GizmoSubType","_extends","assign","source","hasOwnProperty","Vector4","math","WireframeGeometryType","destroyWireframeMesh","mesh","geometry","dispose","material","textures","DestroyOptions","keep","geometries","updateWireframeMesh","originMesh","wireframe","type","cloneUniforms","firstGeometry","wireframeGeometry","drawCount","Math","abs","getDrawCount","indexData","getIndexData","data","getTriangleIndexData","getTriangleIndexDataByCount","setIndexData","setDrawCount","getQuadIndexData","faceCount","oid","Uint16Array","idx","base","createModeWireframe","engine","color","level","gpuCapability","SharedGeometry","mode","glContext","LINES","index","Uint32Array","props","shader","vertex","fragment","macros","materialOptions","newMacros","createGizmoShader","ShaderType","shared","glslVersion","GLSLVersion","GLSL3","GLSL1","Material","depthTest","setVector4","Mesh","priority","p0","p1","p2","options","attributes","indices","drawStart","initialize","isInitialized","buffers","bufferProps","indicesBuffer","createIndicesBuffer","getGLPipelineContext","flush","initialized","getAttributeNames","GLGeometry","shaderType","versionTag","shaderMatch","match","newShader","substring","createShaderWithMacros","xAxisColor","yAxisColor","zAxisColor","renderMode","TRIANGLES","axisIconMap","Map","set","createImage","imageUrl","image","Image","src","onload","onerror","createTexture","hookDestroy","texture","Texture","noop","moveToPointWidthFixDistance","targetPos","currentPos","vecCameraItem","clone","subtract","normalVecCameraItem","normalize","scalerVecCameraItem","multiply","vecScalerItem","vecItemScaler","add","GeometryData","points","uvs","normals","createXYPlaneCircle","radius","z","segments","thetaStart","thetaLength","startIndex","theta","x","cos","sin","createXZPlaneCircle","createYZPlaneCircle","Vector3","SphereGeometryData","widthSegments","heightSegments","phiStart","phiLength","PI","max","floor","thetaEnd","min","grid","iy","verticesRow","uOffset","ix","u","normal","toArray","a","b","BoxGeometryData","width","height","depth","buildPlane","w","uDir","vDir","widthHalf","heightHalf","depthHalf","point","vertexCounter","numberOfVertices","CylinderGeometryData","radiusTop","radiusBottom","radialSegments","openEnded","generateTorso","slope","indexRow","sinTheta","cosTheta","px","py","halfHeight","pz","indexArray","generateCap","top","centerIndexStart","sign","centerIndexEnd","uvU","uvV","ConeGeometryData","TorusGeometryData","tube","tubularSegments","arc","j","cx","cy","PlaneGeometryData","gridX","gridY","gridX1","gridY1","segmentWidth","segmentHeight","Euler","Matrix4","FrustumGeometryData","position","rotation","fov","aspect","near","far","fovY","ratio","halfY","tan","halfX","point1","point2","point3","point4","matrix","fromArray","toMatrix4","result1","transformPoint","result2","result3","result4","DirectionLightData","linesNumber","start","PointLightData","range","SpotLightData","spotAngle","angle","FloorLineEdgeGeometryData","sideLength","parts","end","GeometryType","createGeometry","size","geometryData","segments4","result","Geometry","a_Position","Float32Array","a_Normal","a_UV1","Ray","BoundingType","Vector2","distanceOfPointAndLine","line","AC","BC","AB","subtractVectors","lengthAC","lengthBC","lengthAB","P","allArea","sqrt","distance","l1","pow","l2","isInLine","projectionOfPointAndLine","line0","toVector2","line1","worldAB","worldAP","worldP","computeOrthographicOffCenter","bottom","tx","ty","tz","createMeshFromSubType","subType","boundingMap","iconTexture","WebGLRenderingContext","sprite","createSpriteMesh","camera","get","light","translation","createTranslationMesh","scale","createScaleMesh","viewHelper","createViewHelperMesh","createRotationMesh","createBasicMesh","radiusSegments","boundSize","xCircle","torus","yCircle","zCircle","center","sphere","alpha","xCircleBounding","yCircleBounding","zCircleBounding","xCircleTransform","Transform","valid","yCircleTransform","zCircleTransform","centerTransform","setRotation","triangle","triangles","getTriangle","backfaceCulling","transform","getAttributeData","mat4","getWorldMatrix","i0","i1","i2","projectPoint","axisSize","axisMesh","createAxisMesh","arrowSize","xArrow","cone","yArrow","zArrow","xArrowTransform","yArrowTransform","zArrowTransform","translate","planeSize","xyPlane","plane","yzPlane","zxPlane","xyPlaneTransform","yzPlaneTransform","zxPlaneTransform","delta","createAxisBounding","boxSize","centerBoxSize","xCube","box","yCube","zCube","centerCube","xCubeTransform","yCubeTransform","zCubeTransform","centerCubeTransform","posXSphere","posYSphere","posZSphere","posXSphereTransform","posYSphereTransform","posZSphereTransform","negXSphere","negYSphere","negZSphere","negXSphereTransform","negYSphereTransform","negZSphereTransform","isCentered","xAxis","yAxis","zAxis","xAxisTransform","yAxisTransform","zAxisTransform","materialType","geometryType","Sphere","cylinder","Cylinder","Cone","Torus","Sprite","Plane","frustum","Frustum","directionLight","DirectionLight","spotLight","SpotLight","pointLight","PointLight","floorGrid","FloorGrid","Box","createBlendMaterial","createHideBackMaterial","createMaterial","spriteColor","createSpriteMaterial","myColor","myDepthTest","uniformValues","u_color","u_model","uniformSemantics","u_viewinverse","u_v","u_p","u_et","setVector3","setMatrix","IDENTITY","stencilTest","blending","depthMask","u_cameraPos","u_center","ZERO","myAlpha","u_alpha","setVector2","blendEquation","FUNC_ADD","blendFunction","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","setTexture","intersectRayLine","out","pointInCanvas","worldMat4","up","elements","radiusPoint","mvpMat4","getModelViewProjection","screenStart","screenEnd","screenRadiusPoint","screenRadiusVector","screenRadius","screenPosition","inverseViewProjection","getInverseViewProjectionMatrix","rectSize","DEG2RAD","arcPath","rotate","rotMat4","negate","addPoint","transformNormal","h","myCenter","map","item","rect","pos","forEach","vec","combineGeometries","indicesBase","Shapes","ret","detail","anchors","block","unshift","Rectangle","Circle","Hemisphere","outerRadius","concat","Edge","hw","RectangleEdge","Donut","donutRadius","path","positions","keys","None","createMeshFromShape","shape","geo","createMesh","u_vp","Quaternion","constants","GizmoComponent","mat","fromIdentity","wireframeMeshes","getHitTestParams","boundingKeys","targetItem","worldPos","worldQuat","worldSca","assignWorldTRS","targetTransform","quat","gizmoSubType","getComponent","composition","cameraPos","itemPos","newPos","setPosition","HitTestType","custom","collect","ray","bounding","worldCenter","copyFrom","boxHalfSize","boxMax","boxMin","intersectBox","gizmoComponent","viewMat4","getViewMatrix","screenWidth","renderer","getWidth","screenHeight","getHeight","proMat4","cameraModelMat4","getInverseViewMatrix","localTransform","cloneFromMatrix","padding","localMat4","modelMat4","vpMat4","screenCenter","screenPoint","screenCenter2","screenPoint2","intersectSphere","tmpPositions","tmpPosition","worldTriangle","intersectTriangle","lastDistance","origin","distanceSquared","hitPositions","hitBounding","behavior","spec","InteractBehavior","NOTIFY","items","id","pluginSystem","plugins","plugin","gizmoPlugin","gizmoVFXItemList","loaderData","gizmoTarget","gizmoVFXItem","particleEmitter","createParticleContent","meshToAdd","modelWireframe","needCreateModelContent","createBasicContent","iconTextures","createCombinationContent","boundingBox","createBoundingBoxContent","gizmoItems","update","dt","updateRenderData","lateUpdate","createModelContent","content","wireframeMesh","particle","ParticleSystemRenderer","particleMesh","quad","worldMatrix","meshes","RendererComponent","mriMeshs","contents","worldScale","parentTransform","distanceToCneter","localMat","worldTransform","proMat5","getDefaultRenderMode","getDefaultSize","meshesToAdd","modelComponent","ms","assertExist","m","_content","gizmoItem","fromData","duration","ItemBehaviour","effectsClass","editorRenderPassName","frontRenderPassName","behindRenderPassName","iconImages","EditorGizmoPlugin","meshToRemove","order","onCompositionConstructed","scene","clear","onCompositionReset","targetMap","onCompositionItemRemoved","removeGizmoItem","gizmoMesh","isDestroyed","getFrontRenderPass","renderFrame","removeMesh","getEditorRenderPass","getBehindRenderPass","indexOf","splice","prepareRenderFrame","addMesh","removeItem","pipeline","rp","renderPasses","find","renderPass","RenderPass","RenderPassPriorityPostprocess","clearAction","depthAction","TextureLoadAction","addRenderPass","RenderPassPriorityPrepare","prepareResource","onPlayerDestroy","AbstractPlugin","registerPlugin","VFXItem","version","logger","EFFECTS","console"],"mappings":"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"}