@galacean/engine-ui 1.6.6 → 1.6.8
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/package.json +3 -3
- package/dist/browser.js +0 -3662
- package/dist/browser.js.map +0 -1
- package/dist/browser.min.js +0 -2
- package/dist/browser.min.js.map +0 -1
- package/dist/main.js +0 -3658
- package/dist/main.js.map +0 -1
- package/dist/module.js +0 -3639
- package/dist/module.js.map +0 -1
- package/types/Utils.d.ts +0 -18
- package/types/component/UICanvas.d.ts +0 -91
- package/types/component/UIGroup.d.ts +0 -37
- package/types/component/UIRenderer.d.ts +0 -36
- package/types/component/UITransform.d.ts +0 -111
- package/types/component/advanced/Button.d.ts +0 -21
- package/types/component/advanced/Image.d.ts +0 -37
- package/types/component/advanced/Text.d.ts +0 -88
- package/types/component/index.d.ts +0 -11
- package/types/component/interactive/UIInteractive.d.ts +0 -55
- package/types/component/interactive/transition/ColorTransition.d.ts +0 -17
- package/types/component/interactive/transition/ScaleTransition.d.ts +0 -11
- package/types/component/interactive/transition/SpriteTransition.d.ts +0 -11
- package/types/component/interactive/transition/Transition.d.ts +0 -57
- package/types/enums/CanvasRenderMode.d.ts +0 -22
- package/types/enums/HorizontalAlignmentMode.d.ts +0 -13
- package/types/enums/ResolutionAdaptationMode.d.ts +0 -16
- package/types/enums/VerticalAlignmentMode.d.ts +0 -13
- package/types/index.d.ts +0 -25
- package/types/input/UIHitResult.d.ts +0 -1
- package/types/input/UIPointerEventEmitter.d.ts +0 -1
- package/types/interface/IElement.d.ts +0 -13
- package/types/interface/IGraphics.d.ts +0 -8
- package/types/interface/IGroupAble.d.ts +0 -14
package/dist/browser.min.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.min.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.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/_instanceof.js","../src/component/UIGroup.ts","../src/enums/CanvasRenderMode.ts","../src/enums/ResolutionAdaptationMode.ts","../src/enums/HorizontalAlignmentMode.ts","../src/enums/VerticalAlignmentMode.ts","../src/component/UITransform.ts","../src/component/UIRenderer.ts","../src/component/interactive/UIInteractive.ts","../src/component/UICanvas.ts","../src/Utils.ts","../src/component/advanced/Button.ts","../src/component/advanced/Image.ts","../src/component/advanced/Text.ts","../src/component/interactive/transition/Transition.ts","../src/component/interactive/transition/ColorTransition.ts","../src/component/interactive/transition/ScaleTransition.ts","../src/component/interactive/transition/SpriteTransition.ts","../src/input/UIHitResult.ts","../src/input/UIPointerEventEmitter.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","/******************************************************************************\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","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class 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 _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","import { Component, DisorderedArray, Entity, EntityModifyFlags, assignmentClone, ignoreClone } from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { IGroupAble } from \"../interface/IGroupAble\";\nimport { EntityUIModifyFlags, UICanvas } from \"./UICanvas\";\n\nexport class UIGroup extends Component implements IGroupAble {\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _group: UIGroup;\n /** @internal */\n @ignoreClone\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _disorderedElements: DisorderedArray<IGroupAble> = new DisorderedArray<IGroupAble>();\n\n /** @internal */\n @ignoreClone\n _globalAlpha = 1;\n /** @internal */\n @ignoreClone\n _globalInteractive = true;\n\n @assignmentClone\n private _alpha = 1;\n @assignmentClone\n private _interactive = true;\n @assignmentClone\n private _ignoreParentGroup = false;\n\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupDirtyFlags: number = GroupModifyFlags.None;\n\n /**\n * Whether to ignore the parent group.\n * @remarks If this parameter set to `true`,\n * all settings of the parent group will be ignored.\n */\n get ignoreParentGroup(): boolean {\n return this._ignoreParentGroup;\n }\n\n set ignoreParentGroup(value: boolean) {\n if (this._ignoreParentGroup !== value) {\n this._ignoreParentGroup = value;\n this._onGroupModify(GroupModifyFlags.All);\n }\n }\n\n /**\n * Whether the group is interactive.\n */\n get interactive(): boolean {\n return this._interactive;\n }\n\n set interactive(value: boolean) {\n if (this._interactive !== value) {\n this._interactive = value;\n this._onGroupModify(GroupModifyFlags.GlobalInteractive);\n }\n }\n\n /**\n * The alpha value of the group.\n */\n get alpha(): number {\n return this._alpha;\n }\n\n set alpha(value: number) {\n value = Math.max(0, Math.min(value, 1));\n if (this._alpha !== value) {\n this._alpha = value;\n this._onGroupModify(GroupModifyFlags.GlobalAlpha);\n }\n }\n\n /**\n * @internal\n */\n _getGlobalAlpha(): number {\n if (this._isContainDirtyFlag(GroupModifyFlags.GlobalAlpha)) {\n if (this._ignoreParentGroup) {\n this._globalAlpha = this._alpha;\n } else {\n const parentGroup = this._getGroup();\n this._globalAlpha = this._alpha * (parentGroup ? parentGroup._getGlobalAlpha() : 1);\n }\n this._setDirtyFlagFalse(GroupModifyFlags.GlobalAlpha);\n }\n return this._globalAlpha;\n }\n\n /**\n * @internal\n */\n _getGlobalInteractive(): boolean {\n if (this._isContainDirtyFlag(GroupModifyFlags.GlobalInteractive)) {\n if (this._ignoreParentGroup) {\n this._globalInteractive = this._interactive;\n } else {\n const parentGroup = this._getGroup();\n this._globalInteractive = this._interactive && (!parentGroup || parentGroup._getGlobalInteractive());\n }\n this._setDirtyFlagFalse(GroupModifyFlags.GlobalInteractive);\n }\n return this._globalInteractive;\n }\n\n constructor(entity: Entity) {\n super(entity);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n this._groupListener = this._groupListener.bind(this);\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n // @ts-ignore\n this.entity._dispatchModify(EntityUIModifyFlags.GroupEnableInScene);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n const disorderedElements = this._disorderedElements;\n disorderedElements.forEach((element: IGroupAble) => {\n Utils.setGroupDirty(element);\n });\n disorderedElements.length = 0;\n disorderedElements.garbageCollection();\n this._isRootCanvasDirty = this._isGroupDirty = false;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.CanvasEnableInScene) {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n _onGroupModify(flags: GroupModifyFlags, isPass: boolean = false): void {\n if (isPass && this._ignoreParentGroup) return;\n if (this._isContainDirtyFlags(flags)) return;\n this._setDirtyFlagTrue(flags);\n this._disorderedElements.forEach((element) => {\n element._onGroupModify(flags, true);\n });\n }\n\n private _isContainDirtyFlags(targetDirtyFlags: number): boolean {\n return (this._groupDirtyFlags & targetDirtyFlags) === targetDirtyFlags;\n }\n\n private _isContainDirtyFlag(type: number): boolean {\n return (this._groupDirtyFlags & type) != 0;\n }\n\n private _setDirtyFlagTrue(type: number) {\n this._groupDirtyFlags |= type;\n }\n\n private _setDirtyFlagFalse(type: number) {\n this._groupDirtyFlags &= ~type;\n }\n}\n\nexport enum GroupModifyFlags {\n None = 0x0,\n GlobalAlpha = 0x1,\n GlobalInteractive = 0x2,\n All = 0x3\n}\n","/**\n * Render mode for ui canvas.\n */\nexport enum CanvasRenderMode {\n /**\n * The UI canvas will be rendered directly onto the screen and adapted to screen space,\n * overlaying other rendering elements in the same scene.\n * @remarks if the `engine.canvas` size change, the UI canvas will automatically adapt.\n */\n ScreenSpaceOverlay = 0,\n /**\n * The UI canvas is placed at a specified distance in front of the camera and adapted to screen space,\n * with all objects rendered by the camera.\n * @remarks if the camera's properties or the `engine.canvas` size change, the UI canvas will automatically adapt.\n * @remarks if set `ScreenSpaceCamera` but no corresponding camera is assigned, the actual rendering mode defaults to `ScreenSpaceOverlay`.\n */\n ScreenSpaceCamera = 1,\n /**\n * The UI canvas is placed in the 3D world space and rendered by every camera in the same scene.\n */\n WorldSpace = 2\n}\n","/**\n * Resolution adaptation mode.\n * @remarks Only effective in screen space.\n */\nexport enum ResolutionAdaptationMode {\n /** Adapt based on width.(`referenceResolution.x`) */\n WidthAdaptation,\n /** Adapt based on height.(`referenceResolution.y`) */\n HeightAdaptation,\n /** Adapt based on both width and height.(`referenceResolution`) */\n BothAdaptation,\n /** Adapt to the side with a larger ratio. */\n ExpandAdaptation,\n /** Adapt to the side with smaller ratio. */\n ShrinkAdaptation\n}\n","/** Horizontal alignment mode. */\nexport enum HorizontalAlignmentMode {\n /** No horizontal alignment. */\n None = 0,\n /** Left-aligned, `alignLeft` drives `position.x`. */\n Left = 0x1,\n /** Right-aligned, `alignRight` drives `position.x`. */\n Right = 0x2,\n /** Horizontal stretch, `alignLeft` and `alignRight` drive `position.x` and `size.x`. */\n LeftAndRight = 0x3,\n /** Center-aligned, `alignCenter` drives `position.x`. */\n Center = 0x4\n}\n","/** Vertical alignment mode. */\nexport enum VerticalAlignmentMode {\n /** No vertical alignment. */\n None = 0,\n /** Top-aligned, `alignTop` drives `position.y`. */\n Top = 0x1,\n /** Bottom-aligned, `alignBottom` drives `position.y`. */\n Bottom = 0x2,\n /** Vertical stretch, `alignTop` and `alignBottom` drive `position.y` and `size.y`. */\n TopAndBottom = 0x3,\n /** Middle-aligned, `alignMiddle` drives `position.y`. */\n Middle = 0x4\n}\n","import {\n Entity,\n MathUtil,\n Rect,\n Transform,\n TransformModifyFlags,\n Vector2,\n deepClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { HorizontalAlignmentMode } from \"../enums/HorizontalAlignmentMode\";\nimport { VerticalAlignmentMode } from \"../enums/VerticalAlignmentMode\";\n\n/**\n * The Transform component exclusive to the UI element.\n */\nexport class UITransform extends Transform {\n @ignoreClone\n private _size = new Vector2(100, 100);\n @ignoreClone\n private _pivot = new Vector2(0.5, 0.5);\n @deepClone\n private _rect = new Rect(-50, -50, 100, 100);\n\n private _alignLeft = 0;\n private _alignRight = 0;\n private _alignCenter = 0;\n private _alignTop = 0;\n private _alignBottom = 0;\n private _alignMiddle = 0;\n private _horizontalAlignment = HorizontalAlignmentMode.None;\n private _verticalAlignment = VerticalAlignmentMode.None;\n\n /**\n * Width and height of UI element.\n */\n get size(): Vector2 {\n return this._size;\n }\n\n set size(value: Vector2) {\n const { _size: size } = this;\n if (size === value) return;\n (size.x !== value.x || size.y !== value.y) && size.copyFrom(value);\n }\n\n /**\n * Pivot of UI element.\n */\n get pivot(): Vector2 {\n return this._pivot;\n }\n\n set pivot(value: Vector2) {\n const { _pivot: pivot } = this;\n if (pivot === value) return;\n (pivot.x !== value.x || pivot.y !== value.y) && pivot.copyFrom(value);\n }\n\n /**\n * Horizontal alignment mode.\n *\n * @remarks\n * Controls how the element aligns horizontally within its parent:\n * - `Left` - Align to parent's left edge\n * - `Center` - Align to parent's horizontal center\n * - `Right` - Align to parent's right edge\n * - `LeftAndRight` - Align to both left and right edges (stretch to fill width)\n */\n get horizontalAlignment(): HorizontalAlignmentMode {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment(value: HorizontalAlignmentMode) {\n if (this._horizontalAlignment === value) return;\n this._horizontalAlignment = value;\n switch (value) {\n case HorizontalAlignmentMode.Left:\n case HorizontalAlignmentMode.Right:\n case HorizontalAlignmentMode.Center:\n this._onPositionChanged();\n break;\n case HorizontalAlignmentMode.LeftAndRight:\n this._onPositionChanged();\n this._onSizeChanged();\n break;\n default:\n break;\n }\n }\n\n /**\n * Left margin when horizontalAlignment is Left or LeftAndRight.\n *\n * @remarks\n * Only effective when horizontalAlignment includes Left mode.\n * Distance from the parent's left edge to the element's left edge.\n */\n get alignLeft(): number {\n return this._alignLeft;\n }\n\n set alignLeft(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignLeft)) return;\n this._alignLeft = value;\n if (this._horizontalAlignment & HorizontalAlignmentMode.Left) {\n this._onPositionChanged();\n this._horizontalAlignment & HorizontalAlignmentMode.Right && this._onSizeChanged();\n }\n }\n\n /**\n * Right margin when horizontalAlignment is Right or LeftAndRight.\n *\n * @remarks\n * Only effective when horizontalAlignment includes Right mode.\n * Distance from the parent's right edge to the element's right edge.\n */\n get alignRight(): number {\n return this._alignRight;\n }\n\n set alignRight(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignRight)) return;\n this._alignRight = value;\n if (this._horizontalAlignment & HorizontalAlignmentMode.Right) {\n this._onPositionChanged();\n this._horizontalAlignment & HorizontalAlignmentMode.Left && this._onSizeChanged();\n }\n }\n\n /**\n * Horizontal center offset when horizontalAlignment is Center.\n *\n * @remarks\n * Only effective when horizontalAlignment is Center mode.\n * Positive values move the element to the right, negative values to the left.\n */\n get alignCenter(): number {\n return this._alignCenter;\n }\n\n set alignCenter(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignCenter)) return;\n this._alignCenter = value;\n this._horizontalAlignment & HorizontalAlignmentMode.Center && this._onPositionChanged();\n }\n\n /**\n * Vertical alignment mode.\n *\n * @remarks\n * Controls how the element aligns vertically within its parent:\n * - `Top` - Align to parent's top edge\n * - `Middle` - Align to parent's vertical center\n * - `Bottom` - Align to parent's bottom edge\n * - `TopAndBottom` - Align to both top and bottom edges (stretch to fill height)\n */\n get verticalAlignment(): VerticalAlignmentMode {\n return this._verticalAlignment;\n }\n\n set verticalAlignment(value: VerticalAlignmentMode) {\n if (this._verticalAlignment === value) return;\n this._verticalAlignment = value;\n switch (value) {\n case VerticalAlignmentMode.Top:\n case VerticalAlignmentMode.Bottom:\n case VerticalAlignmentMode.Middle:\n this._onPositionChanged();\n break;\n case VerticalAlignmentMode.TopAndBottom:\n this._onPositionChanged();\n this._onSizeChanged();\n break;\n default:\n break;\n }\n }\n\n /**\n * Top margin when verticalAlignment is Top or TopAndBottom.\n *\n * @remarks\n * Only effective when verticalAlignment includes Top mode.\n * Used to offset the element from the parent's top edge.\n */\n get alignTop(): number {\n return this._alignTop;\n }\n\n set alignTop(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignTop)) return;\n this._alignTop = value;\n if (this._verticalAlignment & VerticalAlignmentMode.Top) {\n this._onPositionChanged();\n this._verticalAlignment & VerticalAlignmentMode.Bottom && this._onSizeChanged();\n }\n }\n\n /**\n * Bottom inset used in vertical alignment formulas.\n */\n get alignBottom(): number {\n return this._alignBottom;\n }\n\n set alignBottom(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignBottom)) return;\n this._alignBottom = value;\n if (this._verticalAlignment & VerticalAlignmentMode.Bottom) {\n this._onPositionChanged();\n this._verticalAlignment & VerticalAlignmentMode.Top && this._onSizeChanged();\n }\n }\n\n /**\n * Vertical middle offset relative to parent's middle.\n */\n get alignMiddle(): number {\n return this._alignMiddle;\n }\n\n set alignMiddle(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignMiddle)) return;\n this._alignMiddle = value;\n this._verticalAlignment & VerticalAlignmentMode.Middle && this._onPositionChanged();\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._onSizeChanged = this._onSizeChanged.bind(this);\n this._onPivotChanged = this._onPivotChanged.bind(this);\n // @ts-ignore\n this._size._onValueChanged = this._onSizeChanged;\n // @ts-ignore\n this._pivot._onValueChanged = this._onPivotChanged;\n }\n\n /**\n * @internal\n */\n _parentChange(): void {\n this._isParentDirty = true;\n this._updateWorldFlagWithParentRectChange(TransformModifyFlags.WmWpWeWqWsWus);\n }\n\n // @ts-ignore\n override _cloneTo(target: UITransform, srcRoot: Entity, targetRoot: Entity): void {\n // @ts-ignore\n super._cloneTo(target, srcRoot, targetRoot);\n\n const { _size: size, _pivot: pivot } = target;\n\n // @ts-ignore\n size._onValueChanged = pivot._onValueChanged = null;\n\n size.copyFrom(this._size);\n pivot.copyFrom(this._pivot);\n\n // @ts-ignore\n size._onValueChanged = target._onSizeChanged;\n // @ts-ignore\n pivot._onValueChanged = target._onPivotChanged;\n }\n\n protected override _onLocalMatrixChanging(): void {\n // `super._onLocalMatrixChanging()` will set `LocalMatrix` dirty flag `false`\n // If there is an alignment, `position` and `localMatrix` will be reset again\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n } else {\n super._onLocalMatrixChanging();\n }\n }\n\n protected override _onWorldMatrixChanging(): void {\n // `super._onWorldMatrixChanging()` will set `WorldMatrix` dirty flag `false`\n // If there is an alignment, `position` and `worldMatrix` will be reset again(`worldMatrix` dirty flag is already `true`)\n !this._horizontalAlignment && !this._verticalAlignment && super._onWorldMatrixChanging();\n }\n\n @ignoreClone\n protected override _onPositionChanged(): void {\n (this._horizontalAlignment || this._verticalAlignment) && this._updatePositionByAlignment();\n super._onPositionChanged();\n }\n\n @ignoreClone\n protected override _onWorldPositionChanged(): void {\n super._onWorldPositionChanged();\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._setDirtyFlagTrue(TransformModifyFlags.WorldPosition);\n }\n }\n\n private _updatePositionByAlignment(): void {\n const parentRect = (this._getParentTransform() as UITransform)?._rect;\n if (parentRect) {\n const position = this.position;\n // @ts-ignore\n position._onValueChanged = null;\n const rect = this._rect;\n switch (this._horizontalAlignment) {\n case HorizontalAlignmentMode.Left:\n case HorizontalAlignmentMode.LeftAndRight:\n position.x = parentRect.x - rect.x + this._alignLeft;\n break;\n case HorizontalAlignmentMode.Center:\n position.x = parentRect.x + parentRect.width * 0.5 - rect.x - rect.width * 0.5 + this._alignCenter;\n break;\n case HorizontalAlignmentMode.Right:\n position.x = parentRect.x + parentRect.width - rect.x - rect.width - this._alignRight;\n break;\n default:\n break;\n }\n switch (this._verticalAlignment) {\n case VerticalAlignmentMode.Top:\n position.y = parentRect.y + parentRect.height - rect.y - rect.height - this._alignTop;\n break;\n case VerticalAlignmentMode.Middle:\n position.y = parentRect.y + parentRect.height * 0.5 - rect.y - rect.height * 0.5 + this._alignMiddle;\n break;\n case VerticalAlignmentMode.Bottom:\n case VerticalAlignmentMode.TopAndBottom:\n position.y = parentRect.y - rect.y + this._alignBottom;\n break;\n default:\n break;\n }\n // @ts-ignore\n position._onValueChanged = this._onPositionChanged;\n }\n }\n\n private _updateSizeByAlignment(): void {\n const parentRect = (this._getParentTransform() as UITransform)?._rect;\n if (parentRect) {\n const size = this._size;\n // @ts-ignore\n size._onValueChanged = null;\n // The values of size must be greater than 0\n if (this._horizontalAlignment === HorizontalAlignmentMode.LeftAndRight) {\n size.x = Math.max(parentRect.width - this._alignLeft - this._alignRight, 0);\n }\n if (this._verticalAlignment === VerticalAlignmentMode.TopAndBottom) {\n size.y = Math.max(parentRect.height - this._alignTop - this._alignBottom, 0);\n }\n // @ts-ignore\n size._onValueChanged = this._onSizeChanged;\n }\n }\n\n private _updateRectBySizeAndPivot(): void {\n const { size, _pivot: pivot } = this;\n const x = -pivot.x * size.x;\n const y = -pivot.y * size.y;\n this._rect.set(x, y, size.x, size.y);\n }\n\n @ignoreClone\n private _onSizeChanged(): void {\n if (\n this._horizontalAlignment === HorizontalAlignmentMode.LeftAndRight ||\n this._verticalAlignment === VerticalAlignmentMode.TopAndBottom\n ) {\n this._updateSizeByAlignment();\n }\n this._updateRectBySizeAndPivot();\n this._updateWorldFlagWithSelfRectChange();\n // @ts-ignore\n this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Size);\n }\n\n @ignoreClone\n private _onPivotChanged(): void {\n this._updateRectBySizeAndPivot();\n this._updateWorldFlagWithSelfRectChange();\n // @ts-ignore\n this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Pivot);\n }\n\n private _updateWorldFlagWithSelfRectChange(): void {\n let worldFlags = 0;\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n worldFlags = TransformModifyFlags.WmWp;\n !this._isContainDirtyFlags(worldFlags) && this._worldAssociatedChange(worldFlags);\n }\n const children = this.entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n (children[i].transform as UITransform)?._updateWorldFlagWithParentRectChange?.(worldFlags);\n }\n }\n\n private _updateWorldFlagWithParentRectChange(flags: number, parentChange: boolean = true): void {\n let selfChange = false;\n if (parentChange) {\n const { _horizontalAlignment: horizontalAlignment, _verticalAlignment: verticalAlignment } = this;\n if (horizontalAlignment || verticalAlignment) {\n if (\n horizontalAlignment === HorizontalAlignmentMode.LeftAndRight ||\n verticalAlignment === VerticalAlignmentMode.TopAndBottom\n ) {\n this._updateSizeByAlignment();\n this._updateRectBySizeAndPivot();\n selfChange = true;\n }\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n flags |= TransformModifyFlags.WmWp;\n }\n }\n const containDirtyFlags = this._isContainDirtyFlags(flags);\n !containDirtyFlags && this._worldAssociatedChange(flags);\n if (selfChange || !containDirtyFlags) {\n const children = this.entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n (children[i].transform as UITransform)?._updateWorldFlagWithParentRectChange?.(flags, selfChange);\n }\n }\n // @ts-ignore\n selfChange && this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Size);\n }\n}\n\n/**\n * @internal\n * extends TransformModifyFlags\n */\nexport enum UITransformModifyFlags {\n Size = 0x200,\n Pivot = 0x400\n}\n","import {\n BatchUtils,\n Color,\n DependentMode,\n Entity,\n EntityModifyFlags,\n Matrix,\n Plane,\n Ray,\n Renderer,\n RendererUpdateFlags,\n ShaderMacroCollection,\n ShaderProperty,\n Vector3,\n Vector4,\n assignmentClone,\n deepClone,\n dependentComponents,\n ignoreClone\n} from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { UIHitResult } from \"../input/UIHitResult\";\nimport { IGraphics } from \"../interface/IGraphics\";\nimport { EntityUIModifyFlags, UICanvas } from \"./UICanvas\";\nimport { GroupModifyFlags, UIGroup } from \"./UIGroup\";\nimport { UITransform } from \"./UITransform\";\n\n@dependentComponents(UITransform, DependentMode.AutoAdd)\nexport class UIRenderer extends Renderer implements IGraphics {\n /** @internal */\n static _tempVec30: Vector3 = new Vector3();\n /** @internal */\n static _tempVec31: Vector3 = new Vector3();\n /** @internal */\n static _tempMat: Matrix = new Matrix();\n /** @internal */\n static _tempPlane: Plane = new Plane();\n /** @internal */\n static _textureProperty: ShaderProperty = ShaderProperty.getByName(\"renderer_UITexture\");\n\n /**\n * Custom boundary for raycast detection.\n * @remarks this is based on `this.entity.transform`.\n */\n @deepClone\n raycastPadding: Vector4 = new Vector4(0, 0, 0, 0);\n /** @internal */\n @ignoreClone\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _group: UIGroup;\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _subChunk;\n\n @assignmentClone\n private _raycastEnabled: boolean = true;\n @deepClone\n protected _color: Color = new Color(1, 1, 1, 1);\n\n /**\n * Rendering color for the ui renderer.\n */\n get color(): Color {\n return this._color;\n }\n\n set color(value: Color) {\n if (this._color !== value) {\n this._color.copyFrom(value);\n }\n }\n\n /**\n * Whether this renderer be picked up by raycast.\n */\n get raycastEnabled(): boolean {\n return this._raycastEnabled;\n }\n\n set raycastEnabled(value: boolean) {\n this._raycastEnabled = value;\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._dirtyUpdateFlag = RendererUpdateFlags.WorldVolume | UIRendererUpdateFlags.Color;\n this._onColorChanged = this._onColorChanged.bind(this);\n //@ts-ignore\n this._color._onValueChanged = this._onColorChanged;\n this._groupListener = this._groupListener.bind(this);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n }\n\n // @ts-ignore\n override _canBatch(elementA, elementB): boolean {\n return BatchUtils.canBatchSprite(elementA, elementB);\n }\n\n // @ts-ignore\n override _batch(elementA, elementB?): void {\n BatchUtils.batchFor2D(elementA, elementB);\n }\n\n // @ts-ignore\n override _updateTransformShaderData(context, onlyMVP: boolean, batched: boolean): void {\n // @ts-ignore\n super._updateTransformShaderData(context, onlyMVP, true);\n }\n\n // @ts-ignore\n override _prepareRender(context): void {\n // Update once per frame per renderer, not influenced by batched\n if (this._renderFrameCount !== this.engine.time.frameCount) {\n this._update(context);\n }\n\n this._render(context);\n\n // union camera global macro and renderer macro.\n ShaderMacroCollection.unionCollection(\n context.camera._globalShaderMacro,\n // @ts-ignore\n this.shaderData._macroCollection,\n //@ts-ignore\n this._globalShaderMacro\n );\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n // @ts-ignore\n this._overrideUpdate && this.scene._componentsManager.addOnUpdateRenderers(this);\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n // @ts-ignore\n this._overrideUpdate && this.scene._componentsManager.removeOnUpdateRenderers(this);\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n }\n\n /**\n * @internal\n */\n _getGlobalAlpha(): number {\n return this._getGroup()?._getGlobalAlpha() ?? 1;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number, entity: Entity): void {\n switch (flag) {\n case EntityModifyFlags.Parent:\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n case EntityModifyFlags.Child:\n entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n break;\n default:\n break;\n }\n }\n\n /**\n * @internal\n */\n _onGroupModify(flags: GroupModifyFlags): void {\n if (flags & GroupModifyFlags.GlobalAlpha) {\n this._dirtyUpdateFlag |= UIRendererUpdateFlags.Color;\n }\n }\n\n @ignoreClone\n private _onColorChanged(): void {\n this._dirtyUpdateFlag |= UIRendererUpdateFlags.Color;\n }\n\n /**\n * @internal\n */\n _getChunkManager() {\n // @ts-ignore\n return this.engine._batcherManager.primitiveChunkManagerUI;\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, out: UIHitResult, distance: number = Number.MAX_SAFE_INTEGER): boolean {\n const plane = UIRenderer._tempPlane;\n const transform = <UITransform>this._transformEntity.transform;\n const normal = plane.normal.copyFrom(transform.worldForward);\n plane.distance = -Vector3.dot(normal, transform.worldPosition);\n const curDistance = ray.intersectPlane(plane);\n if (curDistance >= 0 && curDistance < distance) {\n const hitPointWorld = ray.getPoint(curDistance, UIRenderer._tempVec30);\n const worldMatrixInv = UIRenderer._tempMat;\n Matrix.invert(transform.worldMatrix, worldMatrixInv);\n const localPosition = UIRenderer._tempVec31;\n Vector3.transformCoordinate(hitPointWorld, worldMatrixInv, localPosition);\n if (this._hitTest(localPosition)) {\n out.component = this;\n out.distance = curDistance;\n out.entity = this.entity;\n out.normal.copyFrom(normal);\n out.point.copyFrom(hitPointWorld);\n return true;\n }\n }\n return false;\n }\n\n protected _hitTest(localPosition: Vector3): boolean {\n const { x, y } = localPosition;\n const uiTransform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = uiTransform.size;\n const { x: pivotX, y: pivotY } = uiTransform.pivot;\n const { x: paddingLeft, y: paddingBottom, z: paddingRight, w: paddingTop } = this.raycastPadding;\n return (\n x >= -width * pivotX + paddingLeft &&\n x <= width * (1 - pivotX) - paddingRight &&\n y >= -height * pivotY + paddingTop &&\n y <= height * (1 - pivotY) - paddingBottom\n );\n }\n\n protected override _onDestroy(): void {\n if (this._subChunk) {\n this._getChunkManager().freeSubChunk(this._subChunk);\n this._subChunk = null;\n }\n super._onDestroy();\n //@ts-ignore\n this._color._onValueChanged = null;\n this._color = null;\n }\n}\n\n/**\n * @remarks Extends `RendererUpdateFlags`.\n */\nexport enum UIRendererUpdateFlags {\n Color = 0x2\n}\n","import { Entity, EntityModifyFlags, Script, assignmentClone, ignoreClone } from \"@galacean/engine\";\nimport { UIGroup } from \"../..\";\nimport { Utils } from \"../../Utils\";\nimport { IGroupAble } from \"../../interface/IGroupAble\";\nimport { EntityUIModifyFlags, UICanvas } from \"../UICanvas\";\nimport { GroupModifyFlags } from \"../UIGroup\";\nimport { Transition } from \"./transition/Transition\";\n\n/**\n * Interactive component.\n */\nexport class UIInteractive extends Script implements IGroupAble {\n private static _targetTempPath = new Array<number>();\n\n /** @internal */\n @ignoreClone\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _group: UIGroup;\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n\n /** @internal */\n @ignoreClone\n _globalInteractive: boolean = false;\n /** @internal */\n @ignoreClone\n _globalInteractiveDirty: boolean = false;\n\n @ignoreClone\n protected _transitions: Transition[] = [];\n @assignmentClone\n protected _interactive: boolean = true;\n @ignoreClone\n protected _state: InteractiveState = InteractiveState.Normal;\n\n /** @todo Multi-touch points are not considered yet. */\n @ignoreClone\n private _isPointerInside: boolean = false;\n @ignoreClone\n private _isPointerDragging: boolean = false;\n\n /**\n * The transitions of this interactive.\n */\n get transitions(): Readonly<Transition[]> {\n return this._transitions;\n }\n\n /**\n * Whether the interactive is enabled.\n */\n get interactive() {\n return this._interactive;\n }\n\n set interactive(value: boolean) {\n if (this._interactive !== value) {\n this._interactive = value;\n this._globalInteractiveDirty = true;\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._groupListener = this._groupListener.bind(this);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n }\n\n /**\n * Add transition on this interactive.\n * @param transition - The transition\n */\n addTransition(transition: Transition): void {\n const interactive = transition._interactive;\n if (interactive !== this) {\n interactive?.removeTransition(transition);\n this._transitions.push(transition);\n transition._interactive = this;\n transition._setState(this._state, true);\n }\n }\n\n /**\n * Remove a transition.\n * @param shape - The transition.\n */\n removeTransition(transition: Transition): void {\n const transitions = this._transitions;\n const lastOneIndex = transitions.length - 1;\n for (let i = lastOneIndex; i >= 0; i--) {\n if (transitions[i] === transition) {\n i !== lastOneIndex && (transitions[i] = transitions[lastOneIndex]);\n transitions.length = lastOneIndex;\n transition._interactive = null;\n break;\n }\n }\n }\n\n /**\n * Remove all transitions.\n */\n clearTransitions(): void {\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._interactive = null;\n }\n transitions.length = 0;\n }\n\n override onUpdate(deltaTime: number): void {\n if (this._getGlobalInteractive()) {\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._onUpdate(deltaTime);\n }\n }\n }\n\n override onPointerBeginDrag(): void {\n this._isPointerDragging = true;\n this._updateState(false);\n }\n\n override onPointerEndDrag(): void {\n this._isPointerDragging = false;\n this._updateState(false);\n }\n\n override onPointerEnter(): void {\n this._isPointerInside = true;\n this._updateState(false);\n }\n\n override onPointerExit(): void {\n this._isPointerInside = false;\n this._updateState(false);\n }\n\n override onDestroy(): void {\n super.onDestroy();\n const transitions = this._transitions;\n for (let i = transitions.length - 1; i >= 0; i--) {\n transitions[i].destroy();\n }\n }\n\n // @ts-ignore\n override _cloneTo(target: UIInteractive, srcRoot: Entity, targetRoot: Entity): void {\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n const srcTransition = transitions[i];\n const dstTransition = new (transitions[i].constructor as new () => Transition)();\n dstTransition.normal = srcTransition.normal;\n dstTransition.pressed = srcTransition.pressed;\n dstTransition.hover = srcTransition.hover;\n dstTransition.disabled = srcTransition.disabled;\n const transitionTarget = srcTransition.target;\n if (transitionTarget) {\n const paths = UIInteractive._targetTempPath;\n // @ts-ignore\n const success = Entity._getEntityHierarchyPath(srcRoot, transitionTarget.entity, paths);\n dstTransition.target = success\n ? // @ts-ignore\n Entity._getEntityByHierarchyPath(targetRoot, paths).getComponent(transitionTarget.constructor)\n : transitionTarget;\n }\n target.addTransition(dstTransition);\n }\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n // @ts-ignore\n super._onEnableInScene();\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n this._updateState(true);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n // @ts-ignore\n super._onDisableInScene();\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n this._isPointerInside = this._isPointerDragging = false;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.CanvasEnableInScene) {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _onGroupModify(flags: GroupModifyFlags): void {\n if (flags & GroupModifyFlags.GlobalInteractive) {\n this._globalInteractiveDirty = true;\n }\n }\n\n /**\n * @internal\n */\n _getGlobalInteractive(): boolean {\n if (this._globalInteractiveDirty) {\n const group = this._getGroup();\n const globalInteractive = this._interactive && (!group || group._getGlobalInteractive());\n if (this._globalInteractive !== globalInteractive) {\n this._globalInteractive = globalInteractive;\n this._updateState(true);\n }\n this._globalInteractiveDirty = false;\n }\n return this._globalInteractive;\n }\n\n private _updateState(instant: boolean): void {\n const state = this._getInteractiveState();\n if (this._state !== state) {\n this._state = state;\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._setState(state, instant);\n }\n }\n }\n\n private _getInteractiveState(): InteractiveState {\n if (!this._getGlobalInteractive()) {\n return InteractiveState.Disable;\n }\n if (this._isPointerDragging) {\n return InteractiveState.Pressed;\n } else {\n return this._isPointerInside ? InteractiveState.Hover : InteractiveState.Normal;\n }\n }\n}\n\nexport enum InteractiveState {\n Normal,\n Pressed,\n Hover,\n Disable\n}\n","import {\n BoolUpdateFlag,\n Camera,\n CameraModifyFlags,\n Component,\n DependentMode,\n DisorderedArray,\n Entity,\n EntityModifyFlags,\n Logger,\n MathUtil,\n Matrix,\n Ray,\n Vector2,\n Vector3,\n assignmentClone,\n deepClone,\n dependentComponents,\n ignoreClone\n} from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { CanvasRenderMode } from \"../enums/CanvasRenderMode\";\nimport { ResolutionAdaptationMode } from \"../enums/ResolutionAdaptationMode\";\nimport { UIHitResult } from \"../input/UIHitResult\";\nimport { IElement } from \"../interface/IElement\";\nimport { IGroupAble } from \"../interface/IGroupAble\";\nimport { UIGroup } from \"./UIGroup\";\nimport { UIRenderer } from \"./UIRenderer\";\nimport { UITransform } from \"./UITransform\";\nimport { UIInteractive } from \"./interactive/UIInteractive\";\n\n/**\n * The UI Canvas component serves as the root node for UI elements,\n * handling rendering and events based on it.\n */\n@dependentComponents(UITransform, DependentMode.AutoAdd)\nexport class UICanvas extends Component implements IElement {\n /** @internal */\n static _hierarchyCounter: number = 1;\n private static _targetTempPath: number[] = [];\n private static _tempGroupAbleList: IGroupAble[] = [];\n private static _tempVec3: Vector3 = new Vector3();\n private static _tempMat: Matrix = new Matrix();\n\n /** @internal */\n @ignoreClone\n _canvasIndex: number = -1;\n /** @internal */\n @ignoreClone\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n\n /** @internal */\n @ignoreClone\n _isRootCanvas: boolean = false;\n /** @internal */\n @ignoreClone\n _renderElement: any;\n /** @internal */\n @ignoreClone\n _sortDistance: number = 0;\n /** @internal */\n @ignoreClone\n _orderedRenderers: UIRenderer[] = [];\n /** @internal */\n @ignoreClone\n _realRenderMode: number = CanvasRealRenderMode.None;\n /** @internal */\n @ignoreClone\n _disorderedElements: DisorderedArray<IElement> = new DisorderedArray<IElement>();\n\n @ignoreClone\n private _renderMode = CanvasRenderMode.WorldSpace;\n @ignoreClone\n private _renderCamera: Camera;\n @ignoreClone\n private _cameraObserver: Camera;\n @assignmentClone\n private _resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation;\n @assignmentClone\n private _sortOrder: number = 0;\n @assignmentClone\n private _distance: number = 10;\n @deepClone\n private _referenceResolution: Vector2 = new Vector2(800, 600);\n @assignmentClone\n private _referenceResolutionPerUnit: number = 100;\n @ignoreClone\n private _hierarchyVersion: number = -1;\n @ignoreClone\n private _center: Vector3 = new Vector3();\n @ignoreClone\n private _centerDirtyFlag: BoolUpdateFlag;\n\n /**\n * The conversion ratio between reference resolution and unit for UI elements in this canvas.\n */\n get referenceResolutionPerUnit(): number {\n return this._referenceResolutionPerUnit;\n }\n\n set referenceResolutionPerUnit(value: number) {\n if (this._referenceResolutionPerUnit !== value) {\n this._referenceResolutionPerUnit = value;\n this._disorderedElements.forEach((element) => {\n element._onRootCanvasModify?.(RootCanvasModifyFlags.ReferenceResolutionPerUnit);\n });\n }\n }\n\n /**\n * The reference resolution of the UI canvas in `ScreenSpaceCamera` and `ScreenSpaceOverlay` mode.\n */\n get referenceResolution(): Vector2 {\n return this._referenceResolution;\n }\n\n set referenceResolution(value: Vector2) {\n const referenceResolution = this._referenceResolution;\n if (referenceResolution === value) return;\n (referenceResolution.x !== value.x || referenceResolution.y !== value.y) && referenceResolution.copyFrom(value);\n }\n\n /**\n * The rendering mode of the UI canvas.\n */\n get renderMode(): CanvasRenderMode {\n return this._renderMode;\n }\n\n set renderMode(mode: CanvasRenderMode) {\n const preMode = this._renderMode;\n if (preMode !== mode) {\n this._renderMode = mode;\n this._updateCameraObserver();\n this._setRealRenderMode(this._getRealRenderMode());\n }\n }\n\n /**\n * The camera used to render the UI canvas in `ScreenSpaceCamera` mode.\n * @remarks If set `ScreenSpaceCamera` but no corresponding camera is assigned, the actual rendering mode defaults to `ScreenSpaceOverlay`.\n */\n get renderCamera(): Camera {\n return this._renderCamera;\n }\n\n set renderCamera(value: Camera) {\n const preCamera = this._renderCamera;\n if (preCamera !== value) {\n value &&\n this._isSameOrChildEntity(value.entity) &&\n Logger.warn(\n \"Camera entity matching or nested within the canvas entity disables canvas auto-adaptation in ScreenSpaceCamera mode.\"\n );\n this._renderCamera = value;\n this._updateCameraObserver();\n const preRenderMode = this._realRenderMode;\n const curRenderMode = this._getRealRenderMode();\n if (preRenderMode === curRenderMode) {\n if (curRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n }\n } else {\n this._setRealRenderMode(curRenderMode);\n }\n }\n }\n\n /**\n * The screen resolution adaptation mode of the UI canvas in `ScreenSpaceCamera` and `ScreenSpaceOverlay` mode.\n */\n get resolutionAdaptationMode(): ResolutionAdaptationMode {\n return this._resolutionAdaptationMode;\n }\n\n set resolutionAdaptationMode(value: ResolutionAdaptationMode) {\n if (this._resolutionAdaptationMode !== value) {\n this._resolutionAdaptationMode = value;\n const realRenderMode = this._realRenderMode;\n if (\n realRenderMode === CanvasRenderMode.ScreenSpaceCamera ||\n realRenderMode === CanvasRenderMode.ScreenSpaceOverlay\n ) {\n this._adapterSizeInScreenSpace();\n }\n }\n }\n\n /**\n * The rendering order priority of the UI canvas in `ScreenSpaceOverlay` mode.\n */\n get sortOrder(): number {\n return this._sortOrder;\n }\n\n set sortOrder(value: number) {\n if (this._sortOrder !== value) {\n this._sortOrder = value;\n this._realRenderMode === CanvasRenderMode.ScreenSpaceOverlay &&\n // @ts-ignore\n (this.scene._componentsManager._overlayCanvasesSortingFlag = true);\n }\n }\n\n /**\n * The distance between the UI canvas and the camera in `ScreenSpaceCamera` mode.\n */\n get distance(): number {\n return this._distance;\n }\n\n set distance(value: number) {\n if (this._distance !== value) {\n this._distance = value;\n if (this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n }\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._onCanvasSizeListener = this._onCanvasSizeListener.bind(this);\n this._onCameraModifyListener = this._onCameraModifyListener.bind(this);\n this._onCameraTransformListener = this._onCameraTransformListener.bind(this);\n this._onReferenceResolutionChanged = this._onReferenceResolutionChanged.bind(this);\n // @ts-ignore\n this._referenceResolution._onValueChanged = this._onReferenceResolutionChanged;\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n this._centerDirtyFlag = entity.registerWorldChangeFlag();\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, out: UIHitResult, distance: number = Number.MAX_SAFE_INTEGER): boolean {\n const renderers = this._getRenderers();\n for (let i = renderers.length - 1; i >= 0; i--) {\n const element = renderers[i];\n if (element.raycastEnabled && element._raycast(ray, out, distance)) {\n return true;\n }\n }\n out.component = null;\n out.entity = null;\n out.distance = 0;\n out.point.set(0, 0, 0);\n out.normal.set(0, 0, 0);\n return false;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _canRender(camera: Camera): boolean {\n return this._renderMode !== CanvasRenderMode.ScreenSpaceCamera || this._renderCamera === camera;\n }\n\n /**\n * @internal\n */\n _prepareRender(context): void {\n const { engine, _realRenderMode: mode } = this;\n const { enableFrustumCulling, cullingMask, _frustum: frustum } = context.camera;\n const { frameCount } = engine.time;\n // @ts-ignore\n const renderElement = (this._renderElement = engine._renderElementPool.get());\n const virtualCamera = context.virtualCamera;\n this._updateSortDistance(virtualCamera.isOrthographic, virtualCamera.position, virtualCamera.forward);\n renderElement.set(this.sortOrder, this._sortDistance);\n const { width, height } = engine.canvas;\n const renderers = this._getRenderers();\n for (let i = 0, n = renderers.length; i < n; i++) {\n const renderer = renderers[i];\n // Filter by camera culling mask\n if (!(cullingMask & renderer.entity.layer)) {\n continue;\n }\n // Filter by camera frustum\n if (enableFrustumCulling) {\n switch (mode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n const { min, max } = renderer.bounds;\n if (min.x > width || max.x < 0 || min.y > height || max.y < 0) {\n continue;\n }\n break;\n case CanvasRenderMode.ScreenSpaceCamera:\n case CanvasRenderMode.WorldSpace:\n if (!frustum.intersectsBox(renderer.bounds)) {\n continue;\n }\n break;\n default:\n break;\n }\n }\n renderer._prepareRender(context);\n renderer._renderFrameCount = frameCount;\n }\n }\n\n /**\n * @internal\n */\n _updateSortDistance(isOrthographic: boolean, cameraPosition: Vector3, cameraForward: Vector3): void {\n switch (this._realRenderMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._sortDistance = 0;\n break;\n case CanvasRenderMode.ScreenSpaceCamera:\n this._sortDistance = this._distance;\n break;\n case CanvasRenderMode.WorldSpace:\n const boundsCenter = this._getCenter();\n if (isOrthographic) {\n const distance = UICanvas._tempVec3;\n Vector3.subtract(boundsCenter, cameraPosition, distance);\n this._sortDistance = Vector3.dot(distance, cameraForward);\n } else {\n this._sortDistance = Vector3.distanceSquared(boundsCenter, cameraPosition);\n }\n break;\n }\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n const entity = this.entity;\n // @ts-ignore\n entity._dispatchModify(EntityUIModifyFlags.CanvasEnableInScene, this);\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n this._setIsRootCanvas(false);\n Utils.cleanRootCanvas(this);\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number, param: any): void {\n if (this._isRootCanvas) {\n if (flag === EntityModifyFlags.Parent) {\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n } else if (flag === EntityUIModifyFlags.CanvasEnableInScene) {\n this._setIsRootCanvas(false);\n Utils.setRootCanvas(this, <UICanvas>param);\n }\n } else {\n if (flag === EntityModifyFlags.Parent) {\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n }\n }\n }\n\n /**\n * @internal\n */\n _cloneTo(target: UICanvas, srcRoot: Entity, targetRoot: Entity): void {\n target.renderMode = this._renderMode;\n const renderCamera = this._renderCamera;\n if (renderCamera) {\n const paths = UICanvas._targetTempPath;\n // @ts-ignore\n const success = Entity._getEntityHierarchyPath(srcRoot, renderCamera.entity, paths);\n // @ts-ignore\n target.renderCamera = success\n ? // @ts-ignore\n Entity._getEntityByHierarchyPath(targetRoot, paths).getComponent(Camera)\n : renderCamera;\n }\n }\n\n private _getRenderers(): UIRenderer[] {\n const { _orderedRenderers: renderers, entity } = this;\n const uiHierarchyVersion = entity._uiHierarchyVersion;\n if (this._hierarchyVersion !== uiHierarchyVersion) {\n renderers.length = this._walk(this.entity, renderers);\n UICanvas._tempGroupAbleList.length = 0;\n this._hierarchyVersion = uiHierarchyVersion;\n ++UICanvas._hierarchyCounter;\n }\n return renderers;\n }\n\n private _adapterPoseInScreenSpace(): void {\n const transform = this.entity.transform;\n const realRenderMode = this._realRenderMode;\n if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n const cameraEntity = this._renderCamera.entity;\n if (!this._isSameOrChildEntity(cameraEntity)) {\n const { transform: cameraTransform } = cameraEntity;\n const { worldPosition: cameraWorldPosition, worldForward: cameraWorldForward } = cameraTransform;\n const distance = this._distance;\n transform.setWorldPosition(\n cameraWorldPosition.x + cameraWorldForward.x * distance,\n cameraWorldPosition.y + cameraWorldForward.y * distance,\n cameraWorldPosition.z + cameraWorldForward.z * distance\n );\n transform.worldRotationQuaternion.copyFrom(cameraTransform.worldRotationQuaternion);\n }\n } else {\n const { canvas } = this.engine;\n transform.setWorldPosition(canvas.width * 0.5, canvas.height * 0.5, 0);\n transform.worldRotationQuaternion.set(0, 0, 0, 1);\n }\n }\n\n private _adapterSizeInScreenSpace(): void {\n const transform = <UITransform>this.entity.transform;\n const realRenderMode = this._realRenderMode;\n const { x: width, y: height } = this._referenceResolution;\n let curWidth: number;\n let curHeight: number;\n if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n const renderCamera = this._renderCamera;\n curHeight = renderCamera.isOrthographic\n ? renderCamera.orthographicSize * 2\n : 2 * (Math.tan(MathUtil.degreeToRadian(renderCamera.fieldOfView * 0.5)) * this._distance);\n curWidth = renderCamera.aspectRatio * curHeight;\n } else {\n const canvas = this.engine.canvas;\n curHeight = canvas.height;\n curWidth = canvas.width;\n }\n let expectX: number, expectY: number, expectZ: number;\n switch (this._resolutionAdaptationMode) {\n case ResolutionAdaptationMode.WidthAdaptation:\n expectX = expectY = expectZ = curWidth / width;\n break;\n case ResolutionAdaptationMode.HeightAdaptation:\n expectX = expectY = expectZ = curHeight / height;\n break;\n case ResolutionAdaptationMode.BothAdaptation:\n expectX = curWidth / width;\n expectY = curHeight / height;\n expectZ = (expectX + expectY) * 0.5;\n break;\n case ResolutionAdaptationMode.ExpandAdaptation:\n expectX = expectY = expectZ = Math.min(curWidth / width, curHeight / height);\n break;\n case ResolutionAdaptationMode.ShrinkAdaptation:\n expectX = expectY = expectZ = Math.max(curWidth / width, curHeight / height);\n break;\n default:\n break;\n }\n\n const worldMatrix = UICanvas._tempMat;\n Matrix.affineTransformation(\n UICanvas._tempVec3.set(expectX, expectY, expectZ),\n transform.worldRotationQuaternion,\n transform.worldPosition,\n worldMatrix\n );\n transform.worldMatrix = worldMatrix;\n transform.size.set(curWidth / expectX, curHeight / expectY);\n }\n\n private _walk(entity: Entity, renderers: UIRenderer[], depth = 0, group: UIGroup = null): number {\n // @ts-ignore\n const components: Component[] = entity._components;\n const tempGroupAbleList = UICanvas._tempGroupAbleList;\n let groupAbleCount = 0;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (!component.enabled) continue;\n if (component instanceof UIRenderer) {\n renderers[depth] = component;\n ++depth;\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n if (component._isGroupDirty) {\n tempGroupAbleList[groupAbleCount++] = component;\n }\n } else if (component instanceof UIInteractive) {\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n if (component._isGroupDirty) {\n tempGroupAbleList[groupAbleCount++] = component;\n }\n } else if (component instanceof UIGroup) {\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n component._isGroupDirty && Utils.setGroup(component, group);\n group = component;\n }\n }\n for (let i = 0; i < groupAbleCount; i++) {\n Utils.setGroup(tempGroupAbleList[i], group);\n }\n const children = entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n const child = children[i];\n child.isActive && (depth = this._walk(child, renderers, depth, group));\n }\n return depth;\n }\n\n private _updateCameraObserver(): void {\n const camera =\n this._isRootCanvas && this._renderMode === CanvasRenderMode.ScreenSpaceCamera ? this._renderCamera : null;\n const preCamera = this._cameraObserver;\n if (preCamera !== camera) {\n this._cameraObserver = camera;\n if (preCamera) {\n // @ts-ignore\n preCamera.entity._updateFlagManager.removeListener(this._onCameraTransformListener);\n // @ts-ignore\n preCamera._unRegisterModifyListener(this._onCameraModifyListener);\n }\n if (camera) {\n // @ts-ignore\n camera.entity._updateFlagManager.addListener(this._onCameraTransformListener);\n // @ts-ignore\n camera._registerModifyListener(this._onCameraModifyListener);\n }\n }\n }\n\n @ignoreClone\n private _onCameraModifyListener(flag: CameraModifyFlags): void {\n if (this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n switch (flag) {\n case CameraModifyFlags.ProjectionType:\n case CameraModifyFlags.AspectRatio:\n this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.FieldOfView:\n !this._renderCamera.isOrthographic && this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.OrthographicSize:\n this._renderCamera.isOrthographic && this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.DisableInScene:\n this._setRealRenderMode(CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n } else {\n flag === CameraModifyFlags.EnableInScene && this._setRealRenderMode(CanvasRenderMode.ScreenSpaceCamera);\n }\n }\n\n @ignoreClone\n private _onCameraTransformListener(): void {\n this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera && this._adapterPoseInScreenSpace();\n }\n\n private _addCanvasListener(): void {\n // @ts-ignore\n this.engine.canvas._sizeUpdateFlagManager.addListener(this._onCanvasSizeListener);\n }\n\n private _removeCanvasListener(): void {\n // @ts-ignore\n this.engine.canvas._sizeUpdateFlagManager.removeListener(this._onCanvasSizeListener);\n }\n\n @ignoreClone\n private _onCanvasSizeListener(): void {\n const { canvas } = this.engine;\n this.entity.transform.setWorldPosition(canvas.width * 0.5, canvas.height * 0.5, 0);\n this._adapterSizeInScreenSpace();\n }\n\n @ignoreClone\n private _onReferenceResolutionChanged(): void {\n const realRenderMode = this._realRenderMode;\n if (\n realRenderMode === CanvasRenderMode.ScreenSpaceOverlay ||\n realRenderMode === CanvasRenderMode.ScreenSpaceCamera\n ) {\n this._adapterSizeInScreenSpace();\n }\n }\n\n private _setIsRootCanvas(isRootCanvas: boolean): void {\n if (this._isRootCanvas !== isRootCanvas) {\n this._isRootCanvas = isRootCanvas;\n this._updateCameraObserver();\n this._setRealRenderMode(this._getRealRenderMode());\n if (isRootCanvas) {\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n } else {\n const { _disorderedElements: disorderedElements } = this;\n disorderedElements.forEach((element: IElement) => {\n if (element instanceof UICanvas) {\n const rootCanvas = Utils.searchRootCanvasInParents(element);\n element._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(element, rootCanvas);\n } else {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(<IGroupAble>element);\n }\n });\n disorderedElements.length = 0;\n disorderedElements.garbageCollection();\n this._orderedRenderers.length = 0;\n }\n }\n }\n\n private _getCenter(): Vector3 {\n if (this._centerDirtyFlag.flag) {\n const center = this._center;\n const uiTransform = <UITransform>this.entity.transform;\n const { pivot, size } = uiTransform;\n center.set((0.5 - pivot.x) * size.x, (0.5 - pivot.y) * size.y, 0);\n Vector3.transformCoordinate(center, uiTransform.worldMatrix, center);\n this._centerDirtyFlag.flag = false;\n }\n return this._center;\n }\n\n private _getRealRenderMode(): number {\n if (this._isRootCanvas) {\n const mode = this._renderMode;\n if (mode === CanvasRenderMode.ScreenSpaceCamera && !this._renderCamera?.enabled) {\n return CanvasRenderMode.ScreenSpaceOverlay;\n } else {\n return mode;\n }\n } else {\n return CanvasRealRenderMode.None;\n }\n }\n\n private _setRealRenderMode(curRealMode: number): void {\n const preRealMode = this._realRenderMode;\n if (preRealMode !== curRealMode) {\n this._realRenderMode = curRealMode;\n // @ts-ignore\n const componentsManager = this.scene._componentsManager;\n switch (preRealMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._removeCanvasListener();\n case CanvasRenderMode.ScreenSpaceCamera:\n case CanvasRenderMode.WorldSpace:\n componentsManager.removeUICanvas(this, preRealMode === CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n switch (curRealMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._addCanvasListener();\n case CanvasRenderMode.ScreenSpaceCamera:\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n case CanvasRenderMode.WorldSpace:\n componentsManager.addUICanvas(this, curRealMode === CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n }\n }\n\n private _isSameOrChildEntity(cameraEntity: Entity): boolean {\n const canvasEntity = this.entity;\n while (cameraEntity) {\n if (cameraEntity === canvasEntity) return true;\n cameraEntity = cameraEntity.parent;\n }\n return false;\n }\n}\n\n/**\n * @remarks Extends `CanvasRenderMode`.\n */\nenum CanvasRealRenderMode {\n None = 4\n}\n\n/**\n * @remarks Extends `EntityModifyFlags`.\n */\nexport enum EntityUIModifyFlags {\n CanvasEnableInScene = 0x4,\n GroupEnableInScene = 0x8\n}\n\nexport enum RootCanvasModifyFlags {\n None = 0x0,\n ReferenceResolutionPerUnit = 0x1,\n All = 0x1\n}\n","import { Entity } from \"@galacean/engine\";\nimport { RootCanvasModifyFlags, UICanvas } from \"./component/UICanvas\";\nimport { GroupModifyFlags, UIGroup } from \"./component/UIGroup\";\nimport { IElement } from \"./interface/IElement\";\nimport { IGroupAble } from \"./interface/IGroupAble\";\n\nexport class Utils {\n static setRootCanvasDirty(element: IElement): void {\n if (element._isRootCanvasDirty) return;\n element._isRootCanvasDirty = true;\n this._registerRootCanvas(element, null);\n element._onRootCanvasModify?.(RootCanvasModifyFlags.All);\n }\n\n static setRootCanvas(element: IElement, rootCanvas: UICanvas): void {\n element._isRootCanvasDirty = false;\n this._registerRootCanvas(element, rootCanvas);\n const fromEntity = element instanceof UICanvas ? element.entity.parent : element.entity;\n const toEntity = rootCanvas?.entity.parent ?? null;\n this._registerListener(fromEntity, toEntity, element._rootCanvasListener, element._rootCanvasListeningEntities);\n }\n\n static cleanRootCanvas(element: IElement): void {\n this._registerRootCanvas(element, null);\n this._unRegisterListener(element._rootCanvasListener, element._rootCanvasListeningEntities);\n }\n\n static searchRootCanvasInParents(element: IElement): UICanvas {\n let entity = element instanceof UICanvas ? element.entity.parent : element.entity;\n while (entity) {\n // @ts-ignore\n const components = entity._components;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (component.enabled && component instanceof UICanvas && component._isRootCanvas) {\n return component;\n }\n }\n entity = entity.parent;\n }\n return null;\n }\n\n static setGroupDirty(element: IGroupAble): void {\n if (element._isGroupDirty) return;\n element._isGroupDirty = true;\n this._registerGroup(element, null);\n element._onGroupModify(GroupModifyFlags.All);\n }\n\n static setGroup(element: IGroupAble, group: UIGroup): void {\n element._isGroupDirty = false;\n this._registerGroup(element, group);\n const rootCanvas = element._getRootCanvas();\n if (rootCanvas) {\n const fromEntity = element instanceof UIGroup ? element.entity.parent : element.entity;\n const toEntity = group?.entity ?? rootCanvas.entity.parent;\n this._registerListener(fromEntity, toEntity, element._groupListener, element._groupListeningEntities);\n } else {\n this._unRegisterListener(element._groupListener, element._groupListeningEntities);\n }\n }\n\n static cleanGroup(element: IGroupAble): void {\n this._registerGroup(element, null);\n this._unRegisterListener(element._groupListener, element._groupListeningEntities);\n }\n\n static searchGroupInParents(element: IGroupAble): UIGroup {\n const rootCanvas = element._getRootCanvas();\n if (!rootCanvas) return null;\n let entity = element instanceof UIGroup ? element.entity.parent : element.entity;\n const rootCanvasParent = rootCanvas.entity.parent;\n while (entity && entity !== rootCanvasParent) {\n // @ts-ignore\n const components = entity._components;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (component.enabled && component instanceof UIGroup) {\n return component;\n }\n }\n entity = entity.parent;\n }\n return null;\n }\n\n private static _registerRootCanvas(element: IElement, canvas: UICanvas): void {\n const preCanvas = element._rootCanvas;\n if (preCanvas !== canvas) {\n if (preCanvas) {\n const replaced = preCanvas._disorderedElements.deleteByIndex(element._indexInRootCanvas);\n replaced && (replaced._indexInRootCanvas = element._indexInRootCanvas);\n element._indexInRootCanvas = -1;\n }\n if (canvas) {\n const disorderedElements = canvas._disorderedElements;\n element._indexInRootCanvas = disorderedElements.length;\n disorderedElements.add(element);\n }\n element._rootCanvas = canvas;\n }\n }\n\n private static _registerGroup(element: IGroupAble, group: UIGroup): void {\n const preGroup = element._group;\n if (preGroup !== group) {\n if (preGroup) {\n const replaced = preGroup._disorderedElements.deleteByIndex(element._indexInGroup);\n replaced && (replaced._indexInGroup = element._indexInGroup);\n element._indexInGroup = -1;\n }\n if (group) {\n const disorderedElements = group._disorderedElements;\n element._indexInGroup = disorderedElements.length;\n disorderedElements.add(element);\n }\n element._group = group;\n element._onGroupModify(GroupModifyFlags.All);\n }\n }\n\n private static _registerListener(\n entity: Entity,\n root: Entity,\n listener: (flag: number, param?: any) => void,\n listeningEntities: Entity[]\n ): void {\n let count = 0;\n while (entity && entity !== root) {\n const preEntity = listeningEntities[count];\n if (preEntity !== entity) {\n // @ts-ignore\n preEntity?._unRegisterModifyListener(listener);\n listeningEntities[count] = entity;\n // @ts-ignore\n entity._registerModifyListener(listener);\n }\n entity = entity.parent;\n count++;\n }\n listeningEntities.length = count;\n }\n\n private static _unRegisterListener(listener: (flag: number, param?: any) => void, listeningEntities: Entity[]): void {\n for (let i = 0, n = listeningEntities.length; i < n; i++) {\n // @ts-ignore\n listeningEntities[i]._unRegisterModifyListener(listener);\n }\n listeningEntities.length = 0;\n }\n}\n","import { ignoreClone, PointerEventData, SafeLoopArray } from \"@galacean/engine\";\nimport { UIInteractive } from \"../interactive/UIInteractive\";\n\nexport class Button extends UIInteractive {\n @ignoreClone\n private _listeners: SafeLoopArray<IUIListener> = new SafeLoopArray<IUIListener>();\n\n /**\n * Add a listening function for click.\n * @param listener - The listening function\n */\n addClicked(listener: (event: PointerEventData) => void): void {\n this._listeners.push({ fn: listener });\n }\n\n /**\n * Remove a listening function of click.\n * @param listener - The listening function\n */\n removeClicked(listener: (event: PointerEventData) => void): void {\n this._listeners.findAndRemove((value) => (value.fn === listener ? (value.destroyed = true) : false));\n }\n\n override onPointerClick(event: PointerEventData): void {\n if (!this._getGlobalInteractive()) return;\n const listeners = this._listeners.getLoopArray();\n for (let i = 0, n = listeners.length; i < n; i++) {\n const listener = listeners[i];\n !listener.destroyed && listener.fn(event);\n }\n }\n\n override onDestroy(): void {\n super.onDestroy();\n this._listeners.findAndRemove((value) => (value.destroyed = true));\n }\n}\n\nexport interface IUIListener {\n fn: (event: PointerEventData) => void;\n destroyed?: boolean;\n}\n","import {\n BoundingBox,\n Entity,\n ISpriteAssembler,\n ISpriteRenderer,\n MathUtil,\n RenderQueueFlags,\n RendererUpdateFlags,\n SimpleSpriteAssembler,\n SlicedSpriteAssembler,\n Sprite,\n SpriteDrawMode,\n SpriteModifyFlags,\n SpriteTileMode,\n TiledSpriteAssembler,\n assignmentClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { CanvasRenderMode } from \"../../enums/CanvasRenderMode\";\nimport { RootCanvasModifyFlags } from \"../UICanvas\";\nimport { UIRenderer, UIRendererUpdateFlags } from \"../UIRenderer\";\nimport { UITransform, UITransformModifyFlags } from \"../UITransform\";\n\n/**\n * UI element that renders an image.\n */\nexport class Image extends UIRenderer implements ISpriteRenderer {\n @ignoreClone\n private _sprite: Sprite = null;\n @ignoreClone\n private _drawMode: SpriteDrawMode;\n @ignoreClone\n private _assembler: ISpriteAssembler;\n @assignmentClone\n private _tileMode: SpriteTileMode = SpriteTileMode.Continuous;\n @assignmentClone\n private _tiledAdaptiveThreshold: number = 0.5;\n\n /**\n * The draw mode of the image.\n */\n get drawMode(): SpriteDrawMode {\n return this._drawMode;\n }\n\n set drawMode(value: SpriteDrawMode) {\n if (this._drawMode !== value) {\n this._drawMode = value;\n switch (value) {\n case SpriteDrawMode.Simple:\n this._assembler = SimpleSpriteAssembler;\n break;\n case SpriteDrawMode.Sliced:\n this._assembler = SlicedSpriteAssembler;\n break;\n case SpriteDrawMode.Tiled:\n this._assembler = TiledSpriteAssembler;\n break;\n default:\n break;\n }\n this._assembler.resetData(this);\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n\n /**\n * The tiling mode of the image. (Only works in tiled mode.)\n */\n get tileMode(): SpriteTileMode {\n return this._tileMode;\n }\n\n set tileMode(value: SpriteTileMode) {\n if (this._tileMode !== value) {\n this._tileMode = value;\n if (this.drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n }\n\n /**\n * Stretch Threshold in Tile Adaptive Mode, specified in normalized. (Only works in tiled adaptive mode.)\n */\n get tiledAdaptiveThreshold(): number {\n return this._tiledAdaptiveThreshold;\n }\n\n set tiledAdaptiveThreshold(value: number) {\n if (value !== this._tiledAdaptiveThreshold) {\n value = MathUtil.clamp(value, 0, 1);\n this._tiledAdaptiveThreshold = value;\n if (this.drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n }\n\n /**\n * The Sprite to render.\n */\n get sprite(): Sprite {\n return this._sprite;\n }\n\n set sprite(value: Sprite | null) {\n const lastSprite = this._sprite;\n if (lastSprite !== value) {\n if (lastSprite) {\n this._addResourceReferCount(lastSprite, -1);\n // @ts-ignore\n lastSprite._updateFlagManager.removeListener(this._onSpriteChange);\n }\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n if (value) {\n this._addResourceReferCount(value, 1);\n // @ts-ignore\n value._updateFlagManager.addListener(this._onSpriteChange);\n this.shaderData.setTexture(UIRenderer._textureProperty, value.texture);\n } else {\n this.shaderData.setTexture(UIRenderer._textureProperty, null);\n }\n this._sprite = value;\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this.drawMode = SpriteDrawMode.Simple;\n this.setMaterial(this._engine._getUIDefaultMaterial());\n this._onSpriteChange = this._onSpriteChange.bind(this);\n }\n\n /**\n * @internal\n */\n _onRootCanvasModify(flag: RootCanvasModifyFlags): void {\n if (flag & RootCanvasModifyFlags.ReferenceResolutionPerUnit) {\n const drawMode = this._drawMode;\n if (drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.All;\n } else if (drawMode === SpriteDrawMode.Sliced) {\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n }\n }\n }\n\n /**\n * @internal\n */\n _cloneTo(target: Image, srcRoot: Entity, targetRoot: Entity): void {\n // @ts-ignore\n super._cloneTo(target, srcRoot, targetRoot);\n target.sprite = this._sprite;\n target.drawMode = this._drawMode;\n }\n\n protected override _updateBounds(worldBounds: BoundingBox): void {\n const sprite = this._sprite;\n const rootCanvas = this._getRootCanvas();\n if (sprite && rootCanvas) {\n const transform = <UITransform>this._transformEntity.transform;\n const { size } = transform;\n this._assembler.updatePositions(\n this,\n transform.worldMatrix,\n size.x,\n size.y,\n transform.pivot,\n false,\n false,\n rootCanvas.referenceResolutionPerUnit\n );\n } else {\n const { worldPosition } = this._transformEntity.transform;\n worldBounds.min.copyFrom(worldPosition);\n worldBounds.max.copyFrom(worldPosition);\n }\n }\n\n protected override _render(context): void {\n const { _sprite: sprite } = this;\n const transform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = transform.size;\n if (!sprite?.texture || !width || !height) {\n return;\n }\n\n let material = this.getMaterial();\n if (!material) {\n return;\n }\n // @todo: This question needs to be raised rather than hidden.\n if (material.destroyed) {\n material = this._engine._getUIDefaultMaterial();\n }\n\n const alpha = this._getGlobalAlpha();\n if (this._color.a * alpha <= 0) {\n return;\n }\n\n let { _dirtyUpdateFlag: dirtyUpdateFlag } = this;\n const canvas = this._getRootCanvas();\n // Update position\n if (dirtyUpdateFlag & RendererUpdateFlags.WorldVolume) {\n this._assembler.updatePositions(\n this,\n transform.worldMatrix,\n width,\n height,\n transform.pivot,\n false,\n false,\n canvas.referenceResolutionPerUnit\n );\n dirtyUpdateFlag &= ~RendererUpdateFlags.WorldVolume;\n }\n\n // Update uv\n if (dirtyUpdateFlag & ImageUpdateFlags.UV) {\n this._assembler.updateUVs(this);\n dirtyUpdateFlag &= ~ImageUpdateFlags.UV;\n }\n\n // Update color\n if (dirtyUpdateFlag & UIRendererUpdateFlags.Color) {\n this._assembler.updateColor(this, alpha);\n dirtyUpdateFlag &= ~UIRendererUpdateFlags.Color;\n }\n\n this._dirtyUpdateFlag = dirtyUpdateFlag;\n // Init sub render element.\n const { engine } = context.camera;\n const subRenderElement = engine._subRenderElementPool.get();\n const subChunk = this._subChunk;\n subRenderElement.set(this, material, subChunk.chunk.primitive, subChunk.subMesh, this.sprite.texture, subChunk);\n if (canvas._realRenderMode === CanvasRenderMode.ScreenSpaceOverlay) {\n subRenderElement.shaderPasses = material.shader.subShaders[0].passes;\n subRenderElement.renderQueueFlags = RenderQueueFlags.All;\n }\n canvas._renderElement.addSubRenderElement(subRenderElement);\n }\n\n @ignoreClone\n protected override _onTransformChanged(type: number): void {\n if (type & UITransformModifyFlags.Size && this._drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.All;\n }\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n }\n\n protected override _onDestroy(): void {\n const sprite = this._sprite;\n if (sprite) {\n this._addResourceReferCount(sprite, -1);\n // @ts-ignore\n sprite._updateFlagManager.removeListener(this._onSpriteChange);\n this._sprite = null;\n }\n super._onDestroy();\n }\n\n @ignoreClone\n private _onSpriteChange(type: SpriteModifyFlags): void {\n switch (type) {\n case SpriteModifyFlags.texture:\n this.shaderData.setTexture(UIRenderer._textureProperty, this.sprite.texture);\n break;\n case SpriteModifyFlags.size:\n switch (this._drawMode) {\n case SpriteDrawMode.Sliced:\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n break;\n case SpriteDrawMode.Tiled:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n break;\n default:\n break;\n }\n break;\n case SpriteModifyFlags.border:\n switch (this._drawMode) {\n case SpriteDrawMode.Sliced:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeAndUV;\n break;\n case SpriteDrawMode.Tiled:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n break;\n default:\n break;\n }\n break;\n case SpriteModifyFlags.region:\n case SpriteModifyFlags.atlasRegionOffset:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeAndUV;\n break;\n case SpriteModifyFlags.atlasRegion:\n this._dirtyUpdateFlag |= ImageUpdateFlags.UV;\n break;\n case SpriteModifyFlags.destroy:\n this.sprite = null;\n break;\n }\n }\n}\n\n/**\n * @remarks Extends `UIRendererUpdateFlags`.\n */\nenum ImageUpdateFlags {\n /** UV. */\n UV = 0x4,\n /** Automatic Size. */\n AutomaticSize = 0x8,\n /** WorldVolume and UV. */\n WorldVolumeAndUV = 0x5,\n /** WorldVolume, UV and Color. */\n WorldVolumeUVAndColor = 0x7,\n /** All. */\n All = 0xf\n}\n","import {\n BoundingBox,\n CharRenderInfo,\n Engine,\n Entity,\n Font,\n FontStyle,\n ITextRenderer,\n OverflowMode,\n RenderQueueFlags,\n RendererUpdateFlags,\n ShaderData,\n ShaderDataGroup,\n ShaderProperty,\n SubFont,\n TextHorizontalAlignment,\n TextUtils,\n TextVerticalAlignment,\n Texture2D,\n Vector3,\n assignmentClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { CanvasRenderMode } from \"../../enums/CanvasRenderMode\";\nimport { RootCanvasModifyFlags } from \"../UICanvas\";\nimport { UIRenderer, UIRendererUpdateFlags } from \"../UIRenderer\";\nimport { UITransform, UITransformModifyFlags } from \"../UITransform\";\n\n/**\n * UI component used to render text.\n */\nexport class Text extends UIRenderer implements ITextRenderer {\n private static _textTextureProperty = ShaderProperty.getByName(\"renderElement_TextTexture\");\n private static _worldPositions = [new Vector3(), new Vector3(), new Vector3(), new Vector3()];\n private static _charRenderInfos: CharRenderInfo[] = [];\n\n @ignoreClone\n private _textChunks = Array<TextChunk>();\n @ignoreClone\n private _subFont: SubFont = null;\n @assignmentClone\n private _text: string = \"\";\n @ignoreClone\n private _localBounds: BoundingBox = new BoundingBox();\n @assignmentClone\n private _font: Font = null;\n @assignmentClone\n private _fontSize: number = 24;\n @assignmentClone\n private _fontStyle: FontStyle = FontStyle.None;\n @assignmentClone\n private _lineSpacing: number = 0;\n @assignmentClone\n private _horizontalAlignment: TextHorizontalAlignment = TextHorizontalAlignment.Center;\n @assignmentClone\n private _verticalAlignment: TextVerticalAlignment = TextVerticalAlignment.Center;\n @assignmentClone\n private _enableWrapping: boolean = false;\n @assignmentClone\n private _overflowMode: OverflowMode = OverflowMode.Overflow;\n\n /**\n * Rendering string for the Text.\n */\n get text(): string {\n return this._text;\n }\n\n set text(value: string) {\n value = value || \"\";\n if (this._text !== value) {\n this._text = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The font of the Text.\n */\n get font(): Font {\n return this._font;\n }\n\n set font(value: Font) {\n const lastFont = this._font;\n if (lastFont !== value) {\n lastFont && this._addResourceReferCount(lastFont, -1);\n value && this._addResourceReferCount(value, 1);\n this._font = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The font size of the Text.\n */\n get fontSize(): number {\n return this._fontSize;\n }\n\n set fontSize(value: number) {\n if (this._fontSize !== value) {\n this._fontSize = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The style of the font.\n */\n get fontStyle(): FontStyle {\n return this._fontStyle;\n }\n\n set fontStyle(value: FontStyle) {\n if (this.fontStyle !== value) {\n this._fontStyle = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The space between two lines (in pixels).\n */\n get lineSpacing(): number {\n return this._lineSpacing;\n }\n\n set lineSpacing(value: number) {\n if (this._lineSpacing !== value) {\n this._lineSpacing = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The horizontal alignment.\n */\n get horizontalAlignment(): TextHorizontalAlignment {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment(value: TextHorizontalAlignment) {\n if (this._horizontalAlignment !== value) {\n this._horizontalAlignment = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The vertical alignment.\n */\n get verticalAlignment(): TextVerticalAlignment {\n return this._verticalAlignment;\n }\n\n set verticalAlignment(value: TextVerticalAlignment) {\n if (this._verticalAlignment !== value) {\n this._verticalAlignment = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * Whether wrap text to next line when exceeds the width of the container.\n */\n get enableWrapping(): boolean {\n return this._enableWrapping;\n }\n\n set enableWrapping(value: boolean) {\n if (this._enableWrapping !== value) {\n this._enableWrapping = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The overflow mode.\n */\n get overflowMode(): OverflowMode {\n return this._overflowMode;\n }\n\n set overflowMode(value: OverflowMode) {\n if (this._overflowMode !== value) {\n this._overflowMode = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The mask layer the sprite renderer belongs to.\n */\n get maskLayer(): number {\n return this._maskLayer;\n }\n\n set maskLayer(value: number) {\n this._maskLayer = value;\n }\n\n /**\n * The bounding volume of the TextRenderer.\n */\n override get bounds(): BoundingBox {\n if (this._isTextNoVisible()) {\n if (this._isContainDirtyFlag(RendererUpdateFlags.WorldVolume)) {\n const localBounds = this._localBounds;\n localBounds.min.set(0, 0, 0);\n localBounds.max.set(0, 0, 0);\n this._updateBounds(this._bounds);\n this._setDirtyFlagFalse(RendererUpdateFlags.WorldVolume);\n }\n return this._bounds;\n }\n this._isContainDirtyFlag(DirtyFlag.SubFont) && this._resetSubFont();\n this._isContainDirtyFlag(DirtyFlag.LocalPositionBounds) && this._updateLocalData();\n this._isContainDirtyFlag(DirtyFlag.WorldPosition) && this._updatePosition();\n this._isContainDirtyFlag(RendererUpdateFlags.WorldVolume) && this._updateBounds(this._bounds);\n this._setDirtyFlagFalse(DirtyFlag.Font);\n\n return this._bounds;\n }\n\n constructor(entity: Entity) {\n super(entity);\n const { engine } = this;\n // @ts-ignore\n this.font = engine._textDefaultFont;\n this.raycastEnabled = false;\n // @ts-ignore\n this.setMaterial(engine._basicResources.textDefaultMaterial);\n }\n\n /**\n * @internal\n */\n protected override _onDestroy(): void {\n if (this._font) {\n this._addResourceReferCount(this._font, -1);\n this._font = null;\n }\n\n super._onDestroy();\n\n this._freeTextChunks();\n this._textChunks = null;\n\n this._subFont && (this._subFont = null);\n }\n\n // @ts-ignore\n override _cloneTo(target: Text, srcRoot: Entity, targetRoot: Entity): void {\n // @ts-ignore\n super._cloneTo(target, srcRoot, targetRoot);\n target.font = this._font;\n target._subFont = this._subFont;\n }\n\n /**\n * @internal\n */\n _isContainDirtyFlag(type: number): boolean {\n return (this._dirtyUpdateFlag & type) != 0;\n }\n\n /**\n * @internal\n */\n _setDirtyFlagTrue(type: number): void {\n this._dirtyUpdateFlag |= type;\n }\n\n /**\n * @internal\n */\n _setDirtyFlagFalse(type: number): void {\n this._dirtyUpdateFlag &= ~type;\n }\n\n /**\n * @internal\n */\n _getSubFont(): SubFont {\n if (!this._subFont) {\n this._resetSubFont();\n }\n return this._subFont;\n }\n\n /**\n * @internal\n */\n _onRootCanvasModify(flag: RootCanvasModifyFlags): void {\n if (flag === RootCanvasModifyFlags.ReferenceResolutionPerUnit) {\n this._setDirtyFlagTrue(DirtyFlag.LocalPositionBounds);\n }\n }\n\n protected override _updateBounds(worldBounds: BoundingBox): void {\n const transform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = transform.size;\n const { x: pivotX, y: pivotY } = transform.pivot;\n worldBounds.min.set(-width * pivotX, -height * pivotY, 0);\n worldBounds.max.set(width * (1 - pivotX), height * (1 - pivotY), 0);\n BoundingBox.transform(worldBounds, this._transformEntity.transform.worldMatrix, worldBounds);\n }\n\n protected override _render(context): void {\n if (this._isTextNoVisible()) {\n return;\n }\n\n if (this._isContainDirtyFlag(DirtyFlag.SubFont)) {\n this._resetSubFont();\n this._setDirtyFlagFalse(DirtyFlag.SubFont);\n }\n\n const canvas = this._getRootCanvas();\n if (this._isContainDirtyFlag(DirtyFlag.LocalPositionBounds)) {\n this._updateLocalData();\n this._setDirtyFlagTrue(DirtyFlag.LocalPositionBounds);\n }\n\n if (this._isContainDirtyFlag(DirtyFlag.WorldPosition)) {\n this._updatePosition();\n this._setDirtyFlagFalse(DirtyFlag.WorldPosition);\n }\n\n if (this._isContainDirtyFlag(UIRendererUpdateFlags.Color)) {\n this._updateColor();\n this._setDirtyFlagFalse(UIRendererUpdateFlags.Color);\n }\n\n const engine = context.camera.engine;\n const textSubRenderElementPool = engine._textSubRenderElementPool;\n const material = this.getMaterial();\n const renderElement = canvas._renderElement;\n const textChunks = this._textChunks;\n const isOverlay = canvas._realRenderMode === CanvasRenderMode.ScreenSpaceOverlay;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const { subChunk, texture } = textChunks[i];\n const subRenderElement = textSubRenderElementPool.get();\n subRenderElement.set(this, material, subChunk.chunk.primitive, subChunk.subMesh, texture, subChunk);\n // @ts-ignore\n subRenderElement.shaderData ||= new ShaderData(ShaderDataGroup.RenderElement);\n subRenderElement.shaderData.setTexture(Text._textTextureProperty, texture);\n if (isOverlay) {\n subRenderElement.shaderPasses = material.shader.subShaders[0].passes;\n subRenderElement.renderQueueFlags = RenderQueueFlags.All;\n }\n renderElement.addSubRenderElement(subRenderElement);\n }\n }\n\n private _resetSubFont(): void {\n const font = this._font;\n // @ts-ignore\n this._subFont = font._getSubFont(this.fontSize, this.fontStyle);\n this._subFont.nativeFontString = TextUtils.getNativeFontString(font.name, this.fontSize, this.fontStyle);\n }\n\n private _updatePosition(): void {\n const e = this._transformEntity.transform.worldMatrix.elements;\n\n // prettier-ignore\n const e0 = e[0], e1 = e[1], e2 = e[2],\n e4 = e[4], e5 = e[5], e6 = e[6],\n e12 = e[12], e13 = e[13], e14 = e[14];\n\n const up = UIRenderer._tempVec31.set(e4, e5, e6);\n const right = UIRenderer._tempVec30.set(e0, e1, e2);\n\n const worldPositions = Text._worldPositions;\n const [worldPosition0, worldPosition1, worldPosition2, worldPosition3] = worldPositions;\n const textChunks = this._textChunks;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const { subChunk, charRenderInfos } = textChunks[i];\n for (let j = 0, m = charRenderInfos.length; j < m; ++j) {\n const charRenderInfo = charRenderInfos[j];\n const { localPositions } = charRenderInfo;\n const { x: topLeftX, y: topLeftY } = localPositions;\n\n // Top-Left\n worldPosition0.set(\n topLeftX * e0 + topLeftY * e4 + e12,\n topLeftX * e1 + topLeftY * e5 + e13,\n topLeftX * e2 + topLeftY * e6 + e14\n );\n\n // Right offset\n Vector3.scale(right, localPositions.z - topLeftX, worldPosition1);\n // Top-Right\n Vector3.add(worldPosition0, worldPosition1, worldPosition1);\n // Up offset\n Vector3.scale(up, localPositions.w - topLeftY, worldPosition2);\n // Bottom-Left\n Vector3.add(worldPosition0, worldPosition2, worldPosition3);\n // Bottom-Right\n Vector3.add(worldPosition1, worldPosition2, worldPosition2);\n\n const vertices = subChunk.chunk.vertices;\n for (let k = 0, o = subChunk.vertexArea.start + charRenderInfo.indexInChunk * 36; k < 4; ++k, o += 9) {\n worldPositions[k].copyToArray(vertices, o);\n }\n }\n }\n }\n\n private _updateColor(): void {\n const { r, g, b, a } = this._color;\n const finalAlpha = a * this._getGlobalAlpha();\n const textChunks = this._textChunks;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const subChunk = textChunks[i].subChunk;\n const vertexArea = subChunk.vertexArea;\n const vertexCount = vertexArea.size / 9;\n const vertices = subChunk.chunk.vertices;\n for (let j = 0, o = vertexArea.start + 5; j < vertexCount; ++j, o += 9) {\n vertices[o] = r;\n vertices[o + 1] = g;\n vertices[o + 2] = b;\n vertices[o + 3] = finalAlpha;\n }\n }\n }\n\n private _updateLocalData(): void {\n // @ts-ignore\n const pixelsPerResolution = Engine._pixelsPerUnit / this._getRootCanvas().referenceResolutionPerUnit;\n const { min, max } = this._localBounds;\n const charRenderInfos = Text._charRenderInfos;\n const charFont = this._getSubFont();\n const { size, pivot } = <UITransform>this._transformEntity.transform;\n let rendererWidth = size.x;\n let rendererHeight = size.y;\n const offsetWidth = rendererWidth * (0.5 - pivot.x);\n const offsetHeight = rendererHeight * (0.5 - pivot.y);\n const textMetrics = this.enableWrapping\n ? TextUtils.measureTextWithWrap(\n this,\n rendererWidth * pixelsPerResolution,\n rendererHeight * pixelsPerResolution,\n this._lineSpacing * pixelsPerResolution\n )\n : TextUtils.measureTextWithoutWrap(\n this,\n rendererHeight * pixelsPerResolution,\n this._lineSpacing * pixelsPerResolution\n );\n const { height, lines, lineWidths, lineHeight, lineMaxSizes } = textMetrics;\n // @ts-ignore\n const charRenderInfoPool = this.engine._charRenderInfoPool;\n const linesLen = lines.length;\n let renderElementCount = 0;\n\n if (linesLen > 0) {\n const { horizontalAlignment } = this;\n const pixelsPerUnitReciprocal = 1.0 / pixelsPerResolution;\n rendererWidth *= pixelsPerResolution;\n rendererHeight *= pixelsPerResolution;\n const halfRendererWidth = rendererWidth * 0.5;\n const halfLineHeight = lineHeight * 0.5;\n\n let startY = 0;\n const topDiff = lineHeight * 0.5 - lineMaxSizes[0].ascent;\n const bottomDiff = lineHeight * 0.5 - lineMaxSizes[linesLen - 1].descent - 1;\n switch (this.verticalAlignment) {\n case TextVerticalAlignment.Top:\n startY = rendererHeight * 0.5 - halfLineHeight + topDiff;\n break;\n case TextVerticalAlignment.Center:\n startY = height * 0.5 - halfLineHeight - (bottomDiff - topDiff) * 0.5;\n break;\n case TextVerticalAlignment.Bottom:\n startY = height - rendererHeight * 0.5 - halfLineHeight - bottomDiff;\n break;\n }\n\n let firstLine = -1;\n let minX = Number.MAX_SAFE_INTEGER;\n let minY = Number.MAX_SAFE_INTEGER;\n let maxX = Number.MIN_SAFE_INTEGER;\n let maxY = Number.MIN_SAFE_INTEGER;\n for (let i = 0; i < linesLen; ++i) {\n const lineWidth = lineWidths[i];\n if (lineWidth > 0) {\n const line = lines[i];\n let startX = 0;\n let firstRow = -1;\n if (firstLine < 0) {\n firstLine = i;\n }\n switch (horizontalAlignment) {\n case TextHorizontalAlignment.Left:\n startX = -halfRendererWidth;\n break;\n case TextHorizontalAlignment.Center:\n startX = -lineWidth * 0.5;\n break;\n case TextHorizontalAlignment.Right:\n startX = halfRendererWidth - lineWidth;\n break;\n }\n for (let j = 0, n = line.length; j < n; ++j) {\n const char = line[j];\n const charInfo = charFont._getCharInfo(char);\n if (charInfo.h > 0) {\n firstRow < 0 && (firstRow = j);\n const charRenderInfo = (charRenderInfos[renderElementCount++] = charRenderInfoPool.get());\n const { localPositions } = charRenderInfo;\n charRenderInfo.texture = charFont._getTextureByIndex(charInfo.index);\n charRenderInfo.uvs = charInfo.uvs;\n const { w, ascent, descent } = charInfo;\n const left = (startX + offsetWidth) * pixelsPerUnitReciprocal;\n const right = (startX + w + offsetWidth) * pixelsPerUnitReciprocal;\n const top = (startY + ascent + offsetHeight) * pixelsPerUnitReciprocal;\n const bottom = (startY - descent + offsetHeight) * pixelsPerUnitReciprocal;\n localPositions.set(left, top, right, bottom);\n i === firstLine && (maxY = Math.max(maxY, top));\n minY = Math.min(minY, bottom);\n j === firstRow && (minX = Math.min(minX, left));\n maxX = Math.max(maxX, right);\n }\n startX += charInfo.xAdvance + charInfo.offsetX;\n }\n }\n startY -= lineHeight;\n }\n if (firstLine < 0) {\n min.set(0, 0, 0);\n max.set(0, 0, 0);\n } else {\n min.set(minX, minY, 0);\n max.set(maxX, maxY, 0);\n }\n } else {\n min.set(0, 0, 0);\n max.set(0, 0, 0);\n }\n\n charFont._getLastIndex() > 0 &&\n charRenderInfos.sort((a, b) => {\n return a.texture.instanceId - b.texture.instanceId;\n });\n\n this._freeTextChunks();\n\n if (renderElementCount === 0) {\n return;\n }\n\n const textChunks = this._textChunks;\n let curTextChunk = new TextChunk();\n textChunks.push(curTextChunk);\n\n const chunkMaxVertexCount = this._getChunkManager().maxVertexCount;\n const curCharRenderInfo = charRenderInfos[0];\n let curTexture = curCharRenderInfo.texture;\n curTextChunk.texture = curTexture;\n let curCharInfos = curTextChunk.charRenderInfos;\n curCharInfos.push(curCharRenderInfo);\n\n for (let i = 1; i < renderElementCount; ++i) {\n const charRenderInfo = charRenderInfos[i];\n const texture = charRenderInfo.texture;\n if (curTexture !== texture || curCharInfos.length * 4 + 4 > chunkMaxVertexCount) {\n this._buildChunk(curTextChunk, curCharInfos.length);\n\n curTextChunk = new TextChunk();\n textChunks.push(curTextChunk);\n curTexture = texture;\n curTextChunk.texture = texture;\n curCharInfos = curTextChunk.charRenderInfos;\n }\n curCharInfos.push(charRenderInfo);\n }\n const charLength = curCharInfos.length;\n if (charLength > 0) {\n this._buildChunk(curTextChunk, charLength);\n }\n charRenderInfos.length = 0;\n }\n\n @ignoreClone\n protected override _onTransformChanged(type: number): void {\n if (type & UITransformModifyFlags.Size || type & UITransformModifyFlags.Pivot) {\n this._dirtyUpdateFlag |= DirtyFlag.LocalPositionBounds;\n }\n super._onTransformChanged(type);\n this._setDirtyFlagTrue(DirtyFlag.WorldPosition);\n }\n\n private _isTextNoVisible(): boolean {\n const size = (<UITransform>this._transformEntity.transform).size;\n return (\n this._text === \"\" ||\n this._fontSize === 0 ||\n (this.enableWrapping && size.x <= 0) ||\n (this.overflowMode === OverflowMode.Truncate && size.y <= 0) ||\n !this._getRootCanvas()\n );\n }\n\n private _buildChunk(textChunk: TextChunk, count: number) {\n const { r, g, b, a } = this.color;\n const finalAlpha = a * this._getGlobalAlpha();\n const tempIndices = CharRenderInfo.triangles;\n const tempIndicesLength = tempIndices.length;\n const subChunk = (textChunk.subChunk = this._getChunkManager().allocateSubChunk(count * 4));\n const vertices = subChunk.chunk.vertices;\n const indices = (subChunk.indices = []);\n const charRenderInfos = textChunk.charRenderInfos;\n for (let i = 0, ii = 0, io = 0, vo = subChunk.vertexArea.start + 3; i < count; ++i, io += 4) {\n const charRenderInfo = charRenderInfos[i];\n charRenderInfo.indexInChunk = i;\n\n // Set indices\n for (let j = 0; j < tempIndicesLength; ++j) {\n indices[ii++] = tempIndices[j] + io;\n }\n\n // Set uv and color for vertices\n for (let j = 0; j < 4; ++j, vo += 9) {\n const uv = charRenderInfo.uvs[j];\n uv.copyToArray(vertices, vo);\n vertices[vo + 2] = r;\n vertices[vo + 3] = g;\n vertices[vo + 4] = b;\n vertices[vo + 5] = finalAlpha;\n }\n }\n\n return subChunk;\n }\n\n private _freeTextChunks(): void {\n const textChunks = this._textChunks;\n // @ts-ignore\n const charRenderInfoPool = this.engine._charRenderInfoPool;\n const manager = this._getChunkManager();\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const textChunk = textChunks[i];\n const { charRenderInfos } = textChunk;\n for (let j = 0, m = charRenderInfos.length; j < m; ++j) {\n charRenderInfoPool.return(charRenderInfos[j]);\n }\n charRenderInfos.length = 0;\n manager.freeSubChunk(textChunk.subChunk);\n textChunk.subChunk = null;\n textChunk.texture = null;\n }\n textChunks.length = 0;\n }\n}\n\nclass TextChunk {\n charRenderInfos = new Array<CharRenderInfo>();\n texture: Texture2D;\n subChunk;\n}\n\n/**\n * @remarks Extends `UIRendererUpdateFlags`.\n */\nenum DirtyFlag {\n SubFont = 0x4,\n LocalPositionBounds = 0x8,\n WorldPosition = 0x10,\n\n // LocalPositionBounds | WorldPosition | WorldVolume\n Position = 0x19,\n Font = SubFont | Position\n}\n","import { Color, ReferResource, Sprite } from \"@galacean/engine\";\nimport { UIRenderer } from \"../../UIRenderer\";\nimport { InteractiveState, UIInteractive } from \"../UIInteractive\";\n\n/**\n * The transition behavior of UIInteractive.\n */\nexport abstract class Transition<\n T extends TransitionValueType = TransitionValueType,\n K extends UIRenderer = UIRenderer\n> {\n /** @internal */\n _interactive: UIInteractive;\n\n protected _target: K;\n protected _normal: T;\n protected _pressed: T;\n protected _hover: T;\n protected _disabled: T;\n protected _duration: number = 0;\n protected _countDown: number = 0;\n protected _initialValue: T;\n protected _finalValue: T;\n protected _currentValue: T;\n protected _finalState: InteractiveState = InteractiveState.Normal;\n\n /**\n * The normal state of the transition.\n */\n get normal(): T {\n return this._normal;\n }\n\n set normal(value: T) {\n const preNormal = this._normal;\n if (preNormal !== value) {\n this._normal = value;\n this._onStateValueDirty(InteractiveState.Normal, preNormal, value);\n }\n }\n\n /**\n * The pressed state of the transition.\n */\n get pressed(): T {\n return this._pressed;\n }\n\n set pressed(value: T) {\n const prePressed = this._pressed;\n if (prePressed !== value) {\n this._pressed = value;\n this._onStateValueDirty(InteractiveState.Pressed, prePressed, value);\n }\n }\n\n /**\n * The hover state of the transition.\n */\n get hover(): T {\n return this._hover;\n }\n\n set hover(value: T) {\n const preHover = this._hover;\n if (preHover !== value) {\n this._hover = value;\n this._onStateValueDirty(InteractiveState.Hover, preHover, value);\n }\n }\n\n /**\n * The disabled state of the transition.\n */\n get disabled(): T {\n return this._disabled;\n }\n\n set disabled(value: T) {\n const preDisabled = this._disabled;\n if (preDisabled !== value) {\n this._disabled = value;\n this._onStateValueDirty(InteractiveState.Disable, preDisabled, value);\n }\n }\n\n /**\n * The target of the transition.\n */\n get target(): K {\n return this._target;\n }\n\n set target(value: K) {\n if (this._target !== value) {\n this._target = value;\n value?.enabled && this._applyValue(this._currentValue);\n }\n }\n\n /**\n * The duration of the transition.\n */\n get duration(): number {\n return this._duration;\n }\n\n set duration(value: number) {\n if (value < 0) value = 0;\n const preDuration = this._duration;\n if (preDuration !== value) {\n this._duration = value;\n if (this._countDown > 0) {\n this._countDown = value * (1 - this._countDown / preDuration);\n this._updateValue();\n }\n }\n }\n\n destroy(): void {\n this._interactive?.removeTransition(this);\n this._target = null;\n }\n\n /**\n * @internal\n */\n _setState(state: InteractiveState, instant: boolean) {\n this._finalState = state;\n const value = this._getValueByState(state);\n if (instant) {\n this._countDown = 0;\n this._initialValue = this._finalValue = value;\n } else {\n this._countDown = this._duration;\n this._initialValue = this._getTargetValueCopy();\n this._finalValue = value;\n }\n this._updateValue();\n }\n\n /**\n * @internal\n */\n _onUpdate(delta: number): void {\n if (this._countDown > 0) {\n this._countDown -= delta;\n this._updateValue();\n }\n }\n\n protected abstract _getTargetValueCopy(): T;\n protected abstract _updateCurrentValue(srcValue: T, destValue: T, weight: number): void;\n protected abstract _applyValue(value: T): void;\n\n protected _onStateValueDirty(state: InteractiveState, preValue: T, curValue: T): void {\n // @ts-ignore\n preValue instanceof ReferResource && preValue._addReferCount(-1);\n // @ts-ignore\n curValue instanceof ReferResource && curValue._addReferCount(1);\n if (this._finalState === state) {\n this._finalValue = curValue;\n this._updateValue();\n }\n }\n\n protected _updateValue() {\n const weight = this._duration ? 1 - this._countDown / this._duration : 1;\n this._updateCurrentValue(this._initialValue, this._finalValue, weight);\n this._target?.enabled && this._applyValue(this._currentValue);\n }\n\n private _getValueByState(state: InteractiveState): T {\n switch (state) {\n case InteractiveState.Normal:\n return this.normal;\n case InteractiveState.Pressed:\n return this.pressed;\n case InteractiveState.Hover:\n return this.hover;\n case InteractiveState.Disable:\n return this.disabled;\n }\n }\n}\n\nexport type TransitionValueType = number | Sprite | Color;\n","import { Color } from \"@galacean/engine\";\nimport { UIRenderer } from \"../../UIRenderer\";\nimport { InteractiveState } from \"../UIInteractive\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Color transition.\n */\nexport class ColorTransition extends Transition<Color, UIRenderer> {\n private _color: Color = new Color();\n constructor() {\n super();\n this._normal = new Color(1, 1, 1, 1);\n this._hover = new Color(0.9130986517934192, 0.9130986517934192, 0.9130986517934192, 1);\n this._pressed = new Color(0.5775804404296506, 0.5775804404296506, 0.5775804404296506, 1);\n this._disabled = new Color(0.5775804404296506, 0.5775804404296506, 0.5775804404296506, 1);\n this._duration = 0.1;\n this._currentValue = new Color();\n\n this._onNormalValueChanged = this._onNormalValueChanged.bind(this);\n this._onHoverValueChanged = this._onHoverValueChanged.bind(this);\n this._onPressedValueChanged = this._onPressedValueChanged.bind(this);\n this._onDisabledValueChanged = this._onDisabledValueChanged.bind(this);\n\n // @ts-ignore\n this._normal._onValueChanged = this._onNormalValueChanged;\n // @ts-ignore\n this._hover._onValueChanged = this._onHoverValueChanged;\n // @ts-ignore\n this._pressed._onValueChanged = this._onPressedValueChanged;\n // @ts-ignore\n this._disabled._onValueChanged = this._onDisabledValueChanged;\n }\n\n private _onNormalValueChanged(): void {\n if (this._finalState === InteractiveState.Normal) {\n this._finalValue = this._normal;\n this._updateValue();\n }\n }\n\n private _onHoverValueChanged(): void {\n if (this._finalState === InteractiveState.Hover) {\n this._finalValue = this._hover;\n this._updateValue();\n }\n }\n\n private _onPressedValueChanged(): void {\n if (this._finalState === InteractiveState.Pressed) {\n this._finalValue = this._pressed;\n this._updateValue();\n }\n }\n\n private _onDisabledValueChanged(): void {\n if (this._finalState === InteractiveState.Disable) {\n this._finalValue = this._disabled;\n this._updateValue();\n }\n }\n\n protected _getTargetValueCopy(): Color {\n const color = this._color;\n color.copyFrom(this._target?.color || this._normal);\n return color;\n }\n\n protected override _updateCurrentValue(srcValue: Color, destValue: Color, weight: number): void {\n if (weight >= 1) {\n this._currentValue.copyFrom(destValue);\n } else {\n Color.lerp(srcValue, destValue, weight, this._currentValue);\n }\n }\n\n protected override _applyValue(value: Color): void {\n this._target.color = value;\n }\n}\n","import { UIRenderer } from \"../../UIRenderer\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Scale transition.\n */\nexport class ScaleTransition extends Transition<number, UIRenderer> {\n constructor() {\n super();\n this._normal = 1;\n this._hover = 1;\n this._pressed = 1.2;\n this._disabled = 1;\n this._duration = 0.1;\n }\n\n protected _getTargetValueCopy(): number {\n return this._target?.entity.transform.scale.x || this._normal;\n }\n\n protected override _updateCurrentValue(srcValue: number, destValue: number, weight: number): void {\n this._currentValue = weight >= 1 ? destValue : (destValue - srcValue) * weight + srcValue;\n }\n\n protected override _applyValue(value: number): void {\n this._target.entity.transform.setScale(value, value, value);\n }\n}\n","import { Sprite } from \"@galacean/engine\";\nimport { Image } from \"../../advanced/Image\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Sprite transition.\n */\nexport class SpriteTransition extends Transition<Sprite, Image> {\n /**\n * @internal\n */\n override destroy(): void {\n super.destroy();\n if (this._normal) {\n // @ts-ignore\n this._normal._addReferCount(-1);\n this._normal = null;\n }\n if (this._hover) {\n // @ts-ignore\n this._hover._addReferCount(-1);\n this._hover = null;\n }\n if (this._pressed) {\n // @ts-ignore\n this._pressed._addReferCount(-1);\n this._pressed = null;\n }\n if (this._disabled) {\n // @ts-ignore\n this._disabled._addReferCount(-1);\n this._disabled = null;\n }\n this._initialValue = this._currentValue = this._finalValue = null;\n this._target = null;\n }\n\n protected _getTargetValueCopy(): Sprite {\n return this._target?.sprite;\n }\n\n protected override _updateCurrentValue(srcValue: Sprite, destValue: Sprite, weight: number): void {\n this._currentValue = weight >= 1 ? destValue : srcValue;\n }\n\n protected override _applyValue(value: Sprite): void {\n this._target.sprite = value;\n }\n}\n","import { Entity, Vector3 } from \"@galacean/engine\";\nimport { UIRenderer } from \"../component/UIRenderer\";\n\n/**\n * @internal\n */\nexport class UIHitResult {\n entity: Entity = null;\n distance: number = 0;\n point: Vector3 = new Vector3();\n normal: Vector3 = new Vector3();\n component: UIRenderer = null;\n}\n","import {\n CameraClearFlags,\n DisorderedArray,\n Entity,\n Pointer,\n PointerEventData,\n PointerEventEmitter,\n Scene,\n registerPointerEventEmitter\n} from \"@galacean/engine\";\nimport { UICanvas } from \"..\";\nimport { UIRenderer } from \"../component/UIRenderer\";\nimport { UIHitResult } from \"./UIHitResult\";\n\n/**\n * @internal\n */\n@registerPointerEventEmitter()\nexport class UIPointerEventEmitter extends PointerEventEmitter {\n private static _MAX_PATH_DEPTH = 2048;\n private static _tempSet: Set<number> = new Set();\n private static _path: Entity[] = [];\n private static _tempArray0: Entity[] = [];\n private static _tempArray1: Entity[] = [];\n\n private _enteredPath: Entity[] = [];\n private _pressedPath: Entity[] = [];\n private _draggedPath: Entity[] = [];\n\n _init(): void {\n this._hitResult = new UIHitResult();\n }\n\n override processRaycast(scenes: readonly Scene[], pointer: Pointer): void {\n const { _tempRay: ray } = PointerEventEmitter;\n const hitResult = this._hitResult;\n const { position } = pointer;\n const { x, y } = position;\n for (let i = scenes.length - 1; i >= 0; i--) {\n const scene = scenes[i];\n if (!scene.isActive || scene.destroyed) continue;\n // @ts-ignore\n const componentsManager = scene._componentsManager;\n // Overlay Canvas\n let canvasElements: DisorderedArray<UICanvas> = componentsManager._overlayCanvases;\n // Screen to world ( Assume that world units have a one-to-one relationship with pixel units )\n ray.origin.set(position.x, scene.engine.canvas.height - position.y, 1);\n ray.direction.set(0, 0, -1);\n for (let j = canvasElements.length - 1; j >= 0; j--) {\n if (canvasElements.get(j)._raycast(ray, hitResult)) {\n this._updateRaycast((<UIHitResult>hitResult).component, pointer);\n return;\n }\n }\n\n const cameras = componentsManager._activeCameras;\n for (let j = cameras.length - 1; j >= 0; j--) {\n const camera = cameras.get(j);\n if (camera.renderTarget) continue;\n const { pixelViewport } = camera;\n if (\n x < pixelViewport.x ||\n y < pixelViewport.y ||\n x > pixelViewport.x + pixelViewport.width ||\n y > pixelViewport.y + pixelViewport.height\n ) {\n continue;\n }\n camera.screenPointToRay(pointer.position, ray);\n\n // Other canvases\n const isOrthographic = camera.isOrthographic;\n const { worldPosition: cameraPosition, worldForward: cameraForward } = camera.entity.transform;\n // Sort by rendering order\n canvasElements = componentsManager._canvases;\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n canvasElements.get(k)._updateSortDistance(isOrthographic, cameraPosition, cameraForward);\n }\n canvasElements.sort((a, b) => a.sortOrder - b.sortOrder || a._sortDistance - b._sortDistance);\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n canvasElements.get(k)._canvasIndex = k;\n }\n const farClipPlane = camera.farClipPlane;\n // Post-rendering first detection\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n const canvas = canvasElements.get(k);\n if (!canvas._canRender(camera)) continue;\n if (canvas._raycast(ray, hitResult, farClipPlane)) {\n this._updateRaycast((<UIHitResult>hitResult).component, pointer);\n return;\n }\n }\n if (camera.clearFlags & CameraClearFlags.Color) {\n this._updateRaycast(null);\n return;\n }\n }\n this._updateRaycast(null);\n }\n }\n\n override processDrag(pointer: Pointer): void {\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireDrag);\n }\n }\n\n override processDown(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n const pressedPath = this._pressedPath;\n const draggedPath = this._draggedPath;\n const length = (draggedPath.length = pressedPath.length = enteredPath.length);\n if (length > 0) {\n for (let i = 0; i < length; i++) {\n pressedPath[i] = draggedPath[i] = enteredPath[i];\n }\n this._bubble(pressedPath, pointer, this._fireDown);\n this._bubble(draggedPath, pointer, this._fireBeginDrag);\n }\n }\n\n override processUp(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n const pressedPath = this._pressedPath;\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireUp);\n if (pressedPath.length > 0) {\n const common = UIPointerEventEmitter._tempArray0;\n if (this._findCommonInPath(enteredPath, pressedPath, common)) {\n const eventData = this._createEventData(pointer);\n for (let i = 0, n = common.length; i < n; i++) {\n this._fireClick(common[i], eventData);\n }\n common.length = 0;\n }\n }\n }\n\n pressedPath.length = 0;\n\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireEndDrag);\n draggedPath.length = 0;\n }\n\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireDrop);\n }\n }\n\n override processLeave(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireExit);\n enteredPath.length = 0;\n }\n\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireEndDrag);\n draggedPath.length = 0;\n }\n\n this._pressedPath.length = 0;\n }\n\n override dispose(): void {\n this._enteredPath.length = this._pressedPath.length = this._draggedPath.length = 0;\n }\n\n private _updateRaycast(element: UIRenderer, pointer: Pointer = null): void {\n const enteredPath = this._enteredPath;\n const curPath = this._composedPath(element, UIPointerEventEmitter._path);\n const add = UIPointerEventEmitter._tempArray0;\n const del = UIPointerEventEmitter._tempArray1;\n if (this._findDiffInPath(enteredPath, curPath, add, del)) {\n const eventData = this._createEventData(pointer);\n for (let i = 0, n = add.length; i < n; i++) {\n this._fireEnter(add[i], eventData);\n }\n for (let i = 0, n = del.length; i < n; i++) {\n this._fireExit(del[i], eventData);\n }\n\n const length = (enteredPath.length = curPath.length);\n for (let i = 0; i < length; i++) {\n enteredPath[i] = curPath[i];\n }\n add.length = del.length = 0;\n }\n curPath.length = 0;\n }\n\n private _composedPath(element: UIRenderer, path: Entity[]): Entity[] {\n if (!element) {\n path.length = 0;\n return path;\n }\n let entity = (path[0] = element.entity);\n let i = 1;\n const rootEntity = element._getRootCanvas().entity;\n for (; i < UIPointerEventEmitter._MAX_PATH_DEPTH && !!entity && entity !== rootEntity; i++) {\n entity = path[i] = entity.parent;\n }\n path.length = i;\n return path;\n }\n\n private _findCommonInPath(prePath: Entity[], curPath: Entity[], common: Entity[]): boolean {\n const idSet = UIPointerEventEmitter._tempSet;\n idSet.clear();\n for (let i = 0, n = prePath.length; i < n; i++) {\n idSet.add(prePath[i].instanceId);\n }\n let hasCommon = false;\n for (let i = 0, n = curPath.length; i < n; i++) {\n const entity = curPath[i];\n if (idSet.has(entity.instanceId)) {\n common.push(entity);\n hasCommon = true;\n }\n }\n return hasCommon;\n }\n\n private _findDiffInPath(prePath: Entity[], curPath: Entity[], add: Entity[], del: Entity[]): boolean {\n const idSet = UIPointerEventEmitter._tempSet;\n idSet.clear();\n let changed = false;\n for (let i = 0, n = prePath.length; i < n; i++) {\n idSet.add(prePath[i].instanceId);\n }\n for (let i = 0, n = curPath.length; i < n; i++) {\n const entity = curPath[i];\n if (!idSet.has(entity.instanceId)) {\n add.push(entity);\n changed = true;\n }\n }\n idSet.clear();\n for (let i = 0, n = curPath.length; i < n; i++) {\n idSet.add(curPath[i].instanceId);\n }\n for (let i = 0, n = prePath.length; i < n; i++) {\n const entity = prePath[i];\n if (!idSet.has(entity.instanceId)) {\n del.push(entity);\n changed = true;\n }\n }\n return changed;\n }\n\n private _bubble(path: Entity[], pointer: Pointer, fireEvent: FireEvent): void {\n const length = path.length;\n if (length <= 0) return;\n const eventData = this._createEventData(pointer);\n for (let i = 0; i < length; i++) {\n fireEvent(path[i], eventData);\n }\n }\n}\n\ntype FireEvent = (entity: Entity, eventData: PointerEventData) => void;\n","import {\n BlendFactor,\n BlendOperation,\n CullMode,\n Engine,\n Entity,\n Font,\n IClass,\n Loader,\n Material,\n PipelineStage,\n ReflectionParser,\n RenderQueueType,\n Shader,\n ShaderPass\n} from \"@galacean/engine\";\nimport * as GUIComponent from \"./component\";\nimport uiDefaultFs from \"./shader/uiDefault.fs.glsl\";\nimport uiDefaultVs from \"./shader/uiDefault.vs.glsl\";\nexport * from \"./component\";\nexport { CanvasRenderMode } from \"./enums/CanvasRenderMode\";\nexport { ResolutionAdaptationMode } from \"./enums/ResolutionAdaptationMode\";\nexport { UIPointerEventEmitter } from \"./input/UIPointerEventEmitter\";\nexport { HorizontalAlignmentMode } from \"./enums/HorizontalAlignmentMode\";\nexport { VerticalAlignmentMode } from \"./enums/VerticalAlignmentMode\";\n\nexport class EngineExtension {\n _uiDefaultMaterial: Material;\n _getUIDefaultMaterial(): Material {\n if (!this._uiDefaultMaterial) {\n const shader = _getOrCreateUIShader();\n // @ts-ignore\n const material = new Material(this, shader);\n const renderState = material.renderState;\n const target = renderState.blendState.targetBlendState;\n target.enabled = true;\n target.sourceColorBlendFactor = BlendFactor.SourceAlpha;\n target.destinationColorBlendFactor = BlendFactor.OneMinusSourceAlpha;\n target.sourceAlphaBlendFactor = BlendFactor.One;\n target.destinationAlphaBlendFactor = BlendFactor.OneMinusSourceAlpha;\n target.colorBlendOperation = target.alphaBlendOperation = BlendOperation.Add;\n renderState.depthState.writeEnabled = false;\n renderState.rasterState.cullMode = CullMode.Off;\n renderState.renderQueueType = RenderQueueType.Transparent;\n material.isGCIgnored = true;\n this._uiDefaultMaterial = material;\n }\n return this._uiDefaultMaterial;\n }\n}\n\nexport class EntityExtension {\n _uiHierarchyVersion = 0;\n _updateUIHierarchyVersion(version: number): void {\n if (this._uiHierarchyVersion !== version) {\n this._uiHierarchyVersion = version;\n // @ts-ignore\n this.parent?._updateUIHierarchyVersion(version);\n }\n }\n}\n\ndeclare module \"@galacean/engine\" {\n interface Engine {\n // @internal\n _uiDefaultMaterial: Material;\n // @internal\n _getUIDefaultMaterial(): Material;\n }\n interface Entity {\n // @internal\n _uiHierarchyVersion: number;\n // @internal\n _updateUIHierarchyVersion(version: number): void;\n }\n}\n\nfunction ApplyMixins(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}\n\nApplyMixins(Engine, [EngineExtension]);\nApplyMixins(Entity, [EntityExtension]);\n\nReflectionParser.registerCustomParseComponent(\"Text\", async (instance: any, item: Omit<IClass, \"class\">) => {\n const { props } = item;\n if (!props.font) {\n // @ts-ignore\n instance.font = Font.createFromOS(instance.engine, props.fontFamily || \"Arial\");\n }\n return instance;\n});\n\n/**\n * Register GUI components for the editor.\n */\nexport function registerGUI() {\n for (let key in GUIComponent) {\n Loader.registerClass(key, GUIComponent[key]);\n }\n _getOrCreateUIShader();\n}\n\nfunction _getOrCreateUIShader(): Shader {\n let shader = Shader.find(\"ui\");\n if (!shader) {\n shader = Shader.create(\"ui\", [\n new ShaderPass(\"Forward\", uiDefaultVs, uiDefaultFs, {\n pipelineStage: PipelineStage.Forward\n })\n ]);\n }\n return shader;\n}\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","__decorate","decorators","target","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","_defineProperties","props","descriptor","enumerable","configurable","writable","_create_class","Constructor","protoProps","staticProps","prototype","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","create","constructor","_instanceof","left","right","Symbol","hasInstance","SuppressedError","GroupModifyFlags","CanvasRenderMode","ResolutionAdaptationMode","HorizontalAlignmentMode","VerticalAlignmentMode","UITransformModifyFlags","UIRendererUpdateFlags","InteractiveState","EntityUIModifyFlags","RootCanvasModifyFlags","fn","UIGroup","Component","entity","_indexInGroup","_indexInRootCanvas","_disorderedElements","DisorderedArray","_globalAlpha","_this","_globalInteractive","_alpha","_interactive","_ignoreParentGroup","_rootCanvasListeningEntities","_groupListeningEntities","_isRootCanvasDirty","_isGroupDirty","_groupDirtyFlags","_rootCanvasListener","bind","_groupListener","_getGlobalAlpha","_isContainDirtyFlag","parentGroup","_getGroup","_setDirtyFlagFalse","_getGlobalInteractive","_proto","_onEnableInScene","Utils","setRootCanvasDirty","setGroupDirty","_dispatchModify","GroupEnableInScene","_onDisableInScene","cleanRootCanvas","cleanGroup","disorderedElements","forEach","element","garbageCollection","_getRootCanvas","setRootCanvas","searchRootCanvasInParents","_rootCanvas","setGroup","searchGroupInParents","_group","flag","EntityModifyFlags","Parent","CanvasEnableInScene","_onGroupModify","flags","isPass","_isContainDirtyFlags","_setDirtyFlagTrue","targetDirtyFlags","type","ignoreParentGroup","set","interactive","alpha","Math","max","min","_registerRootCanvas","_onRootCanvasModify","All","rootCanvas","fromEntity","UICanvas","parent","toEntity","_registerListener","_unRegisterListener","components","_components","n","component","enabled","_isRootCanvas","_registerGroup","group","rootCanvasParent","canvas","preCanvas","replaced","deleteByIndex","add","preGroup","root","listener","listeningEntities","count","preEntity","_unRegisterModifyListener","_registerModifyListener","UITransform","Transform","call","_size","Vector2","_pivot","_rect","Rect","_alignLeft","_alignRight","_alignCenter","_alignTop","_alignBottom","_alignMiddle","_horizontalAlignment","None","_verticalAlignment","_onSizeChanged","_onPivotChanged","_onValueChanged","_parentChange","_isParentDirty","_updateWorldFlagWithParentRectChange","TransformModifyFlags","WmWpWeWqWsWus","_cloneTo","srcRoot","targetRoot","pivot","size","copyFrom","_onLocalMatrixChanging","_updatePositionByAlignment","LocalMatrix","_onWorldMatrixChanging","_onPositionChanged","_onWorldPositionChanged","WorldPosition","_this__getParentTransform","parentRect","_getParentTransform","position","rect","Left","LeftAndRight","x","Center","width","Right","Top","y","height","Middle","Bottom","TopAndBottom","_updateSizeByAlignment","_updateRectBySizeAndPivot","_updateWorldFlagWithSelfRectChange","_entity","_updateFlagManager","dispatch","_children_i_transform__updateWorldFlagWithParentRectChange","children","worldFlags","WmWp","_worldAssociatedChange","transform","parentChange","selfChange","horizontalAlignment","verticalAlignment","containDirtyFlags","alignLeft","Number","isFinite","MathUtil","equals","alignRight","alignCenter","alignTop","alignBottom","alignMiddle","exports","UIRenderer","Renderer","raycastPadding","Vector4","_raycastEnabled","_color","Color","_dirtyUpdateFlag","RendererUpdateFlags","WorldVolume","_onColorChanged","_canBatch","elementA","elementB","BatchUtils","canBatchSprite","_batch","batchFor2D","_updateTransformShaderData","context","onlyMVP","batched","_prepareRender","_renderFrameCount","engine","time","frameCount","_update","_render","ShaderMacroCollection","unionCollection","camera","_globalShaderMacro","shaderData","_macroCollection","_overrideUpdate","scene","_componentsManager","addOnUpdateRenderers","_updateUIHierarchyVersion","_hierarchyCounter","removeOnUpdateRenderers","_this__getGroup","_this__getGroup__getGlobalAlpha","Child","GlobalAlpha","_getChunkManager","_batcherManager","primitiveChunkManagerUI","_raycast","ray","out","distance","MAX_SAFE_INTEGER","plane","_tempPlane","_transformEntity","normal","worldForward","Vector3","dot","worldPosition","curDistance","intersectPlane","hitPointWorld","getPoint","_tempVec30","worldMatrixInv","_tempMat","Matrix","invert","worldMatrix","localPosition","_tempVec31","transformCoordinate","_hitTest","point","uiTransform","pivotX","_this_raycastPadding","paddingLeft","z","w","paddingTop","paddingRight","pivotY","paddingBottom","_onDestroy","_subChunk","freeSubChunk","color","raycastEnabled","Plane","_textureProperty","ShaderProperty","getByName","AutoAdd","UIInteractive","Script","_globalInteractiveDirty","_transitions","_state","_isPointerInside","_isPointerDragging","addTransition","transition","removeTransition","push","_setState","transitions","lastOneIndex","clearTransitions","onUpdate","deltaTime","_onUpdate","onPointerBeginDrag","_updateState","onPointerEndDrag","onPointerEnter","onPointerExit","onDestroy","destroy","srcTransition","dstTransition","pressed","hover","disabled","transitionTarget","paths","_targetTempPath","success","Entity","_getEntityHierarchyPath","_getEntityByHierarchyPath","getComponent","GlobalInteractive","globalInteractive","instant","state","_getInteractiveState","Array","_canvasIndex","_sortDistance","_orderedRenderers","_realRenderMode","_renderMode","WorldSpace","_resolutionAdaptationMode","HeightAdaptation","_sortOrder","_distance","_referenceResolution","_referenceResolutionPerUnit","_hierarchyVersion","_center","_onCanvasSizeListener","_onCameraModifyListener","_onCameraTransformListener","_onReferenceResolutionChanged","_centerDirtyFlag","registerWorldChangeFlag","renderers","_getRenderers","_canRender","ScreenSpaceCamera","_renderCamera","mode","enableFrustumCulling","cullingMask","_frustum","renderElement","_renderElement","_renderElementPool","get","virtualCamera","_updateSortDistance","isOrthographic","forward","sortOrder","renderer","layer","ScreenSpaceOverlay","bounds","frustum","intersectsBox","cameraPosition","cameraForward","boundsCenter","_getCenter","_tempVec3","subtract","distanceSquared","_setIsRootCanvas","param","renderMode","renderCamera","Camera","uiHierarchyVersion","_uiHierarchyVersion","_walk","_tempGroupAbleList","_adapterPoseInScreenSpace","realRenderMode","cameraEntity","_isSameOrChildEntity","cameraTransform","cameraWorldForward","setWorldPosition","cameraWorldPosition","worldRotationQuaternion","_adapterSizeInScreenSpace","curWidth","curHeight","expectX","expectY","expectZ","_this__referenceResolution","orthographicSize","tan","degreeToRadian","fieldOfView","aspectRatio","WidthAdaptation","BothAdaptation","ExpandAdaptation","ShrinkAdaptation","affineTransformation","depth","tempGroupAbleList","groupAbleCount","child","isActive","_updateCameraObserver","preCamera","_cameraObserver","removeListener","addListener","CameraModifyFlags","ProjectionType","AspectRatio","FieldOfView","OrthographicSize","DisableInScene","_setRealRenderMode","EnableInScene","_addCanvasListener","_sizeUpdateFlagManager","_removeCanvasListener","isRootCanvas","_getRealRenderMode","_this1","center","_this__renderCamera","curRealMode","preRealMode","componentsManager","removeUICanvas","addUICanvas","canvasEntity","referenceResolutionPerUnit","referenceResolution","Logger","warn","preRenderMode","curRenderMode","resolutionAdaptationMode","_overlayCanvasesSortingFlag","Button","_listeners","SafeLoopArray","addClicked","removeClicked","findAndRemove","destroyed","onPointerClick","event","listeners","getLoopArray","Image","UIRenderer1","_sprite","_tileMode","SpriteTileMode","Continuous","_tiledAdaptiveThreshold","drawMode","SpriteDrawMode","Simple","setMaterial","_engine","_getUIDefaultMaterial","_onSpriteChange","ReferenceResolutionPerUnit","_drawMode","Tiled","Sliced","sprite","_updateBounds","worldBounds","_assembler","updatePositions","texture","material","getMaterial","a","dirtyUpdateFlag","updateUVs","updateColor","subRenderElement","_subRenderElementPool","subChunk","chunk","primitive","subMesh","shaderPasses","shader","subShaders","passes","renderQueueFlags","RenderQueueFlags","addSubRenderElement","_onTransformChanged","Size","_addResourceReferCount","SpriteModifyFlags","setTexture","border","region","atlasRegionOffset","atlasRegion","SimpleSpriteAssembler","SlicedSpriteAssembler","TiledSpriteAssembler","resetData","tileMode","tiledAdaptiveThreshold","clamp","lastSprite","Text","_textChunks","_subFont","_text","_localBounds","BoundingBox","_font","_fontSize","_fontStyle","FontStyle","_lineSpacing","TextHorizontalAlignment","TextVerticalAlignment","_enableWrapping","_overflowMode","OverflowMode","Overflow","font","_textDefaultFont","_basicResources","textDefaultMaterial","_freeTextChunks","_getSubFont","_resetSubFont","_isTextNoVisible","_updateLocalData","_updatePosition","_updateColor","textSubRenderElementPool","_textSubRenderElementPool","textChunks","isOverlay","ShaderData","ShaderDataGroup","RenderElement","_textTextureProperty","fontSize","fontStyle","nativeFontString","TextUtils","getNativeFontString","name","e","elements","e0","e1","e2","e4","e5","e6","e12","e13","e14","up","worldPositions","_worldPositions","worldPosition0","worldPosition1","worldPosition2","worldPosition3","charRenderInfos","j","m","charRenderInfo","localPositions","topLeftY","topLeftX","scale","vertices","k","vertexArea","start","indexInChunk","copyToArray","_this__color","g","b","finalAlpha","vertexCount","pixelsPerResolution","Engine","_pixelsPerUnit","_this__localBounds","_charRenderInfos","charFont","_this__transformEntity_transform","rendererWidth","rendererHeight","offsetWidth","offsetHeight","textMetrics","enableWrapping","measureTextWithWrap","measureTextWithoutWrap","lines","lineWidths","lineHeight","lineMaxSizes","charRenderInfoPool","_charRenderInfoPool","linesLen","renderElementCount","pixelsPerUnitReciprocal","halfRendererWidth","halfLineHeight","startY","topDiff","ascent","bottomDiff","descent","firstLine","minX","minY","maxX","MIN_SAFE_INTEGER","maxY","lineWidth","line","startX","firstRow","char","charInfo","_getCharInfo","h","_getTextureByIndex","index","uvs","top","bottom","xAdvance","offsetX","_getLastIndex","sort","instanceId","curTextChunk","TextChunk","chunkMaxVertexCount","maxVertexCount","curCharRenderInfo","curTexture","curCharInfos","_buildChunk","charLength","Pivot","overflowMode","Truncate","textChunk","_this_color","tempIndices","CharRenderInfo","triangles","tempIndicesLength","allocateSubChunk","indices","ii","io","vo","uv","manager","return","text","lastFont","lineSpacing","maskLayer","_maskLayer","localBounds","_bounds","Transition","_duration","_countDown","_finalState","Normal","_this__interactive","_target","_getValueByState","_initialValue","_finalValue","_getTargetValueCopy","_updateValue","delta","_onStateValueDirty","preValue","curValue","ReferResource","_addReferCount","_this__target","weight","_updateCurrentValue","_applyValue","_currentValue","Pressed","Hover","Disable","_normal","preNormal","_pressed","prePressed","_hover","preHover","_disabled","preDisabled","duration","preDuration","ColorTransition","_onNormalValueChanged","_onHoverValueChanged","_onPressedValueChanged","_onDisabledValueChanged","srcValue","destValue","lerp","ScaleTransition","setScale","SpriteTransition","UIHitResult","UIPointerEventEmitter","PointerEventEmitter1","_enteredPath","_pressedPath","_draggedPath","_init","_hitResult","processRaycast","scenes","pointer","PointerEventEmitter","_tempRay","hitResult","canvasElements","_overlayCanvases","origin","direction","_updateRaycast","cameras","_activeCameras","renderTarget","pixelViewport","screenPointToRay","_canvases","farClipPlane","clearFlags","CameraClearFlags","processDrag","draggedPath","_bubble","_fireDrag","processDown","enteredPath","pressedPath","_fireDown","_fireBeginDrag","processUp","_fireUp","common","_tempArray0","_findCommonInPath","eventData","_createEventData","_fireClick","_fireEndDrag","_fireDrop","processLeave","_fireExit","dispose","curPath","_composedPath","_path","del","_tempArray1","_findDiffInPath","_fireEnter","path","rootEntity","_MAX_PATH_DEPTH","prePath","idSet","_tempSet","clear","hasCommon","has","changed","fireEvent","Set","EngineExtension","_uiDefaultMaterial","_getOrCreateUIShader","Material","renderState","blendState","targetBlendState","sourceColorBlendFactor","BlendFactor","SourceAlpha","destinationColorBlendFactor","OneMinusSourceAlpha","sourceAlphaBlendFactor","One","destinationAlphaBlendFactor","colorBlendOperation","alphaBlendOperation","BlendOperation","Add","depthState","writeEnabled","rasterState","cullMode","CullMode","Off","renderQueueType","RenderQueueType","Transparent","isGCIgnored","EntityExtension","version","_this_parent","ApplyMixins","derivedCtor","baseCtors","baseCtor","getOwnPropertyNames","Shader","find","ShaderPass","pipelineStage","PipelineStage","Forward","ReflectionParser","registerCustomParseComponent","instance","item","thisArg","body","f","t","_","label","sent","trys","ops","Iterator","next","verb","iterator","v","step","op","pop","Font","createFromOS","fontFamily","self","args","apply","err","undefined","GUIComponent","Loader","registerClass"],"mappings":"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"}
|