@eva/plugin-renderer-mask 1.2.6 → 1.2.7-editor.10

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.
@@ -14,7 +14,7 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
14
14
  d.__proto__ = b;
15
15
  } || function (d, b) {
16
16
  for (var p in b) {
17
- if (b.hasOwnProperty(p)) d[p] = b[p];
17
+ if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
18
18
  }
19
19
  };
20
20
 
@@ -22,6 +22,8 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
22
22
  };
23
23
 
24
24
  function __extends(d, b) {
25
+ if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
26
+
25
27
  _extendStatics(d, b);
26
28
 
27
29
  function __() {
@@ -31,6 +33,22 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
31
33
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
32
34
  }
33
35
 
36
+ var _assign = function __assign() {
37
+ _assign = Object.assign || function __assign(t) {
38
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
39
+ s = arguments[i];
40
+
41
+ for (var p in s) {
42
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
43
+ }
44
+ }
45
+
46
+ return t;
47
+ };
48
+
49
+ return _assign.apply(this, arguments);
50
+ };
51
+
34
52
  function __decorate(decorators, target, key, desc) {
35
53
  var c = arguments.length,
36
54
  r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
@@ -41,6 +59,10 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
41
59
  return c > 3 && r && Object.defineProperty(target, key, r), r;
42
60
  }
43
61
 
