576e7f7b8c85587a6d73144af43d1bb566618299.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. System.register(["__unresolved_0", "cc", "__unresolved_1"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, ECSGroup, ECSModel, _crd;
  4. function _reportPossibleCrUseOfecs(extras) {
  5. _reporterNs.report("ecs", "./ECS", _context.meta, extras);
  6. }
  7. function _reportPossibleCrUseOfECSEntity(extras) {
  8. _reporterNs.report("ECSEntity", "./ECSEntity", _context.meta, extras);
  9. }
  10. function _reportPossibleCrUseOfECSGroup(extras) {
  11. _reporterNs.report("ECSGroup", "./ECSGroup", _context.meta, extras);
  12. }
  13. _export("ECSModel", void 0);
  14. return {
  15. setters: [function (_unresolved_) {
  16. _reporterNs = _unresolved_;
  17. }, function (_cc) {
  18. _cclegacy = _cc.cclegacy;
  19. }, function (_unresolved_2) {
  20. ECSGroup = _unresolved_2.ECSGroup;
  21. }],
  22. execute: function () {
  23. _crd = true;
  24. _cclegacy._RF.push({}, "1d60egM6r9Gta4Op3VABSGM", "ECSModel", undefined);
  25. /*
  26. * @Author: dgflash
  27. * @Date: 2022-05-12 14:18:44
  28. * @LastEditors: dgflash
  29. * @LastEditTime: 2022-09-05 16:37:10
  30. */
  31. /** 组件类型 */
  32. /** 实体构造器接口 */
  33. /** 组件构造器接口 */
  34. /** ECS框架内部数据 */
  35. _export("ECSModel", ECSModel = class ECSModel {
  36. /**
  37. * 创建group,每个group只关心对应组件的添加和删除
  38. * @param matcher 实体筛选器
  39. */
  40. static createGroup(matcher) {
  41. var group = ECSModel.groups.get(matcher.mid);
  42. if (!group) {
  43. group = new (_crd && ECSGroup === void 0 ? (_reportPossibleCrUseOfECSGroup({
  44. error: Error()
  45. }), ECSGroup) : ECSGroup)(matcher);
  46. ECSModel.groups.set(matcher.mid, group);
  47. var careComponentTypeIds = matcher.indices;
  48. for (var i = 0; i < careComponentTypeIds.length; i++) {
  49. ECSModel.compAddOrRemove.get(careComponentTypeIds[i]).push(group.onComponentAddOrRemove.bind(group));
  50. }
  51. }
  52. return group;
  53. }
  54. /** 系统组件 */
  55. });
  56. /** 实体自增id */
  57. ECSModel.eid = 1;
  58. /** 实体造函数 */
  59. ECSModel.entityCtors = new Map();
  60. /** 实体对象缓存池 */
  61. ECSModel.entityPool = new Map();
  62. /** 通过实体id查找实体对象 */
  63. ECSModel.eid2Entity = new Map();
  64. /** 组件类型id */
  65. ECSModel.compTid = 0;
  66. /** 组件缓存池 */
  67. ECSModel.compPools = new Map();
  68. /** 组件构造函数,用于ecs.register注册时,记录不同类型的组件 */
  69. ECSModel.compCtors = [];
  70. /**
  71. * 每个组件的添加和删除的动作都要派送到“关心”它们的group上。goup对当前拥有或者之前(删除前)拥有该组件的实体进行组件规则判断。判断该实体是否满足group
  72. * 所期望的组件组合。
  73. */
  74. ECSModel.compAddOrRemove = new Map();
  75. /** 编号获取组件 */
  76. ECSModel.tid2comp = new Map();
  77. /**
  78. * 缓存的group
  79. *
  80. * key是组件的筛选规则,一个筛选规则对应一个group
  81. */
  82. ECSModel.groups = new Map();
  83. ECSModel.systems = new Map();
  84. _cclegacy._RF.pop();
  85. _crd = false;
  86. }
  87. };
  88. });
  89. //# sourceMappingURL=576e7f7b8c85587a6d73144af43d1bb566618299.js.map