| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409 |
- System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5"], function (_export, _context) {
- "use strict";
- var _reporterNs, _cclegacy, ECSComp, ECSEntity, ECSMatcher, ECSModel, ECSComblockSystem, ECSRootSystem, ECSSystem, _crd, ecs;
- function _reportPossibleCrUseOfECSComp(extras) {
- _reporterNs.report("ECSComp", "./ECSComp", _context.meta, extras);
- }
- function _reportPossibleCrUseOfECSEntity(extras) {
- _reporterNs.report("ECSEntity", "./ECSEntity", _context.meta, extras);
- }
- function _reportPossibleCrUseOfECSMatcher(extras) {
- _reporterNs.report("ECSMatcher", "./ECSMatcher", _context.meta, extras);
- }
- function _reportPossibleCrUseOfCompCtor(extras) {
- _reporterNs.report("CompCtor", "./ECSModel", _context.meta, extras);
- }
- function _reportPossibleCrUseOfCompType(extras) {
- _reporterNs.report("CompType", "./ECSModel", _context.meta, extras);
- }
- function _reportPossibleCrUseOfECSModel(extras) {
- _reporterNs.report("ECSModel", "./ECSModel", _context.meta, extras);
- }
- function _reportPossibleCrUseOfEntityCtor(extras) {
- _reporterNs.report("EntityCtor", "./ECSModel", _context.meta, extras);
- }
- function _reportPossibleCrUseOfECSComblockSystem(extras) {
- _reporterNs.report("ECSComblockSystem", "./ECSSystem", _context.meta, extras);
- }
- function _reportPossibleCrUseOfECSRootSystem(extras) {
- _reporterNs.report("ECSRootSystem", "./ECSSystem", _context.meta, extras);
- }
- function _reportPossibleCrUseOfECSSystem(extras) {
- _reporterNs.report("ECSSystem", "./ECSSystem", _context.meta, extras);
- }
- _export("ecs", void 0);
- return {
- setters: [function (_unresolved_) {
- _reporterNs = _unresolved_;
- }, function (_cc) {
- _cclegacy = _cc.cclegacy;
- }, function (_unresolved_2) {
- ECSComp = _unresolved_2.ECSComp;
- }, function (_unresolved_3) {
- ECSEntity = _unresolved_3.ECSEntity;
- }, function (_unresolved_4) {
- ECSMatcher = _unresolved_4.ECSMatcher;
- }, function (_unresolved_5) {
- ECSModel = _unresolved_5.ECSModel;
- }, function (_unresolved_6) {
- ECSComblockSystem = _unresolved_6.ECSComblockSystem;
- ECSRootSystem = _unresolved_6.ECSRootSystem;
- ECSSystem = _unresolved_6.ECSSystem;
- }],
- execute: function () {
- _crd = true;
- _cclegacy._RF.push({}, "be87fT76plLkaUKEYpkuV0n", "ECS", undefined);
- (function (_ecs) {
- /** 实体 - 一个概念上的定义,指的是游戏世界中的一个独特物体,是一系列组件的集合 */
- /** 组件 - 一堆数据的集合,即不存在任何的行为,只用来存储状态 */
- /** 系统 - 关注实体上组件数据变化,处理游戏逻辑 */
- /** 根系统 - 驱动游戏中所有系统工作 */
- /** 处理游戏逻辑系统对象 - 继承此对象实现自定义业务逻辑 */
- /** 实体 - 一个概念上的定义,指的是游戏世界中的一个独特物体,是一系列组件的集合 */
- const Entity = _ecs.Entity = _crd && ECSEntity === void 0 ? (_reportPossibleCrUseOfECSEntity({
- error: Error()
- }), ECSEntity) : ECSEntity;
- const Comp = _ecs.Comp = _crd && ECSComp === void 0 ? (_reportPossibleCrUseOfECSComp({
- error: Error()
- }), ECSComp) : ECSComp;
- const System = _ecs.System = _crd && ECSSystem === void 0 ? (_reportPossibleCrUseOfECSSystem({
- error: Error()
- }), ECSSystem) : ECSSystem;
- const RootSystem = _ecs.RootSystem = _crd && ECSRootSystem === void 0 ? (_reportPossibleCrUseOfECSRootSystem({
- error: Error()
- }), ECSRootSystem) : ECSRootSystem;
- const ComblockSystem = _ecs.ComblockSystem = _crd && ECSComblockSystem === void 0 ? (_reportPossibleCrUseOfECSComblockSystem({
- error: Error()
- }), ECSComblockSystem) : ECSComblockSystem; //#region 接口
- /** 组件接口 */
- /** 实体匹配器接口 */
- /**
- * 监听组件首次添加到实体上时,在ComblockSystem上实现这个接口
- * 1. entityEnter会在update方法之前执行,实体进入后,不会再次进入entityEnter方法中
- * 2. 当实体从当前System移除,下次再次符合条件进入System也会执行上述流程
- * @example
- export class RoleUpgradeSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
- filter(): ecs.IMatcher {
- return ecs.allOf(RoleUpgradeComp, RoleModelLevelComp);
- }
- entityEnter(e: Role): void {
- e.remove(RoleUpgradeComp);
- }
- }
- */
- /** 监听组件从实体上移除时,在ComblockSystem上实现这个接口 */
- /** 监听系统第一次执行update处理实体时,在ComblockSystem上实现这个接口 */
- /** 监听系统执行update处理实体时,在ComblockSystem上实现这个接口 */
- //#endregion
- /**
- * 注册组件到ecs系统中
- * @param name 由于js打包会改变类名,所以这里必须手动传入组件的名称
- * @param canNew 标识是否可以new对象。想继承自Cocos Creator的组件就不能去new,需要写成@ecs.register('name', false)
- * @example
- // 注册实体
- @ecs.register('Role')
- export class Role extends ecs.Entity {
- }
- // 注册数据组件
- @ecs.register('RoleModel')
- export class RoleModelComp extends ecs.Comp {
- id: number = -1;
- reset() {
- this.id = -1;
- }
- }
- // 注册系统组件
- @ecs.register('Initialize')
- export class InitResSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
- }
- // 注册显示对象组件
- @ccclass('RoleViewComp')
- @ecs.register('RoleView', false)
- export class RoleViewComp extends CCComp {
- onLoad(){
-
- }
- }
- */
- function register(name, canNew = true) {
- return function (ctor) {
- // 注册系统
- if (ctor.s) {
- var system = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).systems.get(name);
- if (system == null) {
- system = new ecs.System();
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).systems.set(name, system);
- }
- system.add(new ctor());
- } // 注册实体
- else if (ctor.tid == undefined) {
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).entityCtors.set(ctor, name);
- } // 注册组件
- else {
- if (ctor.tid === -1) {
- ctor.tid = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).compTid++;
- ctor.compName = name;
- if (canNew) {
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).compCtors.push(ctor); // 注册不同类型的组件
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).compPools.set(ctor.tid, []);
- } else {
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).compCtors.push(null);
- }
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).compAddOrRemove.set(ctor.tid, []);
- } else {
- throw new Error(`重复注册组件: ${name}.`);
- }
- }
- };
- }
- _ecs.register = register;
- function getEntity(ctor) {
- // 获取实体对象名
- var entityName = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).entityCtors.get(ctor);
- if (entityName == undefined) console.error(`${ctor.name} 实体没有注册`); // 获取实体对象池
- var entitys = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).entityPool.get(entityName) || [];
- var entity = entitys.pop(); // 缓存中没有同类实体,则创建一个新的
- if (!entity) {
- entity = new ctor();
- entity.eid = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid++; // 实体唯一编号
- entity.name = entityName;
- } // 触发实体初始化逻辑
- if (entity.init) {
- entity.isValid = true;
- entity.init();
- } else console.error(`${ctor.name} 实体缺少 init 方法初始化默认组件`);
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid2Entity.set(entity.eid, entity);
- return entity;
- }
- _ecs.getEntity = getEntity;
- function query(matcher) {
- let group = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).groups.get(matcher.mid);
- if (!group) {
- group = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).createGroup(matcher);
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid2Entity.forEach(group.onComponentAddOrRemove, group);
- }
- return group.matchEntities;
- }
- _ecs.query = query;
- function clear() {
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid2Entity.forEach(entity => {
- entity.destroy();
- });
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).groups.forEach(group => {
- group.clear();
- });
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).compAddOrRemove.forEach(callbackLst => {
- callbackLst.length = 0;
- });
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid2Entity.clear();
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).groups.clear();
- }
- _ecs.clear = clear;
- function getEntityByEid(eid) {
- return (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid2Entity.get(eid);
- }
- _ecs.getEntityByEid = getEntityByEid;
- function activeEntityCount() {
- return (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid2Entity.size;
- }
- _ecs.activeEntityCount = activeEntityCount;
- /** 创建实体 */
- function createEntity() {
- let entity = new Entity();
- entity.eid = (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid++; // 实体id也是有限的资源
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).eid2Entity.set(entity.eid, entity);
- return entity;
- }
- /**
- * 指定一个组件创建实体,返回组件对象。
- * @param ctor
- */
- function createEntityWithComp(ctor) {
- let entity = createEntity();
- return entity.add(ctor);
- } //#region 过滤器
- /**
- * 表示只关心这些组件的添加和删除动作。虽然实体可能有这些组件之外的组件,但是它们的添加和删除没有被关注,所以不会存在对关注之外的组件
- * 进行添加操作引发Group重复添加实体。
- * @param args
- * @example
- * ecs.allOf(AComponent, BComponent, CComponent);
- */
- function allOf(...args) {
- return new (_crd && ECSMatcher === void 0 ? (_reportPossibleCrUseOfECSMatcher({
- error: Error()
- }), ECSMatcher) : ECSMatcher)().allOf(...args);
- }
- _ecs.allOf = allOf;
- function anyOf(...args) {
- return new (_crd && ECSMatcher === void 0 ? (_reportPossibleCrUseOfECSMatcher({
- error: Error()
- }), ECSMatcher) : ECSMatcher)().anyOf(...args);
- }
- _ecs.anyOf = anyOf;
- function onlyOf(...args) {
- return new (_crd && ECSMatcher === void 0 ? (_reportPossibleCrUseOfECSMatcher({
- error: Error()
- }), ECSMatcher) : ECSMatcher)().onlyOf(...args);
- }
- _ecs.onlyOf = onlyOf;
- function excludeOf(...args) {
- return new (_crd && ECSMatcher === void 0 ? (_reportPossibleCrUseOfECSMatcher({
- error: Error()
- }), ECSMatcher) : ECSMatcher)().excludeOf(...args);
- }
- _ecs.excludeOf = excludeOf;
- function getSingleton(ctor) {
- if (!(_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).tid2comp.has(ctor.tid)) {
- let comp = createEntityWithComp(ctor);
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).tid2comp.set(ctor.tid, comp);
- }
- return (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).tid2comp.get(ctor.tid);
- }
- _ecs.getSingleton = getSingleton;
- function addSingleton(obj) {
- let tid = obj.constructor.tid;
- if (!(_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).tid2comp.has(tid)) {
- (_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
- error: Error()
- }), ECSModel) : ECSModel).tid2comp.set(tid, obj);
- }
- }
- _ecs.addSingleton = addSingleton;
- })(ecs || _export("ecs", ecs = {}));
- _cclegacy._RF.pop();
- _crd = false;
- }
- };
- });
- //# sourceMappingURL=c5e5c7bde9de8428d7299c082b15f0b6b145d037.js.map
|