62
+ function __metadata(metadataKey, metadataValue) {
63
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
64
+ }
65
+
44
66
  function __awaiter(thisArg, _arguments, P, generator) {
45
67
  function adopt(value) {
46
68
  return value instanceof P ? value : new P(function (resolve) {
@@ -236,27 +258,119 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
236
258
  return ar;
237
259
  }
238
260
 
239
- function getIDEPropsPropertyObj(target, propertyKey) {
240
- if (!target.constructor.IDEProps) {
241
- target.constructor.IDEProps = {};
261
+ var SymbolKeysNotSupportedError = function (_super) {
262
+ __extends(SymbolKeysNotSupportedError, _super);
263
+
264
+ function SymbolKeysNotSupportedError() {
265
+ var _newTarget = this.constructor;
266
+
267
+ var _this = _super.call(this, 'Symbol keys are not supported yet!') || this;
268
+
269
+ Object.setPrototypeOf(_this, _newTarget.prototype);
270
+ return _this;
271
+ }
272
+
273
+ return SymbolKeysNotSupportedError;
274
+ }(Error);
275
+
276
+ (function (_super) {
277
+ __extends(StaticGetPropertiesIsNotAFunctionError, _super);
278
+
279
+ function StaticGetPropertiesIsNotAFunctionError() {
280
+ var _newTarget = this.constructor;
281
+
282
+ var _this = _super.call(this, 'getProperties is not a function!') || this;
283
+
284
+ Object.setPrototypeOf(_this, _newTarget.prototype);
285
+ return _this;
286
+ }
287
+
288
+ return StaticGetPropertiesIsNotAFunctionError;
289
+ })(Error);
290
+
291
+ var IDE_PROPERTY_METADATA = 'IDE_PROPERTY_METADATA';
292
+
293
+ function transformBasicType(type) {
294
+ if (type === String) {
295
+ return 'string';
296
+ }
297
+
298
+ if (type === Number) {
299
+ return 'number';
242
300
  }
243
301
 
244
- if (!target.constructor.IDEProps[propertyKey]) {
245
- target.constructor.IDEProps[propertyKey] = {};
302
+ if (type === Boolean) {
303
+ return 'boolean';
246
304
  }
247
305
 
248
- var propertyObj = target.constructor.IDEProps[propertyKey];
249
- return propertyObj;
306
+ return 'unknown';
250
307
  }
251
308
 
252
- function type(type) {
309
+ function defineTypes(target, key, options, returnTypeFunction) {
310
+ var type = Reflect.getMetadata('design:type', target, key);
311
+ var isArray = type === Array;
312
+ var str = transformBasicType(type);
313
+
314
+ if (str !== 'unknown') {
315
+ type = str;
316
+ }
317
+
318
+ if (returnTypeFunction) {
319
+ var returnType = returnTypeFunction();
320
+
321
+ if (Array.isArray(returnType)) {
322
+ isArray = true;
323
+ type = returnType[0];
324
+ } else {
325
+ type = returnType;
326
+ }
327
+ }
328
+
329
+ var properties = Reflect.getMetadata(IDE_PROPERTY_METADATA, target.constructor) || {};
330
+ properties[key] = _assign({
331
+ type: type,
332
+ isArray: isArray
333
+ }, options);
334
+ Reflect.defineMetadata(IDE_PROPERTY_METADATA, properties, target.constructor);
335
+ }
336
+
337
+ function getTypeDecoratorParams(returnTypeFuncOrOptions, maybeOptions) {
338
+ if (typeof returnTypeFuncOrOptions === 'function') {
339
+ return {
340
+ returnTypeFunc: returnTypeFuncOrOptions,
341
+ options: maybeOptions || {}
342
+ };
343
+ }
344
+
345
+ return {
346
+ options: returnTypeFuncOrOptions || {}
347
+ };
348
+ }
349
+
350
+ function Field(returnTypeFunction, maybeOptions) {
253
351
  return function (target, propertyKey) {
254
- var prop = getIDEPropsPropertyObj(target, propertyKey);
255
- prop.key = propertyKey;
256
- prop.type = type;
352
+ if (typeof propertyKey === 'symbol') {
353
+ throw new SymbolKeysNotSupportedError();
354
+ }
355
+
356
+ var _a = getTypeDecoratorParams(returnTypeFunction, maybeOptions),
357
+ options = _a.options,
358
+ returnTypeFunc = _a.returnTypeFunc;
359
+
360
+ defineTypes(target, propertyKey, options, returnTypeFunc);
257
361
  };
258
362
  }
259
363
 
364
+ var ExecuteMode;
365
+
366
+ (function (ExecuteMode) {
367
+ ExecuteMode[ExecuteMode["Edit"] = 2] = "Edit";
368
+ ExecuteMode[ExecuteMode["Game"] = 4] = "Game";
369
+ ExecuteMode[ExecuteMode["All"] = 6] = "All";
370
+ })(ExecuteMode || (ExecuteMode = {}));
371
+
372
+ var _a;
373
+
260
374
  exports.MASK_TYPE = void 0;
261
375
 
262
376
  (function (MASK_TYPE) {
@@ -269,6 +383,41 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
269
383
  MASK_TYPE["Sprite"] = "Sprite";
270
384
  })(exports.MASK_TYPE || (exports.MASK_TYPE = {}));
271
385
 
386
+ var MaskStyle = function () {
387
+ function MaskStyle() {}
388
+
389
+ __decorate([Field({
390
+ step: 1
391
+ }), __metadata("design:type", Number)], MaskStyle.prototype, "x", void 0);
392
+
393
+ __decorate([Field({
394
+ step: 1
395
+ }), __metadata("design:type", Number)], MaskStyle.prototype, "y", void 0);
396
+
397
+ __decorate([Field({
398
+ step: 0.1,
399
+ if: function _if(mask) {
400
+ return mask.type === exports.MASK_TYPE.Circle || mask.type === exports.MASK_TYPE.RoundedRect;
401
+ }
402
+ }), __metadata("design:type", Number)], MaskStyle.prototype, "radius", void 0);
403
+
404
+ __decorate([Field({
405
+ step: 1,
406
+ if: function _if(mask) {
407
+ return mask.type !== exports.MASK_TYPE.Circle;
408
+ }
409
+ }), __metadata("design:type", Number)], MaskStyle.prototype, "width", void 0);
410
+
411
+ __decorate([Field({
412
+ step: 1,
413
+ if: function _if(mask) {
414
+ return mask.type !== exports.MASK_TYPE.Circle;
415
+ }
416
+ }), __metadata("design:type", Number)], MaskStyle.prototype, "height", void 0);
417
+
418
+ return MaskStyle;
419
+ }();
420
+
272
421
  var Mask$2 = function (_super) {
273
422
  __extends(Mask, _super);
274
423
 
@@ -287,9 +436,23 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
287
436
 
288
437
  Mask.componentName = 'Mask';
289
438
 
290
- __decorate([type('string')], Mask.prototype, "resource", void 0);
291
-
292
- __decorate([type('string')], Mask.prototype, "spriteName", void 0);
439
+ __decorate([Field({
440
+ type: 'selector',
441
+ options: (_a = {}, _a[exports.MASK_TYPE.Circle] = exports.MASK_TYPE.Circle, _a[exports.MASK_TYPE.Ellipse] = exports.MASK_TYPE.Ellipse, _a[exports.MASK_TYPE.Img] = exports.MASK_TYPE.Img, _a[exports.MASK_TYPE.Rect] = exports.MASK_TYPE.Rect, _a[exports.MASK_TYPE.RoundedRect] = exports.MASK_TYPE.RoundedRect, _a),
442
+ alias: 'type',
443
+ default: exports.MASK_TYPE.Circle
444
+ }), __metadata("design:type", String)], Mask.prototype, "mask_type", void 0);
445
+
446
+ __decorate([Field(function () {
447
+ return MaskStyle;
448
+ }), __metadata("design:type", Object)], Mask.prototype, "style", void 0);
449
+
450
+ __decorate([Field({
451
+ type: 'resource',
452
+ if: function _if(mask) {
453
+ return mask.type === exports.MASK_TYPE.Img || exports.MASK_TYPE.Sprite;
454
+ }
455
+ }), __metadata("design:type", String)], Mask.prototype, "resource", void 0);
293
456
 
294
457
  return Mask;
295
458
  }(eva_js.Component);
@@ -430,9 +593,10 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
430
593
  if (changed.prop.prop[0] === 'type') {
431
594
  this.changedCache[changed.gameObject.id] = true;
432
595
 
433
- if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {
596
+ if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1 || component._lastType !== component.type) {
434
597
  this.remove(changed);
435
598
  this.add(changed);
599
+ component._lastType = component.type;
436
600
  } else {
437
601
  this.redrawGraphics(changed);
438
602
  }
@@ -513,16 +677,18 @@ var _EVA_IIFE_mask = function (exports, eva_js, pluginRenderer, rendererAdapter)
513
677
 
514
678
  Mask.prototype.setSprite = function (component, sprite) {
515
679
  return __awaiter(this, void 0, void 0, function () {
516
- var res, img, texture;
680
+ var res, asyncId, img, texture;
517
681
  return __generator(this, function (_a) {
518
682
  switch (_a.label) {
519
683
  case 0:
520
684
  _a.trys.push([0, 2,, 3]);
521
685
 
686
+ asyncId = this.increaseAsyncId(component.gameObject.id);
522
687
  return [4, eva_js.resource.getResource(component.resource)];
523
688
 
524
689
  case 1:
525
690
  res = _a.sent();
691
+ if (!this.validateAsyncId(component.gameObject.id, asyncId)) return [2];
526
692
  return [3, 3];
527
693
 
528
694
  case 2:
@@ -1 +1 @@
1
- function _extends(){return(_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}window.EVA=window.EVA||{},window.EVA.plugin=window.EVA.plugin||{},window.EVA.plugin.renderer=window.EVA.plugin.renderer||{};var _EVA_IIFE_mask=function(e,t,r,n){"use strict";var o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function i(e,t){function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function a(e,t,r,n){var o,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function c(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function c(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,c)}s((n=n.apply(e,t||[])).next())}))}function s(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function p(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function l(e){return function(t,r){var n=function(e,t){return e.constructor.IDEProps||(e.constructor.IDEProps={}),e.constructor.IDEProps[t]||(e.constructor.IDEProps[t]={}),e.constructor.IDEProps[t]}(t,r);n.key=r,n.type=e}}e.MASK_TYPE=void 0,function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(e.MASK_TYPE||(e.MASK_TYPE={}));var u,h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.style={},t.resource="",t.spriteName="",t}return i(t,e),t.prototype.init=function(e){_extends(this,e)},t.componentName="Mask",a([l("string")],t.prototype,"resource",void 0),a([l("string")],t.prototype,"spriteName",void 0),t}(t.Component),d={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]},y={Circle:"drawCircle",Ellipse:"drawEllipse",Rect:"drawRect",RoundedRect:"drawRoundedRect",Polygon:"drawPolygon"};!function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(u||(u={}));var f=function(e){function o(){var t=null!==e&&e.apply(this,arguments)||this;return t.name="Mask",t.changedCache={},t.maskSpriteCache={},t}return i(o,e),o.prototype.init=function(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)},o.prototype.rendererUpdate=function(){this.changedCache={}},o.prototype.componentChanged=function(e){if("Mask"===e.component.name)switch(e.type){case t.OBSERVER_TYPE.ADD:this.add(e);break;case t.OBSERVER_TYPE.REMOVE:this.remove(e);break;case t.OBSERVER_TYPE.CHANGE:this.change(e)}},o.prototype.add=function(e){var t,r=e.component;if(!(r.type in u))throw new Error("no have Mask type: "+r.type);if(!r.style)throw new Error("no have Mask style: "+r.type);switch(r.type){case u.Circle:case u.Ellipse:case u.Rect:case u.RoundedRect:case u.Polygon:t=this.createGraphics(r);break;case u.Img:case u.Sprite:t=this.createSprite(r)}if(!t)throw new Error("no have mask instance, check your mask params: "+r.type);var n=this.containerManager.getContainer(e.gameObject.id);n.mask=t,n.addChild(t)},o.prototype.remove=function(e){var t=this.containerManager.getContainer(e.gameObject.id);t.removeChild(t.mask),t.mask.destroy({children:!0}),t.mask=null,delete this.maskSpriteCache[e.gameObject.id]},o.prototype.change=function(e){if(!this.changedCache[e.gameObject.id]){var t=e.component;"type"===e.prop.prop[0]?(this.changedCache[e.gameObject.id]=!0,[u.Sprite,u.Img].indexOf(t.type)>-1?(this.remove(e),this.add(e)):this.redrawGraphics(e)):"style"===e.prop.prop[0]?[u.Sprite,u.Img].indexOf(t.type)>-1?this.changeSpriteStyle(t):this.redrawGraphics(e):("resource"===e.prop.prop[0]||"spriteName"===e.prop.prop[0])&&(this.changedCache[e.gameObject.id]=!0,this.changeSprite(t))}},o.prototype.createGraphics=function(e){var t=new n.Graphics;return this.draw(t,e),t},o.prototype.redrawGraphics=function(e){var t=this.containerManager.getContainer(e.gameObject.id).mask;t.clear(),this.draw(t,e.component)},o.prototype.draw=function(e,t){var r,n,o=[];try{for(var i=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(d[t.type]),a=i.next();!a.done;a=i.next()){var c=a.value;o.push(t.style[c])}}catch(e){r={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}e.beginFill(0,1),e[y[t.type]].apply(e,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(p(arguments[t]));return e}(o)),e.endFill()},o.prototype.createSprite=function(e){var t=new n.Sprite(null);return this.maskSpriteCache[e.gameObject.id]=t,this.setSprite(e,t),t.sprite},o.prototype.changeSpriteStyle=function(e){var t=this.maskSpriteCache[e.gameObject.id];t.sprite.width=e.style.width,t.sprite.height=e.style.height,t.sprite.position.x=e.style.x,t.sprite.position.y=e.style.y},o.prototype.changeSprite=function(e){var t=this.maskSpriteCache[e.gameObject.id];this.setSprite(e,t)},o.prototype.setSprite=function(e,r){return c(this,void 0,void 0,(function(){var n,o,i;return s(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),[4,t.resource.getResource(e.resource)];case 1:return n=a.sent(),[3,3];case 2:throw a.sent(),new Error("mask resource load error");case 3:return e.type===u.Sprite?(o=e.resource+"_s|r|c_"+e.spriteName,i=n.instance[o],r.image=i):r.image=n.data.image,r.sprite.width=e.style.width,r.sprite.height=e.style.height,r.sprite.position.x=e.style.x,r.sprite.position.y=e.style.y,[2]}}))}))},o.systemName="Mask",o=a([t.decorators.componentObserver({Mask:["type",{prop:["style"],deep:!0},"resource","spriteName"]})],o)}(r.Renderer);return e.Mask=h,e.MaskSystem=f,Object.defineProperty(e,"__esModule",{value:!0}),e}({},EVA,EVA.plugin.renderer,EVA.rendererAdapter);window.EVA.plugin.renderer.mask=window.EVA.plugin.renderer.mask||_EVA_IIFE_mask;
1
+ function _extends(){return _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_extends.apply(this,arguments)}window.EVA=window.EVA||{},window.EVA.plugin=window.EVA.plugin||{},window.EVA.plugin.renderer=window.EVA.plugin.renderer||{};var _EVA_IIFE_mask=function(e,t,r,n){"use strict";var o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},o(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var a=function(){return a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},a.apply(this,arguments)};function c(e,t,r,n){var o,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function s(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function p(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function c(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,c)}s((n=n.apply(e,t||[])).next())}))}function u(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function l(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}var y=function(e){function t(){var t=this.constructor,r=e.call(this,"Symbol keys are not supported yet!")||this;return Object.setPrototypeOf(r,t.prototype),r}return i(t,e),t}(Error);!function(e){function t(){var t=this.constructor,r=e.call(this,"getProperties is not a function!")||this;return Object.setPrototypeOf(r,t.prototype),r}i(t,e)}(Error);var d,f,h="IDE_PROPERTY_METADATA";function g(e,t,r,n){var o=Reflect.getMetadata("design:type",e,t),i=o===Array,c=function(e){return e===String?"string":e===Number?"number":e===Boolean?"boolean":"unknown"}(o);if("unknown"!==c&&(o=c),n){var s=n();Array.isArray(s)?(i=!0,o=s[0]):o=s}var p=Reflect.getMetadata(h,e.constructor)||{};p[t]=a({type:o,isArray:i},r),Reflect.defineMetadata(h,p,e.constructor)}function m(e,t){return function(r,n){if("symbol"==typeof n)throw new y;var o=function(e,t){return"function"==typeof e?{returnTypeFunc:e,options:t||{}}:{options:e||{}}}(e,t);g(r,n,o.options,o.returnTypeFunc)}}!function(e){e[e.Edit=2]="Edit",e[e.Game=4]="Game",e[e.All=6]="All"}(d||(d={})),e.MASK_TYPE=void 0,function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(e.MASK_TYPE||(e.MASK_TYPE={}));var v,w=function(){function t(){}return c([m({step:1}),s("design:type",Number)],t.prototype,"x",void 0),c([m({step:1}),s("design:type",Number)],t.prototype,"y",void 0),c([m({step:.1,if:function(t){return t.type===e.MASK_TYPE.Circle||t.type===e.MASK_TYPE.RoundedRect}}),s("design:type",Number)],t.prototype,"radius",void 0),c([m({step:1,if:function(t){return t.type!==e.MASK_TYPE.Circle}}),s("design:type",Number)],t.prototype,"width",void 0),c([m({step:1,if:function(t){return t.type!==e.MASK_TYPE.Circle}}),s("design:type",Number)],t.prototype,"height",void 0),t}(),E=function(t){function r(){var e=null!==t&&t.apply(this,arguments)||this;return e.style={},e.resource="",e.spriteName="",e}return i(r,t),r.prototype.init=function(e){_extends(this,e)},r.componentName="Mask",c([m({type:"selector",options:(f={},f[e.MASK_TYPE.Circle]=e.MASK_TYPE.Circle,f[e.MASK_TYPE.Ellipse]=e.MASK_TYPE.Ellipse,f[e.MASK_TYPE.Img]=e.MASK_TYPE.Img,f[e.MASK_TYPE.Rect]=e.MASK_TYPE.Rect,f[e.MASK_TYPE.RoundedRect]=e.MASK_TYPE.RoundedRect,f),alias:"type",default:e.MASK_TYPE.Circle}),s("design:type",String)],r.prototype,"mask_type",void 0),c([m((function(){return w})),s("design:type",Object)],r.prototype,"style",void 0),c([m({type:"resource",if:function(t){return t.type===e.MASK_TYPE.Img||e.MASK_TYPE.Sprite}}),s("design:type",String)],r.prototype,"resource",void 0),r}(t.Component),S=E,b={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]},R={Circle:"drawCircle",Ellipse:"drawEllipse",Rect:"drawRect",RoundedRect:"drawRoundedRect",Polygon:"drawPolygon"};!function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(v||(v={}));var _=function(e){function o(){var t=null!==e&&e.apply(this,arguments)||this;return t.name="Mask",t.changedCache={},t.maskSpriteCache={},t}return i(o,e),o.prototype.init=function(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)},o.prototype.rendererUpdate=function(){this.changedCache={}},o.prototype.componentChanged=function(e){if("Mask"===e.component.name)switch(e.type){case t.OBSERVER_TYPE.ADD:this.add(e);break;case t.OBSERVER_TYPE.REMOVE:this.remove(e);break;case t.OBSERVER_TYPE.CHANGE:this.change(e)}},o.prototype.add=function(e){var t,r=e.component;if(!(r.type in v))throw new Error("no have Mask type: "+r.type);if(!r.style)throw new Error("no have Mask style: "+r.type);switch(r.type){case v.Circle:case v.Ellipse:case v.Rect:case v.RoundedRect:case v.Polygon:t=this.createGraphics(r);break;case v.Img:case v.Sprite:t=this.createSprite(r)}if(!t)throw new Error("no have mask instance, check your mask params: "+r.type);var n=this.containerManager.getContainer(e.gameObject.id);n.mask=t,n.addChild(t)},o.prototype.remove=function(e){var t=this.containerManager.getContainer(e.gameObject.id);t.removeChild(t.mask),t.mask.destroy({children:!0}),t.mask=null,delete this.maskSpriteCache[e.gameObject.id]},o.prototype.change=function(e){if(!this.changedCache[e.gameObject.id]){var t=e.component;"type"===e.prop.prop[0]?(this.changedCache[e.gameObject.id]=!0,[v.Sprite,v.Img].indexOf(t.type)>-1||t._lastType!==t.type?(this.remove(e),this.add(e),t._lastType=t.type):this.redrawGraphics(e)):"style"===e.prop.prop[0]?[v.Sprite,v.Img].indexOf(t.type)>-1?this.changeSpriteStyle(t):this.redrawGraphics(e):("resource"===e.prop.prop[0]||"spriteName"===e.prop.prop[0])&&(this.changedCache[e.gameObject.id]=!0,this.changeSprite(t))}},o.prototype.createGraphics=function(e){var t=new n.Graphics;return this.draw(t,e),t},o.prototype.redrawGraphics=function(e){var t=this.containerManager.getContainer(e.gameObject.id).mask;t.clear(),this.draw(t,e.component)},o.prototype.draw=function(e,t){var r,n,o=[];try{for(var i=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(b[t.type]),a=i.next();!a.done;a=i.next()){var c=a.value;o.push(t.style[c])}}catch(e){r={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}e.beginFill(0,1),e[R[t.type]].apply(e,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(l(arguments[t]));return e}(o)),e.endFill()},o.prototype.createSprite=function(e){var t=new n.Sprite(null);return this.maskSpriteCache[e.gameObject.id]=t,this.setSprite(e,t),t.sprite},o.prototype.changeSpriteStyle=function(e){var t=this.maskSpriteCache[e.gameObject.id];t.sprite.width=e.style.width,t.sprite.height=e.style.height,t.sprite.position.x=e.style.x,t.sprite.position.y=e.style.y},o.prototype.changeSprite=function(e){var t=this.maskSpriteCache[e.gameObject.id];this.setSprite(e,t)},o.prototype.setSprite=function(e,r){return p(this,void 0,void 0,(function(){var n,o,i,a;return u(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),o=this.increaseAsyncId(e.gameObject.id),[4,t.resource.getResource(e.resource)];case 1:return n=c.sent(),this.validateAsyncId(e.gameObject.id,o)?[3,3]:[2];case 2:throw c.sent(),new Error("mask resource load error");case 3:return e.type===v.Sprite?(i=e.resource+"_s|r|c_"+e.spriteName,a=n.instance[i],r.image=a):r.image=n.data.image,r.sprite.width=e.style.width,r.sprite.height=e.style.height,r.sprite.position.x=e.style.x,r.sprite.position.y=e.style.y,[2]}}))}))},o.systemName="Mask",o=c([t.decorators.componentObserver({Mask:["type",{prop:["style"],deep:!0},"resource","spriteName"]})],o)}(r.Renderer),A=_;return e.Mask=S,e.MaskSystem=A,Object.defineProperty(e,"__esModule",{value:!0}),e}({},EVA,EVA.plugin.renderer,EVA.rendererAdapter);window.EVA.plugin.renderer.mask=window.EVA.plugin.renderer.mask||_EVA_IIFE_mask;
@@ -43,6 +43,10 @@ function __decorate(decorators, target, key, desc) {
43
43
  return c > 3 && r && Object.defineProperty(target, key, r), r;
44
44
  }
