@galacean/engine-ui 1.6.8 → 1.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +3662 -0
- package/dist/browser.js.map +1 -0
- package/dist/browser.min.js +2 -0
- package/dist/browser.min.js.map +1 -0
- package/dist/main.js +3658 -0
- package/dist/main.js.map +1 -0
- package/dist/module.js +3639 -0
- package/dist/module.js.map +1 -0
- package/package.json +3 -3
- package/types/Utils.d.ts +18 -0
- package/types/component/UICanvas.d.ts +91 -0
- package/types/component/UIGroup.d.ts +37 -0
- package/types/component/UIRenderer.d.ts +36 -0
- package/types/component/UITransform.d.ts +111 -0
- package/types/component/advanced/Button.d.ts +21 -0
- package/types/component/advanced/Image.d.ts +37 -0
- package/types/component/advanced/Text.d.ts +88 -0
- package/types/component/index.d.ts +11 -0
- package/types/component/interactive/UIInteractive.d.ts +55 -0
- package/types/component/interactive/transition/ColorTransition.d.ts +17 -0
- package/types/component/interactive/transition/ScaleTransition.d.ts +11 -0
- package/types/component/interactive/transition/SpriteTransition.d.ts +11 -0
- package/types/component/interactive/transition/Transition.d.ts +57 -0
- package/types/enums/CanvasRenderMode.d.ts +22 -0
- package/types/enums/HorizontalAlignmentMode.d.ts +13 -0
- package/types/enums/ResolutionAdaptationMode.d.ts +16 -0
- package/types/enums/VerticalAlignmentMode.d.ts +13 -0
- package/types/index.d.ts +25 -0
- package/types/input/UIHitResult.d.ts +1 -0
- package/types/input/UIPointerEventEmitter.d.ts +1 -0
- package/types/interface/IElement.d.ts +13 -0
- package/types/interface/IGraphics.d.ts +8 -0
- package/types/interface/IGroupAble.d.ts +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.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/Utils.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/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","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","/**\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 { 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":["UIGroup","entity","_indexInGroup","_indexInRootCanvas","_disorderedElements","DisorderedArray","_globalAlpha","_globalInteractive","_alpha","_interactive","_ignoreParentGroup","_rootCanvasListeningEntities","_groupListeningEntities","_isRootCanvasDirty","_isGroupDirty","_groupDirtyFlags","_rootCanvasListener","bind","_groupListener","_getGlobalAlpha","_isContainDirtyFlag","parentGroup","_getGroup","_setDirtyFlagFalse","_getGlobalInteractive","_onEnableInScene","Utils","setRootCanvasDirty","setGroupDirty","_dispatchModify","EntityUIModifyFlags","GroupEnableInScene","_onDisableInScene","cleanRootCanvas","cleanGroup","disorderedElements","forEach","element","length","garbageCollection","_getRootCanvas","setRootCanvas","searchRootCanvasInParents","_rootCanvas","setGroup","searchGroupInParents","_group","flag","EntityModifyFlags","Parent","CanvasEnableInScene","_onGroupModify","flags","isPass","_isContainDirtyFlags","_setDirtyFlagTrue","targetDirtyFlags","type","ignoreParentGroup","value","interactive","alpha","Math","max","min","Component","GroupModifyFlags","_registerRootCanvas","_onRootCanvasModify","RootCanvasModifyFlags","All","rootCanvas","fromEntity","UICanvas","parent","toEntity","_registerListener","_unRegisterListener","components","_components","i","n","component","enabled","_isRootCanvas","_registerGroup","group","rootCanvasParent","canvas","preCanvas","replaced","deleteByIndex","add","preGroup","root","listener","listeningEntities","count","preEntity","_unRegisterModifyListener","_registerModifyListener","CanvasRenderMode","ResolutionAdaptationMode","HorizontalAlignmentMode","VerticalAlignmentMode","UITransform","_size","Vector2","_pivot","_rect","Rect","_alignLeft","_alignRight","_alignCenter","_alignTop","_alignBottom","_alignMiddle","_horizontalAlignment","None","_verticalAlignment","_onSizeChanged","_onPivotChanged","_onValueChanged","_parentChange","_isParentDirty","_updateWorldFlagWithParentRectChange","TransformModifyFlags","WmWpWeWqWsWus","_cloneTo","target","srcRoot","targetRoot","pivot","size","copyFrom","_onLocalMatrixChanging","_updatePositionByAlignment","LocalMatrix","_onWorldMatrixChanging","_onPositionChanged","_onWorldPositionChanged","WorldPosition","parentRect","_getParentTransform","position","rect","Left","LeftAndRight","x","Center","width","Right","Top","y","height","Middle","Bottom","TopAndBottom","_updateSizeByAlignment","_updateRectBySizeAndPivot","set","_updateWorldFlagWithSelfRectChange","_entity","_updateFlagManager","dispatch","worldFlags","WmWp","_worldAssociatedChange","children","transform","parentChange","selfChange","horizontalAlignment","verticalAlignment","containDirtyFlags","alignLeft","Number","isFinite","MathUtil","equals","alignRight","alignCenter","alignTop","alignBottom","alignMiddle","Transform","UITransformModifyFlags","UIRenderer","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","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","pivotY","paddingLeft","z","paddingRight","w","paddingTop","paddingBottom","_onDestroy","_subChunk","freeSubChunk","color","raycastEnabled","Renderer","Plane","_textureProperty","ShaderProperty","getByName","AutoAdd","UIRendererUpdateFlags","UIInteractive","_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","constructor","pressed","hover","disabled","transitionTarget","paths","_targetTempPath","success","Entity","_getEntityHierarchyPath","_getEntityByHierarchyPath","getComponent","GlobalInteractive","globalInteractive","instant","state","_getInteractiveState","Script","Array","InteractiveState","_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","frustum","renderElement","_renderElement","_renderElementPool","get","virtualCamera","_updateSortDistance","isOrthographic","forward","sortOrder","renderer","layer","ScreenSpaceOverlay","bounds","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","orthographicSize","tan","degreeToRadian","fieldOfView","aspectRatio","expectX","expectY","expectZ","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","center","curRealMode","preRealMode","componentsManager","removeUICanvas","addUICanvas","canvasEntity","referenceResolutionPerUnit","referenceResolution","preMode","Logger","warn","preRenderMode","curRenderMode","resolutionAdaptationMode","_overlayCanvasesSortingFlag","Button","_listeners","SafeLoopArray","addClicked","fn","removeClicked","findAndRemove","destroyed","onPointerClick","event","listeners","getLoopArray","Image","_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","right","worldPositions","_worldPositions","worldPosition0","worldPosition1","worldPosition2","worldPosition3","charRenderInfos","j","m","charRenderInfo","localPositions","topLeftY","topLeftX","scale","vertices","k","o","vertexArea","start","indexInChunk","copyToArray","r","g","b","finalAlpha","vertexCount","pixelsPerResolution","Engine","_pixelsPerUnit","_charRenderInfos","charFont","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","left","top","bottom","xAdvance","offsetX","_getLastIndex","sort","instanceId","curTextChunk","TextChunk","chunkMaxVertexCount","maxVertexCount","curCharRenderInfo","curTexture","curCharInfos","_buildChunk","charLength","Pivot","overflowMode","Truncate","textChunk","tempIndices","CharRenderInfo","triangles","tempIndicesLength","allocateSubChunk","indices","ii","io","vo","uv","manager","return","text","lastFont","lineSpacing","maskLayer","_maskLayer","localBounds","_bounds","Transition","_duration","_countDown","_finalState","Normal","_target","_getValueByState","_initialValue","_finalValue","_getTargetValueCopy","_updateValue","delta","_onStateValueDirty","preValue","curValue","ReferResource","_addReferCount","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","_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","ApplyMixins","derivedCtor","baseCtors","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","ReflectionParser","registerCustomParseComponent","instance","item","props","Font","createFromOS","fontFamily","registerGUI","key","GUIComponent","Loader","registerClass","Shader","find","ShaderPass","uiDefaultVs","uiDefaultFs","pipelineStage","PipelineStage","Forward"],"mappings":"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"}
|