@galacean/effects-plugin-editor-gizmo 2.7.4 → 2.8.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/define.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/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}\nfunction _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","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 { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _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","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 { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _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 { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _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","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, Iterator */\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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, inner;\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 if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\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 var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\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 __rewriteRelativeImportExtension,\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","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, spec } from '@galacean/effects';\nimport { GLSLVersion, glContext, GLGeometry, DestroyOptions, Material, Mesh, 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\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\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.geometry, mesh.material, 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({ geometries: DestroyOptions.keep });\n}\n\nexport function updateWireframeMesh (originGeometry: Geometry, originMaterial: Material, wireframe: Mesh, type: WireframeGeometryType) {\n wireframe.material.cloneUniforms(originMaterial);\n\n const geometry = originGeometry;\n const wireframeGeometry = wireframe.firstGeometry();\n\n for (const macro of Object.keys(originMaterial.enabledMacros)) {\n wireframe.material.enableMacro(macro, originMaterial.enabledMacros[macro]);\n }\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 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 } = mesh.material.shader.shaderData;\n const materialOptions = { ...mesh.material.props };\n\n const newMacros = [['PREVIEW_BORDER', 1]] as ShaderMacros;\n\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\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 = true;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh.geometry, mesh.material, 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.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","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 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\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\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 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\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 }`,\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 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 void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\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 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 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 }`,\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 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 void main(){\n gl_Position = effects_MatrixVP * u_model * vec4(a_Position,1.0);\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, Renderer, Texture, VFXItem } from '@galacean/effects';\nimport { Mesh } from '@galacean/effects';\nimport { HitTestType, ParticleSystemRenderer, RendererComponent, Transform, assertExist, effectsClass, glContext, math, serialize, 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 RendererComponent {\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 @serialize()\n coordinateSpace: CoordinateSpace = CoordinateSpace.Local;\n\n color: spec.vec3;\n renderMode!: GeometryDrawMode;\n depthTest?: boolean;\n mat = Matrix4.fromIdentity();\n wireframeMeshes: Mesh[] = [];\n\n mesh: Mesh | null = null;\n\n override onStart (): 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 gizmoSubType = this.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 this.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 composition?.loaderData.gizmoItems.push(this.item);\n }\n\n override onUpdate (dt: number): void {\n this.updateRenderData();\n }\n\n override render (renderer: Renderer): void {\n // The material of the 3D plugin is updated during the render phase. In order to obtain the correct value, it is kept consistent here.\n if (this.subType === GizmoSubType.modelWireframe) { // 模型线框\n if (this.wireframeMesh && this.targetItem) {\n //@ts-expect-error TODO 和 3D 类型解耦\n const pMesh = this.targetItem.getComponent(RendererComponent)?.content;\n const meshes = pMesh.subMeshes;\n const wireframeMeshes = this.wireframeMeshes;\n\n if (meshes?.length > 0) {\n wireframeMeshes[0].worldMatrix.copyFrom(pMesh.matrix);\n updateWireframeMesh(meshes[0].geometry.geometry, meshes[0].material.effectMaterial, wireframeMeshes[0], WireframeGeometryType.triangle);\n }\n }\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 && this.mesh) {\n this.mat = this.targetItem.transform.getWorldMatrix();\n this.mesh.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.geometry, particle.particleMesh.mesh.material, this.wireframeMesh, WireframeGeometryType.quad);\n this.wireframeMesh.worldMatrix = particle.particleMesh.mesh.worldMatrix;\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 // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\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 (this.mesh) { // 基础几何体\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 this.mesh.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 TODO 和 3D 类型解耦\n const psubMesh = modelComponent.content.subMeshes[0];\n const engine = item.composition?.renderer.engine;\n\n assertExist(engine);\n\n if (psubMesh) {\n this.targetItem = item;\n this.wireframeMeshes = [];\n\n const originMesh = Mesh.create(\n engine,\n {\n geometry: psubMesh.geometry.geometry,\n material: psubMesh.material.effectMaterial,\n priority: 3000,\n });\n const mesh = this.wireframeMesh = createModeWireframe(engine, originMesh, this.color);\n\n this.wireframeMeshes.push(mesh);\n meshesToAdd.push(mesh);\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.mesh = 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 = this.mesh = 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 = this.mesh = 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 const gizmoSubType = this.subType;\n\n // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\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\nexport enum CoordinateSpace {\n Local,\n World\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 override onCompositionConstructed (composition: Composition, scene: Scene) {\n const engine = composition.renderer.engine;\n\n iconTextures.clear();\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.getComponent(GizmoComponent).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';\n\nregisterPlugin('editor-gizmo', EditorGizmoPlugin, VFXItem);\n\nexport { DirectionLightData } from './geometry/direction-light';\nexport {\n GizmoSubType,\n GeometryType,\n createGeometry,\n};\nexport * from './gizmo-component';\n\n/**\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","Iterator","verb","v","step","op","pop","push","e","SuppressedError","suppressed","message","Error","GizmoVFXItemType","GizmoSubType","_extends","assign","source","hasOwnProperty","Vector4","math","WireframeGeometryType","destroyWireframeMesh","mesh","geometry","dispose","geometries","DestroyOptions","keep","updateWireframeMesh","originGeometry","originMaterial","wireframe","type","material","cloneUniforms","wireframeGeometry","firstGeometry","keys","enabledMacros","macro","enableMacro","drawCount","Math","abs","getDrawCount","indexData","getIndexData","data","getTriangleIndexData","getTriangleIndexDataByCount","setIndexData","setDrawCount","getQuadIndexData","faceCount","oid","Uint16Array","idx","base","createModeWireframe","engine","color","SharedGeometry","mode","glContext","LINES","index","Uint32Array","shader","shaderData","vertex","fragment","materialOptions","props","newMacros","macros","shared","glslVersion","gpuCapability","level","GLSLVersion","GLSL3","GLSL1","Material","depthTest","setVector4","Mesh","priority","p0","p1","p2","options","attributes","indices","drawStart","initialize","isInitialized","buffers","bufferProps","indicesBuffer","createIndicesBuffer","flush","initialized","getAttributeNames","GLGeometry","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","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","None","createMeshFromShape","shape","geo","createMesh","Quaternion","constants","GizmoComponent","coordinateSpace","mat","fromIdentity","wireframeMeshes","getHitTestParams","boundingKeys","targetItem","worldPos","worldQuat","worldSca","gizmoSubType","assignWorldTRS","targetTransform","quat","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","getComponent","behavior","spec","InteractBehavior","NOTIFY","onStart","items","id","pluginSystem","plugins","plugin","gizmoPlugin","particleEmitter","createParticleContent","meshToAdd","modelWireframe","needCreateModelContent","createModelContent","createBasicContent","iconTextures","createCombinationContent","boundingBox","createBoundingBoxContent","loaderData","gizmoItems","onUpdate","dt","updateRenderData","render","wireframeMesh","pMesh","RendererComponent","content","meshes","subMeshes","worldMatrix","effectMaterial","particle","ParticleSystemRenderer","particleMesh","quad","contents","worldScale","parentTransform","distanceToCneter","localMat","worldTransform","proMat5","getDefaultRenderMode","getDefaultSize","meshesToAdd","modelComponent","psubMesh","assertExist","originMesh","gizmoItem","fromData","duration","serialize","effectsClass","CoordinateSpace","editorRenderPassName","frontRenderPassName","behindRenderPassName","iconImages","EditorGizmoPlugin","meshToRemove","order","onCompositionConstructed","scene","clear","onCompositionReset","targetMap","gizmoTarget","onCompositionItemRemoved","removeGizmoItem","gizmoVFXItemList","gizmoVFXItem","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","AbstractPlugin","registerPlugin","VFXItem","version","logger","EFFECTS","console"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/constants.ts","../src/util.ts","../src/define.ts","../src/gizmo-vfx-item.ts","../src/math-utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../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/mesh.ts","../src/raycast.ts","../src/shape.ts","../src/wireframe.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}\nfunction _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","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 { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _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","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 { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _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 { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _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","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, Iterator */\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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, inner;\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 if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\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 var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\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 __rewriteRelativeImportExtension,\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,iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAAGwkGG9AAABYWlDQ1BrQ0dDb2xvc\n lNwYWNlRGlzcGxheVAzAAAokWNgYFJJLCjIYWFgYMjNKykKcndSiIiMUmB/yMAOhLwMYgwKicnFBY4BAT5AJQwwGhV8u8bACK\n Iv64LMOiU1tUm1XsDXYqbw1YuvRJsw1aMArpTU4mQg/QeIU5MLikoYGBhTgGzl8pICELsDyBYpAjoKyJ4DYqdD2BtA7CQI+wh\n YTUiQM5B9A8hWSM5IBJrB+API1klCEk9HYkPtBQFul8zigpzESoUAYwKuJQOUpFaUgGjn/ILKosz0jBIFR2AopSp45iXr6SgY\n GRiaMzCAwhyi+nMgOCwZxc4gxJrvMzDY7v////9uhJjXfgaGjUCdXDsRYhoWDAyC3AwMJ3YWJBYlgoWYgZgpLY2B4dNyBgbeS\n AYG4QtAPdHFacZGYHlGHicGBtZ7//9/VmNgYJ/MwPB3wv//vxf9//93MVDzHQaGA3kAFSFl7jXH0fsAAAA4ZVhJZk1NACoAAA\n AIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAAEygAwAEAAAAAQAAAEwAAAAANXHl2gAADOxJREFUeAHtXAuMVcUZPuf\n cu8uyC+626wOM8hBsLY192FJN1QKpmIJRxNZt2qahW2qxlCCwu/fa2lZpKPTeZYGlUN1YlfSRVIi80qqxpCjW1vqqrY0hBtyF\n YqNphV0q7HL3Pvr9lzuH/8ydmXPuayPkngTOP/9r/vln5p85/8xdy5KeeHzdjFgsflBCWw5HgCGTyaRmR6ORKQTH4/FxnJ6Fi\n SAjOc6jUWbk5cCMYS4Vi61tq60NPS5wicSwAC3bhQCsXbv2CrwmC1x7e/sTAnbfXV1dH3cLOoC3jnh4WcBOLNbZbdvWl3RK4F\n NbMHt44vHO/6xbt260BykK0PqskALj3wUs6Nm3jATjA/F415eJqHVyJNJxJ/r6t0amrPrcf55eWL9+/UcEMZFI7kbL+6ks98A\n cwVRfX//84sWLj4myBQ1NboEBnZ2dm6mYNRyd60rwVqbTVk22zJEkpSinPDYRk3gwvDdkMtZdoszfTU2NTYsWLRrgOC1Mtco1\n c2Y/ussblFHFp+1pV3sBQFmVKTvA5C9uKM0bXi4r7GrGqGtIpzPvkXa5RmGpHz7rM2ImRZgQ42UBk+k53jdFz7qW6YQweHdhv\n s3BAL4/Gu1QDmIhq1UmmiYY+VtnvXJocEWILA4J19SELxcKOV3g6J1n2RlGew2a9X3OTDBiWxprlI3nMVTkCbdKy0hIpYjwZC\n m9ofCL9OaPR5mIz7btLONMQWGPMgh9kAQdx9ppUoAmHlXRZWUqnsC4968y7dCora2Zpmrf8LA1OpMZfplo8uD1LF5cGCvM67w\n sw5jHu/NwMkKUseVwFzyBozfG13BHR8cejqs8jKmyXVULrJyowiMG3sPx7tCgOYlnPhhu4gwIQT2pVLqP4wgmfsTAVTDgeUHL\n KjszuS0L/vi9INIbc3oULwtY9CQMuBoV3k14B5rdfYFgEAJ+b8GPwLkG8/pKB5qzOxFB8FMg04Xc8HDyH3mDVmZWlWGAjRYdA\n O0yFd2Lc9qj0fYuL86/VJBh8PN+uOfD/mrVHI5jfx79+0c11YsNZBiG7AKMtC1cFOFxDwL4bI6T4Y0bN44aHBwakvGiy2Q8L/\n sahr35jzFufyiEYNBBGDRVlIO8c12f5rx+xrnzkgt5YY9Rg4UaRbrQmIxsCKZvv7ceb8lo2IYNGy7i7KGQcwMvlwg3muSNhqX\n Tac/qgC55y6TMj6ZbtlVyRsNUAiOFOzsNg+tPcA/hM/FWXi4UxlDI7tSCyAUIF/FeKJoURFkhPNgOTV6+fHmfTsbXMCGI6U3p\n octEudg3bZIjkfbuYuWrcjoPKLsSKaxLk8nUYSHU0FB//pIlS94VZfnd09PT2N8/ICJ5AlFeufESctiZvIeJ0JArHwH/pYIm3\n p5wQWsa7fS4UcRoMoro/f3H+ZipJZzpwdacf/VeQnVi5/JrLuN6DK1IwrAQJ44eXVe3dOnSUxyngrHQb8FCv0DQ5HVR4OU3jH\n ka26gZXnxoXjTatjsMpVEo/SmMcunhcOiqtra2v7mICgGRSGQmqYZTBlD/eaerSe2CBy18unfERCDFRu5b1NqRMOq0Eaf/x46\n lkerFM0gYssPtSs4YFN66dWuor+/wKnicVoTJ+EcrxUsYQz/HThWZlOKfogyj/KxIv/pUfQzjdHyQcSrrKcgw8lBvb19SVuJX\n Rhc9ie5SfvfqZAMbFo93X57JnHpDp8gPD+OOwrhmPz5BD2QYPFULT6nCxhHLCs+PRle8JBTSG2GgHZO8k+NysDKYKvjy82QqJ\n gqAMh7b7Atw8vFfGc/LlHLH9/pijsMi/jMs4ks5TgX7egzKvwflq7lw0ABKMvDe7fDe1kLlPUsSFxawbJRlNecCoeAwvxFEty\n F8uAdRxI2g/juzVO5gQ8eEhMRUTsMAfjEaXfg/jgsCwzhPqgZxTyrnazF6bHg49RAXwVIlrWucaobhtVc4x969e8O8LMNGw9C\n yz3GBFStWZJcMjgsKO47DdxTWCy+8Mtck62OYSbQwWnNzsyek2HZKmQIVWkfMsNbWVjm5MlYYoXqPmGGqyk24qmEm76hoVY+p\n vGLCVT2GPO51Xg+FKOWgfYzLApKU+3j0x/bnKD4UbgqHw+LjVquYE5LJ5GeRXP4Fx02fftUveVmGjYZNnjxxtrRB/AB2G3/mV\n 1VkhQHLiVmzZhm36MYx1tLSkoDXVgasLDAbtth1fsy+G0VSEIt13WJZqZI+x3KGHMMmM1DyLpBhonXYzeKegPOZUCjj22IhQ2\n /sLI5gZ/Iax1Xhqgcwnu6hz6+gnsCB1gVBeeluGzI823U3rUiPcvAjkP4LtEuyDEipY3qPIVj3cH4E4CuRUPmnjnfTpk3NJ06\n cdL9H8R0xAdklqs/z5MUxtIQOk7NGESfyViIl6RGUCpz/EYnmKQ4ODl7DEZS9pNnOcQR7DKN0Iwy5mjNRroqX/WB83Brzr/JB\n OenDakI5WU/vuYbBqLuh9Gveiu0HocjzCeelF1dSfcmjpzznmVnDKLLDqDW8GnwHPoNs47c5rpww5XdlfTDOXT8dOv5XLDdvi\n vyoLFyuMiXz0PjxXB+6MwTjjhHOoasEnIg0wHG4egrHVQpG49+mRDTXD+OaKGHtjrEcMY3Q0MgZKw1TIhqe81z7Qp0XY309Pe\n vgqUF4ypPnr7RRQj889xjyZndQGXacwNi+yzNFBWMl36ezk4fnwkvzMpn0zagrcPozZ9dJyD4Fj+4cO3bszsCXYMvUqBFxGAL\n 7TIzpTkSkT5fJbo8a9P4hOPEHyLz+BnBeVtbDXGKhYg6jfQMC0aNw1I0l2liQOBy2HwHoZuyXDxQkGJC57A6jTRluGVGGbkJA\n G7JsaOhbGIEU6f9N/3AhdBjOvhgw/tkfAnxFljHgf9A3iDh4PUbdywFFArGV1WHYnTyIRgfZIg3ACWsuvPD87tb8LKPRcDgOF\n +q6voqZ9xPAE43MIMJxf6mrGzWrmEM2le6yOIzuHCM1cQDOohGhfbDibJ4+/VPL/DIDWgUKAjrpO6h3I0imTEcS0/SjWJLfUK\n goCFWyw3KfFZRM0u5HEJB3Yw98K3q7YgEZm6T78G1yr6n1mKLXwI6/mnj8aPJGzI8/j37y5OA+IE3OasF+Zl4lnUVGYY90H0Y\n RXTV19+WE5w++dvYhxhZ0OsflCS7JYfSbM8QRw5GLMx/O2iZXWqkyTTkc7E416K8dGhp6wED3JZXkMMywlboaMKJ24QbzTh29\n UnisiocQK7VTE/HuK7HYBhqJRT1FO2z16tXNGF15mYYzVmR+dQYeWQgdaazbthM3FGtR0Q6rw+NT6as+9IqREdh7oRxbF+0zT\n kvxIRTtMB+9lJ3WBl8/2XLQERJSBj1Ft7toQYMx5zSp6rACu7fqsKrDCvRAgezVETZSDsPHtmkVwqFLqNBMaoGm69kpq4s9ou\n EYzin+1pu+WjOlsbHxXfPSnfxDd3d3QTkxc43BqPiFQ31v7yE6LqzVSSDXtk9H88OXlK3At+RiHOAFPvH1M2Zk6PZD+FAPkrN\n TmlOSw0gj8vU4zLB2YAqUrEtpYVmR9krKapSisiyNJGfhwtWP4Lh734+OQz7uUdzVai3lxq5wclkcJpTRmwIufjDyDUzVFjhw\n BlCmTCiJlP1BbEUe394+Zkz9/Z6/nVP2mqoKqx6oeqDqgbPLAwUFfayE03CQ8DhWwomimbR5xSLZinS0Mcsp+E1v+otoOC1/B\n PrFdbA+nPTcgYTgHpNcEBr2jF9HJpZ0uxdbYPsh6J+LtLbxD9hw/YEcRkdpOB36EyoznD47+Jlb8Tl8nC9+F6vqJm6cgLEteB\n iHKQtFudA3nIWfeKZ36OTguP319aOv8/s5Mskbl3x8ZtQMDBzfjeuMX9BVlsMPNDTUPevDYyRjlE7HuaKSB44ErfiHbEMbKGW\n tPA6kgUBXNnE77cnGxvNuwY2gM39yUapWm63Aweh6/Oo8AWVGZ6H3V+H+VlOQ3pHqHrEi2UY2kq2mSqmt1GZqu44vb0ri3sI3\n 8cNg35uaGMY7Jk2aeHtLS4sxa6GrWMbDyC0YYQtkfK78Ghr8MQ2tIDQ21vgl9qFtcM58P0HbDi2MRNoe5nzulMRfNL0+k0k+B\n WfVcQYZhqNexeWOGbjccVymnQ3lXAffRifgQ0OnnoHjPqGzmwYObmNvtu3wjZHIimzICdMtZqx8r8NZfqmYdzCkr8WdzoO6Cs\n 4mfK7DP4nFZgpi5HOw/SKN/XXwzT447jBW1Glh/NkYGnJaZ2FEncpknDn4Ow57NQrPajRWXxoA43Bne5Ztp5/AiNPdUJ9Avgq\n HQvbaVCpzG4Tc6Sk8AI/eiT1Qjyify+/cgKjDjFuEGae6f5EkX4WxaXsRjqjB0KTT4GstKxTGHzV+etmyZe+cyw7StS03QHro\n j4QlEqmZuJRPB9LPYSS+TTL/B5JA5hg3+BSjAAAAAElFTkSuQmCC`\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","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","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","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","/**\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 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 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\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\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 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\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 }`,\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 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 void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\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 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 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 }`,\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 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 void main(){\n gl_Position = effects_MatrixVP * u_model * vec4(a_Position,1.0);\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 { ShaderMacros, Geometry, GeometryDrawMode, Engine, spec } from '@galacean/effects';\nimport { GLSLVersion, glContext, GLGeometry, DestroyOptions, Material, Mesh, 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\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\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.geometry, mesh.material, 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({ geometries: DestroyOptions.keep });\n}\n\nexport function updateWireframeMesh (originGeometry: Geometry, originMaterial: Material, wireframe: Mesh, type: WireframeGeometryType) {\n wireframe.material.cloneUniforms(originMaterial);\n\n const geometry = originGeometry;\n const wireframeGeometry = wireframe.firstGeometry();\n\n for (const macro of Object.keys(originMaterial.enabledMacros)) {\n wireframe.material.enableMacro(macro, originMaterial.enabledMacros[macro]);\n }\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 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 } = mesh.material.shader.shaderData;\n const materialOptions = { ...mesh.material.props };\n\n const newMacros = [['PREVIEW_BORDER', 1]] as ShaderMacros;\n\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\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 = true;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh.geometry, mesh.material, 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.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","import type { GeometryDrawMode, HitTestCustomParams, RenderFrame, Renderer, Texture, VFXItem } from '@galacean/effects';\nimport {\n RenderPass, Mesh, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, HitTestType,\n TextureLoadAction, ParticleSystemRenderer, RendererComponent, Transform, assertExist,\n effectsClass, glContext, math, serialize, spec,\n} from '@galacean/effects';\nimport type { GizmoVFXItemOptions } from './define';\nimport { GizmoSubType } from './define';\nimport type { EditorGizmoPlugin } from './gizmo-loader';\nimport { iconTextures } from './gizmo-loader';\nimport type { GizmoItemBoundingSphere, GizmoItemBounding, Ray, TriangleLike } from './gizmo-vfx-item';\nimport { BoundingType } 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, destroyWireframeMesh, updateWireframeMesh } from './wireframe';\nimport { GeometryType } from './geometry';\n\nconst editorRenderPassName = 'editor-gizmo';\nconst frontRenderPassName = 'front-gizmo';\nconst behindRenderPassName = 'behind-gizmo';\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 RendererComponent {\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 @serialize()\n coordinateSpace: CoordinateSpace = CoordinateSpace.Local;\n\n color: spec.vec3;\n renderMode!: GeometryDrawMode;\n depthTest?: boolean;\n mat = Matrix4.fromIdentity();\n wireframeMeshes: Mesh[] = [];\n meshes: Mesh[] = [];\n mesh: Mesh | null = null;\n\n override onStart (): 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 gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.particleEmitter:\n this.createParticleContent(targetItem);\n\n break;\n case GizmoSubType.modelWireframe:\n this.needCreateModelContent = true;\n this.createModelContent(targetItem);\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, gizmoSubType);\n\n break;\n case GizmoSubType.camera:\n case GizmoSubType.light:\n this.createBasicContent(targetItem, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.rotation:\n case GizmoSubType.scale:\n case GizmoSubType.translation:\n this.createCombinationContent(targetItem, gizmoSubType);\n\n break;\n case GizmoSubType.viewHelper:\n this.createCombinationContent(targetItem, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.boundingBox:\n this.createBoundingBoxContent(targetItem);\n\n break;\n default:\n break;\n }\n composition?.loaderData.gizmoItems.push(this.item);\n }\n\n override onEnable (): void {\n super.onEnable();\n if (!this.item.composition) {\n return;\n }\n\n const renderFrame = this.item.composition.renderFrame;\n\n for (const mesh of this.meshes) {\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 }\n\n override onDisable (): void {\n super.onDisable();\n if (!this.item.composition) {\n return;\n }\n\n const renderFrame = this.item.composition.renderFrame;\n\n for (const mesh of this.meshes) {\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 }\n }\n\n override onUpdate (dt: number): void {\n this.updateRenderData();\n }\n\n override onDestroy (): void {\n const gizmoMesh = this.mesh;\n const composition = this.item.composition;\n\n if (!composition) {\n return;\n }\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 (this.contents) {\n for (const [mesh] of this.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 if (this && this.wireframeMeshes.length > 0) {\n this.wireframeMeshes.forEach(mesh => {\n if (!mesh.isDestroyed) {\n destroyWireframeMesh(mesh);\n this.getEditorRenderPass(composition.renderFrame).removeMesh(mesh);\n }\n });\n } else {\n const wireframeMesh = this.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(this.item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n }\n\n override render (renderer: Renderer): void {\n // The material of the 3D plugin is updated during the render phase. In order to obtain the correct value, it is kept consistent here.\n if (this.subType === GizmoSubType.modelWireframe) { // 模型线框\n if (this.wireframeMesh && this.targetItem) {\n //@ts-expect-error TODO 和 3D 类型解耦\n const pMesh = this.targetItem.getComponent(RendererComponent)?.content;\n const meshes = pMesh.subMeshes;\n const wireframeMeshes = this.wireframeMeshes;\n\n if (meshes?.length > 0) {\n wireframeMeshes[0].worldMatrix.copyFrom(pMesh.matrix);\n updateWireframeMesh(meshes[0].geometry.geometry, meshes[0].material.effectMaterial, wireframeMeshes[0], WireframeGeometryType.triangle);\n }\n }\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 && this.mesh) {\n this.mat = this.targetItem.transform.getWorldMatrix();\n this.mesh.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.geometry, particle.particleMesh.mesh.material, this.wireframeMesh, WireframeGeometryType.quad);\n this.wireframeMesh.worldMatrix = particle.particleMesh.mesh.worldMatrix;\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 // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\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 (this.mesh) { // 基础几何体\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 this.mesh.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) {\n const modelComponent = item.getComponent(RendererComponent);\n //@ts-expect-error TODO 和 3D 类型解耦\n const psubMesh = modelComponent.content.subMeshes[0];\n const engine = item.composition?.renderer.engine;\n\n assertExist(engine);\n\n if (psubMesh) {\n this.targetItem = item;\n this.wireframeMeshes = [];\n\n const originMesh = Mesh.create(\n engine,\n {\n geometry: psubMesh.geometry.geometry,\n material: psubMesh.material.effectMaterial,\n priority: 3000,\n });\n const mesh = this.wireframeMesh = createModeWireframe(engine, originMesh, this.color);\n\n this.wireframeMeshes.push(mesh);\n this.meshes.push(mesh);\n }\n }\n\n createParticleContent (item: VFXItem) {\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.mesh = createMeshFromShape(engine, shape, { color: this.color });\n\n this.meshes.push(mesh);\n }\n }\n\n /**\n * 创建 BoundingBox 几何体模型\n * @param item - VFXItem\n */\n createBoundingBoxContent (item: VFXItem) {\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 = this.mesh = createMeshFromShape(engine, shape, { color: this.color, depthTest: this.depthTest });\n\n this.meshes.push(mesh);\n }\n }\n\n /**\n * 创建基础几何体模型\n * @param item - VFXItem\n * @param subType - GizmoSubType 类型\n */\n createBasicContent (item: VFXItem, 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 = this.mesh = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options) as Mesh;\n\n this.targetItem = item;\n this.meshes.push(mesh);\n }\n\n /**\n * 创建组合几何体模型\n * @param item - VFXItem\n * @param subType - GizmoSubType 类型\n * @param iconTextures - XYZ 图标纹理(viewHelper 专用)\n */\n createCombinationContent (item: VFXItem, 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 this.meshes.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 const gizmoSubType = this.subType;\n\n // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\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 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\nexport enum CoordinateSpace {\n Local,\n World\n}\n","import type { Composition, Scene, Texture, VFXItem } from '@galacean/effects';\nimport { AbstractPlugin } from '@galacean/effects';\nimport { axisIconMap } from './constants';\nimport { createImage, createTexture } from './util';\nimport { GizmoComponent } from './gizmo-component';\n\nconst iconImages: Map<string, HTMLImageElement> = new Map();\n\nexport const iconTextures: Map<string, Texture> = new Map();\n\nexport class EditorGizmoPlugin extends AbstractPlugin {\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 override onCompositionConstructed (composition: Composition, scene: Scene) {\n const engine = composition.renderer.engine;\n\n iconTextures.clear();\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","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';\n\nregisterPlugin('editor-gizmo', EditorGizmoPlugin, VFXItem);\n\nexport { DirectionLightData } from './geometry/direction-light';\nexport {\n GizmoSubType,\n GeometryType,\n createGeometry,\n};\nexport * from './gizmo-component';\n\n/**\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","Iterator","verb","v","step","op","pop","push","e","SuppressedError","suppressed","message","Error","color","xAxisColor","yAxisColor","zAxisColor","renderMode","glContext","TRIANGLES","axisIconMap","Map","set","createImage","imageUrl","image","Image","src","onload","onerror","createTexture","engine","hookDestroy","texture","Texture","dispose","noop","moveToPointWidthFixDistance","targetPos","currentPos","vecCameraItem","clone","subtract","normalVecCameraItem","normalize","scalerVecCameraItem","multiply","vecScalerItem","vecItemScaler","add","GizmoSubType","math","Vector3","Ray","BoundingType","Matrix4","Vector2","distanceOfPointAndLine","point","line","AC","BC","AB","subtractVectors","lengthAC","lengthBC","lengthAB","P","allArea","Math","abs","sqrt","distance","l1","pow","l2","isInLine","projectionOfPointAndLine","line0","toVector2","line1","worldAB","worldAP","worldP","computeOrthographicOffCenter","bottom","top","near","far","a","b","tx","ty","tz","_extends","assign","source","hasOwnProperty","GeometryData","points","uvs","normals","indices","createXYPlaneCircle","radius","z","segments","thetaStart","thetaLength","startIndex","theta","x","cos","sin","createXZPlaneCircle","createYZPlaneCircle","SphereGeometryData","widthSegments","heightSegments","phiStart","phiLength","PI","max","floor","thetaEnd","min","grid","index","iy","verticesRow","uOffset","ix","u","normal","toArray","BoxGeometryData","width","height","depth","buildPlane","w","uDir","vDir","widthHalf","heightHalf","depthHalf","vertexCounter","numberOfVertices","CylinderGeometryData","radiusTop","radiusBottom","radialSegments","openEnded","generateTorso","slope","indexRow","sinTheta","cosTheta","px","py","halfHeight","pz","indexArray","generateCap","centerIndexStart","sign","centerIndexEnd","uvU","uvV","ConeGeometryData","TorusGeometryData","tube","tubularSegments","arc","j","cx","cy","PlaneGeometryData","gridX","gridY","gridX1","gridY1","segmentWidth","segmentHeight","Euler","FrustumGeometryData","position","rotation","fov","aspect","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","type","size","geometryData","segments4","result","Geometry","attributes","a_Position","data","Float32Array","a_Normal","a_UV1","Uint16Array","mode","drawCount","createMeshFromSubType","subType","boundingMap","iconTexture","options","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","firstGeometry","getTriangle","backfaceCulling","geometry","transform","getIndexData","getAttributeData","mat4","getWorldMatrix","i0","i1","i2","p0","p1","p2","projectPoint","axisSize","axisMesh","createAxisMesh","mesh","arrowSize","xArrow","cone","depthTest","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","material","createBlendMaterial","createHideBackMaterial","createMaterial","Mesh","priority","spriteColor","createSpriteMaterial","myColor","myDepthTest","Material","uniformValues","u_color","u_model","shader","fragment","vertex","shared","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","geometries","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","LINES","Vector4","WireframeGeometryType","destroyWireframeMesh","DestroyOptions","keep","updateWireframeMesh","originGeometry","originMaterial","wireframe","cloneUniforms","wireframeGeometry","enabledMacros","macro","enableMacro","getDrawCount","indexData","getTriangleIndexData","getTriangleIndexDataByCount","setIndexData","setDrawCount","getQuadIndexData","faceCount","oid","idx","base","createModeWireframe","SharedGeometry","Uint32Array","shaderData","materialOptions","props","newMacros","macros","glslVersion","gpuCapability","level","GLSLVersion","GLSL3","GLSL1","setVector4","drawStart","initialize","isInitialized","buffers","bufferProps","indicesBuffer","createIndicesBuffer","flush","initialized","getAttributeNames","GLGeometry","editorRenderPassName","frontRenderPassName","behindRenderPassName","Quaternion","constants","GizmoComponent","coordinateSpace","mat","fromIdentity","wireframeMeshes","meshes","getHitTestParams","boundingKeys","targetItem","worldPos","worldQuat","worldSca","gizmoSubType","assignWorldTRS","targetTransform","quat","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","getComponent","behavior","spec","InteractBehavior","NOTIFY","onStart","items","id","pluginSystem","plugins","plugin","gizmoPlugin","particleEmitter","createParticleContent","modelWireframe","needCreateModelContent","createModelContent","createBasicContent","iconTextures","createCombinationContent","boundingBox","createBoundingBoxContent","loaderData","gizmoItems","onEnable","renderFrame","getFrontRenderPass","addMesh","getBehindRenderPass","getEditorRenderPass","onDisable","removeMesh","onUpdate","dt","updateRenderData","onDestroy","gizmoMesh","isDestroyed","contents","wireframeMesh","indexOf","splice","render","pMesh","RendererComponent","content","subMeshes","worldMatrix","effectMaterial","particle","ParticleSystemRenderer","particleMesh","quad","worldScale","parentTransform","distanceToCneter","localMat","worldTransform","proMat5","getDefaultRenderMode","getDefaultSize","modelComponent","psubMesh","assertExist","originMesh","gizmoItem","fromData","duration","pipeline","rp","renderPasses","find","renderPass","RenderPass","RenderPassPriorityPostprocess","clearAction","depthAction","TextureLoadAction","clear","addRenderPass","RenderPassPriorityPrepare","serialize","effectsClass","CoordinateSpace","iconImages","EditorGizmoPlugin","order","onCompositionConstructed","scene","onCompositionReset","targetMap","gizmoTarget","prepareResource","AbstractPlugin","registerPlugin","VFXItem","version","logger","EFFECTS","console"],"mappings":"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"}