45
45
 
46
+ function __metadata(metadataKey, metadataValue) {
47
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
48
+ }
49
+
46
50
  function __awaiter(thisArg, _arguments, P, generator) {
47
51
  return new (P || (P = Promise))(function (resolve, reject) {
48
52
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -114,6 +118,7 @@ function __spread() {
114
118
  return ar;
115
119
  }
116
120
 
121
+ var _a;
117
122
  exports.MASK_TYPE = void 0;
118
123
  (function (MASK_TYPE) {
119
124
  MASK_TYPE["Circle"] = "Circle";
@@ -124,6 +129,31 @@ exports.MASK_TYPE = void 0;
124
129
  MASK_TYPE["Img"] = "Img";
125
130
  MASK_TYPE["Sprite"] = "Sprite";
126
131
  })(exports.MASK_TYPE || (exports.MASK_TYPE = {}));
132
+ var MaskStyle = (function () {
133
+ function MaskStyle() {
134
+ }
135
+ __decorate([
136
+ inspectorDecorator.Field({ step: 1 }),
137
+ __metadata("design:type", Number)
138
+ ], MaskStyle.prototype, "x", void 0);
139
+ __decorate([
140
+ inspectorDecorator.Field({ step: 1 }),
141
+ __metadata("design:type", Number)
142
+ ], MaskStyle.prototype, "y", void 0);
143
+ __decorate([
144
+ inspectorDecorator.Field({ step: 0.1, if: function (mask) { return mask.type === exports.MASK_TYPE.Circle || mask.type === exports.MASK_TYPE.RoundedRect; } }),
145
+ __metadata("design:type", Number)
146
+ ], MaskStyle.prototype, "radius", void 0);
147
+ __decorate([
148
+ inspectorDecorator.Field({ step: 1, if: function (mask) { return mask.type !== exports.MASK_TYPE.Circle; } }),
149
+ __metadata("design:type", Number)
150
+ ], MaskStyle.prototype, "width", void 0);
151
+ __decorate([
152
+ inspectorDecorator.Field({ step: 1, if: function (mask) { return mask.type !== exports.MASK_TYPE.Circle; } }),
153
+ __metadata("design:type", Number)
154
+ ], MaskStyle.prototype, "height", void 0);
155
+ return MaskStyle;
156
+ }());
127
157
  var Mask$2 = (function (_super) {
128
158
  __extends(Mask, _super);
129
159
  function Mask() {
@@ -138,11 +168,31 @@ var Mask$2 = (function (_super) {
138
168
  };
139
169
  Mask.componentName = 'Mask';
140
170
  __decorate([
141
- inspectorDecorator.type('string')
142
- ], Mask.prototype, "resource", void 0);
171
+ inspectorDecorator.Field({
172
+ type: 'selector',
173
+ options: (_a = {},
174
+ _a[exports.MASK_TYPE.Circle] = exports.MASK_TYPE.Circle,
175
+ _a[exports.MASK_TYPE.Ellipse] = exports.MASK_TYPE.Ellipse,
176
+ _a[exports.MASK_TYPE.Img] = exports.MASK_TYPE.Img,
177
+ _a[exports.MASK_TYPE.Rect] = exports.MASK_TYPE.Rect,
178
+ _a[exports.MASK_TYPE.RoundedRect] = exports.MASK_TYPE.RoundedRect,
179
+ _a),
180
+ alias: 'type',
181
+ default: exports.MASK_TYPE.Circle,
182
+ }),
183
+ __metadata("design:type", String)
184
+ ], Mask.prototype, "mask_type", void 0);
143
185
  __decorate([
144
- inspectorDecorator.type('string')
145
- ], Mask.prototype, "spriteName", void 0);
186
+ inspectorDecorator.Field(function () { return MaskStyle; }),
187
+ __metadata("design:type", Object)
188
+ ], Mask.prototype, "style", void 0);
189
+ __decorate([
190
+ inspectorDecorator.Field({
191
+ type: 'resource',
192
+ if: function (mask) { return mask.type === exports.MASK_TYPE.Img || exports.MASK_TYPE.Sprite; },
193
+ }),
194
+ __metadata("design:type", String)
195
+ ], Mask.prototype, "resource", void 0);
146
196
  return Mask;
147
197
  }(eva_js.Component));
148
198
  var Mask$3 = Mask$2;
@@ -255,9 +305,11 @@ var Mask = (function (_super) {
255
305
  var component = changed.component;
256
306
  if (changed.prop.prop[0] === 'type') {
257
307
  this.changedCache[changed.gameObject.id] = true;
258
- if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {
308
+ if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1 ||
309
+ component._lastType !== component.type) {
259
310
  this.remove(changed);
260
311
  this.add(changed);
312
+ component._lastType = component.type;
261
313
  }
262
314
  else {
263
315
  this.redrawGraphics(changed);
@@ -330,14 +382,17 @@ var Mask = (function (_super) {
330
382
  };
331
383
  Mask.prototype.setSprite = function (component, sprite) {
332
384
  return __awaiter(this, void 0, void 0, function () {
333
- var res, img, texture;
385
+ var res, asyncId, img, texture;
334
386
  return __generator(this, function (_a) {
335
387
  switch (_a.label) {
336
388
  case 0:
337
389
  _a.trys.push([0, 2, , 3]);
390
+ asyncId = this.increaseAsyncId(component.gameObject.id);
338
391
  return [4, eva_js.resource.getResource(component.resource)];
339
392
  case 1:
340
393
  res = _a.sent();
394
+ if (!this.validateAsyncId(component.gameObject.id, asyncId))
395
+ return [2];
341
396
  return [3, 3];
342
397
  case 2:
343
398
  _a.sent();
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),t=require("@eva/inspector-decorator"),r=require("@eva/plugin-renderer"),n=require("@eva/renderer-adapter"),o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function i(e,t){function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function a(e,t,r,n){var o,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function c(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function s(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}exports.MASK_TYPE=void 0,function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(exports.MASK_TYPE||(exports.MASK_TYPE={}));var p,l=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.style={},t.resource="",t.spriteName="",t}return i(r,e),r.prototype.init=function(e){Object.assign(this,e)},r.componentName="Mask",a([t.type("string")],r.prototype,"resource",void 0),a([t.type("string")],r.prototype,"spriteName",void 0),r}(e.Component),u={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]},h={Circle:"drawCircle",Ellipse:"drawEllipse",Rect:"drawRect",RoundedRect:"drawRoundedRect",Polygon:"drawPolygon"};!function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(p||(p={}));var y=function(t){function o(){var e=null!==t&&t.apply(this,arguments)||this;return e.name="Mask",e.changedCache={},e.maskSpriteCache={},e}return i(o,t),o.prototype.init=function(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)},o.prototype.rendererUpdate=function(){this.changedCache={}},o.prototype.componentChanged=function(t){if("Mask"===t.component.name)switch(t.type){case e.OBSERVER_TYPE.ADD:this.add(t);break;case e.OBSERVER_TYPE.REMOVE:this.remove(t);break;case e.OBSERVER_TYPE.CHANGE:this.change(t)}},o.prototype.add=function(e){var t,r=e.component;if(!(r.type in p))throw new Error("no have Mask type: "+r.type);if(!r.style)throw new Error("no have Mask style: "+r.type);switch(r.type){case p.Circle:case p.Ellipse:case p.Rect:case p.RoundedRect:case p.Polygon:t=this.createGraphics(r);break;case p.Img:case p.Sprite:t=this.createSprite(r)}if(!t)throw new Error("no have mask instance, check your mask params: "+r.type);var n=this.containerManager.getContainer(e.gameObject.id);n.mask=t,n.addChild(t)},o.prototype.remove=function(e){var t=this.containerManager.getContainer(e.gameObject.id);t.removeChild(t.mask),t.mask.destroy({children:!0}),t.mask=null,delete this.maskSpriteCache[e.gameObject.id]},o.prototype.change=function(e){if(!this.changedCache[e.gameObject.id]){var t=e.component;"type"===e.prop.prop[0]?(this.changedCache[e.gameObject.id]=!0,[p.Sprite,p.Img].indexOf(t.type)>-1?(this.remove(e),this.add(e)):this.redrawGraphics(e)):"style"===e.prop.prop[0]?[p.Sprite,p.Img].indexOf(t.type)>-1?this.changeSpriteStyle(t):this.redrawGraphics(e):("resource"===e.prop.prop[0]||"spriteName"===e.prop.prop[0])&&(this.changedCache[e.gameObject.id]=!0,this.changeSprite(t))}},o.prototype.createGraphics=function(e){var t=new n.Graphics;return this.draw(t,e),t},o.prototype.redrawGraphics=function(e){var t=this.containerManager.getContainer(e.gameObject.id).mask;t.clear(),this.draw(t,e.component)},o.prototype.draw=function(e,t){var r,n,o=[];try{for(var i=function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(u[t.type]),a=i.next();!a.done;a=i.next()){var c=a.value;o.push(t.style[c])}}catch(e){r={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}e.beginFill(0,1),e[h[t.type]].apply(e,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}(o)),e.endFill()},o.prototype.createSprite=function(e){var t=new n.Sprite(null);return this.maskSpriteCache[e.gameObject.id]=t,this.setSprite(e,t),t.sprite},o.prototype.changeSpriteStyle=function(e){var t=this.maskSpriteCache[e.gameObject.id];t.sprite.width=e.style.width,t.sprite.height=e.style.height,t.sprite.position.x=e.style.x,t.sprite.position.y=e.style.y},o.prototype.changeSprite=function(e){var t=this.maskSpriteCache[e.gameObject.id];this.setSprite(e,t)},o.prototype.setSprite=function(t,r){return n=this,o=void 0,a=function(){var n,o,i;return c(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),[4,e.resource.getResource(t.resource)];case 1:return n=a.sent(),[3,3];case 2:throw a.sent(),new Error("mask resource load error");case 3:return t.type===p.Sprite?(o=t.resource+"_s|r|c_"+t.spriteName,i=n.instance[o],r.image=i):r.image=n.data.image,r.sprite.width=t.style.width,r.sprite.height=t.style.height,r.sprite.position.x=t.style.x,r.sprite.position.y=t.style.y,[2]}}))},new((i=void 0)||(i=Promise))((function(e,t){function r(e){try{s(a.next(e))}catch(e){t(e)}}function c(e){try{s(a.throw(e))}catch(e){t(e)}}function s(t){t.done?e(t.value):new i((function(e){e(t.value)})).then(r,c)}s((a=a.apply(n,o||[])).next())}));var n,o,i,a},o.systemName="Mask",o=a([e.decorators.componentObserver({Mask:["type",{prop:["style"],deep:!0},"resource","spriteName"]})],o)}(r.Renderer);exports.Mask=l,exports.MaskSystem=y;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@eva/eva.js"),r=require("@eva/inspector-decorator"),n=require("@eva/plugin-renderer"),o=require("@eva/renderer-adapter"),i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},i(e,t)};function a(e,t){function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function p(e,t,r,n){var o,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var p=e.length-1;p>=0;p--)(o=e[p])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function s(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function c(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:p(0),throw:p(1),return:p(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function p(i){return function(p){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,p])}}}function l(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}exports.MASK_TYPE=void 0,function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(exports.MASK_TYPE||(exports.MASK_TYPE={}));var u,y=function(){function e(){}return p([r.Field({step:1}),s("design:type",Number)],e.prototype,"x",void 0),p([r.Field({step:1}),s("design:type",Number)],e.prototype,"y",void 0),p([r.Field({step:.1,if:function(e){return e.type===exports.MASK_TYPE.Circle||e.type===exports.MASK_TYPE.RoundedRect}}),s("design:type",Number)],e.prototype,"radius",void 0),p([r.Field({step:1,if:function(e){return e.type!==exports.MASK_TYPE.Circle}}),s("design:type",Number)],e.prototype,"width",void 0),p([r.Field({step:1,if:function(e){return e.type!==exports.MASK_TYPE.Circle}}),s("design:type",Number)],e.prototype,"height",void 0),e}(),d=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.style={},e.resource="",e.spriteName="",e}return a(n,t),n.prototype.init=function(e){Object.assign(this,e)},n.componentName="Mask",p([r.Field({type:"selector",options:(e={},e[exports.MASK_TYPE.Circle]=exports.MASK_TYPE.Circle,e[exports.MASK_TYPE.Ellipse]=exports.MASK_TYPE.Ellipse,e[exports.MASK_TYPE.Img]=exports.MASK_TYPE.Img,e[exports.MASK_TYPE.Rect]=exports.MASK_TYPE.Rect,e[exports.MASK_TYPE.RoundedRect]=exports.MASK_TYPE.RoundedRect,e),alias:"type",default:exports.MASK_TYPE.Circle}),s("design:type",String)],n.prototype,"mask_type",void 0),p([r.Field((function(){return y})),s("design:type",Object)],n.prototype,"style",void 0),p([r.Field({type:"resource",if:function(e){return e.type===exports.MASK_TYPE.Img||exports.MASK_TYPE.Sprite}}),s("design:type",String)],n.prototype,"resource",void 0),n}(t.Component),h=d,f={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]},g={Circle:"drawCircle",Ellipse:"drawEllipse",Rect:"drawRect",RoundedRect:"drawRoundedRect",Polygon:"drawPolygon"};!function(e){e.Circle="Circle",e.Ellipse="Ellipse",e.Rect="Rect",e.RoundedRect="RoundedRect",e.Polygon="Polygon",e.Img="Img",e.Sprite="Sprite"}(u||(u={}));var m=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.name="Mask",t.changedCache={},t.maskSpriteCache={},t}return a(r,e),r.prototype.init=function(){this.renderSystem=this.game.getSystem(n.RendererSystem),this.renderSystem.rendererManager.register(this)},r.prototype.rendererUpdate=function(){this.changedCache={}},r.prototype.componentChanged=function(e){if("Mask"===e.component.name)switch(e.type){case t.OBSERVER_TYPE.ADD:this.add(e);break;case t.OBSERVER_TYPE.REMOVE:this.remove(e);break;case t.OBSERVER_TYPE.CHANGE:this.change(e)}},r.prototype.add=function(e){var t,r=e.component;if(!(r.type in u))throw new Error("no have Mask type: "+r.type);if(!r.style)throw new Error("no have Mask style: "+r.type);switch(r.type){case u.Circle:case u.Ellipse:case u.Rect:case u.RoundedRect:case u.Polygon:t=this.createGraphics(r);break;case u.Img:case u.Sprite:t=this.createSprite(r)}if(!t)throw new Error("no have mask instance, check your mask params: "+r.type);var n=this.containerManager.getContainer(e.gameObject.id);n.mask=t,n.addChild(t)},r.prototype.remove=function(e){var t=this.containerManager.getContainer(e.gameObject.id);t.removeChild(t.mask),t.mask.destroy({children:!0}),t.mask=null,delete this.maskSpriteCache[e.gameObject.id]},r.prototype.change=function(e){if(!this.changedCache[e.gameObject.id]){var t=e.component;"type"===e.prop.prop[0]?(this.changedCache[e.gameObject.id]=!0,[u.Sprite,u.Img].indexOf(t.type)>-1||t._lastType!==t.type?(this.remove(e),this.add(e),t._lastType=t.type):this.redrawGraphics(e)):"style"===e.prop.prop[0]?[u.Sprite,u.Img].indexOf(t.type)>-1?this.changeSpriteStyle(t):this.redrawGraphics(e):("resource"===e.prop.prop[0]||"spriteName"===e.prop.prop[0])&&(this.changedCache[e.gameObject.id]=!0,this.changeSprite(t))}},r.prototype.createGraphics=function(e){var t=new o.Graphics;return this.draw(t,e),t},r.prototype.redrawGraphics=function(e){var t=this.containerManager.getContainer(e.gameObject.id).mask;t.clear(),this.draw(t,e.component)},r.prototype.draw=function(e,t){var r,n,o=[];try{for(var i=function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(f[t.type]),a=i.next();!a.done;a=i.next()){var p=a.value;o.push(t.style[p])}}catch(e){r={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}e.beginFill(0,1),e[g[t.type]].apply(e,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(l(arguments[t]));return e}(o)),e.endFill()},r.prototype.createSprite=function(e){var t=new o.Sprite(null);return this.maskSpriteCache[e.gameObject.id]=t,this.setSprite(e,t),t.sprite},r.prototype.changeSpriteStyle=function(e){var t=this.maskSpriteCache[e.gameObject.id];t.sprite.width=e.style.width,t.sprite.height=e.style.height,t.sprite.position.x=e.style.x,t.sprite.position.y=e.style.y},r.prototype.changeSprite=function(e){var t=this.maskSpriteCache[e.gameObject.id];this.setSprite(e,t)},r.prototype.setSprite=function(e,r){return n=this,o=void 0,a=function(){var n,o,i,a;return c(this,(function(p){switch(p.label){case 0:return p.trys.push([0,2,,3]),o=this.increaseAsyncId(e.gameObject.id),[4,t.resource.getResource(e.resource)];case 1:return n=p.sent(),this.validateAsyncId(e.gameObject.id,o)?[3,3]:[2];case 2:throw p.sent(),new Error("mask resource load error");case 3:return e.type===u.Sprite?(i=e.resource+"_s|r|c_"+e.spriteName,a=n.instance[i],r.image=a):r.image=n.data.image,r.sprite.width=e.style.width,r.sprite.height=e.style.height,r.sprite.position.x=e.style.x,r.sprite.position.y=e.style.y,[2]}}))},new((i=void 0)||(i=Promise))((function(e,t){function r(e){try{s(a.next(e))}catch(e){t(e)}}function p(e){try{s(a.throw(e))}catch(e){t(e)}}function s(t){t.done?e(t.value):new i((function(e){e(t.value)})).then(r,p)}s((a=a.apply(n,o||[])).next())}));var n,o,i,a},r.systemName="Mask",r=p([t.decorators.componentObserver({Mask:["type",{prop:["style"],deep:!0},"resource","spriteName"]})],r)}(n.Renderer),v=m;exports.Mask=h,exports.MaskSystem=v;
@@ -11,6 +11,8 @@ import { Sprite } from '@eva/renderer-adapter';
11
11
 
12
12
  export declare class Mask extends Component<MaskParams> {
13
13
  static componentName: string;
14
+ _lastType: MaskParams['type'];
15
+ mask_type: string;
14
16
  type: MaskParams['type'];
15
17
  style?: MaskParams['style'];
16
18
  resource?: string;
@@ -1,5 +1,5 @@
1
1
  import { Component, OBSERVER_TYPE, decorators, resource } from '@eva/eva.js';
2
- import { type } from '@eva/inspector-decorator';
2
+ import { Field } from '@eva/inspector-decorator';
3
3
  import { RendererSystem, Renderer } from '@eva/plugin-renderer';
4
4
  import { Graphics, Sprite } from '@eva/renderer-adapter';
5
5
 
@@ -39,6 +39,10 @@ function __decorate(decorators, target, key, desc) {
39
39
  return c > 3 && r && Object.defineProperty(target, key, r), r;
40
40
  }
41
41
 
42
+ function __metadata(metadataKey, metadataValue) {
43
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
44
+ }
45
+
42
46
  function __awaiter(thisArg, _arguments, P, generator) {
43
47
  return new (P || (P = Promise))(function (resolve, reject) {
44
48
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -110,6 +114,7 @@ function __spread() {
110
114
  return ar;
111
115
  }
112
116
 
117
+ var _a;
113
118
  var MASK_TYPE$1;
114
119
  (function (MASK_TYPE) {
115
120
  MASK_TYPE["Circle"] = "Circle";
@@ -120,6 +125,31 @@ var MASK_TYPE$1;
120
125
  MASK_TYPE["Img"] = "Img";
121
126
  MASK_TYPE["Sprite"] = "Sprite";
122
127
  })(MASK_TYPE$1 || (MASK_TYPE$1 = {}));
128
+ var MaskStyle = (function () {
129
+ function MaskStyle() {
130
+ }
131
+ __decorate([
132
+ Field({ step: 1 }),
133
+ __metadata("design:type", Number)
134
+ ], MaskStyle.prototype, "x", void 0);
135
+ __decorate([
136
+ Field({ step: 1 }),
137
+ __metadata("design:type", Number)
138
+ ], MaskStyle.prototype, "y", void 0);
139
+ __decorate([
140
+ Field({ step: 0.1, if: function (mask) { return mask.type === MASK_TYPE$1.Circle || mask.type === MASK_TYPE$1.RoundedRect; } }),
141
+ __metadata("design:type", Number)
142
+ ], MaskStyle.prototype, "radius", void 0);
143
+ __decorate([
144
+ Field({ step: 1, if: function (mask) { return mask.type !== MASK_TYPE$1.Circle; } }),
145
+ __metadata("design:type", Number)
146
+ ], MaskStyle.prototype, "width", void 0);
147
+ __decorate([
148
+ Field({ step: 1, if: function (mask) { return mask.type !== MASK_TYPE$1.Circle; } }),
149
+ __metadata("design:type", Number)
150
+ ], MaskStyle.prototype, "height", void 0);
151
+ return MaskStyle;
152
+ }());
123
153
  var Mask$2 = (function (_super) {
124
154
  __extends(Mask, _super);
125
155
  function Mask() {
@@ -134,11 +164,31 @@ var Mask$2 = (function (_super) {
134
164
  };
135
165
  Mask.componentName = 'Mask';
136
166
  __decorate([
137
- type('string')
138
- ], Mask.prototype, "resource", void 0);
167
+ Field({
168
+ type: 'selector',
169
+ options: (_a = {},
170
+ _a[MASK_TYPE$1.Circle] = MASK_TYPE$1.Circle,
171
+ _a[MASK_TYPE$1.Ellipse] = MASK_TYPE$1.Ellipse,
172
+ _a[MASK_TYPE$1.Img] = MASK_TYPE$1.Img,
173
+ _a[MASK_TYPE$1.Rect] = MASK_TYPE$1.Rect,
174
+ _a[MASK_TYPE$1.RoundedRect] = MASK_TYPE$1.RoundedRect,
175
+ _a),
176
+ alias: 'type',
177
+ default: MASK_TYPE$1.Circle,
178
+ }),
179
+ __metadata("design:type", String)
180
+ ], Mask.prototype, "mask_type", void 0);
139
181
  __decorate([
140
- type('string')
141
- ], Mask.prototype, "spriteName", void 0);
182
+ Field(function () { return MaskStyle; }),
183
+ __metadata("design:type", Object)
184
+ ], Mask.prototype, "style", void 0);
185
+ __decorate([
186
+ Field({
187
+ type: 'resource',
188
+ if: function (mask) { return mask.type === MASK_TYPE$1.Img || MASK_TYPE$1.Sprite; },
189
+ }),
190
+ __metadata("design:type", String)
191
+ ], Mask.prototype, "resource", void 0);
142
192
  return Mask;
143
193
  }(Component));
144
194
  var Mask$3 = Mask$2;
@@ -251,9 +301,11 @@ var Mask = (function (_super) {
251
301
  var component = changed.component;
252
302
  if (changed.prop.prop[0] === 'type') {
253
303
  this.changedCache[changed.gameObject.id] = true;
254
- if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {
304
+ if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1 ||
305
+ component._lastType !== component.type) {
255
306
  this.remove(changed);
256
307
  this.add(changed);
308
+ component._lastType = component.type;
257
309
  }
258
310
  else {
259
311
  this.redrawGraphics(changed);
@@ -326,14 +378,17 @@ var Mask = (function (_super) {
326
378
  };
327
379
  Mask.prototype.setSprite = function (component, sprite) {
328
380
  return __awaiter(this, void 0, void 0, function () {
329
- var res, img, texture;
381
+ var res, asyncId, img, texture;
330
382
  return __generator(this, function (_a) {
331
383
  switch (_a.label) {
332
384
  case 0:
333
385
  _a.trys.push([0, 2, , 3]);
386
+ asyncId = this.increaseAsyncId(component.gameObject.id);
334
387
  return [4, resource.getResource(component.resource)];
335
388
  case 1:
336
389
  res = _a.sent();
390
+ if (!this.validateAsyncId(component.gameObject.id, asyncId))
391
+ return [2];
337
392
  return [3, 3];
338
393
  case 2:
339
394
  _a.sent();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eva/plugin-renderer-mask",
3
- "version": "1.2.6",
3
+ "version": "1.2.7-editor.10",
4
4
  "description": "@eva/plugin-renderer-mask",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer-mask.esm.js",
@@ -18,10 +18,10 @@
18
18
  "license": "MIT",
19
19
  "homepage": "https://eva.js.org",
20
20
  "dependencies": {
21
- "@eva/inspector-decorator": "^0.0.5",
22
- "@eva/plugin-renderer": "1.2.6",
23
- "@eva/renderer-adapter": "1.2.6",
24
- "@eva/eva.js": "1.2.6",
21
+ "@eva/inspector-decorator": "0.1.0-alpha.2",
22
+ "@eva/plugin-renderer": "1.2.7-editor.10",
23
+ "@eva/renderer-adapter": "1.2.7-editor.10",
24
+ "@eva/eva.js": "1.2.7-editor.10",
25
25
  "pixi.js": "^4.8.7"
26
26
  }
27
27
  }
@@ -1,311 +0,0 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
-
3
- import { __extends, __decorate, __values, __spread, __awaiter, __generator } from 'tslib';
4
- import { Component, OBSERVER_TYPE, resource, decorators } from '@eva/eva.js/dist/miniprogram';
5
- import { type } from '@eva/inspector-decorator';
6
- import { RendererSystem, Renderer } from '@eva/plugin-renderer/dist/miniprogram';
7
- import { Graphics, Sprite } from '@eva/renderer-adapter/dist/miniprogram';
8
- var MASK_TYPE$1;
9
-
10
- (function (MASK_TYPE) {
11
- MASK_TYPE["Circle"] = "Circle";
12
- MASK_TYPE["Ellipse"] = "Ellipse";
13
- MASK_TYPE["Rect"] = "Rect";
14
- MASK_TYPE["RoundedRect"] = "RoundedRect";
15
- MASK_TYPE["Polygon"] = "Polygon";
16
- MASK_TYPE["Img"] = "Img";
17
- MASK_TYPE["Sprite"] = "Sprite";
18
- })(MASK_TYPE$1 || (MASK_TYPE$1 = {}));
19
-
20
- var Mask$2 = function (_super) {
21
- __extends(Mask, _super);
22
-
23
- function Mask() {
24
- var _this = _super !== null && _super.apply(this, arguments) || this;
25
-
26
- _this.style = {};
27
- _this.resource = '';
28
- _this.spriteName = '';
29
- return _this;
30
- }
31
-
32
- Mask.prototype.init = function (obj) {
33
- _extends(this, obj);
34
- };
35
-
36
- Mask.componentName = 'Mask';
37
-
38
- __decorate([type('string')], Mask.prototype, "resource", void 0);
39
-
40
- __decorate([type('string')], Mask.prototype, "spriteName", void 0);
41
-
42
- return Mask;
43
- }(Component);
44
-
45
- var Mask$3 = Mask$2;
46
- var resourceKeySplit = '_s|r|c_';
47
- var propertyForGraphics = {
48
- Circle: ['x', 'y', 'radius'],
49
- Ellipse: ['x', 'y', 'width', 'height'],
50
- Rect: ['x', 'y', 'width', 'height'],
51
- RoundedRect: ['x', 'y', 'width', 'height', 'radius'],
52
- Polygon: ['paths']
53
- };
54
- var functionForGraphics = {
55
- Circle: 'drawCircle',
56
- Ellipse: 'drawEllipse',
57
- Rect: 'drawRect',
58
- RoundedRect: 'drawRoundedRect',
59
- Polygon: 'drawPolygon'
60
- };
61
- var MASK_TYPE;
62
-
63
- (function (MASK_TYPE) {
64
- MASK_TYPE["Circle"] = "Circle";
65
- MASK_TYPE["Ellipse"] = "Ellipse";
66
- MASK_TYPE["Rect"] = "Rect";
67
- MASK_TYPE["RoundedRect"] = "RoundedRect";
68
- MASK_TYPE["Polygon"] = "Polygon";
69
- MASK_TYPE["Img"] = "Img";
70
- MASK_TYPE["Sprite"] = "Sprite";
71
- })(MASK_TYPE || (MASK_TYPE = {}));
72
-
73
- var Mask = function (_super) {
74
- __extends(Mask, _super);
75
-
76
- function Mask() {
77
- var _this = _super !== null && _super.apply(this, arguments) || this;
78
-
79
- _this.name = 'Mask';
80
- _this.changedCache = {};
81
- _this.maskSpriteCache = {};
82
- return _this;
83
- }
84
-
85
- Mask.prototype.init = function () {
86
- this.renderSystem = this.game.getSystem(RendererSystem);
87
- this.renderSystem.rendererManager.register(this);
88
- };
89
-
90
- Mask.prototype.rendererUpdate = function () {
91
- this.changedCache = {};
92
- };
93
-
94
- Mask.prototype.componentChanged = function (changed) {
95
- if (changed.component.name !== 'Mask') return;
96
-
97
- switch (changed.type) {
98
- case OBSERVER_TYPE.ADD:
99
- this.add(changed);
100
- break;
101
-
102
- case OBSERVER_TYPE.REMOVE:
103
- this.remove(changed);
104
- break;
105
-
106
- case OBSERVER_TYPE.CHANGE:
107
- this.change(changed);
108
- break;
109
- }
110
- };
111
-
112
- Mask.prototype.add = function (changed) {
113
- var component = changed.component;
114
-
115
- if (!(component.type in MASK_TYPE)) {
116
- throw new Error('no have Mask type: ' + component.type);
117
- }
118
-
119
- if (!component.style) {
120
- throw new Error('no have Mask style: ' + component.type);
121
- }
122
-
123
- var mask;
124
-
125
- switch (component.type) {
126
- case MASK_TYPE.Circle:
127
- mask = this.createGraphics(component);
128
- break;
129
-
130
- case MASK_TYPE.Ellipse:
131
- mask = this.createGraphics(component);
132
- break;
133
-
134
- case MASK_TYPE.Rect:
135
- mask = this.createGraphics(component);
136
- break;
137
-
138
- case MASK_TYPE.RoundedRect:
139
- mask = this.createGraphics(component);
140
- break;
141
-
142
- case MASK_TYPE.Polygon:
143
- mask = this.createGraphics(component);
144
- break;
145
-
146
- case MASK_TYPE.Img:
147
- mask = this.createSprite(component);
148
- break;
149
-
150
- case MASK_TYPE.Sprite:
151
- mask = this.createSprite(component);
152
- break;
153
- }
154
-
155
- if (!mask) {
156
- throw new Error('no have mask instance, check your mask params: ' + component.type);
157
- }
158
-
159
- var container = this.containerManager.getContainer(changed.gameObject.id);
160
- container.mask = mask;
161
- container.addChild(mask);
162
- };
163
-
164
- Mask.prototype.remove = function (changed) {
165
- var container = this.containerManager.getContainer(changed.gameObject.id);
166
- container.removeChild(container.mask);
167
- container.mask.destroy({
168
- children: true
169
- });
170
- container.mask = null;
171
- delete this.maskSpriteCache[changed.gameObject.id];
172
- };
173
-
174
- Mask.prototype.change = function (changed) {
175
- if (this.changedCache[changed.gameObject.id]) return;
176
- var component = changed.component;
177
-
178
- if (changed.prop.prop[0] === 'type') {
179
- this.changedCache[changed.gameObject.id] = true;
180
-
181
- if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {
182
- this.remove(changed);
183
- this.add(changed);
184
- } else {
185
- this.redrawGraphics(changed);
186
- }
187
- } else if (changed.prop.prop[0] === 'style') {
188
- if ([MASK_TYPE.Sprite, MASK_TYPE.Img].indexOf(component.type) > -1) {
189
- this.changeSpriteStyle(component);
190
- } else {
191
- this.redrawGraphics(changed);
192
- }
193
- } else if (changed.prop.prop[0] === 'resource') {
194
- this.changedCache[changed.gameObject.id] = true;
195
- this.changeSprite(component);
196
- } else if (changed.prop.prop[0] === 'spriteName') {
197
- this.changedCache[changed.gameObject.id] = true;
198
- this.changeSprite(component);
199
- }
200
- };
201
-
202
- Mask.prototype.createGraphics = function (component) {
203
- var graphics = new Graphics();
204
- this.draw(graphics, component);
205
- return graphics;
206
- };
207
-
208
- Mask.prototype.redrawGraphics = function (changed) {
209
- var container = this.containerManager.getContainer(changed.gameObject.id);
210
- var graphics = container.mask;
211
- graphics.clear();
212
- this.draw(graphics, changed.component);
213
- };
214
-
215
- Mask.prototype.draw = function (graphics, component) {
216
- var e_1, _a;
217
-
218
- var params = [];
219
-
220
- try {
221
- for (var _b = __values(propertyForGraphics[component.type]), _c = _b.next(); !_c.done; _c = _b.next()) {
222
- var key = _c.value;
223
- params.push(component.style[key]);
224
- }
225
- } catch (e_1_1) {
226
- e_1 = {
227
- error: e_1_1
228
- };
229
- } finally {
230
- try {
231
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
232
- } finally {
233
- if (e_1) throw e_1.error;
234
- }
235
- }
236
-
237
- graphics.beginFill(0x000000, 1);
238
- graphics[functionForGraphics[component.type]].apply(graphics, __spread(params));
239
- graphics.endFill();
240
- };
241
-
242
- Mask.prototype.createSprite = function (component) {
243
- var sprite = new Sprite(null);
244
- this.maskSpriteCache[component.gameObject.id] = sprite;
245
- this.setSprite(component, sprite);
246
- return sprite.sprite;
247
- };
248
-
249
- Mask.prototype.changeSpriteStyle = function (component) {
250
- var sprite = this.maskSpriteCache[component.gameObject.id];
251
- sprite.sprite.width = component.style.width;
252
- sprite.sprite.height = component.style.height;
253
- sprite.sprite.position.x = component.style.x;
254
- sprite.sprite.position.y = component.style.y;
255
- };
256
-
257
- Mask.prototype.changeSprite = function (component) {
258
- var sprite = this.maskSpriteCache[component.gameObject.id];
259
- this.setSprite(component, sprite);
260
- };
261
-
262
- Mask.prototype.setSprite = function (component, sprite) {
263
- return __awaiter(this, void 0, void 0, function () {
264
- var res, img, texture;
265
- return __generator(this, function (_a) {
266
- switch (_a.label) {
267
- case 0:
268
- _a.trys.push([0, 2,, 3]);
269
-
270
- return [4, resource.getResource(component.resource)];
271
-
272
- case 1:
273
- res = _a.sent();
274
- return [3, 3];
275
-
276
- case 2:
277
- _a.sent();
278
-
279
- throw new Error('mask resource load error');
280
-
281
- case 3:
282
- if (component.type === MASK_TYPE.Sprite) {
283
- img = component.resource + resourceKeySplit + component.spriteName;
284
- texture = res.instance[img];
285
- sprite.image = texture;
286
- } else {
287
- sprite.image = res.data.image;
288
- }
289
-
290
- sprite.sprite.width = component.style.width;
291
- sprite.sprite.height = component.style.height;
292
- sprite.sprite.position.x = component.style.x;
293
- sprite.sprite.position.y = component.style.y;
294
- return [2];
295
- }
296
- });
297
- });
298
- };
299
-
300
- Mask.systemName = 'Mask';
301
- Mask = __decorate([decorators.componentObserver({
302
- Mask: ['type', {
303
- prop: ['style'],
304
- deep: true
305
- }, 'resource', 'spriteName']
306
- })], Mask);
307
- return Mask;
308
- }(Renderer);
309
-
310
- var Mask$1 = Mask;
311
- export { MASK_TYPE$1 as MASK_TYPE, Mask$3 as Mask, Mask$1 as MaskSystem };